main.lua 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "air8000_wifi"
  3. VERSION = "1.0.5"
  4. dnsproxy = require("dnsproxy")
  5. dhcpsrv = require("dhcpsrv")
  6. httpplus = require("httpplus")
  7. gpio.setup(140, 1, gpio.PULLUP)
  8. -- 通过boot按键方便刷Air8000S
  9. function PWR8000S(val)
  10. gpio.set(23, val)
  11. end
  12. gpio.debounce(0, 1000)
  13. gpio.setup(0, function()
  14. sys.taskInit(function()
  15. log.info("复位Air8000S")
  16. PWR8000S(0)
  17. sys.wait(20)
  18. PWR8000S(1)
  19. end)
  20. end, gpio.PULLDOWN)
  21. function test_ap()
  22. log.info("执行AP创建操作")
  23. wlan.createAP("uiot5678", "12345678")
  24. netdrv.ipv4(socket.LWIP_AP, "192.168.4.1", "255.255.255.0", "0.0.0.0")
  25. sys.wait(5000)
  26. dnsproxy.setup(socket.LWIP_AP, socket.LWIP_ETH)
  27. dhcpsrv.create({adapter=socket.LWIP_AP})
  28. while 1 do
  29. if netdrv.ready(socket.LWIP_ETH) then
  30. log.info("以太网作为网关")
  31. netdrv.napt(socket.LWIP_ETH)
  32. break
  33. end
  34. sys.wait(1000)
  35. end
  36. icmp.setup(socket.LWIP_ETH)
  37. while 1 do
  38. -- 持续ping网关
  39. local ip,mark,gw = netdrv.ipv4(socket.LWIP_ETH)
  40. if gw then
  41. log.info("ping", gw)
  42. icmp.ping(socket.LWIP_ETH, gw)
  43. end
  44. sys.wait(3000)
  45. end
  46. end
  47. sys.subscribe("PING_RESULT", function(id, time, dst)
  48. log.info("ping.result", id, time, dst);
  49. end)
  50. -- wifi的AP相关事件
  51. sys.subscribe("WLAN_AP_INC", function(evt, data)
  52. -- evt 可能的值有: "CONNECTED", "DISCONNECTED"
  53. -- 当evt=CONNECTED, data是连接的AP的新STA的MAC地址
  54. -- 当evt=DISCONNECTED, data是断开与AP连接的STA的MAC地址
  55. log.info("收到AP事件", evt, data and data:toHex())
  56. end)
  57. sys.subscribe("PING_RESULT", function(id, time, dst)
  58. log.info("ping", id, time, dst);
  59. end)
  60. -- 每隔6秒打印一次airlink统计数据, 调试用
  61. -- sys.taskInit(function()
  62. -- while 1 do
  63. -- sys.wait(6000)
  64. -- airlink.statistics()
  65. -- end
  66. -- end)
  67. function eth_wan()
  68. -- sys.wait(3000)
  69. local result = spi.setup(
  70. 1,--spi id
  71. nil,
  72. 0,--CPHA
  73. 0,--CPOL
  74. 8,--数据宽度
  75. 51200000--,--波特率
  76. )
  77. log.info("main", "open spi",result)
  78. if result ~= 0 then--返回值为0,表示打开成功
  79. log.info("main", "spi open error",result)
  80. return
  81. end
  82. netdrv.setup(socket.LWIP_ETH, netdrv.CH390, {spi=1,cs=12})
  83. netdrv.dhcp(socket.LWIP_ETH, true)
  84. while 1 do
  85. local ip = netdrv.ipv4(socket.LWIP_ETH)
  86. if ip and ip ~= "0.0.0.0" then
  87. break
  88. end
  89. sys.wait(100)
  90. end
  91. iperf.server(socket.LWIP_ETH)
  92. end
  93. sys.taskInit(function()
  94. eth_wan()
  95. wlan.init()
  96. sys.wait(300)
  97. test_ap()
  98. end)
  99. -- 用户代码已结束---------------------------------------------
  100. -- 结尾总是这一句
  101. sys.run()
  102. -- sys.run()之后后面不要加任何语句!!!!!