mirror of
https://github.com/g4klx/DMRGateway.git
synced 2025-12-06 05:32:01 +01:00
Add more complexit to relinking.
This commit is contained in:
parent
a379d2447e
commit
d80de2c215
|
|
@ -363,7 +363,7 @@ int CDMRGateway::run()
|
||||||
if (m_xlxNetwork != NULL) {
|
if (m_xlxNetwork != NULL) {
|
||||||
bool connected = m_xlxNetwork->isConnected();
|
bool connected = m_xlxNetwork->isConnected();
|
||||||
if (connected && !m_xlxConnected) {
|
if (connected && !m_xlxConnected) {
|
||||||
if (m_xlxRoom != 4000U) {
|
if (m_xlxRoom >= 4001U && m_xlxRoom <= 4026U) {
|
||||||
writeXLXLink(m_xlxId, m_xlxRoom, m_xlxNetwork);
|
writeXLXLink(m_xlxId, m_xlxRoom, m_xlxNetwork);
|
||||||
LogMessage("XLX, Linking to reflector %u in XLX%03u", m_xlxRoom, m_xlxNumber);
|
LogMessage("XLX, Linking to reflector %u in XLX%03u", m_xlxRoom, m_xlxNumber);
|
||||||
if (voice != NULL)
|
if (voice != NULL)
|
||||||
|
|
@ -378,7 +378,7 @@ int CDMRGateway::run()
|
||||||
else
|
else
|
||||||
m_xlxRelink.start();
|
m_xlxRelink.start();
|
||||||
} else if (!connected && m_xlxConnected) {
|
} else if (!connected && m_xlxConnected) {
|
||||||
if (m_xlxReflector != 4000U) {
|
if (m_xlxReflector >= 4001U && m_xlxReflector <= 4026U) {
|
||||||
LogMessage("XLX, Unlinking from XLX%03u due to loss of connection", m_xlxNumber);
|
LogMessage("XLX, Unlinking from XLX%03u due to loss of connection", m_xlxNumber);
|
||||||
if (voice != NULL)
|
if (voice != NULL)
|
||||||
voice->unlinked();
|
voice->unlinked();
|
||||||
|
|
@ -391,18 +391,28 @@ int CDMRGateway::run()
|
||||||
m_xlxRelink.stop();
|
m_xlxRelink.stop();
|
||||||
|
|
||||||
if (m_xlxNumber != m_xlxStartup) {
|
if (m_xlxNumber != m_xlxStartup) {
|
||||||
LogMessage("XLX, Re-linking to startup reflector %u in XLX%03u due to RF inactivity timeout", m_xlxRoom, m_xlxNumber);
|
if (m_xlxStartup > 0U) {
|
||||||
linkXLX(m_xlxStartup);
|
LogMessage("XLX, Re-linking to startup reflector %u in XLX%03u due to RF inactivity timeout", m_xlxRoom, m_xlxNumber);
|
||||||
|
linkXLX(m_xlxStartup);
|
||||||
|
} else {
|
||||||
|
LogMessage("XLX, Unlinking from XLX%03u due to RF inactivity timeout", m_xlxNumber);
|
||||||
|
unlinkXLX();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (m_xlxRoom != 4000U)
|
if (m_xlxReflector >= 4001U && m_xlxReflector <= 4026U)
|
||||||
writeXLXLink(m_xlxId, 4000U, m_xlxNetwork);
|
writeXLXLink(m_xlxId, 4000U, m_xlxNetwork);
|
||||||
|
|
||||||
writeXLXLink(m_xlxId, m_xlxRoom, m_xlxNetwork);
|
if (m_xlxRoom >= 4001U && m_xlxRoom <= 4026U) {
|
||||||
LogMessage("XLX, Re-linking to startup reflector %u in XLX%03u due to RF inactivity timeout", m_xlxRoom, m_xlxNumber);
|
writeXLXLink(m_xlxId, m_xlxRoom, m_xlxNetwork);
|
||||||
|
LogMessage("XLX, Re-linking to startup reflector %u in XLX%03u due to RF inactivity timeout", m_xlxRoom, m_xlxNumber);
|
||||||
|
} else if (m_xlxReflector >= 4001U && m_xlxReflector <= 4026U) {
|
||||||
|
LogMessage("XLX, Unlinking from reflector %u in XLX%03u due to RF inactivity timeout", m_xlxReflector, m_xlxNumber);
|
||||||
|
}
|
||||||
|
|
||||||
m_xlxReflector = m_xlxRoom;
|
m_xlxReflector = m_xlxRoom;
|
||||||
|
|
||||||
if (voice != NULL) {
|
if (voice != NULL) {
|
||||||
if (m_xlxReflector == 4000U)
|
if (m_xlxReflector < 4001U || m_xlxReflector > 4026U)
|
||||||
voice->unlinked();
|
voice->unlinked();
|
||||||
else
|
else
|
||||||
voice->linkedTo(m_xlxNumber, m_xlxReflector);
|
voice->linkedTo(m_xlxNumber, m_xlxReflector);
|
||||||
|
|
@ -1142,6 +1152,18 @@ bool CDMRGateway::linkXLX(unsigned int number)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CDMRGateway::unlinkXLX()
|
||||||
|
{
|
||||||
|
if (m_xlxNetwork != NULL) {
|
||||||
|
m_xlxNetwork->close();
|
||||||
|
delete m_xlxNetwork;
|
||||||
|
m_xlxNetwork = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_xlxConnected = false;
|
||||||
|
m_xlxRelink.stop();
|
||||||
|
}
|
||||||
|
|
||||||
void CDMRGateway::writeXLXLink(unsigned int srcId, unsigned int dstId, CDMRNetwork* network)
|
void CDMRGateway::writeXLXLink(unsigned int srcId, unsigned int dstId, CDMRNetwork* network)
|
||||||
{
|
{
|
||||||
assert(network != NULL);
|
assert(network != NULL);
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,7 @@ private:
|
||||||
bool createXLXNetwork();
|
bool createXLXNetwork();
|
||||||
|
|
||||||
bool linkXLX(unsigned int number);
|
bool linkXLX(unsigned int number);
|
||||||
|
void unlinkXLX();
|
||||||
void writeXLXLink(unsigned int srcId, unsigned int dstId, CDMRNetwork* network);
|
void writeXLXLink(unsigned int srcId, unsigned int dstId, CDMRNetwork* network);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue