From aebba2bcd32481ad41ffdba8ba9af8fb96ea147e Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Tue, 23 Jun 2020 13:45:00 +0200 Subject: [PATCH] vTaskDelayUntil improvement --- include/task.h | 5 ++++- tasks.c | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/task.h b/include/task.h index 3eaf6eecb..96f77ab6c 100644 --- a/include/task.h +++ b/include/task.h @@ -799,6 +799,9 @@ void vTaskDelay( const TickType_t xTicksToDelay ) PRIVILEGED_FUNCTION; * same xTimeIncrement parameter value will cause the task to execute with * a fixed interface period. * + * @param xWasDelayed Can be used to check whether the task was actually delayed. + * Will be set to pdTRUE if the task way delayed and to pdFALSE otherwise. + * * Example usage:
  // Perform an action every 10 ticks.
@@ -821,7 +824,7 @@ void vTaskDelay( const TickType_t xTicksToDelay ) PRIVILEGED_FUNCTION;
  * \defgroup vTaskDelayUntil vTaskDelayUntil
  * \ingroup TaskCtrl
  */
-void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement ) PRIVILEGED_FUNCTION;
+void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement, BaseType_t * xWasDelayed ) PRIVILEGED_FUNCTION;
 
 /**
  * task. h
diff --git a/tasks.c b/tasks.c
index 41b976b2f..4862cccc9 100644
--- a/tasks.c
+++ b/tasks.c
@@ -1251,7 +1251,7 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB )
 
 #if ( INCLUDE_vTaskDelayUntil == 1 )
 
-	void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement )
+	void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement, BaseType_t * xWasDelayed )
 	{
 	TickType_t xTimeToWake;
 	BaseType_t xAlreadyYielded, xShouldDelay = pdFALSE;
@@ -1328,6 +1328,11 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB )
 		{
 			mtCOVERAGE_TEST_MARKER();
 		}
+
+		if(xWasDelayed != NULL)
+		{
+			*xWasDelayed = xShouldDelay;
+		}
 	}
 
 #endif /* INCLUDE_vTaskDelayUntil */