MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/driver/chipset/PackagerADT7310.cpp

53 lines
1.7 KiB
C++

/*
* PackagerADT7310.cpp
*
* Created on: 27 ñåíò. 2019 ã.
* Author: user
*/
#include "PackagerADT7310.hh"
#include <climits>
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<long int>((frame << 16 | frame >> 16) << 8) >> (16 + 3);
}
uint32_t driver::chipset::PackagerADT7310::expand( CommandByteForm command_byte,
char lsb_data_byte ) {
return static_cast<uint32_t>( command_byte.frame ) | ( static_cast<uint32_t>( lsb_data_byte ) << 16u );
}