📄 test_osapi_timer.c
字号:
elapsedTimeMilliseconds = 0;
if ( timer1Fired == TRUE )
{
elapsedTimeMilliseconds = ElapsedTimeMilliseconds(startTime1, timer1FireTime);
}
PassFail(
(status==OS_OK) &&
(timer1Fired==TRUE) &&
(elapsedTimeMilliseconds>(ULONG)(OSAPI_TIMER_TEST_TIMER1_PERIOD_MILLISECONDS-OSAPI_TIMER_TEST_TIMER_TOLERANCE_MILLISECONDS)) &&
(elapsedTimeMilliseconds<(ULONG)(OSAPI_TIMER_TEST_TIMER1_PERIOD_MILLISECONDS+OSAPI_TIMER_TEST_TIMER_TOLERANCE_MILLISECONDS))
);
errorInMilliseconds = abs((int)elapsedTimeMilliseconds-OSAPI_TIMER_TEST_TIMER1_PERIOD_MILLISECONDS);
if ( errorInMilliseconds > maxErrorInMilliseconds )
{
maxErrorInMilliseconds = errorInMilliseconds;
}
DbgPrint((" timer1 elasped time = %dms (error=%dms)\n",elapsedTimeMilliseconds, errorInMilliseconds));
averageErrorInMilliseconds += errorInMilliseconds;
DbgPrint(("[running] Test 10: Wait for timer2 to fire (period = %dms)",OSAPI_TIMER_TEST_TIMER2_PERIOD_MILLISECONDS));
do
{
elapsedTimeMilliseconds = ElapsedTimeMilliseconds( startTime2, OS_GetTicks());
} while (( timer2Fired == FALSE ) && ( elapsedTimeMilliseconds/1000 < OSAPI_TIMER_TEST_TIMEOUT_SECONDS ));
elapsedTimeMilliseconds = 0;
if ( timer2Fired == TRUE )
{
elapsedTimeMilliseconds = ElapsedTimeMilliseconds(startTime2, timer2FireTime);
}
PassFail(
(status==OS_OK) &&
(timer2Fired==TRUE) &&
(elapsedTimeMilliseconds>(ULONG)(OSAPI_TIMER_TEST_TIMER2_PERIOD_MILLISECONDS-OSAPI_TIMER_TEST_TIMER_TOLERANCE_MILLISECONDS)) &&
(elapsedTimeMilliseconds<(ULONG)(OSAPI_TIMER_TEST_TIMER2_PERIOD_MILLISECONDS+OSAPI_TIMER_TEST_TIMER_TOLERANCE_MILLISECONDS))
);
errorInMilliseconds = abs((int)elapsedTimeMilliseconds-OSAPI_TIMER_TEST_TIMER2_PERIOD_MILLISECONDS);
if ( errorInMilliseconds > maxErrorInMilliseconds )
{
maxErrorInMilliseconds = errorInMilliseconds;
}
DbgPrint((" timer2 elasped time = %dms (error=%dms)\n",elapsedTimeMilliseconds, errorInMilliseconds));
averageErrorInMilliseconds += errorInMilliseconds;
DbgPrint(("[running] Test 11: Wait for timer3 to fire (period = %dms)",OSAPI_TIMER_TEST_TIMER3_PERIOD_MILLISECONDS));
do
{
elapsedTimeMilliseconds = ElapsedTimeMilliseconds( startTime3, OS_GetTicks());
} while (( timer3Fired == FALSE ) && ( elapsedTimeMilliseconds/1000 < OSAPI_TIMER_TEST_TIMEOUT_SECONDS ));
elapsedTimeMilliseconds = 0;
if ( timer3Fired == TRUE )
{
elapsedTimeMilliseconds = ElapsedTimeMilliseconds(startTime3, timer3FireTime);
}
PassFail(
(status==OS_OK) &&
(timer3Fired==TRUE) &&
(elapsedTimeMilliseconds>(ULONG)(OSAPI_TIMER_TEST_TIMER3_PERIOD_MILLISECONDS-OSAPI_TIMER_TEST_TIMER_TOLERANCE_MILLISECONDS)) &&
(elapsedTimeMilliseconds<(ULONG)(OSAPI_TIMER_TEST_TIMER3_PERIOD_MILLISECONDS+OSAPI_TIMER_TEST_TIMER_TOLERANCE_MILLISECONDS))
);
errorInMilliseconds = abs((int)elapsedTimeMilliseconds-OSAPI_TIMER_TEST_TIMER3_PERIOD_MILLISECONDS);
if ( errorInMilliseconds > maxErrorInMilliseconds )
{
maxErrorInMilliseconds = errorInMilliseconds;
}
DbgPrint((" timer3 elasped time = %dms (error=%dms)\n",elapsedTimeMilliseconds, errorInMilliseconds));
averageErrorInMilliseconds += errorInMilliseconds;
DbgPrint(("\n[running] Test 12: create timer4"));
status = OS_TimerCreate(&timer4Id, Timer4Function);
PassFail( (status==OS_OK) );
DbgPrint(("[running] Test 13: set timer4 (period = %dms)",OSAPI_TIMER_TEST_TIMER4_PERIOD1_MILLISECONDS));
startTime4 = OS_GetTicks();
status = OS_TimerSetMsec(timer4Id, OSAPI_TIMER_TEST_TIMER4_PERIOD1_MILLISECONDS );
PassFail( (status==OS_OK) );
DbgPrint(("[running] Test 14: stop timer4"));
status = OS_TimerStop(timer4Id);
PassFail( (status==OS_OK) );
DbgPrint(("[running] Test 15: set timer4 (period = %dms)",OSAPI_TIMER_TEST_TIMER4_PERIOD2_MILLISECONDS));
startTime4 = OS_GetTicks();
status = OS_TimerSetMsec(timer4Id, OSAPI_TIMER_TEST_TIMER4_PERIOD2_MILLISECONDS );
PassFail( (status==OS_OK) );
DbgPrint(("[running] Test 16: Wait for timer4 to fire (period = %dms)",OSAPI_TIMER_TEST_TIMER4_PERIOD2_MILLISECONDS));
do
{
elapsedTimeMilliseconds = ElapsedTimeMilliseconds(startTime4, OS_GetTicks());
} while (( timer4Fired == FALSE ) && ( elapsedTimeMilliseconds/1000 < (ULONG)OSAPI_TIMER_TEST_TIMEOUT_SECONDS ));
elapsedTimeMilliseconds = 0;
if ( timer4Fired == TRUE )
{
elapsedTimeMilliseconds = ElapsedTimeMilliseconds(startTime4, timer4FireTime);
}
PassFail(
(status==OS_OK) &&
(timer4Fired==TRUE) &&
(elapsedTimeMilliseconds>(ULONG)(OSAPI_TIMER_TEST_TIMER4_PERIOD2_MILLISECONDS-OSAPI_TIMER_TEST_TIMER_TOLERANCE_MILLISECONDS)) &&
(elapsedTimeMilliseconds<(ULONG)(OSAPI_TIMER_TEST_TIMER4_PERIOD2_MILLISECONDS+OSAPI_TIMER_TEST_TIMER_TOLERANCE_MILLISECONDS))
);
errorInMilliseconds = abs((int)elapsedTimeMilliseconds-OSAPI_TIMER_TEST_TIMER4_PERIOD2_MILLISECONDS);
if ( errorInMilliseconds > maxErrorInMilliseconds )
{
maxErrorInMilliseconds = errorInMilliseconds;
}
DbgPrint((" timer4 elasped time = %dms (error=%dms)\n",elapsedTimeMilliseconds, errorInMilliseconds));
averageErrorInMilliseconds += errorInMilliseconds;
DbgPrint(("\n[running] Test 17: create timer5"));
status = OS_TimerCreate(&timer5Id, Timer5Function);
PassFail( (status==OS_OK) );
DbgPrint(("[running] Test 18: set timer5 (period = %dms)",OSAPI_TIMER_TEST_TIMER5_PERIOD_MILLISECONDS));
startTime5 = OS_GetTicks();
status = OS_TimerSetMsec(timer5Id, OSAPI_TIMER_TEST_TIMER5_PERIOD_MILLISECONDS );
PassFail( (status==OS_OK) );
DbgPrint(("[running] Test 19: Wait for timer5 to fire (period = %dms)",OSAPI_TIMER_TEST_TIMER5_PERIOD_MILLISECONDS));
do
{
elapsedTimeMilliseconds = ElapsedTimeMilliseconds( startTime5, OS_GetTicks());
} while (( timer5Fired == FALSE ) && ( elapsedTimeMilliseconds/1000 < OSAPI_TIMER_TEST_TIMEOUT_SECONDS ));
elapsedTimeMilliseconds = 0;
if ( timer5Fired == TRUE )
{
elapsedTimeMilliseconds = (timer5FireTime - startTime5)/(OS_GetTicksPerSecond()/1000); // in milliseconds
}
PassFail(
(status==OS_OK) &&
(timer5Fired==TRUE) &&
(elapsedTimeMilliseconds>(ULONG)(OSAPI_TIMER_TEST_TIMER5_PERIOD_MILLISECONDS-OSAPI_TIMER_TEST_TIMER_TOLERANCE_MILLISECONDS)) &&
(elapsedTimeMilliseconds<(ULONG)(OSAPI_TIMER_TEST_TIMER5_PERIOD_MILLISECONDS+OSAPI_TIMER_TEST_TIMER_TOLERANCE_MILLISECONDS))
);
errorInMilliseconds = abs((int)elapsedTimeMilliseconds-OSAPI_TIMER_TEST_TIMER5_PERIOD_MILLISECONDS);
if ( errorInMilliseconds > maxErrorInMilliseconds )
{
maxErrorInMilliseconds = errorInMilliseconds;
}
DbgPrint((" timer5 elasped time = %dms (error=%dms)\n",elapsedTimeMilliseconds, errorInMilliseconds));
averageErrorInMilliseconds += errorInMilliseconds;
DbgPrint(("[running] Test 20: delete timer5"));
status = OS_TimerDelete( timer5Id );
timer5Id = 0;
PassFail( (status==OS_OK) );
DbgPrint(("[running] Test 21: Wait for timer5 function to end (delay = %ds)",OSAPI_TIMER_TEST_TIMER5_TASK_DELAY_SECONDS));
do
{
elapsedTimeMilliseconds = ElapsedTimeMilliseconds(startTime5, timer5FireTime);
} while (( timer5Finished == FALSE ) && ( elapsedTimeMilliseconds/1000 < OSAPI_TIMER_TEST_TIMER5_TASK_DELAY_SECONDS + OSAPI_TIMER_TEST_TIMEOUT_SECONDS ));
PassFail( timer5Finished == TRUE );
DbgPrint(("[running] Test 21: delete timer4"));
status = OS_TimerDelete( timer4Id );
timer4Id = 0;
PassFail( (status==OS_OK) );
DbgPrint(("[running] Test 22: delete timer1"));
status = OS_TimerDelete( timer1Id );
timer1Id = 0;
PassFail( (status==OS_OK) );
DbgPrint(("[running] Test 23: delete timer2"));
status = OS_TimerDelete( timer2Id );
timer2Id = 0;
PassFail( (status==OS_OK) );
DbgPrint(("[running] Test 24: delete timer3"));
status = OS_TimerDelete( timer3Id );
timer3Id = 0;
PassFail( (status==OS_OK) );
DbgPrint(("\n[running] Test 25: create timer6"));
status = OS_TimerCreate(&timer6Id, Timer6Function);
PassFail( (status==OS_OK) );
DbgPrint(("[running] Test 26: set timer6 (period = %dms)",OSAPI_TIMER_TEST_TIMER6_PERIOD_MILLISECONDS));
startTime6 = OS_GetTicks();
status = OS_TimerSetMsec(timer6Id, OSAPI_TIMER_TEST_TIMER6_PERIOD_MILLISECONDS );
PassFail( (status==OS_OK) );
DbgPrint(("[running] Test 27: Wait for timer6 to fire, checking GetTimeRemaining (period = %dms)",OSAPI_TIMER_TEST_TIMER6_PERIOD_MILLISECONDS));
do
{
elapsedTimeMilliseconds = ElapsedTimeMilliseconds( startTime6, OS_GetTicks());
status = OS_TimerGetTime(timer6Id, &ulTimeRemainingMsec);
if (status == OS_OK )
{
if ( !
( ulTimeRemainingMsec >= ((OSAPI_TIMER_TEST_TIMER6_PERIOD_MILLISECONDS - elapsedTimeMilliseconds) - MIN(OSAPI_TIMER_TEST_GET_TIME_REMAINING_TOLERANCE_MILLISECONDS, (OSAPI_TIMER_TEST_TIMER6_PERIOD_MILLISECONDS - elapsedTimeMilliseconds))) ) &&
( ulTimeRemainingMsec < ((OSAPI_TIMER_TEST_TIMER6_PERIOD_MILLISECONDS - elapsedTimeMilliseconds) + OSAPI_TIMER_TEST_GET_TIME_REMAINING_TOLERANCE_MILLISECONDS) )
)
{
DbgPrint(("Timer6: GetTimeRemaining (FAILED): %ums, (actual %ums)\n",ulTimeRemainingMsec, (OSAPI_TIMER_TEST_TIMER6_PERIOD_MILLISECONDS - elapsedTimeMilliseconds) ));
status = OS_FAILURE;
}
}
} while (( timer6Fired == FALSE ) && ( elapsedTimeMilliseconds/1000 < OSAPI_TIMER_TEST_TIMEOUT_SECONDS ));
elapsedTimeMilliseconds = 0;
if ( timer6Fired == TRUE )
{
elapsedTimeMilliseconds = (timer6FireTime - startTime6)/(OS_GetTicksPerSecond()/1000); // in milliseconds
}
PassFail(
(status==OS_OK) &&
(timer6Fired==TRUE) &&
(elapsedTimeMilliseconds>(ULONG)(OSAPI_TIMER_TEST_TIMER6_PERIOD_MILLISECONDS-OSAPI_TIMER_TEST_TIMER_TOLERANCE_MILLISECONDS)) &&
(elapsedTimeMilliseconds<(ULONG)(OSAPI_TIMER_TEST_TIMER6_PERIOD_MILLISECONDS+OSAPI_TIMER_TEST_TIMER_TOLERANCE_MILLISECONDS))
);
DbgPrint(("[running] Test 28: delete timer6"));
status = OS_TimerDelete( timer6Id );
timer6Id = 0;
PassFail( (status==OS_OK) );
DbgPrint(("\n\nstatistics: Average Timer Error: %dms\n",averageErrorInMilliseconds/5));
DbgPrint((" Max Timer Error: %dms\n",maxErrorInMilliseconds));
DbgPrint(("\nOSAPI TIMER TEST FINISHED\n"));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -