/* * FRAMBuffer.h * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include #include "SYSCTRL/TypeControl.h" #include "SYSCTRL/SystemConfigurator.h" #ifndef FRAM_FRAMBUFFER_H_ #define FRAM_FRAMBUFFER_H_ namespace FRAM { struct FRAMHeader { int16_t class_id; int16_t part_id; int16_t software_version; int16_t size_of_fram_data; FRAMHeader(): class_id(0x0FFFF), part_id(0x0FFFF), software_version(0x0FFFF), size_of_fram_data(0x0FFFF) {} };//FRAMHeader struct FRAMFooter { int16_t foot; FRAMFooter(): foot(0x0FFFF) {} };//FRAMFooter class FRAMBuffer { private: FRAMHeader m_header; SYSCTRL::SystemControlConfiguration m_config; FRAMFooter m_footer; public: FRAMBuffer(); public: void update(const FRAM::FRAMHeader& header, const SYSCTRL::SystemControlConfiguration& config, const FRAM::FRAMFooter& footer); bool verify_header_and_footer(const FRAM::FRAMHeader& header, const FRAM::FRAMFooter& footer); void extract(FRAM::FRAMHeader& header, SYSCTRL::SystemControlConfiguration& config, FRAM::FRAMFooter& footer); void extract_header(FRAMHeader& header); FRAM::FRAMHeader get_header(); void extract_footer(FRAMFooter& footer); FRAM::FRAMFooter get_footer(); void extract_system_configuration(SYSCTRL::SystemControlConfiguration& config); }; } /* namespace FRAM */ #endif /* FRAM_FRAMBUFFER_H_ */