node-red-nodes/hardware/HummingboardGPIO/gpiohb

75 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
# There is NO error checking in this program - you can mess up pins big time if you want.
# gpio mode pin inputtype
# gpio read pin
# gpio write pin level
# gpio pwm pin level
# gpio close pin
declare -A pins
# Map the GPIO names to actual underlying IO numbers
pins=(["0"]="73" ["1"]="72" ["2"]="71" ["3"]="70" ["4"]="194" ["5"]="195" ["6"]="67" ["7"]="1")
usage() {
echo ""
echo " gpiohb mode {pin} {in|out}"
echo " gpiohb read {pin}"
echo " gpiohb write {pin} {0|1}"
echo " gpiohb wfi {pin} {rising|falling|both|none}"
#echo " gpiohb pwm {pin} {0-1023}"
echo " gpiohb close {pin}"
echo ""
}
while [ "$1" != "" ]; do
case $1 in
-h | --help | -?)
usage
exit
;;
mode)
echo $1 $2 $3
if [ "$3" != "out" ] ; then
$3="in"
fi
pin=${pins[$2]}
echo $pin > /sys/class/gpio/export
echo $3 > /sys/class/gpio/gpio$pin/direction
exit
;;
read)
pin=${pins[$2]}
cat /sys/class/gpio/gpio$pin/value
exit
;;
write)
pin=${pins[$2]}
echo $3 > /sys/class/gpio/gpio$pin/value
exit
;;
wfi)
pin=${pins[$2]}
echo $3 > /sys/class/gpio/gpio$pin/edge
exit
;;
pwm)
# Not implemented yet....
pin=${pins[$2]}
exit
;;
close)
pin=${pins[$2]}
echo $pin > /sys/class/gpio/unexport
exit
;;
*)
echo "ERROR: unknown parameter \"$PARAM\""
usage
exit 1
;;
esac
shift
done