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.
102 lines
2.7 KiB
C++
102 lines
2.7 KiB
C++
/*
|
|
* FRAMDATABASE.h
|
|
*
|
|
* Author: Aleksey Gerasimenko
|
|
* gerasimenko.aleksey.n@gmail.com
|
|
*/
|
|
|
|
|
|
#include <math.h>
|
|
#include <stdint.h>
|
|
|
|
#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_ */
|