/* * PackagerAMC1210.cpp * * Created on: 28 авг. 2019 г. * Author: user */ #include "PackagerAMC1210.hh" #include 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; }