mirror of
https://github.com/g4klx/DMRGateway
synced 2025-12-21 13:35:40 +08:00
Timeout XLX reflectors and return to startup after period of inactivity
This commit is contained in:
@@ -376,6 +376,10 @@ int CDMRGateway::run()
|
|||||||
unsigned int dmr2DstId[3U];
|
unsigned int dmr2DstId[3U];
|
||||||
dmr2SrcId[1U] = dmr2SrcId[2U] = dmr2DstId[1U] = dmr2DstId[2U] = 0U;
|
dmr2SrcId[1U] = dmr2SrcId[2U] = dmr2DstId[1U] = dmr2DstId[2U] = 0U;
|
||||||
|
|
||||||
|
//XLX timeouts
|
||||||
|
unsigned int xlx1LastSeenTime[0U];
|
||||||
|
unsigned int xlx2LastSeenTime[0U];
|
||||||
|
|
||||||
CStopWatch stopWatch;
|
CStopWatch stopWatch;
|
||||||
stopWatch.start();
|
stopWatch.start();
|
||||||
|
|
||||||
@@ -405,6 +409,9 @@ int CDMRGateway::run()
|
|||||||
|
|
||||||
m_xlx1Reflector = 4000U;
|
m_xlx1Reflector = 4000U;
|
||||||
m_xlx1Connected = false;
|
m_xlx1Connected = false;
|
||||||
|
} else if (xlx1LastSeenTime - time(NULL) > 600U) {
|
||||||
|
writeXLXLink(m_xlx1Id,m_xlx1Startup,m_xlxNetwork1);
|
||||||
|
LogMessage("XLX-1, Re-linking to startup reflector %u due to inactivity timeout", m_xlx1Startup);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -429,7 +436,10 @@ int CDMRGateway::run()
|
|||||||
|
|
||||||
m_xlx2Reflector = 4000U;
|
m_xlx2Reflector = 4000U;
|
||||||
m_xlx2Connected = false;
|
m_xlx2Connected = false;
|
||||||
}
|
} else if (xlx2LastSeenTime - time(NULL) > 600U) {
|
||||||
|
writeXLXLink(m_xlx2Id,m_xlx1Startup,m_xlxNetwork2);
|
||||||
|
LogMessage("XLX-2, Re-linking to startup reflector %u due to inactivity timeout", m_xlx2Startup);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CDMRData data;
|
CDMRData data;
|
||||||
@@ -442,11 +452,19 @@ int CDMRGateway::run()
|
|||||||
FLCO flco = data.getFLCO();
|
FLCO flco = data.getFLCO();
|
||||||
|
|
||||||
if (flco == FLCO_GROUP && slotNo == m_xlx1Slot && dstId == m_xlx1TG) {
|
if (flco == FLCO_GROUP && slotNo == m_xlx1Slot && dstId == m_xlx1TG) {
|
||||||
|
|
||||||
|
//set lastseen
|
||||||
|
xlx1LastSeenTime = time(NULL);
|
||||||
|
|
||||||
m_xlx1Rewrite->process(data, false);
|
m_xlx1Rewrite->process(data, false);
|
||||||
m_xlxNetwork1->write(data);
|
m_xlxNetwork1->write(data);
|
||||||
status[slotNo] = DMRGWS_XLXREFLECTOR1;
|
status[slotNo] = DMRGWS_XLXREFLECTOR1;
|
||||||
timer[slotNo]->start();
|
timer[slotNo]->start();
|
||||||
} else if (flco == FLCO_GROUP && slotNo == m_xlx2Slot && dstId == m_xlx2TG) {
|
} else if (flco == FLCO_GROUP && slotNo == m_xlx2Slot && dstId == m_xlx2TG) {
|
||||||
|
|
||||||
|
//set lastseen
|
||||||
|
xlx2LastSeenTime = time(NULL);
|
||||||
|
|
||||||
m_xlx2Rewrite->process(data, false);
|
m_xlx2Rewrite->process(data, false);
|
||||||
m_xlxNetwork2->write(data);
|
m_xlxNetwork2->write(data);
|
||||||
status[slotNo] = DMRGWS_XLXREFLECTOR2;
|
status[slotNo] = DMRGWS_XLXREFLECTOR2;
|
||||||
|
|||||||
Reference in New Issue
Block a user