#!/bin/bash
#./xilinx-reg-read-reader $DEV

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"

if [ -z "$1" ]
then
    echo "No device specified. use xilinx0 as deault."
    DEV="xilinx0"
else
    DEV="$1"
fi

if [ -z "$2" ]
then
    echo "No show specified. use sh $DIR/table -15 -red,-green,-blue as deault."
    SHOW="sh $DIR/table -15 -red,-green,-blue"
else
    SHOW="$2"
fi

echo -e "---------------- Version Info ------------------
Ver Compile Date                                       \t 0x110002 \t $(printf "%x" $($DIR/reg-read $DEV 0x110002))
Ver Compile Version                                    \t 0x110001 \t $(printf '%x' $($DIR/reg-read $DEV 0x110001))
---------------- Fiber State Info ------------------
Fiber State                                            \t 0x110003 \t $(printf '%x' $($DIR/reg-read $DEV 0x110003))
16 DMA Ready | 4 RAW Ready                             \t 0x110004 \t $(printf '%x' $($DIR/reg-read $DEV 0x110004))
---------------- Level1/Level2 Info ------------------
Level1 Original data switch                            \t 0x328    \t $(printf '%x' $($DIR/reg-read $DEV 0x328))
Level1 Original data dma15 switch                      \t 0x329    \t $(printf '%x' $($DIR/reg-read $DEV 0x329))
Level1 Decode switch                                   \t 0x32a    \t $(printf '%x' $($DIR/reg-read $DEV 0x32a))
Level2 Decode switch                                   \t 0x110384 \t $(printf '%x' $($DIR/reg-read $DEV 0x110384))
Level2 Original data switch                            \t 0x110385 \t $(printf '%x' $($DIR/reg-read $DEV 0x110385))
Level2 IP1/IP2 enable switch                           \t 0x110387 \t $(printf '%x' $($DIR/reg-read $DEV 0x110387))
Level2 Arbi seq no first                               \t 0x1103F2 \t $(printf '%x' $($DIR/reg-read $DEV 0x1103F2))
Level2 Arbi seq no max                                 \t 0x1103F3 \t $(printf '%x' $($DIR/reg-read $DEV 0x1103F3))
Level2 Best seq no first                               \t 0x1103F4 \t $(printf '%x' $($DIR/reg-read $DEV 0x1103F4))
Level2 Best seq no max                                 \t 0x1103F5 \t $(printf '%x' $($DIR/reg-read $DEV 0x1103F5))
Level2 Subscribe All enable                            \t 0x1107FD \t $(printf '%x' $($DIR/reg-read $DEV 0x1107FD))
Level2 Subscribe CP  enable                            \t 0x1107FE \t $(printf '%x' $($DIR/reg-read $DEV 0x1107FE))
Level2 Subscribe SP/SPC enable                         \t 0x1107FF \t $(printf '%x' $($DIR/reg-read $DEV 0x1107FF))
Level2 Subscribe name1                                 \t 0x110800 \t $(printf '%x' $($DIR/reg-read $DEV 0x110800))
Level2 Subscribe date1                                 \t 0x110801 \t $(printf '%x' $($DIR/reg-read $DEV 0x110801))
Level2 Subscribe name2                                 \t 0x110802 \t $(printf '%x' $($DIR/reg-read $DEV 0x110802))
Level2 Subscribe date2                                 \t 0x110803 \t $(printf '%x' $($DIR/reg-read $DEV 0x110803))
Top State_next|State_current                           \t 0x1103E9 \t $(printf '%x' $($DIR/reg-read $DEV 0x1103E9))
DMA_Store FIFO Full|Empty (/16bit)                     \t 0x1103EA \t $(printf '%x' $($DIR/reg-read $DEV 0x1103EA))
Top L1 FIFO Full|pF|Empty|pE (/2bit)                   \t 0x1103EB \t $(printf '%x' $($DIR/reg-read $DEV 0x1103EB))
Top L2 FIFO Full|pF|Empty|pE (/2bit)                   \t 0x1103EC \t $(printf '%x' $($DIR/reg-read $DEV 0x1103EC))
---------------- Package Counter ------------------
DMA0  Output SOP                                       \t 0x1104D1 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104D1))
DMA0  Output EOP                                       \t 0x1104D2 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104D2))
DMA1  Output SOP                                       \t 0x1104D3 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104D3))
DMA1  Output EOP                                       \t 0x1104D4 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104D4))
DMA2  Output SOP                                       \t 0x1104D5 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104D5))
DMA2  Output EOP                                       \t 0x1104D6 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104D6))
DMA3  Output SOP                                       \t 0x1104D7 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104D7))
DMA3  Output EOP                                       \t 0x1104D8 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104D8))
DMA4  Output SOP                                       \t 0x1104D9 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104D9))
DMA4  Output EOP                                       \t 0x1104DA \t $(printf '%x' $($DIR/reg-read $DEV 0x1104DA))
DMA5  Output SOP                                       \t 0x1104DB \t $(printf '%x' $($DIR/reg-read $DEV 0x1104DB))
DMA5  Output EOP                                       \t 0x1104DC \t $(printf '%x' $($DIR/reg-read $DEV 0x1104DC))
DMA6  Output SOP                                       \t 0x1104DD \t $(printf '%x' $($DIR/reg-read $DEV 0x1104DD))
DMA6  Output EOP                                       \t 0x1104DE \t $(printf '%x' $($DIR/reg-read $DEV 0x1104DE))
DMA7  Output SOP                                       \t 0x1104DF \t $(printf '%x' $($DIR/reg-read $DEV 0x1104DF))
DMA7  Output EOP                                       \t 0x1104E0 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104E0))
DMA8  Output SOP                                       \t 0x1104E1 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104E1))
DMA8  Output EOP                                       \t 0x1104E2 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104E2))
DMA9  Output SOP                                       \t 0x1104E3 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104E3))
DMA9  Output EOP                                       \t 0x1104E4 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104E4))
DMA10 Output SOP                                       \t 0x1104E5 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104E5))
DMA10 Output EOP                                       \t 0x1104E6 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104E6))
DMA11 Output SOP                                       \t 0x1104E7 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104E7))
DMA11 Output EOP                                       \t 0x1104E8 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104E8))
DMA12 Output SOP                                       \t 0x1104E9 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104E9))
DMA12 Output EOP                                       \t 0x1104EA \t $(printf '%x' $($DIR/reg-read $DEV 0x1104EA))
DMA13 Output SOP                                       \t 0x1104EB \t $(printf '%x' $($DIR/reg-read $DEV 0x1104EB))
DMA13 Output EOP                                       \t 0x1104EC \t $(printf '%x' $($DIR/reg-read $DEV 0x1104EC))
DMA14 Output SOP                                       \t 0x1104ED \t $(printf '%x' $($DIR/reg-read $DEV 0x1104ED))
DMA14 Output EOP                                       \t 0x1104EE \t $(printf '%x' $($DIR/reg-read $DEV 0x1104EE))
DMA15 Output SOP                                       \t 0x1104EF \t $(printf '%x' $($DIR/reg-read $DEV 0x1104EF))
DMA15 Output EOP                                       \t 0x1104F0 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104F0))
L1 Store FIFO1|0 (/16bit) back pressure                \t 0x1103ED \t $(printf '%x' $($DIR/reg-read $DEV 0x1103ED))
L2 Store FIFO1|0 (/16bit) back pressure                \t 0x1103EE \t $(printf '%x' $($DIR/reg-read $DEV 0x1103EE))
Arbitration L1 Raw Data Output SOP                     \t 0x1104BD \t $(printf '%x' $($DIR/reg-read $DEV 0x1104BD))
Arbitration L1 Raw Data Output EOP                     \t 0x1104BE \t $(printf '%x' $($DIR/reg-read $DEV 0x1104BE))
Arbitration L1 Decode Data Output SOP                  \t 0x1104BF \t $(printf '%x' $($DIR/reg-read $DEV 0x1104BF))
Arbitration L1 Decode Data Output EOP                  \t 0x1104C0 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104C0))
Arbitration L2 Raw Data Output SOP                     \t 0x1104CD \t $(printf '%x' $($DIR/reg-read $DEV 0x1104CD))
Arbitration L2 Raw Data Output EOP                     \t 0x1104CE \t $(printf '%x' $($DIR/reg-read $DEV 0x1104CE))
Arbitration L2 Decode Data Output SOP                  \t 0x1104CF \t $(printf '%x' $($DIR/reg-read $DEV 0x1104CF))
Arbitration L2 Decode Data Output EOP                  \t 0x1104D0 \t $(printf '%x' $($DIR/reg-read $DEV 0x1104D0))
4group1 raw1_in_sop                                    \t 0x348    \t $(printf '%x' $($DIR/reg-read $DEV 0x348))
4group1 raw2_in_sop                                    \t 0x349    \t $(printf '%x' $($DIR/reg-read $DEV 0x349))
4group1 raw3_in_sop                                    \t 0x34a    \t $(printf '%x' $($DIR/reg-read $DEV 0x34a))
4group1 raw4_in_sop                                    \t 0x34b    \t $(printf '%x' $($DIR/reg-read $DEV 0x34b))
4group1 raw1_in_eop                                    \t 0x34c    \t $(printf '%x' $($DIR/reg-read $DEV 0x34c))
4group1 raw2_in_eop                                    \t 0x34d    \t $(printf '%x' $($DIR/reg-read $DEV 0x34d))
4group1 raw3_in_eop                                    \t 0x34e    \t $(printf '%x' $($DIR/reg-read $DEV 0x34e))
4group1 raw4_in_eop                                    \t 0x34f    \t $(printf '%x' $($DIR/reg-read $DEV 0x34f))
4group1 fifo1_in_sop                                   \t 0x350    \t $(printf '%x' $($DIR/reg-read $DEV 0x350))
4group1 fifo2_in_sop                                   \t 0x351    \t $(printf '%x' $($DIR/reg-read $DEV 0x351))
4group1 fifo3_in_sop                                   \t 0x352    \t $(printf '%x' $($DIR/reg-read $DEV 0x352))
4group1 fifo4_in_sop                                   \t 0x353    \t $(printf '%x' $($DIR/reg-read $DEV 0x353))
4group1 fifo1_in_eop                                   \t 0x354    \t $(printf '%x' $($DIR/reg-read $DEV 0x354))
4group1 fifo2_in_eop                                   \t 0x355    \t $(printf '%x' $($DIR/reg-read $DEV 0x355))
4group1 fifo3_in_eop                                   \t 0x356    \t $(printf '%x' $($DIR/reg-read $DEV 0x356))
4group1 fifo4_in_eop                                   \t 0x357    \t $(printf '%x' $($DIR/reg-read $DEV 0x357))
4group1 group_out_sop                                  \t 0x358    \t $(printf '%x' $($DIR/reg-read $DEV 0x358))
4group1 group_out_eop                                  \t 0x359    \t $(printf '%x' $($DIR/reg-read $DEV 0x359))
Level1 debug_info_extract                              \t 0x32C    \t $(printf '%x' $($DIR/reg-read $DEV 0x32C))
Level1 cnt_sof_frag                                    \t 0x335    \t $(printf '%x' $($DIR/reg-read $DEV 0x335))
Level1 cnt_eof_frag                                    \t 0x336    \t $(printf '%x' $($DIR/reg-read $DEV 0x336))
Level1 cnt_sof_fast                                    \t 0x337    \t $(printf '%x' $($DIR/reg-read $DEV 0x337))
Level1 cnt_eof_fast                                    \t 0x338    \t $(printf '%x' $($DIR/reg-read $DEV 0x338))
Level1 cnt_sof_net_rx                                  \t 0x339    \t $(printf '%x' $($DIR/reg-read $DEV 0x339))
Level1 cnt_eof_net_rx                                  \t 0x33A    \t $(printf '%x' $($DIR/reg-read $DEV 0x33A))
Level1 cnt_sof_net_tx                                  \t 0x33B    \t $(printf '%x' $($DIR/reg-read $DEV 0x33B))
Level1 cnt_eof_net_tx                                  \t 0x33C    \t $(printf '%x' $($DIR/reg-read $DEV 0x33C))
Level1 cnt_sof_dma                                     \t 0x33D    \t $(printf '%x' $($DIR/reg-read $DEV 0x33D))
Level1 cnt_eof_dma                                     \t 0x33E    \t $(printf '%x' $($DIR/reg-read $DEV 0x33E))
Level1 check_reset_over                                \t 0x33F    \t $(printf '%x' $($DIR/reg-read $DEV 0x33F))
Level2 RAW Input                                       \t 0x11044D \t $(printf '%x' $($DIR/reg-read $DEV 0x11044D))
Level2 RAW Input Error                                 \t 0x110465 \t $(printf '%x' $($DIR/reg-read $DEV 0x110465))
Level2 cnt_parser_sof                                  \t 0x110453 \t $(printf '%x' $($DIR/reg-read $DEV 0x110453))
Level2 cnt_parser_eof                                  \t 0x110454 \t $(printf '%x' $($DIR/reg-read $DEV 0x110454))
Level2 cnt_mux_ip1_vld(arbi+best)                      \t 0x110455 \t $(printf '%x' $($DIR/reg-read $DEV 0x110455))
Level2 cnt_mux_ip2_vld(arbi+best)                      \t 0x110456 \t $(printf '%x' $($DIR/reg-read $DEV 0x110456))
Level2 cnt_arbi_ip1_vld                                \t 0x110457 \t $(printf '%x' $($DIR/reg-read $DEV 0x110457))
Level2 cnt_arbi_ip2_vld                                \t 0x110458 \t $(printf '%x' $($DIR/reg-read $DEV 0x110458))
Level2 cnt_best_ip1_vld                                \t 0x110459 \t $(printf '%x' $($DIR/reg-read $DEV 0x110459))
Level2 cnt_best_ip2_vld                                \t 0x11045A \t $(printf '%x' $($DIR/reg-read $DEV 0x11045A))
Level2 DMA Output SOF                                  \t 0x11044F \t $(printf '%x' $($DIR/reg-read $DEV 0x11044F))
Level2 DMA Output EOF                                  \t 0x110450 \t $(printf '%x' $($DIR/reg-read $DEV 0x110450))
Level2 RAW Output SOF                                  \t 0x110451 \t $(printf '%x' $($DIR/reg-read $DEV 0x110451))
Level2 RAW Output EOF                                  \t 0x110452 \t $(printf '%x' $($DIR/reg-read $DEV 0x110452))" | ${SHOW}