mirror of
https://github.com/ShaYmez/P25Clients.git
synced 2025-09-04 22:27:49 -04:00
Merge pull request #282 from f1rmb/connection_status_to_static_at_startup
This commit is contained in:
commit
f3efdf6874
@ -156,7 +156,7 @@ void CP25Gateway::run()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Double check it worked (AKA Paranoia)
|
// Double check it worked (AKA Paranoia)
|
||||||
if (setuid(0) != -1) {
|
if (setuid(0) != -1) {
|
||||||
::fprintf(stderr, "It's possible to regain root - something is wrong!, exiting\n");
|
::fprintf(stderr, "It's possible to regain root - something is wrong!, exiting\n");
|
||||||
return;
|
return;
|
||||||
@ -302,8 +302,18 @@ void CP25Gateway::run()
|
|||||||
hangTimer.start();
|
hangTimer.start();
|
||||||
}
|
}
|
||||||
} else if (currentTG == 0U) {
|
} else if (currentTG == 0U) {
|
||||||
|
bool poll = false;
|
||||||
|
unsigned char pollReply[11U] = { 0xF0U };
|
||||||
|
std::string callsign = m_conf.getCallsign();
|
||||||
|
|
||||||
|
callsign.resize(10U, ' ');
|
||||||
|
|
||||||
|
// Build poll reply data
|
||||||
|
for (unsigned int i = 0U; i < 10U; i++)
|
||||||
|
pollReply[i + 1U] = callsign.at(i);
|
||||||
|
|
||||||
// Don't pass reflector control data through to the MMDVM
|
// Don't pass reflector control data through to the MMDVM
|
||||||
if (buffer[0U] != 0xF0U && buffer[0U] != 0xF1U) {
|
if ((buffer[0U] != 0xF0U && buffer[0U] != 0xF1U) || (poll = (::memcmp(buffer, pollReply, std::min(11U, len)) == 0))) {
|
||||||
// Find the static TG that this audio data belongs to
|
// Find the static TG that this audio data belongs to
|
||||||
for (std::vector<CStaticTG>::const_iterator it = staticTGs.cbegin(); it != staticTGs.cend(); ++it) {
|
for (std::vector<CStaticTG>::const_iterator it = staticTGs.cbegin(); it != staticTGs.cend(); ++it) {
|
||||||
if (CUDPSocket::match(addr, (*it).m_addr)) {
|
if (CUDPSocket::match(addr, (*it).m_addr)) {
|
||||||
@ -326,7 +336,8 @@ void CP25Gateway::run()
|
|||||||
buffer[3U] = (currentTG >> 0) & 0xFFU;
|
buffer[3U] = (currentTG >> 0) & 0xFFU;
|
||||||
}
|
}
|
||||||
|
|
||||||
localNetwork.write(buffer, len);
|
if (!poll)
|
||||||
|
localNetwork.write(buffer, len);
|
||||||
|
|
||||||
LogMessage("Switched to reflector %u due to network activity", currentTG);
|
LogMessage("Switched to reflector %u due to network activity", currentTG);
|
||||||
|
|
||||||
@ -348,7 +359,7 @@ void CP25Gateway::run()
|
|||||||
srcId = (buffer[1U] << 16) & 0xFF0000U;
|
srcId = (buffer[1U] << 16) & 0xFF0000U;
|
||||||
srcId |= (buffer[2U] << 8) & 0x00FF00U;
|
srcId |= (buffer[2U] << 8) & 0x00FF00U;
|
||||||
srcId |= (buffer[3U] << 0) & 0x0000FFU;
|
srcId |= (buffer[3U] << 0) & 0x0000FFU;
|
||||||
|
|
||||||
if (dstTG != currentTG) {
|
if (dstTG != currentTG) {
|
||||||
if (currentAddrLen > 0U) {
|
if (currentAddrLen > 0U) {
|
||||||
std::string callsign = lookup->find(srcId);
|
std::string callsign = lookup->find(srcId);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user