Merge branch 'master' into P25
This commit is contained in:
commit
434cee8ce0
12 changed files with 42684 additions and 41542 deletions
8
Conf.cpp
8
Conf.cpp
|
@ -123,6 +123,7 @@ m_dmrNetworkPort(0U),
|
||||||
m_dmrNetworkLocal(0U),
|
m_dmrNetworkLocal(0U),
|
||||||
m_dmrNetworkPassword(),
|
m_dmrNetworkPassword(),
|
||||||
m_dmrNetworkDebug(false),
|
m_dmrNetworkDebug(false),
|
||||||
|
m_dmrNetworkJitter(300U),
|
||||||
m_dmrNetworkSlot1(true),
|
m_dmrNetworkSlot1(true),
|
||||||
m_dmrNetworkSlot2(true),
|
m_dmrNetworkSlot2(true),
|
||||||
m_dmrNetworkRSSI(false),
|
m_dmrNetworkRSSI(false),
|
||||||
|
@ -463,6 +464,8 @@ bool CConf::read()
|
||||||
m_dmrNetworkPassword = value;
|
m_dmrNetworkPassword = value;
|
||||||
else if (::strcmp(key, "Debug") == 0)
|
else if (::strcmp(key, "Debug") == 0)
|
||||||
m_dmrNetworkDebug = ::atoi(value) == 1;
|
m_dmrNetworkDebug = ::atoi(value) == 1;
|
||||||
|
else if (::strcmp(key, "Jitter") == 0)
|
||||||
|
m_dmrNetworkJitter = (unsigned int)::atoi(value);
|
||||||
else if (::strcmp(key, "Slot1") == 0)
|
else if (::strcmp(key, "Slot1") == 0)
|
||||||
m_dmrNetworkSlot1 = ::atoi(value) == 1;
|
m_dmrNetworkSlot1 = ::atoi(value) == 1;
|
||||||
else if (::strcmp(key, "Slot2") == 0)
|
else if (::strcmp(key, "Slot2") == 0)
|
||||||
|
@ -906,6 +909,11 @@ bool CConf::getDMRNetworkDebug() const
|
||||||
return m_dmrNetworkDebug;
|
return m_dmrNetworkDebug;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int CConf::getDMRNetworkJitter() const
|
||||||
|
{
|
||||||
|
return m_dmrNetworkJitter;
|
||||||
|
}
|
||||||
|
|
||||||
bool CConf::getDMRNetworkSlot1() const
|
bool CConf::getDMRNetworkSlot1() const
|
||||||
{
|
{
|
||||||
return m_dmrNetworkSlot1;
|
return m_dmrNetworkSlot1;
|
||||||
|
|
2
Conf.h
2
Conf.h
|
@ -124,6 +124,7 @@ public:
|
||||||
unsigned int getDMRNetworkLocal() const;
|
unsigned int getDMRNetworkLocal() const;
|
||||||
std::string getDMRNetworkPassword() const;
|
std::string getDMRNetworkPassword() const;
|
||||||
bool getDMRNetworkDebug() const;
|
bool getDMRNetworkDebug() const;
|
||||||
|
unsigned int getDMRNetworkJitter() const;
|
||||||
bool getDMRNetworkSlot1() const;
|
bool getDMRNetworkSlot1() const;
|
||||||
bool getDMRNetworkSlot2() const;
|
bool getDMRNetworkSlot2() const;
|
||||||
bool getDMRNetworkRSSI() const;
|
bool getDMRNetworkRSSI() const;
|
||||||
|
@ -256,6 +257,7 @@ private:
|
||||||
unsigned int m_dmrNetworkLocal;
|
unsigned int m_dmrNetworkLocal;
|
||||||
std::string m_dmrNetworkPassword;
|
std::string m_dmrNetworkPassword;
|
||||||
bool m_dmrNetworkDebug;
|
bool m_dmrNetworkDebug;
|
||||||
|
unsigned int m_dmrNetworkJitter;
|
||||||
bool m_dmrNetworkSlot1;
|
bool m_dmrNetworkSlot1;
|
||||||
bool m_dmrNetworkSlot2;
|
bool m_dmrNetworkSlot2;
|
||||||
bool m_dmrNetworkRSSI;
|
bool m_dmrNetworkRSSI;
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
CDMRControl::CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, const std::vector<unsigned int>& prefixes, const std::vector<unsigned int>& blackList, const std::vector<unsigned int>& DstIdBlacklistSlot1RF, const std::vector<unsigned int>& DstIdWhitelistSlot1RF, const std::vector<unsigned int>& DstIdBlacklistSlot2RF, const std::vector<unsigned int>& DstIdWhitelistSlot2RF, const std::vector<unsigned int>& DstIdBlacklistSlot1NET, const std::vector<unsigned int>& DstIdWhitelistSlot1NET, const std::vector<unsigned int>& DstIdBlacklistSlot2NET, const std::vector<unsigned int>& DstIdWhitelistSlot2NET, unsigned int timeout, CModem* modem, CDMRIPSC* network, CDisplay* display, bool duplex, const std::string& lookupFile, int rssiMultiplier, int rssiOffset) :
|
CDMRControl::CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, const std::vector<unsigned int>& prefixes, const std::vector<unsigned int>& blackList, const std::vector<unsigned int>& DstIdBlacklistSlot1RF, const std::vector<unsigned int>& DstIdWhitelistSlot1RF, const std::vector<unsigned int>& DstIdBlacklistSlot2RF, const std::vector<unsigned int>& DstIdWhitelistSlot2RF, const std::vector<unsigned int>& DstIdBlacklistSlot1NET, const std::vector<unsigned int>& DstIdWhitelistSlot1NET, const std::vector<unsigned int>& DstIdBlacklistSlot2NET, const std::vector<unsigned int>& DstIdWhitelistSlot2NET, unsigned int timeout, CModem* modem, CDMRIPSC* network, CDisplay* display, bool duplex, const std::string& lookupFile, int rssiMultiplier, int rssiOffset, unsigned int jitter) :
|
||||||
m_id(id),
|
m_id(id),
|
||||||
m_colorCode(colorCode),
|
m_colorCode(colorCode),
|
||||||
m_selfOnly(selfOnly),
|
m_selfOnly(selfOnly),
|
||||||
|
@ -38,7 +38,7 @@ m_lookup(NULL)
|
||||||
m_lookup = new CDMRLookup(lookupFile);
|
m_lookup = new CDMRLookup(lookupFile);
|
||||||
m_lookup->read();
|
m_lookup->read();
|
||||||
|
|
||||||
CDMRSlot::init(id, colorCode, callHang, selfOnly, prefixes, blackList, DstIdBlacklistSlot1RF, DstIdWhitelistSlot1RF, DstIdBlacklistSlot2RF, DstIdWhitelistSlot2RF, DstIdBlacklistSlot1NET, DstIdWhitelistSlot1NET, DstIdBlacklistSlot2NET, DstIdWhitelistSlot2NET, modem, network, display, duplex, m_lookup, rssiMultiplier, rssiOffset);
|
CDMRSlot::init(id, colorCode, callHang, selfOnly, prefixes, blackList, DstIdBlacklistSlot1RF, DstIdWhitelistSlot1RF, DstIdBlacklistSlot2RF, DstIdWhitelistSlot2RF, DstIdBlacklistSlot1NET, DstIdWhitelistSlot1NET, DstIdBlacklistSlot2NET, DstIdWhitelistSlot2NET, modem, network, display, duplex, m_lookup, rssiMultiplier, rssiOffset, jitter);
|
||||||
}
|
}
|
||||||
|
|
||||||
CDMRControl::~CDMRControl()
|
CDMRControl::~CDMRControl()
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
class CDMRControl {
|
class CDMRControl {
|
||||||
public:
|
public:
|
||||||
CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, const std::vector<unsigned int>& prefixes, const std::vector<unsigned int>& blackList, const std::vector<unsigned int>& DstIdBlacklistSlot1RF, const std::vector<unsigned int>& DstIdWhitelistSlot1RF, const std::vector<unsigned int>& DstIdBlacklistSlot2RF, const std::vector<unsigned int>& DstIdWhitelistSlot2RF,const std::vector<unsigned int>& DstIdBlacklistSlot1NET, const std::vector<unsigned int>& DstIdWhitelistSlot1NET, const std::vector<unsigned int>& DstIdBlacklistSlot2NET, const std::vector<unsigned int>& DstIdWhitelistSlot2NET, unsigned int timeout, CModem* modem, CDMRIPSC* network, CDisplay* display, bool duplex, const std::string& lookupFile, int rssiMultiplier, int rssiOffset);
|
CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, const std::vector<unsigned int>& prefixes, const std::vector<unsigned int>& blackList, const std::vector<unsigned int>& DstIdBlacklistSlot1RF, const std::vector<unsigned int>& DstIdWhitelistSlot1RF, const std::vector<unsigned int>& DstIdBlacklistSlot2RF, const std::vector<unsigned int>& DstIdWhitelistSlot2RF,const std::vector<unsigned int>& DstIdBlacklistSlot1NET, const std::vector<unsigned int>& DstIdWhitelistSlot1NET, const std::vector<unsigned int>& DstIdBlacklistSlot2NET, const std::vector<unsigned int>& DstIdWhitelistSlot2NET, unsigned int timeout, CModem* modem, CDMRIPSC* network, CDisplay* display, bool duplex, const std::string& lookupFile, int rssiMultiplier, int rssiOffset, unsigned int jitter);
|
||||||
~CDMRControl();
|
~CDMRControl();
|
||||||
|
|
||||||
bool processWakeup(const unsigned char* data);
|
bool processWakeup(const unsigned char* data);
|
||||||
|
|
1261
DMRIds.dat
1261
DMRIds.dat
File diff suppressed because it is too large
Load diff
35
DMRSlot.cpp
35
DMRSlot.cpp
|
@ -44,6 +44,9 @@ unsigned int CDMRSlot::m_hangCount = 3U * 17U;
|
||||||
int CDMRSlot::m_rssiMultiplier = 0;
|
int CDMRSlot::m_rssiMultiplier = 0;
|
||||||
int CDMRSlot::m_rssiOffset = 0;
|
int CDMRSlot::m_rssiOffset = 0;
|
||||||
|
|
||||||
|
unsigned int CDMRSlot::m_jitterTime = 300U;
|
||||||
|
unsigned int CDMRSlot::m_jitterSlots = 5U;
|
||||||
|
|
||||||
unsigned char* CDMRSlot::m_idle = NULL;
|
unsigned char* CDMRSlot::m_idle = NULL;
|
||||||
|
|
||||||
FLCO CDMRSlot::m_flco1;
|
FLCO CDMRSlot::m_flco1;
|
||||||
|
@ -73,7 +76,7 @@ m_netN(0U),
|
||||||
m_networkWatchdog(1000U, 0U, 1500U),
|
m_networkWatchdog(1000U, 0U, 1500U),
|
||||||
m_rfTimeoutTimer(1000U, timeout),
|
m_rfTimeoutTimer(1000U, timeout),
|
||||||
m_netTimeoutTimer(1000U, timeout),
|
m_netTimeoutTimer(1000U, timeout),
|
||||||
m_packetTimer(1000U, 0U, 300U),
|
m_packetTimer(1000U, 0U, 50U),
|
||||||
m_interval(),
|
m_interval(),
|
||||||
m_elapsed(),
|
m_elapsed(),
|
||||||
m_rfFrames(0U),
|
m_rfFrames(0U),
|
||||||
|
@ -793,9 +796,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
||||||
m_modem->writeDMRAbort(m_slotNo);
|
m_modem->writeDMRAbort(m_slotNo);
|
||||||
}
|
}
|
||||||
|
|
||||||
writeQueueNet(m_idle);
|
for (unsigned int i = 0U; i < m_jitterSlots; i++)
|
||||||
writeQueueNet(m_idle);
|
|
||||||
writeQueueNet(m_idle);
|
|
||||||
writeQueueNet(m_idle);
|
writeQueueNet(m_idle);
|
||||||
|
|
||||||
writeQueueNet(data);
|
writeQueueNet(data);
|
||||||
|
@ -963,9 +964,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
||||||
m_modem->writeDMRAbort(m_slotNo);
|
m_modem->writeDMRAbort(m_slotNo);
|
||||||
}
|
}
|
||||||
|
|
||||||
writeQueueNet(m_idle);
|
for (unsigned int i = 0U; i < m_jitterSlots; i++)
|
||||||
writeQueueNet(m_idle);
|
|
||||||
writeQueueNet(m_idle);
|
|
||||||
writeQueueNet(m_idle);
|
writeQueueNet(m_idle);
|
||||||
|
|
||||||
// Create a dummy start frame
|
// Create a dummy start frame
|
||||||
|
@ -1026,7 +1025,6 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
||||||
m_lastFrameValid = true;
|
m_lastFrameValid = true;
|
||||||
m_netSeqNo = dmrData.getSeqNo();
|
m_netSeqNo = dmrData.getSeqNo();
|
||||||
m_netN = dmrData.getN();
|
m_netN = dmrData.getN();
|
||||||
m_elapsed.start();
|
|
||||||
m_netLost = 0U;
|
m_netLost = 0U;
|
||||||
} else {
|
} else {
|
||||||
insertSilence(data, dmrData.getSeqNo());
|
insertSilence(data, dmrData.getSeqNo());
|
||||||
|
@ -1035,6 +1033,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
||||||
writeQueueNet(data);
|
writeQueueNet(data);
|
||||||
|
|
||||||
m_packetTimer.start();
|
m_packetTimer.start();
|
||||||
|
m_elapsed.start();
|
||||||
|
|
||||||
m_netFrames++;
|
m_netFrames++;
|
||||||
|
|
||||||
|
@ -1078,7 +1077,6 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
||||||
m_lastFrameValid = true;
|
m_lastFrameValid = true;
|
||||||
m_netSeqNo = dmrData.getSeqNo();
|
m_netSeqNo = dmrData.getSeqNo();
|
||||||
m_netN = dmrData.getN();
|
m_netN = dmrData.getN();
|
||||||
m_elapsed.start();
|
|
||||||
m_netLost = 0U;
|
m_netLost = 0U;
|
||||||
} else {
|
} else {
|
||||||
insertSilence(data, dmrData.getSeqNo());
|
insertSilence(data, dmrData.getSeqNo());
|
||||||
|
@ -1087,6 +1085,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
||||||
writeQueueNet(data);
|
writeQueueNet(data);
|
||||||
|
|
||||||
m_packetTimer.start();
|
m_packetTimer.start();
|
||||||
|
m_elapsed.start();
|
||||||
|
|
||||||
m_netFrames++;
|
m_netFrames++;
|
||||||
|
|
||||||
|
@ -1238,14 +1237,10 @@ void CDMRSlot::clock()
|
||||||
|
|
||||||
if (m_packetTimer.isRunning() && m_packetTimer.hasExpired()) {
|
if (m_packetTimer.isRunning() && m_packetTimer.hasExpired()) {
|
||||||
unsigned int elapsed = m_elapsed.elapsed();
|
unsigned int elapsed = m_elapsed.elapsed();
|
||||||
unsigned int frames = elapsed / DMR_SLOT_TIME;
|
if (elapsed >= m_jitterTime) {
|
||||||
|
LogDebug("DMR Slot %u, lost audio for %ums filling in", m_slotNo, elapsed);
|
||||||
if (frames > m_netFrames) {
|
insertSilence(m_jitterSlots);
|
||||||
unsigned int count = frames - m_netFrames;
|
m_elapsed.start();
|
||||||
if (count > 3U) {
|
|
||||||
LogDebug("DMR Slot %u, lost audio for 300ms filling in, elapsed: %ums, expected: %u, received: %u", m_slotNo, elapsed, frames, m_netFrames);
|
|
||||||
insertSilence(count - 1U);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_packetTimer.start();
|
m_packetTimer.start();
|
||||||
|
@ -1338,7 +1333,7 @@ void CDMRSlot::writeQueueNet(const unsigned char *data)
|
||||||
m_queue.addData(data, len);
|
m_queue.addData(data, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDMRSlot::init(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, const std::vector<unsigned int>& prefixes, const std::vector<unsigned int>& SrcIdBlacklist, const std::vector<unsigned int>& DstIdBlacklistSlot1RF, const std::vector<unsigned int>& DstIdWhitelistSlot1RF, const std::vector<unsigned int>& DstIdBlacklistSlot2RF, const std::vector<unsigned int>& DstIdWhitelistSlot2RF, const std::vector<unsigned int>& DstIdBlacklistSlot1NET, const std::vector<unsigned int>& DstIdWhitelistSlot1NET, const std::vector<unsigned int>& DstIdBlacklistSlot2NET, const std::vector<unsigned int>& DstIdWhitelistSlot2NET, CModem* modem, CDMRIPSC* network, CDisplay* display, bool duplex, CDMRLookup* lookup, int rssiMultiplier, int rssiOffset)
|
void CDMRSlot::init(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, const std::vector<unsigned int>& prefixes, const std::vector<unsigned int>& SrcIdBlacklist, const std::vector<unsigned int>& DstIdBlacklistSlot1RF, const std::vector<unsigned int>& DstIdWhitelistSlot1RF, const std::vector<unsigned int>& DstIdBlacklistSlot2RF, const std::vector<unsigned int>& DstIdWhitelistSlot2RF, const std::vector<unsigned int>& DstIdBlacklistSlot1NET, const std::vector<unsigned int>& DstIdWhitelistSlot1NET, const std::vector<unsigned int>& DstIdBlacklistSlot2NET, const std::vector<unsigned int>& DstIdWhitelistSlot2NET, CModem* modem, CDMRIPSC* network, CDisplay* display, bool duplex, CDMRLookup* lookup, int rssiMultiplier, int rssiOffset, unsigned int jitter)
|
||||||
{
|
{
|
||||||
assert(id != 0U);
|
assert(id != 0U);
|
||||||
assert(modem != NULL);
|
assert(modem != NULL);
|
||||||
|
@ -1360,8 +1355,10 @@ void CDMRSlot::init(unsigned int id, unsigned int colorCode, unsigned int callHa
|
||||||
m_rssiMultiplier = rssiMultiplier;
|
m_rssiMultiplier = rssiMultiplier;
|
||||||
m_rssiOffset = rssiOffset;
|
m_rssiOffset = rssiOffset;
|
||||||
|
|
||||||
m_idle = new unsigned char[DMR_FRAME_LENGTH_BYTES + 2U];
|
m_jitterTime = jitter;
|
||||||
|
m_jitterSlots = jitter / DMR_SLOT_TIME;
|
||||||
|
|
||||||
|
m_idle = new unsigned char[DMR_FRAME_LENGTH_BYTES + 2U];
|
||||||
::memcpy(m_idle, DMR_IDLE_DATA, DMR_FRAME_LENGTH_BYTES + 2U);
|
::memcpy(m_idle, DMR_IDLE_DATA, DMR_FRAME_LENGTH_BYTES + 2U);
|
||||||
|
|
||||||
// Generate the Slot Type for the Idle frame
|
// Generate the Slot Type for the Idle frame
|
||||||
|
|
|
@ -50,7 +50,7 @@ public:
|
||||||
|
|
||||||
void clock();
|
void clock();
|
||||||
|
|
||||||
static void init(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, const std::vector<unsigned int>& prefixes, const std::vector<unsigned int>& SrcIdBlackList, const std::vector<unsigned int>& DstIdBlacklistSlot1RF, const std::vector<unsigned int>& DstIdWhitelistSlot1RF, const std::vector<unsigned int>& DstIdBlacklistSlot2RF, const std::vector<unsigned int>& DstIdWhitelistSlot2RF, const std::vector<unsigned int>& DstIdBlacklistSlot1NET, const std::vector<unsigned int>& DstIdWhitelistSlot1NET, const std::vector<unsigned int>& DstIdBlacklistSlot2NET, const std::vector<unsigned int>& DstIdWhitelistSlot2NET, CModem* modem, CDMRIPSC* network, CDisplay* display, bool duplex, CDMRLookup* lookup, int rssiMultiplier, int rssiOffset);
|
static void init(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, const std::vector<unsigned int>& prefixes, const std::vector<unsigned int>& SrcIdBlackList, const std::vector<unsigned int>& DstIdBlacklistSlot1RF, const std::vector<unsigned int>& DstIdWhitelistSlot1RF, const std::vector<unsigned int>& DstIdBlacklistSlot2RF, const std::vector<unsigned int>& DstIdWhitelistSlot2RF, const std::vector<unsigned int>& DstIdBlacklistSlot1NET, const std::vector<unsigned int>& DstIdWhitelistSlot1NET, const std::vector<unsigned int>& DstIdBlacklistSlot2NET, const std::vector<unsigned int>& DstIdWhitelistSlot2NET, CModem* modem, CDMRIPSC* network, CDisplay* display, bool duplex, CDMRLookup* lookup, int rssiMultiplier, int rssiOffset, unsigned int jitter);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
unsigned int m_slotNo;
|
unsigned int m_slotNo;
|
||||||
|
@ -103,6 +103,9 @@ private:
|
||||||
static int m_rssiMultiplier;
|
static int m_rssiMultiplier;
|
||||||
static int m_rssiOffset;
|
static int m_rssiOffset;
|
||||||
|
|
||||||
|
static unsigned int m_jitterTime;
|
||||||
|
static unsigned int m_jitterSlots;
|
||||||
|
|
||||||
static unsigned char* m_idle;
|
static unsigned char* m_idle;
|
||||||
|
|
||||||
static FLCO m_flco1;
|
static FLCO m_flco1;
|
||||||
|
|
|
@ -92,6 +92,7 @@ Debug=0
|
||||||
Enable=1
|
Enable=1
|
||||||
Address=44.131.4.1
|
Address=44.131.4.1
|
||||||
Port=62031
|
Port=62031
|
||||||
|
Jitter=300
|
||||||
# Local=3350
|
# Local=3350
|
||||||
Password=PASSWORD
|
Password=PASSWORD
|
||||||
RSSI=0
|
RSSI=0
|
||||||
|
|
|
@ -313,6 +313,7 @@ int CMMDVMHost::run()
|
||||||
unsigned int txHang = m_conf.getDMRTXHang();
|
unsigned int txHang = m_conf.getDMRTXHang();
|
||||||
int rssiMultiplier = m_conf.getModemRSSIMultiplier();
|
int rssiMultiplier = m_conf.getModemRSSIMultiplier();
|
||||||
int rssiOffset = m_conf.getModemRSSIOffset();
|
int rssiOffset = m_conf.getModemRSSIOffset();
|
||||||
|
unsigned int jitter = m_conf.getDMRNetworkJitter();
|
||||||
|
|
||||||
if (txHang > m_rfModeHang)
|
if (txHang > m_rfModeHang)
|
||||||
txHang = m_rfModeHang;
|
txHang = m_rfModeHang;
|
||||||
|
@ -356,7 +357,7 @@ int CMMDVMHost::run()
|
||||||
LogInfo(" RSSI Offset: %d", rssiOffset);
|
LogInfo(" RSSI Offset: %d", rssiOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
dmr = new CDMRControl(id, colorCode, callHang, selfOnly, prefixes, blackList,dstIDBlackListSlot1RF,dstIDWhiteListSlot1RF, dstIDBlackListSlot2RF, dstIDWhiteListSlot2RF, dstIDBlackListSlot1NET,dstIDWhiteListSlot1NET, dstIDBlackListSlot2NET, dstIDWhiteListSlot2NET, m_timeout, m_modem, m_dmrNetwork, m_display, m_duplex, lookupFile, rssiMultiplier, rssiOffset);
|
dmr = new CDMRControl(id, colorCode, callHang, selfOnly, prefixes, blackList,dstIDBlackListSlot1RF,dstIDWhiteListSlot1RF, dstIDBlackListSlot2RF, dstIDWhiteListSlot2RF, dstIDBlackListSlot1NET,dstIDWhiteListSlot1NET, dstIDBlackListSlot2NET, dstIDWhiteListSlot2NET, m_timeout, m_modem, m_dmrNetwork, m_display, m_duplex, lookupFile, rssiMultiplier, rssiOffset, jitter);
|
||||||
|
|
||||||
m_dmrTXTimer.setTimeout(txHang);
|
m_dmrTXTimer.setTimeout(txHang);
|
||||||
}
|
}
|
||||||
|
@ -816,6 +817,7 @@ bool CMMDVMHost::createDMRNetwork()
|
||||||
unsigned int id = m_conf.getDMRId();
|
unsigned int id = m_conf.getDMRId();
|
||||||
std::string password = m_conf.getDMRNetworkPassword();
|
std::string password = m_conf.getDMRNetworkPassword();
|
||||||
bool debug = m_conf.getDMRNetworkDebug();
|
bool debug = m_conf.getDMRNetworkDebug();
|
||||||
|
unsigned int jitter = m_conf.getDMRNetworkJitter();
|
||||||
bool slot1 = m_conf.getDMRNetworkSlot1();
|
bool slot1 = m_conf.getDMRNetworkSlot1();
|
||||||
bool slot2 = m_conf.getDMRNetworkSlot2();
|
bool slot2 = m_conf.getDMRNetworkSlot2();
|
||||||
bool rssi = m_conf.getDMRNetworkRSSI();
|
bool rssi = m_conf.getDMRNetworkRSSI();
|
||||||
|
@ -828,6 +830,7 @@ bool CMMDVMHost::createDMRNetwork()
|
||||||
LogInfo(" Local: %u", local);
|
LogInfo(" Local: %u", local);
|
||||||
else
|
else
|
||||||
LogInfo(" Local: random");
|
LogInfo(" Local: random");
|
||||||
|
LogInfo(" Jitter: %ums", jitter);
|
||||||
LogInfo(" Slot 1: %s", slot1 ? "enabled" : "disabled");
|
LogInfo(" Slot 1: %s", slot1 ? "enabled" : "disabled");
|
||||||
LogInfo(" Slot 2: %s", slot2 ? "enabled" : "disabled");
|
LogInfo(" Slot 2: %s", slot2 ? "enabled" : "disabled");
|
||||||
LogInfo(" RSSI: %s", rssi ? "enabled" : "disabled");
|
LogInfo(" RSSI: %s", rssi ? "enabled" : "disabled");
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
#include <clocale>
|
||||||
|
|
||||||
CNextion::CNextion(const std::string& callsign, unsigned int dmrid, const std::string& port, unsigned int brightness, bool displayClock, bool utc, unsigned int idleBrightness) :
|
CNextion::CNextion(const std::string& callsign, unsigned int dmrid, const std::string& port, unsigned int brightness, bool displayClock, bool utc, unsigned int idleBrightness) :
|
||||||
CDisplay(),
|
CDisplay(),
|
||||||
|
|
BIN
Nextion/MMDVM_2.8.HMI
Normal file
BIN
Nextion/MMDVM_2.8.HMI
Normal file
Binary file not shown.
BIN
Nextion/MMDVM_2.8.tft
Normal file
BIN
Nextion/MMDVM_2.8.tft
Normal file
Binary file not shown.
Loading…
Reference in a new issue