|
|
|
@ -948,60 +948,6 @@ void TSBK::encode(uint8_t* data, bool rawTSBK, bool noTrellis)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
|
|
|
case TSBK_OSP_TIME_DATE_ANN:
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
//Setup
|
|
|
|
|
|
|
|
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 = 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;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 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
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
case TSBK_OSP_RAD_MON_CMD:
|
|
|
|
case TSBK_OSP_RAD_MON_CMD:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
tsbkValue = (tsbkValue << 48) + (m_txMult & 0x3U); // TX Multiplier
|
|
|
|
tsbkValue = (tsbkValue << 48) + (m_txMult & 0x3U); // TX Multiplier
|
|
|
|
|