Change ovcm config to int value

This commit is contained in:
Shawn Chain 2019-11-16 23:06:26 +08:00
parent aa7ae2371c
commit 2f9595949a
8 changed files with 28 additions and 38 deletions

View file

@ -146,8 +146,7 @@ m_dmrSlot2TGWhiteList(),
m_dmrCallHang(10U), m_dmrCallHang(10U),
m_dmrTXHang(4U), m_dmrTXHang(4U),
m_dmrModeHang(10U), m_dmrModeHang(10U),
m_dmrOVCM(false), m_dmrOVCM(0),
m_dmrOVCMRX(false),
m_fusionEnabled(false), m_fusionEnabled(false),
m_fusionLowDeviation(false), m_fusionLowDeviation(false),
m_fusionRemoteGateway(false), m_fusionRemoteGateway(false),
@ -594,9 +593,7 @@ bool CConf::read()
else if (::strcmp(key, "ModeHang") == 0) else if (::strcmp(key, "ModeHang") == 0)
m_dmrModeHang = (unsigned int)::atoi(value); m_dmrModeHang = (unsigned int)::atoi(value);
else if (::strcmp(key, "OVCM") == 0) else if (::strcmp(key, "OVCM") == 0)
m_dmrOVCM = ::atoi(value) == 1; m_dmrOVCM = ::atoi(value);
else if (::strcmp(key, "OVCMRX") == 0)
m_dmrOVCMRX = ::atoi(value) == 1;
} else if (section == SECTION_FUSION) { } else if (section == SECTION_FUSION) {
if (::strcmp(key, "Enable") == 0) if (::strcmp(key, "Enable") == 0)
m_fusionEnabled = ::atoi(value) == 1; m_fusionEnabled = ::atoi(value) == 1;
@ -1258,16 +1255,11 @@ unsigned int CConf::getDMRModeHang() const
return m_dmrModeHang; return m_dmrModeHang;
} }
bool CConf::getDMROVCM() const int CConf::getDMROVCM() const
{ {
return m_dmrOVCM; return m_dmrOVCM;
} }
bool CConf::getDMROVCMRX() const
{
return m_dmrOVCMRX;
}
bool CConf::getFusionEnabled() const bool CConf::getFusionEnabled() const
{ {
return m_fusionEnabled; return m_fusionEnabled;

6
Conf.h
View file

@ -135,8 +135,7 @@ public:
unsigned int getDMRCallHang() const; unsigned int getDMRCallHang() const;
unsigned int getDMRTXHang() const; unsigned int getDMRTXHang() const;
unsigned int getDMRModeHang() const; unsigned int getDMRModeHang() const;
bool getDMROVCM() const; int getDMROVCM() const;
bool getDMROVCMRX() const;
// The System Fusion section // The System Fusion section
bool getFusionEnabled() const; bool getFusionEnabled() const;
@ -375,8 +374,7 @@ private:
unsigned int m_dmrCallHang; unsigned int m_dmrCallHang;
unsigned int m_dmrTXHang; unsigned int m_dmrTXHang;
unsigned int m_dmrModeHang; unsigned int m_dmrModeHang;
bool m_dmrOVCM; int m_dmrOVCM;
bool m_dmrOVCMRX;
bool m_fusionEnabled; bool m_fusionEnabled;
bool m_fusionLowDeviation; bool m_fusionLowDeviation;

View file

@ -21,7 +21,7 @@
#include <cassert> #include <cassert>
#include <algorithm> #include <algorithm>
CDMRControl::CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, bool embeddedLCOnly, bool dumpTAData, const std::vector<unsigned int>& prefixes, const std::vector<unsigned int>& blacklist, const std::vector<unsigned int>& whitelist, const std::vector<unsigned int>& slot1TGWhitelist, const std::vector<unsigned int>& slot2TGWhitelist, unsigned int timeout, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssi, unsigned int jitter, bool ovcm, bool ovcmRX) : CDMRControl::CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, bool embeddedLCOnly, bool dumpTAData, const std::vector<unsigned int>& prefixes, const std::vector<unsigned int>& blacklist, const std::vector<unsigned int>& whitelist, const std::vector<unsigned int>& slot1TGWhitelist, const std::vector<unsigned int>& slot2TGWhitelist, unsigned int timeout, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssi, unsigned int jitter, int ovcm) :
m_colorCode(colorCode), m_colorCode(colorCode),
m_modem(modem), m_modem(modem),
m_network(network), m_network(network),
@ -38,7 +38,7 @@ m_lookup(lookup)
// Load black and white lists to DMRAccessControl // Load black and white lists to DMRAccessControl
CDMRAccessControl::init(blacklist, whitelist, slot1TGWhitelist, slot2TGWhitelist, selfOnly, prefixes, id); CDMRAccessControl::init(blacklist, whitelist, slot1TGWhitelist, slot2TGWhitelist, selfOnly, prefixes, id);
CDMRSlot::init(colorCode, embeddedLCOnly, dumpTAData, callHang, modem, network, display, duplex, m_lookup, rssi, jitter, ovcm, ovcmRX); CDMRSlot::init(colorCode, embeddedLCOnly, dumpTAData, callHang, modem, network, display, duplex, m_lookup, rssi, jitter, ovcm);
} }
CDMRControl::~CDMRControl() CDMRControl::~CDMRControl()

