XDK API  3.6.0
+ Collaboration diagram for xSemaphoreTake:

semphr. h

                    SemaphoreHandle_t xSemaphore,
                    TickType_t xBlockTime

Macro to obtain a semaphore. The semaphore must have previously been created with a call to xSemaphoreCreateBinary(), xSemaphoreCreateMutex() or xSemaphoreCreateCounting().

xSemaphoreA handle to the semaphore being taken - obtained when the semaphore was created.
xBlockTimeThe time in ticks to wait for the semaphore to become available. The macro portTICK_PERIOD_MS can be used to convert this to a real time. A block time of zero can be used to poll the semaphore. A block time of portMAX_DELAY can be used to block indefinitely (provided INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h).
pdTRUE if the semaphore was obtained. pdFALSE if xBlockTime expired without the semaphore becoming available.

Example usage:

SemaphoreHandle_t xSemaphore = NULL;
// A task that creates a semaphore.
void vATask( void * pvParameters )
   // Create the semaphore to guard a shared resource.
   xSemaphore = xSemaphoreCreateBinary();
// A task that uses the semaphore.
void vAnotherTask( void * pvParameters )
   // ... Do other things.
   if( xSemaphore != NULL )
       // See if we can obtain the semaphore.  If the semaphore is not available
       // wait 10 ticks to see if it becomes free.
       if( xSemaphoreTake( xSemaphore, ( TickType_t ) 10 ) == pdTRUE )
           // We were able to obtain the semaphore and can now access the
           // shared resource.
           // ...
           // We have finished accessing the shared resource.  Release the
           // semaphore.
           xSemaphoreGive( xSemaphore );
           // We could not obtain the semaphore and can therefore not access
           // the shared resource safely.

All rights reserved. The use is subject to the XDK SDK EULA by Bosch Connected Devices and Solutions GmbH.
This documentation file has been automatically generated on Thu Mar 14 2019 19:12:53 by doxygen 1.8.8