📄 smi_aca.c
字号:
*---------------------------------------------------------
*/
case (SEQGRP_INTRGT_SIM_LOCK):
break;
/*
*---------------------------------------------------------
* handling of sequence group SEQGRP_SND_CHLD
*---------------------------------------------------------
*/
case (SEQGRP_CHLD):
hnd->atReturn = cal_changeCall (&hnd->param.chld);
break;
/*
*---------------------------------------------------------
* handling of sequence group SEQGRP_SND_CTFR
*---------------------------------------------------------
*/
case (SEQGRP_CTFR):
hnd->atReturn = cal_invokeCTFR(&hnd->param.ctfr);
break;
/*
*---------------------------------------------------------
* handling of sequence group SEQGRP_SND_CBST
*---------------------------------------------------------
*/
case (SEQGRP_SND_CBST):
hnd->atReturn = cal_setCbst (&hnd->param.cbst);
break;
/*
*---------------------------------------------------------
* handling of sequence group SEQGRP_SND_CRLP
*---------------------------------------------------------
*/
case (SEQGRP_SND_CRLP):
hnd->atReturn = cal_setCrlp (&hnd->param.crlp);
break;
/*
*---------------------------------------------------------
* handling of sequence group SEQGRP_SND_DS
*---------------------------------------------------------
*/
case (SEQGRP_SND_DS):
hnd->atReturn = cal_setDs (&hnd->param.ds);
break;
/*
*---------------------------------------------------------
* handling of sequence group SEQGRP_SPEECH_DATA
*---------------------------------------------------------
*/
case (SEQGRP_SPEECH_DATA):
break;
/*
*---------------------------------------------------------
* handling of sequence group SEQGRP_DATA_SPEECH
*---------------------------------------------------------
*/
case (SEQGRP_DATA_SPEECH):
break;
/*
*---------------------------------------------------------
* handling of sequence group SEQGRP_EM_MODE
*---------------------------------------------------------
*/
#if defined (EM_MODE)
case (SEQGRP_EM_MODE):
if (!strcmp (hnd->restSeq, "*0"))
{
// enable recording
em_Enable_Post_Mortem ();
}
if (!strcmp (hnd->restSeq, "*1"))
{
// disable recording
em_Disable_Post_Mortem ();
}
if (!strcmp (hnd->restSeq, "*2"))
{
UBYTE dump = TRUE;
em_data_type em_data;
UBYTE i, max_i;
char buf[60];
while (dump)
{
switch (em_Read_Post_Mortem (&em_data))
{
case DRV_OK:
sprintf (buf, ">PM %x %x %x %x",
em_data.em_class,
em_data.em_subclass,
em_data.em_type,
em_data.em_length);
if (em_data.em_length > 10)
max_i = 10;
else
max_i = i;
for (i=0;i<max_i;i++)
sprintf (buf+strlen (buf)," %x", em_data.em_parameter[i]);
TRACE_EVENT (buf);
break;
case EM_NO_MORE_DATA:
case EM_INVALID_ACCESS:
dump = FALSE;
break;
}
}
}
break;
#endif
/*
*---------------------------------------------------------
* handling of sequence group SEQGRP_UNKNOWN
*---------------------------------------------------------
*/
case (SEQGRP_UNKNOWN):
TRACE_EVENT ("smi_aca.c: aca_keySeqInd: sequence group unknown");
ui_signal (UI_SIG_UNHND_CME_ERR, CME_ERR_Unknown);
aca_keySeqHndInit (hnd);
break;
}
if (hnd->atReturn EQ AT_FAIL)
{
aca_keySeqHndInit (hnd);
return;
}
else
{
hnd->nextSeq = hnd->restSeq;
}
}
else
{
TRACE_EVENT ("smi_aca.c: aca_keySeqInd: ksd_decode failed");
ui_signal (UI_SIG_UNHND_CME_ERR, CME_ERR_Unknown);
aca_keySeqHndInit (hnd);
return;
}
}
while (hnd->atReturn EQ AT_CMPL AND strlen (hnd->nextSeq) NEQ 0);
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_ACA |
| STATE : code ROUTINE : rAT_PlusCME |
+--------------------------------------------------------------------+
PURPOSE : This function will be called by the ACI when an error
inside the ME occured.
<cmdId>: command identity
<err>: error code
*/
GLOBAL void rAT_PlusCME (T_ACI_AT_CMD cmdId, T_ACI_CME_ERR err)
{
CHAR buf[30];
sprintf (buf, "rAT_PlusCME (%d, %d)", cmdId, err);
TRACE_FUNCTION (buf);
switch (cmdId)
{
case (AT_CMD_ABRT): rAT_PlusCME (currAbrtCmd, err);
currAbrtCmd = AT_CMD_NONE; break;
case (AT_CMD_CFUN): reg_CfunRej (cmdId, err); break;
case (AT_CMD_CPIN): sec_CpinRej (cmdId, err); break;
case (AT_CMD_COPS): reg_CopsRej (cmdId, err); break;
case (KSD_CMD_CF) : ss_CcfcRej (cmdId, err); break;
case (KSD_CMD_CB) : ss_ClckRej (cmdId, err); break;
case (KSD_CMD_CW) : ss_CcwaRej (cmdId, err); break;
case (KSD_CMD_PWD): sec_CpwdRej (cmdId, err); break;
case (AT_CMD_D) : cal_DRejWhilePlusCME (cmdId, err); break;
case (AT_CMD_H) : cal_HRejWhilePlusCME (cmdId, err); break;
case (AT_CMD_Z) : cal_HRejWhilePlusCME (cmdId, err); break;
case (AT_CMD_A) : cal_ARejWhilePlusCME (cmdId, err); break;
case (AT_CMD_CHLD): cal_ChldCtfrRej (cmdId, err); break;
case (AT_CMD_VTS) : cal_VtsRej (cmdId, err); break;
case (KSD_CMD_CL) : break;
case (KSD_CMD_UBLK): break;
case (KSD_CMD_USSD): break;
default:
ui_signal (UI_SIG_UNHND_CME_ERR, err);
break;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_ACA |
| STATE : code ROUTINE : rAT_OK |
+--------------------------------------------------------------------+
PURPOSE : This function will be called by the ACI to signal the
correct processing of a previous stimulated ACI
transaction.
<cmdId>: command identity
*/
#ifdef AT_INTERPRETER
EXTERN T_ACI_AT_CMD currExtCmd;
EXTERN void ext_OK ( T_ACI_AT_CMD cmdId );
#endif
GLOBAL void rAT_OK (T_ACI_AT_CMD cmdId)
{
CHAR buf[20];
sprintf (buf, "rAT_OK (%d)", cmdId);
TRACE_FUNCTION (buf);
#ifdef AT_INTERPRETER
if (currExtCmd NEQ AT_CMD_NONE)
{
ext_OK (cmdId);
}
else
#endif
{
switch (cmdId)
{
case (AT_CMD_ABRT) : rAT_OK (currAbrtCmd);
currAbrtCmd = AT_CMD_NONE; break;
case (AT_CMD_CFUN) : reg_CfunCnf (cmdId); break;
case (AT_CMD_CPIN) : sec_CpinCnf (cmdId); break;
case (AT_CMD_COPS) : reg_CopsCnf (cmdId); break;
case (AT_CMD_D) : cal_DCnf (cmdId); break;
case (AT_CMD_A) : cal_ACnf (cmdId); break;
case (AT_CMD_H) : cal_HCnf (cmdId); break;
case (AT_CMD_Z) : cal_HCnf (cmdId); break;
case (KSD_CMD_CF) : ss_CcfcCnf (cmdId); break;
case (KSD_CMD_CB) : ss_ClckCnf (cmdId); break;
case (KSD_CMD_CW) : ss_CcwaCnf (cmdId); break;
case (KSD_CMD_PWD) : sec_CpwdCnf (cmdId); break;
case (AT_CMD_CHLD) :
case (AT_CMD_CTFR) : cal_ChldCtfrCnf (cmdId); break;
case (AT_CMD_CMGD) : sms_CmgdCnf (cmdId); break;
case (AT_CMD_VTS) : cal_VtsCnf (cmdId); break;
case (KSD_CMD_CL) : break;
case (KSD_CMD_UBLK): break;
case (KSD_CMD_USSD): break;
default: break;
}
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_ACA |
| STATE : code ROUTINE : rAT_PercentDRV |
+--------------------------------------------------------------------+
PURPOSE : This function is used ...
<device>: device identity
<function>: function corresponding to devide
<val1>: first value of corresponding function
<val2>: second value of corresponding function
*/
GLOBAL void rAT_PercentDRV(T_ACI_DRV_DEV device,
T_ACI_DRV_FCT function,
UBYTE val1,
UBYTE val2)
{
TRACE_FUNCTION ("rAT_PercentDRV");
switch (device)
{
case (DRV_DEV_Keypad):
switch (function)
{
case (DRV_FCT_KeypadInd):
ui_keypadInd (val1, val2);
break;
default:
break;
}
break;
default:
break;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_ACA |
| STATE : code ROUTINE : rAT_PercentCLOG |
+--------------------------------------------------------------------+
PURPOSE : This function is used ...
*/
GLOBAL void rAT_PercentCLOG( T_ACI_CLOG * cmd )
{
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_ACA |
| STATE : code ROUTINE : rAT_PercentRLOG |
+--------------------------------------------------------------------+
PURPOSE : This function is used ...
*/
GLOBAL void rAT_PercentRLOG( T_ACI_RLOG * rslt )
{
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_ACA |
| STATE : code ROUTINE : aca_cvtNumber |
+--------------------------------------------------------------------+
PURPOSE : This function is used to convert a phone number (either
SMS service centre address or destination address) as a
string into a phone number in the format used by the ACI.
*/
GLOBAL void aca_cvtNumber (CHAR* inNumber, T_ACA_NUMBER* outNumber)
{
BOOL international = FALSE; /* holds whether number is */
/* international */
CHAR* restNumber; /* points to the phone number */
/* without international indication */
if (inNumber[0] EQ '+')
{
international = TRUE;
restNumber = inNumber + 1;
}
else if (inNumber[0] EQ '0' AND inNumber[1] EQ '0')
{
international = TRUE;
restNumber = inNumber + 2;
}
else
restNumber = inNumber;
strncpy (outNumber->number, restNumber, MAX_SMS_NUM_LEN - 1);
outNumber->number[MAX_SMS_NUM_LEN - 1] = NULL_TERM;
outNumber->type.ton = (international ? TON_International :
TON_Unknown);
outNumber->type.npi = NPI_IsdnTelephony;
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_ACA |
| STATE : code ROUTINE : aca_recvtNumber |
+--------------------------------------------------------------------+
PURPOSE : This function is used to convert a phone number (either
SMS service centre address or destination address) in the
format used by the ACI into a phone number as a string.
*/
GLOBAL void aca_recvtNumber (T_ACA_NUMBER* inNumber, CHAR* outNumber)
{
UBYTE offset = 0;
if (inNumber->type.ton EQ TON_International)
{
outNumber[0] = '+';
offset = 1;
}
strncpy (outNumber + offset,
inNumber->number,
MAX_SMS_NUM_LEN - 1 - offset);
outNumber[MAX_SMS_NUM_LEN - 1] = NULL_TERM;
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_ACA |
| STATE : code ROUTINE : aca_setAbrtCmd |
+--------------------------------------------------------------------+
PURPOSE : This function is used to set the command which should be
aborted.
*/
GLOBAL BOOL aca_setAbrtCmd (T_ACI_AT_CMD cmd)
{
BOOL ret = FALSE;
if ( currAbrtCmd EQ AT_CMD_NONE AND
cmd NEQ AT_CMD_ABRT )
{
currAbrtCmd = cmd;
ret = TRUE;
}
return ret;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -