diff --git a/gr-jay/lib/PocsagDecoder.cpp b/gr-jay/lib/PocsagDecoder.cpp index bc8bb29..7fb3250 100644 --- a/gr-jay/lib/PocsagDecoder.cpp +++ b/gr-jay/lib/PocsagDecoder.cpp @@ -39,6 +39,11 @@ PocsagDecoder::~PocsagDecoder() { } +void PocsagDecoder::messageBegin() +{ + msgActive = 1; +} + void PocsagDecoder::messageFinish() { if (msgActive) @@ -80,18 +85,19 @@ size_t PocsagDecoder::process(uint8_t const *pData, size_t size) } break; case Data: + // Sync received if (word == 0x7CD215D8) { dataCount = 0x00; break; } + + // Message word if (word & 0x80000000) { - // Message word if (func == 0x00) { // Numeric - msgActive = 1; for (size_t i=1; i < 21; i++) { uint32_t bit = 0x80000000 & (word << i); @@ -110,7 +116,6 @@ size_t PocsagDecoder::process(uint8_t const *pData, size_t size) if (func == 0x03) { // Alpha numeric - msgActive = 1; for (size_t i=1; i < 21; i++) { uint32_t bit = 0x80000000 & (word << i); @@ -144,6 +149,7 @@ size_t PocsagDecoder::process(uint8_t const *pData, size_t size) uint32_t addr = (word >> 13) & 0x3FFFF; func = (word >> 11) & 0x03; fprintf(stderr, "%02X: [%07u](%02X): ", (uint8_t)(dataCount), (unsigned)(8*addr+dataCount/2), func); + messageBegin(); } } dataCount++; @@ -161,6 +167,6 @@ size_t PocsagDecoder::process(uint8_t const *pData, size_t size) numProcessed += incr; } - return numProcessed; + } \ No newline at end of file diff --git a/gr-jay/lib/PocsagDecoder.hpp b/gr-jay/lib/PocsagDecoder.hpp index 21bbccd..cca5d71 100644 --- a/gr-jay/lib/PocsagDecoder.hpp +++ b/gr-jay/lib/PocsagDecoder.hpp @@ -40,6 +40,7 @@ private: uint32_t func = 0; bool msgActive = 0; + void messageBegin(); void messageFinish(); };