@@ -33,15 +33,23 @@ typedef struct {
3333 int (* config_stop )(void );
3434} WiFiConfigMethod ;
3535
36+ static int _qr_code_config_start (void * json , WifiConfigEventCallBack callback )
37+ {
38+ int rc = qiot_comm_parse_json_token ((const char * )json );
39+ callback (rc == 1 ? RESULT_WIFI_CONFIG_SUCCESS : RESULT_WIFI_CONFIG_FAILED , NULL );
40+ return !(rc == 1 );
41+ }
42+
3643static WiFiConfigMethod sg_wifi_config_methods [] = {
37- {HAL_SoftApProvision_Start , HAL_SoftApProvision_Stop }, // WIFI_CONFIG_TYPE_SOFT_AP
38- {HAL_SmartConfig_Start , HAL_SmartConfig_Stop }, // WIFI_CONFIG_TYPE_SMART_CONFIG
39- {HAL_AirkissConfig_Start , HAL_AirkissConfig_Stop }, // WIFI_CONFIG_TYPE_AIRKISS
40- {HAL_SimpleConfig_Start , HAL_SimpleConfig_Stop }, // WIFI_CONFIG_TYPE_SIMPLE_CONFIG
41- {HAL_BTComboConfig_Start , HAL_BTComboConfig_Stop } // WIFI_CONFIG_TYPE_BTCombo_CONFIG
44+ [WIFI_CONFIG_TYPE_SOFT_AP ] = {HAL_SoftApProvision_Start , HAL_SoftApProvision_Stop },
45+ [WIFI_CONFIG_TYPE_SMART_CONFIG ] = {HAL_SmartConfig_Start , HAL_SmartConfig_Stop },
46+ [WIFI_CONFIG_TYPE_AIRKISS ] = {HAL_AirkissConfig_Start , HAL_AirkissConfig_Stop },
47+ [WIFI_CONFIG_TYPE_SIMPLE_CONFIG ] = {HAL_SimpleConfig_Start , HAL_SimpleConfig_Stop },
48+ [WIFI_CONFIG_TYPE_BT_COMBO ] = {HAL_BTComboConfig_Start , HAL_BTComboConfig_Stop },
49+ [WIFI_CONFIG_TYPE_QR_CODE ] = {_qr_code_config_start , NULL },
4250};
4351
44- static WiFiConfigMethod * sg_wifi_config_method_now = NULL ;
52+ static WiFiConfigMethod * sg_wifi_config_method_now = NULL ;
4553static WifiConfigResultCallBack sg_wifi_config_result_cb = NULL ;
4654
4755static void _qiot_wifi_config_event_cb (eWiFiConfigEvent event , void * usr_data )
@@ -86,30 +94,25 @@ static void _qiot_wifi_config_event_cb(eWiFiConfigEvent event, void *usr_data)
8694int qiot_wifi_config_start (eWiFiConfigType type , void * params , WifiConfigResultCallBack result_cb )
8795{
8896 memset (& g_publish_token_info , 0 , sizeof (publish_token_info_t ));
89- if (type < WIFI_CONFIG_TYPE_SOFT_AP || type > WIFI_CONFIG_TYPE_BT_COMBO ) {
90- Log_e ("Unknown wifi config type!" );
91- return ERR_UNKNOWN_WIFI_CONFIG_TYPE ;
92- } else {
93- switch (type ) {
94- case WIFI_CONFIG_TYPE_SOFT_AP :
95- strncpy (g_publish_token_info .pairTime .type , "SoftAP" , MAX_TYPE_LENGTH );
96- break ;
97- case WIFI_CONFIG_TYPE_AIRKISS :
98- strncpy (g_publish_token_info .pairTime .type , "AirKiss" , MAX_TYPE_LENGTH );
99- break ;
100- case WIFI_CONFIG_TYPE_SMART_CONFIG :
101- strncpy (g_publish_token_info .pairTime .type , "SmartConfig" , MAX_TYPE_LENGTH );
102- break ;
103- case WIFI_CONFIG_TYPE_SIMPLE_CONFIG :
104- strncpy (g_publish_token_info .pairTime .type , "SimpleConfig" , MAX_TYPE_LENGTH );
105- break ;
106- case WIFI_CONFIG_TYPE_BT_COMBO :
107- strncpy (g_publish_token_info .pairTime .type , "BTCombo" , MAX_TYPE_LENGTH );
108- break ;
109- default :
110- strncpy (g_publish_token_info .pairTime .type , "Unknow" , MAX_TYPE_LENGTH );
111- break ;
112- }
97+ switch (type ) {
98+ case WIFI_CONFIG_TYPE_SOFT_AP :
99+ strncpy (g_publish_token_info .pairTime .type , "SoftAP" , MAX_TYPE_LENGTH );
100+ break ;
101+ case WIFI_CONFIG_TYPE_AIRKISS :
102+ strncpy (g_publish_token_info .pairTime .type , "AirKiss" , MAX_TYPE_LENGTH );
103+ break ;
104+ case WIFI_CONFIG_TYPE_SMART_CONFIG :
105+ strncpy (g_publish_token_info .pairTime .type , "SmartConfig" , MAX_TYPE_LENGTH );
106+ break ;
107+ case WIFI_CONFIG_TYPE_SIMPLE_CONFIG :
108+ strncpy (g_publish_token_info .pairTime .type , "SimpleConfig" , MAX_TYPE_LENGTH );
109+ break ;
110+ case WIFI_CONFIG_TYPE_BT_COMBO :
111+ strncpy (g_publish_token_info .pairTime .type , "BTCombo" , MAX_TYPE_LENGTH );
112+ break ;
113+ default :
114+ strncpy (g_publish_token_info .pairTime .type , "Unknow" , MAX_TYPE_LENGTH );
115+ break ;
113116 }
114117
115118 if (init_dev_log_queue ()) {
@@ -137,7 +140,7 @@ int qiot_wifi_config_start(eWiFiConfigType type, void *params, WifiConfigResultC
137140 return ERR_WIFI_CONFIG_START_FAILED ;
138141 }
139142
140- #if !WIFI_PROV_BT_COMBO_CONFIG_ENABLE
143+ #if !WIFI_PROV_BT_COMBO_CONFIG_ENABLE && ! WIFI_PROV_QR_CODE_CONFIG_ENABLE
141144 if (qiot_comm_service_start ()) {
142145 sg_wifi_config_method_now -> config_stop ();
143146 sg_wifi_config_method_now = NULL ;
0 commit comments