util_netled.lua 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. while true do
  12. for i = 1, #nums, 1 do
  13. pwm.open(4, 1000, nums[i])
  14. result = sys.waitUntil("NET_LED_INIT", 25)
  15. if result then
  16. pwm.close(4)
  17. return
  18. end
  19. end
  20. for i = #nums, 1, -1 do
  21. pwm.open(4, 1000, nums[i])
  22. result = sys.waitUntil("NET_LED_INIT", 25)
  23. if result then
  24. pwm.close(4)
  25. return
  26. end
  27. end
  28. end
  29. end
  30. )
  31. -- 注册网络后开始闪烁
  32. function util_netled.init()
  33. if netled_inited then
  34. return
  35. end
  36. netled_inited = true
  37. sys.publish("NET_LED_INIT")
  38. sys.taskInit(
  39. function()
  40. local netled = gpio.setup(27, 0, gpio.PULLUP)
  41. while true do
  42. netled(1)
  43. sys.waitUntil("NET_LED_UPDATE", netled_duration)
  44. netled(0)
  45. sys.waitUntil("NET_LED_UPDATE", netled_interval)
  46. end
  47. end
  48. )
  49. end
  50. function util_netled.blink(duration, interval, restore)
  51. if duration == netled_duration and interval == netled_interval then
  52. return
  53. end
  54. netled_duration = duration or netled_default_duration
  55. netled_interval = interval or netled_default_interval
  56. log.debug("EVENT.NET_LED_UPDATE", duration, interval, restore)
  57. sys.publish("NET_LED_UPDATE")
  58. if restore then
  59. sys.timerStart(util_netled.blink, restore)
  60. end
  61. end
  62. return util_netled