📄 at_core.c
字号:
atcmdack = atcmdack;
Turninto_SetCops();
//Turninto_SetNoSleep();
}
static void Turninto_SetCops(void)
{
opstep = STEP_COPS;
}
static void InitProc_SetCops(void)
{
INT8U len,type;
if(!CanSendATCmd(DLC_CFG)) return ;
if(NeedAutoCops()) type = AT_MODE_AUTO_COPS;
else type = AT_MODE_MANUAL_COPS;
len = AT_COPS(sendbuf[DLC_CFG], type);
SendATCmd(DLC_CFG, &AT_COPS_PARA, sendbuf[DLC_CFG], len, InitInformer);
}
static void Inform_SetCops(INT8U reason, const ATCMDACK_STRUCT *atcmdack)
{
reason = reason;
atcmdack = atcmdack;
if(AT_SUCCESS == reason){
Turninto_SetNoSleep();
}else{
ConvertCopsMode(AT_CONVERT);
}
}
static void Turninto_SetNoSleep(void)
{
opstep = STEP_NOSLEEP;
}
static void InitProc_SetNoSleep(void)
{
INT16U len;
if (!CanSendATCmd(DLC_CFG)) return;
len = AT_NOSLEEP(sendbuf[DLC_CFG]);
SendATCmd(DLC_CFG, &AT_NOSLEEP_PARA, sendbuf[DLC_CFG], len, InitInformer);
}
static void Informer_SetNoSleep(INT8U reason, const ATCMDACK_STRUCT *atcmdack)
{
reason = reason;
atcmdack = atcmdack;
Turninto_SetCOLP();
}
/* detect SIM card */
static void Turninto_QuerySIM(void)
{
StopTmr(QuerySIMTmr);
opstep = STEP_QuerySIM;
SecondDetectSIM = FALSE;
}
static void InitProc_QuerySIM(void)
{
INT16U len;
if (GetTmrSwitch(QuerySIMTmr) == ON) return;
if (!CanSendATCmd(DLC_CFG)) return;
len = AT_R_SCKS(sendbuf[DLC_CFG]);
SendATCmd(DLC_CFG, &AT_R_SCKS_PARA, sendbuf[DLC_CFG], len, InitInformer);
}
static void Informer_QuerySIM(INT8U reason, const ATCMDACK_STRUCT *atcmdack)
{
reason = reason;
if (atcmdack->ackbuf[1] == 1) {
if (SecondDetectSIM) {
if ((status & _DetectSIM) == 0) {
status |= _DetectSIM;
StartTmr(RestartTmr, PERIOD_Restart);
OSQPost(GsmTaskMsgQue, MSG_ATCORE_DETECTSIM, 0, 0);
}
#if GSM_BENQ
Turninto_EnterMuxInit();
#else
Turninto_EnterMux();
#endif
} else {
SecondDetectSIM = TRUE;
}
} else {
SecondDetectSIM = FALSE;
if (status & _DetectSIM) {
status &= ~_DetectSIM;
StartTmr(RestartTmr, PERIOD_Restart_NoSIM);
OSQPost(GsmTaskMsgQue, MSG_ATCORE_NOSIMCARD, 0, 0);
}
StartTmr(QuerySIMTmr, PERIOD_QuerySIM);
}
}
static void Turninto_EnterMuxInit(void)
{
opstep = STEP_EnterMuxInit;
}
static void InitProc_EnterMuxInit(void)
{
INT16U len;
if (!CanSendATCmd(DLC_CFG)) return;
len = AT_MUXInit(sendbuf[DLC_CFG],0);
SendATCmd(DLC_CFG, &AT_MUXINIT_PARA, sendbuf[DLC_CFG], len, InitInformer);
}
static void Informer_EnterMuxInit(INT8U reason, const ATCMDACK_STRUCT *atcmdack)
{
reason = reason;
atcmdack = atcmdack;
Turninto_EnterMux();
}
/* enter multiplex mode */
static void Turninto_EnterMux(void)
{
opstep = STEP_EnterMux;
}
static void InitProc_EnterMux(void)
{
INT16U len;
if (!CanSendATCmd(DLC_CFG)) return;
len = AT_CMUX(sendbuf[DLC_CFG]);
SendATCmd(DLC_CFG, &AT_CMUX_PARA, sendbuf[DLC_CFG], len, InitInformer);
}
static void Informer_EnterMux(INT8U reason, const ATCMDACK_STRUCT *atcmdack)
{
reason = reason;
atcmdack = atcmdack;
Turninto_EstablishDLC();
}
/* establish DLCS */
static void Turninto_EstablishDLC(void)
{
if (!ReleaseDLC(DLC_CFG, 0)) {
ErrExit(ERR_ATCORE_ESTABLISHDLC);
} else {
CloseATTrans(DLC_CFG);
}
opstep = STEP_EstablishDLC;
opdlci = DLC_CTL;
}
static void InitProc_EstablishDLC(void)
{
switch(opdlci)
{
case DLC_CTL:
if (DLCIsClose(DLC_CTL)) {
if (!EstablishDLC(DLC_CTL, FALSE, Informer_EstablishDLC)) {
ErrExit(ERR_ATCORE_ESTABLISHDLC);
}
}
break;
case DLC_GPRS:
if (DLCIsClose(DLC_GPRS)) {
if (!EstablishDLC(DLC_GPRS, FALSE, Informer_EstablishDLC)) {
ErrExit(ERR_ATCORE_ESTABLISHDLC);
}
}
break;
case DLC_SM:
if (DLCIsClose(DLC_SM)) {
if (!EstablishDLC(DLC_SM, FALSE, Informer_EstablishDLC)) {
ErrExit(ERR_ATCORE_ESTABLISHDLC);
}
}
break;
case DLC_CFG:
if (DLCIsClose(DLC_CFG)) {
if (!EstablishDLC(DLC_CFG, FALSE, Informer_EstablishDLC)) {
ErrExit(ERR_ATCORE_ESTABLISHDLC);
}
}
break;
default:
ErrExit(ERR_ATCORE_OPSTEP);
break;
}
}
static void Informer_EstablishDLC(INT8U dlci, INT8U reason)
{
if (reason != _SUCCESS) {
ErrExit(ERR_ATCORE_ESTABLISHDLC);
return;
}
switch(dlci)
{
case DLC_CTL:
opdlci = DLC_GPRS;
break;
case DLC_GPRS:
OpenATTrans(DLC_GPRS);
EchoOnATTrans(DLC_GPRS);
opdlci = DLC_SM;
break;
case DLC_SM:
OpenATTrans(DLC_SM);
#if GSM_BENQ
EchoOnATTrans(DLC_SM);
#else
EchoOffATTrans(DLC_CFG);
#endif
opdlci = DLC_CFG;
break;
case DLC_CFG:
OpenATTrans(DLC_CFG);
#if GSM_BENQ
EchoOnATTrans(DLC_CFG);
Turninto_SetCMEE();
#else
EchoOffATTrans(DLC_CFG);
Turninto_EchoON();
#endif
break;
default:
ErrExit(ERR_ATCORE_OPSTEP);
break;
}
OSQPost(GsmTaskMsgQue, MSG_ATCORE_INIT, 0, 0);
}
#if GSM_BENQ
#else
/* turn on echo */
static void Turninto_EchoON(void)
{
opstep = STEP_EchoON;
opdlci = DLC_SM;
}
#endif
static void InitProc_EchoON(void)
{
INT16U len;
if (opdlci == DLC_SM) {
if (!CanSendATCmd(DLC_SM)) return;
len = AT_ECHO(sendbuf[DLC_SM], TRUE);
SendATCmd(DLC_SM, &AT_ECHO_PARA, sendbuf[DLC_SM], len, InitInformer);
} else if (opdlci == DLC_CFG) {
if (!CanSendATCmd(DLC_CFG)) return;
len = AT_ECHO(sendbuf[DLC_CFG], TRUE);
SendATCmd(DLC_CFG, &AT_ECHO_PARA, sendbuf[DLC_CFG], len, InitInformer);
}
}
static void Informer_EchoON(INT8U reason, const ATCMDACK_STRUCT *atcmdack)
{
reason = reason;
atcmdack = atcmdack;
if (opdlci == DLC_SM) {
EchoOnATTrans(DLC_SM);
opdlci = DLC_CFG;
} else if (opdlci == DLC_CFG) {
EchoOnATTrans(DLC_CFG);
Turninto_SetCMEE();
}
}
/* Open mobile error report */
static void Turninto_SetCMEE(void)
{
opstep = STEP_SetCMEE;
}
static void InitProc_SetCMEE(void)
{
INT16U len;
if (!CanSendATCmd(DLC_SM)) return;
#if GSM_BENQ
len = AT_CMEE(sendbuf[DLC_SM], '2');
#else
len = AT_CMEE(sendbuf[DLC_SM], '2');
#endif
SendATCmd(DLC_SM, &AT_CMEE_PARA, sendbuf[DLC_SM], len, InitInformer);
}
static void Informer_SetCMEE(INT8U reason, const ATCMDACK_STRUCT *atcmdack)
{
reason = reason;
atcmdack = atcmdack;
Turninto_OpenCLIP();
//Turninto_SetCOLP();
}
static void Turninto_SetCOLP(void)
{
opstep = STEP_SetCOLP;
}
static void InitProc_SetCOLP(void)
{
INT16U len;
if (!CanSendATCmd(DLC_CFG)) return;
len = AT_COLP(sendbuf[DLC_CFG],COLP_DISABLE);
SendATCmd(DLC_CFG, &AT_COLP_PARA, sendbuf[DLC_CFG], len, InitInformer);
}
static void Informer_SetCOLP(INT8U reason, const ATCMDACK_STRUCT *atcmdack)
{
reason = reason;
atcmdack = atcmdack;
//Turninto_OpenCLIP();
Turninto_QuerySIM();
}
/* set SM service mode */
static void Turninto_SetSMService(void)
{
opstep = STEP_SetSMService;
}
static void InitProc_SetSMService(void)
{
INT16U len;
if (!CanSendATCmd(DLC_SM)) return;
len = AT_CSMS(sendbuf[DLC_SM], 0);
SendATCmd(DLC_SM, &AT_CSMS_PARA, sendbuf[DLC_SM], len, InitInformer);
}
static void Informer_SetSMService(INT8U reason, const ATCMDACK_STRUCT *atcmdack)
{
reason = reason;
atcmdack = atcmdack;
Turninto_OpenSMIndication();
}
/* set PDU mode */
static void Turninto_SetPDUMode(void)
{
opstep = STEP_SetPDUMode;
}
static void InitProc_SetPDUMode(void)
{
INT16U len;
if (!CanSendATCmd(DLC_SM)) return;
len = AT_CMGF(sendbuf[DLC_SM], MODE_PDU);
SendATCmd(DLC_SM, &AT_CMGF_PARA, sendbuf[DLC_SM], len, InitInformer);
}
static void Informer_SetPDUMode(INT8U reason, const ATCMDACK_STRUCT *atcmdack)
{
reason = reason;
atcmdack = atcmdack;
Turninto_SetSMService();
}
/* open SM indication */
static void Turninto_OpenSMIndication(void)
{
opstep = STEP_OpenSMIndication;
}
static void InitProc_OpenSMIndication(void)
{
INT16U len;
if (!CanSendATCmd(DLC_SM)) return;
len = AT_CNMI(sendbuf[DLC_SM]);
SendATCmd(DLC_SM, &AT_CNMI_PARA, sendbuf[DLC_SM], len, InitInformer);
}
static void Informer_OpenSMIndication(INT8U reason, const ATCMDACK_STRUCT *atcmdack)
{
reason = reason;
atcmdack = atcmdack;
Turninto_ListSM();
}
/* open CLIP */
static void Turninto_OpenCLIP(void)
{
opstep = STEP_OpenCLIP;
}
static void InitProc_OpenCLIP(void)
{
INT16U len;
if (!CanSendATCmd(DLC_CFG)) return;
len = AT_CLIP(sendbuf[DLC_CFG], CLIP_ENABLE);
SendATCmd(DLC_CFG, &AT_CLIP_PARA, sendbuf[DLC_CFG], len, InitInformer);
}
static void Informer_OpenCLIP(INT8U reason, const ATCMDACK_STRUCT *atcmdack)
{
reason = reason;
atcmdack = atcmdack;
Turninto_SetPDUMode();
OSQPost(GsmTaskMsgQue, MSG_ATCORE_PHONEINIT, 0, 0);
}
static void Turninto_ListSM(void)
{
opstep = STEP_ListSM;
}
static void InitProc_ListSM(void)
{
INT8U len;
if (!CanSendATCmd(DLC_SM)) return;
len = AT_CMGL(sendbuf[DLC_SM]);
SendATCmd(DLC_SM, &AT_CMGL_PARA, sendbuf[DLC_SM], len, InitInformer);
}
static void Informer_ListSM(INT8U reason, const ATCMDACK_STRUCT *atcmdack)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -