53 lines
1.7 KiB
C++
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 );
|
|
|
|
}
|