1.优化自动模式注网流程

This commit is contained in:
payton 2023-12-12 13:55:52 +08:00
parent f48e7150c9
commit d71d1c07e2

View File

@ -4070,9 +4070,10 @@ SINT32 sf_auto_net_reg(void)
UINT8 cqSignal = 0; UINT8 cqSignal = 0;
char *pTemp = NULL; char *pTemp = NULL;
char *delim = NULL; char *delim = NULL;
UINT32 StrNumber = 0;
UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
SF_TTY_DATA_TYPE_S ttyData = { .waitMs = 500, .len = 3, .lenMax = (GPRS_INFO_LINE_MAX-1), .cmp = "OK", .cmperr = "ERROR", .data = gsmPara}; SF_TTY_DATA_TYPE_S ttyData = { .waitMs = 500, .len = 255, .lenMax = (GPRS_INFO_LINE_MAX-1), .cmp = "OK", .cmperr = "ERROR", .data = gsmPara};
SF_LOG(" s\n"); SF_LOG(" s\n");
@ -4093,7 +4094,6 @@ SINT32 sf_auto_net_reg(void)
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
eNetRegLocation = QUECTEL_NETREG_QSIMSTAT; eNetRegLocation = QUECTEL_NETREG_QSIMSTAT;
ttyData.len = 255;//Must wait for OK or error.
} }
else if(strstr((const char *)gsmPara, "ERROR")) else if(strstr((const char *)gsmPara, "ERROR"))
{ {
@ -4108,7 +4108,6 @@ SINT32 sf_auto_net_reg(void)
strcpy((char *)gsmPara, "ATE1\r"); strcpy((char *)gsmPara, "ATE1\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara));
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
ttyData.len = 255;//Must wait for OK or error.
} }
break; break;
@ -4131,10 +4130,6 @@ SINT32 sf_auto_net_reg(void)
SF_LOG("AT+QSIMSTAT? Timeout"); SF_LOG("AT+QSIMSTAT? Timeout");
goto SF_MODULE_END; goto SF_MODULE_END;
} }
//strcpy((char *)gsmPara, "AT+QSIMSTAT?\r");
//ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara));
//SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
break; break;
} }
else if(strstr((const char *)gsmPara, "+QSIMSTAT: 0,1")) else if(strstr((const char *)gsmPara, "+QSIMSTAT: 0,1"))
@ -4147,18 +4142,19 @@ SINT32 sf_auto_net_reg(void)
} }
else else
{ {
eNetRegLocation = QUECTEL_NETREG_QLWCFG_URC; eNetRegLocation = QUECTEL_NETREG_CIMI_1;
if(strstr(puiPara->ModuleVer, GPRS_MODULE_TYPE_EG915Q)){ strcpy((char *)gsmPara, "AT+CIMI\r");
strcpy((char *)gsmPara, "AT+QLWCFG=\"auto_reg\",0\r"); // eNetRegLocation = QUECTEL_NETREG_QLWCFG_URC;
} // if(strstr(puiPara->ModuleVer, GPRS_MODULE_TYPE_EG915Q)){
else{ // strcpy((char *)gsmPara, "AT+QLWCFG=\"auto_reg\",0\r");
strcpy((char *)gsmPara, "AT+QLWCFG=\"startup\",0\r"); // }
} // else{
// strcpy((char *)gsmPara, "AT+QLWCFG=\"startup\",0\r");
// }
} }
sf_set_sim_insert(1); sf_set_sim_insert(1);
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara));
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
ttyData.len = strlen(gsmPara) + 2;
} }
else if((strstr((const char *)gsmPara, "+QSIMSTAT: 0,2"))) else if((strstr((const char *)gsmPara, "+QSIMSTAT: 0,2")))
{ {
@ -4202,47 +4198,259 @@ SINT32 sf_auto_net_reg(void)
break; break;
case QUECTEL_NETREG_QLWCFG_URC: case QUECTEL_NETREG_CIMI_1:
if(strstr((const char *)gsmPara, "OK")) if(strstr((const char *)gsmPara, "OK"))
{ {
eNetRegLocation = QUECTEL_NETREG_QLWCFG_STARTUP;
strcpy((char *)gsmPara, "AT+QCFG=\"tcp/windowsize\",1,100\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara));
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
//DelayTime = 50;
ttyData.len = strlen(gsmPara) + 2;
}
break; delim = " \r\n";
case QUECTEL_NETREG_QLWCFG_STARTUP: if(strstr((const char *)gsmPara, "AT+CIMI"))
{
pTemp = strtok((char *)strstr((const char *)gsmPara, "AT+CIMI"), delim);
StrNumber = 1;
}
else
{
pTemp = strtok((char *)gsmPara, delim);
StrNumber = 0;
}
if(strstr((const char *)gsmPara, "OK")) mm = 0;
{ memset(strtmp, '\0', sizeof(strtmp));
eNetRegLocation = QUECTEL_NETREG_CGDCONT; while((pTemp != NULL) && (mm < 12))
//DelayTime = 200; {
strcpy((char *)strtmp[mm], (const char *)pTemp);
printf("---pTemp[%d]:%s\n", mm, pTemp);
mm++;
pTemp = strtok((char *)0, delim);
}
if(strstr((const char *)puiPara->Sim4gApn, APN_4G_VERIZON)) if(((strtmp[StrNumber][0] - '0') >= 0) && ((strtmp[StrNumber][0] - '0') <= 9) && ((strtmp[StrNumber][5] - '0') >= 0) && ((strtmp[StrNumber][5] - '0') <= 9))
{ {
eNetRegLocation = QUECTEL_NETREG_CGREG; memset(puiPara->OperatorCode, '\0', sizeof(puiPara->OperatorCode));
strcpy((char *)gsmPara, "AT+CGREG?\r"); strncpy((char *)puiPara->OperatorCode, (const char *)strtmp[StrNumber], 5);
sf_time(&cTime); strncpy((char *)SimImei, (const char *)strtmp[1], 5);
} SF_DEBUG("OperatorCode=%s", puiPara->OperatorCode);
else if(strstr((const char *)puiPara->Sim4gApn, APN_4G_ATT))
{
sprintf((char *)gsmPara, "AT+CGDCONT=1,\"IPV4V6\",\"%s\"\r", puiPara->Sim4gApn);
}
else
{
sprintf((char *)gsmPara, "%s", "AT+CGDCONT=1,\"IPV4V6\",\"\"\r");
}
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); if(puiPara->SimAutoSwitch == 0)
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); {
ttyData.cmp = "OK"; if(sf_auto_operation_adjust() == FAIL)
ttyData.len = strlen(gsmPara) + 2; {
} SLOGE(gsmPara);
sprintf((char *)logStr, "Auto Operation Fail,MCCMNC:%s\n", puiPara->OperatorCode);
SLOGE(logStr);
ret = SF_SIM_ERROR_APN;
sprintf((char *)logStr, "Error Code:0x%08X\n", ret);
SLOGE(logStr);
//sf_guide_operator_match_status_set();
goto SF_MODULE_END;
}
else
{
sprintf((char *)logStr, "Auto Operation Success,MCCMNC:%s\n", puiPara->OperatorCode);
SLOGI(logStr);
}
SF_DEBUG("Sim4gApn=%s", puiPara->Sim4gApn);
}
else
{
SF_LOG("operation info manual set,default success.\n");
}
SF_LOG("puiPara->ModuleVer:%s\n",puiPara->ModuleVer);
if((strstr((const char *)puiPara->Sim4gApn, APN_4G_VERIZON)) \
&& (((SF_STRNCMP(puiPara->ModuleVer, GPRS_MODULE_TYPE_EG91_NAXD, 6) == 0))|| ((SF_STRNCMP(puiPara->ModuleVer, GPRS_MODULE_TYPE_EG95_NAXD, 6) == 0))))
{
eNetRegLocation = QUECTEL_NETREG_QNVFW;
sprintf((char *)gsmPara, "%s", "at+qnvfr=\"/nv/item_files/modem/uim/gstk/feature_bmsk\"\r");
}
else
{
if(strstr((const char *)puiPara->Sim4gApn, APN_4G_ATT))
{
eNetRegLocation = QUECTEL_NETREG_CGDCONT;
sprintf((char *)gsmPara, "AT+CGDCONT=1,\"IPV4V6\",\"%s\"\r", puiPara->Sim4gApn);
}
else if(strstr((const char *)puiPara->Sim4gApn, APN_4G_VERIZON))
{
eNetRegLocation = QUECTEL_SEARCH_IPV4V6;
sprintf((char *)gsmPara, "%s", "AT+QICSGP=1\r");
}
else
{
eNetRegLocation = QUECTEL_NETREG_CGDCONT;
sprintf((char *)gsmPara, "%s", "AT+CGDCONT=1,\"IPV4V6\",\"\"\r");
}
}
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara));
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
}
else
{
ret = SF_SIM_ERROR_APN;
SLOGE(gsmPara);
sprintf((char *)logStr, "Error Code:0x%08X\n", ret);
SLOGE(logStr);
goto SF_MODULE_END;
}
}
else
{
callTime++;
if(callTime > 10)
{
ret = SF_SIM_ERROR_APN;
SLOGE(gsmPara);
sprintf((char *)logStr, "Error Code:0x%08X\n", ret);
SLOGE(logStr);
goto SF_MODULE_END;
}
strcpy((char *)gsmPara, "AT+CIMI\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara));
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
}
break;
case QUECTEL_NETREG_QNVFW:
if(strstr((const char *)gsmPara, "+QNVFR:"))
{
if(strstr((const char *)gsmPara, "+QNVFR: 11000000"))
{
eNetRegLocation = QUECTEL_SEARCH_QICSGP1;
sprintf((char *)gsmPara, "%s", "at+qnvfw=\"/nv/item_files/modem/uim/gstk/feature_bmsk\",01000000\r");
}
else
{
eNetRegLocation = QUECTEL_SEARCH_IPV4V6;
sprintf((char *)gsmPara, "%s", "AT+QICSGP=1\r");
}
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara));
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
}
else
{
//eNetRegLocation = QUECTEL_NETREG_MODULE_RESTART;
eNetRegLocation = QUECTEL_SEARCH_IPV4V6;
sprintf((char *)gsmPara, "%s", "AT+QICSGP=1\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara));
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
}
break;
case QUECTEL_SEARCH_QICSGP1:
if(strstr((const char *)gsmPara, "OK"))
{
eNetRegLocation = QUECTEL_SEARCH_IPV4V6;
sprintf((char *)gsmPara, "%s", "AT+QICSGP=1\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara));
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
}
break;
case QUECTEL_SEARCH_IPV4V6:
if(strstr((const char *)gsmPara, "OK"))
{
if((strstr((const char *)gsmPara, "\"ims\"") == NULL) && (strstr((const char *)puiPara->Sim4gApn, APN_4G_VERIZON)))
{
eNetRegLocation = QUECTEL_NETREG_QPRTPARA;
if(((SF_STRNCMP(puiPara->ModuleVer, GPRS_MODULE_TYPE_EG91_NAXD, 6) == 0))|| ((SF_STRNCMP(puiPara->ModuleVer, GPRS_MODULE_TYPE_EG95_NAXD, 6) == 0)))
{
sprintf((char *)gsmPara, "AT+QPRTPARA=3\r");
}
else
{
sprintf((char *)gsmPara, "%s", "AT+CGDCONT=1,\"IPV4V6\",\"\"\r");
eNetRegLocation = QUECTEL_NETREG_CGDCONT;
}
}
else
{
eNetRegLocation = QUECTEL_NETREG_CGDCONT;
if(strstr((const char *)puiPara->Sim4gApn, APN_4G_VERIZON))
{
sprintf((char *)gsmPara, "AT+CGREG?\r");
eNetRegLocation = QUECTEL_NETREG_CGREG;
sf_time(&cTime);
}
else if(strstr((const char *)puiPara->Sim4gApn, APN_4G_ATT))
{
sprintf((char *)gsmPara, "AT+CGDCONT=1,\"IPV4V6\",\"%s\"\r", puiPara->Sim4gApn);
}
else
{
sprintf((char *)gsmPara, "%s", "AT+CGDCONT=1,\"IPV4V6\",\"\"\r");
}
}
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara));
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
}
break;
case QUECTEL_NETREG_QPRTPARA:
if(strstr((const char *)gsmPara, "OK") != NULL)
{
if(sf_ttyusb_restart() == SUCCESS)
{
callTime = 0;
time = 0;
eNetRegLocation = QUECTEL_NETREG_MODULE_RESTART;
}
else
{
ret = SF_SIM_ERROR_REG_NET;
printf("[%s:%d] tty usb restart err.\n", __FUNCTION__, __LINE__);
SLOGE(gsmPara);
sprintf((char *)logStr, "tty usb restart err,Error Code:0x%08X\n", ret);
SLOGE(logStr);
goto SF_MODULE_END;
}
}
break;
case QUECTEL_NETREG_MODULE_RESTART:
ret = sf_module_complete_init();
if(ret == SF_SUCCESS)
{
eNetRegLocation = QUECTEL_NETREG_FRIST;
//sprintf((char *)gsmPara, "AT+CGREG?\r");
//eNetRegLocation = QUECTEL_NETREG_CGREG;
}
else
{
goto SF_MODULE_END;
}
break;
// case QUECTEL_NETREG_QLWCFG_URC:
// if(strstr((const char *)gsmPara, "OK"))
// {
// eNetRegLocation = QUECTEL_NETREG_QLWCFG_STARTUP;
// strcpy((char *)gsmPara, "AT+QCFG=\"tcp/windowsize\",1,100\r");
// ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara));
// SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
// }
break; break;
@ -4255,9 +4463,6 @@ SINT32 sf_auto_net_reg(void)
strcpy((char *)gsmPara, "AT+CGREG?\r"); strcpy((char *)gsmPara, "AT+CGREG?\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara));
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
ttyData.cmp = "OK";
ttyData.len = strlen(gsmPara) + 2;
} }
break; break;
@ -4310,8 +4515,6 @@ SINT32 sf_auto_net_reg(void)
sprintf((char *)gsmPara, "AT+CIMI\r"); sprintf((char *)gsmPara, "AT+CIMI\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara));
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
ttyData.cmp = "OK";
ttyData.len = strlen(gsmPara) + 2;
} }
} }
else else
@ -4376,8 +4579,6 @@ SINT32 sf_auto_net_reg(void)
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
AddCimiTimes++; AddCimiTimes++;
time = 0; time = 0;
ttyData.cmp = "OK";
ttyData.len = strlen(gsmPara) + 2;
//sf_set_netsearch_step(GPRS_SEARCH_STEP_RETRYING); //sf_set_netsearch_step(GPRS_SEARCH_STEP_RETRYING);
//sp5kHostMsgSend(APP_UI_MSG_TRANSFER_REFLUSH, 0, 0, 0); //sp5kHostMsgSend(APP_UI_MSG_TRANSFER_REFLUSH, 0, 0, 0);
} }
@ -4447,8 +4648,6 @@ SINT32 sf_auto_net_reg(void)
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
callTime = 0; callTime = 0;
} }
ttyData.cmp = "OK";
ttyData.len = strlen(gsmPara) + 2;
} }
else else
{ {