mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
freertos: Fixed a bug where xTimerIsTimerActive incorrectly returns pdTRUE from callback
This commit fixes the following: - Fixes a bug wherein the timer status is active for oneshot timers that expire before they are started. - Callback calls for periodic timers where made before the timers were auto-reloaded. - Timer expiry trace was being set after the timer callback is called. Closes https://github.com/espressif/esp-idf/issues/8014
This commit is contained in:
parent
12dcb95644
commit
5e1437deb8
@ -856,9 +856,6 @@ PRIVILEGED_DATA portMUX_TYPE xTimerMux = portMUX_INITIALIZER_UNLOCKED;
|
|||||||
{
|
{
|
||||||
/* The timer expired before it was added to the active
|
/* The timer expired before it was added to the active
|
||||||
* timer list. Process it now. */
|
* timer list. Process it now. */
|
||||||
pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer );
|
|
||||||
traceTIMER_EXPIRED( pxTimer );
|
|
||||||
|
|
||||||
if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 )
|
if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 )
|
||||||
{
|
{
|
||||||
xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, NULL, tmrNO_DELAY );
|
xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, NULL, tmrNO_DELAY );
|
||||||
@ -867,8 +864,12 @@ PRIVILEGED_DATA portMUX_TYPE xTimerMux = portMUX_INITIALIZER_UNLOCKED;
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mtCOVERAGE_TEST_MARKER();
|
pxTimer->ucStatus &= ( ( uint8_t ) ~tmrSTATUS_IS_ACTIVE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Call the timer callback. */
|
||||||
|
traceTIMER_EXPIRED( pxTimer );
|
||||||
|
pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user