📄 gsmtask.c
字号:
#if DEBUG_UARTNo_GSMSTATUS <= 3
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, "<power up gsm>\n");
#endif
}
/*
********************************************************************************
* Handler: MSG_ATCORE_NOSIMCARD
********************************************************************************
*/
static void HdlMsg_ATCORE_NOSIMCARD(void)
{
#if DEBUG_UARTNo_GSMSTATUS <= 3
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, "<please insert SIM card>\n");
#endif
OSQPost(SysTaskMsgQue, MSG_GSMTASK_NOSIMCARD, 0, 0);
#if EN_HANDSET > 0
if (ComType == USE_HST) {
OSQPost(HandsetMsgQue, MSG_HANDSET_SIMCARD, 0, 0);
}
#endif
}
/*
********************************************************************************
* Handler: MSG_ATCORE_NONETWORK
********************************************************************************
*/
static void HdlMsg_ATCORE_NONETWORK(void)
{
#if DEBUG_UARTNo_GSMSTATUS <= 3
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, "<no searching network>\n");
#endif
OSQPost(SysTaskMsgQue, MSG_GSMTASK_NONETWORK, 0, 0);
InstallPermnentPort(PORT_LEDRED, 2, 20); /* indicate no network */
RemovePermnentPort(PORT_LEDGREEN);
}
/*
********************************************************************************
* Handler: MSG_ATCORE_SEARCHNETWORK
********************************************************************************
*/
static void HdlMsg_ATCORE_SEARCHNETWORK(void)
{
#if DEBUG_UARTNo_GSMSTATUS <= 3
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, "<network is searched>\n");
#endif
OSQPost(SysTaskMsgQue, MSG_GSMTASK_SEARCHNETWORK, 0, 0);
SM_ListEntry();
InstallPermnentPort(PORT_LEDGREEN, 2, 20); /* indicate search network */
RemovePermnentPort(PORT_LEDRED);
}
/*
********************************************************************************
* Handler: MSG_ATCORE_VOICEDISCONNECT
********************************************************************************
*/
static void HdlMsg_ATCORE_VOICEDISCONNECT(void)
{
GPRSSendEntry();
SM_ListEntry();
}
/*
********************************************************************************
* Handler: MSG_ATRECV_RECVSHORTMSG
********************************************************************************
*/
static void HdlMsg_ATRECV_RECVSHORTMSG(void)
{
StartFlashPort(PORT_LEDRED, 7, 3, 3, 0); /* indicate receive short message */
}
/*
********************************************************************************
* Handler: HdlMsg_TCPDRV_LOG
********************************************************************************
*/
static void HdlMsg_TCPDRV_LOG(void)
{
STREAM *wstrm;
SM_ListEntry();
if (OnlinePrompt.prompttype == 0x02) {
wstrm = GetSYSFrameStream();
ASMSYSFrameHead_MODE2(wstrm, EgCode.egcode, 0x0151);
WriteBYTE_Strm(wstrm, 0x03);
MovStrmPtr(wstrm, QueryPosition(GetStrmPtr(wstrm)));
SendSYSFrame_MODE2(wstrm, 0, 0, SM_ATTR_TCP | SM_ATTR_COMMON, 0);
}
}
/*
********************************************************************************
* Handler: HdlMsg_UDPDRV_LOG
********************************************************************************
*/
static void HdlMsg_UDPDRV_LOG(void)
{
STREAM *wstrm;
SM_ListEntry();
if (OnlinePrompt.prompttype == 0x02) {
wstrm = GetSYSFrameStream();
ASMSYSFrameHead_MODE2(wstrm, EgCode.egcode, 0x0151);
WriteBYTE_Strm(wstrm, 0x03);
MovStrmPtr(wstrm, QueryPosition(GetStrmPtr(wstrm)));
SendSYSFrame_MODE2(wstrm, 0, 0, SM_ATTR_UDP | SM_ATTR_COMMON, 0);
}
}
static FUNCENTRY_STRUCT functionentry[] = {
MSG_ATTRANS_TSK, HdlATCmdTrans,
MSG_ATTRANS_FREE, HdlMsg_ATTRANS_FREE,
MSG_ATRECV_RECVSHORTMSG, HdlMsg_ATRECV_RECVSHORTMSG,
MSG_ATVOICE_TSK, HdlMsg_ATVOICE_TSK,
MSG_ATSET_TSK, HdlMsg_ATSET_TSK,
MSG_ATSM_TSK, HdlMsg_ATSM_TSK,
MSG_ATSM_FREE, SM_ListEntry,
MSG_ATSM_UNCLOGSM, SM_ListEntry,
MSG_ATSM_RESULT, HdlMsg_ATSM_RESULT,
MSG_ATSM_SENDSHORTMSG, HdlMsg_ATSM_SENDSHORTMSG,
MSG_ATCORE_TSK, HdlMsg_ATCORE_TSK,
MSG_ATCORE_RESET, HdlMsg_ATCORE_RESET,
MSG_ATCORE_INIT, HdlMsg_ATCORE_INIT,
MSG_ATCORE_ENDINIT, HdlMsg_ATCORE_ENDINIT,
MSG_ATCORE_SIGNAL, HdlMsg_ATCORE_SIGNAL,
MSG_ATCORE_DETECTSIM, HdlMsg_ATCORE_DETECTSIM,
MSG_ATCORE_POWERDOWNGSM, HdlMsg_ATCORE_POWERDOWNGSM,
MSG_ATCORE_POWERUPGSM, HdlMsg_ATCORE_POWERUPGSM,
MSG_ATCORE_NOSIMCARD, HdlMsg_ATCORE_NOSIMCARD,
MSG_ATCORE_NONETWORK, HdlMsg_ATCORE_NONETWORK,
MSG_ATCORE_SEARCHNETWORK, HdlMsg_ATCORE_SEARCHNETWORK,
MSG_ATCORE_VOICEDISCONNECT, HdlMsg_ATCORE_VOICEDISCONNECT,
MSG_ATCORE_UNPROHIBITSM, SM_ListEntry,
MSG_SMLIST_TSK, SM_ListEntry,
MSG_SMLIST_FREE, MonitorTskEntry,
MSG_MONITOR_TSK, MonitorTskEntry,
MSG_MONITOR_ALLOW, 0,
MSG_MONITOR_ADDAUTOMONITOR, AddAutoMonitor,
MSG_PHONEDRV_MODEMREQ, HdlMsg_modem_req,
MSG_GPRSDRV_PPPESTABLISH, HdlMsg_PPPESTABLISH,
MSG_GPRSDRV_PPPBROKEN, HdlMsg_PPPBROKEN,
MSG_GPRSSEND_TSK, GPRSSendEntry,
MSG_GPRSSEND_FREE, SM_ListEntry,
MSG_GPRSRECV_TSK, GPRSRecvEntry,
MSG_TCPDRV_CONNECTERR, HdlMsg_GPRSComERR,
MSG_TCPDRV_LOGERR, HdlMsg_GPRSComERR,
MSG_TCPDRV_LOG, HdlMsg_TCPDRV_LOG,
MSG_SOCKTASK_OPEN, InformMsg_SocketOpen,
MSG_SOCKTASK_CLOSE, InformMsg_SocketClose,
MSG_SOCKTASK_FREE, GPRSSendEntry,
MSG_SOCKTASK_SENDFLOW, HdlMsg_GPRSComERR,
MSG_UDPTASK_CLOSE, InformMsg_UDPComClose,
MSG_UDPTASK_OPEN, InformMsg_UDPComOpen,
MSG_UDPTASK_FREE, GPRSSendEntry,
MSG_IVUDPTSK_CLOSE, InformMsg_IVUDPComClose,
MSG_IVUDPTSK_OPEN, InformMsg_IVUDPComOpen,
MSG_IVUDPTSK_FREE, GPRSSendEntry,
MSG_UDPDRV_CONNECTERR, HdlMsg_GPRSComERR,
MSG_UDPDRV_LOGERR, HdlMsg_GPRSComERR,
MSG_UDPDRV_LOG, HdlMsg_UDPDRV_LOG,
MSG_IVUDPDRV_CONNECTERR, HdlMsg_GPRSComERR,
MSG_IVUDPDRV_LOGERR, HdlMsg_GPRSComERR,
MSG_IVUDPDRV_LOG, SM_ListEntry,
MSG_DCLS_SENDTSK, DLCSEntry,
MSG_RXFRANE_RECV, RX_FrameEntry,
#if GSM_BENQ
MSG_ATCORE_PHONEINIT, Hdl_Phone_InitPara
#endif
};
static void GsmTask(void *pd)
{
pd = pd;
#if DEBUG_UARTNo_GSMSTATUS <= 3
InitUART(DEBUG_UARTNo_GSMSTATUS, DEBUG_UART_BAUD); /* initialize debug uart */
#endif
InitDLCS();
InitAT_Trans();
InitAT_Recv();
InitAT_Core();
InitAT_Set();
InitAT_Voice();
InitAT_SM();
InitSM_List();
InitRX_Frame();
InitPhoneDrv();
InitMonitor();
InitAutoDial();
InitCallRHT();
InitGprsDrv();
InitPosition();
wdgid = ApplyWatchDogID();
for(;;) {
if (OSQPend(GsmTaskMsgQue, 20, &GsmCurMsg) == OS_NO_ERR) {
FindProcEntry(GsmCurMsg.MsgID, functionentry, sizeof(functionentry)/sizeof(functionentry[0]));
}
ResetWatchDog(wdgid);
}
}
void CreateGsmTask(void)
{
GsmTaskMsgQue = OSQCreate(MsgBuf, sizeof(MsgBuf)/sizeof(MsgBuf[0]));
OSTaskCreate(GsmTask, (void *)0, &GsmTaskStack[STACK_GSMTASK], PRIO_GSMTASK);
}
void HdlMsg_ATCMD_RECV(INT8U id, INT8U *sptr, INT16U len)
{
if (SuspendATRecv(id)) {
if (!HdlATCmdAck(id, sptr, len))
AT_RecvEntry(id, sptr, len);
} else if (!AT_RecvEntry(id, sptr, len)) {
HdlATCmdAck(id, sptr, len);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -