/** \file
 *  \brief This file contains the public interface to the on-chip EEPROM driver.
 *
 */

#ifndef NVM_ONCHIPEEPROM_H
#define NVM_ONCHIPEEPROM_H

#ifdef __cplusplus
extern "C" {
#endif

/* Preprocessor and Type Definitions */

#define NVM_ON_CHIP_EEPROM_TASK_STACK_SIZE_in_bytes   256

//! The time between calls to NVM_OnChipEEPROMTask().
#define NVM_ON_CHIP_EEPROM_TASK_RATE_IN_ms 2000

/* Include Files */

/* Public Variables */

extern SemaphoreHandle_t xSemaphoreOnChipEEPROMLock;

//! Handle of the NVM_OnChipEEPROMTask() given when the task was created.
extern TaskHandle_t NVM_OnChipEEPROM_Task_Handle;

extern volatile bool NVM_IsOnChipEEPROMInitialized;

/* Public Functions */
void NVM_InitOnChipEEPROM(void);
void NVM_OnChipEEPROMTask(void * pvParameters);
void NVM_SaveOnChipEEPROMEntry(NVM_EEPROMEntry_T * const this);

/* Inline Functions */

#ifdef __cplusplus
}
#endif

#endif // NVM_ONCHIPEEPROM_H