From 56a09806725c54ae886f1ea55a094d74fe6c6c51 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Wed, 7 Sep 2022 15:12:25 -0400 Subject: [PATCH 1/3] minor rework for TSBK_OSP_TIME_DATE_ANN; --- p25/lc/TSBK.cpp | 92 +++++++++++++++++++++++-------------------------- 1 file changed, 43 insertions(+), 49 deletions(-) diff --git a/p25/lc/TSBK.cpp b/p25/lc/TSBK.cpp index a2837212..752dc31b 100644 --- a/p25/lc/TSBK.cpp +++ b/p25/lc/TSBK.cpp @@ -898,67 +898,57 @@ void TSBK::encode(uint8_t* data, bool rawTSBK, bool noTrellis) std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); time_t tt = std::chrono::system_clock::to_time_t(now); tm local_tm = *gmtime(&tt); - unsigned long tmM = 0b000; - unsigned long tmMDAY = 0b00000; - uint32_t tmY = 0b0000000000000; - uint32_t tmH = 0b00000; - uint32_t tmMin = 0b000000; - uint32_t tmS = 0b000000; - - //Assign Values - tmM |= (local_tm.tm_mon + 1);//Month; +1 to account for tm_mon being 0-11 and p25 being 1-12 - tmMDAY |= local_tm.tm_mday;//Day of month - tmY |= local_tm.tm_year;//Year - tmH |= local_tm.tm_hour;//Hour - tmMin |= local_tm.tm_min;//Min + + unsigned long tmM = 0U; + tmM |= (local_tm.tm_mon + 1); // Month; +1 to account for tm_mon being 0-11 and p25 being 1-12 + unsigned long tmMDAY = 0U; + tmMDAY |= local_tm.tm_mday; // Day of month + uint32_t tmY = 0U; + tmY |= local_tm.tm_year; // Year + uint32_t tmH = 0U; + tmH |= local_tm.tm_hour; // Hour + uint32_t tmMin = 0U; + tmMin |= local_tm.tm_min; // Min uint32_t i = local_tm.tm_sec; - unsigned long VFLAGS = 0xE0; // VL,VT,VD, Res(leave 0),LTO direction, LTO - unsigned long VLTO = 0b00000000; // LTO - //Catch Leap Seconds + uint16_t lto = 0U; + + // catch Leap Seconds + uint32_t tmS = 0U; if (i > 59U) { tmS |= 59U; } else { tmS |= i; } - //Fix Year from from 1900 to from 2000 + // fix Year from from 1900 to from 2000 tmY = tmY - 100U; - //Shift Shift - VFLAGS = VFLAGS << 56 ; //Flags - VLTO = VLTO << 48; //LTO - tmM = tmM << 44; //Month - tmMDAY = tmMDAY << 39; //Day of month - tmY = tmY << 26; //Year - tmH = tmH << 19; //Hour - tmMin = tmMin << 13; //Min - tmS = tmS << 7; //Second - - //Build tsbkValue - tsbkValue = 0U; //Zero out tsbkValue - //Flags - tsbkValue = tsbkValue + VFLAGS; - tsbkValue = tsbkValue + VLTO; - //Date - tsbkValue = tsbkValue + tmM; - tsbkValue = tsbkValue + tmMDAY; - tsbkValue = tsbkValue + tmY; - //Time - tsbkValue = tsbkValue + tmH; - tsbkValue = tsbkValue + tmMin; - tsbkValue = tsbkValue + tmS; + tsbkValue = 0xE0U + // VL, VT and VD flags set + ((lto >> 8) & 0x0F); // LTO MSB (Upper 4-bits) + tsbkValue = (tsbkValue << 8) + + (lto & 0xFFU); // LTO LSB + + // Date + tsbkValue = (tsbkValue << 4) + + (tmM & 0x0FU); // Month + tsbkValue = (tsbkValue << 5) + + (tmMDAY & 0x1FU); // Day of Month + tsbkValue = (tsbkValue << 13) + + (tmY & 0x1FFFU); // Year + tsbkValue = (tsbkValue << 2); // Reserved + + // Time + tsbkValue = (tsbkValue << 5) + + (tmH & 0x1FU); // Hour + tsbkValue = (tsbkValue << 6) + + (tmMin & 0x3FU); // Minute + tsbkValue = (tsbkValue << 6) + + (tmS & 0x3FU); // Seconds + tsbkValue = (tsbkValue << 7); // Reserved #if DEBUG_P25_TSBK - LogError(LOG_P25, "TSBK_OSP_TIME_DATE_ANN (Dump Start)"); - LogError(LOG_P25, "tsbkValue RAW= $%p" , tsbkValue); - LogError(LOG_P25, "tmM= $%p" , tmM); - LogError(LOG_P25, "tmMDAY= $%p" , tmMDAY); - LogError(LOG_P25, "tmY= $%p" , tmY); - LogError(LOG_P25, "tmH= $%p" , tmH); - LogError(LOG_P25, "tmMin= $%p" , tmMin); - LogError(LOG_P25, "tmS= $%p" , tmS); - LogError(LOG_P25, "TSBK_OSP_TIME_DATE_ANN (Dump End)"); + LogDebug(LOG_P25, "TSBK_OSP_TIME_DATE_ANN, tmM = %u, tmMDAY = %u, tmY = %u, tmH = %u, tmMin = %u, tmS = %u", tmM, tmMDAY, tmY, tmH, tmMin, tmS); #endif } break; @@ -1113,6 +1103,10 @@ void TSBK::encode(uint8_t* data, bool rawTSBK, bool noTrellis) tsbk[8U] = (uint8_t)((tsbkValue >> 8) & 0xFFU); tsbk[9U] = (uint8_t)((tsbkValue >> 0) & 0xFFU); +#if DEBUG_P25_TSBK + Utils::dump(2U, "TSBK Value", tsbk, P25_TSBK_LENGTH_BYTES); +#endif + // compute CRC-CCITT 16 edac::CRC::addCCITT162(tsbk, P25_TSBK_LENGTH_BYTES); From 5446d2b6921bc010a72d7bc0c13556dc439faffc Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Wed, 7 Sep 2022 15:15:34 -0400 Subject: [PATCH 2/3] cleanup debug code; --- p25/lc/TSBK.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/p25/lc/TSBK.cpp b/p25/lc/TSBK.cpp index 752dc31b..b8e01b22 100644 --- a/p25/lc/TSBK.cpp +++ b/p25/lc/TSBK.cpp @@ -1103,15 +1103,11 @@ void TSBK::encode(uint8_t* data, bool rawTSBK, bool noTrellis) tsbk[8U] = (uint8_t)((tsbkValue >> 8) & 0xFFU); tsbk[9U] = (uint8_t)((tsbkValue >> 0) & 0xFFU); -#if DEBUG_P25_TSBK - Utils::dump(2U, "TSBK Value", tsbk, P25_TSBK_LENGTH_BYTES); -#endif - // compute CRC-CCITT 16 edac::CRC::addCCITT162(tsbk, P25_TSBK_LENGTH_BYTES); if (m_verbose) { - Utils::dump(2U, "Encoded TSBK", tsbk, P25_TSBK_LENGTH_BYTES); + Utils::dump(2U, "TSBK::encode(), TSBK Value", tsbk, P25_TSBK_LENGTH_BYTES); } uint8_t raw[P25_TSBK_FEC_LENGTH_BYTES]; From 4cff5656504d42b766ac461c46af8e81c13237c3 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Wed, 7 Sep 2022 15:24:41 -0400 Subject: [PATCH 3/3] minor code cleanup; --- p25/lc/TSBK.cpp | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/p25/lc/TSBK.cpp b/p25/lc/TSBK.cpp index b8e01b22..bb7bfbaf 100644 --- a/p25/lc/TSBK.cpp +++ b/p25/lc/TSBK.cpp @@ -921,31 +921,24 @@ void TSBK::encode(uint8_t* data, bool rawTSBK, bool noTrellis) tmS |= i; } - // fix Year from from 1900 to from 2000 + // fix year from from 1900 to, from 2000 tmY = tmY - 100U; - tsbkValue = 0xE0U + // VL, VT and VD flags set - ((lto >> 8) & 0x0F); // LTO MSB (Upper 4-bits) - tsbkValue = (tsbkValue << 8) + - (lto & 0xFFU); // LTO LSB + tsbkValue = 0xE0U + // VL, VT and VD flags set + ((lto >> 8) & 0x0F); // LTO MSB (Upper 4-bits) + tsbkValue = (tsbkValue << 8) + (lto & 0xFFU); // LTO LSB // Date - tsbkValue = (tsbkValue << 4) + - (tmM & 0x0FU); // Month - tsbkValue = (tsbkValue << 5) + - (tmMDAY & 0x1FU); // Day of Month - tsbkValue = (tsbkValue << 13) + - (tmY & 0x1FFFU); // Year - tsbkValue = (tsbkValue << 2); // Reserved + tsbkValue = (tsbkValue << 4) + (tmM & 0x0FU); // Month + tsbkValue = (tsbkValue << 5) + (tmMDAY & 0x1FU); // Day of Month + tsbkValue = (tsbkValue << 13) + (tmY & 0x1FFFU); // Year + tsbkValue = (tsbkValue << 2); // Reserved // Time - tsbkValue = (tsbkValue << 5) + - (tmH & 0x1FU); // Hour - tsbkValue = (tsbkValue << 6) + - (tmMin & 0x3FU); // Minute - tsbkValue = (tsbkValue << 6) + - (tmS & 0x3FU); // Seconds - tsbkValue = (tsbkValue << 7); // Reserved + tsbkValue = (tsbkValue << 5) + (tmH & 0x1FU); // Hour + tsbkValue = (tsbkValue << 6) + (tmMin & 0x3FU); // Minute + tsbkValue = (tsbkValue << 6) + (tmS & 0x3FU); // Seconds + tsbkValue = (tsbkValue << 7); // Reserved #if DEBUG_P25_TSBK LogDebug(LOG_P25, "TSBK_OSP_TIME_DATE_ANN, tmM = %u, tmMDAY = %u, tmY = %u, tmH = %u, tmMin = %u, tmS = %u", tmM, tmMDAY, tmY, tmH, tmMin, tmS);