33 lines
889 B
C++
33 lines
889 B
C++
/*
|
|
* PackagerMCP23S17.cpp
|
|
*
|
|
* Created on: 18 èþë. 2019 ã.
|
|
* Author: titov
|
|
*/
|
|
|
|
#include "PackagerMCP23S17.hpp"
|
|
#include <cstring>
|
|
|
|
const std::size_t driver::chipset::PackagerMCP23S17::FrameSize = 32;
|
|
|
|
driver::chipset::PackagerMCP23S17::Frame driver::chipset::PackagerMCP23S17::encode(RegAddress rg_address, Data data,
|
|
bool write_nread, HardwareAddress hw_address ) {
|
|
|
|
RegisterAddressAndData frame; {
|
|
frame.data = data,
|
|
frame.address.ADDRESS_CODE = hw_address, frame.address.FIXED_CODE = 4, frame.address.REGISTER_ADDRESS = rg_address, frame.address.RW_FLAG = write_nread;
|
|
};
|
|
|
|
Frame pack;
|
|
std::memcpy( &pack, &frame, sizeof(Frame) );
|
|
|
|
return pack;
|
|
|
|
}
|
|
|
|
driver::chipset::PackagerMCP23S17::Data driver::chipset::PackagerMCP23S17::decode( Frame frame ) {
|
|
|
|
return (frame >> 16ul) & 0xFFFFul;
|
|
|
|
}
|