#!/bin/bash

#apt install grep original-awk mawk gawk sed 7zip minicom qrencode soffice

#ip -h -c -p link show up
#ip -h -p link show dev $dev

clear
sudo rm ./.tmp/"$sn".log
sudo rm -r ./.tmp/
mkdir ./.tmp/
ts=$(date +%Y-%m-%d-%T)
7z x hwp.7z -o./.tmp/
clear
echo "================================================================================"
echo " PRESS S TO SETUP, '"Save setup as dfl"' WHEN FINISHED "
echo "================================================================================"
read -r -t 5 -n 1 -s key
  if [ "$key" = "S" ] || [ "$key" = "s" ]; then
    minicom -s
  fi
timeout --foreground 10 minicom -S ./.tmp/hw/mcs #-C ./.tmp/mcc
timeout --foreground 30 minicom -C ./.tmp/mcc
sn=$(grep -i -f ./.tmp/hw/sn ./.tmp/mcc | awk -F':' '{print $2}' | sed 's/^[ \t]*//')
mn=$(grep -i -f ./.tmp/hw/mn ./.tmp/mcc | awk -F':' '{print $2}' | sed 's/^[ \t]*//')
mfg=$(grep -i -f ./.tmp/hw/mfg ./.tmp/mcc | awk -F':' '{print $2}' | sed 's/^[ \t]*//')
soc=$(grep -i -f ./.tmp/hw/soc ./.tmp/mcc | awk -F':' '{print $2}' | sed 's/^[ \t]*//')
cpu=$(grep -i -f ./.tmp/hw/cpu ./.tmp/mcc | awk -F':' '{print $2}' | sed 's/^[ \t]*//')
ram=$(grep -i -f ./.tmp/hw/ram ./.tmp/mcc | awk -F':' '{print $2}' | sed 's/^[ \t]*//')
drv=$(grep -i -f ./.tmp/hw/drv ./.tmp/mcc | awk -F':' '{print $1,$2,$3,$4,$5,$6}' | sed 's/^[ \t]*//')
if [ ${mn:+1} ] || [ ${sn:+1} ]; then
    dt=" + D E V I C E  D E T E C T E D + "; else
    dt=" - D E V I C E  N O T  D E T E C T E D - "
fi
sudo rm -r ./.tmp/hw/
echo "================================================================================"
echo " ETHERNET TEST  S/N: $sn  DATE: ${ts}"
echo "================================================================================"
echo "              $dt"
echo "================================================================================"
echo " SERIAL: $sn"
echo "--------------------------------------------------------------------------------"
echo "  MODEL: $mn"
echo "--------------------------------------------------------------------------------"
echo "    MFG: $mfg"
echo "--------------------------------------------------------------------------------"
echo "    SOC: $soc"
echo "--------------------------------------------------------------------------------"
echo "    CPU: $cpu"
echo "--------------------------------------------------------------------------------"
echo "    RAM: $ram"
echo "--------------------------------------------------------------------------------"
echo " DRIVES: $drv"
echo "--------------------------------------------------------------------------------" 
echo " PRESS S TO ENTER S/N, ENTER TO CONTINUE, Q TO RELOAD, OR E TO EXIT"
echo "================================================================================"
read -r -n 1 -s key
  if [ "$key" = "S" ] || [ "$key" = "s" ]; then
    echo "S/N:"
    read -r sn 
  else
    if [ "$key" = "q" ] || [ "$key" = "Q" ]; then
    exec bash "$0" "$@"
  else
    if [ "$key" = "e" ] || [ "$key" = "E" ]; then
    exit
  fi
  fi
  fi    
