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

add:air8000_LAN_WAN,air8000做LAN模式,接交换机,接air780epm做WAN模式

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

+ 75 - 0
luat/demo/airlink/air8000_LAN_WAN/air780epm_WAN/main.lua

@@ -0,0 +1,75 @@
+
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "air780epm_WAN"
+VERSION = "1.0.5"
+
+dnsproxy = require("dnsproxy")
+dhcpsrv = require("dhcpsrv")
+httpplus = require("httpplus")
+
+gpio.setup(20, 1) -- 打开lan供电
+
+function eth_wan()
+
+    sys.wait(3000)
+    local result = spi.setup(
+        0,--spi id
+        nil,
+        0,--CPHA
+        0,--CPOL
+        8,--数据宽度
+        25600000--,--频率
+        -- spi.MSB,--高低位顺序    可选,默认高位在前
+        -- spi.master,--主模式     可选,默认主
+        -- spi.full--全双工       可选,默认全双工
+    )
+    log.info("main", "open",result)
+    if result ~= 0 then--返回值为0,表示打开成功
+        log.info("main", "spi open error",result)
+        return
+    end
+    
+    sys.wait(200)
+    log.info("netdrv", "初始化WAN")    
+    
+    netdrv.setup(socket.LWIP_ETH, netdrv.CH390, {spi=0,cs=8})
+    sys.wait(100)
+    netdrv.dhcp(socket.LWIP_ETH, true)
+    log.info("netdrv", "以太网就绪")
+
+
+end
+
+
+
+sys.taskInit(function()
+
+    
+    sys.taskInit(eth_wan)
+    sys.wait(1000)
+    while 1 do
+        sys.wait(1000)
+        local result, ip, adapter = sys.waitUntil("IP_READY", 3000)
+        log.info("ready?", result, ip, adapter)
+        if adapter and adapter ==  socket.LWIP_ETH then
+            break
+        end
+    end
+    sys.wait(500)
+
+    iperf.server(socket.LWIP_ETH)
+
+    while 1 do
+        sys.wait(6000)
+        -- local code, headers, body = http.request("GET", "http://httpbin.air32.cn/bytes/4096", nil, nil, {adapter=socket.LWIP_ETH}).wait()
+        local code, headers, body = http.request("GET", "http://www.baidu.com/", nil, nil, {adapter=socket.LWIP_ETH}).wait()
+        log.info("http", code, headers, body and #body)
+        log.info("lua", rtos.meminfo())
+        log.info("sys", rtos.meminfo("sys"))
+    end
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 85 - 0
luat/demo/airlink/air8000_LAN_WAN/air8000_LAN/main.lua

@@ -0,0 +1,85 @@
+
+-- 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)
+
+
+sys.subscribe("PING_RESULT", function(id, time, dst)
+    log.info("ping", id, time, dst);
+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.wait(3000)
+    log.info("socket", "ip",socket.localIP(socket.LWIP_ETH))
+
+    
+    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
+
+        -- for i = 0, 2, 1 do
+        --     local ip = "192.168.5." .. (i+100)
+        --     icmp.ping(socket.LWIP_AP, ip)
+        --     sys.waitUntil("PING_RESULT", 3000)
+        -- end
+        -- sys.wait(1000)
+
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!