View file

@ -31,7 +31,7 @@
class CDMRControl { class CDMRControl {
public: public:
CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, bool embeddedLCOnly, bool dumpTAData, const std::vector<unsigned int>& prefixes, const std::vector<unsigned int>& blacklist, const std::vector<unsigned int>& whitelist, const std::vector<unsigned int>& slot1TGWhitelist, const std::vector<unsigned int>& slot2TGWhitelist, unsigned int timeout, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssi, unsigned int jitter, bool ovcm, bool ovcmRX); CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, bool embeddedLCOnly, bool dumpTAData, const std::vector<unsigned int>& prefixes, const std::vector<unsigned int>& blacklist, const std::vector<unsigned int>& whitelist, const std::vector<unsigned int>& slot1TGWhitelist, const std::vector<unsigned int>& slot2TGWhitelist, unsigned int timeout, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssi, unsigned int jitter, int ovcm);
~CDMRControl(); ~CDMRControl();
bool processWakeup(const unsigned char* data); bool processWakeup(const unsigned char* data);

View file

@ -43,8 +43,7 @@ CDisplay* CDMRSlot::m_display = NULL;
bool CDMRSlot::m_duplex = true; bool CDMRSlot::m_duplex = true;
CDMRLookup* CDMRSlot::m_lookup = NULL; CDMRLookup* CDMRSlot::m_lookup = NULL;
unsigned int CDMRSlot::m_hangCount = 3U * 17U; unsigned int CDMRSlot::m_hangCount = 3U * 17U;
bool CDMRSlot::m_ovcm = false; int CDMRSlot::m_ovcm = 0;
bool CDMRSlot::m_ovcmRX = false;
CRSSIInterpolator* CDMRSlot::m_rssiMapper = NULL; CRSSIInterpolator* CDMRSlot::m_rssiMapper = NULL;
@ -234,7 +233,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len)
return false; return false;
} }
lc->setOVCM(m_ovcm); lc->setOVCM(m_ovcm & 0x02);
m_rfLC = lc; m_rfLC = lc;
// The standby LC data // The standby LC data
@ -439,7 +438,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len)
return false; return false;
// set the OVCM bit for the supported csbk // set the OVCM bit for the supported csbk
csbk.setOVCM(m_ovcm); csbk.setOVCM(m_ovcm & 0x02);
bool gi = csbk.getGI(); bool gi = csbk.getGI();
unsigned int srcId = csbk.getSrcId(); unsigned int srcId = csbk.getSrcId();
@ -790,7 +789,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len)
return false; return false;
} }
lc->setOVCM(m_ovcm); lc->setOVCM(m_ovcm & 0x02);
m_rfLC = lc; m_rfLC = lc;
// The standby LC data // The standby LC data
@ -1046,7 +1045,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
dmrData.getSrcId(), dmrData.getFLCO() == FLCO_GROUP ? "TG" : "", dmrData.getDstId(), dmrData.getSrcId(), dmrData.getFLCO() == FLCO_GROUP ? "TG" : "", dmrData.getDstId(),
srcId, flco == FLCO_GROUP ? "TG" : "", dstId); srcId, flco == FLCO_GROUP ? "TG" : "", dstId);
lc->setOVCM(m_ovcmRX); lc->setOVCM(m_ovcm & 0x01);
m_netLC = lc; m_netLC = lc;
// The standby LC data // The standby LC data
@ -1120,7 +1119,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
unsigned int dstId = lc->getDstId(); unsigned int dstId = lc->getDstId();
unsigned int srcId = lc->getSrcId(); unsigned int srcId = lc->getSrcId();
lc->setOVCM(m_ovcmRX); lc->setOVCM(m_ovcm & 0x01);
m_netLC = lc; m_netLC = lc;
m_lastFrameValid = false; m_lastFrameValid = false;
@ -1306,7 +1305,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
unsigned int dstId = lc->getDstId(); unsigned int dstId = lc->getDstId();
unsigned int srcId = lc->getSrcId(); unsigned int srcId = lc->getSrcId();
lc->setOVCM(m_ovcmRX); lc->setOVCM(m_ovcm & 0x01);
m_netLC = lc; m_netLC = lc;
// The standby LC data // The standby LC data
@ -1576,7 +1575,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
return; return;
// set the OVCM bit for the supported csbk // set the OVCM bit for the supported csbk
csbk.setOVCM(m_ovcmRX); csbk.setOVCM(m_ovcm & 0x01);
bool gi = csbk.getGI(); bool gi = csbk.getGI();
unsigned int srcId = csbk.getSrcId(); unsigned int srcId = csbk.getSrcId();
@ -1882,7 +1881,7 @@ void CDMRSlot::writeQueueNet(const unsigned char *data)
m_queue.addData(data, len); m_queue.addData(data, len);
} }
void CDMRSlot::init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData, unsigned int callHang, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter, bool ovcm, bool ovcmRX) void CDMRSlot::init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData, unsigned int callHang, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter, int ovcm)
{ {
assert(modem != NULL); assert(modem != NULL);
assert(display != NULL); assert(display != NULL);
@ -1899,7 +1898,6 @@ void CDMRSlot::init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData
m_lookup = lookup; m_lookup = lookup;
m_hangCount = callHang * 17U; m_hangCount = callHang * 17U;
m_ovcm = ovcm; m_ovcm = ovcm;
m_ovcmRX = ovcmRX;
m_rssiMapper = rssiMapper; m_rssiMapper = rssiMapper;

View file

@ -62,7 +62,7 @@ public:
void enable(bool enabled); void enable(bool enabled);
static void init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData, unsigned int callHang, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter, bool ovcm, bool ovcmRX); static void init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData, unsigned int callHang, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter, int ovcm);
private: private:
unsigned int m_slotNo; unsigned int m_slotNo;
@ -123,8 +123,7 @@ private:
static bool m_duplex; static bool m_duplex;
static CDMRLookup* m_lookup; static CDMRLookup* m_lookup;
static unsigned int m_hangCount; static unsigned int m_hangCount;
static bool m_ovcm; static int m_ovcm;
static bool m_ovcmRX;
static CRSSIInterpolator* m_rssiMapper; static CRSSIInterpolator* m_rssiMapper;

