Merge "[Bugfix][API-1135 API-1038 957] fix sta get error auth by scan cmd" into MR3.0-merge
diff --git a/meta/meta-mediatek-mt2735/recipes-kernel/modules/files/wifi/wg870/config_pcie.trxse b/meta/meta-mediatek-mt2735/recipes-kernel/modules/files/wifi/wg870/config_pcie.trxse
index dfc7f6a..e1ed89b 100755
--- a/meta/meta-mediatek-mt2735/recipes-kernel/modules/files/wifi/wg870/config_pcie.trxse
+++ b/meta/meta-mediatek-mt2735/recipes-kernel/modules/files/wifi/wg870/config_pcie.trxse
Binary files differ
diff --git a/src/lynq/lib/liblynq-data/lynq_data.cpp b/src/lynq/lib/liblynq-data/lynq_data.cpp
index 98dad03..5e551a5 100755
--- a/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -784,6 +784,8 @@
return 0;
}
int get_imsi();
+int check_apn_status();
+int radio_switch(int status);
int lynq_init_data(int uToken)
{
if (g_lynq_data_init_flag == 1)
@@ -817,7 +819,28 @@
return -1;
}
memset(lynq_apn_table,0,sizeof(lynq_apn_table));
+ LYINFLOG("[%s] radio on/off solution 20230724",__FUNCTION__);
int count = 0;
+ while(count < 2)//try recover the network within 10s.
+ {
+ result = check_apn_status();
+ if(result==0)
+ {
+ break;
+ }
+ radio_switch(0);
+ sleep(1);
+ radio_switch(1);
+ sleep(3);
+ count++;
+ }
+ LYINFLOG("[%s] count is %d",__FUNCTION__,count);
+ if(result!=0)
+ {
+ LYDBGLOG("lynq init call fail!!!");
+ return LYNQ_E_MD_NOT_READY;//
+ }
+ /* old
while(count < 10)
{
result = get_imsi();
@@ -834,6 +857,7 @@
LYDBGLOG("lynq init call fail!!!");
return LYNQ_E_MD_NOT_READY;//
}
+ */
LYDBGLOG("lynq init call success!!!");
return 0;
@@ -1716,18 +1740,6 @@
lynq_client_t client;
char argc[512];
int res = -1;
- int count = 0;
- while(count < 10)
- {
- res = get_imsi();
- if(res==0)
- {
- break;
- }
- sleep(1);
- count++;
- }
- LYINFLOG("[%s] count is %d",__FUNCTION__,count);
if (cmd == 0) // insert apn db
{
res = insert_apn_char(argc, id, mcc, mnc, apn, apntype, user, password, normalprotocol, roamingprotocol, carrier);
@@ -1842,3 +1854,96 @@
return 0;
}
/*Typethree add for T800 platform 2022/04/21 end*/
+static int exec_cmd(const char *str_cmd, char * str_cmd_ret, size_t max_len) {
+ FILE *fp;
+ //printf("to exec cmd:%s\n", str_cmd);
+ if((fp=popen(str_cmd,"r"))==NULL)
+ {
+ perror("popen error!");
+ return -1;
+ }
+ if((fread(str_cmd_ret,max_len,1,fp))<0)
+ {
+ perror("fread fail!");
+ fclose(fp);
+ return -1;
+ }
+ fclose(fp);
+ return 0;
+}
+int check_apn_status()
+{
+ LYINFLOG("check_apn_status enter");
+ int ret = -1;
+ char cmd_ret[8] ={0};//get mccmnc
+ const char *cmd = "uci get radio_property.property.vendor_ril_data_gsm_mcc_mnc0";
+ const char *empty_str = ":empty";
+ ret = exec_cmd(cmd,cmd_ret,8);
+ if(ret==0)
+ {
+ if(strlen(cmd_ret)==0)
+ {
+ LYERRLOG("not have mccmnc config in uci ram");
+ return 1;
+ }
+ if(strncmp(cmd_ret,empty_str,strlen(empty_str))==0)
+ {
+ LYERRLOG("mccmnc is empty");
+ return 2;
+ }
+ LYINFLOG("mccmnc is %s",cmd_ret);
+ return 0;
+ }
+ else
+ {
+ LYERRLOG("exec cmd fail");
+ return -1;
+ }
+ return 0;
+}
+int radio_switch(int status)
+{
+ Parcel *p =NULL;
+ lynq_client_t client;
+ int resp_type = -1;
+ int token;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ int version =0;
+ int num = 0;
+ char *temp_char = NULL;
+ char mccmnc[32] = {0};
+ char mccmnckey[64] = {0};
+ client.uToken = get_utoken();
+ client.request = 59;//RIL_REQUEST_OEM_HOOK_RAW 59
+ client.paramLen = 1;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ sprintf(client.param,"AT+CFUN=%d",status);
+ LYINFLOG("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
+ pthread_mutex_lock(&g_lynq_data_sendto_mutex);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_DATA] send request fail:");
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ return -1;
+ }
+ //get_response(lynq_client_sockfd,p);
+ error = wait_response(lynq_client_sockfd,p,client.uToken);
+ if(error!=0)
+ {
+ LYERRLOG("wait_response fail,ret:%d",error);
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ return error;
+ }
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ if(JumpHeader(p,&resp_type,&client.uToken,&request,&slot_id,&error)!=0)
+ {
+ LYERRLOG("JumpHeader fail");
+ return -1;
+ }
+ LYINFLOG("resp_type=%d,uToken=%d,request=%d,slot_id=%d,error_code=%d",resp_type,client.uToken,request,slot_id,error);
+ free_parcel(p);
+ return error;
+}
diff --git a/src/lynq/lib/liblynq-wifi6/include/libwifi6.h b/src/lynq/lib/liblynq-wifi6/include/libwifi6.h
index 34a6ec8..8caf003 100755
--- a/src/lynq/lib/liblynq-wifi6/include/libwifi6.h
+++ b/src/lynq/lib/liblynq-wifi6/include/libwifi6.h
@@ -173,6 +173,8 @@
//start scan availbale ap active
int lynq_wifi_sta_start_scan(lynq_wifi_index_e idx);
+//add for STA auto connect
+int lynq_wifi_sta_stop_net(lynq_wifi_index_e idx,int networkid);
/*
* event usage:
* first declare a funcion like AP_CALLBACK_FUNC_PTR to recv messge from wifi lib
@@ -207,6 +209,9 @@
typedef void(*STA_CALLBACK_FUNC_PTR)(void *priv, lynq_wifi_sta_status_s status, error_number_s number);
int lynq_reg_sta_event_callback(void * priv, STA_CALLBACK_FUNC_PTR cb);
int lynq_unreg_sta_event_callback(void * priv);
+typedef void(*STA_AUTO_CALLBACK_FUNC_PTR)(void *priv, lynq_wifi_sta_status_s status, error_number_s number,int networkid);
+int lynq_reg_sta_auto_event_callback(void * priv, STA_AUTO_CALLBACK_FUNC_PTR cb);
+int lynq_unreg_sta_auto_event_callback(void * priv);
//get current ap status
int lynq_get_ap_status(lynq_wifi_index_e idx, lynq_wifi_ap_run_status_s * ap_status);
diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index 606c518..617c80b 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -51,10 +51,16 @@
volatile int g_sta_scan_finish_flag = 1;
volatile int g_sta_watcher_started_flag = 0;
+pthread_t g_sta_auto_watcher_pid = 0;
+volatile int g_sta_auto_watcher_stop_flag = 0;
+volatile int g_sta_auto_scan_finish_flag = 1;
+volatile int g_sta_auto_watcher_started_flag = 0;
void * g_ap_callback_priv = NULL;
AP_CALLBACK_FUNC_PTR g_ap_callback_func = NULL;
void * g_sta_callback_priv = NULL;
STA_CALLBACK_FUNC_PTR g_sta_callback_func = NULL;
+void * g_sta_auto_callback_priv = NULL;
+STA_AUTO_CALLBACK_FUNC_PTR g_sta_auto_callback_func = NULL;
//const char * CTRL_PATH="/var/run/wpa_supplicant";
const char * CTRL_PATH[2] = {"/var/run/wpa_supplicant/wlan0", "/var/run/wpa_supplicant/ap0"};
@@ -89,6 +95,8 @@
static pthread_mutex_t s_check_wpa_ctrl_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t s_sta_callback_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t s_ap_callback_mutex = PTHREAD_MUTEX_INITIALIZER;
+// add for auto connect
+static pthread_mutex_t s_sta_auto_callback_mutex = PTHREAD_MUTEX_INITIALIZER;
static struct local_wpa_ctrl * g_lynq_wpa_ctrl[2] = {0};
@@ -514,9 +522,28 @@
pthread_mutex_unlock(&s_global_check_mutex);
}
+static int lynq_wifi_sta_stop_network(lynq_wifi_index_e idx,int networkid)
+{
+ char LYNQ_DISABLE_CMD[128]={0};
+
+ CHECK_IDX(idx, CTRL_STA);
+ CHECK_WPA_CTRL(CTRL_STA);
+
+ sprintf(LYNQ_DISABLE_CMD,"DISABLE_NETWORK %d",networkid);
+ RLOGD("LYNQ_DISABLE_CMD is:%d\n",LYNQ_DISABLE_CMD);
+ DO_OK_FAIL_REQUEST(LYNQ_DISABLE_CMD);
+
+ return 0;
+
+}
+
+
void get_state_error(const char* modify, lynq_wifi_sta_status_s* state, error_number_s* error)
{
char *pReason;
+ char *wpanetid;
+ char destid[3] = {0};
+ int tmpdisid = -1;
*error = LYNQ_WAIT_CONNECT_ACTIVE;
if (strstr(modify, "CTRL-EVENT-SCAN-RESULTS") != NULL)
{
@@ -534,6 +561,15 @@
if (strstr(modify, "CTRL-EVENT-SSID-TEMP-DISABLED") != NULL)
{
+ *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+ wpanetid = strstr(modify,"id=");
+ if ( wpanetid != NULL )
+ {
+ wpanetid +=strlen("id=");
+ memcpy(destid,wpanetid,2);
+ tmpdisid = atoi(destid);
+
+ }
pReason = strstr(modify, "reason=");
if (pReason != NULL)
{
@@ -545,21 +581,23 @@
else if (memcmp(pReason, "WRONG_KEY", 9) == 0)
{
*error = LYNQ_PSW_ERROR;
+ // tmp fix sta autoconnect connect and disconnect
+ if(tmpdisid != -1 && lynq_wifi_sta_stop_network(0,tmpdisid) != 0)
+ {
+ RLOGE("stop wlan0 network %d fail",tmpdisid);
+ }
}
else
{
*error = LYNQ_UNSPECIFIED_REASON;
}
- *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
- RLOGD("CTRL-EVENT-SSID-TEMP-DISABLED state:%d,error:%d\n",*state,*error);
- return;
}
else
{
*error = LYNQ_UNSPECIFIED_REASON;
- *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
- return;
}
+ RLOGD("CTRL-EVENT-SSID-TEMP-DISABLED state:%d,error:%d,tmpnetid:%d",*state,*error,tmpdisid);
+ return;
}
@@ -632,6 +670,142 @@
}
+void get_state_error_networkid(const char* modify, lynq_wifi_sta_status_s* state, error_number_s* error,int *networkid)
+{
+ char *pReason;
+ char *wpanetid;
+ char destid[3];
+ *error = LYNQ_WAIT_CONNECT_ACTIVE;
+ *networkid = -1;
+ if (strstr(modify, "CTRL-EVENT-SCAN-RESULTS") != NULL)
+ {
+ *state = LYNQ_WIFI_STA_STATUS_SCAN_RESULT;
+ RLOGD("CTRL-EVENT-SCAN-RESULTS state:%d,error:%d,,networkid:%d\n",*state,*error,*networkid);
+ return;
+ }
+ if (strstr(modify, "CTRL-EVENT-CONNECTED") != NULL)
+ {
+ RLOGD("[xiong]:wpanetid = strstrmodify;\n");
+ wpanetid = strstr(modify,"id=");
+ if ( wpanetid != NULL )
+ {
+ wpanetid +=strlen("id=");
+ RLOGD("[xiong]:memcpy(destid,wpanetid,0\n");
+ if (memcpy(destid,wpanetid,2) != NULL)
+ {
+ RLOGD("[xiong]:memcpy(destid,wpanetid,1\n");
+ *networkid = atoi(destid);
+ RLOGD("get networkid is %d\n",*networkid);
+ }
+ RLOGD("[xiong]:memcpy(destid,wpanetid,2\n");
+ }
+ *state = LYNQ_WIFI_STA_STATUS_CONNECT;
+ RLOGD("CTRL-EVENT-CONNECTED state:%d,error:%d,networkid:%d\n",*state,*error,*networkid);
+ return;
+ }
+ if (strstr(modify, "CTRL-EVENT-SSID-TEMP-DISABLED") != NULL)
+ {
+ wpanetid = strstr(modify,"id=");
+ if ( wpanetid != NULL )
+ {
+ wpanetid +=strlen("id=");
+ if (memcpy(destid,wpanetid,2) != NULL)
+ {
+ *networkid = atoi(destid);
+ RLOGD("get networkid is %d\n",*networkid);
+ }
+ }
+ pReason = strstr(modify, "reason=");
+ if (pReason != NULL)
+ {
+ pReason += strlen("reason=");
+ if (memcmp(pReason, "CONN_FAILED", 11) == 0)
+ {
+ *error = LYNQ_TIME_OUT;
+ }
+ else if (memcmp(pReason, "WRONG_KEY", 9) == 0)
+ {
+ *error = LYNQ_PSW_ERROR;
+ }
+ else
+ {
+ *error = LYNQ_UNSPECIFIED_REASON;
+ }
+ *state = LYNQ_WIFI_STA_STATUS_CONNECT_FAIL;
+ RLOGD("CTRL-EVENT-SSID-TEMP-DISABLED state:%d,error:%d,networkid:%d\n",*state,*error,*networkid);
+ return;
+ }
+ else
+ {
+ *error = LYNQ_UNSPECIFIED_REASON;
+ *state = LYNQ_WIFI_STA_STATUS_CONNECT_FAIL;
+ return;
+ }
+ }
+ if (strstr(modify, "CTRL-EVENT-ASSOC-REJECT") != NULL)
+ {
+ wpanetid = strstr(modify,"id=");
+ if ( wpanetid != NULL )
+ {
+ wpanetid +=strlen("id=");
+ if (memcpy(destid,wpanetid,2) != NULL)
+ {
+ *networkid = atoi(destid);
+ RLOGD("get networkid is %d\n",*networkid);
+ }
+ }
+ RLOGD("FIND CTRL EVENT : CTRL-EVENT-ASSOC-REJECT\n");
+ pReason = strstr(modify, "status_code=");
+ if (pReason != NULL)
+ {
+ pReason += strlen("status_code=");
+ if (memcmp(pReason, "17", 2) == 0)
+ {
+ *error = LYNQ_AP_UNABLE_HANDLE;
+ }
+ else if (memcmp(pReason, "1",1) == 0)
+ {
+ *error = LYNQ_UNSPECIFIED_REASON;
+ }
+ else
+ {
+ *error = LYNQ_UNSPECIFIED_REASON;
+ }
+ *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+ RLOGD("CTRL-EVENT-ASSOC-REJECT BUT NOT STATUS_CODE NOT 1 or 17 state:%d,error:%d,networkid:%d\n",*state,*error,*networkid);
+ return;
+ }
+ else
+ {
+ RLOGD("FIND CTRL EVENT : CTRL-EVENT-ASSOC-REJECT BUT NOT FOUND STATUS_CODE\n");
+ *error = LYNQ_UNSPECIFIED_REASON;
+ *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+ RLOGD("CTRL-EVENT-ASSOC-REJECT state:%d,error:%d£¬networkid:%d\n",*state,*error,*networkid);
+ return;
+ }
+ }
+ if (strstr(modify, "CTRL-EVENT-SAE-UNKNOWN-PASSWORD-IDENTIFIER") != NULL)
+ {
+ RLOGD("FIND CTRL EVENT : CTRL-EVENT-SAE-UNKNOWN-PASSWORD-IDENTIFIER\n");
+ *error = LYNQ_AUTHENTICATION_NO_LONGER_VALID;
+ *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+ RLOGD("CTRL-EVENT-SAE-UNKNOWN-PASSWORD-IDENTIFIER state:%d,error:%d,networkid:%d\n",*state,*error,*networkid);
+ return;
+ }
+ if (strstr(modify, "CTRL-EVENT-DISCONNECTED") != NULL)
+ {
+ RLOGD("FIND CTRL EVENT : CTRL-EVENT-DISCONNECTED\n");
+ *error = LYNQ_WAIT_CONNECT_ACTIVE;
+ *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+ RLOGD("CTRL-EVENT-DISCONNECTED state:%d,error:%d,networkid:%d\n",*state,*error,*networkid);
+ return;
+ }
+ RLOGD("EVENT : %s\n", modify);
+ *error = LYNQ_UNSPECIFIED_REASON;
+ *state = LYNQ_WIFI_STATUS_EGNORE;
+ RLOGD("LAST : STA state:%d,error:%d,network:%d\n",*state,*error,*networkid);
+ return;
+}
static void notify_connect_status(lynq_wifi_sta_status_s state, error_number_s error)
{
pthread_mutex_lock(&s_sta_callback_mutex);
@@ -643,6 +817,17 @@
}
pthread_mutex_unlock(&s_sta_callback_mutex);
}
+static void notify_auto_connect_status(lynq_wifi_sta_status_s state, error_number_s error,int networkid)
+{
+ pthread_mutex_lock(&s_sta_callback_mutex);
+ if (g_sta_callback_func != NULL && state != LYNQ_WIFI_STATUS_EGNORE)
+ {
+ RLOGD("STAWatcherThreadProc callback begin ------> %d %d %d\n", state, error,networkid);
+ g_sta_auto_callback_func(g_sta_auto_callback_priv, state, error,networkid);
+ RLOGD("STAAutoWatcherThreadProc callback end ------> %d %d %d\n", state, error,networkid);
+ }
+ pthread_mutex_unlock(&s_sta_callback_mutex);
+}
static void STAWatcherThreadProc() {
size_t len = MAX_RET;
@@ -705,6 +890,62 @@
wpa_ctrl_close(lynq_wpa_ctrl);
}
}
+static void STAAutoWatcherThreadProc() {
+ size_t len = MAX_RET;
+ char msg_notify[MAX_RET];
+ error_number_s error;
+ lynq_wifi_sta_status_s state, last_state = -1;
+ int idle_count = 0;
+ int networkid;
+ struct wpa_ctrl *lynq_wpa_ctrl = NULL;
+ g_sta_auto_watcher_stop_flag = 0;
+ RLOGD("STAAutoWatcherThreadProc thread started ------");
+ while (g_sta_auto_watcher_stop_flag == 0)
+ {
+ if (check_pending_msg(&lynq_wpa_ctrl, CTRL_STA, &idle_count, &g_sta_auto_watcher_started_flag) != 1)
+ {
+ continue;
+ }
+ memset(msg_notify, 0, MAX_RET);
+ len = MAX_RET;
+ if (!wpa_ctrl_recv(lynq_wpa_ctrl, msg_notify, &len))
+ {
+ msg_notify[len+1] = '\0';
+ RLOGD("STAAutoWatcherThreadProc sta ------> %s\n", msg_notify);
+ if (strstr(msg_notify, state_scan_result) != NULL)
+ {
+ g_sta_auto_scan_finish_flag = 1;
+ }
+ if (g_sta_auto_callback_func == NULL)
+ {
+ continue;
+ }
+ get_state_error_networkid(msg_notify,&state,&error,&networkid); // add net state error network function
+ notify_auto_connect_status(state, error,networkid);
+ if (state != LYNQ_WIFI_STA_STATUS_SCAN_RESULT)
+ {
+ inner_check_connect_error(msg_notify, state, error);
+ if (last_state != state)
+ {
+ if (state == LYNQ_WIFI_STA_STATUS_CONNECT)
+ {
+ system_call_v("%s %s", sta_status_change_script, "connect");
+ }
+ else if (state == LYNQ_WIFI_STA_STATUS_DISCONNECT)
+ {
+ system_call_v("%s %s", sta_status_change_script, "disconnect");
+ }
+ }
+ last_state = state;
+ }
+ }
+ }
+ if (lynq_wpa_ctrl != NULL)
+ {
+ wpa_ctrl_detach(lynq_wpa_ctrl);
+ wpa_ctrl_close(lynq_wpa_ctrl);
+ }
+}
// this thread will not exit when lynq_wifi_disable called,to avoid dead lock,take care
static void GlobalWatcherThreadProc()
@@ -874,16 +1115,20 @@
pthread_mutex_lock(&s_check_wpa_ctrl_mutex);
g_ap_watcher_stop_flag = 1;
g_sta_watcher_stop_flag = 1;
+ g_sta_auto_watcher_stop_flag = 1;
if (g_ap_watcher_pid != 0)
pthread_join(g_ap_watcher_pid, NULL);
if (g_sta_watcher_pid != 0)
pthread_join(g_sta_watcher_pid, NULL);
+ if (g_sta_auto_watcher_pid != 0)
+ pthread_join(g_sta_auto_watcher_pid, NULL);
if (g_lynq_wpa_ctrl[0] != NULL)
wpa_ctrl_close(g_lynq_wpa_ctrl[0]);
if (g_lynq_wpa_ctrl[1] != NULL)
wpa_ctrl_close(g_lynq_wpa_ctrl[1]);
g_ap_watcher_pid = 0;
g_sta_watcher_pid = 0;
+ g_sta_auto_watcher_pid = 0;
g_lynq_wpa_ctrl[0] = NULL;
g_lynq_wpa_ctrl[1] = NULL;
system("systemctl stop wg870_drv_insmod.service");
@@ -1117,6 +1362,18 @@
*p = '\0';
}
return 0;
+ }else{
+ usleep( 10 * 1000);
+ ret = exec_cmd(cmd, hostname, 32);
+ if( ret == 0)
+ {
+ p= strchr(hostname, '\n');
+ if(p != NULL )
+ {
+ *p = '\0';
+ }
+ return 0;
+ }
}
hostname[0] = '\0';
RLOGE("---gethostbyaddr fail\n");
@@ -2998,7 +3255,6 @@
curr_state.state = state;
return inner_get_status_info(interface, &curr_state);
}
-
int lynq_wifi_sta_stop(lynq_wifi_index_e idx)
{
// char lynq_disable_network_cmd[MAX_CMD];
@@ -3040,6 +3296,16 @@
return 0;
// return system("connmanctl disable wifi");
}
+int lynq_wifi_sta_stop_net(lynq_wifi_index_e idx,int networkid)
+{
+ char LYNQ_DISABLE_CMD[128]={0};
+ CHECK_IDX(idx, CTRL_STA);
+ CHECK_WPA_CTRL(CTRL_STA);
+ sprintf(LYNQ_DISABLE_CMD,"DISABLE_NETWORK %d",networkid);
+ RLOGD("LYNQ_DISABLE_CMD is:%d\n",LYNQ_DISABLE_CMD);
+ DO_OK_FAIL_REQUEST(LYNQ_DISABLE_CMD);
+ return 0;
+}
//static int inner_get_sta_info(lynq_wifi_index_e idx, const char * bssid, device_info_s *dev) {
// int i, count;
@@ -3427,6 +3693,48 @@
return -1;
}
+int lynq_reg_sta_auto_event_callback(void * priv, STA_AUTO_CALLBACK_FUNC_PTR cb){
+ if (cb == NULL)
+ {
+ RLOGE("lynq_reg_sta_auto_event_callback ptr is NULL,plese check!\n");
+ return -1;
+ }
+ pthread_mutex_lock(&s_sta_auto_callback_mutex);
+ g_sta_auto_callback_priv = priv;
+ g_sta_auto_callback_func = cb;
+ pthread_mutex_unlock(&s_sta_auto_callback_mutex);
+ pthread_mutex_lock(&s_check_wpa_ctrl_mutex);
+ if (g_sta_auto_watcher_pid == 0 ) {
+ if(pthread_create(&g_sta_auto_watcher_pid,NULL,STAAutoWatcherThreadProc,NULL) < 0) //create STAAutoWatcherThreadProc
+ {
+ g_sta_auto_watcher_pid = 0;
+ pthread_mutex_unlock(&s_check_wpa_ctrl_mutex);
+ RLOGE("[wifi error]creat STAWatcherThreadProc fail");
+ return -1;
+ }
+ }
+ pthread_mutex_unlock(&s_check_wpa_ctrl_mutex);
+ RLOGD("creat STAWatcherTheradProc susccs");
+ return 0;
+}
+int lynq_unreg_sta_auto_event_callback(void * priv) {
+ pthread_mutex_lock(&s_sta_auto_callback_mutex);
+ if (g_sta_auto_callback_priv == priv)
+ {
+ g_sta_auto_watcher_stop_flag = 1;
+ if (g_sta_auto_watcher_pid != 0)
+ {
+ pthread_join(g_sta_auto_watcher_pid, NULL);
+ }
+ g_sta_auto_watcher_pid = 0;
+ g_sta_auto_callback_func = NULL;
+ g_sta_auto_callback_priv = NULL;
+ pthread_mutex_unlock(&s_sta_auto_callback_mutex);
+ return 0;
+ }
+ pthread_mutex_unlock(&s_sta_auto_callback_mutex);
+ return -1;
+}
int lynq_get_ap_status(lynq_wifi_index_e idx, lynq_wifi_ap_run_status_s * ap_status)
{
char state[MAX_CMD];
diff --git a/src/telephonyware/3.0/hardware/ril/fusion/libril/ril.cpp b/src/telephonyware/3.0/hardware/ril/fusion/libril/ril.cpp
index afb93ef..49704a1 100755
--- a/src/telephonyware/3.0/hardware/ril/fusion/libril/ril.cpp
+++ b/src/telephonyware/3.0/hardware/ril/fusion/libril/ril.cpp
@@ -6663,6 +6663,8 @@
for (int i = 0; i < RIL_SOCKET_NUM; i++) {
pthread_mutex_init(&s_state_mutex[i], NULL);
+ pthread_mutex_init(&s_pendingUrcMutex[i], NULL);
+ s_fdCommand[i] = -1;
}
// New rild impl calls RIL_startEventLoop() first
@@ -6691,10 +6693,10 @@
}
// initialize mutex
- for (int i = 0; i < RIL_SOCKET_NUM; i++) {
- pthread_mutex_init(&s_pendingUrcMutex[i], NULL);
- s_fdCommand[i] = -1;
- }
+ //for (int i = 0; i < RIL_SOCKET_NUM; i++) {
+ // pthread_mutex_init(&s_pendingUrcMutex[i], NULL);
+ // s_fdCommand[i] = -1;
+ //}
/// @}
RILJ_register();
diff --git a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/apn/RpApnController.cpp b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/apn/RpApnController.cpp
index 137292e..31c801d 100755
--- a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/apn/RpApnController.cpp
+++ b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/apn/RpApnController.cpp
@@ -327,13 +327,14 @@
RpApnController *apnController = (RpApnController *)findController(i,
RFX_OBJ_CLASS_INFO(RpApnController));
- char mccmncvalue[32]={0};
+/* char mccmncvalue[32]={0};
String8 mccMncKey("");
mccMncKey.append("vendor.ril.data.gsm_mcc_mnc");
- mccMncKey.append(String8::format("%d", m_slot_id));
+ mccMncKey.append(String8::format("%d", i));
property_get(mccMncKey, mccmncvalue,"");
- getStatusManager()->setString8Value(RFX_STATUS_KEY_GSM_OPERATOR_NUMERIC, String8(mccmncvalue));
+ getStatusManager(i)->setString8Value(RFX_STATUS_KEY_GSM_OPERATOR_NUMERIC, String8(mccmncvalue));
logD(RFX_LOG_TAG, "[reloadApnDB]mccmnc: %s",mccmncvalue);
+*/
mccmnc = getStatusManager(i)->getString8Value(RFX_STATUS_KEY_GSM_OPERATOR_NUMERIC, String8(""));
if (!mccmnc.isEmpty()) {
logD(RFX_LOG_TAG, "[reloadApnDB]start: %d, dataController->getApnReady() =%d", i, dataController->getApnReady());
@@ -840,7 +841,7 @@
#endif
//notify datacontroller
apnController->apn_ready_singal.postEmit();
-
+ RLOGD("RpApnController::ApnInitThread::threadLoop done!!!");
return false;
}
diff --git a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.cpp b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.cpp
index 49281fd..6444d4b 100755
--- a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.cpp
+++ b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.cpp
@@ -230,7 +230,6 @@
void RpDataController::handleSetupDataRequest(const sp<RfxMessage>& request) {
logD(RFX_LOG_TAG, "handleSetupDataRequest with clientId: %d, with token: %d",
request->getClientId(), request->getToken());
-
if (request->getClientId() > 0) {
RpDataController::mDcTracker.requestNetwork(request);
} else {