#ifndef PLSR_PERSISTENCE_H #define PLSR_PERSISTENCE_H #include "plsr_address_map.h" #include #ifdef __cplusplus extern "C" { #endif typedef struct { int32_t runtime[PLSR_HSD_RUNTIME_COUNT]; int32_t config[PLSR_HSD_CONFIG_COUNT]; } PLSR_HSD_DATA; typedef struct { int32_t config[PLSR_SFD_CONFIG_COUNT]; } PLSR_SFD_DATA; typedef enum { PLSR_PERSISTENCE_OK = 0, PLSR_PERSISTENCE_DEFAULTED, PLSR_PERSISTENCE_INVALID_ARGUMENT, PLSR_PERSISTENCE_VERIFY_FAILED, PLSR_PERSISTENCE_NOT_IMPLEMENTED, PLSR_PERSISTENCE_ERASE_FAILED, PLSR_PERSISTENCE_PROGRAM_FAILED } PLSR_PERSISTENCE_RESULT; PLSR_PERSISTENCE_RESULT PlsrPersistenceLoadHsd(PLSR_HSD_DATA *data); PLSR_PERSISTENCE_RESULT PlsrPersistenceSaveHsd(const PLSR_HSD_DATA *data); void PlsrPersistenceResetHsd(void); PLSR_PERSISTENCE_RESULT PlsrPersistenceLoadSfd(PLSR_SFD_DATA *data); PLSR_PERSISTENCE_RESULT PlsrPersistenceSaveSfd(const PLSR_SFD_DATA *data); PLSR_PERSISTENCE_RESULT PlsrPersistenceEraseSfd(void); #ifdef PLSR_HOST_TEST typedef enum { PLSR_TEST_SFD_FAULT_NONE = 0, PLSR_TEST_SFD_FAULT_ERASE, PLSR_TEST_SFD_FAULT_PROGRAM, PLSR_TEST_SFD_FAULT_VERIFY, PLSR_TEST_SFD_FAULT_BEFORE_COMMIT } PLSR_TEST_SFD_FAULT; void PlsrPersistenceTestResetStorage(void); void PlsrPersistenceTestCorruptNewestHsd(void); void PlsrPersistenceTestCorruptNewestSfd(void); void PlsrPersistenceTestSetSfdFault(PLSR_TEST_SFD_FAULT fault); #endif #ifdef __cplusplus } #endif #endif /* PLSR_PERSISTENCE_H */