base-files: add ucidef_set_led_usbport for full usbport support
authorRafał Miłecki <rafal@milecki.pl>
Wed, 19 Oct 2016 11:05:53 +0000 (13:05 +0200)
committerRafał Miłecki <rafal@milecki.pl>
Sat, 22 Oct 2016 09:16:01 +0000 (11:16 +0200)
This helper allows using usbport trigger directly. It requires usbport
compatible syntax and supports specifying multiple USB ports, e.g.:
ucidef_set_led_usbport "usb" "USB" "devicename:colour:function" "usb1-port1" "usb2-port1"

This adds a proper object to the board.json, e.g.
"usb": {
"name": "USB",
"type": "usbport",
"sysfs": "devicename:colour:function",
"ports": [
"usb1-port1",
"usb2-port1"
]
}
and supports translating it into uci section.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
package/base-files/files/bin/config_generate
package/base-files/files/etc/init.d/led
package/base-files/files/lib/functions/uci-defaults.sh

index 80e5c9f..13ddb07 100755 (executable)
@@ -335,6 +335,15 @@ generate_led() {
                        EOF
                ;;
 
+               usbport)
+                       local ports port
+                       json_get_values ports ports
+                       uci set system.$cfg.trigger='usbport'
+                       for port in $ports; do
+                               uci add_list system.$cfg.port=$port
+                       done
+               ;;
+
                rssi)
                        local iface minq maxq offset factor
                        json_get_vars iface minq maxq offset factor
index 9a793e9..7c2a185 100755 (executable)
@@ -19,6 +19,7 @@ load_led() {
        config_get name $1 name "$sysfs"
        config_get trigger $1 trigger "none"
        config_get dev $1 dev
+       config_get ports $1 port
        config_get mode $1 mode "link"
        config_get_bool default $1 default "nil"
        config_get delayon $1 delayon
index a88308b..e39b0a5 100755 (executable)
@@ -390,6 +390,30 @@ ucidef_set_led_usbdev() {
        json_select ..
 }
 
+ucidef_set_led_usbport() {
+       local obj="$1"
+       local name="$2"
+       local sysfs="$3"
+       shift
+       shift
+       shift
+
+       json_select_object led
+
+       json_select_object "$obj"
+       json_add_string name "$name"
+       json_add_string type usbport
+       json_add_string sysfs "$sysfs"
+       json_select_array ports
+               for port in "$@"; do
+                       json_add_string port "$port"
+               done
+       json_select ..
+       json_select ..
+
+       json_select ..
+}
+
 ucidef_set_led_wlan() {
        local cfg="led_$1"
        local name="$2"