Browse Source

addd: airlink,添加air1601通过air780ehm访问外网的演示

Wendal Chen 1 month ago
parent
commit
4ece295e0a
1 changed files with 77 additions and 0 deletions
  1. 77 0
      olddemo/airlink/air780epm_air1601_http/main.lua

+ 77 - 0
olddemo/airlink/air780epm_air1601_http/main.lua

@@ -0,0 +1,77 @@
+
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "airlink_http"
+VERSION = "1.0.1"
+
+dnsproxy = require("dnsproxy")
+
+-----------------------------------
+-- 配置区域
+-----------------------------------
+-- 是否是网关模式, 要插卡, 要能联网
+is_gw = rtos.bsp() ~= "Air1601"
+-- 网关就用slave模式, 客户端就用master模式
+local airlink_mode = is_gw and 0 or 1
+-------------------------------------
+
+
+sys.taskInit(function()
+    sys.wait(500)
+    -- 初始化airlink
+    airlink.init()
+    -- 注册网卡
+    netdrv.setup(socket.LWIP_USER0, netdrv.WHALE)
+    -- 启动airlink uart任务
+    airlink.start(airlink_mode)
+
+    -- 网关模式下, ip设置为.1, 对端设置为.2
+    if is_gw then
+        netdrv.ipv4(socket.LWIP_USER0, "192.168.111.1", "255.255.255.0", "192.168.111.2")
+    else
+        netdrv.ipv4(socket.LWIP_USER0, "192.168.111.2", "255.255.255.0", "192.168.111.1")
+    end
+    -- netdrv.debug(0, true)
+
+end)
+
+sys.taskInit(function()
+    sys.wait(1000)
+    while 1 do
+        -- 发送给对端设备
+        local data = rtos.bsp() .. " " .. os.date() .. " " .. (mobile and mobile.imei() or "")
+        log.info("client 发送数据给sever设备", data, "当前airlink状态", airlink.ready())
+        airlink.sdata(data)
+        -- airlink.test(1000) -- 要测试高速连续发送的情况
+        sys.wait(1000)
+    end
+end)
+
+sys.taskInit(function()
+    -- sys.waitUntil("IP_READY")
+    sys.wait(3000)
+    if is_gw then
+        log.info("airlink", "Gateway mode")
+        -- while netdrv.ready(socket.LWIP_USER0) == false do
+        while netdrv.ready(socket.LWIP_GP) == false do
+            sys.wait(100)
+        end
+        netdrv.napt(socket.LWIP_GP)
+        dnsproxy.start(adapter=socket.LWIP_USER0, socket.LWIP_GP)
+        return
+    else
+        log.info("airlink", "Client mode")
+    end
+    while 1 do
+        sys.wait(500)
+        local code, headers, body = http.request("GET", "https://httpbin.air32.cn/bytes/2048", nil, nil, {adapter=socket.LWIP_USER0,timeout=3000}).wait()
+        log.info("http", code, body and #body)
+        -- log.info("lua", rtos.meminfo())
+        -- log.info("sys", rtos.meminfo("sys"))
+    end
+end)
+
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!