void rthw_wifi_monitor_enable(int enable) { if (enable) { wifi_enter_promisc_mode(); wifi_set_promisc(RTW_PROMISC_ENABLE, rthw_wifi_promisc_callback, 1); rt_kprintf("%s run \n", __FUNCTION__); } else { wifi_set_promisc(RTW_PROMISC_DISABLE, RT_NULL, 0); rthw_wifi_stop(); } }
static void promisc_test_all(int duration, unsigned char len_used) { int ch; unsigned int start_time; struct eth_frame *frame; eth_buffer.head = NULL; eth_buffer.tail = NULL; wifi_enter_promisc_mode(); wifi_set_promisc(RTW_PROMISC_ENABLE_2, promisc_callback_all, len_used); for(ch = 1; ch <= 13; ch ++) { if(wifi_set_channel(ch) == 0) printf("\n\n\rSwitch to channel(%d)", ch); start_time = xTaskGetTickCount(); while(1) { unsigned int current_time = xTaskGetTickCount(); if((current_time - start_time) < (duration * configTICK_RATE_HZ)) { frame = retrieve_frame(); if(frame) { int i; printf("\n\rTYPE: 0x%x, ", frame->type); printf("DA:"); for(i = 0; i < 6; i ++) printf(" %02x", frame->da[i]); printf(", SA:"); for(i = 0; i < 6; i ++) printf(" %02x", frame->sa[i]); printf(", len=%d", frame->len); vPortFree((void *) frame); } else vTaskDelay(1); //delay 1 tick } else break; } } wifi_set_promisc(RTW_PROMISC_DISABLE, NULL, 0); while((frame = retrieve_frame()) != NULL) vPortFree((void *) frame); }
int simple_config_test(void) { int channel = 1; int ret = SC_SUCCESS; unsigned int start_time; int is_need_connect_to_AP = 0; int fix_channel = 0; int delta_time = 0; wifi_set_promisc(RTW_PROMISC_ENABLE, simple_config_callback, 1); start_time = xTaskGetTickCount(); printf("\n\r"); wifi_set_channel(channel); while (1) { vTaskDelay(50); //delay 0.5s to release CPU usage simple_config_cmd_current_time = xTaskGetTickCount(); if (simple_config_cmd_current_time - simple_config_cmd_start_time < ((120 + delta_time)*configTICK_RATE_HZ)) { unsigned int current_time = xTaskGetTickCount(); if (((current_time - start_time)*1000 /configTICK_RATE_HZ < 100) || (is_fixed_channel == 1)) { if((is_fixed_channel == 0)&&(!((fix_channel = promisc_get_fixed_channel(g_bssid,g_ssid,&g_ssid_len))== 0))){ //printf("\r\n in simple_config_test fix channel = %d ",fix_channel); is_fixed_channel = 1; fixed_channel_num = fix_channel; wifi_set_channel(fix_channel); } if (simple_config_result == 1) { is_need_connect_to_AP = 1; is_fixed_channel = 0; break; } if (simple_config_result == -1) { printf("\r\nsimple_config_test restart for result = -1"); delta_time = 60; wifi_set_channel(1); is_need_connect_to_AP = 0; is_fixed_channel = 0; fixed_channel_num = 0; memset(g_ssid, 0, 32); g_ssid_len = 0; simple_config_result = 0; g_security_mode = 0xff; rtk_restart_simple_config(); } if (simple_config_result == -2) { printf("\n\rThe APP or client must have pin!\n"); break; } } else { channel++; if ((1 <= channel) && (channel <= 13)) { if (wifi_set_channel(channel) == 0) { start_time = xTaskGetTickCount(); printf("\n\rSwitch to channel(%d)\n", channel); } } else { channel = 1; if (wifi_set_channel(channel) == 0) { start_time = xTaskGetTickCount(); printf("\n\rSwitch to channel(%d)\n", channel); } } } } else { ret = SC_NO_CONTROLLER_FOUND; break; } } wifi_set_promisc(RTW_PROMISC_DISABLE, NULL, 0); if (is_need_connect_to_AP == 1) { int tmp_res = SC_connect_to_AP(); if (SC_SUCCESS == tmp_res) { if(-1 == SC_send_simple_config_ack()) ret = SC_UDP_SOCKET_CREATE_FAIL; } else { return tmp_res; } } else { ret = SC_NO_CONTROLLER_FOUND; } deinit_test_data(); return ret; }
static void promisc_test_all(int duration, unsigned char len_used) { int ch; unsigned int start_time; struct eth_frame *frame; eth_buffer.head = NULL; eth_buffer.tail = NULL; wifi_enter_promisc_mode(); wifi_set_promisc(RTW_PROMISC_ENABLE_2, promisc_callback_all, len_used); for(ch = 1; ch <= 13; ch ++) { if(wifi_set_channel(ch) == 0) printf("\n\n\rSwitch to channel(%d)", ch); start_time = xTaskGetTickCount(); while(1) { unsigned int current_time = xTaskGetTickCount(); if((current_time - start_time) < (duration * configTICK_RATE_HZ)) { frame = retrieve_frame(); if(frame) { int i; printf("\n\rTYPE: 0x%x, ", frame->type); printf("DA:"); for(i = 0; i < 6; i ++) printf(" %02x", frame->da[i]); printf(", SA:"); for(i = 0; i < 6; i ++) printf(" %02x", frame->sa[i]); printf(", len=%d", frame->len); printf(", RSSI=%d", frame->rssi); #if CONFIG_INIC_CMD_RSP if(inic_frame_tail){ if(inic_frame_cnt < MAX_INIC_FRAME_NUM){ memcpy(inic_frame_tail->da, frame->da, 6); memcpy(inic_frame_tail->sa, frame->sa, 6); inic_frame_tail->len = frame->len; inic_frame_tail->type = frame->type; inic_frame_tail++; inic_frame_cnt++; } } #endif vPortFree((void *) frame); } else vTaskDelay(1); //delay 1 tick } else break; } #if CONFIG_INIC_CMD_RSP if(inic_frame){ inic_c2h_msg("ATWM", RTW_SUCCESS, (char *)inic_frame, sizeof(struct inic_eth_frame)*inic_frame_cnt); memset(inic_frame, '\0', sizeof(struct inic_eth_frame)*MAX_INIC_FRAME_NUM); inic_frame_tail = inic_frame; inic_frame_cnt = 0; rtw_msleep_os(10); } #endif } wifi_set_promisc(RTW_PROMISC_DISABLE, NULL, 0); while((frame = retrieve_frame()) != NULL) vPortFree((void *) frame); }