meta-sysmocom-bsp/recipes-bsp/sob-odu/files/odu-gpiotool

114 lines
1.5 KiB
Bash

#!/bin/sh
USB2514=/usr/bin/usb2514
GPIODIR=/sys/devices/platform/sob-odu.0
DEBUG=0
DRYRUN=0
test -x ${USB2514}
if [ $? -ne 0 ];
then
echo "ERROR - ${USB2514} does not exist or is not exeutable"
echo
fi
if [ $DRYRUN -ne 0 ] || [ $DEBUG -ne 0 ]; then
echo "DEBUG=$DEBUG\nDRYRUN=$DRYRUN\n"
fi;
### helper
echodeb() {
if [ $DEBUG -ne 0 ]; then
echo "DEBUG - $*"
fi;
}
gpioecho() {
echodeb "echo ${1} > ${2}"
if [ $DRYRUN -eq 0 ]; then
echo ${1} > ${2}
fi;
}
# $1 gpio $2 direction
init_pin() {
echodeb init_pin $1 $2
gpioecho ${1} "${GPIODIR}/export"
gpioecho ${2} "${GPIODIR}/gpio$_{1}/direction"
}
# $1 gpio $2 value
set_pin() {
echodeb set_pin $1 $2
gpioecho ${2} "${GPIODIR}/gpio_${1}/value"
}
# $1 pin $2 tempvalue $3 endvalue
toggle_pin() {
set_pin ${1} ${2}
sleep 1
set_pin ${1} ${3}
}
###
reset_modem1() {
toggle_pin mdm1_rst 1 0
}
reset_modem2() {
toggle_pin mdm2_rst 1 0
}
reset_gnss() {
toggle_pin gnss_rst 1 0
}
reset_adsb() {
toggle_pin adsb_rst 1 0
}
reset_ais() {
toggle_pin ais_off 1 0
}
reset_usb() {
# usb2514 now has internal code to assert/de-assert !hub_reset
${USB2514} 1
}
reset_all() {
reset_modem1
reset_modem2
reset_gnss
reset_adsb
reset_ais
reset_usb
}
print_help() {
echo $0 v0.2
echo
echo "help - this text"
echo "reset [device] - reset all/one device(s)"
echo
}
case "$1" in
start)
;;
reset)
if [ -n "$2" ]; then
reset_${2}
else
reset_all
fi
;;
restart)
${0} reset
;;
*)
print_help
;;
esac