删除easylink相关代码, 保存连接成功的wifi和密码. 下次直接连接不开ap

This commit is contained in:
zogodo
2019-09-25 22:49:57 +08:00
parent 61734eddf6
commit ad33beaf2b
3 changed files with 28 additions and 58 deletions

View File

@@ -16,8 +16,8 @@ uint32_t total_time = 0;
char strMac[16] = { 0 }; char strMac[16] = { 0 };
uint32_t power = 0; uint32_t power = 0;
system_config_t * sys_config; system_config_t* sys_config;
user_config_t * user_config; user_config_t* user_config;
char socket_status[32] = { 0 }; char socket_status[32] = { 0 };
mico_gpio_t Relay[Relay_NUM] = { Relay_0, Relay_1, Relay_2, Relay_3, Relay_4, Relay_5 }; mico_gpio_t Relay[Relay_NUM] = { Relay_0, Relay_1, Relay_2, Relay_3, Relay_4, Relay_5 };
@@ -83,7 +83,7 @@ int application_start(void)
// } // }
/* Create mico system context and read application's config data from flash */ /* Create mico system context and read application's config data from flash */
sys_config = mico_system_context_init(sizeof(user_config_t)); sys_config = mico_system_context_init(sizeof(user_config_t));
user_config = ((system_context_t *) sys_config)->user_config_data; user_config = ((system_context_t*)sys_config)->user_config_data;
require_action(user_config, exit, err = kNoMemoryErr); require_action(user_config, exit, err = kNoMemoryErr);
err = mico_system_init(sys_config); err = mico_system_init(sys_config);
@@ -92,8 +92,8 @@ int application_start(void)
MicoGpioInitialize((mico_gpio_t) Button, INPUT_PULL_UP); MicoGpioInitialize((mico_gpio_t) Button, INPUT_PULL_UP);
if (!MicoGpioInputGet(Button)) if (!MicoGpioInputGet(Button))
{ //开机时按钮状态 { //开机时按钮状态
os_log("wifi_start_easylink"); os_log("press ap_init");
wifi_status = WIFI_STATE_NOEASYLINK; //wifi_init中启动easylink ap_init();
} }
MicoGpioInitialize((mico_gpio_t) Led, OUTPUT_PUSH_PULL); MicoGpioInitialize((mico_gpio_t) Led, OUTPUT_PUSH_PULL);
@@ -146,11 +146,15 @@ int application_start(void)
// } // }
// } // }
if (user_config->last_wifi_status != NOTIFY_STATION_UP) wifi_init();
if (sys_config->micoSystemConfig.reserved != NOTIFY_STATION_UP)
{ {
ap_init(); ap_init();
} }
wifi_init(); else
{
wifi_connect(sys_config->micoSystemConfig.ssid, sys_config->micoSystemConfig.user_key);
}
user_udp_init(); user_udp_init();
key_init(); key_init();
err = user_mqtt_init(); err = user_mqtt_init();

View File

