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

50 lines
1.2 KiB
C++

/*
* PackagerAMC1210.cpp
*
* Created on: 28 àâã. 2019 ã.
* Author: user
*/
#include "PackagerAMC1210.hh"
#include <cstring>
const std::size_t driver::chipset::PackagerAMC1210::FrameSize = 128;
driver::chipset::PackagerAMC1210::Frame driver::chipset::PackagerAMC1210::encode(RegAddress rg_address, Data data,
bool write_nread) {
RegisterAddressAndData frame = {
.address = AddressingRegisterForm(rg_address, write_nread),
.data = data
};
Frame pack;
std::memcpy( &pack, &frame, sizeof(Frame) );
return pack;
}
driver::chipset::PackagerAMC1210::Data driver::chipset::PackagerAMC1210::decode(Frame frame) {
Data data = {
frame.frame[0] << 8 | frame.frame[1] >> 8,
frame.frame[1] << 8 | frame.frame[2] >> 8,
frame.frame[2] << 8 | frame.frame[3] >> 8,
};
return data;
}
bool driver::chipset::PackagerAMC1210::Frame::operator !=(const Frame& other) {
//todo: ñäåëàòü ñðàâíåíèå ÷åðåç cmp
bool result = true;
for(unsigned short n = sizeof(frame) / sizeof(*frame); n and result; n--) {
result = (this->frame[n] == other.frame[n]);
} return result;
}