View file

@ -107,8 +107,8 @@ DumpTAData=1
CallHang=3 CallHang=3
TXHang=4 TXHang=4
# ModeHang=10 # ModeHang=10
# OVCM Values, 0=off, 1=rf_on, 2=net_on, 3=both_on
# OVCM=0 # OVCM=0
# OVCMRX=0
[System Fusion] [System Fusion]
Enable=1 Enable=1

View file

@ -445,8 +445,7 @@ int CMMDVMHost::run()
unsigned int jitter = m_conf.getDMRNetworkJitter(); unsigned int jitter = m_conf.getDMRNetworkJitter();
m_dmrRFModeHang = m_conf.getDMRModeHang(); m_dmrRFModeHang = m_conf.getDMRModeHang();
dmrBeacons = m_conf.getDMRBeacons(); dmrBeacons = m_conf.getDMRBeacons();
bool ovcm = m_conf.getDMROVCM(); int ovcm = m_conf.getDMROVCM();
bool ovcmRX = m_conf.getDMROVCMRX();
if (txHang > m_dmrRFModeHang) if (txHang > m_dmrRFModeHang)
txHang = m_dmrRFModeHang; txHang = m_dmrRFModeHang;
@ -479,8 +478,12 @@ int CMMDVMHost::run()
LogInfo(" Call Hang: %us", callHang); LogInfo(" Call Hang: %us", callHang);
LogInfo(" TX Hang: %us", txHang); LogInfo(" TX Hang: %us", txHang);
LogInfo(" Mode Hang: %us", m_dmrRFModeHang); LogInfo(" Mode Hang: %us", m_dmrRFModeHang);
LogInfo(" OVCM: %s", ovcm ? "on" : "off"); if (ovcm == 0)
LogInfo(" OVCMRX: %s", ovcmRX ? "on" : "off"); LogInfo(" OVCM: off");
else if (ovcm == 1)
LogInfo(" OVCM: on(rx)");
else
LogInfo(" OVCM: on");
switch (dmrBeacons) { switch (dmrBeacons) {
case DMR_BEACONS_NETWORK: { case DMR_BEACONS_NETWORK: {
@ -511,7 +514,7 @@ int CMMDVMHost::run()
break; break;
} }
m_dmr = new CDMRControl(id, colorCode, callHang, selfOnly, embeddedLCOnly, dumpTAData, prefixes, blackList, whiteList, slot1TGWhiteList, slot2TGWhiteList, m_timeout, m_modem, m_dmrNetwork, m_display, m_duplex, m_dmrLookup, rssi, jitter, ovcm, ovcmRX); m_dmr = new CDMRControl(id, colorCode, callHang, selfOnly, embeddedLCOnly, dumpTAData, prefixes, blackList, whiteList, slot1TGWhiteList, slot2TGWhiteList, m_timeout, m_modem, m_dmrNetwork, m_display, m_duplex, m_dmrLookup, rssi, jitter, ovcm);
m_dmrTXTimer.setTimeout(txHang); m_dmrTXTimer.setTimeout(txHang);
} }