Преглед изворни кода

add: 自动修复wifi mac地址, 修复部分模块丢失mac地址后能联网但无法获取ip的情况

Wendal Chen пре 2 година
родитељ
комит
bf8ce130fe
1 измењених фајлова са 19 додато и 7 уклоњено
  1. 19 7
      platform/sys/wm_main.c

+ 19 - 7
platform/sys/wm_main.c

@@ -319,7 +319,6 @@ void task_start (void *data)
 	u8 enable = 0;
     u8 mac_addr[6] = {0x00, 0x25, 0x08, 0x09, 0x01, 0x0F};
     char unique_id [20] = {0};
-    tls_fls_read_unique_id(unique_id);
 
 #if TLS_CONFIG_CRYSTAL_24M
     tls_wl_hw_using_24m_crystal();
@@ -347,12 +346,9 @@ void task_start (void *data)
     tls_param_load_factory_default();
     tls_param_init(); /*add param to init sysparam_lock sem*/
 #endif
+    tls_fls_read_unique_id(unique_id);
 
 #ifdef LUAT_USE_NIMBLE
-	// TODO 注意, 除了启用LUAT_USE_NIMBTE外
-	// 1. 修改FreeRTOSConfig.h的configTICK_RATE_HZ为500, 并重新make lib
-	// 2. 若修改libblehost.a相关代码,需要手工复制bin目录下的文件,拷贝到lib目录. 
-
 	// 读蓝牙mac, 如果是默认值,就根据unique_id读取
 	uint8_t bt_mac[6];
 	// 缺省mac C0:25:08:09:01:10
@@ -373,16 +369,32 @@ void task_start (void *data)
     /*PARAM GAIN,MAC default*/
 #ifdef LUAT_USE_WLAN
 	tls_get_mac_addr(mac_addr);
-	if (!memcmp(mac_addr, default_mac, 6)) { // 看来是默认MAC, 那就改一下吧
+    int mac_ok = 1;
+    if (!memcmp(mac_addr, default_mac, 6)) {
+        mac_ok = 0;
+    }
+    else {
+        for (size_t i = 0; i < 6; i++)
+        {
+            if (mac_addr[i] == 0) {
+                mac_ok = 0;
+                break;
+            }
+        }
+        
+    }
+	if (!mac_ok) { // 看来是默认MAC, 那就改一下吧
+        printf("wifi mac addr NOT ok, auto fix\n");
 		if (unique_id[1] == 0x10){
 			memcpy(mac_addr, unique_id + 12, 6);
 		}
 		else {
 			memcpy(mac_addr, unique_id + 4, 6);
 		}
+        //printf("WIFI %02X:%02X:%02X:%02X:%02X:%02X\n", mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
 		tls_set_mac_addr(mac_addr);
 	}
-    //printf("WIFI %02X:%02X:%02X:%02X:%02X:%02X\n", mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
+    printf("WIFI %02X:%02X:%02X:%02X:%02X:%02X\n", mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
 
     tls_get_tx_gain(&tx_gain_group[0]);
     TLS_DBGPRT_INFO("tx gain ");