📄 sm_recv.c
字号:
/****************************************************************
** *
** FILE : SM_RECV.C *
** COPYRIGHT : (c) 2001 .Xiamen Yaxon NetWork CO.LTD *
** *
** *
** By : CCH 2002.1.15 *
****************************************************************/
#include "includes.h"
#include "bsp.h"
#include "structs.h"
#include "message.h"
#include "tools.h"
#include "pdumode.h"
#include "rx_frame.h"
#include "systask.h"
#include "sm_recv.h"
#if EN_LCD > 0
#include "lcddrv.h"
#endif
#if EN_HANDSET > 0
#include "db_sm.h"
#include "handset.h"
static SMREC_STRUCT RecvSMRec;
#endif
/*
********************************************************************************
* DEFINE MODULE VARIANT
********************************************************************************
*/
#if EN_CODE6 > 0
static INT8U buffer[256];
#endif
#if DEBUG_UARTNo_GSMSTATUS <= 3
static void PrintSM(SM_STRUCT *sm)
{
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, "<receive short message>\n");
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, "time is: ");
SendFromUART_MEM(DEBUG_UARTNo_GSMSTATUS, &sm->SCTS[0], 2);
SendFromUART_BYTE(DEBUG_UARTNo_GSMSTATUS, '-');
SendFromUART_MEM(DEBUG_UARTNo_GSMSTATUS, &sm->SCTS[2], 2);
SendFromUART_BYTE(DEBUG_UARTNo_GSMSTATUS, '-');
SendFromUART_MEM(DEBUG_UARTNo_GSMSTATUS, &sm->SCTS[4], 2);
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, " ");
SendFromUART_MEM(DEBUG_UARTNo_GSMSTATUS, &sm->SCTS[6], 2);
SendFromUART_BYTE(DEBUG_UARTNo_GSMSTATUS, ':');
SendFromUART_MEM(DEBUG_UARTNo_GSMSTATUS, &sm->SCTS[8], 2);
SendFromUART_BYTE(DEBUG_UARTNo_GSMSTATUS, ':');
SendFromUART_MEM(DEBUG_UARTNo_GSMSTATUS, &sm->SCTS[10], 2);
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, "\n");
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, "sms is: ");
SendFromUART_MEM(DEBUG_UARTNo_GSMSTATUS, sm->SCA, sm->SCAL);
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, "\n");
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, "tel is: ");
SendFromUART_MEM(DEBUG_UARTNo_GSMSTATUS, sm->OA, sm->OAL);
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, "\n");
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, "data is: ");
SendFromUART_MEM(DEBUG_UARTNo_GSMSTATUS, sm->UD, sm->UDL);
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, "\n");
}
#endif
void DetectShortMessage(SM_STRUCT *recvsm)
{
BOOLEAN framevalid;
INT8U framelen;
INT16U i;
SYSFRAME_STRUCT *curframe;
#if DEBUG_UARTNo_GSMSTATUS <= 3
PrintSM(recvsm); /* print short message */
#endif
#if EN_CODE6 > 0
framelen = Code6_To_CodeX(MODE_CODE7, buffer, recvsm->UD, recvsm->UDL);
curframe = (SYSFRAME_STRUCT *)buffer;
#else
framelen = recvsm->UDL;
curframe = (SYSFRAME_STRUCT *)recvsm->UD;
#endif
if (framelen > 3) {
if (!ChkSum_SYSFrame(curframe, framelen)) framevalid = FALSE;
else framevalid = TRUE;
} else {
framevalid = FALSE;
}
if (framevalid) {
/* receive system short message */
DetectSysFrame(RX_FRAME_SM, framelen, curframe);
} else {
/* receive common short message */
#if DEBUG_UARTNo_GSMSTATUS <= 3
PrintFromUART(DEBUG_UARTNo_GSMSTATUS, "<receive common short message>\n");
#endif
if (recvsm->DCS == SM_DCS_BIT7) {
for (i = 0; i < recvsm->UDL; i++) {
recvsm->UD[i] = GsmCodeToASCII(recvsm->UD[i]);
}
}
#if EN_LCD > 0
InformLCD_RecvSM(recvsm);
#endif
#if EN_HANDSET > 0
if (ComType != USE_HST) return;
RecvSMRec.datalen = recvsm->UDL;
memcpy(RecvSMRec.data, recvsm->UD, sizeof(RecvSMRec.data));
RecvSMRec.tellen = recvsm->OAL;
memcpy(RecvSMRec.tel, recvsm->OA, sizeof(RecvSMRec.tel));
for (i = 0; i < 3; i++) {
RecvSMRec.date[i] = AsciiToDec(&recvsm->SCTS[2 * i], 2);
}
for (i = 0; i < 3; i++) {
RecvSMRec.time[i] = AsciiToDec(&recvsm->SCTS[6 + 2 * i], 2);
}
AddSMRec(&RecvSMRec);
OSQPost(HandsetMsgQue, MSG_HANDSET_RECVSM, 0, 0); /* send message to handset */
#endif
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -