SmartSnippets DA1459x SDK
Files | Macros | Typedefs | Enumerations | Functions
MID_RTO_OSAL_RES_MGMT

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...
 

Detailed Description

OSAL resource management.

Macro Definition Documentation

◆ RES_MASK

#define RES_MASK (   id)    (((resource_mask_t) 1) << (id))

Make resource mask from ID.

Use this macro to prepare argument for resource_acquire().

Parameters
[in]idvalue from RES_IS enum
See also
resource_acquire

◆ RES_WAIT_FOREVER

#define RES_WAIT_FOREVER   OS_EVENT_FOREVER

Constant to use when resource_acquire() should wait till resource is available.

Typedef Documentation

◆ resource_mask_t

typedef uint32_t resource_mask_t

Data type used for managing devices

Enumeration Type Documentation

◆ RES_ID

enum RES_ID

Shared resource ids.

See also
RES_MASK

Function Documentation

◆ resource_acquire()

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.

Parameters
[in]resource_maskbit 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]timeouthow 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
Returns
acquired_resources mask on success where the requested resource_mask is included, 0 on timeout or failure to acquire the resources
See also
resource_release

◆ resource_add()

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.

◆ resource_init()

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().

See also
resource_acquire
resource_release

◆ 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);

Parameters
[in]resource_maskbit 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)
See also
resource_acquire