air780e-forwarder/script/util_netled.lua

71 lines
1.9 KiB
Lua

local util_netled = {}
local netled_default_duration = 200
local netled_default_interval = 3000
local netled_duration = netled_default_duration
local netled_interval = netled_default_interval
local netled_inited = false
-- 开机时呼吸灯效果
sys.taskInit(
function()
local nums = {0, 1, 2, 4, 6, 12, 16, 21, 27, 34, 42, 51, 61, 72, 85, 100, 100}
while true do
for i = 1, #nums, 1 do
pwm.open(4, 1000, nums[i])
result = sys.waitUntil("NET_LED_INIT", 25)
if result then
pwm.close(4)
return
end
end
for i = #nums, 1, -1 do
pwm.open(4, 1000, nums[i])
result = sys.waitUntil("NET_LED_INIT", 25)
if result then
pwm.close(4)
return
end
end
end
end
)
-- 注册网络后开始闪烁
function util_netled.init()
if netled_inited then
return
end
netled_inited = true
sys.publish("NET_LED_INIT")
sys.taskInit(
function()
local netled = gpio.setup(27, 0, gpio.PULLUP)
while true do
netled(1)
sys.waitUntil("NET_LED_UPDATE", netled_duration)
netled(0)
sys.waitUntil("NET_LED_UPDATE", netled_interval)
end
end
)
end
function util_netled.blink(duration, interval, restore)
if duration == netled_duration and interval == netled_interval then
return
end
netled_duration = duration or netled_default_duration
netled_interval = interval or netled_default_interval
log.debug("EVENT.NET_LED_UPDATE", duration, interval, restore)
sys.publish("NET_LED_UPDATE")
if restore then
sys.timerStart(util_netled.blink, restore)
end
end
return util_netled