50 lines
1.2 KiB
C++
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;
|
|
|
|
}
|