📄 smi_ss.c
字号:
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SS |
| STATE : code ROUTINE : ss_changeClir |
+--------------------------------------------------------------------+
PURPOSE :
*/
GLOBAL T_ACI_RETURN ss_changeClir (T_KSD_CLIR* Clir)
{
T_ACI_RETURN ret = AT_FAIL;
T_ACI_CLIR_MOD mode;
T_ACI_CLIR_STAT state;
TRACE_FUNCTION ("ss_changeClir ()");
/*
*-----------------------------------------------------------------
* call to ACI function when no answer on a further ACI function
* call is expected
*-----------------------------------------------------------------
*/
if (currSsCmd EQ AT_CMD_NONE)
{
ret = qAT_PlusCLIR (CMD_SRC_LCL, &mode, &state);
switch (ret)
{
case (AT_CMPL):
CLIRreqmode = Clir->mode;
CLIRqryrsn = RSN_CHANGE;
currSsCmd = AT_CMD_CLIR;
rAT_PlusCLIR (Clir->mode, state);
break;
case (AT_EXCT):
CLIRreqmode = Clir->mode;
CLIRqryrsn = RSN_CHANGE;
currSsCmd = AT_CMD_CLIR;
break;
default:
ss_sigClir (SS_RSLT_FAIL);
break;
}
}
else
{
/*
*---------------------------------------------------------------
* error handling while waiting for answer on further ACI
* function call
*---------------------------------------------------------------
*/
ss_sigClir (SS_RSLT_FAIL);
ret = AT_CMPL;
}
return ret;
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SS |
| STATE : code ROUTINE : ss_intrgtClir |
+--------------------------------------------------------------------+
PURPOSE :
*/
GLOBAL T_ACI_RETURN ss_intrgtClir (void)
{
T_ACI_RETURN ret = AT_FAIL;
T_ACI_CLIR_MOD mode;
T_ACI_CLIR_STAT state;
/*
*-----------------------------------------------------------------
* call to ACI function when no answer on a further ACI function
* call is expected
*-----------------------------------------------------------------
*/
if (currSsCmd EQ AT_CMD_NONE)
{
TRACE_FUNCTION ("ss_intrgtClir ()");
ret = qAT_PlusCLIR (CMD_SRC_LCL, &mode, &state);
switch (ret)
{
case (AT_CMPL):
CLIRqryrsn = RSN_INTRGT;
currSsCmd = AT_CMD_CLIR;
rAT_PlusCLIR (mode, state);
break;
case (AT_EXCT):
CLIRqryrsn = RSN_INTRGT;
currSsCmd = AT_CMD_CLIR;
break;
default:
ss_sigClir (SS_RSLT_FAIL);
break;
}
}
else
{
/*
*---------------------------------------------------------------
* error handling while waiting for answer on further ACI
* function call
*---------------------------------------------------------------
*/
ss_sigClir (SS_RSLT_FAIL);
ret = AT_CMPL;
}
return ret;
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SS |
| STATE : code ROUTINE : rAT_PlusCLIR |
+--------------------------------------------------------------------+
PURPOSE :
*/
GLOBAL void rAT_PlusCLIR (T_ACI_CLIR_MOD mode, T_ACI_CLIR_STAT state)
{
TRACE_FUNCTION ("rAT_PlusCLIR ()");
switch (CLIRqryrsn)
{
case (RSN_INTRGT):
ss_sigClir (ss_calcClirRslt (mode, state));
break;
case (RSN_CHANGE):
ss_changeClirRslt (CLIRreqmode, state);
break;
default:
break;
}
if (currSsCmd EQ AT_CMD_CLIR)
currSsCmd = AT_CMD_NONE;
CLIRqryrsn = RSN_NONE;
CLIRreqmode = CLIR_MOD_NotPresent;
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SS |
| STATE : code ROUTINE : ss_sigColp |
+--------------------------------------------------------------------+
PURPOSE :
*/
LOCAL void ss_sigColp (T_SS_ACA_RSLT rslt)
{
TRACE_FUNCTION ("ss_sigColp ()");
ui_signal (UI_SIG_SS, rslt);
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SS |
| STATE : code ROUTINE : ss_changeColpMod |
+--------------------------------------------------------------------+
PURPOSE :
*/
GLOBAL T_ACI_RETURN ss_changeColp (T_KSD_COLP* Colp)
{
T_ACI_RETURN ret = AT_FAIL;
TRACE_FUNCTION ("ss_changeColp ()");
switch (Colp->mode)
{
case (COLP_MOD_NotPresent):
ss_sigColp (SS_RSLT_FAIL);
break;
case (COLP_MOD_Disable):
COLPmode = Colp->mode;
ss_sigColp (SS_RSLT_SUPP);
break;
case (COLP_MOD_Enable):
{
/*
*-----------------------------------------------------------
* call to ACI function when no answer on a further ACI
* function call is expected
*-----------------------------------------------------------
*/
if (currSsCmd EQ AT_CMD_NONE)
{
T_ACI_COLP_STAT colpStat;
ret = qAT_PlusCOLP (CMD_SRC_LCL, &colpStat);
switch (ret)
{
case (AT_CMPL):
COLPreqmode = Colp->mode;
COLPqryrsn = RSN_CHANGE;
currSsCmd = AT_CMD_COLP;
rAT_PlusCOLP (colpStat, NULL, NULL, NULL, NULL, NULL);
break;
case (AT_EXCT):
COLPreqmode = Colp->mode;
COLPqryrsn = RSN_CHANGE;
currSsCmd = AT_CMD_COLP;
break;
default:
ss_sigColp (SS_RSLT_FAIL);
break;
}
}
else
{
/*
*---------------------------------------------------------
* error handling while waiting for answer on further ACI
* function call
*---------------------------------------------------------
*/
ss_sigColp (SS_RSLT_FAIL);
ret = AT_CMPL;
}
}
break;
}
return ret;
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SS |
| STATE : code ROUTINE : ss_intrgtColp |
+--------------------------------------------------------------------+
PURPOSE :
*/
GLOBAL T_ACI_RETURN ss_intrgtColp (void)
{
TRACE_FUNCTION ("ss_intrgtColp ()");
switch (COLPmode)
{
case (COLP_MOD_NotPresent):
ss_sigColp (SS_RSLT_NET);
break;
case (COLP_MOD_Disable):
ss_sigColp (SS_RSLT_SUPP);
break;
case (COLP_MOD_Enable):
ss_sigColp (SS_RSLT_INVOC);
break;
default:
ss_sigColp (SS_RSLT_FAIL);
break;
}
return AT_CMPL;
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SS |
| STATE : code ROUTINE : rAT_PlusCOLP |
+--------------------------------------------------------------------+
PURPOSE :
*/
#ifdef NO_ASCIIZ
GLOBAL void rAT_PlusCOLP (T_ACI_COLP_STAT stat,
CHAR* number,
T_ACI_TOA* type,
CHAR* subaddr,
T_ACI_TOS* satype,
T_ACI_PB_TEXT* pbText)
#else /* #ifdef NO_ASCIIZ */
GLOBAL void rAT_PlusCOLP (T_ACI_COLP_STAT stat,
CHAR* number,
T_ACI_TOA* type,
CHAR* subaddr,
T_ACI_TOS* satype,
CHAR* alpha)
#endif /* #ifdef NO_ASCIIZ */
{
#ifdef NO_ASCIIZ
char alphaBuf[MAX_ALPHA_LEN], *alpha;
if ( ( pbText NEQ NULL ) AND ( pbText->len NEQ 0 ) )
{
memcpy ( alphaBuf, pbText->data, pbText->len );
alphaBuf[pbText->len] = '\0';
alpha = alphaBuf;
}
else
{
alpha = NULL;
}
#endif /* #ifdef NO_ASCIIZ */
TRACE_FUNCTION ("rAT_PlusCOLP ()");
if (stat EQ COLP_STAT_NotPresent)
{
if (COLPmode EQ COLP_MOD_Enable OR
COLPmode EQ COLP_MOD_NotPresent)
{
if (alpha NEQ NULL)
ui_signal (UI_SIG_COLP, alpha, "");
else if (number NEQ NULL)
{
if (subaddr NEQ NULL)
ui_signal (UI_SIG_COLP, number, subaddr);
else
ui_signal (UI_SIG_COLP, number , "");
}
else
ui_signal (UI_SIG_COLP, "", "");
}
}
else
{
switch (COLPqryrsn)
{
case (RSN_CHANGE):
switch (stat)
{
case (COLP_STAT_NotProv):
case (COLP_STAT_Unknown):
switch (COLPreqmode)
{
case (COLP_MOD_Disable):
COLPmode = COLPreqmode;
ss_sigColp (SS_RSLT_SUPP);
break;
case (COLP_MOD_NotPresent):
case (COLP_MOD_Enable):
ss_sigColp (SS_RSLT_FAIL);
break;
}
break;
case (COLP_STAT_Prov):
switch (COLPreqmode)
{
case (COLP_MOD_Disable):
COLPmode = COLPreqmode;
ss_sigColp (SS_RSLT_SUPP);
break;
case (COLP_MOD_Enable):
COLPmode = COLPreqmode;
ss_sigColp (SS_RSLT_INVOC);
break;
case (COLP_MOD_NotPresent):
ss_sigColp (SS_RSLT_FAIL);
break;
}
break;
}
break;
default:
break;
}
if (currSsCmd EQ AT_CMD_COLP)
currSsCmd = AT_CMD_NONE;
COLPqryrsn = RSN_NONE;
COLPreqmode = COLP_MOD_NotPresent;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SS |
| STATE : code ROUTINE : ss_sigCcfc |
+--------------------------------------------------------------------+
PURPOSE :
*/
LOCAL void ss_sigCcfc (T_SS_ACA_RSLT rslt)
{
TRACE_FUNCTION ("ss_sigCcfc ()");
ui_signal (UI_SIG_SS, rslt);
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SS |
| STATE : code ROUTINE : ss_changeCf |
+--------------------------------------------------------------------+
PURPOSE :
*/
GLOBAL T_ACI_RETURN ss_changeCf (CHAR* seq, T_ACI_KSD_CF_PRM* prm)
{
T_ACI_RETURN ret;
TRACE_FUNCTION ("ss_changeCf ()");
/*
*-----------------------------------------------------------------
* call to ACI function when no answer on a further ACI function
* call is expected
*-----------------------------------------------------------------
*/
if (currSsCmd EQ AT_CMD_NONE)
{
ret = sAT_Dn (CMD_SRC_LCL,
seq,
D_CLIR_OVRD_Default,
D_CUG_CTRL_NotPresent,
D_TOC_Voice);
CCFCmode = prm->opCd;
CCFCqryrsn = RSN_CHANGE;
currSsCmd = KSD_CMD_CF;
switch (ret)
{
case (AT_CMPL):
rAT_OK (currSsCmd);
break;
case (AT_EXCT):
break;
default:
rAT_PlusCME (currSsCmd, CME_ERR_Unknown);
break;
}
}
else
{
/*
*---------------------------------------------------------------
* error handling while waiting for answer on further ACI
* function call
*---------------------------------------------------------------
*/
ui_signal (UI_SIG_UNHND_CME_ERR, CME_ERR_Unknown);
ret = AT_CMPL;
}
return ret;
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147) MODULE : SMI_SS |
| STATE : code ROUTINE : ss_CcfcRej |
+--------------------------------------------------------------------+
PURPOSE :
*/
GLOBAL void ss_CcfcRej (T_ACI_AT_CMD cmdId,
T_ACI_CME_ERR err)
{
TRACE_FUNCTION ("ss_CcfcRej ()");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -