/* * PackagerADT7310.cpp * * Created on: 27 сент. 2019 г. * Author: user */ #include "PackagerADT7310.hh" #include const std::size_t driver::chipset::PackagerADT7310::ConfigPackager::FrameSize = sizeof(driver::chipset::PackagerADT7310::ConfigPackager::Frame) * CHAR_BIT; const std::size_t driver::chipset::PackagerADT7310::TemperaturePackager::FrameSize = sizeof(driver::chipset::PackagerADT7310::TemperaturePackager::Frame) * CHAR_BIT; driver::chipset::PackagerADT7310::ConfigPackager::Frame driver::chipset::PackagerADT7310::ConfigPackager::pack( Data data ) const { return CommandByteForm( reg_address, not write_nread, write_nread ? data : read_mock ).frame; } driver::chipset::PackagerADT7310::ConfigPackager::Data driver::chipset::PackagerADT7310::ConfigPackager::unpack( Frame frame ) const { return CommandByteForm( frame ).command_byte.data; } driver::chipset::PackagerADT7310::TemperaturePackager::Frame driver::chipset::PackagerADT7310::TemperaturePackager::pack( Data temperature ) const { return driver::chipset::PackagerADT7310::expand( CommandByteForm( reg_address, not write_nread, read_mock ), read_mock ); } driver::chipset::PackagerADT7310::TemperaturePackager::Data driver::chipset::PackagerADT7310::TemperaturePackager::unpack( Frame frame ) const { return static_cast((frame << 16 | frame >> 16) << 8) >> (16 + 3); } uint32_t driver::chipset::PackagerADT7310::expand( CommandByteForm command_byte, char lsb_data_byte ) { return static_cast( command_byte.frame ) | ( static_cast( lsb_data_byte ) << 16u ); }