#!/bin/bash

while [[ $# -gt 0 ]]
do
key="$1"

case $key in
    -v|--extension)
    shift # past argument
    shift # past value
    ;;
    -c|--searchpath)
    if [ $2 == "version" ]
    then 
    echo "Version:        1.1
Linux:          5.4.0 (Compatible)
BSP:            v2020.1 (Compatible)"
    fi
    if [ $2 == "listvoltage" ]
    then
        echo "VCCINT
VCCINT_SOC
VCCINT_PSLP
VCCINT_PSFP
VCCAUX
VCC_RAM
VCC_PMC
VCCO_MIO
VCC3V3
VCC1V8
VCCAUX_PMC
MGTYAVTT
VADJ_FMC
MGTYAVCC
UTIL_1V13
UTIL_2V5
VCC1V2_DDR4
VCC1V1_LP4"
    fi
    if [ $2 == "listgpio" ]
    then 
        echo "500 - SYSCTLR_PB
500 - DC_SYS_CTRL3
500 - DC_SYS_CTRL2
500 - DC_SYS_CTRL1
500 - DC_SYS_CTRL0
501 - SYSCTLR_SD1_CLK
501 - SYSCTLR_SD1_CMD
501 - SYSCTLR_SD1_DATA3
501 - SYSCTLR_SD1_DATA2
501 - SYSCTLR_SD1_DATA1
501 - SYSCTLR_SD1_DATA0
501 - SYSCTLR_SD1_CD_B
501 - SYSCTLR_ETH_RESET_B_R
501 - SYSCTLR_UART0_TXD_OUT
501 - SYSCTLR_UART0_RXD_IN
501 - LP_I2C1_SDA
501 - LP_I2C1_SCL
501 - LP_I2C0_PMC_SDA
501 - LP_I2C0_PMC_SCL
502 - SYSCTLR_ETH_MDIO
502 - SYSCTLR_ETH_MDC"
    fi

    if [ $2 == "listQSFP" ]
    then
        echo "zQSFP1"
    fi
    if [ $2 == "listSFP" ]
    then
        echo "zSFP-0
zSFP-1"
    fi
    if [ $2 == "listpower" ]
    then
        echo "VCCINT
VCC_SOC
VCC_PMC
VCCINT_RAM
VCCINT_PSLP
VCCINT_PSFP
VCCAUX
VCCAUX_PMC
VCC_MIO
VCC1V8
VCC3V3
VCC1V2_DDR4
VCC1V1_LP4
VADJ_FMC
MGTYAVCC
MGTYAVTT
MGTYVCCAUX"
    fi
    if [ $2 == "listpowerdomain" ]
    then
echo "FPD
LPD
PLD
PMC
GTY
FMC
system
chip"
     fi
        if [ $2 == "eeprom" ]
    then
echo "Language: 0
Manufacturing Date: Tue Jun  2 01:33:00 1981
Manufacturer: XILINX
Product Name: VC-E-A2197
Board Serial Number: 1281041a005
Board Part Number: �043123
Board Reversion: 
MAC Address 0: ff:ff:ff:ff:ff:ff
MAC Address 1: ff:ff:ff:ff:ff:ff
"
    fi
        if [ $2 == "temperature" ]
        then
        echo "Temperature(C): 36.0"
    fi
        if [ $2 == "getioexp" ]
    then
        if [ $4 == "all" ]
        then
        echo "Input GPIO: 0x13bf
Output GPIO:    0x20
Direction:  0xffdf"
        fi
        if [ $4 == "input" ]
        then
        echo "Port 0(7) - MAX6643 FULLSPD:    0
Port 0(4) - PMBUS2 INA226 ALERT:    1
Port 0(1) - MAX6643 Fan Fail (AL):  1
Port 0(0) - MAX6643 Fan Over Temp (AL): 1
Port 1(7) - PMBUS1 INA226 Alert (AL):   1
Port 1(6) - PMBUS Alert (AL):   0
Port 1(4) - VCCINT VRHOT B (AL):    1
Port 1(3) - FMCP2 FMCP PRSNT M2C B (AL):    1
Port 1(2) - FMCP1 FMCP PRSNT M2C B (AL):    1
Port 1(1) - FMCP2 FMC PRSNT M2C B (AL): 1
Port 1(0) - FMCP1 FMC PRSNT M2C B (AL): 1"
        fi
        if [ $4 == "output" ]
        then
        echo "Port 1(5) - 8A34001_EXP_RST_B (AL): 1"
        fi
    fi
        if [ $2 == "getgpio" ]
    then
        echo "500 - SYSCTLR_PB (line 12): 0"
    fi
        if [ $2 == "getvoltage" ]
    then
        echo "Voltage(V):     0.78"
    fi
        if [ $2 == "powerdomain" ]
    then
        echo "Power(W):       0.0090"
    fi
        if [ $2 == "ddr" ]
    then
	if [ $4 == "spd" ]
        then
        echo "DDR4 SDRAM?     Yes
