MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/driver/chipset/PackagerADS1259Extended.cpp
2024-06-07 11:12:56 +03:00

62 lines
1.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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 );
}