clear
echo "================================================================================"
echo " ETHERNET TEST  S/N: $sn  DATE: ${ts}"
echo "================================================================================"
ip -h -c -p link show up
echo " ENTER INTERFACE TO TEST WITH:"
echo "--------------------------------------------------------------------------------" 
read -r dev
clear
echo "================================================================================"
echo " ETHERNET TEST  S/N: $sn  DATE: ${ts}"
echo "================================================================================"
echo " SERIAL:"
echo " $sn"
echo "--------------------------------------------------------------------------------" 
echo " MODEL:"
echo " $mn"
echo "--------------------------------------------------------------------------------" 
echo " MANUFACTURE:"
read -r mfg
echo "--------------------------------------------------------------------------------" 
echo " RJ45 PORTS:"
read -r rj45
echo "--------------------------------------------------------------------------------" 
echo " SFP PORTS:"
read -r sfp
echo "--------------------------------------------------------------------------------" 
echo " QSFP PORTS:"
read -r qsfp
echo "--------------------------------------------------------------------------------" 
echo " USB PORTS:"
read -r usb
echo "--------------------------------------------------------------------------------" 
## REPORT START 
echo "================================================================================" | tee -a ./.tmp/"$sn".log
echo " ETHERNET TEST  S/N: $sn  DATE: ${ts}" | tee -a ./.tmp/"$sn".log
echo "================================================================================" | tee -a ./.tmp/"$sn".log
echo " SERIAL: $sn" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo " MODEL: $mn" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo " MANUFACTURE: $mfg" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo " SOC: $soc" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo " CPU: $cpu" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo " RAM: $ram" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo " DRIVES: $drv" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo " RJ45 PORTS: $rj45     USB PORTS: $usb" | tee -a ./.tmp/"$sn".log
echo " SFP PORTS $sfp    QSFP PORTS: $qsfp" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
while true; do
port=0
    while [ $port ]; do
    ((port++))
clear
echo "================================================================================"
echo " ETHERNET TEST  S/N: $sn  DATE: ${ts}"
echo "== PORT $port: =====================================================================" | tee -a ./.tmp/"$sn".log
echo " PRESS ANY KEY TO CHECK PORT, CTRL-C TO EXIT"
echo "--------------------------------------------------------------------------------" 
read -r -n1
ip -h -p link show "$dev" | grep "state" | awk '{print $8,$9}' >> ./.tmp/"$sn".log
awk '/state/ {getline; print}' ./.tmp/"$sn".log
echo " PASS OR FAIL? [P/F]"
echo "--------------------------------------------------------------------------------" 
read -r -n 1 -s key
  if [ "$key" = "P" ] || [ "$key" = "p" ]; then
    echo "           PORT $port **** PASSED ****" | tee -a ./.tmp/"$sn".log
else
  if [ "$key" = "F" ] || [ "$key" = "f" ]; then
    echo "           PORT $port !!!! FAILED !!!!" | tee -a ./.tmp/"$sn".log
fi
fi
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo " PRESS R TO REPORT, CTRL-C TO EXIT, OR ANY OTHER KEY TO CONTINUE TESTING"
echo "--------------------------------------------------------------------------------" 
read -r -n 1 -s key
if [ "$key" = "r" ] || [ "$key" = "R" ]; then
    echo " ENTER NOTES TO INCLUDE:"
    echo " NOTES:" | tee -a ./.tmp/"$sn".log
    read -r note
#    echo  | tee -a ./.tmp/"$sn".log
    echo "$note" >> ./.tmp/"$sn".log
    echo  | tee -a ./.tmp/"$sn".log
    echo " TECH:" | tee -a ./.tmp/"$sn".log
    read -r tech
    echo "$tech" >> ./.tmp/"$sn".log
    echo  | tee -a ./.tmp/"$sn".log
    echo "================================================================================" | tee -a ./.tmp/"$sn".log
## REPORT END
    echo " GENERATING REPORT FILE: $sn.pdf..."
    echo "--------------------------------------------------------------------------------" 
    mkdir ./rp/
    soffice --headless --convert-to pdf --outdir ./rp/ ./.tmp/"$sn".log
    rm ./.tmp/"$sn".log
    qrencode -l H -o ./rp/"$sn".png "$sn"
    open ./rp/"$sn".pdf; open ./rp/"$sn".png
    qrencode -t ANSI -o - "$sn" -s 1 -m 1 -M
    echo "================================================================================"
    read -r -n1
    exit
fi
clear
done
done
