#!/bin/sh /etc/rc.common
# Copyright (C) 2008 OpenWrt.org

START=01


gpio_init() {
	local section_name=$1
	local gpio=$(uci get system.$section_name.gpio)
	local direction=$(uci get system.$section_name.direction)
	echo $gpio > /sys/class/gpio/export
	echo $direction > /sys/class/gpio/gpio$gpio/direction
}

gpio_init_all() {
	config_load system
	config_foreach gpio_init gpio
}

# $1: 0-off, 1-on
fan_normal_led_set() {
	echo $1 > /sys/class/leds/FAN_NORMAL_LED/brightness
}

# $1: 0-off, 1-on
fan_error_led_set() {
	echo $1 > /sys/class/leds/FAN_ERROR_LED/brightness
}

# $1: 0-off, 1-on
fan_led_set() {
	fan_normal_led_set $1
	fan_error_led_set $1
}

fan_led_refresh() {
	local gpio=$(uci get system.fan_state.gpio)
	local fan_state=$(cat /sys/class/gpio/gpio$gpio/value)	# 0-Error, 1-Normal
	if [ "$fan_state" == "0" ]; then
		fan_normal_led_set 0
		fan_error_led_set 1
	else
		fan_normal_led_set 1
		fan_error_led_set 0
	fi
}

load_led() {
	local name
	local sysfs
	local trigger
	local dev
	local mode
	local default
	local delayon
	local delayoff
	local interval

	config_get sysfs $1 sysfs
	config_get name $1 name "$sysfs"
	config_get trigger $1 trigger "none"
	config_get dev $1 dev
	config_get mode $1 mode "link"
	config_get_bool default $1 default "nil"
	config_get delayon $1 delayon
	config_get delayoff $1 delayoff
	config_get interval $1 interval "50"
	config_get port_state $1 port_state
	config_get delay $1 delay "150"
	config_get message $1 message ""

	delayon=100
    delayoff=100

	[ -e /sys/class/leds/LED_ENABLE/brightness ] && {
		echo 1 >/sys/class/leds/LED_ENABLE/brightness
	}

	if [ "$name" != "led_sys" ]; then
		# handled by rssileds userspace process
		return
	fi
	[ -e /sys/class/leds/${sysfs}/brightness ] && {
		echo "setting up early led ${name}"
		echo 0 >/sys/class/leds/${sysfs}/brightness
		
	}
}

start() {
	[ -e /sys/class/leds/ ] && {
		config_load system
		config_foreach load_led led
	}
    /usr/sbin/fwver_init
	
	gpio_init_all
	fan_led_set 0
	# fan_led_refresh
}