[Feature][T108][WIFI][task-view-1467]Adding gsw_wifi_get_interface_mac returns support for a length of 18U and adds some logs

Only Configure: No
Affected branch: GSW_V1453
Affected module: WIFI
Is it affected on IC: only ASR
Self-test: yes
Doc Update: no

Change-Id: I24a358e06538e7c5a7e134fdbbcf963b82561bd2
diff --git a/mbtk/libgsw_lib/gsw_wifi_interface_sdk.c b/mbtk/libgsw_lib/gsw_wifi_interface_sdk.c
index 89a593e..ed03af1 100644
--- a/mbtk/libgsw_lib/gsw_wifi_interface_sdk.c
+++ b/mbtk/libgsw_lib/gsw_wifi_interface_sdk.c
@@ -130,14 +130,21 @@
 
 typedef void (*mbtk_log)(int level, const char *format, ...);
 static mbtk_log fun_ptr_log = NULL;
-void *dlHandle_wifi = NULL;
-char *lynqLib_wifi = "/lib/libmbtk_lib.so";
+static void *dlHandle_wifi = NULL;
+static void (*mbtk_log_init)(char *path, char *tag);
+#define LIB_PATH "/lib/libmbtk_lib.so"
 
 static int handle()
 {
     if (dlHandle_wifi == NULL || fun_ptr_log == NULL)
     {
-        dlHandle_wifi = dlopen(lynqLib_wifi, RTLD_NOW);
+        dlHandle_wifi = dlopen(LIB_PATH, RTLD_NOW);
+        if(dlHandle_wifi == NULL)
+        {
+            return GSW_HAL_NORMAL_FAIL;
+        }
+        mbtk_log_init = (void (*)(char *path, char *tag))dlsym(dlHandle_wifi, "mbtk_log_init");
+        mbtk_log_init("radio", "MBTK_RIL");
         fun_ptr_log = (mbtk_log)dlsym(dlHandle_wifi, "mbtk_log");
         if (fun_ptr_log == NULL || dlHandle_wifi == NULL)
         {
@@ -232,6 +239,7 @@
 {
     if (handle())
         return GSW_HAL_NORMAL_FAIL;
+    LOGI("gsw_wifi_ap_start\n");
     // 强制终止所有hostapd进程(关键新增:避免残留进程占用资源)
     execute_command("killall -9 hostapd >/dev/null 2>&1"); // 9信号强制终止
     sleep(1);                                              // 等待进程完全退出
@@ -286,6 +294,7 @@
             return GSW_HAL_NORMAL_FAIL;
         }
     }
+    LOGI("gsw_wifi_ap_start ret = %d\n", status);
     return status;
 }
 
@@ -328,6 +337,7 @@
         return GSW_HAL_SUCCESS;
     }
 
