#!/bin/bash

function get_gpio_nm(){
    local name=$1
    cat /sys/kernel/debug/gpio | grep -q $name
    if [ $? -ne 0 ]; then
        echo "错误: 未找到GPIO标签 $name"
        exit 1
    fi
    cat /sys/kernel/debug/gpio | grep $name | sed 's/gpio-\([0-9]*\).*/\1/'
}

function set_gpio_value(){
    local GPIO=$1
    local VALUE=$2

    echo "GPIO: $GPIO, VALUE: $VALUE"
    echo $GPIO > /sys/class/gpio/export 2>/dev/null
    echo out > /sys/class/gpio/gpio$GPIO/direction
    echo $VALUE > /sys/class/gpio/gpio$GPIO/value
    sleep 0.1
    echo $GPIO > /sys/class/gpio/unexport 2>/dev/null;
}


function get_gpio_value(){
    local GPIO=$1
    echo $GPIO > /sys/class/gpio/export 2>/dev/null
    cat /sys/class/gpio/gpio$GPIO/value
    sleep 0.1
    echo $GPIO > /sys/class/gpio/unexport 2>/dev/null;
}

case "$1" in
    "set")
        if [ -z "$3" ]; then
            echo "用法: quick_gpio set <label> <value>"
            exit 1
        fi

        GPIO=$(get_gpio_nm $2)
        VALUE=$3

        set_gpio_value $GPIO $VALUE
        ;;
    "get")
        if [ -z "$2" ]; then
            echo "用法: quick_gpio get <label>"
            exit 1
        fi

        GPIO=$(get_gpio_nm $2)
        get_gpio_value $GPIO
        ;;
    "info")
        gpioinfo -c $(gpiodetect | grep "0020" | awk '{print $1}')
        ;;
    *)
        echo "ed-gpio set 4G_LED_REG_RED 1"
        echo "ed-gpio get 4G_LED_REG_RED"
        echo "ed-gpio info"
        exit 1
esac