#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2011 OpenWrt.org

START=10
STOP=90

uci_apply_defaults() {
	. /lib/functions/system.sh

	cd /etc/uci-defaults || return 0
	files="$(ls)"
	[ -z "$files" ] && return 0
	mkdir -p /tmp/.uci
	for file in $files; do
		( . "./$(basename $file)" ) && rm -f "$file"
	done
	uci commit
}

ucitrack_apply_defaults() {
	. /lib/functions/system.sh

	cd /etc/ucitrack-defaults || return 0
	files="$(ls)"
	[ -z "$files" ] && return 0
	mkdir -p /tmp/.uci
	for file in $files; do
		( . "./$(basename $file)" ) && rm -f "$file"
	done
	uci commit
}

boot() {
	ln -s /proc/self/fd /dev/fd
	id=`cat /proc/device-tree/lantronix/product_id | tr -d '\n'`
	if [ "$id" == "U1" ]; then
		#switch off USB A
        echo "USB-A: OFF" > /dev/kmsg
		i2cset -fry -m 0x80 0 0x20 0x00 0xFF
		ign_check=`cat /proc/device-tree/lantronix/hwcfg 2>/dev/null | grep "G526RP" | tr -d '\n'`
        echo both > /sys/class/gpio/powerloss/edge
		usleep 500000
		#brightness=1
		while [ 1 ]; do
			powerval=`cat /sys/class/gpio/powerloss/value | tr -d '\n'`
			if [ "$powerval" == "0" ]; then
				echo "running on battery power, wait"  > /dev/kmsg
				#echo $brightness > /sys/class/leds/G520-user2/brightness
				sleep 1
				#brightness=$((brightness+1))
				#brightness=$((brightness%2))
			else
				echo "running on main power, continue" > /dev/kmsg
				if [ "$ign_check" != "" ]; then
					echo 1 > /sys/class/gpio/ignition/active_low
					ign_enabled=`((uci -q get ignition.Ignition.State) || echo '0') | tr -d '\n'`
					ign_shutoff=`((uci -q get ignition.Ignition.Shutoff) || echo '0') | tr -d '\n'`
					echo "ignition check state: $ign_enabled, $ign_shutoff"  > /dev/kmsg
					if [[ "$ign_enabled" == "1" && "$ign_shutoff" == "1" ]]; then
						echo "ignition monitoring is enabled"  > /dev/kmsg
						#brightness=1
						while [ 1 ]; do
							powerval=`cat /sys/class/gpio/ignition/value | tr -d '\n'`
							if [ "$powerval" == "0" ]; then
								echo "ignition off, wait"  > /dev/kmsg
								#echo $brightness > /sys/class/leds/G520-user1/brightness
								sleep 1
								#brightness=$((brightness+1))
								#brightness=$((brightness%2))
							else
								echo "ignition on, continue"  > /dev/kmsg
								break
							fi
						done
					fi
				fi
				break
			fi
		done
	fi

	[ -f /proc/mounts ] || /sbin/mount_root
	[ -f /proc/jffs2_bbc ] && echo "S" > /proc/jffs2_bbc
	[ -f /proc/net/vlan/config ] && vconfig set_name_type DEV_PLUS_VID_NO_PAD

	mkdir -p /var/run
	mkdir -p /var/log
	mkdir -p /var/lock
	mkdir -p /var/state
	mkdir -p /var/tmp
	mkdir -p /tmp/.uci
	chmod 0700 /tmp/.uci
	touch /var/log/wtmp
	touch /var/log/lastlog
	touch /tmp/resolv.conf
	ln -sf /tmp/resolv.conf /etc/resolv.conf
	grep -q debugfs /proc/filesystems && /bin/mount -o noatime -t debugfs debugfs /sys/kernel/debug
	[ "$FAILSAFE" = "true" ] && touch /tmp/.failsafe

	/sbin/kmodloader

	[ ! -f /etc/config/wireless ] && {
		# compat for bcm47xx and mvebu
		sleep 1
	}
	[ -e /etc/confdone ] || {
		/bin/config_generate
		custom_config_generate.sh
		uci_apply_defaults
		touch /etc/confdone
	}
	ucitrack_apply_defaults

	chmod -R g+rw /tmp/
	# temporary hack until configd exists
	/sbin/reload_config
}
