| #!/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_is_a led object || return |
| |
| 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 |
| } |