1.wifi切网时做互斥操作,以免频繁点击

This commit is contained in:
payton 2023-12-27 17:06:16 +08:00
parent 26e56590ad
commit 5156752c1a
2 changed files with 45 additions and 15 deletions

View File

@ -71,8 +71,8 @@ void sf_set_wifi_socket(int fd);
int sf_get_wifi_socket(void); int sf_get_wifi_socket(void);
void sf_set_wifi_cmd(UINT8 cmd); void sf_set_wifi_cmd(UINT8 cmd);
UINT8 sf_get_wifi_cmd(void); UINT8 sf_get_wifi_cmd(void);
void sf_network_select(UINT8 profileId, UINT8 ctlType); //SF_CONTROL_TYPE_e ctlType SINT32 sf_network_select(UINT8 profileId, UINT8 ctlType); //SF_CONTROL_TYPE_e ctlType
void sf_4g_operator_scan(UINT8 mode, UINT8 ctlType); //SF_CONTROL_TYPE_e ctlType SINT32 sf_4g_operator_scan(UINT8 mode, UINT8 ctlType); //SF_CONTROL_TYPE_e ctlType
SINT32 sf_lpa_get_esim_iccid(SF_CHAR iccid[][22]); SINT32 sf_lpa_get_esim_iccid(SF_CHAR iccid[][22]);
void sf_set_esim_card(INT8 flag); void sf_set_esim_card(INT8 flag);

View File

@ -333,7 +333,16 @@ static UINT8 WifiCurrentCmd=0;
LPA_GET_PROFILES_INFO getProfilesInfo; LPA_GET_PROFILES_INFO getProfilesInfo;
LPA_PROFILE_INFO *ProfileData = NULL; LPA_PROFILE_INFO *ProfileData = NULL;
LPA_PROFILE_INFO ProfileActive; LPA_PROFILE_INFO ProfileActive;
SF_THREAD_S ScanTskCfg =
{
.IsRun = 0,
.TskId = -1,
};
SF_THREAD_S NetSelectTskCfg =
{
.IsRun = 0,
.TskId = -1,
};
void sf_set_wifi_cmd(UINT8 cmd) void sf_set_wifi_cmd(UINT8 cmd)
{ {
WifiCurrentCmd = cmd; WifiCurrentCmd = cmd;
@ -2819,7 +2828,7 @@ void sf_operator_scan_thread(void* args)
{ {
printf("scan network.\n"); printf("scan network.\n");
struct ThreadArgs* myArgs = (struct ThreadArgs*)args; struct ThreadArgs* myArgs = (struct ThreadArgs*)args;
ScanTskCfg.IsRun = 1;
UINT8 totalOperator = 0; UINT8 totalOperator = 0;
UINT8 totalProfile = 0; UINT8 totalProfile = 0;
UINT8 i = 0; UINT8 i = 0;
@ -2968,19 +2977,30 @@ void sf_operator_scan_thread(void* args)
sf_share_mem_wifi_down(1); sf_share_mem_wifi_down(1);
} }
ScanTskCfg.IsRun = 0;
} }
void sf_4g_operator_scan(UINT8 mode, UINT8 ctlType) SINT32 sf_4g_operator_scan(UINT8 mode, UINT8 ctlType)
{ {
pthread_t tOperScanTask;
SINT32 ret = SF_FAILURE;
static struct ThreadArgs args = {0}; static struct ThreadArgs args = {0};
args.arg1 = mode; args.arg1 = mode;
args.arg2 = ctlType; args.arg2 = ctlType;
pthread_create(&tOperScanTask,NULL,sf_operator_scan_thread,(void *)&args); if(ScanTskCfg.IsRun)
{
SLOGE("thread has already run !!!\n");
return SF_FAILURE;
}
ret = pthread_create(&ScanTskCfg.TskId,NULL,sf_operator_scan_thread,(void *)&args);
if(ret != SF_SUCCESS)
{
MLOGD("thread creat fail!\n");
return ret;
}
return SF_SUCCESS;
} }
UINT8 sf_wifi_server_network_select_finish(UINT8 errCode) UINT8 sf_wifi_server_network_select_finish(UINT8 errCode)
@ -3084,7 +3104,7 @@ void sf_network_select_thread(void* args)
{ {
struct ThreadArgs* myArgs = (struct ThreadArgs*)args; struct ThreadArgs* myArgs = (struct ThreadArgs*)args;
printf("select network, PID:%d\n", myArgs->arg1); printf("select network, PID:%d\n", myArgs->arg1);
NetSelectTskCfg.IsRun = 1;
UINT32 ret = SF_LPA_SUCCESS; UINT32 ret = SF_LPA_SUCCESS;
UINT32 sts = 0; UINT32 sts = 0;
UINT32 retryTime=0; UINT32 retryTime=0;
@ -3339,19 +3359,29 @@ void sf_network_select_thread(void* args)
} }
#endif #endif
NetSelectTskCfg.IsRun = 0;
} }
void sf_network_select(UINT8 profileId, UINT8 ctlType) SINT32 sf_network_select(UINT8 profileId, UINT8 ctlType)
{ {
pthread_t tNetWorkSeclectTask;
SLOGD("sf_network_select,Pid:%d ctlType:%d\n", profileId, ctlType); SLOGD("sf_network_select,Pid:%d ctlType:%d\n", profileId, ctlType);
static struct ThreadArgs args = {0}; static struct ThreadArgs args = {0};
args.arg1 = profileId; args.arg1 = profileId;
args.arg2 = ctlType; args.arg2 = ctlType;
SINT32 ret = SF_FAILURE;
pthread_create(&tNetWorkSeclectTask, NULL, sf_network_select_thread, (void *)&args); if(NetSelectTskCfg.IsRun)
{
SLOGE("thread has already run !!!\n");
return SF_FAILURE;
}
ret = pthread_create(&NetSelectTskCfg.TskId,NULL,sf_network_select_thread,(void *)&args);
if(ret != SF_SUCCESS)
{
MLOGD("thread creat fail!\n");
return ret;
}
return SF_SUCCESS;
} }