#!/bin/sh
export PATH=/bin:/sbin:/usr/sbin:/usr/bin
monit stop lcmd
service lcmd status
ret=$?
for try in {1..10}
do
    if [ "${ret}" != "3" ]; then
        sleep 1
        service lcmd status
        ret=$?
        continue
    else
        break
    fi
done
M=5
N=6
ltc_prog_fail=0
ltc_mezz_prog_fail=0
data=`fpga-app chassisd i2c 0 r 1 0xd 0x42 0x33 2`
data1=`echo $data | awk -v M=$M '{print $M}'`
data2=`echo $data | awk -v N=$N '{print $N}'`
data1=`echo "${data1//x}"`
data=$data2$data1
if [ "${data}" != "0x8000" ];then
    echo "Programming LTC parts on Main board"
    fpga-app pfe reg w 0xf4 0x0
    fpga-app chassisd i2c 0 w 1 0xd 0x41 0xf5 1 0x71
    fpga-app chassisd i2c 0 w 0 0xd 0x41 0x15 1 0x0
    sleep 3
    fpga-app chassisd i2c 0 w 1 0xd 0x44 0xf5 1 0x71
    fpga-app chassisd i2c 0 w 0 0xd 0x44 0x15 1 0x0
    sleep 3
    fpga-app chassisd i2c 0 w 1 0xd 0x47 0xf5 1 0x71
    fpga-app chassisd i2c 0 w 0 0xd 0x47 0x15 1 0x0
    sleep 3
    fpga-app chassisd i2c 0 w 1 0xe 0x46 0xf5 1 0x71
    fpga-app chassisd i2c 0 w 0 0xe 0x46 0x15 1 0x0
    sleep 3
    fpga-app chassisd i2c 0 w 2 0xd 0x42 0x33 2 0x00 0x80
    fpga-app chassisd i2c 0 w 0 0xd 0x42 0x15 1 0x0
    sleep 3
    fpga-app chassisd i2c 0 w 2 0xd 0x45 0x33 2 0x00 0x80
    fpga-app chassisd i2c 0 w 0 0xd 0x45 0x15 1 0x0
    sleep 3
    fpga-app chassisd i2c 0 w 2 0xd 0x48 0x33 2 0x00 0x80
    fpga-app chassisd i2c 0 w 0 0xd 0x48 0x15 1 0x0
    sleep 3
else
    echo "LTC parts on Main board already programmed"
fi

echo "Check if the LTC parts got programmed successfully"
data=`fpga-app chassisd i2c 0 r 1 0xd 0x41 0xf5 1`
data=`echo $data | awk -v M=$M '{print $M}'`
if [ "${data}" != "0x71" ];then
    logger "fpga-app write did not go through for LTC segment 0xd i2c addr 0x41 offset 0xf5"
    ltc_prog_fail=1
fi

data=`fpga-app chassisd i2c 0 r 1 0xd 0x44 0xf5 1`
data=`echo $data | awk -v M=$M '{print $M}'`
if [ "${data}" != "0x71" ];then
    logger "fpga-app write did not go through for LTC segment 0xd i2c addr 0x44 offset 0xf5"
    ltc_prog_fail=1
fi

data=`fpga-app chassisd i2c 0 r 1 0xd 0x47 0xf5 1`
data=`echo $data | awk -v M=$M '{print $M}'`
if [ "${data}" != "0x71" ];then
    logger "fpga-app write did not go through for LTC segment 0xd i2c addr 0x47 offset 0xf5"
    ltc_prog_fail=1
fi

data=`fpga-app chassisd i2c 0 r 1 0xe 0x46 0xf5 1`
data=`echo $data | awk -v M=$M '{print $M}'`
if [ "${data}" != "0x71" ];then
    logger "fpga-app write did not go through for LTC segment 0xe i2c addr 0x46 offset 0xf5"
    ltc_prog_fail=1
fi

data=`fpga-app chassisd i2c 0 r 1 0xd 0x42 0x33 2`
data=`echo $data | awk -v N=$N '{print $N}'`
if [ "${data}" != "0x80" ];then
    logger "fpga-app write did not go through for LTC segment 0xd i2c addr 0x42 offset 0x33"
    ltc_prog_fail=1
fi

data=`fpga-app chassisd i2c 0 r 1 0xd 0x45 0x33 2`
data=`echo $data | awk -v N=$N '{print $N}'`
if [ "${data}" != "0x80" ];then
    logger "fpga-app write did not go through for LTC segment 0xd i2c addr 0x45 offset 0x33"
    ltc_prog_fail=1
fi

data=`fpga-app chassisd i2c 0 r 1 0xd 0x48 0x33 2`
data=`echo $data | awk -v N=$N '{print $N}'`
if [ "${data}" != "0x80" ];then
    logger "fpga-app write did not go through for LTC segment 0xd i2c addr 0x48 offset 0x33"
    ltc_prog_fail=1
fi

if [ "$ltc_prog_fail" == "1" ];then
    echo "LTC programming on main board failed"
