diff --git a/feeds/ucentral/ucentral-state/files/ucentral-state b/feeds/ucentral/ucentral-state/files/ucentral-state index 1d3d242ef..6fbbc8d41 100755 --- a/feeds/ucentral/ucentral-state/files/ucentral-state +++ b/feeds/ucentral/ucentral-state/files/ucentral-state @@ -138,14 +138,14 @@ function factory_reset_timeout() { let blink_timer; function blink_timeout() { - if (!blink_timer) - return; - blink_timer.cancel(); - blink_timer = null; if (current_state == 'blink') { current_state = 'online'; } system('/etc/init.d/led turnon'); + if (!blink_timer) + return; + blink_timer.cancel(); + blink_timer = null; } let state_handler = { @@ -183,8 +183,13 @@ let state_handler = { }, blink: function(args) { + if (!args.duration) { + blink_timeout(); + return 0; + } system('/etc/init.d/led blink'); - blink_timer = uloop.timer((args.duration || 10) * 1000, blink_timeout); + if (args.duration != 0xffff) + blink_timer = uloop.timer((args.duration || 10) * 1000, blink_timeout); return 0; }, }; @@ -193,10 +198,12 @@ let ubus_methods = { set: { call: function(req) { ulog(LOG_INFO, 'state %s -> %s\n', current_state, req.args.state); - if (current_state == req.args.state) + if (current_state == req.args.state && req.args.state != 'blink') return; if (!state_handler[req.args.state]) return ubus.STATUS_INVALID_ARGUMENT; + if (current_state != req.args.state) + ulog(LOG_INFO, 'state %s -> %s\n', current_state, req.args.state); current_state = req.args.state; blink_timeout(); ulog(LOG_INFO, 'set state -> ' + req.args.state + '\n');