Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
//---------------------------------------------------------------------------------------------------------------------
// Шаблон для класса - переменной в EEPROM#pragma once
#include "eepromstorage.h"// Класс
templateclass CEepromVar : public CEepromStorage
{
public:
CEepromVar(const void * eeprom_addr, const TYPE def_value = -1);bool operator== (TYPE val);
operator TYPE ();
TYPE operator= (TYPE & val);protected:
TYPE Read(void);
};// Макро для одновременного создания экземпляра класса и занятия места в EEPROM
// Вызывать EEPROM_VAR(unsigned char,var_name,33);
#define EEPROM_VAR(t,n,d) \
t EEMEM n ## _var; \
CEepromVarn(&n ## _var, d) // Конструктор
templateCEepromVar ::CEepromVar(const void * eeprom_addr, const TYPE def_value)
: CEepromStorage(eeprom_addr, sizeof(TYPE),&def_value)
{
}// Чтение значения из EEPROM
templateTYPE CEepromVar ::Read(void)
{
TYPE ret;
_read(&ret);
return ret;
}// Для сравнения
templatebool CEepromVar ::operator==(TYPE val)
{
return (Read() == val);
}// Для получения значения
templateCEepromVar ::operator TYPE (void)
{
return Read();
}// Для присвоения значения
templateTYPE CEepromVar ::operator= (TYPE & val)
{
_write(&val);
return val;
}