You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.5 KiB
C

/*
* FRAMBuffer.h
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#include <stdint.h>
#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_ */