Browse Source

Improved status.sh, added --help and --verbose flag

Uros Stevanovic 9 years ago
parent
commit
8159b38448
1 changed files with 91 additions and 45 deletions
  1. 91 45
      status.sh

+ 91 - 45
status.sh

@@ -1,53 +1,99 @@
 #!/bin/bash
-value=`pci -r 0x9110 -s 8 | grep 9110 | awk '{print $2}' | cut -c 1-8`
 
-sensor_tmp=${value:4:4}
-fpga_tmp=${value:0:4}
-fpga_mon=${value:0:1}
+function check_temp_cmosis (){
 
-sleep 0.01
+    #sensor temp from bank reg
+    local value=`pci -r 0x9110 -s 8 | grep 9110 | awk '{print $2}' | cut -c 1-8`
+    local sensor_tmp=${value:4:4}
+    sleep 0.01
 
-value=`pci -r 9030 | awk '{print $2}' | cut -c 6-6`
+    local value=`pci -r 9030 | awk '{print $2}' | cut -c 6-6`
+    # for 48 MHz use 48/40, for 40 MHz use 40/40 for clk_ratio offset can differ per
+    # device
+    if [ "$value" == "0"  ]; then
+        local clk_mhz=40
+        local clk_ratio=$(echo "scale = 2; 40/40" | bc)
+    else
+        local clk_mhz=48
+        local clk_ratio=$(echo "scale = 2; 48/40" | bc)
+    fi
 
-if [ "$value" == "0"  ]; then
-    echo "40 MHz"
-    clk_mhz=40
-    clk_ratio=$(echo "scale = 2; 40/40" | bc)
-else
-    echo "48 MHz"
-    clk_mhz=48
-    clk_ratio=$(echo "scale = 2; 48/40" | bc)
+    local offset_zero_celsius=$(echo "scale = 2; 1000*$clk_ratio " | bc)
+    local tmp_slope_sensor=$(echo "scale = 2; 0.3/$clk_ratio" | bc)
+    # sensor temperature
+    let "sensor_tmp=16#$sensor_tmp"
+    # use 48/40 for 40MHz, or 40/40 for 40 MHz main clock
+    sensor_tmp=$(echo "scale = 2; ($sensor_tmp-$offset_zero_celsius)*$tmp_slope_sensor" | bc)
+
+    # echo "Sensor temperature,according to the datasheet: $sensor_tmp C"
+    echo "Sensor temperature, clock $clk_mhz MHz: $sensor_tmp C"
+
+
+}
+
+function check_fpga_status () {
+
+    #fpga temperature and monitor status from bank reg
+    local value=`pci -r 0x9110 -s 8 | grep 9110 | awk '{print $2}' | cut -c 1-8`
+    local fpga_tmp=${value:0:4}
+    local fpga_mon=${value:0:1}
+
+    # fpga monitor
+    let "fpga_mon=16#$fpga_mon"
+    fpga_mon=$(echo "ibase=10;obase=2;$fpga_mon" | bc)
+    fpga_mon=$(printf "%04d\n" $fpga_mon)
+    fpga_mon=${fpga_mon:0:3}
+
+    # fpga temperature
+    let "fpga_tmp=16#$fpga_tmp"
+    fpga_tmp=$(echo "ibase=10;obase=2;$fpga_tmp" | bc)
+    fpga_tmp=$(printf "%016d\n" $fpga_tmp)
+    let "fpga_adc=2#${fpga_tmp:3:10}"
+    fpga_tmp=$(echo "scale = 2; (($fpga_adc*503.975)/1024.)-273.15   " |bc)
+
+    echo "FPGA temperature: $fpga_tmp C"
+    if [ "$fpga_mon" != "000" ]; then
+        echo "ERROR FPGA MONITOR: $fpga_mon"
+    else
+        echo "MONITOR OK"
+    fi
+}
+input=$@
+for i in "$@"; do
+    case $i in
+        --help)
+            SHOW_USAGE=YES
+            shift
+            ;;
+        --verbose)
+            VERBOSE=YES
+            shift
+            ;;
+        *)
+            WRONG=YES
+            shift
+            ;;
+    esac
+done
+
+if [ -z "$input" ]; then
+    check_temp_cmosis
+    check_fpga_status
+    exit 0
 fi
 
-# for 48 MHz use 48/40, for 40 MHz use 40/40 for clk_ratio offset can differ per
-# device
-
-offset_zero_celsius=$(echo "scale = 2; 1000*$clk_ratio " | bc)
-tmp_slope_sensor=$(echo "scale = 2; 0.3/$clk_ratio" | bc)
-
-# fpga monitor
-let "fpga_mon=16#$fpga_mon"
-fpga_mon=$(echo "ibase=10;obase=2;$fpga_mon" | bc)
-fpga_mon=$(printf "%04d\n" $fpga_mon)
-monitor_val=${fpga_mon:0:3}
-
-# fpga temperature
-let "fpga_tmp=16#$fpga_tmp"
-fpga_tmp=$(echo "ibase=10;obase=2;$fpga_tmp" | bc)
-fpga_tmp=$(printf "%016d\n" $fpga_tmp)
-let "fpga_adc=2#${fpga_tmp:3:10}"
-fpga_tmp=$(echo "scale = 2; (($fpga_adc*503.975)/1024.)-273.15   " |bc)
-
-# sensor temperature
-let "sensor_tmp=16#$sensor_tmp"
-# use 48/40 for 40MHz, or 40/40 for 40 MHz main clock
-sensor_tmp=$(echo "scale = 2; ($sensor_tmp-$offset_zero_celsius)*$tmp_slope_sensor" | bc)
-
-# echo "Sensor temperature,according to the datasheet: $sensor_tmp C"
-echo "Sensor temperature, clock $clk_mhz MHz: $sensor_tmp C"
-echo "FPGA temperature: $fpga_tmp C"
-if [ "$monitor_val" != "000" ]; then
-    echo "ERROR FPGA MONITOR: $monitor_val"
-else
-    echo "MONITOR OK"
+if [ "$SHOW_USAGE" ]; then
+    echo "Usage: status.sh [] [--help] [--verbose]"
+    exit 0
+fi
+
+if [ "$VERBOSE" ]; then
+    check_temp_cmosis
+    check_fpga_status
+    pci -r 9000 -s 120
+    exit 0
+fi
+if [ "$WRONG" ]; then
+    echo -e "\e[31m  !!!WRONG ARGUMENT!!!, check status.sh --help \033[1;m"
+    exit
 fi