/* * PackagerMCP23S17.cpp * * Created on: 18 èþë. 2019 ã. * Author: titov */ #include "PackagerMCP23S17.hpp" #include 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; }