7 #ifndef IG_OMW_CHECKSUM_H
8 #define IG_OMW_CHECKSUM_H
22 #ifdef OMWi_CHECKSUM_CRC_PREVIEW
27 constexpr CrcParameter(UI init, UI poly,
bool refIn,
bool refOut, UI xorOut)
28 : m_init(init), m_poly(poly), m_refIn(refIn), m_refOut(refOut), m_xorOut(xorOut)
31 constexpr UI init()
const {
return m_init; }
32 constexpr UI poly()
const {
return m_poly; }
33 constexpr
bool refIn()
const {
return m_refIn; }
34 constexpr
bool refOut()
const {
return m_refOut; }
35 constexpr UI xorOut()
const {
return m_xorOut; }
47 constexpr omw::CrcParameter<uint16_t> kermitParam(0x0000, 0x1021,
true,
true, 0x0000);
48 constexpr omw::CrcParameter<uint16_t> modbusParam(0xFFFF, 0x8005,
true,
true, 0x0000);
50 constexpr
size_t tableSize = 256;
51 extern const uint16_t tableKermit[tableSize];
52 extern const uint16_t tableModbus[tableSize];
54 uint16_t kermit(
const uint8_t* data,
size_t count);
55 uint16_t kermit(
const std::vector<uint8_t>& data, std::vector<uint8_t>::size_type pos = 0, std::vector<uint8_t>::size_type count = -1);
57 uint16_t modbus(
const uint8_t* data,
size_t count);
58 uint16_t modbus(
const std::vector<uint8_t>& data, std::vector<uint8_t>::size_type pos = 0, std::vector<uint8_t>::size_type count = -1);
60 #endif // OMWi_CHECKSUM_CRC_PREVIEW
62 uint8_t
parityWord(
const uint8_t* data,
size_t count);
64 uint8_t
parityWord(
const std::vector<uint8_t>& data, std::vector<uint8_t>::size_type pos = 0, std::vector<uint8_t>::size_type count = -1);
70 #endif // IG_OMW_CHECKSUM_H