VOS_VOID MN_CALL_InitCtx(VOS_VOID) { PS_MEM_SET(MN_CALL_GetCtx(), 0x0, sizeof(g_stMnCallCtx)); #if (FEATURE_ON == FEATURE_IMS) TAF_CALL_SetSrvccState(MN_CALL_SRVCC_STATE_BUTT); TAF_CALL_SetCcwaiMode(VOS_TRUE); TAF_CALL_SetCcwaCtrlMode(TAF_CALL_CCWA_CTRL_BY_NW); TAF_WARNING_LOG2(WUEPS_PID_TAF, "MN_CALL_InitCtx ", TAF_CALL_CCWA_CTRL_BY_NW, VOS_TRUE); #endif #if (FEATURE_ON == FEATURE_ECALL) TAF_CALL_SetEcallMsdTransStatus(VC_CALL_ECALL_TRANS_STATUS_BUTT); #endif }
VOS_VOID TAF_SPM_StopTimer( TAF_SPM_TIMER_ID_ENUM_UINT32 enTimerId, VOS_UINT16 usClientId ) { TAF_SPM_TIMER_CTX_STRU *pstSpmTimerCtx = VOS_NULL_PTR; VOS_UINT32 i; pstSpmTimerCtx = TAF_SPM_GetTimerCtxAddr(); for (i = 0 ; i < TAF_SPM_MAX_TIMER_NUM ; i++) { if ((TAF_SPM_TIMER_STATUS_RUNING == pstSpmTimerCtx[i].enTimerStatus) && (enTimerId == pstSpmTimerCtx[i].enTimerId) && (usClientId == pstSpmTimerCtx[i].usClientId)) { break; } } if (i >= TAF_SPM_MAX_TIMER_NUM) { TAF_WARNING_LOG2(WUEPS_PID_TAF,"TAF_SPM_StopTimer:timer already stoppe", (VOS_INT32)enTimerId, usClientId); return; } /* 停止VOS定时器: 当定时器的指针已经为空的时候, 说明其已经停止或者超时 */ if (VOS_NULL_PTR != pstSpmTimerCtx[i].hTimer) { VOS_StopRelTimer(&(pstSpmTimerCtx[i].hTimer)); } pstSpmTimerCtx[i].hTimer = VOS_NULL_PTR; pstSpmTimerCtx[i].enTimerId = TI_TAF_SPM_TIMER_BUTT; pstSpmTimerCtx[i].enTimerStatus = TAF_SPM_TIMER_STATUS_STOP; pstSpmTimerCtx[i].usClientId = TAF_SPM_INVALID_CLIENT_ID; TAF_SPM_SndOmTimerStatus(TAF_SPM_TIMER_STATUS_STOP, enTimerId, 0, usClientId); }
VOS_VOID TAF_SPM_StartTimer( TAF_SPM_TIMER_ID_ENUM_UINT32 enTimerId, VOS_UINT32 ulLen, VOS_UINT16 usClientId ) { TAF_SPM_TIMER_CTX_STRU *pstSpmTimerCtx = VOS_NULL_PTR; VOS_UINT32 i; VOS_UINT32 ulRet; pstSpmTimerCtx = TAF_SPM_GetTimerCtxAddr(); if (0 == ulLen) { TAF_WARNING_LOG2(WUEPS_PID_TAF,"TAF_SPM_StartTimer:timer len is zero!", (VOS_INT32)enTimerId, usClientId); return; } if (ulLen >= VOS_TIMER_MAX_LENGTH) { ulLen = VOS_TIMER_MAX_LENGTH - 1; } /* 如果缓存队列中该定时器已经启动则直接返回 */ for (i = 0 ; i < TAF_SPM_MAX_TIMER_NUM ; i++) { if ((TAF_SPM_TIMER_STATUS_RUNING == pstSpmTimerCtx[i].enTimerStatus) && (enTimerId == pstSpmTimerCtx[i].enTimerId) && (usClientId == pstSpmTimerCtx[i].usClientId)) { TAF_WARNING_LOG2(WUEPS_PID_TAF,"TAF_SPM_StartTimer:timer is running!", (VOS_INT32)enTimerId, usClientId); return; } } for (i = 0 ; i < TAF_SPM_MAX_TIMER_NUM ; i++) { if (TAF_SPM_TIMER_STATUS_STOP == pstSpmTimerCtx[i].enTimerStatus ) { break; } } if (i >= TAF_SPM_MAX_TIMER_NUM) { TAF_WARNING_LOG2(WUEPS_PID_TAF, "TAF_SPM_StartTimer:too many timer", (VOS_INT32)enTimerId, usClientId); return; } /* 启动定时器 */ ulRet = VOS_StartRelTimer(&(pstSpmTimerCtx[i].hTimer), WUEPS_PID_TAF, ulLen, enTimerId, usClientId, VOS_RELTIMER_NOLOOP, VOS_TIMER_PRECISION_5); if (VOS_OK != ulRet) { TAF_WARNING_LOG(WUEPS_PID_TAF,"TAF_SPM_StartTimer:VOS_StartRelTimer failed"); return; } pstSpmTimerCtx[i].enTimerId = enTimerId; pstSpmTimerCtx[i].enTimerStatus = TAF_SPM_TIMER_STATUS_RUNING; pstSpmTimerCtx[i].usClientId = usClientId; TAF_SPM_SndOmTimerStatus(TAF_SPM_TIMER_STATUS_RUNING, enTimerId, ulLen, usClientId); return; }