14 #include "hal_config.h"
107 #if !defined(HAL_ENABLE_OS) || (HAL_ENABLE_OS == 0)
108 #error "OS support has to be enabled to be able to use NVMEM!"
111 #if !defined(HAL_ENABLE_BP) || (HAL_ENABLE_BP == 0)
112 #error "Buffer pool support has to be enabled to be able to use NVMEM!"
116 #if defined(HAL_NV_USE_WORKER_TASK) && (HAL_NV_USE_WORKER_TASK != 0)
117 #if defined(HAL_NV_USE_SEM_TO_PROCESS_IDLE) && (HAL_NV_USE_SEM_TO_PROCESS_IDLE != 0)
122 #define HAL_NV_WAIT_SEM_PTR_DECLARE(name) OSCntSem name
127 #if defined(HAL_NV_USE_SEM_TO_PROCESS_IDLE) && (HAL_NV_USE_SEM_TO_PROCESS_IDLE != 0)
128 #if !defined(HAL_NV_USE_WORKER_TASK) || (HAL_NV_USE_WORKER_TASK == 0)
129 #warning "The HAL_NV_USE_SEM_TO_PROCESS_IDLE macro definition has no effect!"
130 #undef HAL_NV_USE_SEM_TO_PROCESS_IDLE
167 #if defined(HAL_NV_USE_WORKER_TASK) && (HAL_NV_USE_WORKER_TASK != 0)
172 struct NV_SemaphorePool_Tag;
173 typedef struct NV_SemaphorePool_Tag* NV_SemaphorePool;
178 struct NV_RequestQueue_Tag;
179 typedef struct NV_RequestQueue_Tag* NV_RequestQueue;
208 void (*init)(NV_Memory dev);
209 void (*deinit)(NV_Memory dev);
227 #if defined(HAL_NV_USE_WORKER_TASK) && (HAL_NV_USE_WORKER_TASK != 0)
228 NV_RequestQueue dev_requests;
229 NV_SemaphorePool dev_semaphores;
230 BP_BufferPool buf_pool;
232 uint8_t* page_buffer;
233 volatile bool op_in_progress;
236 #if defined(HAL_NV_USE_SEM_TO_PROCESS_IDLE) && (HAL_NV_USE_SEM_TO_PROCESS_IDLE != 0)
237 HAL_NV_WAIT_SEM_PTR_DECLARE(req_queue_sem);
268 #define NV_INIT_MEMORY(mem_map, phy_data, dev_ops) { NULL, &(mem_map), (void*)(phy_data), &(dev_ops) }
277 #if defined(HAL_NV_USE_WORKER_TASK) && (HAL_NV_USE_WORKER_TASK != 0)
278 #if defined(HAL_NV_USE_SEM_TO_PROCESS_IDLE) && (HAL_NV_USE_SEM_TO_PROCESS_IDLE != 0)
279 #define NV_INIT_MEMDEVICE(devs, no_devs) { (devs), (no_devs), NULL, NULL, NULL, NULL, false, false, false, NULL }
281 #define NV_INIT_MEMDEVICE(devs, no_devs) { (devs), (no_devs), NULL, NULL, NULL, NULL, false, false, false }
284 #define NV_INIT_MEMDEVICE(devs, no_devs) { (devs), (no_devs), NULL, false, false, false }
305 #if defined(HAL_NV_USE_WORKER_TASK) && (HAL_NV_USE_WORKER_TASK != 0)
332 #if defined(HAL_NV_USE_WORKER_TASK) && (HAL_NV_USE_WORKER_TASK != 0)
346 #if defined(HAL_NV_USE_WORKER_TASK) && (HAL_NV_USE_WORKER_TASK != 0)
371 #if defined(HAL_NV_USE_WORKER_TASK) && (HAL_NV_USE_WORKER_TASK != 0)
400 #if defined(HAL_NV_USE_WORKER_TASK) && (HAL_NV_USE_WORKER_TASK != 0)
NV_OpResult NV_Erase(NV_Memory nv_mem)
NV_OpResult NV_WriteSync(NV_Memory nv_mem, NV_Addressable addr, NV_Addressable size, const void *src)
struct NV_MemPeripheral_Tag NV_MemPeripheral_T
struct NV_Memory_Tag NV_Memory_T
uint32_t NV_Addressable
Definition: hal_nv.h:153
NV_OpResult NV_MemDeviceLock(NV_MemDevice mdev)
uint32_t NV_DevId
Definition: hal_nv.h:158
NV_MemPeripheral_T * NV_MemPeripheral
Definition: hal_nv.h:218
void NV_MemDeviceDeInit(NV_MemDevice mdev)
NV_OpResult NV_ReadSync(NV_Memory nv_mem, NV_Addressable addr, NV_Addressable size, void *dst)
NV_AddressMap_T * NV_AddressMap
Definition: hal_nv.h:200
NV_MemDevice_T * NV_MemDevice
Definition: hal_nv.h:244
void NV_MemDeviceUnlock(NV_MemDevice mdev)
Operating system (OS) API.
NV_OpResult
Definition: hal_nv.h:137
struct NV_AddressMap_Tag NV_AddressMap_T
struct NV_MemDevice_Tag NV_MemDevice_T
void NV_MemDeviceInit(NV_MemDevice mdev, uint8_t *buffer)