123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #!/bin/sh
- #
- # Copyright © 2017 OpenWrt.org
- #
- . /lib/functions.sh
- . /lib/functions/leds.sh
- . /usr/share/libubox/jshn.sh
- preinit_match_diag_led() {
- local CFG keys key cfg name sysfs default
- CFG=/etc/board.json
- if [ ! -s $CFG ]; then
- CFG=/tmp/board.json
- [ -s /tmp/sysinfo/model ] || return
- /bin/board_detect $CFG || return
- fi
- json_init
- json_load "$(cat $CFG)"
- json_get_keys keys led
- json_select led
- for key in $keys; do
- json_select "$key"
- json_get_vars name sysfs default
- if [ "$name" = "DIAG" -a "$default" = "1" ]; then
- status_led="$sysfs"
- return
- fi
- json_select ..
- done
- }
- match_diag_led() {
- local name
- local default
- local sysfs
- config_get name "$1" name
- config_get default "$1" default
- config_get sysfs "$1" sysfs
- if [ "$name" = "DIAG" -a "$default" = "1" ]; then
- status_led="$sysfs"
- fi
- }
- get_status_led() {
- if [ -s /etc/config/system ]; then
- config_load system
- config_foreach match_diag_led led
- else
- preinit_match_diag_led
- fi
- }
- set_state() {
- get_status_led
- case "$1" in
- preinit)
- status_led_blink_preinit
- ;;
- failsafe)
- status_led_blink_failsafe
- ;;
- preinit_regular)
- status_led_blink_preinit_regular
- ;;
- done)
- status_led_on
- ;;
- esac
- }
|