#!/bin/tcsh
#
# Pinebox: Test script to read GPIO/ADC inputs
#
# Set pins as input, read switch state
echo "Set in"
gpio -x mcp23008:100:0x27:0 mode 100 out # power-force-off AC out
gpio -x mcp23008:100:0x27:0 mode 101 in # power button 0=press 1=release
gpio -x mcp23008:100:0x27:0 mode 102 in # case close 0=close 1=open
gpio -x mcp23008:100:0x27:0 mode 103 in # lowbatt 0=lobat 1=ok
gpio -x mcp23008:100:0x27:0 mode 104 in # extpower 0=extpower 1=batt
gpio -x mcp23008:100:0x27:0 mode 105 in # camera dir 0=(Front/Off) or 1=(Rear/Side) use with 106
gpio -x mcp23008:100:0x27:0 mode 106 in # flash enable 0=(NO: Off/Side) or 1=(YES: Front/Rear) use with 105
gpio -x mcp23008:100:0x27:0 mode 107 in # spare (pad 316)
#
echo "Digital Inputs are"
set val=`gpio -x mcp23008:100:0x27:0 read 101`
echo -n "101  Power Button     "
if ( $val == "0" ) then
echo "0 PRESS" 
else 
echo "1 RELEASE" 
endif

set val=`gpio -x mcp23008:100:0x27:0 read 102`
echo -n "102  CaseClosed       "
if ( $val == "0" ) then
echo "0 CLOSED" 
else 
echo "1 OPEN" 
endif

set val=`gpio -x mcp23008:100:0x27:0 read 103`
echo -n "103  LowBatt          "
if ( $val == "0" ) then
echo "0 LOWBATT" 
else 
echo "1 BATTOK" 
endif

set val=`gpio -x mcp23008:100:0x27:0 read 104`
echo -n "104  ExtPower         "
if ( $val == "0" ) then
echo "0 EXTERNAL" 
else 
echo "1 BATTERY" 
endif

set val1=`gpio -x mcp23008:100:0x27:0 read 105`
echo -n "105  Camera Dir       "
if ( $val1 == "0" ) then
echo "0 FRONT/OFF" 
else 
echo "1 REAR/SIDE" 
endif

echo -n "106  Flash Enable     "
set val2=`gpio -x mcp23008:100:0x27:0 read 106`
if ( $val2 == "0" ) then
echo "0 DISABLE (OFF/SIDE)" 
else 
echo "1 ENABLE  (FRONT/REAR)" 
endif

# Combine 105 106 to get absolute direction

echo -n " --> Camera Direction "
if ( ( $val1 == "0" ) && ( $val2 == "0" ) ) then
echo "OFF"
else if ( ( $val1 == "0" ) && ( $val2 == "1" ) ) then
echo "FRONT"
else if ( ( $val1 == "1" ) && ( $val2 == "0" ) ) then
echo "SIDE"
else if ( ( $val1 == "1" ) && ( $val2 == "1" ) ) then
echo "REAR"
endif

set val=`gpio -x mcp23008:100:0x27:0 read 107`
echo -n "107  D7 Spare PAD316  "
if ( $val == "0" ) then
echo "0 LOW" 
else 
echo "1 HIGH" 
endif

#
echo
echo "Analog Inputs are"
set val=`gpio -x pcf8591:110:0x4F:0 aread 110 # ADC 0 = batmon`
echo -n "110  ADC0 Bat Voltage    Raw: $val   Volts: "
#
# Based on 10.8v = ADC 0, and 14.51 counts per volt experimentally
# measured/calculated during testing.
#
# Note: x 100 x100 to get fractions to 2 places out of "expr"!
expr $val \* 10000 \/ 1451 + 1080 
#
# Spares
set val=`gpio -x pcf8591:110:0x4F:0 aread 111` # ADC 1 = spare (pad 318)
echo  "111  ADC1 Spare PAD318   Raw: $val   "
set val=`gpio -x pcf8591:110:0x4F:0 aread 112` # ADC 2 = spare (pad 319)
echo  "112  ADC2 Spare PAD319   Raw: $val   "
set val=`gpio -x pcf8591:110:0x4F:0 aread 113` # ADC 3 = spare (pad 320)
echo  "113  ADC3 Spare PAD320   Raw: $val   "
echo
#
# back to output=0 to make sure flash transistors kept OFF
echo "Disable flash"
gpio -x mcp23008:100:0x27:0 write 105 0
gpio -x mcp23008:100:0x27:0 write 106 0
gpio -x mcp23008:100:0x27:0 mode 105 out
gpio -x mcp23008:100:0x27:0 mode 106 out
