/* * RegAMC1210.h * * Created on: 15 нояб. 2016 г. * Author: titov */ #ifndef SOURCE_DRIVER_REGISTER_TREGAMC1210_H_ #define SOURCE_DRIVER_REGISTER_TREGAMC1210_H_ namespace driver { namespace detail { namespace reg { //!Описание регистров микросхемы AMC1210 struct RegAMC1210 { typedef unsigned short TStatusRegister; enum TStatusMask : unsigned short { IO0 = 0x0001, //!(&DataRegister); buff[0] = *(bytes + 1); buff[1] = *(bytes + 0); // bytes = reinterpret_cast(&TimeRegister); // buff[2] = *(bytes + 3); // buff[3] = *(bytes + 2); } //!Десериализация из байтого массива. void deserialize(const char (&buff)[messageLength]) { char * bytes = reinterpret_cast(&DataRegister); *(bytes + 0) = buff[1]; *(bytes + 1) = buff[0]; // bytes = reinterpret_cast(&TimeRegister); //TODO funcition edit prev_data[0].DataRegister!!!! // *(bytes + 2) = buff[3]; // *(bytes + 3) = buff[2]; } }; //!Настройки модуля делителя времени ClockDivider. union TClockDividerRegister { TClockDividerRegister_bits structured; //!<Структурированное представление. unsigned short all; //!<Целочисленное представление. }; //!Структура описывающая все настройки чипа AMC1210. struct TResolverDriverConfig { unsigned short InterruptRegister; //!<Настройки регистра обработки прерываний в AMC1210. TFilterModuleConfig FilterModuleConfig[4]; //!<Настройки модулей фильтрации. unsigned short ControlRegister; //!<Настройки управляющих регистров. unsigned short PatternRegister; //!<Переменная для записи шаблона генерации опорного сигнала. TClockDividerRegister ClockDividerRegister; //!<Настройки регистра делителя частоты. TStatusRegister StatusRegister; //!<Регистр состояния AMC1210. }; //!Настройки AMC1210. union TResolverDriverConfigUnion { TResolverDriverConfig structured; //!<Структурированное представление. unsigned short array[36]; //!<Целочисленное представление. // char bytes[72]; //!<Представление в байтах. }; //!NO! union TFilterDriverConfigUnion { unsigned short InterruptRegister; //!<Настройки регистра обработки прерываний в AMC1210. TFilterModuleConfig FilterModuleConfig[4]; //!<Настройки модулей фильтрации. unsigned short ControlRegister; //!<Настройки управляющих регистров. TClockDividerRegister ClockDividerRegister; //!<Настройки регистра делителя частоты. TStatusRegister StatusRegister; //!<Регистр состояния AMC1210. }; }; } } } #endif /* SOURCE_DRIVER_REGISTER_TREGAMC1210_H_ */