[FIXBUG]API-175 API-176 and add sta api
Change-Id: I1115a46e22eab9babfde9a71ac4e573e7129c920
diff --git a/lib/liblynq-wifi6/libwifi6.c b/lib/liblynq-wifi6/libwifi6.c
index 09baa20..6865be2 100755
--- a/lib/liblynq-wifi6/libwifi6.c
+++ b/lib/liblynq-wifi6/libwifi6.c
@@ -13,6 +13,7 @@
#include <stdlib.h>
#include <stdlib.h>
#include <pthread.h>
+#include <ctype.h>
#include "libwifi6.h"
#ifdef __cplusplus
@@ -21,30 +22,49 @@
#ifdef __cplusplus
}
#endif
-
-#define MAX_CMD 256
+//max len of cmd include password len
+#define MAX_CMD 256
#define MAX_RET 1024
#define MODE_LEN 10
+
+#define PRINT_AND_RETURN_VALUE(str,value) \
+{\
+ perror((str));\
+ return (value);\
+}
+#define CLOSE_FP_RETURN_VALUE(fp,str,value)\
+{\
+ if((pclose((fp)))==-1){ \
+ perror("close fp failed");\
+ }\
+ PRINT_AND_RETURN_VALUE((str),(value));\
+}
+
+#define CHECK_NULL_RETURN_VALUE(pt,str,value)\
+{\
+ if((pt)==NULL){ \
+ PRINT_AND_RETURN_VALUE((str),(value));\
+ }\
+}
+
char g_lynq_wifi_ok[3]="OK";
void StartThread()
{
-
char start_cmd[120]="wpa_supplicant -iwlan0 -Dnl80211 -c /data/wifi/wg870/wpa_supplicant.conf -g/var/run/wpa_wlan0_cmd -dd -t -B";
char get_pid_cmd[20]="wpa_supplicant";
if((GetPIDbyName(get_pid_cmd))>0){
return;
- }
+ }
system(start_cmd);
for(int i=0;i<5;i++){
+ sleep(2);
if((GetPIDbyName(get_pid_cmd))>0){
break;
- }else{
- sleep(2);
- }
+ }
if(i==4){
- printf("start timeout\n");
+ return;
}
}
return;
@@ -67,16 +87,7 @@
int lynq_wifi_disable(void)
{
- FILE *fp;
- if((popen("rmmod bcmdhd.ko","w"))==NULL){
- perror("poepn error!");
- return -1;
- }
- int ret=pclose(fp);
- if(ret==-1){
- perror("close file faild");
- return -1;
- }
+ system("rmmod bcmdhd.ko");
return 0;
}
/*
@@ -104,19 +115,18 @@
}
*/
int lynq_wifi_work_mode_get(lynq_wifi_work_mode_m *mode)
-{
-
- char *lynq_wifi_ssid_cmd[]={"wpa_cli -iwlan0 -p/var/run/wpa_supplicant status"};
+{
+ char *lynq_wifi_ssid_cmd[]={"wpa_cli -iwlan0 -p/var/run/wpa_supplicant status"};
char lynq_cmd_ret[MAX_RET]={0};
char lynq_mode[10]={0};
char *strcn="mode=";
- char sta[64]="station";
- char ap[64]="AP";
+ char sta[MAX_CMD]="station";
+ char ap[MAX_CMD]="AP";
FILE *fp;
-
- if ((fp=popen(lynq_wifi_ssid_cmd[0],"r"))==NULL){
- return -1;
+ CHECK_NULL_RETURN_VALUE(mode,"mode is null",-1);
+ if ((fp=popen(lynq_wifi_ssid_cmd[0],"r"))==NULL){
+ return -1;
}
while(1){
@@ -136,12 +146,12 @@
}
}
- if((pclose(fp))==-1){
- perror("close file faild");
- return -1;
- }
- return 0;
+ if((pclose(fp))==-1){
+ perror("close file faild");
+ return -1;
+ }
+ return 0;
}
int lynq_wifi_ap_ssid_set(lynq_wifi_index_e idx,char *ap_ssid)
@@ -150,6 +160,12 @@
char lynq_wifi_ssid_cmd[80]={0};
char lynq_tmp_cmd[MAX_CMD]={0};
char lynq_cmd_save[]="IFNAME=wlan0 save_config\n";
+ if(idx<0||idx>9){
+ return -1;
+ }
+ if(((strlen(ap_ssid))<8) || ((strlen(ap_ssid))>32)){
+ PRINT_AND_RETURN_VALUE("ssid is illgal",-1);
+ }
sprintf(lynq_tmp_cmd,"%s%d%s","IFNAME=wlan0 set_network ",idx," ssid ");
sprintf(lynq_wifi_ssid_cmd,"%s%s%s%s%s",lynq_tmp_cmd,"\"",ap_ssid,"\"","\n");
@@ -166,12 +182,13 @@
perror("close file faild");
return -1;
}
+
return 0;
-
}
int lynq_wifi_ap_ssid_get(lynq_wifi_index_e idx,char* ap_ssid)
{
+ CHECK_NULL_RETURN_VALUE(ap_ssid,"ap_ssid is null",-1);
FILE *fp;
char *lynq_wifi_ssid_cmd[]={"wpa_cli -iwlan0 -p/var/run/wpa_supplicant status"};
char lynq_cmd_ret[MAX_RET]={0};
@@ -199,20 +216,22 @@
perror("close file faild");
return -1;
}
- printf("after pclose ssid get\n");
return 0;
}
int lynq_wifi_ap_frequency_set(lynq_wifi_index_e idx,int lynq_wifi_frequency)
{
FILE *fp;
-
- char lynq_wifi_frequency_cmd[128]={0};
- char lynq_cmd_mode[128]={0};
- char lynq_cmd_slect[128]={0};
- char lynq_cmd_save[128]="IFNAME=wlan0 save_config\n";
-
-
+ char lynq_wifi_frequency_cmd[MAX_CMD]={0};
+ char lynq_cmd_mode[MAX_CMD]={0};
+ char lynq_cmd_slect[MAX_CMD]={0};
+ char lynq_cmd_save[MAX_CMD]="IFNAME=wlan0 save_config\n";
+ if(idx<0||idx>9){
+ return -1;
+ }
+ if(lynq_wifi_frequency != 2437 || lynq_wifi_frequency != 5180){
+ PRINT_AND_RETURN_VALUE("set frequency not in range",-1);
+ }
sprintf(lynq_wifi_frequency_cmd,"IFNAME=wlan0 set_net %d frequency %d\n", idx, lynq_wifi_frequency);
sprintf(lynq_cmd_mode, "IFNAME=wlan0 set_net %d mode 2\n", idx);
sprintf(lynq_cmd_slect, "IFNAME=wlan0 select_net %d\n", idx);
@@ -221,7 +240,7 @@
perror("popen error!");
return -1;
}
-
+
fwrite(lynq_wifi_frequency_cmd,sizeof(lynq_wifi_frequency_cmd),1,fp);
fwrite(lynq_cmd_mode,sizeof(lynq_cmd_mode),1,fp);
fwrite(lynq_cmd_save,sizeof(lynq_cmd_save),1,fp);
@@ -233,27 +252,30 @@
return -1;
}
-
return 0;
}
int lynq_wifi_ap_frequency_get(lynq_wifi_index_e idx,int *lynq_wifi_frequency)
{
+ CHECK_NULL_RETURN_VALUE(lynq_wifi_frequency,"frequency is null",-1);
+
FILE *fp;
- printf("into libwifi6 frequency get\n");
- char lynq_wifi_ssid_cmd[128]="wpa_cli -iwlan0 -p/var/run/wpa_supplicant status";
- char lynq_cmd_ret[MAX_RET]={0};
+ char lynq_wifi_ssid_cmd[MAX_CMD]="wpa_cli -iwlan0 -p/var/run/wpa_supplicant status";
+ char lynq_cmd_ret[MAX_RET]={0};
char *strcn="freq=";
- char freq[128]={0};
+ char freq[MAX_CMD]={0};
+ if(idx<0||idx>9){
+ return -1;
+ }
- if((fp=popen(lynq_wifi_ssid_cmd,"r"))==NULL){
- perror("popen error!");
- return -1;
- }
- while(1){
- if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){
+ if((fp=popen(lynq_wifi_ssid_cmd,"r"))==NULL){
+ perror("popen error!");
+ return -1;
+ }
+ while(1){
+ if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){
if((strncmp(lynq_cmd_ret,strcn,5))==0)
- {
+ {
sscanf(lynq_cmd_ret,"%*[^=]=%s",freq);
*lynq_wifi_frequency=atoi(freq);
}
@@ -282,30 +304,34 @@
*/
int lynq_wifi_ap_bandwidth_get(lynq_wifi_index_e idx,lynq_wifi_bandwidth_type_m* bandwidth)
{
- printf("into lynq_wifi_ap_bandwidth_get*******\n");
+ if(bandwidth==NULL){
+ PRINT_AND_RETURN_VALUE("call falure",-1);
+ }
FILE *fp;
char aim[MAX_CMD]={0};
char number[10]="80";
- char lynq_wifi_bandwidth_cmd[64]="/data/wl chanspec\n";
+ char lynq_wifi_bandwidth_cmd[MAX_CMD]="/data/wl chanspec\n";
char lynq_cmd_ret[MAX_CMD]={0};
+ if(idx<0||idx>9){
+ return -1;
+ }
- if((fp=popen(lynq_wifi_bandwidth_cmd,"r"))==NULL){
+ if((fp=popen(lynq_wifi_bandwidth_cmd,"r"))==NULL){
perror("popen error!");
return -1;
- }
+ }
if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){
strncpy(aim,lynq_cmd_ret+3,2);
- printf("************band aim string is %s\n",aim);
if((strncmp(aim,number,2))==0){
*bandwidth=1;
}else{
*bandwidth=0;
}
}
- if((pclose(fp))==-1){
- perror("close file faild");
- return -1;
+ if((pclose(fp))==-1){
+ perror("close file faild");
+ return -1;
}
return 0;
@@ -318,15 +344,16 @@
FILE *fg;
char lynq_cmd_ret[MAX_CMD]={0};
char lynq_tmp_cmd[MAX_RET]={0};
- char lynq_change_cmd[64]="/data/wl chanspec ";
- char chose_idx_cmd[64]="";
+ char lynq_change_cmd[MAX_CMD]="/data/wl chanspec ";
+ char chose_idx_cmd[MAX_CMD]="";
sprintf(chose_idx_cmd,"%s%d%s","IFNAME=wlan0 slecet_net ",idx,"\n");
if((fg=popen(chose_idx_cmd,"r"))==NULL){
perror("popen error!");
return -1;
}
- if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){
+ if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){
if((strcmp(lynq_cmd_ret,g_lynq_wifi_ok))!=0){
+ CLOSE_FP_RETURN_VALUE(fp);
return -1;
}
}
@@ -352,13 +379,17 @@
*/
int lynq_wifi_ap_channel_get( lynq_wifi_index_e idx,int* channel)
{
+ CHECK_NULL_RETURN_VALUE(channel,"channel is null",-1);
FILE *fp;
char lynq_cmd_set[MAX_CMD]={0};
- char channel_str[64]={0};
+ char channel_str[MAX_CMD]={0};
char lynq_cmd_ret[MAX_RET]={0};
+ if(idx<0||idx>9){
+ return -1;
+ }
- if((fp=popen("/data/wl chanspec","r"))==NULL){
- perror("popen error!");
+ if((fp=popen("/data/wl chanspec","r"))==NULL){
+ perror("popen error!");
return -1;
}
@@ -367,7 +398,7 @@
*channel=atoi(channel_str);
}
if((pclose(fp))==-1){
- perror("close file faild");
+ perror("close file faild");
return -1;
}
@@ -375,14 +406,18 @@
}
-int lynq_wifi_ap_auth_set(lynq_wifi_index_e idx, lynq_wifi_ap_auth_s auth)
+int lynq_wifi_ap_auth_set(lynq_wifi_index_e idx, lynq_wifi_ap_auth_s auth)
{
FILE *fp;
+ int ret;
+ if(idx<0||idx>9){
+ return -1;
+ }
switch(auth){
case LYNQ_WIFI_AUTH_OPEN:
{
- char lynq_auth_cmd[64]={0};
- char lynq_auth_save[64]="IFNAME=wlan0 save_config\n";
+ char lynq_auth_cmd[MAX_CMD]={0};
+ char lynq_auth_save[MAX_CMD]="IFNAME=wlan0 save_config\n";
char lynq_cmd_quit[12]="quit\n";
sprintf(lynq_auth_cmd,"IFNAME=wlan0 set_net %d key_mgmt NONE\n",idx);
@@ -395,7 +430,7 @@
fwrite(lynq_auth_save,sizeof(lynq_auth_save),1,fp);
fwrite(lynq_cmd_quit,sizeof(lynq_cmd_quit),1,fp);
- int ret=pclose(fp);
+ ret=pclose(fp);
if(ret==-1){
perror("close file faild");
return -1;
@@ -405,10 +440,10 @@
case LYNQ_WIFI_AUTH_WPA_PSK:
{
- char lynq_auth_cmd[64]={0};
- char lynq_psk_cmd[64]={0};
- char lynq_pairwise_cmd[64]={0};
- char lynq_auth_save[64]="IFNAME=wlan0 save_config\n";
+ char lynq_auth_cmd[MAX_CMD]={0};
+ char lynq_psk_cmd[MAX_CMD]={0};
+ char lynq_pairwise_cmd[MAX_CMD]={0};
+ char lynq_auth_save[MAX_CMD]="IFNAME=wlan0 save_config\n";
char lynq_cmd_quit[12]="quit\n";
sprintf(lynq_auth_cmd,"IFNAME=wlan0 set_net %d proto WPA2\n",idx);
@@ -426,36 +461,38 @@
fwrite(lynq_auth_save,sizeof(lynq_auth_save),1,fp);
fwrite(lynq_cmd_quit,sizeof(lynq_cmd_quit),1,fp);
- int ret=pclose(fp);
+ ret=pclose(fp);
if(ret==-1){
perror("close file faild");
return -1;
}
-
break;
- }
+ }
default:
return -1;
}
-
return 0;
}
int lynq_wifi_ap_auth_get(lynq_wifi_index_e idx, lynq_wifi_ap_auth_s *auth)
{
+ CHECK_NULL_RETURN_VALUE(auth,"chanauthnel is null",-1);
char *lynq_wifi_ssid_cmd[]={"wpa_cli -iwlan0 -p/var/run/wpa_supplicant status"};
char lynq_cmd_ret[MAX_RET]={0};
char get_str_auth[20]={0};
char use_to_cmp[4]="WPA";
char strcn[20]="key_mgmt=";
+ if(idx<0||idx>9){
+ return -1;
+ }
FILE *fp;
if((fp=popen(lynq_wifi_ssid_cmd[0],"r"))==NULL){
perror("popen error!");
- return -1;
- }
- while(1){
+ return -1;
+ }
+ while(1){
if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){
if((strncmp(lynq_cmd_ret,strcn,9))==0)
{
@@ -486,8 +523,8 @@
FILE * fp;
char lynq_cmd_ret[MAX_RET]={0};
char lynq_tmp_cmd[MAX_CMD]={0};
- sprintf(lynq_tmp_cmd,"%s%d%s","/data/wl maxassoc ",max_sta_num,"\n");
- if(idx<0||idx>10){
+ sprintf(lynq_tmp_cmd,"/data/wl maxassoc %d%s",max_sta_num,"\n");
+ if(idx<0||idx>9){
return -1;
}
if((fp=popen(lynq_tmp_cmd,"r"))==NULL)
@@ -513,10 +550,11 @@
*/
int lynq_wifi_ap_max_sta_get(lynq_wifi_index_e idx,int* max_sta_num)
{
+ CHECK_NULL_RETURN_VALUE(max_sta_num,"max_sta_num is null",-1);
FILE *fp;
char get_str_num[5]={0};
char lynq_cmd_ret[MAX_RET]={0};
- if(idx<0||idx>10){
+ if(idx<0||idx>9){
return -1;
}
if((fp=popen("/data/wl maxassoc","r"))==NULL)
@@ -544,32 +582,29 @@
int lynq_wifi_ap_start(lynq_wifi_index_e idx)
{
-
FILE *fp;
- char LYNQ_WIFI_CMD[128]={0};
- char LYNQ_CMD_RET[MAX_CMD]={0};
- sprintf(LYNQ_WIFI_CMD,"wpa_cli -iwlan0 -p/var/run/wpa_supplicant select_net %d\n",idx);
+ char lynq_wifi_cmd[MAX_CMD]={0};
+ char lynq_cmd_quit[MAX_CMD]="quit";
+ if(idx<0||idx>9){
+ return -1;
+ }
+ sprintf(lynq_wifi_cmd,"IFNAME=wlan0 select_net %d\n",idx);
- if((fp=popen(LYNQ_WIFI_CMD,"r"))==NULL)
+ if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL)
{
perror("popen error!");
return -1;
}
- fgets(LYNQ_CMD_RET,sizeof(LYNQ_CMD_RET),fp);
+ fwrite(lynq_wifi_cmd,sizeof(lynq_wifi_cmd),1,fp);
+ fwrite(lynq_cmd_quit,sizeof(lynq_cmd_quit),1,fp);
- if((strncmp(LYNQ_CMD_RET,g_lynq_wifi_ok,strlen(g_lynq_wifi_ok)))!=0)
- {
- return -1;
- }
-
int ret=pclose(fp);
if(ret==-1)
{
perror("close file faild");
return -1;
}
-
return 0;
}
@@ -577,19 +612,21 @@
{
int lynq_stop;
int lynq_start;
-
+ if(idx<0||idx>9){
+ return -1;
+ }
lynq_stop = lynq_wifi_ap_stop(idx);
if ( lynq_stop != 0 )
{
return -1;
}
-
+
lynq_start = lynq_wifi_ap_start(idx);
if ( lynq_start != 0 )
{
return -1;
}
-
+
return 0;
}
@@ -597,37 +634,41 @@
int lynq_wifi_ap_stop(lynq_wifi_index_e idx)
{
FILE *fp;
- char LYNQ_WIFI_CMD[128]={0};
- char LYNQ_CMD_RET[MAX_CMD]={0};
- sprintf(LYNQ_WIFI_CMD,"wpa_cli -iwlan0 -p/var/run/wpa_supplicant disable_net %d\n",idx);
+ char lynq_wifi_cmd[MAX_CMD]={0};
+ char lynq_cmd_quit[MAX_CMD]="quit";
+ if(idx<0||idx>9){
+ return -1;
+ }
+ sprintf(lynq_wifi_cmd,"IFNAME=wlan0 disable_net %d\n",idx);
- if( (fp=popen(LYNQ_WIFI_CMD,"r")) == NULL ){
+ if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL)
+ {
perror("popen error!");
return -1;
}
-
- fgets( LYNQ_CMD_RET,sizeof(LYNQ_CMD_RET),fp );
-
- if((strncmp(LYNQ_CMD_RET,g_lynq_wifi_ok,sizeof(g_lynq_wifi_ok)))!=0){
- return -1;
- }
-
+
+ fwrite(lynq_wifi_cmd,sizeof(lynq_wifi_cmd),1,fp);
+ fwrite(lynq_cmd_quit,sizeof(lynq_cmd_quit),1,fp);
+
int ret=pclose(fp);
- if(ret==-1){
- perror("close file faild");
- return -1;
+ if(ret==-1)
+ {
+ perror("close file faild");
+ return -1;
}
-
return 0;
}
int lynq_wifi_ap_hide_ssid(lynq_wifi_index_e idx)
{
FILE *fp;
- char lynq_disable_cmd[128]={0};
- char lynq_select_cmd[128]={0};
+ char lynq_disable_cmd[MAX_CMD]={0};
+ char lynq_select_cmd[MAX_CMD]={0};
char lynq_hide_cmd[]="IFNAME=wlan0 SET HIDE_SSID 1\n";
-
+ if(idx<0||idx>9){
+ return -1;
+ }
+
sprintf(lynq_disable_cmd,"IFNAME=wlan0 disable_net %d\n",idx);
sprintf(lynq_select_cmd,"IFNAME=wlan0 select_net %d\n",idx);
if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL){
@@ -638,7 +679,7 @@
fwrite(lynq_disable_cmd,sizeof(lynq_disable_cmd),1,fp);
fwrite(lynq_hide_cmd,sizeof(lynq_hide_cmd),1,fp);
fwrite(lynq_select_cmd,sizeof(lynq_select_cmd),1,fp);
-
+
int ret=pclose(fp);
if(ret==-1){
perror("close file faild");
@@ -655,9 +696,12 @@
perror("popen error!");
return -1;
}
- char lynq_disable_cmd[128]={0};
- char lynq_select_cmd[128]={0};
- char lynq_unhide_cmd[128]="IFNAME=wlan0 SET HIDE_SSID 0\n";
+ char lynq_disable_cmd[MAX_CMD]={0};
+ char lynq_select_cmd[MAX_CMD]={0};
+ char lynq_unhide_cmd[MAX_CMD]="IFNAME=wlan0 SET HIDE_SSID 0\n";
+ if(idx<0||idx>9){
+ return -1;
+ }
sprintf(lynq_disable_cmd,"IFNAME=wlan0 disable_net %d\n",idx);
sprintf(lynq_select_cmd,"IFNAME=wlan0 select_net %d\n",idx);
@@ -665,7 +709,7 @@
fwrite(lynq_disable_cmd,sizeof(lynq_disable_cmd),1,fp);
fwrite(lynq_unhide_cmd,sizeof(lynq_unhide_cmd),1,fp);
fwrite(lynq_select_cmd,sizeof(lynq_select_cmd),1,fp);
-
+
int ret=pclose(fp);
if(ret==-1){
perror("close file faild");
@@ -681,12 +725,16 @@
int ret;
int pass_len;
pass_len=strlen(password);
- if(pass_len< 0 || pass_len > 256){
+ if(((pass_len+1) > MAX_CMD) || pass_len<8){
+ PRINT_AND_RETURN_VALUE("password is illgal",-1);
+ }else if((lynq_get_wifi_space(password))== 1){
+ PRINT_AND_RETURN_VALUE("password is illgal",-1);
+ }
+ if(idx<0||idx>9){
return -1;
}
-
char lynq_tmp_cmd[300]={0};
- char lynq_pass_save[64]="IFNAME=wlan0 save_config\n";
+ char lynq_pass_save[MAX_CMD]="IFNAME=wlan0 save_config\n";
char lynq_cmd_quit[12]="quit\n";
sprintf(lynq_tmp_cmd,"%s%d%s%s%s%s%s","IFNAME=wlan0 set_net ",idx," psk ","\"",password,"\"","\n");
@@ -698,12 +746,13 @@
fwrite(lynq_tmp_cmd,sizeof(lynq_tmp_cmd),1,fp);
fwrite(lynq_pass_save,sizeof(lynq_pass_save),1,fp);
fwrite(lynq_cmd_quit,sizeof(lynq_cmd_quit),1,fp);
-
+
ret=pclose(fp);
if(ret==-1){
perror("close file faild");
return -1;
}
+
return 0;
}
@@ -712,44 +761,52 @@
FILE *fp;
int pass_len;
pass_len=strlen(password);
- if(pass_len< 0 || pass_len > 256){
+ if(((pass_len+1) > MAX_CMD) || pass_len<8){
+ PRINT_AND_RETURN_VALUE("password is illgal",-1);
+ }else if((lynq_get_wifi_space(password))== 1){
+ PRINT_AND_RETURN_VALUE("password is illgal",-1);
+ }
+ if(idx<0||idx>9){
return -1;
}
char lynq_tmp_cmd[MAX_CMD]={0};
- char lynq_pass_save[64]="IFNAME=wlan0 save_config\n";
+ char lynq_pass_save[MAX_CMD]="IFNAME=wlan0 save_config\n";
char lynq_cmd_quit[12]="quit\n";
sprintf(lynq_tmp_cmd,"%s%d%s%s%s%s%s","IFNAME=wlan0 set_net ",idx," psk ","\"",password,"\"","\n");
-
+
if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL){
perror("popen error!");
return -1;
}
-
+
fwrite(lynq_tmp_cmd,sizeof(lynq_tmp_cmd),1,fp);
fwrite(lynq_pass_save,sizeof(lynq_pass_save),1,fp);
fwrite(lynq_cmd_quit,sizeof(lynq_cmd_quit),1,fp);
-
+
int ret=pclose(fp);
if(ret==-1){
perror("close file faild");
return -1;
}
-
+
return 0;
}
-/*
+
int lynq_wifi_sta_ssid_set(lynq_wifi_index_e idx,char *sta_ssid)
{
- printf("*******into lynq_wifi_sta_ssid_set\n");
FILE *fp;
- char lynq_wifi_ssid_cmd[128]={0};
+ char lynq_wifi_ssid_cmd[80]={0};
char lynq_tmp_cmd[MAX_CMD]={0};
- char lynq_cmd_save[128]="IFNAME=wlan0 save_config\n";
-
- sprintf(lynq_tmp_cmd,"IFNAME=wlan0 set_network %d ssid ",idx);
+ char lynq_cmd_save[]="IFNAME=wlan0 save_config\n";
+ sprintf(lynq_tmp_cmd,"%s%d%s","IFNAME=wlan0 set_network ",idx," ssid ");
sprintf(lynq_wifi_ssid_cmd,"%s%s%s%s%s",lynq_tmp_cmd,"\"",sta_ssid,"\"","\n");
- printf("set sta ssid cmd: %s\n",lynq_wifi_ssid_cmd);
+ if(idx<0||idx>9){
+ return -1;
+ }
+ if(((strlen(sta_ssid))>32)){
+ PRINT_AND_RETURN_VALUE("ssid is illgal",-1);
+ }
if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL){
perror("popen error!");
return -1;
@@ -757,48 +814,46 @@
fwrite(lynq_wifi_ssid_cmd,sizeof(lynq_wifi_ssid_cmd),1,fp);
fwrite(lynq_cmd_save,sizeof(lynq_cmd_save),1,fp);
-
- int ret=pclose(fp);
+
+ int ret=pclose(fp);
if(ret==-1){
perror("close file faild");
return -1;
}
-
- return 0;
+ return 0;
}
int lynq_wifi_sta_ssid_get(lynq_wifi_index_e idx,char* sta_ssid)
{
- FILE *fp;
- char get_ssid[108]={0};
+ CHECK_NULL_RETURN_VALUE(sta_ssid,"ap_ssid is null",-1);
+ FILE *fp;
char *lynq_wifi_ssid_cmd[]={"wpa_cli -iwlan0 -p/var/run/wpa_supplicant status"};
char lynq_cmd_ret[MAX_RET]={0};
char *strcn="ssid=";
if(idx>10||idx<0){
return -1;
- }
+ }
if((fp=popen(lynq_wifi_ssid_cmd[0],"r"))==NULL){
perror("popen error!");
- return -1;
- }
- while(1){
- if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){
- if((strncmp(lynq_cmd_ret,strcn,5))==0)
+ return -1;
+ }
+ while(1){
+ if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){
+ if((strncmp(lynq_cmd_ret,strcn,5))==0)
{
- sscanf(lynq_cmd_ret,"%*[^=]=%s",get_ssid);
- strcpy(sta_ssid,get_ssid);
- }
- }
- if(feof(fp))
- {
- break;
- }
- }
- if((pclose(fp))==-1){
- perror("close file faild");
- return -1;
- }
+ sscanf(lynq_cmd_ret,"%*[^=]=%s",sta_ssid);
+ }
+ }
+ if(feof(fp)){
+ break;
+ }
+ }
+
+ if((pclose(fp))==-1){
+ perror("close file faild");
+ return -1;
+ }
return 0;
}
@@ -806,90 +861,93 @@
int lynq_wifi_sta_auth_set(lynq_wifi_index_e idx, lynq_wifi_sta_auth_s auth)
{
FILE *fp;
+ int ret;
+ if(idx<0||idx>9){
+ return -1;
+ }
switch(auth){
case LYNQ_WIFI_STA_AUTH_OPEN:
{
- char lynq_auth_cmd[128]={0};
- char lynq_auth_save[]="IFNAME=wlan0 save_config\n";
- sprintf(lynq_auth_cmd,"%s%d%s","IFNAME=wlan0 set_net ",idx," key_mgmt NONE\n");
+ char lynq_auth_cmd[MAX_CMD]={0};
+ char lynq_auth_save[MAX_CMD]="IFNAME=wlan0 save_config\n";
+ char lynq_cmd_quit[12]="quit\n";
+ sprintf(lynq_auth_cmd,"IFNAME=wlan0 set_net %d key_mgmt NONE\n",idx);
+
if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL){
perror("popen error!");
return -1;
}
-
+
fwrite(lynq_auth_cmd,sizeof(lynq_auth_cmd),1,fp);
fwrite(lynq_auth_save,sizeof(lynq_auth_save),1,fp);
-
- int ret=pclose(fp);
+ fwrite(lynq_cmd_quit,sizeof(lynq_cmd_quit),1,fp);
+
+ ret=pclose(fp);
if(ret==-1){
perror("close file faild");
return -1;
- }
- break;
- }
+ }
+ break;
+ }
case LYNQ_WIFI_STA_AUTH_WPA_PSK:
{
- char lynq_auth_cmd[128]={0};
- char lynq_psk_cmd[128]={0};
- char lynq_pairwise_cmd[50]={0};
- char lynq_auth_save[128]="IFNAME=wlan0 save_config\n";
- sprintf(lynq_auth_cmd,"%s%d%s","IFNAME=wlan0 set_net ",idx," proto WPA2\n");
- sprintf(lynq_psk_cmd,"%s%d%s","IFNAME=wlan0 set_net ",idx," key_mgmt WPA-PSK\n");
- sprintf(lynq_pairwise_cmd,"%s%d%s","IFNAME=wlan0 set_net ",idx," pairwise CCMP\n");
-
+ char lynq_auth_cmd[MAX_CMD]={0};
+ char lynq_psk_cmd[MAX_CMD]={0};
+ char lynq_pairwise_cmd[MAX_CMD]={0};
+ char lynq_auth_save[MAX_CMD]="IFNAME=wlan0 save_config\n";
+ char lynq_cmd_quit[12]="quit\n";
+
+ sprintf(lynq_auth_cmd,"IFNAME=wlan0 set_net %d proto WPA2\n",idx);
+ sprintf(lynq_psk_cmd,"IFNAME=wlan0 set_net %d key_mgmt WPA-PSK\n",idx);
+ sprintf(lynq_pairwise_cmd,"IFNAME=wlan0 set_net %d pairwise CCMP\n",idx);
+
if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL){
perror("popen error!");
return -1;
}
-
+
fwrite(lynq_auth_cmd,sizeof(lynq_auth_cmd),1,fp);
fwrite(lynq_psk_cmd,sizeof(lynq_psk_cmd),1,fp);
fwrite(lynq_pairwise_cmd,sizeof(lynq_pairwise_cmd),1,fp);
fwrite(lynq_auth_save,sizeof(lynq_auth_save),1,fp);
-
- int ret=pclose(fp);
- if(ret==-1)
- {
+ fwrite(lynq_cmd_quit,sizeof(lynq_cmd_quit),1,fp);
+
+ ret=pclose(fp);
+ if(ret==-1){
perror("close file faild");
return -1;
}
-
break;
- }
+ }
default:
return -1;
- }
-
+ }
+
return 0;
}
int lynq_wifi_sta_auth_get(lynq_wifi_index_e idx, lynq_wifi_sta_auth_s* auth)
{
- FILE *fp;
- char *lynq_wifi_auth_cmd[]={"wpa_cli -iwlan0 -p/var/run/wpa_supplicant status"};
+ CHECK_NULL_RETURN_VALUE(auth,"chanauthnel is null",-1);
+ char *lynq_wifi_ssid_cmd[]={"wpa_cli -iwlan0 -p/var/run/wpa_supplicant status"};
char lynq_cmd_ret[MAX_RET]={0};
- char get_auth[12]={0};
- char strcn[12]="key_mgmt=";
- char open[12]="NONE";
+ char get_str_auth[20]={0};
+ char use_to_cmp[4]="WPA";
+ char strcn[20]="key_mgmt=";
- if(idx<0||idx>10){
- return -1;
- }
-
- if((fp=popen(lynq_wifi_auth_cmd[0],"r"))==NULL){
+ FILE *fp;
+ if((fp=popen(lynq_wifi_ssid_cmd[0],"r"))==NULL){
perror("popen error!");
- return -1;
+ return -1;
}
while(1){
- if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL)
- {
+ if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){
if((strncmp(lynq_cmd_ret,strcn,9))==0)
{
- sscanf(lynq_cmd_ret,"%*[^=]=%s",get_auth);
- if((strcmp(open,get_auth))==0){
- *auth=LYNQ_WIFI_AUTH_OPEN;
- }else{
- *auth=LYNQ_WIFI_AUTH_WPA_PSK;
+ sscanf(lynq_cmd_ret,"%*[^=]=%s",get_str_auth);
+ if((strncmp(get_str_auth,use_to_cmp,3))==0){
+ *auth=LYNQ_WIFI_AUTH_WPA_PSK;
+ break;
}
}
}
@@ -897,67 +955,73 @@
break;
}
}
- if((pclose(fp))==-1)
- {
+ if(*auth!=LYNQ_WIFI_AUTH_WPA_PSK){
+ *auth=LYNQ_WIFI_AUTH_OPEN;
+ }
+ if((pclose(fp))==-1){
perror("close file faild");
return -1;
- }
-
- return 0;
+ }
}
-int lynq_wifi_sta_connect(void)
+int lynq_wifi_sta_connect(lynq_wifi_index_e idx)
{
-
FILE *fp;
- char lynq_wifi_cmd[128]={0};
- char lynq_cmd_ret[MAX_RET]={0};
- sprintf(lynq_wifi_cmd,"wpa_cli -iwlan0 -p/var/run/wpa_supplicant select_net %d\n",idx);
+ char lynq_wifi_cmd[MAX_CMD]={0};
+ char lynq_cmd_quit[MAX_CMD]="quit\n";
+ if(idx<0||idx>9){
+ return -1;
+ }
+ sprintf(lynq_wifi_cmd,"IFNAME=wlan0 select_net %d\n",idx);
- if((fp=popen(lynq_wifi_cmd,"r"))==NULL){
+ if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL)
+ {
perror("popen error!");
return -1;
}
- fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp);
- if((strncmp(lynq_cmd_ret,g_lynq_wifi_ok,strlen(g_lynq_wifi_ok)))!=0){
- return -1;
- }
+ fwrite(lynq_wifi_cmd,sizeof(lynq_wifi_cmd),1,fp);
+ fwrite(lynq_cmd_quit,sizeof(lynq_cmd_quit),1,fp);
int ret=pclose(fp);
- if(ret==-1){
- perror("close file faild");
- return -1;
+ if(ret==-1)
+ {
+ perror("close file faild");
+ return -1;
}
-
return 0;
}
int lynq_wifi_sta_disconnect(lynq_wifi_index_e idx)
{
FILE *fp;
- char LYNQ_WIFI_CMD[128]={0};
- char LYNQ_CMD_RET[MAX_CMD]={0};
- sprintf(LYNQ_WIFI_CMD,"wpa_cli -iwlan0 -p/var/run/wpa_supplicant disable_net %d\n",idx);
- if((fp=popen(LYNQ_WIFI_CMD,"r"))==NULL){
+ char lynq_wifi_cmd[MAX_CMD]={0};
+ char lynq_cmd_quit[MAX_CMD]="quit\n";
+ if(idx<0||idx>9){
+ return -1;
+ }
+ sprintf(lynq_wifi_cmd,"IFNAME=wlan0 disable_net %d\n",idx);
+
+ if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL)
+ {
perror("popen error!");
return -1;
}
- fgets(LYNQ_CMD_RET,sizeof(LYNQ_CMD_RET),fp);
- if((strncmp(LYNQ_CMD_RET,g_lynq_wifi_ok,strlen(g_lynq_wifi_ok)))!=0){
- return -1;
- }
+ fwrite(lynq_wifi_cmd,sizeof(lynq_wifi_cmd),1,fp);
+ fwrite(lynq_cmd_quit,sizeof(lynq_cmd_quit),1,fp);
+
int ret=pclose(fp);
- if(ret==-1){
- perror("close file faild");
- return -1;
+ if(ret==-1)
+ {
+ perror("close file faild");
+ return -1;
}
return 0;
}
-*/
+
int lynq_wifi_wpa_start(void){
int ret;
pthread_t pth;
@@ -972,39 +1036,40 @@
}
int lynq_wifi_wpacli_start(void){
-
FILE *fp;
int i=0;
char lynq_cmd_ret[MAX_RET]={0};
- char add_cmd[128]="IFNAME=wlan0 add_net\n";
- char save_cmd[128]="IFNAME=wlan0 save_config\n";
+ char add_cmd[MAX_CMD]="IFNAME=wlan0 add_net\n";
+ char save_cmd[MAX_CMD]="IFNAME=wlan0 save_config\n";
char exit_cmd[20]="quit\n";
-
+ if(lynq_get_idx_number() == 1){
+ PRINT_AND_RETURN_VALUE("don't need add idx agin\n",0);
+ }
fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w");
if(fp==NULL){
perror("start wpa_supplicant faild!");
return -1;
}
- for(i=0;i<9;i++){
+ for(i=0;i<10;i++){
fwrite(add_cmd,sizeof(add_cmd),1,fp);
}
fwrite(save_cmd,sizeof(save_cmd),1,fp);
fwrite(exit_cmd,sizeof(exit_cmd),1,fp);
-
+
int ret=pclose(fp);
if(ret==-1)
{
perror("close file faild");
return -1;
}
-
+
return 0;
}
pid_t GetPIDbyName(char* ps_name)
-{
+{
FILE *fp;
char *cmd=(char*)calloc(1,200);
sprintf(cmd,"pidof %s",ps_name);
@@ -1014,3 +1079,71 @@
return atoi(cmd);
}
+int lynq_get_idx_number(void)
+{
+ FILE *fp;
+ const char* number="9";
+ char lynq_wifi_ssid_cmd[MAX_CMD]="wpa_cli -iwlan0 -p/var/run/wpa_supplicant list_net";
+ char lynq_cmd_ret[MAX_RET]={0};
+
+ if((fp=popen(lynq_wifi_ssid_cmd,"r"))==NULL){
+ perror("popen error!");
+ return -1;
+ }
+ while(1){
+ if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){
+ if((strncmp(lynq_cmd_ret,number,1))==0)
+ {
+ CLOSE_FP_RETURN_VALUE(fp,"don't need add idx",1);
+ }
+ }
+ if(feof(fp)){
+ break;
+ }
+ }
+
+ if((pclose(fp))==-1){
+ perror("close file faild");
+ return -1;
+ }
+
+ return 0;
+}
+
+
+int lynq_get_wifi_mac(char* wifi_mac)
+{
+ FILE * fp;
+ char lynq_cmd_ret[MAX_RET]={0};
+ char lynq_tmp_cmd[MAX_CMD]={0};
+
+ if((fp=popen("/data/wl cur_etheraddr","r"))==NULL)
+ {
+ perror("popen error!");
+ return -1;
+ }
+ if((fread(lynq_cmd_ret,sizeof(lynq_cmd_ret),1,fp))<0)
+ {
+ perror("fread fail!");
+ return -1;
+ }
+ strncpy(wifi_mac,lynq_cmd_ret+14,18);
+ int ret=pclose(fp);
+ if(ret==-1)
+ {
+ perror("close file faild");
+ return -1;
+ }
+
+ return 0;
+}
+int lynq_get_wifi_space(char* password){
+ int i;
+ for(i=0;password[i];i++){
+ if(isspace(password[i])){
+ return 1;
+ }
+ }
+
+ return 0;
+}