else
    echo "LTC programming on main board passed"
fi

if [ "$1" == "MEZZ" ];then
    data=`fpga-app chassisd i2c 0 r 1 0xf 0x42 0x33 2`
    data1=`echo $data | awk -v M=$M '{print $M}'`
    data2=`echo $data | awk -v N=$N '{print $N}'`
    data1=`echo "${data1//x}"`
    data=$data2$data1
    if [ "${data}" != "0x8000" ];then
        echo "Programming LTC parts on Mezz board"
        fpga-app pfe reg w 0x224 0x0
        fpga-app chassisd i2c 0 w 1 0xf 0x41 0xf5 1 0x71
        fpga-app chassisd i2c 0 w 0 0xf 0x41 0x15 1 0x0
        sleep 3
        fpga-app chassisd i2c 0 w 1 0xf 0x44 0xf5 1 0x71
        fpga-app chassisd i2c 0 w 0 0xf 0x44 0x15 1 0x0
        sleep 3
        fpga-app chassisd i2c 0 w 1 0xf 0x47 0xf5 1 0x71
        fpga-app chassisd i2c 0 w 0 0xf 0x47 0x15 1 0x0
        sleep 3
        fpga-app chassisd i2c 0 w 1 0x10 0x46 0xf5 1 0x71
        fpga-app chassisd i2c 0 w 0 0x10 0x46 0x15 1 0x0
        sleep 3
        fpga-app chassisd i2c 0 w 2 0xf 0x42 0x33 2 0x00 0x80
        fpga-app chassisd i2c 0 w 0 0xf 0x42 0x15 1 0x0
        sleep 3
        fpga-app chassisd i2c 0 w 2 0xf 0x45 0x33 2 0x00 0x80
        fpga-app chassisd i2c 0 w 0 0xf 0x45 0x15 1 0x0
        sleep 3
        fpga-app chassisd i2c 0 w 2 0xf 0x48 0x33 2 0x00 0x80
        fpga-app chassisd i2c 0 w 0 0xf 0x48 0x15 1 0x0
        sleep 3
    else
        echo "LTC parts on Mezz board already programmed"
    fi

    echo "Check if the LTC parts got programmed successfully on Mezz"
    data=`fpga-app chassisd i2c 0 r 1 0xf 0x41 0xf5 1`
    data=`echo $data | awk -v M=$M '{print $M}'`
    if [ "${data}" != "0x71" ];then
        logger "fpga-app write did not go through for LTC segment 0xf i2c addr 0x41 offset 0xf5"
        ltc_mezz_prog_fail=1
    fi

    data=`fpga-app chassisd i2c 0 r 1 0xf 0x44 0xf5 1`
    data=`echo $data | awk -v M=$M '{print $M}'`
    if [ "${data}" != "0x71" ];then
        logger "fpga-app write did not go through for LTC segment 0xf i2c addr 0x44 offset 0xf5"
        ltc_mezz_prog_fail=1
    fi

    data=`fpga-app chassisd i2c 0 r 1 0xf 0x47 0xf5 1`
    data=`echo $data | awk -v M=$M '{print $M}'`
    if [ "${data}" != "0x71" ];then
        logger "fpga-app write did not go through for LTC segment 0xf i2c addr 0x47 offset 0xf5"
        ltc_mezz_prog_fail=1
    fi

    data=`fpga-app chassisd i2c 0 r 1 0x10 0x46 0xf5 1`
    data=`echo $data | awk -v M=$M '{print $M}'`
    if [ "${data}" != "0x71" ];then
        logger "fpga-app write did not go through for LTC segment 0x10 i2c addr 0x46 offset 0xf5"
        ltc_mezz_prog_fail=1
    fi

    data=`fpga-app chassisd i2c 0 r 1 0xf 0x42 0x33 2`
    data=`echo $data | awk -v N=$N '{print $N}'`
    if [ "${data}" != "0x80" ];then
        logger "fpga-app write did not go through for LTC segment 0xf i2c addr 0x42 offset 0x33"
        ltc_mezz_prog_fail=1
    fi

    data=`fpga-app chassisd i2c 0 r 1 0xf 0x45 0x33 2`
    data=`echo $data | awk -v N=$N '{print $N}'`
    if [ "${data}" != "0x80" ];then
        logger "fpga-app write did not go through for LTC segment 0xf i2c addr 0x45 offset 0x33"
        ltc_mezz_prog_fail=1
    fi

    data=`fpga-app chassisd i2c 0 r 1 0xf 0x48 0x33 2`
    data=`echo $data | awk -v N=$N '{print $N}'`
    if [ "${data}" != "0x80" ];then
        logger "fpga-app write did not go through for LTC segment 0xf i2c addr 0x48 offset 0x33"
        ltc_mezz_prog_fail=1
    fi

    if [ "$ltc_mezz_prog_fail" == "1" ];then
        echo "LTC programming on MEZZ board failed"
    else
        echo "LTC programming on MEZZ board passed"
    fi
fi

monit start lcmd
