main.lua 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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. end
  43. sys.subscribe("PING_RESULT", function(id, time, dst)
  44. log.info("ping.result", id, time, dst);
  45. end)
  46. -- wifi的AP相关事件
  47. sys.subscribe("WLAN_AP_INC", function(evt, data)
  48. -- evt 可能的值有: "CONNECTED", "DISCONNECTED"
  49. -- 当evt=CONNECTED, data是连接的AP的新STA的MAC地址
  50. -- 当evt=DISCONNECTED, data是断开与AP连接的STA的MAC地址
  51. log.info("收到AP事件", evt, data and data:toHex())
  52. end)
  53. sys.subscribe("PING_RESULT", function(id, time, dst)
  54. log.info("ping", id, time, dst);
  55. end)
  56. -- 每隔6秒打印一次airlink统计数据, 调试用
  57. -- sys.taskInit(function()
  58. -- while 1 do
  59. -- sys.wait(6000)
  60. -- airlink.statistics()
  61. -- end
  62. -- end)
  63. function eth_lan()
  64. -- sys.wait(3000)
  65. local result = spi.setup(
  66. 1,--spi id
  67. nil,
  68. 0,--CPHA
  69. 0,--CPOL
  70. 8,--数据宽度
  71. 51200000--,--波特率
  72. )
  73. log.info("main", "open spi",result)
  74. if result ~= 0 then--返回值为0,表示打开成功
  75. log.info("main", "spi open error",result)
  76. return
  77. end
  78. log.info("netdrv", "初始化以太网")
  79. netdrv.setup(socket.LWIP_ETH, netdrv.CH390, {spi=1,cs=12,irq=255})
  80. log.info("netdrv", "等待以太网就绪")
  81. sys.wait(1000)
  82. netdrv.ipv4(socket.LWIP_ETH, "192.168.5.1", "255.255.255.0", "0.0.0.0")
  83. while netdrv.ready(socket.LWIP_ETH) ~= true do
  84. -- log.info("netdrv", "等待以太网就绪")
  85. sys.wait(100)
  86. end
  87. log.info("netdrv", "以太网就绪")
  88. log.info("netdrv", "创建dhcp服务器, 供以太网使用")
  89. dhcpsrv.create({adapter=socket.LWIP_ETH, gw={192,168,5,1}})
  90. log.info("netdrv", "创建dns代理服务, 供以太网使用")
  91. dnsproxy.setup(socket.LWIP_ETH, socket.LWIP_GP)
  92. end
  93. sys.taskInit(function()
  94. while airlink.ready() ~= true do
  95. sys.wait(100)
  96. end
  97. wlan.init()
  98. sys.taskInit(eth_lan)
  99. sys.taskInit(test_ap)
  100. while 1 do
  101. if netdrv.ready(socket.LWIP_GP) then
  102. log.info("netdrv", "4G作为网关")
  103. netdrv.napt(socket.LWIP_GP)
  104. break
  105. end
  106. sys.wait(1000)
  107. end
  108. end)
  109. -- 用户代码已结束---------------------------------------------
  110. -- 结尾总是这一句
  111. sys.run()
  112. -- sys.run()之后后面不要加任何语句!!!!!