|
SmartSnippets DA1459x SDK
|
OSAL resource management. More...
Files | |
| file | resmgmt.h |
| Resource management API. | |
Macros | |
| #define | RES_MASK(id) (((resource_mask_t) 1) << (id)) |
| Make resource mask from ID. More... | |
| #define | RES_WAIT_FOREVER OS_EVENT_FOREVER |
| Constant to use when resource_acquire() should wait till resource is available. More... | |
Typedefs | |
| typedef uint32_t | resource_mask_t |
Enumerations | |
| enum | RES_ID |
| Shared resource ids. More... | |
Functions | |
| void | resource_init (void) |
| Initialize resource management structures. More... | |
| resource_mask_t | resource_acquire (resource_mask_t resource_mask, OS_TICK_TIME timeout) |
| Acquire resource(s) More... | |
| void | resource_release (resource_mask_t resource_mask) |
| Release resource(s) More... | |
| int | resource_add (void) |
| Add resource at run time. More... | |
OSAL resource management.
| #define RES_MASK | ( | id | ) | (((resource_mask_t) 1) << (id)) |
Make resource mask from ID.
Use this macro to prepare argument for resource_acquire().
| [in] | id | value from RES_IS enum |
| #define RES_WAIT_FOREVER OS_EVENT_FOREVER |
Constant to use when resource_acquire() should wait till resource is available.
| typedef uint32_t resource_mask_t |
Data type used for managing devices
| resource_mask_t resource_acquire | ( | resource_mask_t | resource_mask, |
| OS_TICK_TIME | timeout | ||
| ) |
Acquire resource(s)
Function acquires resource(s) so they can be accessed exclusively.
| [in] | resource_mask | bit mask of requested resource it can have single resource: RES_MASK(RES_ID_UART1) or group of them: RES_MASK(RES_ID_UART1) | RES_MASK(RES_ID_SPI2) | RES_MASK(RES_ID_I2C1) |
| [in] | timeout | how long to wait for resources to be available 0 - no wait take resource if is available RES_WAIT_FOREVER - wait till all resources are available other value specifies how many ticks to wait for resources |
acquired_resources mask on success where the requested resource_mask is included, 0 on timeout or failure to acquire the resources| int resource_add | ( | void | ) |
Add resource at run time.
Resources that can be acquired are defined in RES_ID enum. This creates pool of resources at compile time. It allows to add resources to extend this list at run time. This does not affects resource management functions, it just allows to create resource ids in a safe way without changing enum in this file. When all resources needed by the user are identified this feature can be switch off and all dynamic resource ids can be put in enum.
| void resource_init | ( | void | ) |
Initialize resource management structures.
Function allocates internal structure so resource allocation can be done on OS level. This function must be called before any calls to resource_acquire(), resource_release().
| void resource_release | ( | resource_mask_t | resource_mask | ) |
Release resource(s)
Function releases resources so they can be used by other tasks. If there is task waiting for resources just released it will be scheduled to run (provided that all requested resources are free).
It's possible to acquire resources in one resource_acquire() call, and then release them separately. resource_acquire(RES_MASK(RES_ID_UART1) | RES_MASK(RES_ID_SPI2); ... resource_release(RES_MASK(RES_ID_UART1); resource_release(RES_MASK(RES_ID_SPI2);
| [in] | resource_mask | bit mask of released resources it can have single resource: RES_MASK(RES_ID_UART1) or group of them: RES_MASK(RES_ID_UART1) | RES_MASK(RES_ID_SPI2) | RES_MASK(RES_ID_I2C1) |
1.8.16