add option to disable deny responses in conventional for radios that are braindead and interpret an OSP_DENY as a ISP_EMERG because of opcode reuse (thanks TIA-102);

pull/115/head
Bryan Biedenkapp 2 months ago
parent 87f94b837a
commit c5786b3343

@ -295,6 +295,11 @@ protocols:
unitToUnitAvailCheck: false
# Flag indicating explicit source ID support is enabled.
allowExplicitSourceId: false
# Flag indicating whether or not the host will disable sending deny responses when operating in conventional.
# (Some subscriber radios do not handle deny responses in conventional, and rather interpret them as
# a emergency call trigger, this option allows the deny response to be disabled to prevent errant emergency
# call triggers.)
disableDenyResponse: false
# Flag indicating whether or not the host will respond to SNDCP data requests.
sndcpSupport: false
# BER/Error threshold for silencing voice packets. (0 or 1233 disables)

@ -87,6 +87,7 @@ Control::Control(bool authoritative, uint32_t nac, uint32_t callHang, uint32_t q
m_forceAllowTG0(false),
m_immediateCallTerm(true),
m_explicitTDUGrantRelease(true),
m_disableDenyResponse(false),
m_defaultNetIdleTalkgroup(0U),
m_idenTable(idenTable),
m_ridLookup(ridLookup),
@ -371,6 +372,7 @@ void Control::setOptions(yaml::Node& conf, bool supervisor, const std::string cw
m_immediateCallTerm = p25Protocol["immediateCallTerm"].as<bool>(true);
m_explicitTDUGrantRelease = p25Protocol["explicitTDUGrantRelease"].as<bool>(true);
m_disableDenyResponse = p25Protocol["disableDenyResponse"].as<bool>(false);
/*
** Voice Silence and Frame Loss Thresholds

@ -318,6 +318,7 @@ namespace p25
bool m_forceAllowTG0;
bool m_immediateCallTerm;
bool m_explicitTDUGrantRelease;
bool m_disableDenyResponse;
uint32_t m_defaultNetIdleTalkgroup;

@ -2780,6 +2780,13 @@ void ControlSignaling::writeRF_TSDU_Deny(uint32_t srcId, uint32_t dstId, uint8_t
osp->getSrcId(), osp->getDstId());
}
// are deny responses disabled?
if (!m_p25->m_dedicatedControl && !m_p25->m_controlOnly && m_p25->m_disableDenyResponse) {
// at least ACK the request to try to silence the sender
writeRF_TSDU_ACK_FNE(srcId, service, aiv, false);
return;
}
writeRF_TSDU_SBF_Imm(osp.get(), false);
}

Loading…
Cancel
Save

Powered by TurnKey Linux.