util_netled.lua 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. local util_netled = {}
  2. local netled_default_duration = 200
  3. local netled_default_interval = 3000
  4. local netled_duration = netled_default_duration
  5. local netled_interval = netled_default_interval
  6. local netled_inited = false
  7. -- 开机时呼吸灯效果
  8. sys.taskInit(
  9. function()
  10. local nums = {0, 1, 2, 4, 6, 12, 16, 21, 27, 34, 42, 51, 61, 72, 85, 100, 100}
  11. local len = #nums
  12. while true do
  13. for i = 1, len, 1 do
  14. pwm.open(4, 1000, nums[i])
  15. result = sys.waitUntil("NET_LED_INIT", 25)
  16. if result then
  17. pwm.close(4)
  18. return
  19. end
  20. end
  21. for i = len, 1, -1 do
  22. pwm.open(4, 1000, nums[i])
  23. result = sys.waitUntil("NET_LED_INIT", 25)
  24. if result then
  25. pwm.close(4)
  26. return
  27. end
  28. end
  29. end
  30. end
  31. )
  32. -- 注册网络后开始闪烁
  33. function util_netled.init()
  34. if netled_inited then
  35. return
  36. end
  37. netled_inited = true
  38. sys.publish("NET_LED_INIT")
  39. sys.taskInit(
  40. function()
  41. local netled = gpio.setup(27, 0, gpio.PULLUP)
  42. while true do
  43. netled(1)
  44. sys.waitUntil("NET_LED_UPDATE", netled_duration)
  45. netled(0)
  46. sys.waitUntil("NET_LED_UPDATE", netled_interval)
  47. end
  48. end
  49. )
  50. end
  51. function util_netled.blink(duration, interval, restore)
  52. if duration == netled_duration and interval == netled_interval then
  53. return
  54. end
  55. netled_duration = duration or netled_default_duration
  56. netled_interval = interval or netled_default_interval
  57. log.debug("EVENT.NET_LED_UPDATE", duration, interval, restore)
  58. sys.publish("NET_LED_UPDATE")
  59. if restore then
  60. sys.timerStart(util_netled.blink, restore)
  61. end
  62. end
  63. return util_netled