diff --git a/package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate index c8d3f418880..1243938c6ff 100755 --- a/package/base-files/files/bin/config_generate +++ b/package/base-files/files/bin/config_generate @@ -395,6 +395,7 @@ generate_rssimon() { generate_led() { local key="$1" local cfg="led_$key" + local led_keys led_key led_value json_select led json_select "$key" @@ -409,6 +410,19 @@ generate_led() { set system.$cfg.default='$default' EOF + # A multicolor LED carries one intensity per entry of its multi_index, + # which the led init script applies through multi_intensity. + json_get_keys led_keys + for led_key in $led_keys; do + case "$led_key" in + color_*) ;; + *) continue ;; + esac + + json_get_var led_value "$led_key" + uci -q set "system.$cfg.$led_key=$led_value" + done + case "$type" in brightness) local brightness diff --git a/package/base-files/files/lib/functions/uci-defaults.sh b/package/base-files/files/lib/functions/uci-defaults.sh index b3e9824a6cf..34005fe0fa4 100644 --- a/package/base-files/files/lib/functions/uci-defaults.sh +++ b/package/base-files/files/lib/functions/uci-defaults.sh @@ -439,6 +439,23 @@ _ucidef_set_led_common() { json_add_string sysfs "$sysfs" } +ucidef_set_led_colors() { + local cfg="$1" + + shift + + json_select_object led + json_select_object "$cfg" + + while [ "$#" -gt 1 ]; do + json_add_string "color_$1" "$2" + shift 2 + done + + json_select .. + json_select .. +} + ucidef_set_led_default() { local default="$4"