+    LOGI("Hostapd is running, stop it.\n");
     // 先停止事件监听线程
     /*if (ap_event_context.running)
     {
@@ -353,7 +363,7 @@
             LOGE("Failed to remove hostapd control interface file");
         }
     }
-
+    LOGI("gsw_wifi_ap_stop ret = %d\n", status);
     return status;
 }
 
@@ -377,6 +387,7 @@
         }
     }
     ret = gsw_wifi_ap_start();
+    LOGI("gsw_wifi_ap_restart ret = %d\n", ret);
     return ret;
 }
 
@@ -395,6 +406,7 @@
         LOGE("SSID length must be 6-32 characters, current length: %zu", ssid_len);
         return GSW_HAL_NORMAL_FAIL;
     }
+    LOGI("AP set ssid: %s\n", ssid);
     // 读取现有配置
     if (read_file(HOSTAPD_CONF_PATH, buffer, sizeof(buffer)) == -1)
     {
@@ -502,6 +514,10 @@
 {
     if (handle())
         return GSW_HAL_NORMAL_FAIL;
+    if (ssid == NULL) {
+        LOGE("ssid cannot be NULL");
+        return GSW_HAL_NORMAL_FAIL;
+    }
     char buffer[1024] = {0};
     if (read_file(HOSTAPD_CONF_PATH, buffer, sizeof(buffer)) == -1)
     {
@@ -516,6 +532,7 @@
             *end = '\0';
         strncpy(ssid, ssid_line, MAX_SSID_LEN);
     }
+    LOGI("AP get ssid: %s\n", ssid);
     return GSW_HAL_SUCCESS;
 }
 
@@ -525,7 +542,7 @@
         return GSW_HAL_NORMAL_FAIL;
     char buffer[4096] = {0};
     char new_config[4096] = {0};
-
+    LOGI("AP set frequency: %d\n", gsw_wifi_frequency);
     gsw_wifi_bandwidth_type_e gsw_wifi_bandwidth;
     gsw_wifi_ap_bandwidth_get(&gsw_wifi_bandwidth);
     if (gsw_wifi_bandwidth == GSW_WIFI_BANDWIDTH_HT80 && gsw_wifi_frequency == 1)
@@ -574,6 +591,10 @@
 {
     if (handle())
         return GSW_HAL_NORMAL_FAIL;
+    if (gsw_wifi_frequency == NULL) {
+        LOGE("gsw_wifi_frequency cannot be NULL");
+        return GSW_HAL_NORMAL_FAIL;
+    }
     char buffer[1024] = {0};
     if (read_file(HOSTAPD_CONF_PATH, buffer, sizeof(buffer)) == -1)
     {
@@ -585,6 +606,7 @@
         mode_line += 8; // 跳过 "hw_mode="
         *gsw_wifi_frequency = (mode_line[0] == 'g') ? 1 : 2;
     }
+    LOGI("AP get frequency: %d\n", *gsw_wifi_frequency);
     return GSW_HAL_SUCCESS;
 }
 
@@ -594,7 +616,7 @@
         return GSW_HAL_NORMAL_FAIL;
     char buffer[4096] = {0};
     char new_config[4096] = {0};
-
+    LOGI("AP set bandwidth: %d\n", bandwidth);
     int current_freq;
     if (gsw_wifi_ap_frequency_get(&current_freq) != 0)
     {
@@ -795,7 +817,7 @@
     {
         *bandwidth = GSW_WIFI_BANDWIDTH_HT20;
     }
-
+    LOGI("AP get bandwidth: %d\n", *bandwidth);
     return GSW_HAL_SUCCESS;
 }
 
@@ -804,6 +826,7 @@
     if (handle())
         return GSW_HAL_NORMAL_FAIL;
     // 新增频率和信道校验
+    LOGI("AP set channel: %d\n", channel);
     int current_freq;
     if (gsw_wifi_ap_frequency_get(&current_freq) != 0)
     {
@@ -927,6 +950,7 @@
         channel_line += 8; // 跳过 "channel="
         *channel = atoi(channel_line);
     }
+    LOGI("AP get channel: %d\n", *channel);
     return GSW_HAL_SUCCESS;
 }
 
@@ -942,7 +966,7 @@
     {
         return GSW_HAL_NORMAL_FAIL;
     }
-
+    LOGI("AP set auth: %d\n", auth);
     char *line = strtok(buffer, "\n");
     while (line)
     {
@@ -1147,6 +1171,7 @@
     {
         *auth = GSW_WIFI_AUTH_OPEN; // 默认开放模式
     }
+    LOGI("AP get auth: %d\n", *auth);
     return GSW_HAL_SUCCESS;
 }
 
@@ -1161,6 +1186,7 @@
         LOGE("Password cannot be NULL");
         return GSW_HAL_NORMAL_FAIL;
     }
+    LOGI("AP set password\n");
     size_t pass_len = strlen(password);
     if (pass_len < MIN_PASSWORD_LEN || pass_len > MAX_PASSWORD_LEN) {
         LOGE("Password length must be 8-63 characters, current length: %zu", pass_len);
@@ -1243,7 +1269,7 @@
     // 复制密码
     strncpy(password, passphrase_line, MAX_PASSWORD_LEN);
     password[MAX_PASSWORD_LEN] = '\0'; // 确保终止
-
+    LOGI("AP get password\n");
     return GSW_HAL_SUCCESS;
 }
 
@@ -1301,6 +1327,7 @@
 {
     if (handle())
         return GSW_HAL_NORMAL_FAIL;
+    LOGI("Starting wpa_supplicant...\n");
     // 更新 wpa_supplicant 配置文件
     if (update_wpa_supplicant_conf() != 0)
     {
@@ -1318,6 +1345,7 @@
     memset(cmd, 0, sizeof(cmd));
     snprintf(cmd, sizeof(cmd), "wpa_cli -i %s scan_results > /dev/null", WLAN_STA_DEV);
     execute_command(cmd);
+    LOGI("wpa_supplicant starting success\n");
     return status;
 }
 
@@ -1325,6 +1353,7 @@
 {
     if (handle())
         return GSW_HAL_NORMAL_FAIL;
+    LOGI("Stopping wpa_supplicant...\n");
     if (is_wpa_supplicant_running() != 0)
     {
         LOGI("wpa_supplicant is not running, no need to stop.\n");
@@ -1333,6 +1362,7 @@
 
     char cmd[MAX_COMMAND_LEN];
     snprintf(cmd, sizeof(cmd), "killall wpa_supplicant");
+    LOGI("Stoping success\n");
     return execute_command(cmd);
 }
 
@@ -1374,6 +1404,7 @@
     pclose(output);
     buffer[strcspn(buffer, "\n")] = '\0';
     strncpy(sta_ssid, buffer, MAX_SSID_LEN);
+    LOGI("SSID: %s\n", sta_ssid);
     return GSW_HAL_SUCCESS;
 }
 
@@ -1428,6 +1459,7 @@
         LOGI("Unknown authentication type: %s. Assuming WPA2-PSK.\n", buffer);
         *auth = GSW_WIFI_AUTH_WPA2_PSK;
     }
+    LOGI("Authentication type: %s\n", buffer);
     return GSW_HAL_SUCCESS;
 }
 
@@ -1655,8 +1687,12 @@
         return GSW_HAL_NORMAL_FAIL;
     }
     pclose(output);
-    buffer[strcspn(buffer, "\n")] = '\0';
-    strncpy(mac, buffer, MAX_MAC_LEN);
+    buffer[strcspn(buffer, "\n")] = '\0';  // 移除换行符
+    
+    // 关键修改:确保MAC地址仅保留17位有效字符(标准MAC格式为xx:xx:xx:xx:xx:xx,共17字符)
+    strncpy(mac, buffer, 17);  // 限制复制17个字符
+    mac[17] = '\0';  // 显式添加字符串结束符
+    
     return GSW_HAL_SUCCESS;
 }
 
@@ -1920,7 +1956,7 @@
     // 保存上一次的设备MAC地址列表
     char prev_macs[GSW_WIFI_AP_DEVICE_NUM][32] = {0};
     int prev_count = 0;
-    while (ap_event_context.running)
+    while (ap_event_context.running && ap_event_context.gsw_cb)
     {
         if (is_hostapd_running() != 0)
         {
@@ -2011,10 +2047,20 @@
 {
     if (handle())
         return GSW_HAL_NORMAL_FAIL;
+    LOGI("%s - start.\n",__func__);
     if (ap_event_context.running)
     {
         return GSW_HAL_NORMAL_FAIL; // 已经注册了回调
     }
+    if (arg == NULL)
+    {
+        LOGE("%s - arg is NULL.\n",__func__);
+    }
+    if (gsw_cb == NULL)
+    {
+        LOGE("%s - gsw_cb is NULL.\n",__func__);
+        return GSW_HAL_NORMAL_FAIL; // 回调函数不能为空
+    }
     ap_event_context.arg = arg;
     ap_event_context.gsw_cb = gsw_cb;
     ap_event_context.running = 1;
@@ -2023,6 +2069,7 @@
         ap_event_context.running = 0;
         return GSW_HAL_NORMAL_FAIL;
     }
+    LOGI("%s - end.\n",__func__);
     return GSW_HAL_SUCCESS;
 }
 
@@ -2036,6 +2083,7 @@
 {
     if (handle())
         return GSW_HAL_NORMAL_FAIL;
+    LOGI("%s - start.\n",__func__);
     ap_event_context.running = 0;
 
     // 检查线程是否存在
@@ -2050,6 +2098,7 @@
 
     ap_event_context.arg = NULL;
     ap_event_context.gsw_cb = NULL;
+    LOGI("%s - end.\n",__func__);
     return GSW_HAL_SUCCESS;
 }
 
@@ -2101,6 +2150,7 @@
 {
     if (handle())
         return GSW_HAL_NORMAL_FAIL;
+    LOGI("%s - start.\n",__func__);
     if (execute_command("echo 1 > /sys/devices/platform/mbtk-sdh/pwr_ctrl") != 0)
     {
         return GSW_HAL_NORMAL_FAIL;
@@ -2145,7 +2195,7 @@
     {
         LOGI("aic8800_fdrv has insmod.\n");
     }
-
+    LOGI("%s - end.\n",__func__);
     return GSW_HAL_SUCCESS;
 }
 
@@ -2158,6 +2208,7 @@
 {
     if (handle())
         return GSW_HAL_NORMAL_FAIL;
+    LOGI("%s - start.\n",__func__);
     if (is_module_loaded("aic8800_fdrv"))
     {
         if (execute_command("rmmod aic8800_fdrv") != 0)
@@ -2198,5 +2249,6 @@
         return GSW_HAL_NORMAL_FAIL;
     }
     sleep(1);
+    LOGI("%s - end.\n",__func__);
     return GSW_HAL_SUCCESS;
 }
\ No newline at end of file