diff --git a/POCSAGControl.cpp b/POCSAGControl.cpp index a4206ac..bc16398 100644 --- a/POCSAGControl.cpp +++ b/POCSAGControl.cpp @@ -26,25 +26,25 @@ const struct BCD { char m_c; uint32_t m_bcd[5U]; } BCD_VALUES[] = { - {'0', {0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U}}, - {'1', {0x08000000U, 0x00800000U, 0x00080000U, 0x00008000U, 0x00000800U}}, - {'2', {0x10000000U, 0x01000000U, 0x00100000U, 0x00010000U, 0x00001000U}}, - {'3', {0x18000000U, 0x01800000U, 0x00180000U, 0x00018000U, 0x00001800U}}, - {'4', {0x20000000U, 0x02000000U, 0x00200000U, 0x00020000U, 0x00002000U}}, - {'5', {0x28000000U, 0x02800000U, 0x00280000U, 0x00028000U, 0x00002800U}}, - {'6', {0x30000000U, 0x03000000U, 0x00300000U, 0x00030000U, 0x00003000U}}, - {'7', {0x38000000U, 0x03800000U, 0x00380000U, 0x00038000U, 0x00003800U}}, - {'8', {0x40000000U, 0x04000000U, 0x00400000U, 0x00040000U, 0x00004000U}}, - {'9', {0x48000000U, 0x04800000U, 0x00480000U, 0x00048000U, 0x00004800U}}, - {'U', {0x58000000U, 0x05800000U, 0x00580000U, 0x00058000U, 0x00005800U}}, - {' ', {0x60000000U, 0x06000000U, 0x00600000U, 0x00060000U, 0x00006000U}}, - {'-', {0x68000000U, 0x06800000U, 0x00680000U, 0x00068000U, 0x00006800U}}, - {')', {0x70000000U, 0x07000000U, 0x00700000U, 0x00070000U, 0x00007000U}}, - {'(', {0x78000000U, 0x07800000U, 0x00780000U, 0x00078000U, 0x00007800U}}, - {0, {0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U}} + { '0', {0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U}}, + { '1', {0x40000000U, 0x04000000U, 0x00400000U, 0x00040000U, 0x00004000U}}, + { '2', {0x20000000U, 0x02000000U, 0x00200000U, 0x00020000U, 0x00002000U}}, + { '3', {0x60000000U, 0x06000000U, 0x00600000U, 0x00060000U, 0x00006000U}}, + { '4', {0x10000000U, 0x01000000U, 0x00100000U, 0x00010000U, 0x00001000U}}, + { '5', {0x50000000U, 0x05000000U, 0x00500000U, 0x00050000U, 0x00005000U}}, + { '6', {0x30000000U, 0x03000000U, 0x00300000U, 0x00030000U, 0x00003000U}}, + { '7', {0x70000000U, 0x07000000U, 0x00700000U, 0x00070000U, 0x00007000U}}, + { '8', {0x08000000U, 0x00800000U, 0x00080000U, 0x00008000U, 0x00000800U}}, + { '9', {0x48000000U, 0x04800000U, 0x00480000U, 0x00048000U, 0x00004800U}}, + { 'U', {0x68000000U, 0x06800000U, 0x00680000U, 0x00068000U, 0x00006800U}}, + { ' ', {0x18000000U, 0x01800000U, 0x00180000U, 0x00018000U, 0x00001800U}}, + { '-', {0x58000000U, 0x05800000U, 0x00580000U, 0x00058000U, 0x00005800U}}, + { ')', {0x38000000U, 0x03800000U, 0x00380000U, 0x00038000U, 0x00003800U}}, + { '(', {0x78000000U, 0x07800000U, 0x00780000U, 0x00078000U, 0x00007800U}}, + { 0, {0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U}} }; -const uint32_t BCD_SPACES[] = {0x66666000U, 0x06666000U, 0x00666000U, 0x00066000U, 0x00006000U}; +const uint32_t BCD_SPACES[] = {0x19999800U, 0x01999800U, 0x00199800U, 0x00019800U, 0x00001800U}; const uint32_t DATA_MASK[] = { 0x40000000U, 0x20000000U, 0x10000000U, 0x08000000U, 0x04000000U, 0x02000000U, 0x01000000U, @@ -241,6 +241,11 @@ void CPOCSAGControl::packASCII() } } } + + if (n > 0U) { + addBCHAndParity(word); + m_buffer.push_back(word); + } } void CPOCSAGControl::packNumeric()