VOS_VOID ADS_DL_StartAdqEmptyTimer(VOS_VOID) { ADS_TIMER_CTX_STRU *pstTiCtx; VOS_TIMER_PRECISION_ENUM_UINT32 enTmrPrecision; VOS_UINT32 ulRslt; pstTiCtx = ADS_GetTiCtx(); /* 如果该定时器已经启动则直接返回 */ if (ADS_TIMER_STATUS_RUNNING == pstTiCtx[TI_ADS_DL_ADQ_EMPTY].enTimerStatus) { return; } enTmrPrecision = ADS_GetTimerPrecision(TI_ADS_DL_ADQ_EMPTY); ulRslt = VOS_StartCallBackRelTimer(&(pstTiCtx[TI_ADS_DL_ADQ_EMPTY].hTimer), ACPU_PID_ADS_DL, TI_ADS_DL_ADQ_EMPTY_LEN, TI_ADS_DL_ADQ_EMPTY, 0, VOS_RELTIMER_NOLOOP, ADS_DL_RcvTiAdqEmptyExpired, enTmrPrecision); if (VOS_OK != ulRslt) { ADS_ERROR_LOG(ACPU_PID_ADS_DL, "ADS_DL_StartAdqEmptyTimer:timer is fail start!"); return; } pstTiCtx[TI_ADS_DL_ADQ_EMPTY].enTimerStatus = ADS_TIMER_STATUS_RUNNING; return; }
VOS_VOID ADS_Debug_RD_Int_Event(VOS_UINT32 ulTiLen) { g_ulDebugCurRdIntNum = g_stAdsStats.stDlComStatsInfo.ulDlRecvIPFBreakNum; g_ulDebugCurRdNum = g_stAdsStats.stDlComStatsInfo.ulDlRecvRDNum; VOS_StartCallBackRelTimer(&g_pDebugRdhTimer, ACPU_PID_ADS_DL, ulTiLen, TI_ADS_TIMER_BUTT, 0, VOS_RELTIMER_NOLOOP, ADS_Debug_RcvTiRDIntEventExpired, VOS_TIMER_NO_PRECISION); }
VOS_UINT32 VOS_Startup( enum VOS_STARTUP_PHASE ph ) { VOS_UINT32 ulReturnValue; VOS_UINT32 ulStartUpFailStage = 0; switch(ph) { case VOS_STARTUP_INIT_DOPRA_SOFEWARE_RESOURCE : vos_StartUpStage = 0x00010000; if ( VOS_OK != VOS_MemInit() ) { ulStartUpFailStage |= 0x0001; break; } VOS_SemCtrlBlkInit(); VOS_QueueCtrlBlkInit(); VOS_TaskCtrlBlkInit(); VOS_TimerCtrlBlkInit(); OM_RecordMemInit(); if ( VOS_OK != RTC_TimerCtrlBlkInit() ) { ulStartUpFailStage |= 0x0100; } #if (OSA_CPU_CCPU == VOS_OSA_CPU) if ( VOS_OK != VOS_DrxTimerCtrlBlkInit()) { ulStartUpFailStage |= 0x0200; } #endif if ( VOS_OK != VOS_PidCtrlBlkInit() ) { ulStartUpFailStage |= 0x0400; } if ( VOS_OK != VOS_FidCtrlBlkInit() ) { ulStartUpFailStage |= 0x0800; } if ( VOS_OK != CreateFidsQueque() ) { ulStartUpFailStage |= 0x1000; } break; case VOS_STARTUP_SET_TIME_INTERRUPT: vos_StartUpStage = 0x00020000; break; case VOS_STARTUP_CREATE_TICK_TASK: vos_StartUpStage = 0x00040000; /* create soft timer task */ if ( VOS_OK != VOS_TimerTaskCreat() ) { ulStartUpFailStage |= 0x0001; } if ( VOS_OK != RTC_TimerTaskCreat() ) { ulStartUpFailStage |= 0x0002; } #if (OSA_CPU_CCPU == VOS_OSA_CPU) if ( VOS_OK != VOS_DrxTimerTaskCreat() ) { ulStartUpFailStage |= 0x0004; } #endif break; case VOS_STARTUP_CREATE_ROOT_TASK: vos_StartUpStage = 0x00080000; if ( VOS_OK != VOS_StartCallBackRelTimer(&g_VosProtectInitTimer, DOPRA_PID_TIMER, 20000, 0, 0, VOS_RELTIMER_NOLOOP, VOS_ProtectInit, VOS_TIMER_NO_PRECISION) ) { ulStartUpFailStage |= 0x0001; } g_ulVosStartStep = 0x0000; ulReturnValue = VOS_OutsideInit(); if(VOS_OK != ulReturnValue) { ulStartUpFailStage |= ulReturnValue; } g_ulVosStartStep = 0x0004; if ( VOS_OK != WD_TaskCreat() ) { ulStartUpFailStage |= 0x0004; } g_ulVosStartStep = 0x0008; if ( VOS_OK != VOS_FidsInit() ) { ulStartUpFailStage |= 0x0008; } g_ulVosStartStep = 0x0010; #if 0 /* 创建VOS各FID任务之前,锁任务 */ if ( VOS_OK != VOS_TaskLock() ) { ulStartUpFailStage |= 0x0010; } #endif g_ulVosStartStep = 0x0020; /* create FID task & selftask task */ if ( VOS_OK != CreateFidsTask() ) { ulStartUpFailStage |= 0x0020; } #if (VOS_WIN32 != VOS_OS_VER) g_ulVosStartStep = 0x0040; /* suspend FID task & selftask task */ if ( VOS_OK != VOS_SuspendFidsTask() ) { ulStartUpFailStage |= 0x0040; } #endif g_ulVosStartStep = 0x0080; #if 0 /* 创建VOS各FID任务完成后解锁 */ if ( VOS_OK != VOS_TaskUnlock() ) { ulStartUpFailStage |= 0x0080; } #endif g_ulVosStartStep = 0x0100; if ( VOS_OK != VOS_PidsInit() ) { ulStartUpFailStage |= 0x0100; } break; case VOS_STARTUP_SUSPEND_MAIN_TASK: vos_StartUpStage = 0x00100000; g_ulVosStartStep = 0x0001; /* Resume任务之前,锁任务 */ if ( VOS_OK != VOS_TaskLock() ) { ulStartUpFailStage |= 0x0001; } #if (VOS_WIN32 != VOS_OS_VER) g_ulVosStartStep = 0x0002; /* Resume FID task & selftask task */ if ( VOS_OK != VOS_ResumeFidsTask() ) { ulStartUpFailStage |= 0x0002; } #endif g_ulVosStartStep = 0x0004; /* Resume任务之后解锁 */ if ( VOS_OK != VOS_TaskUnlock() ) { ulStartUpFailStage |= 0x0004; } g_ulVosStartStep = 0x0008; /* stop protect timer */ VOS_StopRelTimer(&g_VosProtectInitTimer); #if (OSA_CPU_CCPU == VOS_OSA_CPU) /* OSA初始化完成,需要调用DRV函数通知DRV OSA启动完成 */ if ( VOS_OK != DRV_CCPU_RESET_OVER() ) { ulStartUpFailStage |= 0x0008; } #endif #if (VOS_LINUX == VOS_OS_VER) VOS_RunTask(); #endif break; default: break; } /* calculate return value */ if( 0 != ulStartUpFailStage ) { ulReturnValue = vos_StartUpStage; ulReturnValue |= ulStartUpFailStage; Print1("startup retuen value is %x.\r\n",ulReturnValue); /* reboot */ VOS_ProtectionReboot(OSA_INIT_ERROR, (VOS_INT)ulReturnValue, (VOS_INT)g_ulOmPidInit, (VOS_CHAR *)&g_ulOmFidInit, sizeof(VOS_UINT32)); return(ulReturnValue); } else { return(VOS_OK); } }