FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [November 2015 Threads]
I think I already know the answer to this, but need to verify. I think since calling xTimerStart returns after adding a command to the timer command queue, I can't immediately call xTimerIsTimerActive and expect a pdTRUE return. I am trying to use a Timer for a timeout while waiting for an ACK on a serial interface. I would like to not have to implement a callback function which simply sets a global "timeout" flag. Anyone come up with a smoother way of doing this?
Just looking at the implementation of xTimerIsTimerActive(), I think you are right. The function checks to see if the timer is in the active timer list, so if the start command is in the timer command queue, then it will not be in the active list (yet, unless it was already running), and xTimerIsTimerActive() will return false.
If the priority of the timer task is higher than the priority of the task starting the timer, then you will not get this problem as, as soon as the command goes into the command queue, the timer task will leave the Blocked state, pre-empt the task that posted the command, and process the command, before the function that started the timer even returns.
Regards.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.