62 lines
1.4 KiB
C++
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 );
|
|
|
|
}
|