//----------------------------------------------------------------------------// int wifi_set_mac_address(char * mac) { char buf[13+17+1]; rtw_memset(buf, 0, sizeof(buf)); snprintf(buf, 13+17, "write_mac %s", mac); return wext_private_command(WLAN0_NAME, buf, 0); }
int wifi_get_mac_address(char * mac) { int ret = 0; char buf[32]; rtw_memset(buf, 0, sizeof(buf)); rtw_memcpy(buf, "read_mac", 8); ret = wext_private_command_with_retval(WLAN0_NAME, buf, buf, 32); strcpy(mac, buf); return ret; }
int wifi_set_txpower(int poweridx) { int ret = 0; char buf[24]; rtw_memset(buf, 0, sizeof(buf)); snprintf(buf, 24, "txpower patha=%d", poweridx); ret = wext_private_command(WLAN0_NAME, buf, 0); return ret; }
//----------------------------------------------------------------------------// int wifi_get_txpower(int *poweridx) { int ret = 0; char buf[11]; rtw_memset(buf, 0, sizeof(buf)); rtw_memcpy(buf, "txpower", 11); ret = wext_private_command_with_retval(WLAN0_NAME, buf, buf, 11); sscanf(buf, "%d", poweridx); return ret; }
int init_test_data(char *custom_pin_code) { #if (CONFIG_INCLUDE_SIMPLE_CONFIG) is_promisc_callback_unlock = 1; is_fixed_channel = 0; fixed_channel_num = 0; simple_config_result = 0; rtw_memset(g_ssid, 0, 32); g_ssid_len = 0; simple_config_cmd_start_time = xTaskGetTickCount(); if (ack_content != NULL) { vPortFree(ack_content); ack_content = NULL; } ack_content = pvPortMalloc(sizeof(struct ack_msg)); if (!ack_content) { printf("\n\rrtk_sc_init fail by allocate ack\n"); } memset(ack_content, 0, sizeof(struct ack_msg)); if(custom_pin_code) { backup_sc_ctx = pvPortMalloc(sizeof(struct rtk_test_sc)); if (!backup_sc_ctx) { printf("\n\r[Mem]malloc SC context fail\n"); } else { memset(backup_sc_ctx, 0, sizeof(struct rtk_test_sc)); if (rtk_sc_init(custom_pin_code) < 0) { printf("\n\rRtk_sc_init fail\n"); } else { return 0; } } } else{ backup_sc_ctx = pvPortMalloc(sizeof(struct rtk_test_sc)); if (!backup_sc_ctx) { printf("\n\r[Mem]malloc SC context fail\n"); } else { memset(backup_sc_ctx, 0, sizeof(struct rtk_test_sc)); if (rtk_sc_init(NULL) < 0){ printf("\n\rRtk_sc_init fail\n"); } else { return 0; } } } #else printf("\n\rPlatform no include simple config now\n"); #endif return -1; }
//----------------------------------------------------------------------------// int wifi_get_associated_client_list(void * client_list_buffer, uint16_t buffer_length) { const char * ifname = WLAN0_NAME; int ret = 0; char buf[25]; if(wifi_mode == RTW_MODE_STA_AP) { ifname = WLAN1_NAME; } rtw_memset(buf, 0, sizeof(buf)); snprintf(buf, 25, "get_client_list %x", client_list_buffer); ret = wext_private_command(ifname, buf, 0); return ret; }
static void wifi_scan_each_report_hdl( char* buf, int buf_len, int flags, void* userdata) { int i =0; int insert_pos = 0; rtw_scan_result_t** result_ptr = (rtw_scan_result_t**)buf; rtw_scan_result_t* temp = NULL; for(i=0; i<scan_result_handler_ptr.scan_cnt; i++){ if(CMP_MAC(scan_result_handler_ptr.ap_details[i].BSSID.octet, (*result_ptr)->BSSID.octet)){ memset(*result_ptr, 0, sizeof(rtw_scan_result_t)); return; } } scan_result_handler_ptr.scan_cnt++; if(scan_result_handler_ptr.scan_cnt > scan_result_handler_ptr.max_ap_size){ scan_result_handler_ptr.scan_cnt = scan_result_handler_ptr.max_ap_size; if((*result_ptr)->signal_strength > scan_result_handler_ptr.pap_details[scan_result_handler_ptr.max_ap_size-1]->signal_strength){ rtw_memcpy(scan_result_handler_ptr.pap_details[scan_result_handler_ptr.max_ap_size-1], *result_ptr, sizeof(rtw_scan_result_t)); temp = scan_result_handler_ptr.pap_details[scan_result_handler_ptr.max_ap_size -1]; }else return; }else{ rtw_memcpy(&scan_result_handler_ptr.ap_details[scan_result_handler_ptr.scan_cnt-1], *result_ptr, sizeof(rtw_scan_result_t)); } for(i=0; i< scan_result_handler_ptr.scan_cnt-1; i++){ if((*result_ptr)->signal_strength > scan_result_handler_ptr.pap_details[i]->signal_strength) break; } insert_pos = i; for(i = scan_result_handler_ptr.scan_cnt-1; i>insert_pos; i--) scan_result_handler_ptr.pap_details[i] = scan_result_handler_ptr.pap_details[i-1]; if(temp != NULL) scan_result_handler_ptr.pap_details[insert_pos] = temp; else scan_result_handler_ptr.pap_details[insert_pos] = &scan_result_handler_ptr.ap_details[scan_result_handler_ptr.scan_cnt-1]; rtw_memset(*result_ptr, 0, sizeof(rtw_scan_result_t)); }
//----------------------------------------------------------------------------// int wifi_get_ap_info(rtw_bss_info_t * ap_info, rtw_security_t* security) { const char * ifname = WLAN0_NAME; int ret = 0; char buf[24]; if(wifi_mode == RTW_MODE_STA_AP) { ifname = WLAN1_NAME; } rtw_memset(buf, 0, sizeof(buf)); snprintf(buf, 24, "get_ap_info %x", ap_info); ret = wext_private_command(ifname, buf, 0); snprintf(buf, 24, "get_security"); ret = wext_private_command_with_retval(ifname, buf, buf, 24); sscanf(buf, "%d", security); return ret; }
void restore_wifi_info_to_flash() { struct wlan_fast_reconnect * data_to_flash; u32 channel = 0; u8 index = 0; u8 *ifname[1] = {WLAN0_NAME}; rtw_wifi_setting_t setting; //struct security_priv *psecuritypriv = &padapter->securitypriv; //WLAN_BSSID_EX *pcur_bss = pmlmepriv->cur_network.network; data_to_flash = (struct wlan_fast_reconnect *)rtw_zmalloc(sizeof(struct wlan_fast_reconnect)); if(data_to_flash && p_write_reconnect_ptr){ if(wifi_get_setting((const char*)ifname[0],&setting) || setting.mode == RTW_MODE_AP){ printf("\r\n %s():wifi_get_setting fail or ap mode", __func__); return; } channel = setting.channel; rtw_memset(psk_essid[index], 0, sizeof(psk_essid[index])); strncpy(psk_essid[index], setting.ssid, strlen(setting.ssid)); switch(setting.security_type){ case RTW_SECURITY_OPEN: rtw_memset(psk_passphrase[index], 0, sizeof(psk_passphrase[index])); rtw_memset(wpa_global_PSK[index], 0, sizeof(wpa_global_PSK[index])); data_to_flash->security_type = RTW_SECURITY_OPEN; break; case RTW_SECURITY_WEP_PSK: channel |= (setting.key_idx) << 28; rtw_memset(psk_passphrase[index], 0, sizeof(psk_passphrase[index])); rtw_memset(wpa_global_PSK[index], 0, sizeof(wpa_global_PSK[index])); rtw_memcpy(psk_passphrase[index], setting.password, sizeof(psk_passphrase[index])); data_to_flash->security_type = RTW_SECURITY_WEP_PSK; break; case RTW_SECURITY_WPA_TKIP_PSK: data_to_flash->security_type = RTW_SECURITY_WPA_TKIP_PSK; break; case RTW_SECURITY_WPA2_AES_PSK: data_to_flash->security_type = RTW_SECURITY_WPA2_AES_PSK; break; default: break; } memcpy(data_to_flash->psk_essid, psk_essid[index], sizeof(data_to_flash->psk_essid)); if (strlen(psk_passphrase64) == 64) { memcpy(data_to_flash->psk_passphrase, psk_passphrase64, sizeof(data_to_flash->psk_passphrase)); } else { memcpy(data_to_flash->psk_passphrase, psk_passphrase[index], sizeof(data_to_flash->psk_passphrase)); } memcpy(data_to_flash->wpa_global_PSK, wpa_global_PSK[index], sizeof(data_to_flash->wpa_global_PSK)); memcpy(&(data_to_flash->channel), &channel, 4); //call callback function in user program p_write_reconnect_ptr((u8 *)data_to_flash, sizeof(struct wlan_fast_reconnect)); } if(data_to_flash) rtw_free(data_to_flash); }
int wifi_scan_networks(rtw_scan_result_handler_t results_handler, void* user_data) { unsigned int max_ap_size = 64; #if SCAN_USE_SEMAPHORE rtw_bool_t result; if(NULL == scan_result_handler_ptr.scan_semaphore) rtw_init_sema(&scan_result_handler_ptr.scan_semaphore, 1); scan_result_handler_ptr.scan_start_time = rtw_get_current_time(); /* Initialise the semaphore that will prevent simultaneous access - cannot be a mutex, since * we don't want to allow the same thread to start a new scan */ result = (rtw_bool_t)rtw_down_timeout_sema(&scan_result_handler_ptr.scan_semaphore, SCAN_LONGEST_WAIT_TIME); if ( result != RTW_TRUE ) { /* Return error result, but set the semaphore to work the next time */ rtw_up_sema(&scan_result_handler_ptr.scan_semaphore); return RTW_TIMEOUT; } #else if(scan_result_handler_ptr.scan_running){ int count = 100; while(scan_result_handler_ptr.scan_running && count > 0) { rtw_msleep_os(20); count --; } if(count == 0){ printf("\n\r[%d]WiFi: Scan is running. Wait 2s timeout.", rtw_get_current_time()); return RTW_TIMEOUT; } } scan_result_handler_ptr.scan_start_time = rtw_get_current_time(); scan_result_handler_ptr.scan_running = 1; #endif scan_result_handler_ptr.gscan_result_handler = results_handler; scan_result_handler_ptr.max_ap_size = max_ap_size; scan_result_handler_ptr.ap_details = (rtw_scan_result_t*)rtw_zmalloc(max_ap_size*sizeof(rtw_scan_result_t)); if(scan_result_handler_ptr.ap_details == NULL){ goto error_with_result_ptr; } rtw_memset(scan_result_handler_ptr.ap_details, 0, max_ap_size*sizeof(rtw_scan_result_t)); scan_result_handler_ptr.pap_details = (rtw_scan_result_t**)rtw_zmalloc(max_ap_size*sizeof(rtw_scan_result_t*)); if(scan_result_handler_ptr.pap_details == NULL) return RTW_ERROR; rtw_memset(scan_result_handler_ptr.pap_details, 0, max_ap_size); scan_result_handler_ptr.scan_cnt = 0; scan_result_handler_ptr.scan_complete = RTW_FALSE; scan_result_handler_ptr.user_data = user_data; if (wifi_scan( RTW_SCAN_COMMAMD<<4 | RTW_SCAN_TYPE_ACTIVE, RTW_BSS_TYPE_ANY, NULL) != RTW_SUCCESS) { goto error_with_result_ptr; } return RTW_SUCCESS; error_with_result_ptr: rtw_free((u8*)scan_result_handler_ptr.pap_details); scan_result_handler_ptr.pap_details = NULL; return RTW_ERROR; }