I have a task that executes periodically using vTaskDelay(). I would like to suspend and resume this task using an external interrupt, e.g. a switch button. This can be achieved using vTaskSuspend() and vTaskResumeFromISR(), however I want my task to complete its delay period before running again, even if it has been resumed using vTaskResume() before the delay period is over. As I read on the book, the vTaskResume() call puts the task into ready state immediately, ignoring the previous delay call. Is there a way to implement this functionality? Which mechanisms would you use?