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

add: airlink,支持读取sta_ap的bssid和rssi

Wendal Chen 9 месяцев назад
Родитель
Сommit
ba8676b9fb

+ 2 - 2
components/airlink/src/exec/luat_airlink_cmd_exec_info.c

@@ -20,7 +20,7 @@
 #define LUAT_LOG_TAG "airlink"
 #include "luat_log.h"
 
-luat_airlink_dev_info_t airlink_ext_dev_info;
+luat_airlink_dev_info_t g_airlink_ext_dev_info;
 
 __USER_FUNC_IN_RAM__ int luat_airlink_cmd_exec_dev_info(luat_airlink_cmd_t* cmd, void* userdata) {
     luat_airlink_dev_info_t* dev = cmd->data;
@@ -30,7 +30,7 @@ __USER_FUNC_IN_RAM__ int luat_airlink_cmd_exec_dev_info(luat_airlink_cmd_t* cmd,
     if (dev->tp == 0) {
         return 0;
     }
-    memcpy(&airlink_ext_dev_info, dev, sizeof(luat_airlink_dev_info_t));
+    memcpy(&g_airlink_ext_dev_info, dev, sizeof(luat_airlink_dev_info_t));
     if (dev->tp == 1) {
         // WIFI设备
         // 首先, 把MAC地址打印出来

+ 20 - 3
components/drv/src/luat_drv_wlan.c

@@ -7,6 +7,8 @@
 #include "luat/drv_wlan.h"
 #include "luat_network_adapter.h"
 #include "luat_netdrv.h"
+#include "lwip/ip_addr.h"
+#include "lwip/netif.h"
 
 #define LUAT_LOG_TAG "drv.gpio"
 #include "luat_log.h"
@@ -14,6 +16,8 @@
 // #undef LLOGD
 // #define LLOGD(...) 
 
+extern luat_airlink_dev_info_t g_airlink_ext_dev_info;
+
 int luat_drv_wlan_init(luat_wlan_config_t *conf) {
     return luat_airlink_drv_wlan_init(conf);
 }
@@ -84,15 +88,28 @@ int luat_drv_wlan_get_ps(void) {
 }
 
 int luat_drv_wlan_get_ap_bssid(char* buff) {
-    return -1;
+    if (g_airlink_ext_dev_info.wifi.sta_state == 0) {
+        buff[0] = 0;
+        return -1;
+    }
+    memcpy(buff, g_airlink_ext_dev_info.wifi.sta_ap_bssid, 6);
+    return 0;
 }
 
 int luat_drv_wlan_get_ap_rssi(void) {
-    return -1;
+    if (g_airlink_ext_dev_info.wifi.sta_state == 0) {
+        return 0;
+    }
+    return g_airlink_ext_dev_info.wifi.sta_ap_rssi;
 }
 
 int luat_drv_wlan_get_ap_gateway(char* buff) {
-    return -1;
+    luat_netdrv_t* drv = luat_netdrv_get(NW_ADAPTER_INDEX_LWIP_WIFI_STA);
+    if (drv == NULL || drv->netif == NULL) {
+        return 0;
+    }
+    ipaddr_ntoa_r(&drv->netif->gw, buff, 16);
+    return 0;
 }
 
 

+ 16 - 1
components/wlan/luat_lib_wlan.c

@@ -500,19 +500,34 @@ log.info("wlan", "info", json.encode(wlan.getInfo()))
 static int l_wlan_get_info(lua_State *L) {
     uint8_t buff[48] = {0};
     char buff2[32] = {0};
+    int rssi = 0;
     lua_newtable(L);
 
+    #ifdef LUAT_USE_DRV_WLAN
+    luat_drv_wlan_get_ap_bssid((char*)buff);
+    #else
     luat_wlan_get_ap_bssid((char*)buff);
+    #endif
     sprintf_(buff2, "%02X%02X%02X%02X%02X%02X", buff[0], buff[1], buff[2], buff[3], buff[4], buff[5]);
     lua_pushstring(L, buff2);
     lua_setfield(L, -2, "bssid");
 
     memset(buff, 0, 48);
+    #ifdef LUAT_USE_DRV_WLAN
+    luat_drv_wlan_get_ap_gateway((char*)buff);
+    #else
     luat_wlan_get_ap_gateway((char*)buff);
+    #endif
     lua_pushstring(L, (const char*)buff);
     lua_setfield(L, -2, "gw");
 
-    lua_pushinteger(L, luat_wlan_get_ap_rssi());
+    #ifdef LUAT_USE_DRV_WLAN
+    rssi = luat_drv_wlan_get_ap_rssi();
+    #else
+    rssi = luat_wlan_get_ap_rssi();
+    #endif
+
+    lua_pushinteger(L, rssi);
     lua_setfield(L, -2, "rssi");
 
     return 1;