📄 mfw_cm.c
字号:
TRACE_FUNCTION ("rAT_PlusCLIP()");
flag = 0;
if (number != NULL)
{
strcpy((char *)in_call.number, (char *)number);
in_call.ton = phb_cvtTon(type->ton);
flag = 1;
}
else
memset(in_call.number, '\0', MFW_NUM_LEN);
if (alpha != NULL)
{
in_call.name.len = alpha->len;
if (alpha->len)
{
memcpy(in_call.name.data,
alpha->data,
alpha->len);
flag = 1;
}
}
else
in_call.name.len = 0;
if (subaddr != NULL)
{
strcpy((char *)in_call.subaddr, (char *)subaddr);
flag = 1;
}
else
memset(in_call.subaddr, '\0', MFW_SUBADR_LEN);
if (flag == 1)
in_call.result = Present;
else
in_call.result = 0;
cm_signal(E_CM_CW, &in_call);
}
#else
void rAT_PlusCLIP(T_ACI_CLIP_STAT stat,
CHAR * number,
T_ACI_TOA * type,
U8 validity,
CHAR * subaddr,
T_ACI_TOS * satype,
CHAR * alpha)
{
int flag;
TRACE_FUNCTION ("rAT_PlusCLIP()");
flag = 0;
// in_call.result = 0;
if (number != NULL)
{
strcpy((char *)in_call.number, (char *)number);
in_call.ton = phb_cvtTon(type->ton);
flag = 1;
}
else
memset(in_call.number, '\0', MFW_NUM_LEN);
if (alpha != NULL)
{
strcpy((char *)in_call.name, (char *)alpha);
flag = 1;
}
else
memset(in_call.name, '\0', MFW_TAG_LEN);
if (subaddr != NULL)
{
strcpy((char *)in_call.subaddr, (char *)subaddr);
flag = 1;
}
else
memset(in_call.subaddr, '\0', MFW_SUBADR_LEN);
if (flag == 1)
in_call.result = Present;
else
in_call.result = 0;
cm_signal(E_CM_CW, &in_call);
}
#endif
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-MFW (8417) MODULE : MFW_CM |
| STATE : code ROUTINE : rAT_PlusCOLP |
+--------------------------------------------------------------------+
PURPOSE : Connected line presentation indication from ACI
*/
#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* alpha)
{
TRACE_FUNCTION ("rAT_PlusCOLP()");
if (number != NULL)
{
strcpy((char *)out_call.number, (char *)number);
out_call.ton = phb_cvtTon(type->ton);
}
else
memset(out_call.number, '\0', MFW_NUM_LEN);
/*NM, p001 */
if(alpha != NULL)
/*NM, p001 end */
{
out_call.name.len = MINIMUM(alpha->len, MFW_TAG_LEN);
if (alpha->len)
memcpy(out_call.name.data,
alpha->data,
alpha->len);
}
if (subaddr != NULL)
strcpy((char *)out_call.subaddr, (char *)subaddr);
else
memset(out_call.subaddr, '\0', MFW_SUBADR_LEN);
if (number != NULL)
cm_signal(E_CM_COLP, &out_call);
}
#else
GLOBAL void rAT_PlusCOLP ( T_ACI_COLP_STAT stat,
CHAR* number,
T_ACI_TOA* type,
CHAR* subaddr,
T_ACI_TOS* satype,
CHAR* alpha)
{
TRACE_FUNCTION ("rAT_PlusCOLP()");
// patch PMA 15 06 99 from Andreas
// if (stat == -1)
// return;
if (number != NULL)
{
strcpy((char *)out_call.number, (char *)number);
out_call.ton = phb_cvtTon(type->ton);
}
else
memset(out_call.number, '\0', MFW_NUM_LEN);
if (alpha != NULL)
strcpy((char *)out_call.name, (char *)alpha);
else
memset(out_call.name, '\0', MFW_TAG_LEN);
if (subaddr != NULL)
strcpy((char *)out_call.subaddr, (char *)subaddr);
else
memset(out_call.subaddr, '\0', MFW_SUBADR_LEN);
// patch PMA 15 06 99 from Andreas
if (number != NULL)
cm_signal(E_CM_COLP, &out_call);
}
#endif
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-MFW (8417) MODULE : MFW_CM |
| STATE : code ROUTINE : rAT_PlusCCWA |
+--------------------------------------------------------------------+
PURPOSE : Connected line presentation indication from ACI
*/
#ifdef NO_ASCIIZ
GLOBAL void rAT_PlusCCWA ( T_ACI_CLSSTAT * clsStatLst,
CHAR * number,
T_ACI_TOA * type,
U8 validity,
T_ACI_CLASS call_class,
T_ACI_PB_TEXT * alpha)
{
SHORT call_number;
TRACE_FUNCTION("rAT_PlusCCWA()");
in_call.result = NotPresent;
if (clsStatLst == 0)
{
if (number != NULL)
{
strcpy((char *)in_call.number, (char *)number);
in_call.ton = phb_cvtTon(type->ton);
}
else
memset(in_call.number, '\0', MFW_NUM_LEN);
if (alpha != NULL)
in_call.name.len = alpha->len;
else
in_call.name.len = 0;
if (alpha->len)
{
memcpy(in_call.name.data,
alpha->data,
alpha->len);
}
in_call.type = cm_callTyp_cvt(call_class);
if (number != 0 || alpha->len != 0 || in_call.type != NONE_TYPE)
in_call.result = Present;
cm_search_callId(CAL_STAT_Wait, &call_number);
in_call.call_number = call_number;
cm_signal(E_CM_CW, &in_call);
}
}
#else
GLOBAL void rAT_PlusCCWA ( T_ACI_CLSSTAT * clsStatLst,
CHAR * number,
T_ACI_TOA * type,
U8 validity,
T_ACI_CLASS call_class,
CHAR * alpha)
{
SHORT call_number;
in_call.result = NotPresent;
if (clsStatLst == 0)
{
if (number != NULL)
{
strcpy((char *)in_call.number, (char *)number);
in_call.ton = phb_cvtTon(type->ton);
}
else
memset(in_call.number, '\0', MFW_NUM_LEN);
if (alpha != NULL)
strcpy((char *)in_call.name, (char *)alpha);
else
memset(in_call.name, '\0', MFW_TAG_LEN);
in_call.type = cm_callTyp_cvt(call_class);
if (number != 0 || alpha != 0 || in_call.type != NONE_TYPE)
in_call.result = Present;
cm_search_callId(CAL_STAT_Wait, &call_number);
in_call.call_number = call_number;
cm_signal(E_CM_CW, &in_call);
}
}
#endif
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_CM |
| STATE : code ROUTINE : cm_mt_reject |
+--------------------------------------------------------------------+
PURPOSE : Reject the incoming call.
*/
void cm_mt_reject()
{
TRACE_FUNCTION ("cm_mt_reject()");
currTryAccept =0; //glowing,2004-06-12,import from M188
if (currAccepting)
{
currAccepting = 0; /* ES!! 210999 */
sAT_Abort(CMD_SRC_LCL, AT_CMD_A);
return;
}
cmd_hold = MFW_CM_MT_REJECT;
cm_search_callId(CAL_STAT_Wait, &dis_connect.call_number);
sAT_PlusCHLD(CMD_SRC_LCL, CHLD_MOD_RelHldOrUdub, 0);
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_CM |
| STATE : code ROUTINE: cm_mt_accept |
+--------------------------------------------------------------------+
PURPOSE : Accept the incoming call. If the active call exists,
place this active call on hold and accepts the
waiting call.
*/
void cm_mt_accept()
{
SHORT call_number;
T_MFW_CM_CALL_STAT stat; /* SPR#1983 - SH */
UBYTE ton;
UBYTE mode;
TRACE_FUNCTION ("cm_mt_accept()");
if (cm_search_callId(CAL_STAT_Active, &call_number) != CM_OK)
{
if (sAT_A(CMD_SRC_LCL) NEQ AT_EXCT)
{
TRACE_ERROR("sAT_A error");
}
else
{
currAccepting = 1; /* ES!! 210999 */
}
}
else
{
cmd_hold = MFW_CM_MT_ACCEPT;
/* SPR#1983 - SH - Get status of active call */
cm_search_callStat(call_number, &stat, &ton, &mode);
if (cm_search_callId(CAL_STAT_Wait, &call_number) EQ CM_OK)
cc_id = call_number;
/* glowing,2004-06-10, import from TCS2112 */
/* SPR#1983 - SH - If data call is active, end it and accept other call */
if (mode==DATA_CALL)
{
/*
* Accepting a call when there is an active data call,
* so drop the active call and accept the waiting call by the
* equivalent of the AT+CHLD=1 command.
*/
cm_set_cmd_status(CHLD_MOD_RelActAndAcpt, "");
if (sAT_PlusCHLD(CMD_SRC_LCL, CHLD_MOD_RelActAndAcpt, 0) NEQ AT_EXCT)
{
TRACE_ERROR("sAT_PlusCHLD(CHLD_MOD_RelActAndAcpt) error");
}
}
else /* SPR#1983 - SH - Important! Acts on next 'if' */
/* glowing,2004-08-10, end of import */
/* Marcus: issue 1049: 03/09/2002: Start */
if (cm_search_callId(CAL_STAT_Held, &call_number) EQ CM_OK)
{
/*
* Accepting a call when there is already an active call and a held
* call, so drop the active call and accept the waiting call by the
* equivalent of the AT+CHLD=1 command.
*/
cm_set_cmd_status(CHLD_MOD_RelActAndAcpt, "");
if (sAT_PlusCHLD(CMD_SRC_LCL, CHLD_MOD_RelActAndAcpt, 0) NEQ AT_EXCT)
{
TRACE_ERROR("sAT_PlusCHLD(CHLD_MOD_RelActAndAcpt) error");
}
}
else
{
/*
* Accepting a call when there is already an active call but no held
* call, so hold the active call and accept the waiting call by the
* equivalent of the AT+CHLD=2 command.
*/
cm_set_cmd_status(CHLD_MOD_HldActAndAcpt, "");
if (sAT_PlusCHLD(CMD_SRC_LCL, CHLD_MOD_HldActAndAcpt, 0) NEQ AT_EXCT)
{
TRACE_ERROR("sAT_PlusCHLD(CHLD_MOD_HldActAndAcpt) error");
}
/* glowing,2004-06-12,import from M188 */
else
{
currTryAccept= 1;
}
/* glowing,2004-06-12, end of import */
}
/* Marcus: issue 1049: 03/09/2002: End */
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_CM |
| STATE : code ROUTINE : cm_end_all |
+--------------------------------------------------------------------+
PURPOSE : End all calls (Held and Active)
*/
/* glowing,2004-06-10, cm_end_all is imported from TCS2112 */
void cm_end_all(void)
{
T_ACI_RETURN aci_res; // The value returned by sAT_H
TRACE_EVENT("cm_end_all()");
aci_res = sAT_H(CMD_SRC_LCL);
if (aci_res == AT_EXCT)
{
TRACE_EVENT("sAT_H returned AT_EXCT");
cmd_hold = MFW_CM_DISCONNECT_ALL;
}
else
{
TRACE_EVENT_P1("sAT_H returned %d", aci_res);
}
return;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_CM |
| STATE : code ROUTINE : cm_ok_connect |
+--------------------------------------------------------------------+
PURPOSE : The connect is successful.
*/
void cm_ok_connect(void)
{
SHORT call_number;
TRACE_FUNCTION ("cm_ok_connect()");
currAccepting = 0; /* ES!! 210999 */
currConnecting = 0; /* ES!! 290999 */
currTryAccept =0; //glowing,2004-06-12,import from M188
if (cc_stat.type == REDIALING_CALL)
{
rdl.redial_mode = CM_REDIAL_SUCCESS;
cm_signal(E_CM_REDIAL, &rdl);
}
cm_search_callId(CAL_STAT_Active, &call_number);
/*
** Reset the entries in the DTMF buffer
*/
mfw_cbuf_reset(mfw_cm_dtmf_q_id); // glowing,2004-06-10, from M188A
/* allow a new outgoing */
call_stat = MFW_CALL_FREE;
call_type = MFW_CALL_FREE;
cmd_hold = MFW_CM_NO_FLAG;
cm_signal(E_CM_CONNECT_ACK, &call_number);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_CM |
| STATE : code ROUTINE : cm_rmt_ok_connect |
+--------------------------------------------------------------------+
PURPOSE : The connect is successful.
*/
void cm_rmt_ok_connect()
{
SHORT call_number;
TRACE_FUNCTION ("cm_rmt_ok_connect()");
currTryAccept =0; //glowing,2004-06-12,import from M188
cm_search_callId(CAL_STAT_Active, &call_number);
cm_signal(E_CM_CONNECT_ACK, &call_number);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_CM |
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -