From 9997b38e68d5fe930e92029d95396c429833ca06 Mon Sep 17 00:00:00 2001 From: jayfan0 <34886607+jayfan0@users.noreply.github.com> Date: Mon, 3 Apr 2023 14:33:32 +0100 Subject: [PATCH] Added light script (#708) Co-authored-by: jayfan0 <> --- general/overlay/usr/sbin/gpio | 105 +++++++++++++++++++++++++++++++++ general/overlay/usr/sbin/light | 93 +++++++++++++++++++++++++++++ 2 files changed, 198 insertions(+) create mode 100644 general/overlay/usr/sbin/gpio create mode 100644 general/overlay/usr/sbin/light diff --git a/general/overlay/usr/sbin/gpio b/general/overlay/usr/sbin/gpio new file mode 100644 index 00000000..ffcab319 --- /dev/null +++ b/general/overlay/usr/sbin/gpio @@ -0,0 +1,105 @@ +#!/bin/sh + +help() { + echo -e "\n=== GPIO usage ===\n" + + echo -e ">\t gpio \n" + echo -e "set\t\t = Output HI\nclear\t\t = Output LOW\ntoggle\t\t = Swap HI <> LOW\nunexport\t = Release GPIO pin back to the kernel space\nread\t\t = Read GPIO pin output state\n" + + echo -e "---\n" + + echo -e ">\t gpio search \n" + echo -e "Toggle a range of GPIO pins from HI to LOW" + echo -e "gpio search logs to syslog\n" + + echo -e "==================\n" +} + +exp() { + if [ ! -d /sys/class/gpio/gpio$1 ]; then + [ ! -f /sys/class/gpio/export ] && echo "Error: No export file!" && exit + echo $1 > /sys/class/gpio/export + [ ! -f /sys/class/gpio/gpio$1/direction ] && echo "Error: No direction file!" && exit + echo out > /sys/class/gpio/gpio$1/direction + fi +} + +write(){ + echo $1 > /sys/class/gpio/gpio$2/value +} + +read() { + [ ! -f /sys/class/gpio/gpio$1/value ] && echo "Error: GPIO-$1 is not set" && exit + echo $(cat /sys/class/gpio/gpio$1/value) +} + +unexport() { + if [ -d /sys/class/gpio/gpio$1 ]; then + echo $1 > /sys/class/gpio/unexport + else + echo "GPIO-${1} is not exported." + fi +} + +search() { + echo -e "Start blink (output) on GPIO range $1 to $2\n" + for pin in $(seq $1 $2); do + echo "=================================" + exp ${pin} && echo " Exported GPIO-${pin} from kernel space" && echo " Set GPIO-${pin} to OUTPUT mode" + write 0 ${pin} && echo " Set GPIO-${pin} to LO level" ; sleep 1 + write 1 ${pin} && echo " Set GPIO-${pin} to HI level" ; sleep 1 + echo in > /sys/class/gpio/gpio${pin}/direction && echo " Set GPIO-${pin} to INPUT mode" + unexport ${pin} && echo " Unexported GPIO-${pin}" + logger HELLO - ${pin} + done +} + +if [ -n $1 ] && [ -n $2 ] && [ $2 -eq $2 ]; then + case $1 in + set) + exp $2 + echo "Setting GPIO-$2 to HI" + write 1 $2 + ;; + + clear) + exp $2 + echo "Setting GPIO-$2 to LOW" + write 0 $2 + ;; + + toggle) + exp $2 + if [ $(read $2) -eq 0 ]; then + echo "Setting GPIO-$2 to HI" + write 1 $2 + else + echo "Setting GPIO-$2 to LOW" + write 0 $2 + fi + ;; + + unexport) + unexport $2 + ;; + + read) + echo $(read $2) + ;; + + search) + if [ ! -z $3 ] && [ $3 -eq $3 ]; then + search $2 $3 + else + echo -e "\n Caution: Toggling single pin. Use to search a range.\n" + search $2 $2 + fi + ;; + + *) + help + ;; + esac +else + help +fi diff --git a/general/overlay/usr/sbin/light b/general/overlay/usr/sbin/light new file mode 100644 index 00000000..d55c97a9 --- /dev/null +++ b/general/overlay/usr/sbin/light @@ -0,0 +1,93 @@ +#!/bin/sh + +GPIO_RED=78 +GPIO_GREEN=75 +GPIO_BLUE= + +help() { + echo -e "\n================= LIGHT usage =================\n" + echo -e "Set the colour of the status light\n" + echo -e "light \n" +} + +setRed() { + if [ -n "$GPIO_RED" ]; then + [ $1 -eq 1 ] && gpio set "$GPIO_RED" || gpio clear "$GPIO_RED" + else + echo "Red GPIO undefined" + fi +} + +setGreen() { + if [ -n "$GPIO_GREEN" ]; then + [ $1 -eq 1 ] && gpio set "$GPIO_GREEN" || gpio clear "$GPIO_GREEN" + else + echo "Green GPIO undefined" + fi +} + +setBlue() { + if [ -n "$GPIO_BLUE" ]; then + [ $1 -eq 1 ] && gpio set "$GPIO_BLUE" || gpio clear "$GPIO_BLUE" + else + echo "Blue GPIO undefined" + fi +} + +if [ -n $1 ]; then + case $1 in + off) + setRed 0 + setGreen 0 + setBlue 0 + ;; + + red) + setRed 1 + setGreen 0 + setBlue 0 + ;; + + green) + setRed 0 + setGreen 1 + setBlue 0 + ;; + + blue) + setRed 0 + setGreen 0 + setBlue 1 + ;; + + yellow) + setRed 1 + setGreen 1 + setBlue 0 + ;; + + magenta|purple) + setRed 1 + setGreen 0 + setBlue 1 + ;; + + cyan) + setRed 0 + setGreen 1 + setBlue 1 + ;; + + white) + setRed 1 + setGreen 1 + setBlue 1 + ;; + + *) + help + ;; + esac +else + help +fi