airap.lua 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. local airap = {}
  2. dnsproxy = require("dnsproxy")
  3. dhcpsrv = require("dhcpsrv")
  4. httpplus = require("httpplus")
  5. local run_state = false
  6. local ap_state = false
  7. local wifi_net_state = "未打开"
  8. local ssid = "Air8000_"
  9. local password = "12345678"
  10. local number = 0
  11. local event = ""
  12. local function start_ap()
  13. wifi_net_state = "已打开,创建路由中"
  14. wlan.init()
  15. log.info("start_ap")
  16. ssid = ssid .. wlan.getMac()
  17. wlan.createAP(ssid, password)
  18. netdrv.ipv4(socket.LWIP_AP, "192.168.4.1", "255.255.255.0", "0.0.0.0")
  19. while netdrv.ready(socket.LWIP_AP) ~= true do
  20. sys.wait(100)
  21. end
  22. -- sys.wait(5000)
  23. dnsproxy.setup(socket.LWIP_AP, socket.LWIP_GP)
  24. dhcpsrv.create({adapter=socket.LWIP_AP})
  25. while 1 do
  26. if netdrv.ready(socket.LWIP_GP) then
  27. netdrv.napt(socket.LWIP_GP)
  28. wifi_net_state = "已打开,热点可用"
  29. log.info("AP 创建成功,如果无法连接,需要将按照https://docs.openluat.com/air8000/luatos/app/updatwifi/update/ 升级固件")
  30. log.info("AP 创建成功,如果无法连接,请升级本仓库的最新core")
  31. log.info("start_ap ok")
  32. break
  33. end
  34. sys.wait(500)
  35. end
  36. end
  37. local function stop_ap()
  38. wlan.stopAP()
  39. end
  40. sys.subscribe("WLAN_AP_INC", function(evt, data)
  41. event = evt.. ",对方的MAC为:" .. data:toHex()
  42. if evt == "CONNECTED" then
  43. number = number + 1
  44. elseif evt == "DISCONNECTED" then
  45. number = number - 1
  46. end
  47. log.info("收到AP事件", evt, data and data:toHex())
  48. end)
  49. sys.subscribe("PING_RESULT", function(id, time, dst)
  50. log.info("ping", id, time, dst);
  51. event = "ping" .. id .. time .. dst
  52. end)
  53. function airap.run()
  54. log.info("airap.run")
  55. lcd.setFont(lcd.font_opposansm12_chinese) -- 具体取值可参考api文档的常量表
  56. run_state = true
  57. while true do
  58. sys.wait(10)
  59. -- airlink.statistics()
  60. lcd.clear(_G.bkcolor)
  61. lcd.drawStr(0,80,"WIFI AP状态:"..wifi_net_state )
  62. if ap_state then
  63. lcd.drawStr(0,120,"WIFI ssid:" .. ssid )
  64. lcd.drawStr(0,140,"WIFI password:" .. password )
  65. lcd.drawStr(0,160,"WIFI MAC:" .. wlan.getMac() )
  66. lcd.drawStr(0,180,"链接WIFI 数量:" .. number)
  67. lcd.drawStr(0,200, event)
  68. end
  69. lcd.showImage(20,360,"/luadb/back.jpg")
  70. if ap_state then
  71. lcd.showImage(130,370,"/luadb/stop.jpg")
  72. else
  73. lcd.showImage(130,370,"/luadb/start.jpg")
  74. end
  75. lcd.showImage(0,448,"/luadb/Lbottom.jpg")
  76. lcd.flush()
  77. if not run_state then -- 等待结束
  78. return true
  79. end
  80. end
  81. end
  82. local function start_ap_task()
  83. ap_state = true
  84. start_ap()
  85. end
  86. local function stop_ap_task()
  87. stop_ap()
  88. ap_state = false
  89. end
  90. function airap.start_ap()
  91. start_ap()
  92. end
  93. function airap.tp_handal(x,y,event) -- 判断是否需要停止播放
  94. if x > 20 and x < 100 and y > 360 and y < 440 then
  95. run_state = false
  96. elseif x > 130 and x < 230 and y > 370 and y < 417 then
  97. if ap_state then
  98. sysplus.taskInitEx(stop_ap_task, "stop_ap_task")
  99. else
  100. sysplus.taskInitEx(start_ap_task , "start_ap_task")
  101. end
  102. end
  103. end
  104. return airap