indicate what slot is ending a call for DMR on the FNE; correct bad end-of-call handling for DMR mode on bridge;

pull/83/head
Bryan Biedenkapp 12 months ago
parent f483bbf2ed
commit 560ef40dca

@ -1651,6 +1651,9 @@ void HostBridge::encodeDMRAudioFrame(uint8_t* pcm, uint32_t forcedSrcId, uint32_
dmrData.setData(data);
LogMessage(LOG_HOST, DMR_DT_VOICE_LC_HEADER ", slot = %u, srcId = %u, dstId = %u, FLCO = $%02X", m_slot,
dmrLC.getSrcId(), dmrLC.getDstId(), dmrData.getFLCO());
m_network->writeDMR(dmrData, false);
m_txStreamId = m_network->getDMRStreamId(m_slot);
@ -2423,10 +2426,25 @@ void HostBridge::callEnd(uint32_t srcId, uint32_t dstId)
switch (m_txMode) {
case TX_MODE_DMR:
{
dmr::defines::DataType::E dataType = dmr::defines::DataType::VOICE_SYNC;
if (m_dmrN == 0)
dataType = dmr::defines::DataType::VOICE_SYNC;
else {
dataType = dmr::defines::DataType::VOICE;
}
dmr::data::NetData data = dmr::data::NetData();
data.setDataType(dmr::defines::DataType::TERMINATOR_WITH_LC);
data.setDstId(dstId);
data.setSlotNo(m_slot);
data.setDataType(dataType);
data.setSrcId(srcId);
data.setDstId(dstId);
data.setFLCO(dmr::defines::FLCO::GROUP);
data.setN(m_dmrN);
data.setSeqNo(m_dmrSeqNo);
data.setBER(0U);
data.setRSSI(0U);
LogMessage(LOG_HOST, DMR_DT_TERMINATOR_WITH_LC ", slot = %u, dstId = %u", m_slot, dstId);
m_network->writeDMRTerminator(data, &m_dmrSeqNo, &m_dmrN, m_dmrEmbeddedData);
m_network->resetDMR(data.getSlotNo());
@ -2441,6 +2459,8 @@ void HostBridge::callEnd(uint32_t srcId, uint32_t dstId)
p25::data::LowSpeedData lsd = p25::data::LowSpeedData();
LogMessage(LOG_HOST, P25_TDU_STR);
uint8_t controlByte = 0x00U;
m_network->writeP25TDU(lc, lsd, controlByte);
m_network->resetP25();

@ -136,7 +136,7 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId
// is this the end of the call stream?
if (dataSync && (dataType == DataType::TERMINATOR_WITH_LC)) {
if (srcId == 0U && dstId == 0U) {
LogWarning(LOG_NET, "DMR, invalid TERMINATOR, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u", peerId, srcId, dstId, streamId, external);
LogWarning(LOG_NET, "DMR, invalid TERMINATOR, peer = %u, srcId = %u, dstId = %u, slot = %u, streamId = %u, external = %u", peerId, srcId, dstId, slotNo, streamId, external);
return false;
}
@ -149,8 +149,8 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId
return false;
});
if (it == m_status.end()) {
LogError(LOG_NET, "DMR, tried to end call for non-existent call in progress?, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u",
peerId, srcId, dstId, streamId, external);
LogError(LOG_NET, "DMR, tried to end call for non-existent call in progress?, peer = %u, srcId = %u, dstId = %u, slot = %u, streamId = %u, external = %u",
peerId, srcId, dstId, slotNo, streamId, external);
}
else {
status = it->second;
@ -179,8 +179,8 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId
}
}
LogMessage(LOG_NET, "DMR, Call End, peer = %u, srcId = %u, dstId = %u, duration = %u, streamId = %u, external = %u",
peerId, srcId, dstId, duration / 1000, streamId, external);
LogMessage(LOG_NET, "DMR, Call End, peer = %u, srcId = %u, dstId = %u, slot = %u, duration = %u, streamId = %u, external = %u",
peerId, srcId, dstId, slotNo, duration / 1000, streamId, external);
// report call event to InfluxDB
if (m_network->m_enableInfluxDB) {

Loading…
Cancel
Save

Powered by TurnKey Linux.