[FEATURE]WIFI API

Change-Id: I6e047a91a3a3f1068c253760de0044ca0bf230e7
diff --git a/lib/liblynq-wifi6/src/libwifi6.c b/lib/liblynq-wifi6/src/libwifi6.c
new file mode 100644
index 0000000..c4156e5
--- /dev/null
+++ b/lib/liblynq-wifi6/src/libwifi6.c
@@ -0,0 +1,854 @@
+#include <stdio.h>
+#include <sys/types.h>
+#include <string.h>
+
+#include "libwifi6.h"
+
+
+#define MAX_CMD 128
+#define MAX_RET 1024
+char LYNQ_WIFI_OK[3]="OK";
+char WIFI_SSID[32]={0};
+char WIFI_MODE[8]={0};
+char WIFI_KEY_MGMT[36]={0};
+char WIFI_CHANNEL[8]={0};
+char WIFI_BANDWIDTH[8]={0};
+char MAX_STA_NUM[24]={0};
+
+int lynq_wifi_enable(void){
+	char lynq_cmd_ret[MAX_RET]={0};
+	char *lynq_wifi_enable[]={"insmod /lib/modules/4.19.98/kernel/drivers/net/wireless/bcmdhd/bcmdhd.ko "
+		"firmware_path=/system/etc/firmware/wifi/wg870/w870_rtecdc_mfg.trxs "
+		"nvram_path=/system/etc/firmware/wifi/wg870/cyw955572fcipa_rev2.52.txt"};
+	FILE *fp;
+	if((popen(lynq_wifi_enable[0],"w"))==NULL){
+		perror("popen error!");
+		return -1;
+		}
+	int ret=pclose(fp);
+	if(ret==-1){
+		perror("close file faild");
+		return -1;
+		}
+	return 0;
+}
+
+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;
+		}
+	return 0;
+}
+
+int lynq_wifi_work_mode_set(int mode)
+{	
+	FILE *fp;
+	switch(mode){
+		case LYNQ_WIFI_WORK_MODE_STA:
+			if((fp=popen("IFNAME=wlan0 status","r"))==NULL){
+				perror("popen error!");
+				return -1;
+			}
+			break;
+		case LYNQ_WIFI_WORK_MODE_AP:
+			if((fp=popen("IFNAME=wlan0 status","r"))==NULL){
+				perror("popen error!");
+				return -1;
+			}
+			break;
+		case LYNQ_WIFI_WORK_MODE_AP_STA:
+			if((fp=popen("IFNAME=wlan0 status","r"))==NULL){
+				perror("popen error!");
+				return -1;
+			}
+			break;
+		default:
+			return -1;
+		}
+	return 0;
+}
+
+int lynq_wifi_work_mode_get(void)
+{
+	char *lynq_wifi_ssid_cmd[]={"IFNAME=wlan0 status"};
+	char lynq_cmd_ret[MAX_RET]={0}; 
+	char *strcn="mode=";
+	
+	FILE *fp;	
+	printf("%s \n",lynq_wifi_ssid_cmd[0]);	
+	if((fp=popen(lynq_wifi_ssid_cmd[0],"r"))==NULL){		
+		perror("popen error!"); 	
+		printf("***************\n");		
+		return -1;	
+		}	
+	while(1){		
+		if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){			
+			printf("cmd_ret is:%s",lynq_cmd_ret);			
+			if((strncmp(lynq_cmd_ret,strcn,5))==0)			
+				{										
+					sscanf(lynq_cmd_ret,"%*[^=]=%s",WIFI_MODE);										
+					}					
+			}		
+		if(feof(fp)){			
+			break;			
+			}			
+		}	
+	if((pclose(fp))==-1){		
+		perror("close file faild"); 	
+		return -1;	
+		}	
+	return 0;
+
+}
+
+int lynq_wifi_ap_ssid_set(char *ssid)
+{
+	FILE *fp;
+	char lynq_tmp_cmd[MAX_CMD]={0};
+	char lynq_cmd_ret[MAX_CMD]={0};
+	char *lynq_wifi_ssid_cmd[]={"IFNAME=wlan0 set_network 0 ssid "};
+	char lynq_cmd_save[]="IFNAME=wlan0 save_config\n";
+	sprintf(lynq_tmp_cmd,"%s%s%s%s%s",lynq_wifi_ssid_cmd[0],"\"",ssid,"\"","\n");
+
+	if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL){
+			perror("popen error!");
+			return -1;
+		}
+	for(int i=0;i<1;i++){
+		fwrite(lynq_tmp_cmd,sizeof(lynq_tmp_cmd),1,fp);
+		fwrite(lynq_cmd_save,sizeof(lynq_cmd_save),1,fp);		
+	}
+	int ret=pclose(fp);
+		if(ret==-1){
+			perror("close file faild");
+			return -1;
+		}
+	return 0;
+
+}
+
+int lynq_wifi_ap_ssid_get(void)
+{
+	char *lynq_wifi_ssid_cmd[]={"IFNAME=wlan0 status"};
+	char lynq_cmd_ret[MAX_RET]={0}; 
+	char *strcn="ssid=";
+	
+	FILE *fp;	
+	printf("%s \n",lynq_wifi_ssid_cmd[0]);	
+	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){			
+			printf("cmd_ret is:%s",lynq_cmd_ret);			
+			if((strncmp(lynq_cmd_ret,strcn,5))==0)			
+				{										
+					sscanf(lynq_cmd_ret,"%*[^=]=%s",WIFI_SSID);										
+					}					
+			}		
+		if(feof(fp)){			
+			break;			
+			}			
+		}	
+	if((pclose(fp))==-1){		
+		perror("close file faild"); 	
+		return -1;	
+		}	
+	return 0;
+
+}
+
+int lynq_wifi_ap_bandwidth_set(char *bandwidth)
+{
+	FILE *fp;
+	char lynq_tmp_cmd[MAX_CMD]={0};
+	char lynq_cmd_ret[MAX_CMD]={0};
+	char *lynq_wifi_bandwidth_cmd[]={"IFNAME=wlan0 set_network 0 frequency "};
+	char lynq_cmd_mode[]="IFNAME=wlan0 set_net 0 mode 2\n";
+	char lynq_cmd_save[]="IFNAME=wlan0 save_config\n";
+	char lynq_cmd_slect[]="IFNAME=wlan0 select_net 0\n";
+	
+	sprintf(lynq_tmp_cmd,"%s%s%s",lynq_wifi_bandwidth_cmd[0],bandwidth,"\n");;
+
+	if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL){
+			perror("popen error!");
+			return -1;
+		}
+	for(int i=0;i<1;i++){
+		fwrite(lynq_tmp_cmd,sizeof(lynq_tmp_cmd),1,fp);
+		fwrite(lynq_cmd_mode,sizeof(lynq_cmd_mode),1,fp);
+		fwrite(lynq_cmd_save,sizeof(lynq_cmd_save),1,fp);
+		fwrite(lynq_cmd_slect,sizeof(lynq_cmd_slect),1,fp);
+
+		}
+	
+	int ret=pclose(fp);
+	if(ret==-1){
+			perror("close file faild");
+			return -1;
+		}
+
+	return 0;
+
+}
+
+int lynq_wifi_ap_bandwidth_get(void)
+{
+	char *lynq_wifi_bandwidth_cmd[]={"wl -i wlan0 status"};
+	char lynq_cmd_ret[MAX_RET]={0}; 
+	char *strcn="        Chanspec:";
+	
+	FILE *fp;	
+	printf("%s \n",lynq_wifi_bandwidth_cmd[0]);	
+	if((fp=popen(lynq_wifi_bandwidth_cmd[0],"r"))==NULL){		
+		perror("popen error!");		
+		return -1;	
+		}	
+	while(1){		
+		if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){			
+			printf("cmd_ret is:%s",lynq_cmd_ret);			
+			if((strncmp(lynq_cmd_ret,strcn,17))==0)			
+				{										
+					strncpy(WIFI_BANDWIDTH,lynq_cmd_ret+34,5);												
+				}					
+			}		
+		if(feof(fp)){			
+			break;			
+			}			
+		}	
+	if((pclose(fp))==-1){		
+		perror("close file faild"); 	
+		return -1;	
+		}	
+	return 0;
+
+}
+
+int lynq_wifi_ap_channel_set(char *channel)
+{
+	FILE *fp;
+
+	char lynq_tmp_cmd[MAX_CMD]={0};
+	char *lynq_channel_cmd[]={"wl down","wl chanspec ","wl up"}; 
+	sprintf(lynq_tmp_cmd,"%s%s",lynq_channel_cmd[1],channel);
+	lynq_channel_cmd[1]=lynq_tmp_cmd;
+	memset(lynq_tmp_cmd,0,sizeof(lynq_tmp_cmd));
+	sprintf(lynq_tmp_cmd,"%s%s%s%s%s%s",lynq_channel_cmd[0],"\n",lynq_channel_cmd[1],"\n",lynq_channel_cmd[2],"\n");
+	printf("into lynq_wifi_ap_channel_set function \n");
+	printf("lynq_tmp_cmd is %s\n",lynq_tmp_cmd);
+	if((fp=popen(lynq_tmp_cmd,"w"))==NULL){
+			perror("popen error!");
+			return -1;
+		}			
+	int ret=pclose(fp);
+	if(ret==-1){
+		perror("close file faild");
+		return -1;
+	}
+			
+	return 0;
+}
+
+int lynq_wifi_ap_channel_get(void)
+{
+	char *lynq_wifi_channel_cmd[]={"wl -i wlan0 status"};
+	char lynq_cmd_ret[MAX_RET]={0}; 
+	char *strcn="        Primary channel: ";
+	
+	FILE *fp;	
+	printf("%s \n",lynq_wifi_channel_cmd[0]);	
+	if((fp=popen(lynq_wifi_channel_cmd[0],"r"))==NULL){		
+		perror("popen error!"); 	
+		printf("***************\n");		
+		return -1;	
+		}	
+	while(1){		
+		if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){			
+			printf("cmd_ret is:%s",lynq_cmd_ret);			
+			if((strncmp(lynq_cmd_ret,strcn,24))==0)			
+				{										
+					strncpy(WIFI_CHANNEL,lynq_cmd_ret+24,3);												
+				}					
+			}		
+		if(feof(fp)){			
+			break;			
+			}			
+		}	
+	if((pclose(fp))==-1){		
+		perror("close file faild"); 	
+		return -1;	
+		}	
+	return 0;
+}
+
+
+int lynq_wifi_ap_auth_set(int auth,char *lynq_auth) 
+{
+	FILE *fp;
+	switch(auth){
+		case LYNQ_WIFI_STA_AUTH_OPEN:
+		{
+			char lynq_cmd_ret[MAX_RET]={0};
+			if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL){
+				perror("popen error!");
+				return -1;
+			}
+			char lynq_auth_cmd[]="IFNAME=wlan0 set_net 0 key_mgmt NONE\n";
+			char lynq_auth_save[]="IFNAME=wlan0 save_config\n";
+
+			fwrite(lynq_auth_cmd,sizeof(lynq_auth_cmd),1,fp);
+			fwrite(lynq_auth_save,sizeof(lynq_auth_save),1,fp);
+			
+			int ret=pclose(fp);
+			if(ret==-1){
+				perror("close file faild");
+				return -1;
+				}
+			break;
+		}
+		case LYNQ_WIFI_STA_AUTH_WPA_PSK:
+		{
+			char lynq_tmp_cmd[MAX_CMD]={0};
+			char lynq_cmd_ret[MAX_CMD]={0};
+			char *lynq_auth_cmd[]={"wlan0 set_net 0 proto "};
+			
+			char lynq_psk_cmd[]="IFNAME=wlan0 set_net 0 key_mgmt WPA-PSK\n";
+			char lynq_pairwise_cmd[]="IFNAME=wlan0 set_net 0 pairwise CCMP\n";
+			char lynq_auth_save[]="IFNAME=wlan0 save_config\n";
+			sprintf(lynq_tmp_cmd,"%s%s%s",lynq_auth_cmd[0],lynq_auth,"\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_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){
+				perror("close file faild");
+				return -1;
+			}
+		
+			break;
+		}		
+		default:
+			return -1;
+			}
+
+
+	return 0;
+}
+
+int lynq_wifi_ap_auth_get(void)
+{
+	char *lynq_wifi_ssid_cmd[]={"IFNAME=wlan0 status"};
+	char lynq_cmd_ret[MAX_RET]={0}; 
+	char *strcn="key_mgmt=";
+	
+	FILE *fp;	
+	printf("%s \n",lynq_wifi_ssid_cmd[0]);	
+	if((fp=popen(lynq_wifi_ssid_cmd[0],"r"))==NULL){		
+		perror("popen error!"); 	
+		printf("***************\n");		
+		return -1;	
+		}	
+	while(1){		
+		if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){			
+			printf("cmd_ret is:%s",lynq_cmd_ret);			
+			if((strncmp(lynq_cmd_ret,strcn,9))==0)			
+				{										
+					sscanf(lynq_cmd_ret,"%*[^=]=%s",WIFI_KEY_MGMT);													
+				}					
+			}		
+		if(feof(fp)){			
+			break;			
+			}			
+		}	
+	if((pclose(fp))==-1){		
+		perror("close file faild"); 	
+		return -1;	
+		}	
+	return 0;
+
+}
+
+int lynq_wifi_ap_max_sta_set(char *max_sta_num)
+{	
+	
+	FILE * fp;
+	char lynq_cmd_ret[MAX_RET]={0};
+	char lynq_tmp_cmd[MAX_CMD]={0};
+	char *lynq_max_sta_cmd[]={"wl maxassoc "};
+	sprintf(lynq_tmp_cmd,"%s%s%s",lynq_max_sta_cmd[0],max_sta_num,"\n");
+	lynq_max_sta_cmd[0]=lynq_tmp_cmd;
+	if((fp=popen(lynq_max_sta_cmd[0],"w"))==NULL){
+		perror("popen error!");
+		return -1;
+	}
+	if((fread(lynq_cmd_ret,sizeof(lynq_cmd_ret),1,fp))<0){
+		perror("fread fail!");
+		return -1;
+	}
+	int ret=pclose(fp);
+	if(ret==-1){
+		perror("close file faild");
+		return -1;
+	 }
+	return 0;
+}
+
+int lynq_wifi_ap_max_sta_get(void)
+{
+	FILE *fp;
+	char lynq_cmd_ret[MAX_RET]={0};
+	if((fp=popen("wl maxassoc","r"))==NULL){
+			perror("popen error!");
+			return -1;
+		}
+	if((fread(lynq_cmd_ret,sizeof(lynq_cmd_ret),1,fp))<0){
+		perror("fread fail!");
+		return -1;
+	}
+	strcpy(MAX_STA_NUM,lynq_cmd_ret);
+	int ret=pclose(fp);
+	if(ret==-1){
+		perror("close file faild");
+		return -1;
+		}
+	return 0;
+}
+
+int lynq_wifi_ap_start(void)
+{
+	FILE *fp;
+	char lynq_cmd_ret[MAX_CMD]={0};
+	if((fp=popen("IFNAME=wlan0 enable_net 0","r"))==NULL){
+			perror("popen error!");
+			return -1;
+		}
+	if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))==NULL){
+		perror("fgets fail!");
+		return -1;
+		}
+	if((strncmp(lynq_cmd_ret,LYNQ_WIFI_OK,2))==0){
+		printf("cmd is work\n");
+	}else{
+		printf("cmd isn't work please check your cmd\n");
+		}
+	
+	int ret=pclose(fp);
+	if(ret==-1){
+		perror("close file faild");
+		return -1;
+		}
+
+	return 0;
+}
+
+int lynq_wifi_ap_restart(void)
+{
+	FILE *fp;
+	char lynq_tmp_cmd[MAX_CMD]={0};
+	char lynq_cmd_ret[MAX_CMD]={0};
+	char *lynq_wifi_restart_cmd[]={"IFNAME=wlan0 disable_net 0 ","IFNAME=wlan0 enable_net 0"};	
+	lynq_wifi_restart_cmd[0]=lynq_tmp_cmd;
+	
+	for(int i=0;i<2;i++){
+		if((fp=popen(lynq_wifi_restart_cmd[i],"r"))==NULL){
+				perror("popen error!");
+				return -1;
+			}
+		if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))==NULL){
+				perror("fgets fail!");
+				return -1;
+			}
+		if((strncmp(lynq_cmd_ret,LYNQ_WIFI_OK,2))==0){
+				printf("cmd is work\n");
+			}else{
+					printf("cmd isn't work please check your cmd\n");
+					}
+		memset(lynq_cmd_ret,0,sizeof(lynq_cmd_ret));
+	
+		int ret=pclose(fp);
+		if(ret==-1){
+			perror("close file faild");
+			return -1;
+			}
+		}
+	return 0;
+
+}
+
+int lynq_wifi_ap_stop(void)
+{
+	FILE *fp;
+	char lynq_cmd_ret[MAX_CMD]={0};
+	if((fp=popen("IFNAME=wlan0 disable_net 0","r"))==NULL){
+			perror("popen error!");
+			return -1;
+		}
+	if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))==NULL){
+		perror("fgets fail!");
+		return -1;
+	}
+	if((strncmp(lynq_cmd_ret,LYNQ_WIFI_OK,2))==0){
+		printf("cmd is work\n");
+	}else{
+		printf("cmd isn't work please check your cmd\n");
+		}
+	
+	int ret=pclose(fp);
+	if(ret==-1){
+		perror("close file faild");
+		return -1;
+		}
+
+	return 0;
+}
+int lynq_wifi_ap_hide_ssid(void)
+{
+	FILE *fp;
+	if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL){
+		perror("popen error!");
+		return -1;
+	}
+	char lynq_disable_cmd[]="IFNAME=wlan0 disable_net 0\n";
+	char lynq_hide_cmd[]="IFNAME=wlan0 SET HIDE_SSID 1\n";
+	char lynq_select_cmd[]="IFNAME=wlan0 select_net 0\n";
+
+	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");
+		return -1;
+		}	
+		return 0;
+}
+
+int lynq_wifi_ap_unhide_ssid(void)
+{
+	FILE *fp;
+	if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL){
+		perror("popen error!");
+		return -1;
+	}
+	char lynq_disable_cmd[]="IFNAME=wlan0 disable_net 0\n";
+	char lynq_unhide_cmd[]="IFNAME=wlan0 SET HIDE_SSID 0\n";
+	char lynq_select_cmd[]="IFNAME=wlan0 select_net 0\n";
+
+	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");
+		return -1;
+		}
+
+	return 0;
+}
+int lynq_wifi_ssid_pass_set(char * password)
+{
+	FILE *fp;
+	char lynq_tmp_cmd[MAX_CMD]={0};
+	char *lynq_pass_ssid_cmd[]={"IFNAME=wlan0 set_net 0 psk ","IFNAME=wlan0 save_config"};
+	sprintf(lynq_tmp_cmd,"%s%s%s%s%s",lynq_pass_ssid_cmd[0],"\"",password,"\"","\n");
+	
+	if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL){
+			perror("popen error!");
+			return -1;
+		}
+	
+	char lynq_pass_save[]="IFNAME=wlan0 save_config\n";
+
+	fwrite(lynq_tmp_cmd,sizeof(lynq_tmp_cmd),1,fp);
+	fwrite(lynq_pass_save,sizeof(lynq_pass_save),1,fp);
+	
+	int ret=pclose(fp);
+	if(ret==-1){
+		perror("close file faild");
+		return -1;
+	}
+	
+	return 0;
+}
+
+
+int lynq_wifi_sta_ssid_set(char *ssid)
+{
+	
+	char lynq_tmp_cmd[MAX_CMD]={0};
+	char lynq_cmd_ret[MAX_CMD]={0};
+	char *lynq_wifi_ssid_cmd[]={"IFNAME=wlan0 set_network 0 ssid ","IFNAME=wlan0 save_config"};
+	sprintf(lynq_tmp_cmd,"%s%s%s%s",lynq_wifi_ssid_cmd[0],"\"",ssid,"\"");
+	lynq_wifi_ssid_cmd[0]=lynq_tmp_cmd;
+
+	for(int i=0;i<2;i++){
+		FILE *fp;
+		if((fp=popen(lynq_wifi_ssid_cmd[i],"r"))==NULL){
+				perror("popen error!");
+				return -1;
+			}
+		if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))==NULL){
+				perror("popen error!");
+				return -1;
+			}
+		if((strncmp(lynq_cmd_ret,LYNQ_WIFI_OK,2))==0){
+				printf("cmd is work\n");
+			}else{
+				printf("cmd isn't work please check your cmd\n");
+				}
+	
+		int ret=pclose(fp);
+		if(ret==-1){
+			perror("close file faild");
+			return -1;
+		}
+	}
+	return 0;
+}
+
+int lynq_wifi_sta_ssid_get(void)
+{
+	char *lynq_wifi_ssid_cmd[]={"IFNAME=wlan0 status"};
+	char lynq_cmd_ret[MAX_RET]={0}; 
+	char *strcn="ssid=";
+	
+	FILE *fp;		
+	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)			
+				{							
+					sscanf(lynq_cmd_ret,"%*[^=]=%s",WIFI_SSID);										
+					printf("ssid is :%s\n",WIFI_SSID);			
+					}					
+			}		
+		if(feof(fp)){			
+			break;			
+			}			
+		}	
+	if((pclose(fp))==-1){		
+		perror("close file faild"); 	
+		return -1;	
+		}	
+	return 0;
+
+}
+
+int lynq_wifi_sta_auth_set(int auth,char *lynq_auth)
+{
+		FILE *fp;
+		switch(auth){
+			case LYNQ_WIFI_STA_AUTH_OPEN:
+			{
+				char lynq_cmd_ret[MAX_RET]={0};
+				if((fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w"))==NULL){
+					perror("popen error!");
+					return -1;
+				}
+				char lynq_auth_cmd[]="IFNAME=wlan0 set_net 0 key_mgmt NONE\n";
+				char lynq_auth_save[]="IFNAME=wlan0 save_config\n";
+
+				fwrite(lynq_auth_cmd,sizeof(lynq_auth_cmd),1,fp);
+				fwrite(lynq_auth_save,sizeof(lynq_auth_save),1,fp);
+			
+				int ret=pclose(fp);
+				if(ret==-1){
+					perror("close file faild");
+					return -1;
+					}
+				break;
+			}
+			case LYNQ_WIFI_STA_AUTH_WPA_PSK:
+			{
+				char lynq_tmp_cmd[MAX_CMD]={0};
+				char lynq_cmd_ret[MAX_CMD]={0};
+				char *lynq_auth_cmd[]={"wlan0 set_net 0 proto "};
+			
+				char lynq_psk_cmd[]="IFNAME=wlan0 set_net 0 key_mgmt WPA-PSK\n";
+				char lynq_pairwise_cmd[]="IFNAME=wlan0 set_net 0 pairwise CCMP\n";
+				char lynq_auth_save[]="IFNAME=wlan0 save_config\n";
+				sprintf(lynq_tmp_cmd,"%s%s%s",lynq_auth_cmd[0],lynq_auth,"\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_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){
+				perror("close file faild");
+				return -1;
+			}
+		
+			break;	
+				}		
+			default:
+				return -1;
+				}
+	
+	
+		return 0;
+	}
+
+int lynq_wifi_sta_auth_get(void)
+{
+	char *lynq_wifi_auth_cmd[]={"IFNAME=wlan0 status"};
+	char lynq_cmd_ret[MAX_RET]={0}; 
+	char *strcn="key_mgmt=";
+	
+	FILE *fp;	
+	printf("%s \n",lynq_wifi_auth_cmd[0]);	
+	if((fp=popen(lynq_wifi_auth_cmd[0],"r"))==NULL){		
+		perror("popen error!"); 	
+		printf("***************\n");		
+		return -1;	
+		}	
+	while(1){		
+		if((fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp))!=NULL){			
+			printf("cmd_ret is:%s",lynq_cmd_ret);			
+			if((strncmp(lynq_cmd_ret,strcn,9))==0)			
+				{										
+					sscanf(lynq_cmd_ret,"%*[^=]=%s",WIFI_KEY_MGMT);													
+				}					
+			}		
+		if(feof(fp)){			
+			break;			
+			}			
+		}	
+	if((pclose(fp))==-1){		
+		perror("close file faild"); 	
+		return -1;	
+		}	
+	return 0;
+
+}
+
+int lynq_wifi_sta_connect(void)
+{
+	FILE *fp;
+	char lynq_cmd_ret[MAX_RET]={0}; 
+	if((fp=popen("IFNAME=wlan0 enable_network 0","r"))==NULL){
+			perror("popen error!");
+			return -1;
+		}
+	fgets(lynq_cmd_ret,sizeof(lynq_cmd_ret),fp);
+
+	if((strncmp(lynq_cmd_ret,LYNQ_WIFI_OK,sizeof(LYNQ_WIFI_OK)))==0){
+			printf("cmd is work");
+		}
+
+	int ret=pclose(fp);
+	if(ret==-1){
+		perror("close file faild");
+		return -1;
+		}
+
+	return 0;
+}
+
+int lynq_wifi_sta_disconnect(void)
+{
+	FILE *fp;
+	char LYNQ_CMD_RET[MAX_CMD]={0};
+	if((fp=popen("IFNAME=wlan0 disconnect","r"))==NULL){
+			perror("popen error!");
+			return -1;
+		}
+	fgets(LYNQ_CMD_RET,sizeof(LYNQ_CMD_RET),fp);
+
+	if((strncmp(LYNQ_CMD_RET,LYNQ_WIFI_OK,sizeof(LYNQ_WIFI_OK)))==0){
+			printf("cmd is work");
+		}	
+	int ret=pclose(fp);
+	if(ret==-1){
+		perror("close file faild");
+		return -1;
+		}
+	return 0;
+}
+
+
+
+int lynq_wifi_wpa_start(void){
+	FILE *fp;
+	fp=popen("wpa_supplicant -iwlan0 -Dnl80211 -c /data/wifi/wg870/wpa_supplicant.conf -g/var/run/wpa_wlan0_cmd  -dd -t -B","w");
+	if(fp==NULL){
+		perror("start wpa_supplicant faild!");
+		return -1;
+		}
+
+	int ret=pclose(fp);
+	if(ret==-1){
+		perror("close file faild");
+		return -1;
+		}
+	return 0;
+}
+
+int lynq_wifi_wpacli_start(void){
+	
+	FILE *fp;
+	printf("into wpacli \n");
+	char lynq_cmd_ret[MAX_RET]={0};
+	char rmcmd[128]="IFNAME=wlan0 remove_net all\n";
+	char adcmd[128]="IFNAME=wlan0 add_net\n";
+	char sacmd[128]="IFNAME=wlan0 save_config\n";
+
+	fp=popen("/usr/bin/wpa_cli -iwpa_wlan0_cmd -p/var/run/","w");
+	if(fp==NULL){
+		perror("start wpa_supplicant faild!");
+		return -1;
+		}
+	while(1)
+		{
+			fwrite(rmcmd,sizeof(rmcmd),1,fp);
+	
+			fwrite(adcmd,sizeof(adcmd),1,fp);
+		
+			fwrite(sacmd,sizeof(sacmd),1,fp);
+	
+			break;
+		}
+	
+	int ret=pclose(fp);
+			if(ret==-1){
+				perror("close file faild");
+				return -1;
+			}
+
+	return 0;
+
+}
+
+