main.lua 3.5 KB

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