Size(Gb):       8
Temp. Sensor?   Yes"
        fi
	if [ $4 == "temp" ]
        then
        echo "Temperature(C): 32.44"
        fi
    fi
        if [ $2 == "getpower" ]
    then
        echo "Voltage(mV):     783
Current(mA):     312
Power(mW):       237"
    fi

        if [ $2 == "listclock" ]
    then
        echo "zSFP Si570
User1 FMC1 Si570
Versal Sys Clk Si570
Dimm1 Si570
LPDDR4 CLK1 Si570
LPDDR4 CLK2 Si570
HSPD Si570"
    fi
        if [ $2 == "getQSFP" ]
        then
            echo "Manufacturer:   Amphenol        
Part Number:    647080013       
Serial Number:  APF16120132A5E  
Internal Temperature(C):    0.000
Supply Voltage(V):  0.00
Alarms (Bytes 3-4): 0
Alarms (Bytes 6-7): 0
Alarms (Bytes 9-12):    0"
        fi
        if [ $2 == "getpwmQSFP" ]
        then
            echo "Register 98, bit7 +2.5w, bit6 +1.5w, bits5-0 up to 1.0w:    3"
        fi

        if [ $2 == "getpwmoQSFP" ]
        then
            echo "Register 93, 0 = use LPMode pin, 1 = hi pwr, 3 = low pwr:   1"
        fi

        if [ $2 == "getEBM" ]
        then
        if [ $4 == "all" ]
        then
            echo " a  b  c  d ff ff ff ff ff ff ff ff ff ff ff 58 49 4c 49 4e 58 ff ff ff ff 
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
ff 4c 4d 4e 4f ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff "
        fi
        if [ $4 == "common" ]
        then
            echo "0x00 - Version: a
0x01 - Internal User Area:  b
0x02 - Chassis Info Area:   c
0x03 - Board Area:  d
0x04 - Product Info Area:   ff
0x05 - Multi Record Area:   ff
0x06 - Pad, Check Sum:  ff ff"
        fi
        if [ $4 == "board" ]
        then
            echo "0x08 - Version: ff
0x09 - Length:  ff
0x0A - Language Code:   ff
0x0B - Manufacturing Date:  Wed Nov 24 20:15:00 2027
0x0F - Manufacturer:    XILINX
0x16 - Product Name:    ����������������
0x27 - Serial Number:   ����������������
0x38 - Part Number: ���������
0x42 - FRU ID:  �
0x44 - Revision:    ��������
0x4C - EoF, Pad, Check Sum: 4c 4d4e 4f"
        fi
        if [ $4 == "multirecord" ]
        then
            echo "0x50 - Record Type: ff
0x51 - Record Format:   ff
0x52 - Length:  ff
0x53 - Record Check Sum:    ff
0x54 - Header Check Sum:    ff
0x55 - Xilinx IANA ID:  ffffff
0x58 - Field Name Identifier:   ��������"
        fi
        fi

        if [ $2 == "listbootmode" ]
    then
        echo "jtag	0x0
qspi24	0x1
qspi32	0x2
sd0_ls	0x3
sd1	0x5
emmc	0x6
usb	0x7
ospi	0x8
smap	0xa
dft	0xd
sd1_ls	0xe
"
    fi
        if [ $2 == "BIT" ]
    then
        echo "Check Clocks: PASS"
    fi
        if [ $2 == "listBIT" ]
    then
        echo "Check Clocks
Check Voltage"
    fi
        if [ $2 == "getpwmSFP" ]
    then
        echo "Power Mode(0-2W):   101"
    fi
        if [ $2 == "getSFP" ]
    then
        echo "Manufacturer:   MULTILANE-SAL   
Serial Number:  415             
Internal Temperature(C):    27.000
Supply Voltage(V):  3.30
Alarm:  0"
    fi
        if [ $2 == "getclock" ]
    then
        echo "Frequency(Hz):  156249999"
    fi


    shift # past argument
    shift # past value
    ;;
    -t|--lib)
    shift # past argument
    shift # past value
    ;;
    --default)
    DEFAULT=YES
    shift # past argument
    ;;
    *)    # unknown option
    POSITIONAL+=("$1") # save it in an array for later
    shift # past argument
    ;;
esac
done
