| #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; |
| |
| } |
| |
| |