📄 smi_sms.c
字号:
* function call is expected
*-------------------------------------------------------------
*/
if (currSmsCmd EQ AT_CMD_NONE)
{
T_ACI_RETURN ret;
T_ACI_SMS_STOR mem;
UBYTE index;
va_start (varpars, sigCode);
mem = va_arg (varpars, T_ACI_SMS_STOR);
index = va_arg (varpars, UBYTE);
va_end (varpars);
if (sAT_PlusCPMS (CMD_SRC_LCL,
mem,
SMS_STOR_NotPresent,
SMS_STOR_NotPresent ) NEQ AT_CMPL)
sms_CmgrRej (CMS_ERR_UnknownErr);
ret = sAT_PlusCMGR (CMD_SRC_LCL, index, SMS_READ_Normal);
currSmsCmd = AT_CMD_CMGR;
/*
*-----------------------------------------------------------
* process result code of ACI function call
*-----------------------------------------------------------
*/
switch (ret)
{
case (AT_EXCT):
break;
default:
rAT_PlusCMS (currSmsCmd, CMS_ERR_UnknownErr, NULL);
break;
}
}
else
/*
*-----------------------------------------------------------
* error handling while waiting for answer on further ACI
* function call
*-----------------------------------------------------------
*/
sms_CmgrRej (CMS_ERR_UnknownErr);
}
break;
/*
*---------------------------------------------------------------
* process the signal SMS_SIG_WRITE
*---------------------------------------------------------------
*/
case (SMS_SIG_WRITE):
{
/*
*-------------------------------------------------------------
* call to ACI function when no answer on a further ACI
* function call is expected
*-------------------------------------------------------------
*/
if (currSmsCmd EQ AT_CMD_NONE)
{
T_ACI_RETURN ret;
ret = sAT_PlusCMGW_Old (CMD_SRC_LCL,
ACI_NumParmNotPresent,
&da.number[0],
&da.type,
SMS_STAT_NotPresent,
NOT_PRESENT_8BIT,
&msg, NULL, NULL, FALSE);
currSmsCmd = AT_CMD_CMGW;
/*
*-----------------------------------------------------------
* process result code of ACI function call
*-----------------------------------------------------------
*/
switch (ret)
{
case (AT_EXCT):
break;
default:
rAT_PlusCMS (currSmsCmd, CMS_ERR_UnknownErr, NULL);
break;
}
}
else
/*
*-----------------------------------------------------------
* error handling while waiting for answer on further ACI
* function call
*-----------------------------------------------------------
*/
sms_CmgwRej (CMS_ERR_UnknownErr);
}
break;
/*
*---------------------------------------------------------------
* process the signals SMS_SIG_SUBMIT and SMS_SIG_SUBMIT_FROM_MEM
*---------------------------------------------------------------
*/
case (SMS_SIG_SUBMIT):
case (SMS_SIG_SUBMIT_FROM_MEM):
{
SHORT pid = 0;
SHORT dcs = 0;
SHORT fo = TP_MTI_SMS_SUBMIT | TP_SRR_REQUEST;
fo |= (vp < 0 ? TP_VPF_NOT_PRESENT : TP_VPF_RELATIVE);
if (!(sigCode EQ SMS_SIG_SUBMIT_FROM_MEM AND
curIdx <= -1))
{
/*
*-----------------------------------------------------------
* setting of text mode parameter and service center address
*-----------------------------------------------------------
* call to ACI function when no answer on a further ACI
* function call is expected
*-----------------------------------------------------------
*/
if (sAT_PlusCSMP (CMD_SRC_LCL, fo, vp, NULL, NULL, pid, dcs)
EQ AT_CMPL
AND
sAT_PlusCSCA (CMD_SRC_LCL,
&sca.number[0],
&sca.type ) EQ AT_CMPL
AND
currSmsCmd EQ AT_CMD_NONE)
{
T_ACI_RETURN ret;
if (sigCode EQ SMS_SIG_SUBMIT)
{
/*
*-------------------------------------------------------
* submit the short message
*-------------------------------------------------------
*/
ret = sAT_PlusCMGS_Old (CMD_SRC_LCL,
&da.number[0],
&da.type,
&msg, NULL, NULL, FALSE);
currSmsCmd = AT_CMD_CMGS;
}
else
{
/*
*-------------------------------------------------------
* submit the short message from memory
*-------------------------------------------------------
*/
ret = sAT_PlusCMSS (CMD_SRC_LCL,
curIdx,
&da.number[0],
&da.type);
currSmsCmd = AT_CMD_CMSS;
}
/*
*---------------------------------------------------------
* process result code of ACI function call
*---------------------------------------------------------
*/
switch (ret)
{
case (AT_EXCT):
break;
default:
rAT_PlusCMS (currSmsCmd, CMS_ERR_UnknownErr, NULL);
break;
}
}
else
{
/*
*-------------------------------------------------------
* error handling while waiting for answer on further ACI
* function call
*-------------------------------------------------------
*/
if (sigCode EQ SMS_SIG_SUBMIT)
sms_CmgsRej (CMS_ERR_UnknownErr);
else
sms_CmssRej (CMS_ERR_UnknownErr);
}
}
}
break;
}
sms_siglevel--;
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SMS |
| STATE : code ROUTINE : sms_sigCmss |
+--------------------------------------------------------------------+
PURPOSE : This function is called to signal that a message is
send successfully to the service center.
<mr>: message reference
*/
LOCAL void sms_sigCmss (UBYTE mr)
{
TRACE_FUNCTION ("sms_sigCmss ()");
ui_signal (UI_SIG_SMS_SUBMIT, mr);
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SMS |
| STATE : code ROUTINE : rAT_PlusCMSS |
+--------------------------------------------------------------------+
PURPOSE : This function is called to indicate that a message is
send successfully to the service center.
<mr>: message reference
*/
GLOBAL void rAT_PlusCMSS (UBYTE mr, UBYTE numSeg)
{
TRACE_FUNCTION ("rAT_PlusCMSS ()");
if (currSmsCmd EQ AT_CMD_CMSS)
{
currSmsCmd = AT_CMD_NONE;
sms_sigCmss (mr);
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SMS |
| STATE : code ROUTINE : sms_CmssRej |
+--------------------------------------------------------------------+
PURPOSE : This function is called to indicate that a previous
submitted short message could not be sent to the
service center.
<err>: error code
*/
LOCAL void sms_CmssRej (T_ACI_CMS_ERR err)
{
TRACE_FUNCTION ("sms_CmssRej ()");
ui_signal (UI_SIG_UNHND_CMS_ERR, err);
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SMS |
| STATE : code ROUTINE : sms_sigCmgs |
+--------------------------------------------------------------------+
PURPOSE : This function is called to signal that a message is
send successfully to the service center.
<mr>: message reference
*/
LOCAL void sms_sigCmgs (UBYTE mr)
{
TRACE_FUNCTION ("sms_sigCmgs ()");
ui_signal (UI_SIG_SMS_SUBMIT, mr);
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SMS |
| STATE : code ROUTINE : rAT_PlusCMGS |
+--------------------------------------------------------------------+
PURPOSE : This function is called to indicate that a message is
send successfully to the service center.
<mr>: message reference
*/
GLOBAL void rAT_PlusCMGS (UBYTE mr, UBYTE numSeg)
{
TRACE_FUNCTION ("rAT_PlusCMGS ()");
if (currSmsCmd EQ AT_CMD_CMGS)
{
currSmsCmd = AT_CMD_NONE;
sms_sigCmgs (mr);
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SMS |
| STATE : code ROUTINE : sms_CmgsRej |
+--------------------------------------------------------------------+
PURPOSE : This function is called to indicate that a previous
submitted short message could not be sent to the
service center.
<err>: error code
*/
LOCAL void sms_CmgsRej (T_ACI_CMS_ERR err)
{
TRACE_FUNCTION ("sms_CmgsRej ()");
ui_signal (UI_SIG_UNHND_CMS_ERR, err);
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SMS |
| STATE : code ROUTINE : sms_sigCmgd |
+--------------------------------------------------------------------+
PURPOSE : This function is called to signal the result of a former
requested deletion of a message from preferred message
storage.
<rslt>: result code
*/
LOCAL void sms_sigCmgd (T_SMS_ACA_RSLT rslt)
{
TRACE_FUNCTION ("sms_sigCmgd ()");
ui_signal (UI_SIG_SMS_DELETE, rslt);
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SMS |
| STATE : code ROUTINE : sms_CmgdRej |
+--------------------------------------------------------------------+
PURPOSE : This function is called to indicate that a message was not
deleted successfully from preferred message storage.
<err>: error code
*/
LOCAL void sms_CmgdRej (T_ACI_CMS_ERR err)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -