Compare commits
5 Commits
master
...
dmr_failov
Author | SHA1 | Date |
---|---|---|
Jonathan Naylor | 954d8d29ff | |
Jonathan Naylor | c03902c04b | |
Jonathan Naylor | e1b5194ac4 | |
Jonathan Naylor | d80653f293 | |
Jonathan Naylor | 72bae08c87 |
80
Conf.cpp
80
Conf.cpp
|
@ -126,10 +126,15 @@ m_dstarGatewayPort(0U),
|
|||
m_dstarLocalPort(0U),
|
||||
m_dstarNetworkDebug(false),
|
||||
m_dmrNetworkEnabled(false),
|
||||
m_dmrNetworkAddress(),
|
||||
m_dmrNetworkPort(0U),
|
||||
m_dmrNetworkLocal(0U),
|
||||
m_dmrNetworkPassword(),
|
||||
m_dmrNetworkFailover(false),
|
||||
m_dmrNetworkPrimaryAddress(),
|
||||
m_dmrNetworkPrimaryPort(0U),
|
||||
m_dmrNetworkPrimaryLocal(0U),
|
||||
m_dmrNetworkPrimaryPassword(),
|
||||
m_dmrNetworkSecondaryAddress(),
|
||||
m_dmrNetworkSecondaryPort(0U),
|
||||
m_dmrNetworkSecondaryLocal(0U),
|
||||
m_dmrNetworkSecondaryPassword(),
|
||||
m_dmrNetworkOptions(),
|
||||
m_dmrNetworkDebug(false),
|
||||
m_dmrNetworkJitter(300U),
|
||||
|
@ -462,14 +467,24 @@ bool CConf::read()
|
|||
} else if (section == SECTION_DMR_NETWORK) {
|
||||
if (::strcmp(key, "Enable") == 0)
|
||||
m_dmrNetworkEnabled = ::atoi(value) == 1;
|
||||
else if (::strcmp(key, "Address") == 0)
|
||||
m_dmrNetworkAddress = value;
|
||||
else if (::strcmp(key, "Port") == 0)
|
||||
m_dmrNetworkPort = (unsigned int)::atoi(value);
|
||||
else if (::strcmp(key, "Local") == 0)
|
||||
m_dmrNetworkLocal = (unsigned int)::atoi(value);
|
||||
else if (::strcmp(key, "Password") == 0)
|
||||
m_dmrNetworkPassword = value;
|
||||
else if (::strcmp(key, "Failover") == 0)
|
||||
m_dmrNetworkFailover = ::atoi(value) == 1;
|
||||
else if (::strcmp(key, "Address") == 0 || ::strcmp(key, "PrimaryAddress") == 0)
|
||||
m_dmrNetworkPrimaryAddress = value;
|
||||
else if (::strcmp(key, "Port") == 0 || ::strcmp(key, "PrimaryPort") == 0)
|
||||
m_dmrNetworkPrimaryPort = (unsigned int)::atoi(value);
|
||||
else if (::strcmp(key, "Local") == 0 || ::strcmp(key, "PrimaryLocal") == 0)
|
||||
m_dmrNetworkPrimaryLocal = (unsigned int)::atoi(value);
|
||||
else if (::strcmp(key, "Password") == 0 || ::strcmp(key, "PrimaryPassword") == 0)
|
||||
m_dmrNetworkPrimaryPassword = value;
|
||||
else if (::strcmp(key, "SecondaryAddress") == 0)
|
||||
m_dmrNetworkSecondaryAddress = value;
|
||||
else if (::strcmp(key, "SecondaryPort") == 0)
|
||||
m_dmrNetworkSecondaryPort = (unsigned int)::atoi(value);
|
||||
else if (::strcmp(key, "SecondaryLocal") == 0)
|
||||
m_dmrNetworkSecondaryLocal = (unsigned int)::atoi(value);
|
||||
else if (::strcmp(key, "SecondaryPassword") == 0)
|
||||
m_dmrNetworkSecondaryPassword = value;
|
||||
else if (::strcmp(key, "Options") == 0)
|
||||
m_dmrNetworkOptions = value;
|
||||
else if (::strcmp(key, "Debug") == 0)
|
||||
|
@ -935,24 +950,49 @@ bool CConf::getDMRNetworkEnabled() const
|
|||
return m_dmrNetworkEnabled;
|
||||
}
|
||||
|
||||
std::string CConf::getDMRNetworkAddress() const
|
||||
bool CConf::getDMRNetworkFailover() const
|
||||
{
|
||||
return m_dmrNetworkAddress;
|
||||
return m_dmrNetworkFailover;
|
||||
}
|
||||
|
||||
unsigned int CConf::getDMRNetworkPort() const
|
||||
std::string CConf::getDMRNetworkPrimaryAddress() const
|
||||
{
|
||||
return m_dmrNetworkPort;
|
||||
return m_dmrNetworkPrimaryAddress;
|
||||
}
|
||||
|
||||
unsigned int CConf::getDMRNetworkLocal() const
|
||||
unsigned int CConf::getDMRNetworkPrimaryPort() const
|
||||
{
|
||||
return m_dmrNetworkLocal;
|
||||
return m_dmrNetworkPrimaryPort;
|
||||
}
|
||||
|
||||
std::string CConf::getDMRNetworkPassword() const
|
||||
unsigned int CConf::getDMRNetworkPrimaryLocal() const
|
||||
{
|
||||
return m_dmrNetworkPassword;
|
||||
return m_dmrNetworkPrimaryLocal;
|
||||
}
|
||||
|
||||
std::string CConf::getDMRNetworkPrimaryPassword() const
|
||||
{
|
||||
return m_dmrNetworkPrimaryPassword;
|
||||
}
|
||||
|
||||
std::string CConf::getDMRNetworkSecondaryAddress() const
|
||||
{
|
||||
return m_dmrNetworkSecondaryAddress;
|
||||
}
|
||||
|
||||
unsigned int CConf::getDMRNetworkSecondaryPort() const
|
||||
{
|
||||
return m_dmrNetworkSecondaryPort;
|
||||
}
|
||||
|
||||
unsigned int CConf::getDMRNetworkSecondaryLocal() const
|
||||
{
|
||||
return m_dmrNetworkSecondaryLocal;
|
||||
}
|
||||
|
||||
std::string CConf::getDMRNetworkSecondaryPassword() const
|
||||
{
|
||||
return m_dmrNetworkSecondaryPassword;
|
||||
}
|
||||
|
||||
std::string CConf::getDMRNetworkOptions() const
|
||||
|
|
26
Conf.h
26
Conf.h
|
@ -127,10 +127,15 @@ public:
|
|||
|
||||
// The DMR Network section
|
||||
bool getDMRNetworkEnabled() const;
|
||||
std::string getDMRNetworkAddress() const;
|
||||
unsigned int getDMRNetworkPort() const;
|
||||
unsigned int getDMRNetworkLocal() const;
|
||||
std::string getDMRNetworkPassword() const;
|
||||
bool getDMRNetworkFailover() const;
|
||||
std::string getDMRNetworkPrimaryAddress() const;
|
||||
unsigned int getDMRNetworkPrimaryPort() const;
|
||||
unsigned int getDMRNetworkPrimaryLocal() const;
|
||||
std::string getDMRNetworkPrimaryPassword() const;
|
||||
std::string getDMRNetworkSecondaryAddress() const;
|
||||
unsigned int getDMRNetworkSecondaryPort() const;
|
||||
unsigned int getDMRNetworkSecondaryLocal() const;
|
||||
std::string getDMRNetworkSecondaryPassword() const;
|
||||
std::string getDMRNetworkOptions() const;
|
||||
bool getDMRNetworkDebug() const;
|
||||
unsigned int getDMRNetworkJitter() const;
|
||||
|
@ -275,10 +280,15 @@ private:
|
|||
bool m_dstarNetworkDebug;
|
||||
|
||||
bool m_dmrNetworkEnabled;
|
||||
std::string m_dmrNetworkAddress;
|
||||
unsigned int m_dmrNetworkPort;
|
||||
unsigned int m_dmrNetworkLocal;
|
||||
std::string m_dmrNetworkPassword;
|
||||
bool m_dmrNetworkFailover;
|
||||
std::string m_dmrNetworkPrimaryAddress;
|
||||
unsigned int m_dmrNetworkPrimaryPort;
|
||||
unsigned int m_dmrNetworkPrimaryLocal;
|
||||
std::string m_dmrNetworkPrimaryPassword;
|
||||
std::string m_dmrNetworkSecondaryAddress;
|
||||
unsigned int m_dmrNetworkSecondaryPort;
|
||||
unsigned int m_dmrNetworkSecondaryLocal;
|
||||
std::string m_dmrNetworkSecondaryPassword;
|
||||
std::string m_dmrNetworkOptions;
|
||||
bool m_dmrNetworkDebug;
|
||||
unsigned int m_dmrNetworkJitter;
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#include <cassert>
|
||||
#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) :
|
||||
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, IDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssi, unsigned int jitter) :
|
||||
m_id(id),
|
||||
m_colorCode(colorCode),
|
||||
m_modem(modem),
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
class CDMRControl {
|
||||
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);
|
||||
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, IDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssi, unsigned int jitter);
|
||||
~CDMRControl();
|
||||
|
||||
bool processWakeup(const unsigned char* data);
|
||||
|
@ -48,7 +48,7 @@ private:
|
|||
unsigned int m_id;
|
||||
unsigned int m_colorCode;
|
||||
CModem* m_modem;
|
||||
CDMRNetwork* m_network;
|
||||
IDMRNetwork* m_network;
|
||||
CDMRSlot m_slot1;
|
||||
CDMRSlot m_slot2;
|
||||
CDMRLookup* m_lookup;
|
||||
|
|
|
@ -30,6 +30,9 @@ const unsigned int BUFFER_LENGTH = 500U;
|
|||
|
||||
const unsigned int HOMEBREW_DATA_PACKET_LENGTH = 55U;
|
||||
|
||||
IDMRNetwork::~IDMRNetwork()
|
||||
{
|
||||
}
|
||||
|
||||
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) :
|
||||
m_address(),
|
||||
|
@ -570,3 +573,8 @@ bool CDMRNetwork::write(const unsigned char* data, unsigned int length)
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CDMRNetwork::isRunning() const
|
||||
{
|
||||
return m_status == RUNNING;
|
||||
}
|
||||
|
|
50
DMRNetwork.h
50
DMRNetwork.h
|
@ -28,29 +28,55 @@
|
|||
#include <string>
|
||||
#include <cstdint>
|
||||
|
||||
class CDMRNetwork
|
||||
{
|
||||
class IDMRNetwork {
|
||||
public:
|
||||
virtual ~IDMRNetwork() = 0;
|
||||
|
||||
virtual void setOptions(const std::string& options) = 0;
|
||||
|
||||
virtual void setConfig(const std::string& callsign, unsigned int rxFrequency, unsigned int txFrequency, unsigned int power, unsigned int colorCode, float latitude, float longitude, int height, const std::string& location, const std::string& description, const std::string& url) = 0;
|
||||
|
||||
virtual bool open() = 0;
|
||||
|
||||
virtual void enable(bool enabled) = 0;
|
||||
|
||||
virtual bool read(CDMRData& data) = 0;
|
||||
|
||||
virtual bool write(const CDMRData& data) = 0;
|
||||
|
||||
virtual bool wantsBeacon() = 0;
|
||||
|
||||
virtual void clock(unsigned int ms) = 0;
|
||||
|
||||
virtual void close() = 0;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class CDMRNetwork : public IDMRNetwork {
|
||||
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);
|
||||
~CDMRNetwork();
|
||||
virtual ~CDMRNetwork();
|
||||
|
||||
void setOptions(const std::string& options);
|
||||
virtual void setOptions(const std::string& options);
|
||||
|
||||
void setConfig(const std::string& callsign, unsigned int rxFrequency, unsigned int txFrequency, unsigned int power, unsigned int colorCode, float latitude, float longitude, int height, const std::string& location, const std::string& description, const std::string& url);
|
||||
virtual void setConfig(const std::string& callsign, unsigned int rxFrequency, unsigned int txFrequency, unsigned int power, unsigned int colorCode, float latitude, float longitude, int height, const std::string& location, const std::string& description, const std::string& url);
|
||||
|
||||
bool open();
|
||||
virtual bool open();
|
||||
|
||||
void enable(bool enabled);
|
||||
virtual void enable(bool enabled);
|
||||
|
||||
bool read(CDMRData& data);
|
||||
virtual bool read(CDMRData& data);
|
||||
|
||||
bool write(const CDMRData& data);
|
||||
virtual bool write(const CDMRData& data);
|
||||
|
||||
bool wantsBeacon();
|
||||
virtual bool wantsBeacon();
|
||||
|
||||
void clock(unsigned int ms);
|
||||
virtual bool isRunning() const;
|
||||
|
||||
void close();
|
||||
virtual void clock(unsigned int ms);
|
||||
|
||||
virtual void close();
|
||||
|
||||
private:
|
||||
in_addr m_address;
|
||||
|
|
|
@ -0,0 +1,174 @@
|
|||
/*
|
||||
* Copyright (C) 2017 by Jonathan Naylor G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include "DMRNetworkManager.h"
|
||||
|
||||
#include "Log.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cassert>
|
||||
|
||||
CDMRNetworkManager::CDMRNetworkManager(CDMRNetwork* primary, CDMRNetwork* secondary) :
|
||||
m_primary(primary),
|
||||
m_secondary(secondary),
|
||||
m_state(DMRNS_NONE),
|
||||
m_poll(1000U, 300U)
|
||||
{
|
||||
assert(primary != NULL);
|
||||
assert(secondary != NULL);
|
||||
}
|
||||
|
||||
CDMRNetworkManager::~CDMRNetworkManager()
|
||||
{
|
||||
delete m_primary;
|
||||
delete m_secondary;
|
||||
}
|
||||
|
||||
void CDMRNetworkManager::setOptions(const std::string& options)
|
||||
{
|
||||
m_primary->setOptions(options);
|
||||
m_secondary->setOptions(options);
|
||||
}
|
||||
|
||||
void CDMRNetworkManager::setConfig(const std::string& callsign, unsigned int rxFrequency, unsigned int txFrequency, unsigned int power, unsigned int colorCode, float latitude, float longitude, int height, const std::string& location, const std::string& description, const std::string& url)
|
||||
{
|
||||
m_primary->setConfig(callsign, rxFrequency, txFrequency, power, colorCode, latitude, longitude, height, location, description, url);
|
||||
m_secondary->setConfig(callsign, rxFrequency, txFrequency, power, colorCode, latitude, longitude, height, location, description, url);
|
||||
}
|
||||
|
||||
bool CDMRNetworkManager::open()
|
||||
{
|
||||
LogMessage("DMR, Using Primary DMR Network");
|
||||
|
||||
bool ret = m_primary->open();
|
||||
if (!ret)
|
||||
return false;
|
||||
|
||||
m_state = DMRNS_PRIMARY_RUNNING;
|
||||
|
||||
m_poll.start();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void CDMRNetworkManager::enable(bool enabled)
|
||||
{
|
||||
m_primary->enable(enabled);
|
||||
m_secondary->enable(enabled);
|
||||
}
|
||||
|
||||
bool CDMRNetworkManager::read(CDMRData& data)
|
||||
{
|
||||
switch (m_state) {
|
||||
case DMRNS_PRIMARY_RUNNING: {
|
||||
m_secondary->read(data);
|
||||
bool ret = m_primary->read(data);
|
||||
if (ret)
|
||||
m_poll.start();
|
||||
return ret;
|
||||
}
|
||||
|
||||
case DMRNS_SECONDARY_RUNNING: {
|
||||
m_primary->read(data);
|
||||
bool ret = m_secondary->read(data);
|
||||
if (ret)
|
||||
m_poll.start();
|
||||
return ret;
|
||||
}
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool CDMRNetworkManager::write(const CDMRData& data)
|
||||
{
|
||||
switch (m_state) {
|
||||
case DMRNS_PRIMARY_RUNNING:
|
||||
return m_primary->write(data);
|
||||
|
||||
case DMRNS_SECONDARY_RUNNING:
|
||||
return m_secondary->write(data);
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void CDMRNetworkManager::close()
|
||||
{
|
||||
switch (m_state) {
|
||||
case DMRNS_PRIMARY_RUNNING:
|
||||
m_primary->close();
|
||||
break;
|
||||
|
||||
case DMRNS_SECONDARY_RUNNING:
|
||||
m_secondary->close();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CDMRNetworkManager::clock(unsigned int ms)
|
||||
{
|
||||
m_poll.clock(ms);
|
||||
if (m_poll.isRunning() && m_poll.hasExpired()) {
|
||||
switch (m_state) {
|
||||
case DMRNS_PRIMARY_RUNNING: {
|
||||
bool ret = m_primary->isRunning();
|
||||
if (!ret) {
|
||||
LogMessage("DMR, Using Secondary DMR Network");
|
||||
m_secondary->open();
|
||||
m_state = DMRNS_SECONDARY_RUNNING;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case DMRNS_SECONDARY_RUNNING: {
|
||||
bool ret = m_primary->isRunning();
|
||||
if (ret) {
|
||||
LogMessage("DMR, Using Primary DMR Network");
|
||||
m_secondary->close();
|
||||
m_state = DMRNS_PRIMARY_RUNNING;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
m_poll.start();
|
||||
}
|
||||
}
|
||||
|
||||
bool CDMRNetworkManager::wantsBeacon()
|
||||
{
|
||||
switch (m_state) {
|
||||
case DMRNS_PRIMARY_RUNNING:
|
||||
return m_primary->wantsBeacon();
|
||||
|
||||
case DMRNS_SECONDARY_RUNNING:
|
||||
return m_secondary->wantsBeacon();
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* Copyright (C) 2017 by Jonathan Naylor G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#if !defined(DMRNetworkManager_H)
|
||||
#define DMRNetworkManager_H
|
||||
|
||||
#include "DMRNetwork.h"
|
||||
#include "Timer.h"
|
||||
#include "DMRData.h"
|
||||
#include "Defines.h"
|
||||
|
||||
#include <string>
|
||||
#include <cstdint>
|
||||
|
||||
enum DMR_NETWORK_STATE {
|
||||
DMRNS_NONE,
|
||||
DMRNS_PRIMARY_RUNNING,
|
||||
DMRNS_SECONDARY_RUNNING
|
||||
};
|
||||
|
||||
class CDMRNetworkManager : public IDMRNetwork {
|
||||
public:
|
||||
CDMRNetworkManager(CDMRNetwork* primary, CDMRNetwork* secondary);
|
||||
virtual ~CDMRNetworkManager();
|
||||
|
||||
virtual void setOptions(const std::string& options);
|
||||
|
||||
virtual void setConfig(const std::string& callsign, unsigned int rxFrequency, unsigned int txFrequency, unsigned int power, unsigned int colorCode, float latitude, float longitude, int height, const std::string& location, const std::string& description, const std::string& url);
|
||||
|
||||
virtual bool open();
|
||||
|
||||
virtual void enable(bool enabled);
|
||||
|
||||
virtual bool read(CDMRData& data);
|
||||
|
||||
virtual bool write(const CDMRData& data);
|
||||
|
||||
virtual bool wantsBeacon();
|
||||
|
||||
virtual void clock(unsigned int ms);
|
||||
|
||||
virtual void close();
|
||||
|
||||
private:
|
||||
CDMRNetwork* m_primary;
|
||||
CDMRNetwork* m_secondary;
|
||||
DMR_NETWORK_STATE m_state;
|
||||
CTimer m_poll;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -35,7 +35,7 @@ bool CDMRSlot::m_embeddedLCOnly = false;
|
|||
bool CDMRSlot::m_dumpTAData = true;
|
||||
|
||||
CModem* CDMRSlot::m_modem = NULL;
|
||||
CDMRNetwork* CDMRSlot::m_network = NULL;
|
||||
IDMRNetwork* CDMRSlot::m_network = NULL;
|
||||
CDisplay* CDMRSlot::m_display = NULL;
|
||||
bool CDMRSlot::m_duplex = true;
|
||||
CDMRLookup* CDMRSlot::m_lookup = NULL;
|
||||
|
@ -1683,7 +1683,7 @@ void CDMRSlot::writeQueueNet(const unsigned char *data)
|
|||
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)
|
||||
void CDMRSlot::init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData, unsigned int callHang, CModem* modem, IDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter)
|
||||
{
|
||||
assert(modem != NULL);
|
||||
assert(display != NULL);
|
||||
|
|
|
@ -50,7 +50,7 @@ public:
|
|||
|
||||
void clock();
|
||||
|
||||
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);
|
||||
static void init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData, unsigned int callHang, CModem* modem, IDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter);
|
||||
|
||||
private:
|
||||
unsigned int m_slotNo;
|
||||
|
@ -106,7 +106,7 @@ private:
|
|||
static bool m_dumpTAData;
|
||||
|
||||
static CModem* m_modem;
|
||||
static CDMRNetwork* m_network;
|
||||
static IDMRNetwork* m_network;
|
||||
static CDisplay* m_display;
|
||||
static bool m_duplex;
|
||||
static CDMRLookup* m_lookup;
|
||||
|
|
13
MMDVM.ini
13
MMDVM.ini
|
@ -98,11 +98,16 @@ Debug=0
|
|||
|
||||
[DMR Network]
|
||||
Enable=1
|
||||
Address=44.131.4.1
|
||||
Port=62031
|
||||
Failover=0
|
||||
PrimaryAddress=44.131.4.1
|
||||
PrimaryPort=62031
|
||||
# PrimaryLocal=3350
|
||||
PrimaryPassword=PASSWORD
|
||||
# SecondaryAddress=44.131.4.1
|
||||
# SecondaryPort=62031
|
||||
# SecondaryLocal=3350
|
||||
# SecondaryPassword=PASSWORD
|
||||
Jitter=300
|
||||
# Local=3350
|
||||
Password=PASSWORD
|
||||
# Options=
|
||||
Slot1=1
|
||||
Slot2=1
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
#include "RSSIInterpolator.h"
|
||||
#include "SerialController.h"
|
||||
#include "ModemSerialPort.h"
|
||||
#include "DMRNetworkManager.h"
|
||||
#include "DMRNetwork.h"
|
||||
#include "Version.h"
|
||||
#include "StopWatch.h"
|
||||
#include "Defines.h"
|
||||
|
@ -873,29 +875,61 @@ bool CMMDVMHost::createDStarNetwork()
|
|||
|
||||
bool CMMDVMHost::createDMRNetwork()
|
||||
{
|
||||
std::string address = m_conf.getDMRNetworkAddress();
|
||||
unsigned int port = m_conf.getDMRNetworkPort();
|
||||
unsigned int local = m_conf.getDMRNetworkLocal();
|
||||
unsigned int id = m_conf.getDMRId();
|
||||
std::string password = m_conf.getDMRNetworkPassword();
|
||||
bool debug = m_conf.getDMRNetworkDebug();
|
||||
unsigned int jitter = m_conf.getDMRNetworkJitter();
|
||||
bool slot1 = m_conf.getDMRNetworkSlot1();
|
||||
bool slot2 = m_conf.getDMRNetworkSlot2();
|
||||
HW_TYPE hwType = m_modem->getHWType();
|
||||
std::string primaryAddress = m_conf.getDMRNetworkPrimaryAddress();
|
||||
bool failover = m_conf.getDMRNetworkFailover();
|
||||
unsigned int primaryPort = m_conf.getDMRNetworkPrimaryPort();
|
||||
unsigned int primaryLocal = m_conf.getDMRNetworkPrimaryLocal();
|
||||
std::string primaryPassword = m_conf.getDMRNetworkPrimaryPassword();
|
||||
std::string secondaryAddress = m_conf.getDMRNetworkSecondaryAddress();
|
||||
unsigned int secondaryPort = m_conf.getDMRNetworkSecondaryPort();
|
||||
unsigned int secondaryLocal = m_conf.getDMRNetworkSecondaryLocal();
|
||||
std::string secondaryPassword = m_conf.getDMRNetworkSecondaryPassword();
|
||||
unsigned int id = m_conf.getDMRId();
|
||||
bool debug = m_conf.getDMRNetworkDebug();
|
||||
unsigned int jitter = m_conf.getDMRNetworkJitter();
|
||||
bool slot1 = m_conf.getDMRNetworkSlot1();
|
||||
bool slot2 = m_conf.getDMRNetworkSlot2();
|
||||
HW_TYPE hwType = m_modem->getHWType();
|
||||
|
||||
LogInfo("DMR Network Parameters");
|
||||
LogInfo(" Address: %s", address.c_str());
|
||||
LogInfo(" Port: %u", port);
|
||||
if (local > 0U)
|
||||
LogInfo(" Local: %u", local);
|
||||
else
|
||||
LogInfo(" Local: random");
|
||||
if (failover) {
|
||||
LogInfo(" Failover: yes");
|
||||
|
||||
LogInfo(" Primary Address: %s", primaryAddress.c_str());
|
||||
LogInfo(" Primary Port: %u", primaryPort);
|
||||
if (primaryLocal > 0U)
|
||||
LogInfo(" Primary Local: %u", primaryLocal);
|
||||
else
|
||||
LogInfo(" Primary Local: random");
|
||||
|
||||
LogInfo(" Secondary Address: %s", secondaryAddress.c_str());
|
||||
LogInfo(" Secondary Port: %u", secondaryPort);
|
||||
if (secondaryLocal > 0U)
|
||||
LogInfo(" Secondary Local: %u", secondaryLocal);
|
||||
else
|
||||
LogInfo(" Secondary Local: random");
|
||||
} else {
|
||||
LogInfo(" Failover: no");
|
||||
LogInfo(" Address: %s", primaryAddress.c_str());
|
||||
LogInfo(" Port: %u", primaryPort);
|
||||
if (primaryLocal > 0U)
|
||||
LogInfo(" Local: %u", primaryLocal);
|
||||
else
|
||||
LogInfo(" Local: random");
|
||||
}
|
||||
|
||||
LogInfo(" Jitter: %ums", jitter);
|
||||
LogInfo(" Slot 1: %s", slot1 ? "enabled" : "disabled");
|
||||
LogInfo(" Slot 2: %s", slot2 ? "enabled" : "disabled");
|
||||
|
||||
m_dmrNetwork = new CDMRNetwork(address, port, local, id, password, m_duplex, VERSION, debug, slot1, slot2, hwType);
|
||||
if (failover) {
|
||||
CDMRNetwork* primary = new CDMRNetwork(primaryAddress, primaryPort, primaryLocal, id, primaryPassword, m_duplex, VERSION, debug, slot1, slot2, hwType);
|
||||
CDMRNetwork* secondary = new CDMRNetwork(secondaryAddress, secondaryPort, secondaryLocal, id, secondaryPassword, m_duplex, VERSION, debug, slot1, slot2, hwType);
|
||||
|
||||
m_dmrNetwork = new CDMRNetworkManager(primary, secondary);
|
||||
} else {
|
||||
m_dmrNetwork = new CDMRNetwork(primaryAddress, primaryPort, primaryLocal, id, primaryPassword, m_duplex, VERSION, debug, slot1, slot2, hwType);
|
||||
}
|
||||
|
||||
std::string options = m_conf.getDMRNetworkOptions();
|
||||
if (!options.empty()) {
|
||||
|
|
|
@ -44,7 +44,7 @@ private:
|
|||
CConf m_conf;
|
||||
CModem* m_modem;
|
||||
CDStarNetwork* m_dstarNetwork;
|
||||
CDMRNetwork* m_dmrNetwork;
|
||||
IDMRNetwork* m_dmrNetwork;
|
||||
CYSFNetwork* m_ysfNetwork;
|
||||
CP25Network* m_p25Network;
|
||||
CDisplay* m_display;
|
||||
|
|
|
@ -170,6 +170,7 @@
|
|||
<ClInclude Include="DMRFullLC.h" />
|
||||
<ClInclude Include="DMRLC.h" />
|
||||
<ClInclude Include="DMRNetwork.h" />
|
||||
<ClInclude Include="DMRNetworkManager.h" />
|
||||
<ClInclude Include="DMRShortLC.h" />
|
||||
<ClInclude Include="DMRSlot.h" />
|
||||
<ClInclude Include="DMRSlotType.h" />
|
||||
|
@ -241,6 +242,7 @@
|
|||
<ClCompile Include="DMRLC.cpp" />
|
||||
<ClCompile Include="DMRLookup.cpp" />
|
||||
<ClCompile Include="DMRNetwork.cpp" />
|
||||
<ClCompile Include="DMRNetworkManager.cpp" />
|
||||
<ClCompile Include="DMRShortLC.cpp" />
|
||||
<ClCompile Include="DMRSlot.cpp" />
|
||||
<ClCompile Include="DMRSlotType.cpp" />
|
||||
|
|
|
@ -221,6 +221,9 @@
|
|||
<ClInclude Include="RSSIInterpolator.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="DMRNetworkManager.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="BPTC19696.cpp">
|
||||
|
@ -412,5 +415,8 @@
|
|||
<ClCompile Include="RSSIInterpolator.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="DMRNetworkManager.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
8
Makefile
8
Makefile
|
@ -8,10 +8,10 @@ LDFLAGS = -g
|
|||
|
||||
OBJECTS = \
|
||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||
Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \
|
||||
P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||
Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
DMRNetwork.o DMRNetworkManager.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o \
|
||||
Golay2087.o Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o \
|
||||
P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o \
|
||||
TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
|
||||
all: MMDVMHost
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ LDFLAGS = -g -L/usr/local/lib
|
|||
|
||||
OBJECTS = \
|
||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||
Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \
|
||||
P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||
Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
DMRNetwork.o DMRNetworkManager.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o \
|
||||
Golay2087.o Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o \
|
||||
P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o \
|
||||
TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
|
||||
all: MMDVMHost
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ LDFLAGS = -g -L/usr/local/lib
|
|||
|
||||
OBJECTS = \
|
||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||
Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o \
|
||||
P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o \
|
||||
TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
DMRNetwork.o DMRNetworkManager.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o \
|
||||
Golay2087.o Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o \
|
||||
P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o \
|
||||
Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
|
||||
all: MMDVMHost
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ LDFLAGS = -g -L/usr/local/lib
|
|||
|
||||
OBJECTS = \
|
||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||
Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \
|
||||
P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||
Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
DMRNetwork.o DMRNetworkManager.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o \
|
||||
Golay2087.o Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o \
|
||||
P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o \
|
||||
Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
|
||||
all: MMDVMHost
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ LDFLAGS = -g -L/usr/local/lib
|
|||
|
||||
OBJECTS = \
|
||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||
Golay24128.o Hamming.o OLED.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \
|
||||
P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||
Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
DMRNetwork.o DMRNetworkManager.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o \
|
||||
Golay2087.o Golay24128.o Hamming.o OLED.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o \
|
||||
P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o \
|
||||
TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
|
||||
all: MMDVMHost
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ LDFLAGS = -g -L/usr/local/lib
|
|||
|
||||
OBJECTS = \
|
||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||
Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \
|
||||
P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||
Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
DMRNetwork.o DMRNetworkManager.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o \
|
||||
Golay2087.o Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o \
|
||||
P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o \
|
||||
Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
|
||||
all: MMDVMHost
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ LDFLAGS = -g
|
|||
|
||||
OBJECTS = \
|
||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||
Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \
|
||||
P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||
Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
DMRNetwork.o DMRNetworkManager.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o \
|
||||
Golay2087.o Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o \
|
||||
P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o \
|
||||
TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
|
||||
all: MMDVMHost
|
||||
|
||||
|
|
Loading…
Reference in New Issue