void init_thread(void *param) { #if CONFIG_INIT_NET #if CONFIG_LWIP_LAYER /* Initilaize the LwIP stack */ LwIP_Init(); #endif #endif #if CONFIG_WLAN wifi_on(RTW_MODE_STA); #if CONFIG_AUTO_RECONNECT //setup reconnection flag wifi_set_autoreconnect(1); #endif printf("\n\r%s(%d), Available heap 0x%x\n\r", __FUNCTION__, __LINE__, xPortGetFreeHeapSize()); #endif #if CONFIG_INTERACTIVE_MODE /* Initial uart rx swmaphore*/ vSemaphoreCreateBinary(uart_rx_interrupt_sema); xSemaphoreTake(uart_rx_interrupt_sema, 1/portTICK_RATE_MS); start_interactive_mode(); #endif /* Kill init thread after all init tasks done */ vTaskDelete(NULL); }
static int uartadapter_load_wifi_config() { flash_t flash; uint8_t *data; uint32_t channel; uint8_t pscan_config; char key_id; rtw_network_info_t wifi = {0}; int ret = SC_SUCCESS; data = (uint8_t *)rtw_zmalloc(FAST_RECONNECT_DATA_LEN); flash_stream_read(&flash, FAST_RECONNECT_DATA, FAST_RECONNECT_DATA_LEN, (uint8_t *)data); if(*((uint32_t *) data) != ~0x0) { ua_printf(UA_INFO, "AP Profile read from FLASH, try to connect"); memcpy(psk_essid, (uint8_t *)data, NDIS_802_11_LENGTH_SSID + 4); memcpy(psk_passphrase, (uint8_t *)data + NDIS_802_11_LENGTH_SSID + 4, (IW_PASSPHRASE_MAX_SIZE + 1)); memcpy(wpa_global_PSK, (uint8_t *)data + NDIS_802_11_LENGTH_SSID + 4 + (IW_PASSPHRASE_MAX_SIZE + 1), A_SHA_DIGEST_LEN * 2); memcpy(&channel, (uint8_t *)data + NDIS_802_11_LENGTH_SSID + 4 + (IW_PASSPHRASE_MAX_SIZE + 1) + A_SHA_DIGEST_LEN * 2, 4); sprintf(&key_id,"%d",(channel >> 28)); channel &= 0xff; pscan_config = PSCAN_ENABLE | PSCAN_FAST_SURVEY; //set partial scan for entering to listen beacon quickly //wifi_set_pscan_chan((uint8_t *)&channel, &pscan_config, 1); #ifdef CONFIG_AUTO_RECONNECT wifi_set_autoreconnect(1); #endif //set wifi connect wifi.ssid.len = (int)strlen((char*)psk_essid); memcpy(wifi.ssid.val, psk_essid, wifi.ssid.len); wifi.key_id = key_id; //open mode if(!strlen((char*)psk_passphrase)){ wifi.security_type = RTW_SECURITY_OPEN; } //wep mode else if( strlen((char*)psk_passphrase) == 5 || strlen((char*)psk_passphrase) == 13){ wifi.security_type = RTW_SECURITY_WEP_PSK; wifi.password = (unsigned char *)psk_passphrase; wifi.password_len = (int)strlen((char const *)psk_passphrase); } //WPA/WPA2 else{ wifi.security_type = RTW_SECURITY_WPA2_AES_PSK; wifi.password = (unsigned char *)psk_passphrase; wifi.password_len = (int)strlen((char const *)psk_passphrase); } ret = uartadapter_connect_wifi(&wifi, channel, pscan_config); //print_simple_config_result((enum ua_sc_result)ret); if(data) rtw_mfree(data, FAST_RECONNECT_DATA_LEN); if(ret == SC_SUCCESS) return RTW_SUCCESS; else return RTW_ERROR; }else{