10 #ifndef NVMEM_INTERNAL_H_
11 #define NVMEM_INTERNAL_H_
14 #if !defined(HAL_NV_C_) || (HAL_NV_C_ == 0)
15 #error "The hali_nv.h can be only included from hal_nv.c file."
18 #define HAL_NV_CRITICAL_SECTION_DECLARE
19 #define HAL_NV_CRITICAL_SECTION_BEGIN() CORE_EnterCritical()
20 #define HAL_NV_CRITICAL_SECTION_END() CORE_ExitCritical()
22 #define HAL_NV_MAX_DELAY 1000UL
24 #if defined(HAL_NV_USE_WORKER_TASK) && (HAL_NV_USE_WORKER_TASK != 0)
27 #define HAL_NV_SEMAPHORE_DECLARE(name) OSSem name
29 #define HAL_NV_SEMAPHORE_CREATE(name) do { name = OSSEM_Create(); (void) OSSEM_Take(name, 0); } while(0)
30 #define HAL_NV_SEMAPHORE_DELETE(name) do { } while(0)
31 #define HAL_NV_SEMAPHORE_GIVE(name) OSSEM_Give(name)
32 #define HAL_NV_SEMAPHORE_TAKE(name) OSSEM_Take(name, HAL_NV_MAX_DELAY)
35 #if defined(HAL_NV_USE_SEM_TO_PROCESS_IDLE) && (HAL_NV_USE_SEM_TO_PROCESS_IDLE != 0)
41 #define HAL_NV_WAIT_SEM_CREATE(name, count) name = OSCNTSEM_Create(0, (count))
42 #define HAL_NV_WAIT_SEM_DELETE(name) do { } while(0)
43 #define HAL_NV_WAIT_SEM_POST(name) OSCNTSEM_Give(name)
44 #define HAL_NV_WAIT_SEM_WAIT(name) OSCNTSEM_Take(name, HAL_NV_MAX_DELAY)
50 #if defined(HAL_NV_USE_WORKER_TASK) && (HAL_NV_USE_WORKER_TASK != 0)
52 typedef struct NV_Semaphore_Tag
54 HAL_NV_SEMAPHORE_DECLARE(sem);
55 struct NV_SemaphorePool_Tag* pool;
58 typedef NV_Semaphore_T* NV_Semaphore;
61 typedef struct NV_SemaphorePool_Tag
63 NV_Semaphore semaphores;
91 #if defined(HAL_NV_USE_WORKER_TASK) && (HAL_NV_USE_WORKER_TASK != 0)
92 NV_Semaphore notification;
100 #if defined(HAL_NV_USE_WORKER_TASK) && (HAL_NV_USE_WORKER_TASK != 0)
101 typedef struct NV_RequestQueue_Tag
104 uint32_t max_no_requests;
105 volatile uint32_t pending_requests;
106 volatile uint32_t head;
107 volatile uint32_t tail;
uint32_t NV_Addressable
Definition: hal_nv.h:153
NV_OpResult
Definition: hal_nv.h:137