ODU: add new odu-gpiotool script
The odu-gpiotool is a small script created by roh to selectively reset individual peripherals of the system by the administrator. It originates from ticket https://projects.sysmocom.de/ortelius/issues/655
This commit is contained in:
parent
45ed0caa79
commit
121196bbd4
|
@ -0,0 +1,113 @@
|
||||||
|
#!/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
|
||||||
|
|
|
@ -4,10 +4,11 @@ LICENSE = "GPLv2+"
|
||||||
LIC_FILES_CHKSUM = "file://${WORKDIR}/usb2514.c;beginline=1;endline=18;md5=3b8421a1c05d21add65cc20fccfa29cd"
|
LIC_FILES_CHKSUM = "file://${WORKDIR}/usb2514.c;beginline=1;endline=18;md5=3b8421a1c05d21add65cc20fccfa29cd"
|
||||||
DEPENDS += "lmsensors-apps"
|
DEPENDS += "lmsensors-apps"
|
||||||
|
|
||||||
PR = "r2"
|
PR = "r3"
|
||||||
|
|
||||||
SRC_URI = "file://usb2514.c \
|
SRC_URI = "file://usb2514.c \
|
||||||
file://gpio_usb2514 \
|
file://gpio_usb2514 \
|
||||||
|
file://odu-gpiotool \
|
||||||
file://i2c-dev.h \
|
file://i2c-dev.h \
|
||||||
file://usb2514.service \
|
file://usb2514.service \
|
||||||
"
|
"
|
||||||
|
@ -23,6 +24,7 @@ do_install() {
|
||||||
install -d ${D}${bindir}/
|
install -d ${D}${bindir}/
|
||||||
install -m 0755 ${WORKDIR}/usb2514 ${D}${bindir}/
|
install -m 0755 ${WORKDIR}/usb2514 ${D}${bindir}/
|
||||||
install -m 0755 ${WORKDIR}/gpio_usb2514 ${D}${bindir}/
|
install -m 0755 ${WORKDIR}/gpio_usb2514 ${D}${bindir}/
|
||||||
|
install -m 0755 ${WORKDIR}/odu-gpiotool ${D}${bindir}/
|
||||||
install -d ${D}${systemd_unitdir}/system/multi-user.target.wants/
|
install -d ${D}${systemd_unitdir}/system/multi-user.target.wants/
|
||||||
install -m 0644 /${WORKDIR}/usb2514.service ${D}${systemd_unitdir}/system/
|
install -m 0644 /${WORKDIR}/usb2514.service ${D}${systemd_unitdir}/system/
|
||||||
ln -sf ../usb2514.service ${D}${systemd_unitdir}/system/multi-user.target.wants/
|
ln -sf ../usb2514.service ${D}${systemd_unitdir}/system/multi-user.target.wants/
|
||||||
|
|
Loading…
Reference in New Issue