RNIC_TIMER_STATUS_ENUM_UINT8 RNIC_GetTimerStatus( RNIC_TIMER_ID_ENUM_UINT16 enTimerId ) { RNIC_TIMER_CTX_STRU *pstRnicTimerCtx; VOS_UINT32 ulLeftLen; pstRnicTimerCtx = RNIC_GetTimerAddr(); ulLeftLen = 0; if (enTimerId >= RNIC_MAX_TIMER_NUM) { return RNIC_TIMER_STATUS_STOP; } if (RNIC_TIMER_STATUS_RUNING == pstRnicTimerCtx[enTimerId].enTimerStatus) { if (VOS_OK != (VOS_GetRelTmRemainTime(&(pstRnicTimerCtx[enTimerId].hTimer), &ulLeftLen))) { RNIC_StopTimer(enTimerId); return RNIC_TIMER_STATUS_STOP; } else { return RNIC_TIMER_STATUS_RUNING; } } return RNIC_TIMER_STATUS_STOP; }
VOS_VOID NAS_MMC_StopAllTimer( VOS_VOID ) { NAS_MMC_TIMER_CTX_STRU *pstMmcTimerCtx; VOS_UINT32 i; VOS_UINT32 ulTimerRemainLen; ulTimerRemainLen = 0; pstMmcTimerCtx = NAS_MMC_GetTimerAddr(); for ( i = 0 ; i < NAS_MMC_MAX_TIMER_NUM ; i++ ) { if ( NAS_MMC_TIMER_STATUS_RUNING == pstMmcTimerCtx[i].enTimerStatus ) { if (VOS_OK != VOS_GetRelTmRemainTime(&(pstMmcTimerCtx[i].hTimer), &ulTimerRemainLen )) { ulTimerRemainLen = 0; } /* 停止VOS定时器 */ (VOS_VOID)VOS_StopRelTimer(&(pstMmcTimerCtx[i].hTimer)); NAS_MMC_SndOmMmcTimerStatus(NAS_MMC_TIMER_STATUS_STOP, pstMmcTimerCtx[i].enTimerId, ulTimerRemainLen * 10); pstMmcTimerCtx[i].hTimer = VOS_NULL_PTR; pstMmcTimerCtx[i].enTimerId = TI_NAS_MMC_TIMER_BUTT; pstMmcTimerCtx[i].enTimerStatus = NAS_MMC_TIMER_STATUS_STOP; } } }
/***************************************************************************** 函 数 名 : RNIC_GetTimerStatus 功能描述 : 查询指定的RNIC定时器的状态 输入参数 : enTimerId:需要查询的定时器ID 输出参数 : 无 返 回 值 : RNIC_TIMER_STATUS_ENUM_UINT8:定时器状态 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2011年12月12日 修改内容 : 新生成函数 *****************************************************************************/ RNIC_TIMER_STATUS_ENUM_UINT8 RNIC_GetTimerStatus( RNIC_TIMER_ID_ENUM_UINT16 enTimerId ) { RNIC_TIMER_CTX_STRU *pstRnicTimerCtx; VOS_UINT32 i; VOS_UINT32 ulLeftLen; pstRnicTimerCtx = RNIC_GetTimerAddr(); ulLeftLen = 0; for (i = 0 ; i < RNIC_MAX_TIMER_NUM ; i++) { if ((RNIC_TIMER_STATUS_RUNING == pstRnicTimerCtx[i].enTimerStatus) && (enTimerId == pstRnicTimerCtx[i].enTimerId)) { break; } } if (i >= RNIC_MAX_TIMER_NUM) { return RNIC_TIMER_STATUS_STOP; } if (VOS_OK != (VOS_GetRelTmRemainTime(&(pstRnicTimerCtx[i].hTimer), &ulLeftLen ))) { RNIC_StopTimer(enTimerId); return RNIC_TIMER_STATUS_STOP; } return RNIC_TIMER_STATUS_RUNING; }
VOS_UINT32 MN_MSG_GetTimerRemainTime( MN_MSG_TIMER_ID_ENUM_U32 enTimerId ) { VOS_UINT32 ulTick; VOS_UINT32 i; if (enTimerId >= MN_MSG_TID_MAX) { return 0; } 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)) { return 0; } ulTick = 0; /* hTimer 为空时,说明此定时器已超时或停止 */ if (VOS_NULL_PTR != f_astMsgTimerHandle[i].hTimer) { if (VOS_OK != VOS_GetRelTmRemainTime(&(f_astMsgTimerHandle[i].hTimer), &ulTick)) { ulTick = 0; } } return ulTick * MN_MSG_TIMER_TICK; }
VOS_UINT32 TAF_SSA_GetTimerRemainLen( TAF_SSA_TIMER_ID_ENUM_UINT8 enTimerId, VOS_UINT8 ucTi ) { VOS_UINT32 ulTick; TAF_SSA_TIMER_CXT_STRU *pstSsaTimerCtx = VOS_NULL_PTR; VOS_UINT32 i; ulTick = 0; /*TI有效范围是0-6,8-14*/ if (VOS_FALSE == TAF_SSA_IsTiValid(ucTi)) { SSA_LOG(WARNING_PRINT, "TAF_SSA_GetTimerRemainLen: Ti invalid!"); return ulTick; } pstSsaTimerCtx = gastSsaStatetable[ucTi].astSsaTimerCtx; for ( i = 0 ; i < TAF_SSA_MAX_TIMER_NUM ; i++ ) { if ( ( TAF_SSA_TIMER_STATUS_RUNING == pstSsaTimerCtx[i].enTimerStatus ) && ( enTimerId == pstSsaTimerCtx[i].enTimerId)) { break; } } if (i >= TAF_SSA_MAX_TIMER_NUM) { /* 不存在说明此定时器已超时或停止 */ ulTick = 0; return ulTick; } /* 句柄为空时,说明此定时器已超时或停止 */ if (VOS_NULL_PTR != pstSsaTimerCtx[i].hTimer) { if (VOS_OK != VOS_GetRelTmRemainTime(&(pstSsaTimerCtx[i].hTimer), &ulTick)) { ulTick = 0; } } /* tick值乘以10转换为毫秒 */ return ulTick * TAF_SSA_TIMER_TICK; }
VOS_VOID NAS_MMC_StopTimer( NAS_MMC_TIMER_ID_ENUM_UINT16 enTimerId ) { NAS_MMC_TIMER_CTX_STRU *pstMmcTimerCtx; VOS_UINT32 i; VOS_UINT32 ulTimerRemainLen; ulTimerRemainLen = 0; pstMmcTimerCtx = NAS_MMC_GetTimerAddr(); for ( i = 0 ; i < NAS_MMC_MAX_TIMER_NUM ; i++ ) { if ( ( NAS_MMC_TIMER_STATUS_RUNING == pstMmcTimerCtx[i].enTimerStatus ) && ( enTimerId == pstMmcTimerCtx[i].enTimerId)) { break; } } if ( i >= NAS_MMC_MAX_TIMER_NUM) { NAS_NORMAL_LOG1(WUEPS_PID_MMC, "NAS_MMC_StopTimer:Timer not running", enTimerId); return; } /* 停止VOS定时器: 当定时器的指针已经为空的时候, 说明其已经停止或者超时 */ if (VOS_NULL_PTR != pstMmcTimerCtx[i].hTimer) { /* 获取当前定时器的剩余时间 */ if (VOS_OK != VOS_GetRelTmRemainTime(&(pstMmcTimerCtx[i].hTimer), &ulTimerRemainLen )) { ulTimerRemainLen = 0; } (VOS_VOID)VOS_StopRelTimer(&(pstMmcTimerCtx[i].hTimer)); } pstMmcTimerCtx[i].hTimer = VOS_NULL_PTR; pstMmcTimerCtx[i].enTimerId = TI_NAS_MMC_TIMER_BUTT; pstMmcTimerCtx[i].enTimerStatus = NAS_MMC_TIMER_STATUS_STOP; if (0!=ulTimerRemainLen) { NAS_TIMER_EventReport(enTimerId, WUEPS_PID_MMC, NAS_OM_EVENT_TIMER_OPERATION_STOP); } /* 定时器状态勾包出来 */ NAS_MMC_SndOmMmcTimerStatus(NAS_MMC_TIMER_STATUS_STOP, enTimerId, ulTimerRemainLen * 10); }
VOS_VOID NAS_ERABM_TimerStop( NAS_ERABM_TIMER_NAME_ENUM_UINT8 enTimerName ) { NAS_ERABM_START_TIMER_STRU *pstTimerInfo = VOS_NULL_PTR; VOS_UINT32 ulTimerRemainLen; /*如果ucTimerName对应的定时器处于启动状态,则停止;否则,忽略*/ pstTimerInfo = NAS_ERABM_GetRbTimer(enTimerName); if ( VOS_NULL_PTR == pstTimerInfo ) { NAS_ERABM_WARN_LOG("NAS_ERABM_TimerStop: pstStateTimer NULL."); return ; } if (VOS_NULL_PTR != pstTimerInfo->stHTimer) { /* 获取当前定时器的剩余时间 */ if (VOS_OK != VOS_GetRelTmRemainTime(&(pstTimerInfo->stHTimer), &ulTimerRemainLen )) { ulTimerRemainLen = 0; } /*关闭失败,则报警返回*/ if (VOS_OK != PS_STOP_REL_TIMER(&(pstTimerInfo->stHTimer))) { NAS_ERABM_ERR_LOG("NAS_ERABM_TimerStop: stop reltimer fail "); return; } /*更新定时器超时次数*/ pstTimerInfo->ucExpireTimes = 0; /*钩出当前的定时器信息 */ NAS_ERABM_SndOmErabmTimerStatus(NAS_ERABM_TIMER_STOPED, enTimerName, ulTimerRemainLen); /*根据定时器的不同类型,打印相应信息*/ switch (enTimerName) { case NAS_ERABM_WAIT_EPSB_ACT_TIMER: NAS_ERABM_NORM_LOG("NAS_ERABM_TimerStop:NORM:RABM TimerStop: NAS_ERABM_RB_WAIT_EPSB_ACT_TIMER"); break; case NAS_ERABM_WAIT_RB_REEST_TIMER: NAS_ERABM_NORM_LOG("NAS_ERABM_TimerStop:NORM:RABM TimerStop: NAS_ERABM_WAIT_RB_REEST_TIMER"); break; case NAS_ERABM_WAIT_RB_RESUME_TIMER: NAS_ERABM_NORM_LOG("NAS_ERABM_TimerStop:NORM:RABM TimerStop: NAS_ERABM_WAIT_RB_RESUME_TIMER"); break; case NAS_ERABM_WAIT_TC_FREE_BUFFER_TIMER: NAS_ERABM_NORM_LOG("NAS_ERABM_TimerStop:NORM:RABM TimerStop: NAS_ERABM_WAIT_TC_FREE_BUFFER_TIMER"); break; default: NAS_ERABM_ERR_LOG("NAS_ERABM_TimerStop:ERROR: stop unreasonable reltimer."); break; } } }