Browse Source

update: 完成airkiss和esptouch的消息回调

Wendal Chen 2 years ago
parent
commit
5030a496d4

+ 4 - 0
app/network/luat_wlan_air101.c

@@ -240,8 +240,12 @@ void luat_sc_callback(enum tls_wifi_oneshot_result_type type) {
     }
 }
 
+extern u8 gucssidData[];
+extern u8 gucpwdData[];
 int luat_wlan_smartconfig_start(int tp) {
     (void)tp;
+    gucssidData[0] = 0;
+    gucpwdData[0] = 0;
     tls_wifi_oneshot_result_cb_register(luat_sc_callback);
     return tls_wifi_set_oneshot_flag(1);
 }

+ 14 - 12
src/app/oneshotconfig/wm_oneshot_airkiss.c

@@ -11,9 +11,9 @@
 
 #if TLS_CONFIG_AIRKISS_MODE_ONESHOT
 
-#define AIRKISS_BSSID_CONNECT_ENABLE      1/* �ù�����Ҫʹ�ô�log�Ŀ� */
+#define AIRKISS_BSSID_CONNECT_ENABLE      1/* 该功能需要使用带log的库 */
 
-/* ���������� */
+/* 局域网发现 */
 #define TLS_CONFIG_AIRKISS_LAN            0
 
 /* airkiss debug switcher */
@@ -24,10 +24,10 @@
 #define ONESHOT_AIRKISS_AES_KEY           "winnermicro_wifi"
 #endif
 
-/* udp�㲥����Ŀ */
+/* udp广播包数目 */
 #define ONESHOT_AIRKISS_REPLY_CNT_MAX     50
 
-/* udp�㲥�˿� */
+/* udp广播端口 */
 #define ONESHOT_AIRKISS_REMOTE_PORT      10000
 
 #define ONESHOT_AIRKISS_SSID_LEN_MAX      32
@@ -72,7 +72,7 @@ void oneshot_airkiss_send_reply(void)
     {
         return ;
     }
-    /* 13.�����ɹ�֮����10000�˿ڹ㲥����udp���ģ�ͨ��һ�������Ѿ����óɹ� */
+    /* 13.加网成功之后,向10000端口广播发送udp报文,通告一键配置已经配置成功 */
     socket_num = socket(AF_INET, SOCK_DGRAM, 0);
     AIRKISS_PRINT("create skt %d: send udp broadcast to airkiss.\r\n", socket_num);
 
@@ -87,7 +87,7 @@ void oneshot_airkiss_send_reply(void)
         {
             break;
         }
-        /* ���ͽ��Ϊ����get_result����randomֵ��һ���ֽ�udp���ݰ� */
+        /* 发送结果为包含get_result所得random值的一个字节udp数据包 */
         sendto(socket_num, &random4reply, sizeof(random4reply), 0, (struct sockaddr*) &addr, sizeof(struct sockaddr_in));
         tls_os_time_delay(50);
     }
@@ -101,7 +101,6 @@ void oneshot_airkiss_send_reply(void)
 
 extern u8 gucssidData[];
 extern u8 gucpwdData[];
