/* * FRAMDATABASE.h * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include #include #include "framework.h" #include "FRAM/FRAMDefinitions.h" #include "FRAM/FRAMBuffer.h" #include "FRAM/FRAMDataObjects.h" #include "FRAM/FRAMVariant.h" #include "SYSCTRL/SystemConfigurator.h" #include "SYSCTRL/SystemDefinitions.h" #ifndef FRAM_FRAMDATABASE_H_ #define FRAM_FRAMDATABASE_H_ namespace FRAM { class FRAMDATABASE { public: enum mode_t {WAIT, READ, BURN, ERASE, VERIFY, RESTORE}; enum state_t {BUSY, FREE}; private: mode_t m_mode; state_t m_state; private: FRAM::FRAMBuffer m_fram_data_buffer; uint16_t *m_buffer_pointer; FRAM::FRAMDataObjects m_fram_object[NUMBER_FRAM_PARAMETERS]; uint16_t m_fram_size; uint16_t m_fram_object_index; uint16_t m_fram_object_address; uint16_t m_fram_object_last_address; uint16_t m_fram_rw_index; FRAM::FRAMHeader m_header; FRAM::FRAMFooter m_footer; bool m_verify; public: FRAMDATABASE(); public: mode_t get_mode(); bool compare_mode(mode_t mode); state_t get_state(); bool compare_state(state_t state); public: bool is_free(); bool is_busy(); bool is_read(); bool is_burn(); bool is_erase(); bool is_restore(); bool is_verify(); public: void set_read(); void set_burn(); void set_erase(); void set_verify(); void set_restore(); void set_break(); public: void upload_configuration(SYSCTRL::SystemControlConfiguration *sys_config); void update_buffer(const SYSCTRL::SystemControlConfiguration *sys_config); void erase_fram_index(); void verify_fram_index(); void write_fram_index(); void read_fram_index(); void restore_fram_index(); void read_from_fram_to_buffer(); void write_to_fram_from_buffer(); void erase_fram_buffer(); public: FRAM::FRAMHeader get_header(); FRAM::FRAMFooter get_footer(); void extract_system_configuration(SYSCTRL::SystemControlConfiguration *sys_config); void implement_dafault_configuration(); // // private: void add_float(uint8_t readonly, float* pParam, float default_value); void add_int16(uint8_t readonly, int16_t* pParam, int16_t default_value); void add_int32(uint8_t readonly, int32_t* pParam, int32_t default_value); void add_uint16(uint8_t readonly, uint16_t* pParam, uint16_t default_value); void add_uint32(uint8_t readonly, uint32_t* pParam, uint32_t default_value); void add_bool(uint8_t readonly, bool* pParam, bool default_value); public: void register_configuration_parameters(SYSCTRL::SystemControlConfiguration *sys_config); };//class FRAMDATABASE } /* namespace FRAM */ #endif /* FRAM_FRAMDATABASE_H_ */