Merge remote-tracking branch 'g4klx/master'

This commit is contained in:
Andy CA6JAU 2018-02-02 20:31:11 -03:00
commit 2f99807dd9
6 changed files with 33 additions and 18 deletions

View file

@ -153,6 +153,7 @@ m_dmrNetworkLocal(0U),
m_dmrNetworkPassword(),
m_dmrNetworkOptions(),
m_dmrNetworkDebug(false),
m_dmrNetworkJitterEnabled(true),
m_dmrNetworkJitter(300U),
m_dmrNetworkSlot1(true),
m_dmrNetworkSlot2(true),
@ -550,6 +551,8 @@ bool CConf::read()
m_dmrNetworkOptions = value;
else if (::strcmp(key, "Debug") == 0)
m_dmrNetworkDebug = ::atoi(value) == 1;
else if (::strcmp(key, "JitterEnabled") == 0)
m_dmrNetworkJitterEnabled = ::atoi(value) == 1;
else if (::strcmp(key, "Jitter") == 0)
m_dmrNetworkJitter = (unsigned int)::atoi(value);
else if (::strcmp(key, "Slot1") == 0)
@ -1161,6 +1164,11 @@ bool CConf::getDMRNetworkDebug() const
return m_dmrNetworkDebug;
}
bool CConf::getDMRNetworkJitterEnabled() const
{
return m_dmrNetworkJitterEnabled;
}
unsigned int CConf::getDMRNetworkJitter() const
{
return m_dmrNetworkJitter;

2
Conf.h
View file

@ -154,6 +154,7 @@ public:
std::string getDMRNetworkPassword() const;
std::string getDMRNetworkOptions() const;
bool getDMRNetworkDebug() const;
bool getDMRNetworkJitterEnabled() const;
unsigned int getDMRNetworkJitter() const;
bool getDMRNetworkSlot1() const;
bool getDMRNetworkSlot2() const;
@ -327,6 +328,7 @@ private:
std::string m_dmrNetworkPassword;
std::string m_dmrNetworkOptions;
bool m_dmrNetworkDebug;
bool m_dmrNetworkJitterEnabled;
unsigned int m_dmrNetworkJitter;
bool m_dmrNetworkSlot1;
bool m_dmrNetworkSlot2;

View file

@ -32,7 +32,7 @@ const unsigned int BUFFER_LENGTH = 500U;
const unsigned int HOMEBREW_DATA_PACKET_LENGTH = 55U;
CDMRNetwork::CDMRNetwork(const std::string& address, unsigned int port, unsigned int local, unsigned int id, const std::string& password, bool duplex, const char* version, bool debug, bool slot1, bool slot2, HW_TYPE hwType, unsigned int jitter) :
CDMRNetwork::CDMRNetwork(const std::string& address, unsigned int port, unsigned int local, unsigned int id, const std::string& password, bool duplex, const char* version, bool debug, bool slot1, bool slot2, HW_TYPE hwType, bool jitterEnabled, unsigned int jitter) :
m_address(),
m_port(port),
m_id(NULL),
@ -44,6 +44,7 @@ m_socket(local),
m_enabled(false),
m_slot1(slot1),
m_slot2(slot2),
m_jitterEnabled(jitterEnabled),
m_jitterBuffers(NULL),
m_hwType(hwType),
m_status(WAITING_CONNECT),
@ -498,23 +499,23 @@ void CDMRNetwork::receiveData(const unsigned char* data, unsigned int length)
if (slotNo == 2U && !m_slot2)
return;
m_jitterBuffers[slotNo]->appendData(data, length);
/*
unsigned char dataType = data[15U] & 0x3FU;
if (dataType == (0x20U | DT_CSBK) ||
dataType == (0x20U | DT_DATA_HEADER) ||
dataType == (0x20U | DT_RATE_1_DATA) ||
dataType == (0x20U | DT_RATE_34_DATA) ||
dataType == (0x20U | DT_RATE_12_DATA)) {
// Data & CSBK frames
m_jitterBuffers[slotNo]->appendData(data, length);
if (m_jitterEnabled) {
unsigned char dataType = data[15U] & 0x3FU;
if (dataType == (0x20U | DT_CSBK) ||
dataType == (0x20U | DT_DATA_HEADER) ||
dataType == (0x20U | DT_RATE_1_DATA) ||
dataType == (0x20U | DT_RATE_34_DATA) ||
dataType == (0x20U | DT_RATE_12_DATA)) {
// Data & CSBK frames
m_jitterBuffers[slotNo]->appendData(data, length);
} else {
// Voice frames
unsigned char seqNo = data[4U];
m_jitterBuffers[slotNo]->addData(data, length, seqNo);
}
} else {
// Voice frames
unsigned char seqNo = data[4U];
m_jitterBuffers[slotNo]->addData(data, length, seqNo);
m_jitterBuffers[slotNo]->appendData(data, length);
}
*/
}
bool CDMRNetwork::writeLogin()

View file

@ -31,7 +31,7 @@
class CDMRNetwork
{
public:
CDMRNetwork(const std::string& address, unsigned int port, unsigned int local, unsigned int id, const std::string& password, bool duplex, const char* version, bool debug, bool slot1, bool slot2, HW_TYPE hwType, unsigned int jitter);
CDMRNetwork(const std::string& address, unsigned int port, unsigned int local, unsigned int id, const std::string& password, bool duplex, const char* version, bool debug, bool slot1, bool slot2, HW_TYPE hwType, bool jitterEnabled, unsigned int jitter);
~CDMRNetwork();
void setOptions(const std::string& options);
@ -70,6 +70,7 @@ private:
bool m_enabled;
bool m_slot1;
bool m_slot2;
bool m_jitterEnabled;
CJitterBuffer** m_jitterBuffers;
HW_TYPE m_hwType;

View file

@ -119,6 +119,7 @@ Debug=0
Enable=1
Address=44.131.4.1
Port=62031
JitterEnabled=1
Jitter=500
# Local=62032
Password=PASSWORD

View file

@ -944,6 +944,7 @@ bool CMMDVMHost::createDMRNetwork()
unsigned int id = m_conf.getDMRId();
std::string password = m_conf.getDMRNetworkPassword();
bool debug = m_conf.getDMRNetworkDebug();
bool jitterEnabled = m_conf.getDMRNetworkJitterEnabled();
unsigned int jitter = m_conf.getDMRNetworkJitter();
bool slot1 = m_conf.getDMRNetworkSlot1();
bool slot2 = m_conf.getDMRNetworkSlot2();
@ -957,12 +958,13 @@ bool CMMDVMHost::createDMRNetwork()
LogInfo(" Local: %u", local);
else
LogInfo(" Local: random");
LogInfo(" Jitter Buffer: %s", jitterEnabled ? "enabled" : "disabled");
LogInfo(" Jitter: %ums", jitter);
LogInfo(" Slot 1: %s", slot1 ? "enabled" : "disabled");
LogInfo(" Slot 2: %s", slot2 ? "enabled" : "disabled");
LogInfo(" Mode Hang: %us", m_dmrNetModeHang);
m_dmrNetwork = new CDMRNetwork(address, port, local, id, password, m_duplex, VERSION, debug, slot1, slot2, hwType, jitter);
m_dmrNetwork = new CDMRNetwork(address, port, local, id, password, m_duplex, VERSION, debug, slot1, slot2, hwType, jitterEnabled, jitter);
std::string options = m_conf.getDMRNetworkOptions();
if (!options.empty()) {