/* * FRAMDataObjects.cpp * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include "FRAM/FRAMDataObjects.h" namespace FRAM { FRAMDataObjects::FRAMDataObjects(): m_address(0), m_is_read_only(false), m_pParam(0), m_default_value() // {}//CONSTRUCTOR // void FRAMDataObjects::restore_default_value() { if(m_pParam != 0) { switch(m_default_value.get_type()) { case FRAM::FRAM_VARIANT_FLOAT: { *((float*) m_pParam) = m_default_value.get_float(); break;} case FRAM::FRAM_VARIANT_INT16: { *((int16_t*) m_pParam) = m_default_value.get_int16(); break;} case FRAM::FRAM_VARIANT_INT32: { *((int32_t*) m_pParam) = m_default_value.get_int32(); break;} case FRAM::FRAM_VARIANT_UINT16: { *((uint16_t*) m_pParam) = m_default_value.get_uint16(); break;} case FRAM::FRAM_VARIANT_UINT32: { *((uint32_t*) m_pParam) = m_default_value.get_uint32(); break;} case FRAM::FRAM_VARIANT_BOOL: { *((bool*) m_pParam) = m_default_value.get_bool(); break;} default: {break;} }//switch }//if }// // void FRAMDataObjects::add_register_float(uint16_t address, uint8_t readonly, float* pParam, float default_value) { m_address = address; m_is_read_only = 0 != readonly ? true : false; m_pParam = pParam; m_default_value.set_float(default_value); // }// // void FRAMDataObjects::add_register_int16(uint16_t address, uint8_t readonly, int16_t* pParam, int16_t default_value) { m_address = address; m_is_read_only = 0 != readonly ? true : false; m_pParam = pParam; m_default_value.set_int16(default_value); // }// // void FRAMDataObjects::add_register_int32(uint16_t address, uint8_t readonly, int32_t* pParam, int32_t default_value) { m_address = address; m_is_read_only = 0 != readonly ? true : false; m_pParam = pParam; m_default_value.set_int32(default_value); // }// // void FRAMDataObjects::add_register_uint16(uint16_t address, uint8_t readonly, uint16_t* pParam, uint16_t default_value) { m_address = address; m_is_read_only = 0 != readonly ? true : false; m_pParam = pParam; m_default_value.set_uint16(default_value); // }// // void FRAMDataObjects::add_register_uint32(uint16_t address, uint8_t readonly, uint32_t* pParam, uint32_t default_value) { m_address = address; m_is_read_only = 0 != readonly ? true : false; m_pParam = pParam; m_default_value.set_uint32(default_value); // }// // void FRAMDataObjects::add_register_bool(uint16_t address, uint8_t readonly, bool* pParam, bool default_value) { m_address = address; m_is_read_only = 0 != readonly ? true : false; m_pParam = pParam; m_default_value.set_bool(default_value); // }// // uint16_t FRAMDataObjects::get_address() const { return m_address; // }// // void FRAMDataObjects::write_parameter(const void *pBuffer, uint8_t buffer_size) { if((m_pParam != 0)&& (pBuffer != 0) && (buffer_size > 0) && (m_is_read_only != true)) { switch(m_default_value.get_type()) { case FRAM::FRAM_VARIANT_FLOAT: { if(4 == buffer_size) *((float*) m_pParam) = *((float*) pBuffer); break;} case FRAM::FRAM_VARIANT_INT16: { if(2 == buffer_size) *((int16_t*) m_pParam) = *((int16_t*) pBuffer); break;} default: {break;} }//switch // }//if // }// // void FRAMDataObjects::read_parameter(void *pBuffer, uint8_t buffer_size) const { if((m_pParam != 0) && (pBuffer != 0) && (buffer_size > 0)) { switch(m_default_value.get_type()) { case FRAM::FRAM_VARIANT_FLOAT: {if(4 == buffer_size) *((float*) pBuffer) = *((float*) m_pParam); break;} case FRAM::FRAM_VARIANT_INT16: {if(2 == buffer_size) *((int16_t*) pBuffer) = *((int16_t*) m_pParam); break;} default: {break;} }//switch // }//if }// void FRAMDataObjects::fram_write_parameter() { if(m_pParam != 0) { switch(m_default_value.get_type()) { case FRAM::FRAM_VARIANT_FLOAT: { writefloat(*((float*) m_pParam), m_address); break; } case FRAM::FRAM_VARIANT_INT16: { writeint(*((int16_t*) m_pParam), m_address); break; } default: {break;} }//switch // }//if }// // void FRAMDataObjects::fram_read_parameter() { if(m_pParam != 0) { switch(m_default_value.get_type()) { case FRAM::FRAM_VARIANT_FLOAT: { *((float*) m_pParam) = readfloat(m_address); break; } case FRAM::FRAM_VARIANT_INT16: { *((int16_t*) m_pParam) = readint(m_address); break; } default: {break;} }//switch // }//if // }// // void FRAMDataObjects::write_to_fram_data(Uint16 *Dest, Uint32 Length) { for(Uint16 i = 0; i < Length; i++) { writeint((*Dest++),i); // }//for // }// // void FRAMDataObjects::read_from_fram_data(Uint16 *BuffAddr, Uint32 Length) { for(Uint16 i = 0; i < Length; i++) { (*BuffAddr++) = readint(i); // }//for // }// // // } /* namespace FRAM */