#!/bin/sh

board="$(awk -F',' '{print $2}' /tmp/sysinfo/board_name)"
[ -n "$board" ] || board="ac-2000"

color="$1"
blink=${2}
blink_on="${3:-1000}"
blink_off="${4:-900}"


status_file="/tmp/last_led_status"

test -f $status_file || touch $_

last_status="$(cat $status_file)"
lock="/tmp/led.lock"

test -e $blink_on

path="/sys/class/leds/${board}"

red="${path}:red:wlan5g"
green="${path}:green:lan"
blue="${path}:blue:wlan2g"

red_br=0
green_br=0
blue_br=0

green_tr="none"
red_tr="none"
blue_tr="none"

function set_br
{
        local path="$1"
        local br="$2"
        echo "$br" > $path/brightness
}

function set_tr
{
        local path="$1"
        local tr="$2"
        echo "$tr" > $path/trigger
        if [ "${tr}x" = "timerx" ]
        then
            echo "$blink_on" > $path/delay_on
            echo "$blink_off" > $path/delay_off
        fi
}

function reset_led
{
    set_tr $green none
    set_tr $red none
    set_tr $blue none

    set_br $green 0
    set_br $red 0
    set_br $blue 0
}

function set_last()
{
        echo $color $blink > $status_file
}



if [[ "$color" == "restore" ]]
then
    rm $lock
fi

test -f $lock \
    && echo "Lock detected... exit" \
    && exit 0


reset_led

case $color in

  red)
    set_last
    set_br $red 255
    ;;

  blue)
    set_last
    set_br $blue 255
    ;;

  green)
    set_last
    set_br $green 255
    ;;

  yellow)
    set_last
    set_br $green 255
    set_br $red 255
    ;;

  white)
    touch $lock
    set_br $green 255
    set_br $red 255
    set_br $blue 255
    ;;

  purple)
    set_last
    set_br $red 255
    set_br $blue 255
    ;;

  restore)
    echo "restore"
    sh /octo/bin/octo_led $last_status
    exit 0
    ;;

  *)
    echo "error"
    exit;
    ;;
esac

case $blink in
        blink)
case $color in

  red)
    set_tr $red timer
    ;;

  blue)
    set_tr $blue timer
    ;;

  green)
    set_tr $green timer
    ;;

  yellow)
    set_tr $green timer
    set_tr $red timer
    ;;

  white)
    set_tr $green timer
    set_tr $red timer
    set_tr $blue timer
    ;;

  purple)
    set_tr $red timer
    set_tr $blue timer
    ;;

  *)
    exit;
    ;;
esac
;;
 *)
         echo "no blinking" > /dev/null
         ;;
esac


