263 lines
7.0 KiB
C
Executable File
263 lines
7.0 KiB
C
Executable File
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
#include <unistd.h>
|
|
#include <wifi_intf.h>
|
|
#include <pthread.h>
|
|
#include "wmg_debug.h"
|
|
|
|
static pthread_t app_scan_tid;
|
|
static int event = WIFIMG_NETWORK_DISCONNECTED;
|
|
|
|
static void wifi_event_handle(tWIFI_EVENT wifi_event, void *buf, int event_label)
|
|
{
|
|
wmg_printf(MSG_DEBUG,"event_label 0x%x\n", event_label);
|
|
|
|
switch(wifi_event)
|
|
{
|
|
case WIFIMG_WIFI_ON_SUCCESS:
|
|
{
|
|
wmg_printf(MSG_INFO,"WiFi on success!\n");
|
|
event = WIFIMG_WIFI_ON_SUCCESS;
|
|
break;
|
|
}
|
|
|
|
case WIFIMG_WIFI_ON_FAILED:
|
|
{
|
|
wmg_printf(MSG_ERROR,"WiFi on failed!\n");
|
|
event = WIFIMG_WIFI_ON_FAILED;
|
|
break;
|
|
}
|
|
|
|
case WIFIMG_WIFI_OFF_FAILED:
|
|
{
|
|
wmg_printf(MSG_ERROR,"wifi off failed!\n");
|
|
event = WIFIMG_WIFI_OFF_FAILED;
|
|
break;
|
|
}
|
|
|
|
case WIFIMG_WIFI_OFF_SUCCESS:
|
|
{
|
|
wmg_printf(MSG_INFO,"wifi off success!\n");
|
|
event = WIFIMG_WIFI_OFF_SUCCESS;
|
|
break;
|
|
}
|
|
|
|
case WIFIMG_NETWORK_CONNECTED:
|
|
{
|
|
wmg_printf(MSG_INFO,"WiFi connected ap!\n");
|
|
event = WIFIMG_NETWORK_CONNECTED;
|
|
break;
|
|
}
|
|
|
|
case WIFIMG_NETWORK_DISCONNECTED:
|
|
{
|
|
wmg_printf(MSG_INFO,"WiFi disconnected!\n");
|
|
event = WIFIMG_NETWORK_DISCONNECTED;
|
|
break;
|
|
}
|
|
|
|
case WIFIMG_PASSWORD_FAILED:
|
|
{
|
|
wmg_printf(MSG_ERROR,"Password authentication failed!\n");
|
|
event = WIFIMG_PASSWORD_FAILED;
|
|
break;
|
|
}
|
|
|
|
case WIFIMG_CONNECT_TIMEOUT:
|
|
{
|
|
wmg_printf(MSG_ERROR,"Connected timeout!\n");
|
|
event = WIFIMG_CONNECT_TIMEOUT;
|
|
break;
|
|
}
|
|
|
|
case WIFIMG_NO_NETWORK_CONNECTING:
|
|
{
|
|
wmg_printf(MSG_INFO,"It has no wifi auto connect when wifi on!\n");
|
|
event = WIFIMG_NO_NETWORK_CONNECTING;
|
|
break;
|
|
}
|
|
|
|
case WIFIMG_CMD_OR_PARAMS_ERROR:
|
|
{
|
|
wmg_printf(MSG_ERROR,"cmd or params error!\n");
|
|
event = WIFIMG_CMD_OR_PARAMS_ERROR;
|
|
break;
|
|
}
|
|
|
|
case WIFIMG_KEY_MGMT_NOT_SUPPORT:
|
|
{
|
|
wmg_printf(MSG_ERROR,"key mgmt is not supported!\n");
|
|
event = WIFIMG_KEY_MGMT_NOT_SUPPORT;
|
|
break;
|
|
}
|
|
|
|
case WIFIMG_OPT_NO_USE_EVENT:
|
|
{
|
|
wmg_printf(MSG_INFO,"operation no use!\n");
|
|
event = WIFIMG_OPT_NO_USE_EVENT;
|
|
break;
|
|
}
|
|
|
|
case WIFIMG_NETWORK_NOT_EXIST:
|
|
{
|
|
wmg_printf(MSG_ERROR,"network not exist!\n");
|
|
event = WIFIMG_NETWORK_NOT_EXIST;
|
|
break;
|
|
}
|
|
|
|
case WIFIMG_DEV_BUSING_EVENT:
|
|
{
|
|
wmg_printf(MSG_INFO,"wifi device busing!\n");
|
|
event = WIFIMG_DEV_BUSING_EVENT;
|
|
break;
|
|
}
|
|
|
|
default:
|
|
{
|
|
wmg_printf(MSG_INFO,"Other event, no care!\n");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void *app_scan_task(void *args)
|
|
{
|
|
const aw_wifi_interface_t *p_wifi = (aw_wifi_interface_t *)args;
|
|
char scan_results[4096];
|
|
int len = 0;
|
|
int event_label = 0;
|
|
|
|
while(1){
|
|
event_label++;
|
|
p_wifi->start_scan(event_label);
|
|
len = 4096;
|
|
p_wifi->get_scan_results(scan_results, &len);
|
|
}
|
|
}
|
|
|
|
|
|
void print_help(){
|
|
wmg_printf(MSG_INFO,"---------------------------------------------------------------------------------\n");
|
|
wmg_printf(MSG_INFO,"NAME:\n\twifi_get_netid_test\n");
|
|
wmg_printf(MSG_INFO,"DESCRIPTION:\n\tget the netid of the AP.\n");
|
|
wmg_printf(MSG_INFO,"USAGE:\n\twifi_get_netid_test <ssid> <key_mgmt>\n");
|
|
wmg_printf(MSG_INFO,"PARAMS:\n\tssid : ssid of the AP\n");
|
|
wmg_printf(MSG_INFO,"\tkey_mgmt : encryption method of the AP\n");
|
|
wmg_printf(MSG_INFO,"\t\t0 : NONE\n");
|
|
wmg_printf(MSG_INFO,"\t\t1 : key_mgmt = WPA_PSK\n");
|
|
wmg_printf(MSG_INFO,"\t\t2 : key_mgmt = WPA2_PSK\n");
|
|
wmg_printf(MSG_INFO,"\t\t3 : key_mgmt = WEP\n");
|
|
wmg_printf(MSG_INFO,"--------------------------------------MORE---------------------------------------\n");
|
|
wmg_printf(MSG_INFO,"The way to get help information:\n");
|
|
wmg_printf(MSG_INFO,"\twifi_get_netid_test --help\n");
|
|
wmg_printf(MSG_INFO,"\twifi_get_netid_test -h\n");
|
|
wmg_printf(MSG_INFO,"\twifi_get_netid_test -H\n");
|
|
wmg_printf(MSG_INFO,"---------------------------------------------------------------------------------\n");
|
|
}
|
|
|
|
|
|
int check_params(int num, char *str[]){
|
|
if(num < 3 || num >4){
|
|
wmg_printf(MSG_ERROR,"ERROR: params more or less!\n");
|
|
return -1;
|
|
}
|
|
|
|
int mgmt = atoi(str[2]);
|
|
if(mgmt >= 0 && mgmt <= 3){
|
|
return 0;
|
|
}else{
|
|
wmg_printf(MSG_ERROR,"ERROR: key_mgmt not allowed\n");
|
|
return -1;
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
*argc[1] ap ssid
|
|
*argc[2] ap key_mgmt:"0"--WIFIMG_NONE;"1"--WIFIMG_WPA_PSK;"2"--WIFIMG_WPA2_PSK;"3"--WIFIMG_WEP
|
|
*/
|
|
static int set_log_level(int argv, char *argc[])
|
|
{
|
|
if(argv >=4 && !strncmp(argc[3],"d",1)){
|
|
char *debug = argc[3];
|
|
if(strlen(debug) >=2 && debug[1] >= '0' &&
|
|
debug[1] <= '5'){
|
|
wmg_set_debug_level(debug[1] - '0');
|
|
return 0;
|
|
}else{
|
|
printf("Illegal level\n");
|
|
printf("Level range 0~5\n");
|
|
return -1;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int main(int argv, char *argc[]){
|
|
int ret = -1, switch_int = -1;
|
|
int event_label = 0;
|
|
const aw_wifi_interface_t *p_wifi_interface = NULL;
|
|
tKEY_MGMT key_mgmt = WIFIMG_NONE;
|
|
char net_id[10]={0};
|
|
int id_len = sizeof(net_id);
|
|
|
|
if(argv == 2 && (!strcmp(argc[1],"--help") || !strcmp(argc[1], "-h") || !strcmp(argc[1], "-H"))){
|
|
print_help();
|
|
return -1;
|
|
}
|
|
|
|
if(check_params(argv, argc)){
|
|
print_help();
|
|
return -1;
|
|
}
|
|
|
|
if(set_log_level(argv,argc))
|
|
return -1;
|
|
|
|
event_label = rand();
|
|
p_wifi_interface = aw_wifi_on(wifi_event_handle, event_label);
|
|
if(p_wifi_interface == NULL){
|
|
wmg_printf(MSG_ERROR,"wifi on failed event 0x%x\n", event);
|
|
return -1;
|
|
}
|
|
|
|
while(aw_wifi_get_wifi_state() == WIFIMG_WIFI_BUSING){
|
|
wmg_printf(MSG_INFO,"wifi state busing,waiting\n");
|
|
usleep(2000000);
|
|
}
|
|
|
|
wmg_printf(MSG_INFO,"\n*********************************\n");
|
|
wmg_printf(MSG_INFO,"***Start wifi get netid test!***\n");
|
|
wmg_printf(MSG_INFO,"*********************************\n");
|
|
|
|
switch_int= atoi(argc[2]);
|
|
wmg_printf(MSG_DEBUG,"The switch_int is %d\n",switch_int);
|
|
|
|
switch(switch_int)
|
|
{
|
|
case 0: key_mgmt = WIFIMG_NONE; break;
|
|
case 1: key_mgmt = WIFIMG_WPA_PSK; break;
|
|
case 2: key_mgmt = WIFIMG_WPA2_PSK; break;
|
|
case 3: key_mgmt = WIFIMG_WEP; break;
|
|
default: ; break;
|
|
}
|
|
|
|
|
|
ret = p_wifi_interface->get_netid(argc[1], key_mgmt, net_id, &id_len);
|
|
if(ret == 0){
|
|
wmg_printf(MSG_INFO,"The netid of your network is %s\n",net_id);
|
|
wmg_printf(MSG_INFO,"The lenght of netid is %d\n",id_len);
|
|
wmg_printf(MSG_INFO,"******************************\n");
|
|
wmg_printf(MSG_INFO,"Wifi get netid test: Success!\n");
|
|
wmg_printf(MSG_INFO,"******************************\n");
|
|
}else{
|
|
wmg_printf(MSG_ERROR,"get netid test failed!\n");
|
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
}
|