Add two EOT characters before the NULs.

This commit is contained in:
Jonathan Naylor 2018-06-13 06:52:45 +01:00
parent 270f518a63
commit fd067f8930

View file

@ -30,6 +30,7 @@ const uint32_t DATA_MASK[] = { 0x40000000U, 0x20000000U, 0x10000000U
0x00000800U};
const unsigned char ASCII_NUL = 0x00U;
const unsigned char ASCII_EOT = 0x04U;
CPOCSAGControl::CPOCSAGControl(CPOCSAGNetwork* network, CDisplay* display) :
m_network(network),
@ -205,7 +206,25 @@ void CPOCSAGControl::packASCII()
}
}
// Fill remaining space wit NUL characters.
// Add two EOT characters.
for (unsigned int i = 0U; i < 2U; i++) {
unsigned char c = ASCII_EOT;
for (unsigned int j = 0U; j < 7U; j++, c >>= 1) {
bool b = (c & MASK) == MASK;
if (b)
word |= DATA_MASK[n];
n++;
if (n == 20U) {
addBCHAndParity(word);
m_buffer.push_back(word);
word = 0x80000000U;
n = 0U;
}
}
}
// Fill remaining space with NUL characters.
while (n != 0U) {
unsigned char c = ASCII_NUL;
for (unsigned int j = 0U; j < 7U; j++, c >>= 1) {