VOS_VOID MN_MSG_ProcTimeoutMsg( REL_TIMER_MSG * pTmrMsg ) { MN_MSG_TIMER_HANDLE_STRU *pstHandle; MN_MSG_TIMER_ID_ENUM_U32 enTimerId; VOS_UINT32 ulIndex; VOS_UINT32 i; enTimerId = (MN_MSG_TIMER_ID_ENUM_U32)pTmrMsg->ulName; if (enTimerId < MN_TIMER_CLASS_MSG) { return; } else { for (i=0; i < (MN_MSG_TID_MAX - MN_TIMER_CLASS_MSG); i++) { if (enTimerId == f_astMsgTimerHandle[i].enTimerId) { break; } } if ( i < (MN_MSG_TID_MAX - MN_TIMER_CLASS_MSG) ) { ulIndex = enTimerId - MN_TIMER_CLASS_MSG; } else { MN_WARN_LOG1("MN_MSG_ProcTimeoutMsg:Invalid Timer ID", (VOS_INT32)enTimerId); return; } } MN_NORM_LOG1("TAF SMA Timer expired.", (VOS_INT32)enTimerId); /* 由ulName得到定时器句柄 将该句柄复位 */ pstHandle = (MN_MSG_TIMER_HANDLE_STRU *)&f_astMsgTimerHandle[i]; pstHandle->hTimer = VOS_NULL_PTR; pstHandle->enTimerId = MN_MSG_TID_MAX; /* 调用Timer ID对应的超时处理函数 */ f_astMsgTimerInfoTbl[ulIndex].pfnTimeoutProc(pTmrMsg->ulPara); }
VOS_VOID MN_CALL_ProcMnccPrimMsg( const VOS_VOID *pMsg ) { MNCC_IND_PRIM_MSG_STRU *pstMnccMsg; MN_CALL_CUSTOM_CFG_INFO_STRU *pstCustomCfgAddr; /* 获取特性控制NV地址 */ pstCustomCfgAddr = MN_CALL_GetCustomCfgInfo(); pstMnccMsg = (MNCC_IND_PRIM_MSG_STRU*)pMsg; MN_NORM_LOG1("MN_CALL_ProcAppReqMsg: enPrimName:", pstMnccMsg->enPrimName); /* 根据消息中的原语名,将消息交给相应的MNCC原语处理函数处理 */ switch(pstMnccMsg->enPrimName) { case MNCC_SETUP_IND: /*PC回放导出全局变量使用*/ #ifndef __PS_WIN32_RECUR__ NAS_CALL_SndOutsideContextData(); #endif MN_CALL_ProcMnccSetupInd(pstMnccMsg); break; case MNCC_SETUP_CNF: MN_CALL_ProcMnccSetupCnf(pstMnccMsg); break; case MNCC_SETUP_COMPL_IND: MN_CALL_ProcMnccSetupComplInd(pstMnccMsg); break; case MNCC_CALL_PROC_IND: MN_CALL_ProcMnccCallProcInd(pstMnccMsg); break; case MNCC_ALERT_IND: MN_CALL_ProcMnccAlertInd(pstMnccMsg); break; case MNCC_DISC_IND: MN_CALL_ProcMnccDiscInd(pstMnccMsg); break; case MNCC_REL_IND: MN_CALL_ProcMnccRelInd(pstMnccMsg); break; case MNCC_REL_CNF: MN_CALL_ModifyCallId(pstMnccMsg); MN_CALL_ProcMnccRelCnf(pstMnccMsg); break; case MNCC_REJ_IND: MN_CALL_ProcMnccRejInd(pstMnccMsg); break; case MNCC_FACILITY_IND: MN_CALL_ProcMnccFacilityInd(pstMnccMsg); break; case MNCC_FACILITY_LOCAL_REJ: MN_CALL_ProcMnccFacilityLocalRej(pstMnccMsg); break; case MNCC_HOLD_CNF: MN_CALL_ProcMnccHoldCnf(pstMnccMsg); break; case MNCC_HOLD_REJ: MN_CALL_ProcMnccHoldRej(pstMnccMsg); break; case MNCC_RETRIEVE_CNF: MN_CALL_ProcMnccRetrieveCnf(pstMnccMsg); break; case MNCC_RETRIEVE_REJ: MN_CALL_ProcMnccRetrieveRej(pstMnccMsg); break; case MNCC_START_DTMF_CNF: TAF_CALL_RcvCcStartDtmfCnf(pstMnccMsg); break; case MNCC_START_DTMF_REJ: TAF_CALL_RcvCcStartDtmfRej(pstMnccMsg); break; case MNCC_STOP_DTMF_CNF: TAF_CALL_RcvCcStopDtmfCnf(pstMnccMsg); break; case MNCC_MODIFY_IND: /* in-call modification, CC暂不支持 */ break; case MNCC_MODIFY_CNF: /* in-call modification, CC暂不支持 */ break; case MNCC_MODIFY_REJ_IND: /* in-call modification, CC暂不支持 */ break; case MNCC_SYNC_IND: MN_CALL_ProcMnccSyncInd(pstMnccMsg); break; case MNCC_PROGRESS_IND: MN_CALL_ProcMnccProgressInd(pstMnccMsg); break; case MNCC_CC_EST_IND: /*如果控制CCBS的NV打开,则处理*/ if (MN_CALL_NV_ITEM_ACTIVE == pstCustomCfgAddr->ucCcbsSupportFlg) { MN_CALL_ProcMnccEstInd(pstMnccMsg); } break; case MNCC_RECALL_IND: /*如果控制CCBS的NV打开,则处理*/ if (MN_CALL_NV_ITEM_ACTIVE == pstCustomCfgAddr->ucCcbsSupportFlg) { MN_CALL_ProcMnccRecallInd(pstMnccMsg); } break; case MNCC_UUSINFO_IND: MN_CALL_ProcUusInfoInd(pstMnccMsg); break; case MNCC_EMERGENCY_LIST_IND: MN_CALL_ProcEmergencyListInd(pstMnccMsg); break; #if (FEATURE_ON == FEATURE_IMS) case MNCC_SRVCC_STATUS_IND: TAF_CALL_ProcMnccSrvccStatusInd((MNCC_SRVCC_STATUS_IND_STRU*)&(pstMnccMsg->unParam.stSrvccStaInd)); break; #endif default: MN_WARN_LOG("MN_CALL_ProcAppReqMsg:Invalid Msg Name"); break; } }
VOS_VOID MN_CALL_ProcAppReqMsg( const VOS_VOID *pstMsg ) { MN_CALL_APP_REQ_MSG_STRU *pstCallMsg; pstCallMsg = (MN_CALL_APP_REQ_MSG_STRU*)pstMsg; MN_NORM_LOG1("MN_CALL_ProcAppReqMsg: enAppReq:", (VOS_INT32)pstCallMsg->enReq); /* 根据消息中的应用请求类型,将消息交给相应的请求处理函数处理 */ /*回放工程恢复全局变量*/ #ifdef __PS_WIN32_RECUR__ if ( VOS_TRUE == NAS_CALL_RestoreContextData((struct MsgCB*)pstMsg)) { return; } #endif switch (pstCallMsg->enReq) { case MN_CALL_APP_ORIG_REQ: /*PC回放导出全局变量使用*/ #ifndef __PS_WIN32_RECUR__ NAS_CALL_SndOutsideContextData(); #endif MN_CALL_CallOrigReqProc(pstCallMsg->clientId, pstCallMsg->opId, pstCallMsg->callId, (MN_CALL_ORIG_PARAM_STRU*)&pstCallMsg->unParm); break; case MN_CALL_APP_END_REQ: MN_CALL_CallEndReqProc(pstCallMsg->clientId, pstCallMsg->opId, pstCallMsg->callId, (MN_CALL_END_PARAM_STRU*)&pstCallMsg->unParm); break; case MN_CALL_APP_ANSWER_REQ: MN_CALL_CallAnswerReqProc(pstCallMsg->clientId, pstCallMsg->opId, pstCallMsg->callId, (MN_CALL_ANS_PARAM_STRU*)&pstCallMsg->unParm); break; case MN_CALL_APP_START_DTMF_REQ: TAF_CALL_RcvStartDtmfReq((struct MsgCB *)pstCallMsg); break; case MN_CALL_APP_STOP_DTMF_REQ: TAF_CALL_RcvStopDtmfReq((struct MsgCB *)pstCallMsg); break; case MN_CALL_APP_SUPS_CMD_REQ: MN_CALL_CallSupsCmdReqProc((struct MsgCB *)pstCallMsg); break; case MN_CALL_APP_GET_INFO_REQ: MN_CALL_CallInfoReqProc(pstCallMsg->clientId, pstCallMsg->opId); break; case MN_CALL_APP_GET_CDUR_REQ: MN_CALL_GetCdur(pstCallMsg->clientId, pstCallMsg->opId, pstCallMsg->callId); break; case MN_CALL_APP_SET_UUSINFO_REQ: MN_CALL_SetUus1Info(pstCallMsg->clientId, pstCallMsg->opId, (MN_CALL_UUS1_PARAM_STRU*)&pstCallMsg->unParm); break; case MN_CALL_APP_QRY_UUSINFO_REQ: MN_CALL_QryUus1Info(pstCallMsg->clientId, pstCallMsg->opId); break; case MN_CALL_APP_SET_ALS_REQ: MN_CALL_SetAls(pstCallMsg->clientId, pstCallMsg->opId, (MN_CALL_SET_ALS_PARAM_STRU*)&pstCallMsg->unParm); break; case MN_CALL_APP_QRY_ALS_REQ: MN_CALL_QryAls(pstCallMsg->clientId, pstCallMsg->opId); break; /*AT获取CALLINFO的同步API消息处理*/ case ID_TAFAGENT_MN_GET_CALL_INFO_REQ: MN_CALL_RcvTafAgentGetCallInfo(); break; case MN_CALL_APP_CUSTOM_ECC_NUM_REQ: MN_CALL_RcvTafEccNumReq((MN_CALL_APP_CUSTOM_ECC_NUM_REQ_STRU*)&pstCallMsg->unParm); break; case MN_CALL_APP_CLPR_GET_REQ: MN_CALL_RcvAtClprGetReq(pstCallMsg); break; case MN_CALL_APP_SET_CSSN_REQ: MN_CALL_RcvAtCssnSetReq(pstCallMsg->clientId, pstCallMsg->opId, (MN_CALL_SET_CSSN_REQ_STRU*)&pstCallMsg->unParm); break; case MN_CALL_APP_XLEMA_REQ: MN_CALL_RcvAtXlemaReq(pstCallMsg); break; default: MN_WARN_LOG("MN_CALL_ProcAppReqMsg:Invalid Msg Name"); break; } }