[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(¤t_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(¤t_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