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

62 lines
1.4 KiB
C++

/*
* PackagerADS1259Extended.cpp
*
* Created on: 8 èþë. 2020 ã.
* Author: krugliy
*/
#include "PackagerADS1259Extended.hh"
//todo: èç-çà íåñîîòâåòñòâèé ïîðÿäêîâ áèò â áàéòå (áàéò â ñëîâå) íà ïðèíèìàþùåé è îòïðàâëÿþùåé ñòîðîíå.
static uint16_t swapWord(uint16_t word) { return (word << 8) | ((word >> 8) & 0xFF); }
const std::size_t driver::chipset::PackagerADS1259Extended::FrameSize = 48;
driver::chipset::PackagerADS1259Extended::Frame driver::chipset::PackagerADS1259Extended::encode() {
union {
Frame frame;
char words[sizeof(Frame)] = { Packager::RDATA };
};
frame = 0;
words[0] = Packager::RDATA;
for(unsigned short n = 0; n < sizeof(Frame); n++) {
words[n] = swapWord(words[n]);
}
return frame;
}
driver::chipset::PackagerADS1259Extended::Data driver::chipset::PackagerADS1259Extended::decode( Frame frame ) {
union {
Frame uframe;
char words[sizeof(Frame)];
};
uframe = frame;
for(unsigned short n = 0; n < sizeof(Frame); n++) {
words[n] = swapWord(words[n]);
}
return uframe >> 8;
}
driver::chipset::PackagerADS1259Extended::Frame driver::chipset::PackagerADS1259Extended::Packager::pack() const {
return encode();
}
driver::chipset::PackagerADS1259Extended::Data driver::chipset::PackagerADS1259Extended::Packager::unpack(
Frame frame ) const {
return decode( frame );
}