-void luat_sc_callback(enum tls_wifi_oneshot_result_type type);
 static void oneshot_airkiss_finish_new(u8 *ssid, u8 ssid_len, u8 *pwd, u8 pwd_len,  u8 *bssid, u8 randomnum)
 {
     int ret =  - 1;
@@ -116,12 +115,15 @@ static void oneshot_airkiss_finish_new(u8 *ssid, u8 ssid_len, u8 *pwd, u8 pwd_le
 
     if (WM_SUCCESS != ret)
     {
+        gucssidData[0] = 0;
+        gucpwdData[0] = 0;
         AIRKISS_PRINT("failed to connect net, airkiss join net failed.\r\n");
     }
     else {
         memcpy(gucssidData, ssid, ssid_len);
         memcpy(gucpwdData, pwd, pwd_len);
-        luat_sc_callback(WM_WIFI_ONESHOT_TYPE_SSIDPWD);
+        gucssidData[ssid_len] = 0;
+        gucpwdData[pwd_len] = 0;
     }
     return ;
 }
@@ -293,7 +295,7 @@ void tls_airkiss_recv_new(u8 *pdata, u8 *data, u16 data_len)
     switch (airkiss_step_mark)
     {
         case 0:
-            /*ͬ��*/
+            /*同步*/
             //if (isfromds == 0)
             {
                 if (frm_len <= 85)
@@ -387,7 +389,7 @@ void tls_airkiss_recv_new(u8 *pdata, u8 *data, u16 data_len)
             break;
 
         case 1:
-            /*��ȡ�����ݳ��Ⱥ�SSID CRCֵ*/
+            /*获取总数据长度和SSID CRC值*/
             if ((frm_len >= (stairkissdata->airkiss_base_len)) && (frm_len <= (0x3F + stairkissdata->airkiss_base_len)))
             {
                 if (ieee80211_has_retry(hdr->frame_control) && (stairkissdata->seqnum[isfromds] == hdr->seq_ctrl))
@@ -482,7 +484,7 @@ void tls_airkiss_recv_new(u8 *pdata, u8 *data, u16 data_len)
             }
             break;
         case 2:
-            // if (airkiss_step_mark == 2)	    /*��ȡPWD����,PWD CRC*/
+            // if (airkiss_step_mark == 2)	    /*获取PWD长度,PWD CRC*/
             {
                 if ((frm_len >= (0x40 + stairkissdata->airkiss_base_len)) && (frm_len <= (0x7F + stairkissdata->airkiss_base_len)))
                 {
@@ -606,7 +608,7 @@ void tls_airkiss_recv_new(u8 *pdata, u8 *data, u16 data_len)
                                 index = stairkissdata->akdata[isfromds][1];
                                 if ((index >= stairkissdata->airkiss_total_index) || (stairkissdata->airkiss_all_data_bit[isfromds]&(1UL << index)))
                                 {
-                                    stairkissdata->akdatacnt[isfromds] = 0; /*�����ѽ��ջ�����ų�������ŵģ���������*/
+                                    stairkissdata->akdatacnt[isfromds] = 0; /*对于已接收或者序号超过总序号的,重新来收*/
                                     break;
                                 }
                             }

+ 9 - 30
src/app/oneshotconfig/wm_oneshot_esp.c

@@ -39,7 +39,8 @@ u8 esp_temp_lock = 0;
 struct esp_data_t esp_data[120];
 struct esp_param_t esp_param;
 
-
+extern u8 gucssidData[];
+extern u8 gucpwdData[];
 
 void esp_crc8_table_init(void)
 {
@@ -132,7 +133,7 @@ int tls_esp_recv(u8 *buf, u16 data_len)
 
 	multicast = ieee80211_get_DA(hdr);
 
-	if(hdr->duration_id & 0x02)		//normal mode stbc������
+	if(hdr->duration_id & 0x02)		//normal mode stbc不处理
 	{
 		return ESP_ONESHOT_CONTINUE;
 	}
@@ -222,10 +223,10 @@ int tls_esp_recv(u8 *buf, u16 data_len)
 				for(i=1; i<=3; i++)
 				{
 					if(guide_len > esp_head[tods][i])
-						guide_len = esp_head[tods][i];								//ȡ��ͬ��ͷ����Сֵ					
+						guide_len = esp_head[tods][i];								//取出同步头中最小值					
 				}
-				esp_state = 1;														//ͬ�����, ����ԴMAC���ŵ�
-				esp_data_datum = guide_len - ESP_GUIDE_DATUM + ESP_DATA_OFFSET;		//��ȡ����׼����
+				esp_state = 1;														//同步完成, 锁定源MAC和信道
+				esp_data_datum = guide_len - ESP_GUIDE_DATUM + ESP_DATA_OFFSET;		//获取到基准长度
 				if(esp_printf)
 					esp_printf("esp lock:%d\n", esp_data_datum);	
 				return ESP_ONESHOT_CHAN_LOCKED;
@@ -302,7 +303,7 @@ int tls_esp_recv(u8 *buf, u16 data_len)
 			}
 			if(esp_data[0].used)
 			{
-				if(esp_data_cnt >= esp_data[0].data + 6)		//�������У�飬CRCУ���
+				if(esp_data_cnt >= esp_data[0].data + 6)		//计算异或校验,CRC校验等
 				{
 					if(esp_printf)
 						esp_printf("here1\n");
@@ -312,7 +313,7 @@ int tls_esp_recv(u8 *buf, u16 data_len)
 					{
 						totalXor ^= esp_data[i].data;
 					}
-					if(totalXor != 0)							//��������
+					if(totalXor != 0)							//异或校验错误
 					{
 						if(esp_printf)
 							esp_printf("totalXor err\n");
@@ -416,7 +417,7 @@ int tls_esp_recv(u8 *buf, u16 data_len)
 									totalXor ^= esp_param.ssid[i];
 								}
 								
-								if(totalXor != 0)							//��������
+								if(totalXor != 0)							//异或校验错误
 								{
 									if(esp_printf)
 										esp_printf("totalXor err\n");
@@ -463,25 +464,3 @@ void tls_esp_init(u8 *scanBss)
 	if(esp_printf)
 		esp_printf("tls_esp_init\n");
 }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 12 - 3
src/app/oneshotconfig/wm_wifi_oneshot.c

@@ -611,6 +611,11 @@ static void oneshot_esp_finish(void)
 		tls_wifi_set_oneshot_flag(0);
 		tls_wifi_connect(esp_param.ssid, esp_param.ssid_len, esp_param.pwd, esp_param.pwd_len);
     }
+								
+    memcpy(gucssidData, esp_param.ssid, esp_param.ssid_len);
+    memcpy(gucpwdData, esp_param.pwd, esp_param.pwd_len);
+	gucssidData[esp_param.ssid_len] = 0;
+    gucpwdData[esp_param.pwd_len] = 0;
 }
 
 int tls_wifi_esp_oneshot_special(u8 *data, u16 data_len)
@@ -1412,9 +1417,7 @@ void tls_oneshot_task_handle(void *arg)
 			g_oneshot_dur_time = tls_os_get_time();
 #endif
             wifi_change_chanel(airwifichan[chanCnt], airchantype[chanCnt]);
-			printf("tls_oneshot_callback_start 1\n");
 			tls_oneshot_callback_start();
-			printf("tls_oneshot_callback_start 2\n");
 
             tls_wifi_data_recv_cb_register((tls_wifi_data_recv_callback)tls_wifi_dataframe_recv);
 			tls_wl_plcp_cb_register((tls_wifi_data_recv_callback)tls_wifi_dataframe_recv);
@@ -1587,7 +1590,13 @@ void tls_oneshot_task_handle(void *arg)
 #endif
 				}
            }
-
+			if (gpfResult) {
+				// printf("CALL gpfResult\n");
+				gpfResult(WM_WIFI_ONESHOT_TYPE_SSIDPWD);
+			}
+			else {
+				// printf("gpfResult is NULL\n");
+			}
            break;
 
 #if TLS_CONFIG_AP_MODE_ONESHOT