33 lines
893 B
C++
33 lines
893 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;
|
||
|
||
}
|