x86: Enable DIAG LED on Geos
[openwrt/staging/yousong.git] / target / linux / x86 / base-files / etc / diag.sh
1 #!/bin/sh
2 #
3 # Copyright © 2017 OpenWrt.org
4 #
5
6 . /lib/functions.sh
7 . /lib/functions/leds.sh
8 . /usr/share/libubox/jshn.sh
9
10 preinit_match_diag_led() {
11 local CFG keys key cfg name sysfs default
12
13 CFG=/etc/board.json
14 if [ ! -s $CFG ]; then
15 CFG=/tmp/board.json
16 [ -s /tmp/sysinfo/model ] || return
17 /bin/board_detect $CFG || return
18 fi
19
20 json_init
21 json_load "$(cat $CFG)"
22 json_get_keys keys led
23 json_select led
24 for key in $keys; do
25 json_select "$key"
26 json_get_vars name sysfs default
27
28 if [ "$name" = "DIAG" -a "$default" = "1" ]; then
29 status_led="$sysfs"
30 return
31 fi
32 json_select ..
33 done
34 }
35
36 match_diag_led() {
37 local name
38 local default
39 local sysfs
40 config_get name "$1" name
41 config_get default "$1" default
42 config_get sysfs "$1" sysfs
43
44 if [ "$name" = "DIAG" -a "$default" = "1" ]; then
45 status_led="$sysfs"
46 fi
47 }
48
49 get_status_led() {
50 if [ -s /etc/config/system ]; then
51 config_load system
52 config_foreach match_diag_led led
53 else
54 preinit_match_diag_led
55 fi
56 }
57
58 set_state() {
59 get_status_led
60
61 case "$1" in
62 preinit)
63 status_led_blink_preinit
64 ;;
65
66 failsafe)
67 status_led_blink_failsafe
68 ;;
69
70 preinit_regular)
71 status_led_blink_preinit_regular
72 ;;
73
74 done)
75 status_led_on
76 ;;
77 esac
78 }