@@ -31,36 +31,6 @@ static void wifi_connect_sys_config(void)
wifi_status = WIFI_STATE_FAIL; wifi_status = WIFI_STATE_FAIL;
} }
*/ */
void wifi_start_easylink()
{
wifi_status = WIFI_STATE_EASYLINK;
micoWlanStartEasyLink(20000);
user_led_set(1);
}
//easylink 完成回调
void wifi_easylink_completed_handle(network_InitTypeDef_st *nwkpara, void * arg)
{
os_log("wifi_easylink_wps_completed_handle:");
if (nwkpara == NULL)
{
os_log("EasyLink fail");
micoWlanStopEasyLink();
return;
}
os_log("ssid:\"%s\",\"%s\"",nwkpara->wifi_ssid,nwkpara->wifi_key);
//保存wifi及密码
strcpy(sys_config->micoSystemConfig.ssid, nwkpara->wifi_ssid);
strcpy(sys_config->micoSystemConfig.user_key, nwkpara->wifi_key);
sys_config->micoSystemConfig.user_keyLength = strlen(nwkpara->wifi_key);
mico_system_context_update(sys_config);
wifi_status = WIFI_STATE_NOCONNECT;
os_log("EasyLink stop");
micoWlanStopEasyLink();
}
//wifi已连接获取到IP地址 回调 //wifi已连接获取到IP地址 回调
static void wifi_get_ip_callback(IPStatusTypedef *pnet, void * arg) static void wifi_get_ip_callback(IPStatusTypedef *pnet, void * arg)
@@ -75,19 +45,31 @@ static void wifi_status_callback(WiFiEvent status, void* arg)
{ {
if (status == NOTIFY_STATION_UP) //wifi连接成功 if (status == NOTIFY_STATION_UP) //wifi连接成功
{ {
user_config->last_wifi_status = status; //user_config->last_wifi_status = status;
//wifi_status = WIFI_STATE_CONNECTED; sys_config->micoSystemConfig.reserved = status;
//关闭AP mico_system_context_update(sys_config);
OSStatus status = micoWlanSuspendSoftAP();
OSStatus status = micoWlanSuspendSoftAP(); //关闭AP
if (status != kNoErr) if (status != kNoErr)
{ {
os_log("close ap error[%d]", status); os_log("close ap error[%d]", status);
} }
//wifi_status = WIFI_STATE_CONNECTED;
} }
else if (status == NOTIFY_STATION_DOWN) //wifi断开 else if (status == NOTIFY_STATION_DOWN) //wifi断开
{ {
//user_config->last_wifi_status = status;
sys_config->micoSystemConfig.reserved = status;
mico_system_context_update(sys_config);
ap_init(); //打开AP
wifi_status = WIFI_STATE_NOCONNECT; wifi_status = WIFI_STATE_NOCONNECT;
if (!mico_rtos_is_timer_running(&wifi_led_timer)) mico_rtos_start_timer(&wifi_led_timer); if (!mico_rtos_is_timer_running(&wifi_led_timer))
{
mico_rtos_start_timer(&wifi_led_timer);
}
} }
} }
@@ -107,19 +89,9 @@ static void wifi_led_timer_callback(void* arg)
case WIFI_STATE_NOCONNECT: case WIFI_STATE_NOCONNECT:
//wifi_connect_sys_config(); //wifi_connect_sys_config();
break; break;
case WIFI_STATE_CONNECTING: case WIFI_STATE_CONNECTING:
//if (num > 1)
{
num = 0; num = 0;
user_led_set(-1); user_led_set(-1);
}
break;
case WIFI_STATE_NOEASYLINK:
wifi_start_easylink();
break;
case WIFI_STATE_EASYLINK:
user_led_set(1);
break; break;
case WIFI_STATE_CONNECTED: case WIFI_STATE_CONNECTED:
user_led_set(0); user_led_set(0);
@@ -157,8 +129,6 @@ void wifi_init(void)
{ {
//wifi状态下led闪烁定时器初始化 //wifi状态下led闪烁定时器初始化
mico_rtos_init_timer(&wifi_led_timer, 100, (void *) wifi_led_timer_callback, NULL); mico_rtos_init_timer(&wifi_led_timer, 100, (void *) wifi_led_timer_callback, NULL);
//easylink 完成回调
mico_system_notify_register(mico_notify_EASYLINK_WPS_COMPLETED, (void *) wifi_easylink_completed_handle, NULL);
//wifi已连接获取到IP地址 回调 //wifi已连接获取到IP地址 回调
mico_system_notify_register(mico_notify_DHCP_COMPLETED, (void *) wifi_get_ip_callback, NULL); mico_system_notify_register(mico_notify_DHCP_COMPLETED, (void *) wifi_get_ip_callback, NULL);
//wifi连接状态改变回调 //wifi连接状态改变回调

View File

@@ -9,15 +9,11 @@ enum {
WIFI_STATE_NOCONNECT, WIFI_STATE_NOCONNECT,
WIFI_STATE_CONNECTING, WIFI_STATE_CONNECTING,
WIFI_STATE_CONNECTED, WIFI_STATE_CONNECTED,
WIFI_STATE_NOEASYLINK,
WIFI_STATE_EASYLINK,
WIFI_STATE_EASYLINKING,
}; };
extern char wifi_status; extern char wifi_status;
extern void wifi_init(void); extern void wifi_init(void);
extern void ap_init(void); extern void ap_init(void);
extern void wifi_start_easylink(void);
extern void wifi_connect(char* wifi_ssid, char* wifi_key); extern void wifi_connect(char* wifi_ssid, char* wifi_key);
#endif #endif