Flo's fixes and other bits.

This commit is contained in:
Jonathan Naylor
2017-05-06 17:17:34 +01:00
parent 9a1334e36d
commit 1ef304ae88
6 changed files with 74 additions and 66 deletions

View File

@@ -45,13 +45,13 @@ m_localAddress("127.0.0.1"),
m_localPort(62031U), m_localPort(62031U),
m_timeout(10U), m_timeout(10U),
m_debug(false), m_debug(false),
m_voiceEnabled(true),
m_voiceLanguage("en_GB"),
m_voiceDirectory(),
m_logDisplayLevel(0U), m_logDisplayLevel(0U),
m_logFileLevel(0U), m_logFileLevel(0U),
m_logFilePath(), m_logFilePath(),
m_logFileRoot(), m_logFileRoot(),
m_voiceEnabled(true),
m_voiceLanguage("en_GB"),
m_voiceDirectory(),
m_dmrNetwork1Enabled(false), m_dmrNetwork1Enabled(false),
m_dmrNetwork1Id(0U), m_dmrNetwork1Id(0U),
m_dmrNetwork1Address(), m_dmrNetwork1Address(),

12
Conf.h
View File

@@ -119,6 +119,9 @@ private:
unsigned int m_dmrNetwork1Local; unsigned int m_dmrNetwork1Local;
std::string m_dmrNetwork1Password; std::string m_dmrNetwork1Password;
bool m_dmrNetwork1Debug; bool m_dmrNetwork1Debug;
std::vector<CRewriteStruct> m_dmrNetwork1Rewrites;
bool m_dmrNetwork1PrivateSlot1;
bool m_dmrNetwork1PrivateSlot2;
bool m_dmrNetwork2Enabled; bool m_dmrNetwork2Enabled;
unsigned int m_dmrNetwork2Id; unsigned int m_dmrNetwork2Id;
@@ -127,9 +130,9 @@ private:
unsigned int m_dmrNetwork2Local; unsigned int m_dmrNetwork2Local;
std::string m_dmrNetwork2Password; std::string m_dmrNetwork2Password;
bool m_dmrNetwork2Debug; bool m_dmrNetwork2Debug;
std::vector<CRewriteStruct> m_dmrNetwork1Rewrites; std::vector<CRewriteStruct> m_dmrNetwork2Rewrites;
bool m_dmrNetwork1PrivateSlot1; bool m_dmrNetwork2PrivateSlot1;
bool m_dmrNetwork1PrivateSlot2; bool m_dmrNetwork2PrivateSlot2;
bool m_xlxNetworkEnabled; bool m_xlxNetworkEnabled;
unsigned int m_xlxNetworkId; unsigned int m_xlxNetworkId;
@@ -141,9 +144,6 @@ private:
unsigned int m_xlxNetworkTG; unsigned int m_xlxNetworkTG;
std::string m_xlxNetworkOptions; std::string m_xlxNetworkOptions;
bool m_xlxNetworkDebug; bool m_xlxNetworkDebug;
std::vector<CRewriteStruct> m_dmrNetwork2Rewrites;
bool m_dmrNetwork2PrivateSlot1;
bool m_dmrNetwork2PrivateSlot2;
}; };
#endif #endif

View File

