#!/bin/sh

name=$2
color=$4
action=$6

# ledcontrol -n all -c red -s on
# ledcontrol -n power -c green -s on

POWER_LED_GREEN="led_pwr_green"
POWER_LED_RED="led_pwr_red"
LED_WHITE="led_white"
LED_GREEN="led_green"
LED_RED="led_red"
LED_BLUE="led_blue"

led_on()
{
        gpio_name=$1
        echo 0 > /sys/class/leds/${gpio_name}/brightness
        echo 255 > /sys/class/leds/${gpio_name}/brightness
}

led_off()
{
        gpio_name=$1
        echo 0 > /sys/class/leds/${gpio_name}/brightness
}

usage()
{
    echo "Usage: ledcontrol -n <name> -c <color> -s <status>" > /dev/console
    echo "       name: all/power" > /dev/console
    echo "       color: if <name> is \"all\", the color could be red/green/blue/white/magenta/amber" > /dev/console
    echo "              if <name> is \"power\", the color could be red/green/amber" > /dev/console
    echo "       status: on/off" > /dev/console
}

handle_power_led()
{
    if [ "x$color" = "xred" ];then
        if [ "x$action" = "xon" ];then
            led_off $POWER_LED_GREEN
            led_on $POWER_LED_RED
        elif [ "x$action" = "xoff" ];then
            led_off $POWER_LED_GREEN
            led_off $POWER_LED_RED
        else
            usage
        fi
    elif [ "x$color" = "xgreen" ];then
        if [ "x$action" = "xon" ];then
            led_off $POWER_LED_RED
            led_on $POWER_LED_GREEN
        elif [ "x$action" = "xoff" ];then
            led_off $POWER_LED_GREEN
            led_off $POWER_LED_RED
        else
            usage
        fi
    elif [ "x$color" = "xamber" ];then
        if [ "x$action" = "xon" ];then
            led_on $POWER_LED_RED
            led_on $POWER_LED_GREEN
        elif [ "x$action" = "xoff" ];then
            led_off $POWER_LED_GREEN
            led_off $POWER_LED_RED
        else
            usage
        fi
    else
        usage
    fi
}

handle_all_led()
{
    if [ "x$color" = "xred" ];then
        if [ "x$action" = "xon" ];then
            led_off $LED_GREEN
            led_off $LED_BLUE
            led_on $LED_RED
            led_off $LED_WHITE
        elif [ "x$action" = "xoff" ];then
            led_off $LED_GREEN
            led_off $LED_BLUE
            led_off $LED_RED
            led_off $LED_WHITE
        else
            usage
        fi
    elif [ "x$color" = "xgreen" ];then
        if [ "x$action" = "xon" ];then
            led_on $LED_GREEN
            led_off $LED_BLUE
            led_off $LED_RED
            led_off $LED_WHITE
        elif [ "x$action" = "xoff" ];then
            led_off $LED_GREEN
            led_off $LED_BLUE
            led_off $LED_RED
            led_off $LED_WHITE
        else
            usage
        fi
    elif [ "x$color" = "xblue" ];then
        if [ "x$action" = "xon" ];then
            led_off $LED_GREEN
            led_on $LED_BLUE
            led_off $LED_RED
            led_off $LED_WHITE
        elif [ "x$action" = "xoff" ];then
            led_off $LED_GREEN
            led_off $LED_BLUE
            led_off $LED_RED
            led_off $LED_WHITE
        else 
            usage
        fi
    elif [ "x$color" = "xwhite" ];then
        if [ "x$action" = "xon" ];then
            led_off $LED_GREEN
            led_off $LED_BLUE
            led_off $LED_RED
            led_on $LED_WHITE
        elif [ "x$action" = "xoff" ];then
            led_off $LED_GREEN
            led_off $LED_BLUE
            led_off $LED_RED
            led_off $LED_WHITE
        else 
            usage
        fi
    elif [ "x$color" = "xmagenta" ];then
        if [ "x$action" = "xon" ];then
            led_on $LED_BLUE
            led_on $LED_RED
            led_off $LED_GREEN
            led_off $LED_WHITE
        elif [ "x$action" = "xoff" ];then
            led_off $LED_GREEN
            led_off $LED_BLUE
            led_off $LED_RED
            led_off $LED_WHITE
        else 
            usage
        fi
    elif [ "x$color" = "xamber" ];then
        if [ "x$action" = "xon" ];then
            led_on $LED_GREEN
            led_on $LED_RED
            led_off $LED_BLUE
            led_off $LED_WHITE
        elif [ "x$action" = "xoff" ];then
            led_off $LED_GREEN
            led_off $LED_BLUE
            led_off $LED_RED
            led_off $LED_WHITE
        else 
            usage
        fi
    else
        usage
    fi
}

main()
{
	case $name in
		power) handle_power_led ;;
		all) handle_all_led ;;
		*) usage ;;
	esac
}

main 
