Explorar o código

add: socket,新增LWIP_GP_GW,新增mobile相关的exec指令,对原有的exec_info用宏进行隔离

Wendal Chen hai 7 meses
pai
achega
51e12622a5

+ 29 - 0
components/airlink/src/exec/luat_airlink_cmd_exec_info.c

@@ -39,6 +39,7 @@ __USER_FUNC_IN_RAM__ int luat_airlink_cmd_exec_dev_info(luat_airlink_cmd_t* cmd,
         // wifi固件比4G固件更新的, 那就抛弃掉后面的数据
     }
     memcpy(&g_airlink_ext_dev_info, dev, len);
+    #ifdef LUAT_USE_DRV_WLAN
     if (dev->tp == 1) {
         // WIFI设备
         // 首先, 把MAC地址打印出来
@@ -113,5 +114,33 @@ __USER_FUNC_IN_RAM__ int luat_airlink_cmd_exec_dev_info(luat_airlink_cmd_t* cmd,
             }
         }
     }
+    #endif
+    #ifdef LUAT_USE_DRV_MOBILE
+    if (dev->tp == 2) { // 4G设备
+        // 根据网络状态, 发出IP_READY/IP_LOSE事件
+        drv = luat_netdrv_get(NW_ADAPTER_INDEX_LWIP_GP_GW);
+        if (drv == NULL || drv->netif == NULL) {
+            // GP代理网卡没有找到, 可能是没有初始化
+            return 0;
+        }
+        // 1是已注册, 5是漫游且已注册
+        if (dev->cat1.cat_state != 1 && dev->cat1.cat_state != 5) {
+            // 掉线了
+            if (netif_is_up(drv->netif)) {
+                // 网卡掉线了哦
+                LLOGD("4G网卡掉线了");
+                luat_netdrv_whale_ipevent(drv, 0);
+            }
+        }
+        else {
+            // 上线了
+            if (netif_is_up(drv->netif) == 0) {
+                // 网卡上线了哦
+                LLOGD("4G网卡上线了");
+                luat_netdrv_whale_ipevent(drv, 1);
+            }
+        }
+    }
+    #endif
     return 0;
 }

+ 13 - 0
components/airlink/src/luat_airlink_cmds.c

@@ -85,6 +85,12 @@ CMD_DEFINE(pm_wakeup_pin);
 CMD_DEFINE(pwm_setup);
 CMD_DEFINE(pwm_close);
 
+// MOBILE指令, 0x800开始
+CMD_DEFINE(mobile_imei);
+CMD_DEFINE(mobile_imsi);
+CMD_DEFINE(mobile_iccid);
+CMD_DEFINE(mobile_muid);
+
 __USER_FUNC_IN_RAM__ const luat_airlink_cmd_reg_t airlink_cmds[] = {
     // 最常用的放前面
     CMD_REG(0x10,  dev_info),
@@ -162,6 +168,13 @@ __USER_FUNC_IN_RAM__ const luat_airlink_cmd_reg_t airlink_cmds[] = {
     CMD_REG(0x701, pwm_close),
 #endif
 
+#ifdef LUAT_USE_AIRLINK_EXEC_MOBILE
+    CMD_REG(0x800, mobile_imei),
+    CMD_REG(0x801, mobile_imsi),
+    CMD_REG(0x802, mobile_iccid),
+    CMD_REG(0x803, mobile_muid),
+#endif
+
     CMD_REG(0x21, nop),
     {0, NULL}
 };

+ 2 - 0
components/network/adapter/luat_lib_socket.c

@@ -1365,6 +1365,8 @@ static const rotable_Reg_t reg_socket_adapter[] =
 	//@const LWIP_USER7 number 使用LWIP协议栈的自定义网卡7, 2025.1.12新增
 	{ "LWIP_USER7",          	ROREG_INT(NW_ADAPTER_INDEX_LWIP_USER7)},
 	
+	//@const LWIP_GP_GW number 4G代理网关
+	{ "LWIP_GP_GW",          	ROREG_INT(NW_ADAPTER_INDEX_LWIP_GP_GW)},
 
 	{ NULL,            		ROREG_INT(0)}
 };

+ 1 - 0
components/network/adapter/luat_network_adapter.h

@@ -104,6 +104,7 @@ enum
 	NW_ADAPTER_INDEX_LWIP_USER5,
 	NW_ADAPTER_INDEX_LWIP_USER6,
 	NW_ADAPTER_INDEX_LWIP_USER7,
+	NW_ADAPTER_INDEX_LWIP_GP_GW,
 	NW_ADAPTER_INDEX_LWIP_NETIF_QTY,
 	NW_ADAPTER_INDEX_HW_PS_DEVICE = NW_ADAPTER_INDEX_LWIP_NETIF_QTY,
 	NW_ADAPTER_INDEX_ETH0 = NW_ADAPTER_INDEX_HW_PS_DEVICE,	//外挂以太网+硬件协议栈