6#ifndef CAFFEINE_SAL_UTL_COLLECTION_H
7#define CAFFEINE_SAL_UTL_COLLECTION_H
22#define CFN_SAL_UTL_TYPE_COLLECTION CFN_SAL_TYPE('C', 'O', 'L')
91 uint32_t peripheral_id,
99 CFN_HAL_POPULATE_DRIVER(
118 return CFN_HAL_ERROR_BAD_PARAM;
120 driver->base.vmt = (
const struct cfn_hal_api_base_s *) driver->api;
131 return CFN_HAL_ERROR_BAD_PARAM;
144 return CFN_HAL_ERROR_BAD_PARAM;
146 driver->config = config;
156 if (!driver || !config || !driver->config)
158 return CFN_HAL_ERROR_BAD_PARAM;
160 *config = *(driver->config);
161 return CFN_HAL_ERROR_OK;
173 return CFN_HAL_ERROR_BAD_PARAM;
175 driver->cb = callback;
176 driver->cb_user_arg = user_arg;
177 return cfn_hal_base_callback_register(
185 cfn_hal_power_state_t state)
189 return CFN_HAL_ERROR_BAD_PARAM;
202 return CFN_HAL_ERROR_BAD_PARAM;
215 return CFN_HAL_ERROR_BAD_PARAM;
224 uint32_t *event_mask)
228 return CFN_HAL_ERROR_BAD_PARAM;
241 return CFN_HAL_ERROR_BAD_PARAM;
254 return CFN_HAL_ERROR_BAD_PARAM;
263 uint32_t *error_mask)
267 return CFN_HAL_ERROR_BAD_PARAM;
279 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
290 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
302 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
312 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
322 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
334 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
344 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
354 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
366 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
376 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
385 size_t *capacity_out)
387 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
398 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
408 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
418 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
430 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
440 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
Core definitions and macros for Caffeine SAL.
#define CFN_SAL_CREATE_DRIVER_TYPE(prefix, config_type, api_type, phy_type, cb_type)
Definition cfn_sal.h:38
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_error_enable(cfn_sal_utl_collection_t *driver, uint32_t error_mask)
Enables one or more collection exception errors.
Definition cfn_sal_utl_collection.h:236
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_event_get(cfn_sal_utl_collection_t *driver, uint32_t *event_mask)
Retrieves the current collection nominal event status.
Definition cfn_sal_utl_collection.h:223
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_pop_front(cfn_sal_utl_collection_t *driver, void *item_out)
Removes and retrieves an item from the front.
Definition cfn_sal_utl_collection.h:320
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_find(cfn_sal_utl_collection_t *driver, const void *item, size_t *index_out)
Finds an item in the collection and retrieves its index.
Definition cfn_sal_utl_collection.h:426
CFN_HAL_VMT_CHECK(struct cfn_sal_utl_collection_api_s)
cfn_hal_error_code_t cfn_sal_utl_collection_destruct(cfn_sal_utl_collection_t *driver)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_peek_back(cfn_sal_utl_collection_t *driver, void *item_out)
Peeks at an item from the back.
Definition cfn_sal_utl_collection.h:342
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_init(cfn_sal_utl_collection_t *driver)
Initializes the collection.
Definition cfn_sal_utl_collection.h:114
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_clear(cfn_sal_utl_collection_t *driver)
Clears all items from the collection.
Definition cfn_sal_utl_collection.h:416
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_error_get(cfn_sal_utl_collection_t *driver, uint32_t *error_mask)
Retrieves the current collection exception error status.
Definition cfn_sal_utl_collection.h:262
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_is_full(cfn_sal_utl_collection_t *driver, bool *is_full_out)
Checks if the collection is full.
Definition cfn_sal_utl_collection.h:406
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_power_state_set(cfn_sal_utl_collection_t *driver, cfn_hal_power_state_t state)
Sets the collection power state.
Definition cfn_sal_utl_collection.h:184
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_push_front(cfn_sal_utl_collection_t *driver, const void *item)
Adds an item to the front of the collection.
Definition cfn_sal_utl_collection.h:287
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_remove_at(cfn_sal_utl_collection_t *driver, size_t index, void *item_out)
Removes and retrieves an item at a specific index.
Definition cfn_sal_utl_collection.h:330
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_get_size(cfn_sal_utl_collection_t *driver, size_t *size_out)
Retrieves the current number of items.
Definition cfn_sal_utl_collection.h:374
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_callback_register(cfn_sal_utl_collection_t *driver, cfn_sal_utl_collection_callback_t callback, void *user_arg)
Registers a callback for collection events and errors.
Definition cfn_sal_utl_collection.h:167
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_is_empty(cfn_sal_utl_collection_t *driver, bool *is_empty_out)
Checks if the collection is empty.
Definition cfn_sal_utl_collection.h:395
struct cfn_sal_utl_collection_s cfn_sal_utl_collection_t
Definition cfn_sal_utl_collection.h:37
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_peek_at(cfn_sal_utl_collection_t *driver, size_t index, void *item_out)
Peeks at an item at a specific index.
Definition cfn_sal_utl_collection.h:362
CFN_HAL_INLINE void cfn_sal_utl_collection_populate(cfn_sal_utl_collection_t *driver, uint32_t peripheral_id, void *dependency, const cfn_sal_utl_collection_api_t *api, const cfn_sal_phy_t *phy, const cfn_sal_utl_collection_config_t *config, cfn_sal_utl_collection_callback_t callback, void *user_arg)
Definition cfn_sal_utl_collection.h:90
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_sort(cfn_sal_utl_collection_t *driver, void *compare_func)
Sorts the collection using the provided comparison function.
Definition cfn_sal_utl_collection.h:438
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_pop_back(cfn_sal_utl_collection_t *driver, void *item_out)
Removes and retrieves an item from the back.
Definition cfn_sal_utl_collection.h:310
#define CFN_SAL_UTL_TYPE_COLLECTION
FourCC type for Collections.
Definition cfn_sal_utl_collection.h:22
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_insert_at(cfn_sal_utl_collection_t *driver, size_t index, const void *item)
Inserts an item at a specific index.
Definition cfn_sal_utl_collection.h:298
cfn_hal_error_code_t cfn_sal_utl_collection_construct(cfn_sal_utl_collection_t *driver, const cfn_sal_utl_collection_config_t *config, const cfn_sal_phy_t *phy, void *dependency, cfn_sal_utl_collection_callback_t callback, void *user_arg)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_event_enable(cfn_sal_utl_collection_t *driver, uint32_t event_mask)
Enables one or more collection nominal events.
Definition cfn_sal_utl_collection.h:197
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_error_disable(cfn_sal_utl_collection_t *driver, uint32_t error_mask)
Disables one or more collection exception errors.
Definition cfn_sal_utl_collection.h:249
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_config_get(cfn_sal_utl_collection_t *driver, cfn_sal_utl_collection_config_t *config)
Gets the current collection configuration.
Definition cfn_sal_utl_collection.h:153
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_event_disable(cfn_sal_utl_collection_t *driver, uint32_t event_mask)
Disables one or more collection nominal events.
Definition cfn_sal_utl_collection.h:210
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_get_capacity(cfn_sal_utl_collection_t *driver, size_t *capacity_out)
Retrieves the capacity of the collection.
Definition cfn_sal_utl_collection.h:384
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_peek_front(cfn_sal_utl_collection_t *driver, void *item_out)
Peeks at an item from the front.
Definition cfn_sal_utl_collection.h:352
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_push_back(cfn_sal_utl_collection_t *driver, const void *item)
Adds an item to the end of the collection.
Definition cfn_sal_utl_collection.h:277
void(* cfn_sal_utl_collection_callback_t)(cfn_sal_utl_collection_t *driver, uint32_t event_mask, uint32_t error_mask, void *user_arg)
Collection callback signature.
Definition cfn_sal_utl_collection.h:43
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_deinit(cfn_sal_utl_collection_t *driver)
Deinitializes the collection.
Definition cfn_sal_utl_collection.h:127
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_config_set(cfn_sal_utl_collection_t *driver, const cfn_sal_utl_collection_config_t *config)
Sets the collection configuration.
Definition cfn_sal_utl_collection.h:139
Generic physical mapping for services.
Definition cfn_sal_types.h:26
Collection Virtual Method Table (VMT).
Definition cfn_sal_utl_collection.h:52
cfn_hal_error_code_t(* push_back)(cfn_sal_utl_collection_t *driver, const void *item)
Definition cfn_sal_utl_collection.h:56
cfn_hal_error_code_t(* push_front)(cfn_sal_utl_collection_t *driver, const void *item)
Definition cfn_sal_utl_collection.h:57
cfn_hal_error_code_t(* get_capacity)(cfn_sal_utl_collection_t *driver, size_t *capacity_out)
Definition cfn_sal_utl_collection.h:73
cfn_hal_error_code_t(* clear)(cfn_sal_utl_collection_t *driver)
Definition cfn_sal_utl_collection.h:76
cfn_hal_error_code_t(* peek_back)(cfn_sal_utl_collection_t *driver, void *item_out)
Definition cfn_sal_utl_collection.h:66
cfn_hal_error_code_t(* peek_at)(cfn_sal_utl_collection_t *driver, size_t index, void *item_out)
Definition cfn_sal_utl_collection.h:68
cfn_hal_error_code_t(* find)(cfn_sal_utl_collection_t *driver, const void *item, size_t *index_out)
Definition cfn_sal_utl_collection.h:69
cfn_hal_api_base_t base
Definition cfn_sal_utl_collection.h:53
cfn_hal_error_code_t(* remove_at)(cfn_sal_utl_collection_t *driver, size_t index, void *item_out)
Definition cfn_sal_utl_collection.h:63
cfn_hal_error_code_t(* is_empty)(cfn_sal_utl_collection_t *driver, bool *is_empty_out)
Definition cfn_sal_utl_collection.h:74
cfn_hal_error_code_t(* is_full)(cfn_sal_utl_collection_t *driver, bool *is_full_out)
Definition cfn_sal_utl_collection.h:75
cfn_hal_error_code_t(* insert_at)(cfn_sal_utl_collection_t *driver, size_t index, const void *item)
Definition cfn_sal_utl_collection.h:58
cfn_hal_error_code_t(* pop_back)(cfn_sal_utl_collection_t *driver, void *item_out)
Definition cfn_sal_utl_collection.h:61
cfn_hal_error_code_t(* peek_front)(cfn_sal_utl_collection_t *driver, void *item_out)
Definition cfn_sal_utl_collection.h:67
cfn_hal_error_code_t(* get_size)(cfn_sal_utl_collection_t *driver, size_t *size_out)
Definition cfn_sal_utl_collection.h:72
cfn_hal_error_code_t(* pop_front)(cfn_sal_utl_collection_t *driver, void *item_out)
Definition cfn_sal_utl_collection.h:62
cfn_hal_error_code_t(* sort)(cfn_sal_utl_collection_t *driver, void *compare_func)
Definition cfn_sal_utl_collection.h:77
Collection configuration (e.g. item size).
Definition cfn_sal_utl_collection.h:32
void * custom
Definition cfn_sal_utl_collection.h:34
size_t item_size
Definition cfn_sal_utl_collection.h:33