1
0
Fork 0

corrected checksum element ordering

This commit is contained in:
Kevin Matz 2023-05-03 15:59:14 -04:00
parent 6c7d62ca6b
commit 3882af3659
2 changed files with 7 additions and 8 deletions

View File

@ -252,14 +252,13 @@ void Message::nak(uint16_t reason)
uint16_t Message::checksum() const
{
uint16_t sum = 0;
addSum_(sum, SC_RDM);
addSum_(sum, SC_SUB_MESSAGE);
addSum_(sum, 24 + mdb.pdl());
addSum_(sum, source.manufacturer);
addSum_(sum, source.device);
addSum_(sum, MESSAGE_MINIMUM_LENGTH+mdb.pdl());
addSum_(sum, destination.manufacturer);
addSum_(sum, destination.device);
addSum_(sum, source.manufacturer);
addSum_(sum, source.device);
addSum_(sum, tn);
addSum_(sum, portID);
addSum_(sum, messageCount);
@ -267,8 +266,8 @@ uint16_t Message::checksum() const
addSum_(sum, mdb.cc);
addSum_(sum, mdb.pid);
addSum_(sum, mdb.pdl());
for (const auto &val : mdb.pd)
addSum_(sum, val);
for (const auto &byte : mdb.pd)
addSum_(sum, byte);
return sum;
}

View File

@ -148,9 +148,9 @@ private: // templates
uint8_t byte;
uint16_t carry;
auto data = reinterpret_cast<const uint8_t*>(&val);
for (int i = sizeof(T); --i >= 0; )
for (int i = 0; i < sizeof(T); i++)
{
byte = data[i];
byte = data[sizeof(T)-1-i];
while (byte != 0)
{
carry = sum & byte;