diff options
Diffstat (limited to 'meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-lib.sh')
-rw-r--r-- | meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-lib.sh | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-lib.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-lib.sh index 503e413cef..063cc55c9c 100644 --- a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-lib.sh +++ b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-lib.sh @@ -1,19 +1,38 @@ #!/bin/bash +# get_gpio_num +# Dynamically obtains GPIO number from chip base and I2C expanders through line name +# line-name +function get_gpio_num() { + #shellcheck disable=SC2207 + CHIP_PIN=($(gpiofind "$1" | awk '{print substr ($1, 9 ), $2 }')) + #shellcheck disable=SC2128 + if [ -z "$CHIP_PIN" ]; then + echo "Could not find GPIO with name: $1" + return 1 + fi + + if [ "${CHIP_PIN[0]}" -gt 7 ]; then + BUS_ADDR=$(gpiodetect | grep gpiochip"${CHIP_PIN[0]}" | awk '{print substr($2, 2, length($2) - 2)}') + GPIO_BASE=$(cat /sys/bus/i2c/devices/"$BUS_ADDR"/gpio/*/base) + echo "$((GPIO_BASE+CHIP_PIN[1]))" + else + echo "$((CHIP_PIN[0]*32+CHIP_PIN[1]))" + fi +} + # set_gpio_ctrl -# pin #, direction, high(1)/low(0) +# line-name, high(1)/low(0) function set_gpio_ctrl() { - echo "$1" > /sys/class/gpio/export - echo "$2" > /sys/class//gpio/gpio"$1"/direction - echo "$3" > /sys/class/gpio/gpio"$1"/value - echo "$1" > /sys/class/gpio/unexport - sleep 1 + #shellcheck disable=SC2046 + gpioset $(gpiofind "$1")="$2" } # get_gpio_ctrl -# pin # +# line-name function get_gpio_ctrl() { - echo "$1" > /sys/class/gpio/export - cat /sys/class/gpio/gpio"$1"/value - echo "$1" > /sys/class/gpio/unexport + GPIO_NUM=$(get_gpio_num "$1") + echo "$GPIO_NUM" > /sys/class/gpio/export + cat /sys/class/gpio/gpio"$GPIO_NUM"/value + echo "$GPIO_NUM" > /sys/class/gpio/unexport } |