@@ -19,7 +19,6 @@
#include "DMRGateway.h" #include "DMRGateway.h"
#include "Version.h" #include "Version.h"
#include "StopWatch.h" #include "StopWatch.h"
#include "Rewrite.h"
#include "Thread.h" #include "Thread.h"
#include "Voice.h" #include "Voice.h"
#include "Log.h" #include "Log.h"
@@ -122,6 +121,8 @@ m_xlxNetwork(NULL),
m_reflector(4000U), m_reflector(4000U),
m_xlxSlot(0U), m_xlxSlot(0U),
m_xlxTG(0U), m_xlxTG(0U),
m_rptRewrite(NULL),
m_xlxRewrite(NULL),
m_dmr1NetRewrites(), m_dmr1NetRewrites(),
m_dmr1RFRewrites(), m_dmr1RFRewrites(),
m_dmr2NetRewrites(), m_dmr2NetRewrites(),
@@ -260,6 +261,7 @@ int CDMRGateway::run()
return 1; return 1;
} }
if (m_conf.getXLXNetworkEnabled()) { if (m_conf.getXLXNetworkEnabled()) {
ret = createXLXNetwork(); ret = createXLXNetwork();
if (!ret) if (!ret)
@@ -268,9 +270,6 @@ int CDMRGateway::run()
unsigned int timeout = m_conf.getTimeout(); unsigned int timeout = m_conf.getTimeout();
CRewrite rptRewrite(XLX_SLOT, XLX_TG, m_xlxSlot, m_xlxTG);
CRewrite xlxRewrite(m_xlxSlot, m_xlxTG, XLX_SLOT, XLX_TG);
CVoice* voice = NULL; CVoice* voice = NULL;
if (m_conf.getVoiceEnabled() && m_xlxNetwork != NULL) { if (m_conf.getVoiceEnabled() && m_xlxNetwork != NULL) {
std::string language = m_conf.getVoiceLanguage(); std::string language = m_conf.getVoiceLanguage();
@@ -315,7 +314,7 @@ int CDMRGateway::run()
FLCO flco = data.getFLCO(); FLCO flco = data.getFLCO();
if (flco == FLCO_GROUP && slotNo == m_xlxSlot && dstId == m_xlxTG) { if (flco == FLCO_GROUP && slotNo == m_xlxSlot && dstId == m_xlxTG) {
xlxRewrite.process(data); m_xlxRewrite->process(data);
m_xlxNetwork->write(data); m_xlxNetwork->write(data);
status[slotNo] = DMRGWS_REFLECTOR; status[slotNo] = DMRGWS_REFLECTOR;
timer[slotNo]->start(); timer[slotNo]->start();
@@ -347,7 +346,7 @@ int CDMRGateway::run()
} }
} }
} }
} else if (flco = FLCO_USER_USER) { } else if (flco == FLCO_USER_USER) {
if (m_dmrNetwork1 != NULL && slotNo == 1U && m_dmr1PrivateSlot1) { if (m_dmrNetwork1 != NULL && slotNo == 1U && m_dmr1PrivateSlot1) {
m_dmrNetwork1->write(data); m_dmrNetwork1->write(data);
status[slotNo] = DMRGWS_NETWORK1; status[slotNo] = DMRGWS_NETWORK1;
@@ -418,7 +417,7 @@ int CDMRGateway::run()
if (status[m_xlxSlot] == DMRGWS_NONE || status[m_xlxSlot] == DMRGWS_REFLECTOR) { if (status[m_xlxSlot] == DMRGWS_NONE || status[m_xlxSlot] == DMRGWS_REFLECTOR) {
unsigned int slotNo = data.getSlotNo(); unsigned int slotNo = data.getSlotNo();
if (slotNo == XLX_SLOT) { if (slotNo == XLX_SLOT) {
rptRewrite.process(data); m_rptRewrite->process(data);
m_repeater->write(data); m_repeater->write(data);
status[m_xlxSlot] = DMRGWS_REFLECTOR; status[m_xlxSlot] = DMRGWS_REFLECTOR;
timer[m_xlxSlot]->start(); timer[m_xlxSlot]->start();
@@ -575,6 +574,9 @@ int CDMRGateway::run()
delete m_xlxNetwork; delete m_xlxNetwork;
} }
delete m_rptRewrite;
delete m_xlxRewrite;
delete timer[1U]; delete timer[1U];
delete timer[2U]; delete timer[2U];
@@ -628,7 +630,7 @@ bool CDMRGateway::createDMRNetwork1()
else else
LogInfo(" Local: random"); LogInfo(" Local: random");
m_dmrNetwork1 = new CDMRNetwork(address, port, local, id, password, "DMR", debug); m_dmrNetwork1 = new CDMRNetwork(address, port, local, id, password, "DMR1", debug);
std::string options = m_repeater->getOptions(); std::string options = m_repeater->getOptions();
if (!options.empty()) { if (!options.empty()) {
@@ -689,7 +691,7 @@ bool CDMRGateway::createDMRNetwork2()
else else
LogInfo(" Local: random"); LogInfo(" Local: random");
m_dmrNetwork2 = new CDMRNetwork(address, port, local, id, password, "DMR", debug); m_dmrNetwork2 = new CDMRNetwork(address, port, local, id, password, "DMR2", debug);
std::string options = m_repeater->getOptions(); std::string options = m_repeater->getOptions();
if (!options.empty()) { if (!options.empty()) {
@@ -776,5 +778,8 @@ bool CDMRGateway::createXLXNetwork()
LogInfo(" Slot: %u", m_xlxSlot); LogInfo(" Slot: %u", m_xlxSlot);
LogInfo(" TG: %u", m_xlxTG); LogInfo(" TG: %u", m_xlxTG);
m_rptRewrite = new CRewrite(XLX_SLOT, XLX_TG, m_xlxSlot, m_xlxTG);
m_xlxRewrite = new CRewrite(m_xlxSlot, m_xlxTG, XLX_SLOT, XLX_TG);
return true; return true;
} }

View File

@@ -44,6 +44,8 @@ private:
unsigned int m_reflector; unsigned int m_reflector;
unsigned int m_xlxSlot; unsigned int m_xlxSlot;
unsigned int m_xlxTG; unsigned int m_xlxTG;
CRewrite* m_rptRewrite;
CRewrite* m_xlxRewrite;
std::vector<CRewrite*> m_dmr1NetRewrites; std::vector<CRewrite*> m_dmr1NetRewrites;
std::vector<CRewrite*> m_dmr1RFRewrites; std::vector<CRewrite*> m_dmr1RFRewrites;
std::vector<CRewrite*> m_dmr2NetRewrites; std::vector<CRewrite*> m_dmr2NetRewrites;

View File

@@ -19,6 +19,6 @@
#if !defined(VERSION_H) #if !defined(VERSION_H)
#define VERSION_H #define VERSION_H
const char* VERSION = "20170506"; const char* VERSION = "20170506a";
#endif #endif

View File

@@ -56,8 +56,8 @@ m_stopWatch(),
m_seqNo(0U), m_seqNo(0U),
m_streamId(0U), m_streamId(0U),
m_sent(0U), m_sent(0U),
m_positions(NULL),
m_ambe(NULL), m_ambe(NULL),
m_positions(NULL),
m_data(), m_data(),
m_it() m_it()
{ {
@@ -111,8 +111,8 @@ bool CVoice::open()
m_ambe = new unsigned char[statStruct.st_size]; m_ambe = new unsigned char[statStruct.st_size];
::fread(m_ambe, 1U, statStruct.st_size, fpambe); size_t sizeRead = ::fread(m_ambe, 1U, statStruct.st_size, fpambe);
if (sizeRead != 0U) {
char buffer[80U]; char buffer[80U];
while (::fgets(buffer, 80, fpindx) != NULL) { while (::fgets(buffer, 80, fpindx) != NULL) {
char* p1 = ::strtok(buffer, "\t\r\n"); char* p1 = ::strtok(buffer, "\t\r\n");
@@ -162,6 +162,7 @@ bool CVoice::open()
} }
} }
} }
}
::fclose(fpindx); ::fclose(fpindx);
::fclose(fpambe); ::fclose(fpambe);