ath25: 4.9: fix Ethernet link autonegotiation
[oweals/openwrt.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 }