| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- -- LuaTools需要PROJECT和VERSION这两个信息
- PROJECT = "air8000_wifi"
- VERSION = "1.0.5"
- --[[
- 本demo演示的功能是:
- 1. 创建AP, 提供wifi设备, 通过4G上网
- 2. 创建以太网, 为局域网内的设备, 通过4G上网
- ]]
- dnsproxy = require("dnsproxy")
- dhcpsrv = require("dhcpsrv")
- httpplus = require("httpplus")
- gpio.setup(140, 1, gpio.PULLUP)
- -- 通过boot按键方便刷Air8000S
- function PWR8000S(val)
- gpio.set(23, val)
- end
- gpio.debounce(0, 1000)
- gpio.setup(0, function()
- sys.taskInit(function()
- log.info("复位Air8000S")
- PWR8000S(0)
- sys.wait(20)
- PWR8000S(1)
- end)
- end, gpio.PULLDOWN)
- function test_ap()
- log.info("执行AP创建操作", airlink.ready() , "正常吗?")
- wlan.createAP("uiot5678", "12345678")
- netdrv.ipv4(socket.LWIP_AP, "192.168.4.1", "255.255.255.0", "0.0.0.0")
- log.info("netdrv", "等待AP就绪")
- while netdrv.ready(socket.LWIP_AP) ~= true do
- sys.wait(100)
- end
- log.info("netdrv", "创建dhcp服务器, 供AP使用")
- dhcpsrv.create({adapter=socket.LWIP_AP})
- log.info("netdrv", "等待4G就绪")
- while netdrv.ready(socket.LWIP_GP) ~= true do
- sys.wait(100)
- end
- log.info("netdrv", "创建dns代理服务, 供AP使用")
- dnsproxy.setup(socket.LWIP_AP, socket.LWIP_GP)
- end
- sys.subscribe("PING_RESULT", function(id, time, dst)
- log.info("ping.result", id, time, dst);
- end)
- -- wifi的AP相关事件
- sys.subscribe("WLAN_AP_INC", function(evt, data)
- -- evt 可能的值有: "CONNECTED", "DISCONNECTED"
- -- 当evt=CONNECTED, data是连接的AP的新STA的MAC地址
- -- 当evt=DISCONNECTED, data是断开与AP连接的STA的MAC地址
- log.info("收到AP事件", evt, data and data:toHex())
- end)
- sys.subscribe("PING_RESULT", function(id, time, dst)
- log.info("ping", id, time, dst);
- end)
- -- 每隔6秒打印一次airlink统计数据, 调试用
- -- sys.taskInit(function()
- -- while 1 do
- -- sys.wait(6000)
- -- airlink.statistics()
- -- end
- -- end)
- function eth_lan()
- -- sys.wait(3000)
- local result = spi.setup(
- 1,--spi id
- nil,
- 0,--CPHA
- 0,--CPOL
- 8,--数据宽度
- 51200000--,--波特率
- )
- log.info("main", "open spi",result)
- if result ~= 0 then--返回值为0,表示打开成功
- log.info("main", "spi open error",result)
- return
- end
- log.info("netdrv", "初始化以太网")
- netdrv.setup(socket.LWIP_ETH, netdrv.CH390, {spi=1,cs=12,irq=255})
- log.info("netdrv", "等待以太网就绪")
- sys.wait(1000)
- netdrv.ipv4(socket.LWIP_ETH, "192.168.5.1", "255.255.255.0", "0.0.0.0")
- while netdrv.ready(socket.LWIP_ETH) ~= true do
- -- log.info("netdrv", "等待以太网就绪")
- sys.wait(100)
- end
- log.info("netdrv", "以太网就绪")
- log.info("netdrv", "创建dhcp服务器, 供以太网使用")
- dhcpsrv.create({adapter=socket.LWIP_ETH, gw={192,168,5,1}})
- log.info("netdrv", "创建dns代理服务, 供以太网使用")
- dnsproxy.setup(socket.LWIP_ETH, socket.LWIP_GP)
- end
- sys.taskInit(function()
- while airlink.ready() ~= true do
- sys.wait(100)
- end
- wlan.init()
- sys.taskInit(eth_lan)
- sys.taskInit(test_ap)
-
- while 1 do
- if netdrv.ready(socket.LWIP_GP) then
- log.info("netdrv", "4G作为网关")
- netdrv.napt(socket.LWIP_GP)
- break
- end
- sys.wait(1000)
- end
- end)
- -- 用户代码已结束---------------------------------------------
- -- 结尾总是这一句
- sys.run()
- -- sys.run()之后后面不要加任何语句!!!!!
|