Просмотр исходного кода

add:多STA情况下,icmp成功的demo

Jiangqian 9 месяцев назад
Родитель
Сommit
7e261e1358

+ 76 - 0
luat/demo/airlink/air8000_ap_sta_ping/air8000_ap_ping/main.lua

@@ -0,0 +1,76 @@
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "air8000_ap_ping"
+VERSION = "1.0.0"
+
+-- sys库是标配
+_G.sys = require("sys")
+require "sysplus"
+dnsproxy = require("dnsproxy")
+dhcpsrv = require("dhcpsrv")
+
+function create_ap()
+    log.info("执行AP创建操作", "luatos8888")
+    wlan.createAP("luatos8888", "12345678")
+    sys.wait(1000)
+    netdrv.ipv4(socket.LWIP_AP, "192.168.4.1", "255.255.255.0", "0.0.0.0")
+    dnsproxy.setup(socket.LWIP_AP, socket.LWIP_GP)
+    dhcpsrv.create({adapter=socket.LWIP_AP})
+    while 1 do
+        if netdrv.ready(socket.LWIP_GP) then
+            netdrv.napt(socket.LWIP_GP)
+            break
+        end
+        sys.wait(1000)
+    end
+end
+
+function wifi_networking()
+   sys.wait(3000)
+    -- AP的ssid和password
+    wlan.scan()
+    -- sys.wait(500)
+    httpsrv.start(80, function(fd, method, uri, headers, body)
+        log.info("httpsrv", method, uri, json.encode(headers), body)
+    end, socket.LWIP_AP)
+end
+
+
+sys.subscribe("IP_READY", function()
+    -- 联网成功后, 模拟上报到服务器
+    log.info("wlan", "已联网", "通知服务器")
+
+end)
+
+sys.subscribe("PING_RESULT", function(id, time, dst)
+    log.info("ping", id, time, dst);
+end)
+
+sys.taskInit(function()
+
+    -- sys.wait(100)
+    wlan.init()
+    sys.wait(100)
+
+    -- 启动AP测试
+    create_ap()
+    wifi_networking()
+
+    icmp.setup(socket.LWIP_AP)
+    while 1 do
+        log.info("开始ping STA")
+
+        for i = 0, 10, 1 do
+            local ip = "192.168.4." .. (i+100)
+            log.info("STA客户端", ip)
+            icmp.ping(socket.LWIP_AP, ip)
+            sys.waitUntil("PING_RESULT", 3000)
+        end
+        sys.wait(1000)
+    end
+
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 61 - 0
luat/demo/airlink/air8000_ap_sta_ping/air8101_sta_httpsrv/main.lua

@@ -0,0 +1,61 @@
+
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "air8101_sta_httpsrv"
+VERSION = "1.0.5"
+
+dnsproxy = require("dnsproxy")
+dhcpsrv = require("dhcpsrv")
+
+-- wifi的STA相关事件
+sys.subscribe("WLAN_STA_INC", function(evt, data)
+    -- evt 可能的值有: "CONNECTED", "DISCONNECTED"
+    -- 当evt=CONNECTED, data是连接的AP的ssid, 字符串类型
+    -- 当evt=DISCONNECTED, data断开的原因, 整数类型
+    log.info("收到STA事件", evt, data)
+end)
+
+function test_sta()
+    log.info("执行STA连接操作")
+    wlan.connect("luatos8888", "12345678")
+    sys.wait(8000)
+    iperf.server(socket.LWIP_STA)
+
+
+    sys.wait(5000)
+    sys.wait(200)
+    wifi_networking()
+    
+    while 1 do
+        log.info("wlan", "info", json.encode(wlan.getInfo()))
+           
+        sys.wait(30*1000)
+        local code, headers, body = http.request("GET", "http://httpbin.air32.cn/get", nil, nil, {adapter=socket.LWIP_STA,timeout=5000,debug=false}).wait()
+        log.info("http执行结果", code, headers, body and #body)
+ 
+    end
+end
+
+function wifi_networking()
+   sys.wait(3000)
+    -- AP的ssid和password
+    wlan.scan()
+    -- sys.wait(500)
+    httpsrv.start(80, function(fd, method, uri, headers, body)
+        log.info("httpsrv", method, uri, json.encode(headers), body)
+    end, socket.LWIP_STA)
+end
+
+sys.taskInit(function()
+    wlan.init()
+   
+    -- 连接STA测试
+    log.info("STA_httpsrv测试启动...")
+    test_sta()
+
+end)
+
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!