diff --git a/Conf.cpp b/Conf.cpp index 7491717..8b2578b 100644 --- a/Conf.cpp +++ b/Conf.cpp @@ -57,7 +57,6 @@ enum SECTION { SECTION_OLED, SECTION_LCDPROC, SECTION_LOCK_FILE, - SECTION_GPSD, SECTION_REMOTE_CONTROL }; @@ -72,12 +71,6 @@ m_daemon(false), m_rxFrequency(0U), m_txFrequency(0U), m_power(0U), -m_latitude(0.0F), -m_longitude(0.0F), -m_height(0), -m_location(), -m_description(), -m_url(), m_logDisplayLevel(0U), m_logFileLevel(0U), m_logFilePath(), @@ -282,9 +275,6 @@ m_lcdprocUTC(false), m_lcdprocDimOnIdle(false), m_lockFileEnabled(false), m_lockFileName(), -m_gpsdEnabled(false), -m_gpsdAddress(), -m_gpsdPort(), m_remoteControlEnabled(false), m_remoteControlPort(0U) { @@ -366,8 +356,6 @@ bool CConf::read() section = SECTION_LCDPROC; else if (::strncmp(buffer, "[Lock File]", 11U) == 0) section = SECTION_LOCK_FILE; - else if (::strncmp(buffer, "[GPSD]", 6U) == 0) - section = SECTION_GPSD; else if (::strncmp(buffer, "[Remote Control]", 16U) == 0) section = SECTION_REMOTE_CONTROL; else @@ -432,18 +420,6 @@ bool CConf::read() m_rxFrequency = (unsigned int)::atoi(value); else if (::strcmp(key, "Power") == 0) m_power = (unsigned int)::atoi(value); - else if (::strcmp(key, "Latitude") == 0) - m_latitude = float(::atof(value)); - else if (::strcmp(key, "Longitude") == 0) - m_longitude = float(::atof(value)); - else if (::strcmp(key, "Height") == 0) - m_height = ::atoi(value); - else if (::strcmp(key, "Location") == 0) - m_location = value; - else if (::strcmp(key, "Description") == 0) - m_description = value; - else if (::strcmp(key, "URL") == 0) - m_url = value; } else if (section == SECTION_LOG) { if (::strcmp(key, "FilePath") == 0) m_logFilePath = value; @@ -959,13 +935,6 @@ bool CConf::read() m_lockFileEnabled = ::atoi(value) == 1; else if (::strcmp(key, "File") == 0) m_lockFileName = value; - } else if (section == SECTION_GPSD) { - if (::strcmp(key, "Enable") == 0) - m_gpsdEnabled = ::atoi(value) == 1; - else if (::strcmp(key, "Address") == 0) - m_gpsdAddress = value; - else if (::strcmp(key, "Port") == 0) - m_gpsdPort = value; } else if (section == SECTION_REMOTE_CONTROL) { if (::strcmp(key, "Enable") == 0) m_remoteControlEnabled = ::atoi(value) == 1; @@ -1024,36 +993,6 @@ unsigned int CConf::getPower() const return m_power; } -float CConf::getLatitude() const -{ - return m_latitude; -} - -float CConf::getLongitude() const -{ - return m_longitude; -} - -int CConf::getHeight() const -{ - return m_height; -} - -std::string CConf::getLocation() const -{ - return m_location; -} - -std::string CConf::getDescription() const -{ - return m_description; -} - -std::string CConf::getURL() const -{ - return m_url; -} - unsigned int CConf::getLogDisplayLevel() const { return m_logDisplayLevel; @@ -2075,21 +2014,6 @@ std::string CConf::getLockFileName() const return m_lockFileName; } -bool CConf::getGPSDEnabled() const -{ - return m_gpsdEnabled; -} - -std::string CConf::getGPSDAddress() const -{ - return m_gpsdAddress; -} - -std::string CConf::getGPSDPort() const -{ - return m_gpsdPort; -} - bool CConf::getRemoteControlEnabled() const { return m_remoteControlEnabled; diff --git a/Conf.h b/Conf.h index 335d461..f75fdb4 100644 --- a/Conf.h +++ b/Conf.h @@ -42,12 +42,6 @@ public: unsigned int getRXFrequency() const; unsigned int getTXFrequency() const; unsigned int getPower() const; - float getLatitude() const; - float getLongitude() const; - int getHeight() const; - std::string getLocation() const; - std::string getDescription() const; - std::string getURL() const; // The Log section unsigned int getLogDisplayLevel() const; @@ -305,11 +299,6 @@ public: bool getLockFileEnabled() const; std::string getLockFileName() const; - // The GPSD section - bool getGPSDEnabled() const; - std::string getGPSDAddress() const; - std::string getGPSDPort() const; - // The Remote Control section bool getRemoteControlEnabled() const; unsigned int getRemoteControlPort() const; @@ -326,12 +315,6 @@ private: unsigned int m_rxFrequency; unsigned int m_txFrequency; unsigned int m_power; - float m_latitude; - float m_longitude; - int m_height; - std::string m_location; - std::string m_description; - std::string m_url; unsigned int m_logDisplayLevel; unsigned int m_logFileLevel; @@ -563,10 +546,6 @@ private: bool m_lockFileEnabled; std::string m_lockFileName; - bool m_gpsdEnabled; - std::string m_gpsdAddress; - std::string m_gpsdPort; - bool m_remoteControlEnabled; unsigned int m_remoteControlPort; }; diff --git a/DMRNetwork.cpp b/DMRNetwork.cpp index fece49c..ffe3aea 100644 --- a/DMRNetwork.cpp +++ b/DMRNetwork.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2019 by Jonathan Naylor G4KLX + * Copyright (C) 2015-2020 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 @@ -19,7 +19,6 @@ #include "DMRNetwork.h" #include "StopWatch.h" -#include "SHA256.h" #include "Utils.h" #include "Log.h" @@ -33,12 +32,11 @@ 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) : +CDMRNetwork::CDMRNetwork(const std::string& address, unsigned int port, unsigned int local, unsigned int id, bool duplex, const char* version, bool debug, bool slot1, bool slot2, HW_TYPE hwType) : m_addressStr(address), m_address(), m_port(port), m_id(NULL), -m_password(password), m_duplex(duplex), m_version(version), m_debug(debug), @@ -47,37 +45,25 @@ m_enabled(false), m_slot1(slot1), m_slot2(slot2), m_hwType(hwType), -m_status(WAITING_CONNECT), -m_retryTimer(1000U, 10U), -m_timeoutTimer(1000U, 60U), m_buffer(NULL), -m_salt(NULL), m_streamId(NULL), m_rxData(1000U, "DMR Network"), -m_options(), +m_beacon(false), +m_random(), m_callsign(), m_rxFrequency(0U), m_txFrequency(0U), m_power(0U), m_colorCode(0U), -m_latitude(0.0F), -m_longitude(0.0F), -m_height(0), -m_location(), -m_description(), -m_url(), -m_beacon(false), -m_random() +m_pingTimer(1000U, 10U) { assert(!address.empty()); assert(port > 0U); assert(id > 1000U); - assert(!password.empty()); m_address = CUDPSocket::lookup(address); m_buffer = new unsigned char[BUFFER_LENGTH]; - m_salt = new unsigned char[sizeof(uint32_t)]; m_id = new uint8_t[4U]; m_streamId = new uint32_t[2U]; @@ -98,43 +84,29 @@ m_random() CDMRNetwork::~CDMRNetwork() { delete[] m_buffer; - delete[] m_salt; delete[] m_streamId; delete[] m_id; } -void CDMRNetwork::setOptions(const std::string& options) -{ - m_options = options; -} - -void CDMRNetwork::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) +void CDMRNetwork::setConfig(const std::string & callsign, unsigned int rxFrequency, unsigned int txFrequency, unsigned int power, unsigned int colorCode) { m_callsign = callsign; m_rxFrequency = rxFrequency; m_txFrequency = txFrequency; m_power = power; m_colorCode = colorCode; - m_latitude = latitude; - m_longitude = longitude; - m_height = height; - m_location = location; - m_description = description; - m_url = url; } bool CDMRNetwork::open() { LogMessage("DMR, Opening DMR Network"); - if (m_address.s_addr == INADDR_NONE) - m_address = CUDPSocket::lookup(m_addressStr); + bool ret = m_socket.open(); - m_status = WAITING_CONNECT; - m_timeoutTimer.stop(); - m_retryTimer.start(); + if (ret) + m_pingTimer.start(); - return true; + return ret; } void CDMRNetwork::enable(bool enabled) @@ -147,9 +119,6 @@ void CDMRNetwork::enable(bool enabled) bool CDMRNetwork::read(CDMRData& data) { - if (m_status != RUNNING) - return false; - if (m_rxData.isEmpty()) return false; @@ -211,9 +180,6 @@ bool CDMRNetwork::read(CDMRData& data) bool CDMRNetwork::write(const CDMRData& data) { - if (m_status != RUNNING) - return false; - unsigned char buffer[HOMEBREW_DATA_PACKET_LENGTH]; ::memset(buffer, 0x00U, HOMEBREW_DATA_PACKET_LENGTH); @@ -285,264 +251,79 @@ bool CDMRNetwork::write(const CDMRData& data) bool CDMRNetwork::writeRadioPosition(unsigned int id, const unsigned char* data) { - if (m_status != RUNNING) - return false; - unsigned char buffer[20U]; ::memcpy(buffer + 0U, "DMRG", 4U); - ::memcpy(buffer + 4U, m_id, 4U); + buffer[4U] = id >> 16; + buffer[5U] = id >> 8; + buffer[6U] = id >> 0; - buffer[8U] = id >> 16; - buffer[9U] = id >> 8; - buffer[10U] = id >> 0; + ::memcpy(buffer + 7U, data + 2U, 7U); - ::memcpy(buffer + 11U, data + 2U, 7U); - - return write(buffer, 18U); + return write(buffer, 14U); } bool CDMRNetwork::writeTalkerAlias(unsigned int id, unsigned char type, const unsigned char* data) { - if (m_status != RUNNING) - return false; - unsigned char buffer[20U]; ::memcpy(buffer + 0U, "DMRA", 4U); - ::memcpy(buffer + 4U, m_id, 4U); + buffer[4U] = id >> 16; + buffer[5U] = id >> 8; + buffer[6U] = id >> 0; - buffer[8U] = id >> 16; - buffer[9U] = id >> 8; - buffer[10U] = id >> 0; + buffer[7U] = type; - buffer[11U] = type; + ::memcpy(buffer + 8U, data + 2U, 7U); - ::memcpy(buffer + 12U, data + 2U, 7U); - - return write(buffer, 19U); -} - -bool CDMRNetwork::writeHomePosition(float latitude, float longitude) -{ - m_latitude = latitude; - m_longitude = longitude; - - if (m_status != RUNNING) - return false; - - char buffer[50U]; - - ::memcpy(buffer + 0U, "RPTG", 4U); - ::memcpy(buffer + 4U, m_id, 4U); - - ::sprintf(buffer + 8U, "%08f%09f", latitude, longitude); - - return write((unsigned char*)buffer, 25U); + return write(buffer, 15U); } void CDMRNetwork::close() { LogMessage("DMR, Closing DMR Network"); - if (m_status == RUNNING) { - unsigned char buffer[9U]; - ::memcpy(buffer + 0U, "RPTCL", 5U); - ::memcpy(buffer + 5U, m_id, 4U); - write(buffer, 9U); - } - m_socket.close(); - - m_retryTimer.stop(); - m_timeoutTimer.stop(); } void CDMRNetwork::clock(unsigned int ms) { - if (m_status == WAITING_CONNECT) { - m_retryTimer.clock(ms); - if (m_retryTimer.isRunning() && m_retryTimer.hasExpired()) { - bool ret = m_socket.open(); - if (ret) { - ret = writeLogin(); - if (!ret) - return; - - m_status = WAITING_LOGIN; - m_timeoutTimer.start(); - } - - m_retryTimer.start(); - } - - return; + m_pingTimer.clock(ms); + if (m_pingTimer.isRunning() && m_pingTimer.hasExpired()) { + writeConfig(); + m_pingTimer.start(); } in_addr address; unsigned int port; int length = m_socket.read(m_buffer, BUFFER_LENGTH, address, port); - if (length < 0) { - LogError("DMR, Socket has failed, retrying connection to the master"); - close(); - open(); + if (length <= 0) + return; + + if (m_address.s_addr != address.s_addr || m_port != port) { + LogMessage("DMR, packet received from an invalid source, %08X != %08X and/or %u != %u", m_address.s_addr, address.s_addr, m_port, port); return; } - // if (m_debug && length > 0) - // CUtils::dump(1U, "Network Received", m_buffer, length); + if (!m_enabled) + return; - if (length > 0 && m_address.s_addr == address.s_addr && m_port == port) { - if (::memcmp(m_buffer, "DMRD", 4U) == 0) { - if (m_enabled) { - if (m_debug) - CUtils::dump(1U, "Network Received", m_buffer, length); + if (m_debug) + CUtils::dump(1U, "Network Received", m_buffer, length); - unsigned char len = length; - m_rxData.addData(&len, 1U); - m_rxData.addData(m_buffer, len); - } - } else if (::memcmp(m_buffer, "MSTNAK", 6U) == 0) { - if (m_status == RUNNING) { - LogWarning("DMR, Login to the master has failed, retrying login ..."); - m_status = WAITING_LOGIN; - m_timeoutTimer.start(); - m_retryTimer.start(); - } else { - /* Once the modem death spiral has been prevented in Modem.cpp - the Network sometimes times out and reaches here. - We want it to reconnect so... */ - LogError("DMR, Login to the master has failed, retrying network ..."); - close(); - open(); - return; - } - } else if (::memcmp(m_buffer, "RPTACK", 6U) == 0) { - switch (m_status) { - case WAITING_LOGIN: - LogDebug("DMR, Sending authorisation"); - ::memcpy(m_salt, m_buffer + 6U, sizeof(uint32_t)); - writeAuthorisation(); - m_status = WAITING_AUTHORISATION; - m_timeoutTimer.start(); - m_retryTimer.start(); - break; - case WAITING_AUTHORISATION: - LogDebug("DMR, Sending configuration"); - writeConfig(); - m_status = WAITING_CONFIG; - m_timeoutTimer.start(); - m_retryTimer.start(); - break; - case WAITING_CONFIG: - if (m_options.empty()) { - LogMessage("DMR, Logged into the master successfully"); - m_status = RUNNING; - } else { - LogDebug("DMR, Sending options"); - writeOptions(); - m_status = WAITING_OPTIONS; - } - m_timeoutTimer.start(); - m_retryTimer.start(); - break; - case WAITING_OPTIONS: - LogMessage("DMR, Logged into the master successfully"); - m_status = RUNNING; - m_timeoutTimer.start(); - m_retryTimer.start(); - break; - default: - break; - } - } else if (::memcmp(m_buffer, "MSTCL", 5U) == 0) { - LogError("DMR, Master is closing down"); - close(); - open(); - } else if (::memcmp(m_buffer, "MSTPONG", 7U) == 0) { - m_timeoutTimer.start(); - } else if (::memcmp(m_buffer, "RPTSBKN", 7U) == 0) { - m_beacon = true; - } else { - CUtils::dump("Unknown packet from the master", m_buffer, length); - } + if (::memcmp(m_buffer, "DMRD", 4U) == 0) { + unsigned char len = length; + m_rxData.addData(&len, 1U); + m_rxData.addData(m_buffer, len); + } else if (::memcmp(m_buffer, "DMRP", 4U) == 0) { + ; + } else if (::memcmp(m_buffer, "DMRB", 4U) == 0) { + m_beacon = true; + } else { + CUtils::dump("DMR, unknown packet from the DMR Gateway", m_buffer, length); } - - m_retryTimer.clock(ms); - if (m_retryTimer.isRunning() && m_retryTimer.hasExpired()) { - switch (m_status) { - case WAITING_LOGIN: - writeLogin(); - break; - case WAITING_AUTHORISATION: - writeAuthorisation(); - break; - case WAITING_OPTIONS: - writeOptions(); - break; - case WAITING_CONFIG: - writeConfig(); - break; - case RUNNING: - writePing(); - break; - default: - break; - } - - m_retryTimer.start(); - } - - m_timeoutTimer.clock(ms); - if (m_timeoutTimer.isRunning() && m_timeoutTimer.hasExpired()) { - LogError("DMR, Connection to the master has timed out, retrying connection"); - close(); - open(); - } -} - -bool CDMRNetwork::writeLogin() -{ - unsigned char buffer[8U]; - - ::memcpy(buffer + 0U, "RPTL", 4U); - ::memcpy(buffer + 4U, m_id, 4U); - - return write(buffer, 8U); -} - -bool CDMRNetwork::writeAuthorisation() -{ - size_t size = m_password.size(); - - unsigned char* in = new unsigned char[size + sizeof(uint32_t)]; - ::memcpy(in, m_salt, sizeof(uint32_t)); - for (size_t i = 0U; i < size; i++) - in[i + sizeof(uint32_t)] = m_password.at(i); - - unsigned char out[40U]; - ::memcpy(out + 0U, "RPTK", 4U); - ::memcpy(out + 4U, m_id, 4U); - - CSHA256 sha256; - sha256.buffer(in, (unsigned int)(size + sizeof(uint32_t)), out + 8U); - - delete[] in; - - return write(out, 40U); -} - -bool CDMRNetwork::writeOptions() -{ - char buffer[300U]; - - ::memcpy(buffer + 0U, "RPTO", 4U); - ::memcpy(buffer + 4U, m_id, 4U); - ::strcpy(buffer + 8U, m_options.c_str()); - - return write((unsigned char*)buffer, (unsigned int)m_options.length() + 8U); } bool CDMRNetwork::writeConfig() @@ -614,40 +395,13 @@ bool CDMRNetwork::writeConfig() } } - char buffer[400U]; + char buffer[100U]; - ::memcpy(buffer + 0U, "RPTC", 4U); + ::memcpy(buffer + 0U, "DMRC", 4U); ::memcpy(buffer + 4U, m_id, 4U); + ::sprintf(buffer + 8U, "%02u%c%-40.40s%-40.40s", m_colorCode, slots, m_version, software); - char latitude[20U]; - ::sprintf(latitude, "%08f", m_latitude); - - char longitude[20U]; - ::sprintf(longitude, "%09f", m_longitude); - - unsigned int power = m_power; - if (power > 99U) - power = 99U; - - int height = m_height; - if (height > 999) - height = 999; - - ::sprintf(buffer + 8U, "%-8.8s%09u%09u%02u%02u%8.8s%9.9s%03d%-20.20s%-19.19s%c%-124.124s%-40.40s%-40.40s", m_callsign.c_str(), - m_rxFrequency, m_txFrequency, power, m_colorCode, latitude, longitude, height, m_location.c_str(), - m_description.c_str(), slots, m_url.c_str(), m_version, software); - - return write((unsigned char*)buffer, 302U); -} - -bool CDMRNetwork::writePing() -{ - unsigned char buffer[11U]; - - ::memcpy(buffer + 0U, "RPTPING", 7U); - ::memcpy(buffer + 7U, m_id, 4U); - - return write(buffer, 11U); + return write((unsigned char*)buffer, 91U); } bool CDMRNetwork::wantsBeacon() @@ -670,8 +424,6 @@ bool CDMRNetwork::write(const unsigned char* data, unsigned int length) bool ret = m_socket.write(data, length, m_address, m_port); if (!ret) { LogError("DMR, Socket has failed when writing data to the master, retrying connection"); - m_socket.close(); - open(); return false; } diff --git a/DMRNetwork.h b/DMRNetwork.h index 754c970..9f01925 100644 --- a/DMRNetwork.h +++ b/DMRNetwork.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015,2016,2017,2018 by Jonathan Naylor G4KLX + * Copyright (C) 2015,2016,2017,2018,2020 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 @@ -32,12 +32,10 @@ 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); + CDMRNetwork(const std::string& address, unsigned int port, unsigned int local, unsigned int id, bool duplex, const char* version, bool debug, bool slot1, bool slot2, HW_TYPE hwType); ~CDMRNetwork(); - 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); + void setConfig(const std::string& callsign, unsigned int rxFrequency, unsigned int txFrequency, unsigned int power, unsigned int colorCode); bool open(); @@ -51,8 +49,6 @@ public: bool writeTalkerAlias(unsigned int id, unsigned char type, const unsigned char* data); - bool writeHomePosition(float latitude, float longitude); - bool wantsBeacon(); void clock(unsigned int ms); @@ -64,7 +60,6 @@ private: in_addr m_address; unsigned int m_port; uint8_t* m_id; - std::string m_password; bool m_duplex; const char* m_version; bool m_debug; @@ -73,47 +68,19 @@ private: bool m_slot1; bool m_slot2; HW_TYPE m_hwType; - - enum STATUS { - WAITING_CONNECT, - WAITING_LOGIN, - WAITING_AUTHORISATION, - WAITING_CONFIG, - WAITING_OPTIONS, - RUNNING - }; - - STATUS m_status; - CTimer m_retryTimer; - CTimer m_timeoutTimer; - unsigned char* m_buffer; - unsigned char* m_salt; - uint32_t* m_streamId; - + unsigned char* m_buffer; + uint32_t* m_streamId; CRingBuffer m_rxData; + bool m_beacon; + std::mt19937 m_random; + std::string m_callsign; + unsigned int m_rxFrequency; + unsigned int m_txFrequency; + unsigned int m_power; + unsigned int m_colorCode; + CTimer m_pingTimer; - std::string m_options; - - std::string m_callsign; - unsigned int m_rxFrequency; - unsigned int m_txFrequency; - unsigned int m_power; - unsigned int m_colorCode; - float m_latitude; - float m_longitude; - int m_height; - std::string m_location; - std::string m_description; - std::string m_url; - - bool m_beacon; - std::mt19937 m_random; - - bool writeLogin(); - bool writeAuthorisation(); - bool writeOptions(); bool writeConfig(); - bool writePing(); bool write(const unsigned char* data, unsigned int length); }; diff --git a/Display.cpp b/Display.cpp index 03f0a4f..29f00d0 100644 --- a/Display.cpp +++ b/Display.cpp @@ -556,10 +556,10 @@ CDisplay* CDisplay::createDisplay(const CConf& conf, CUMP* ump, CModem* modem) if (port == "modem") { ISerialPort* serial = new CModemSerialPort(modem); - display = new CNextion(conf.getCallsign(), dmrid, serial, brightness, displayClock, utc, idleBrightness, screenLayout, txFrequency, rxFrequency, displayTempInF, conf.getLocation()); + display = new CNextion(conf.getCallsign(), dmrid, serial, brightness, displayClock, utc, idleBrightness, screenLayout, txFrequency, rxFrequency, displayTempInF); } else if (port == "ump") { if (ump != NULL) { - display = new CNextion(conf.getCallsign(), dmrid, ump, brightness, displayClock, utc, idleBrightness, screenLayout, txFrequency, rxFrequency, displayTempInF, conf.getLocation()); + display = new CNextion(conf.getCallsign(), dmrid, ump, brightness, displayClock, utc, idleBrightness, screenLayout, txFrequency, rxFrequency, displayTempInF); } else { LogInfo(" NullDisplay loaded"); display = new CNullDisplay; @@ -571,7 +571,7 @@ CDisplay* CDisplay::createDisplay(const CConf& conf, CUMP* ump, CModem* modem) LogInfo(" Display baudrate: %u ",baudrate); ISerialPort* serial = new CSerialController(port, baudrate); - display = new CNextion(conf.getCallsign(), dmrid, serial, brightness, displayClock, utc, idleBrightness, screenLayout, txFrequency, rxFrequency, displayTempInF, conf.getLocation()); + display = new CNextion(conf.getCallsign(), dmrid, serial, brightness, displayClock, utc, idleBrightness, screenLayout, txFrequency, rxFrequency, displayTempInF); } } else if (type == "LCDproc") { std::string address = conf.getLCDprocAddress(); diff --git a/GPSD.cpp b/GPSD.cpp deleted file mode 100644 index c06321a..0000000 --- a/GPSD.cpp +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (C) 2018,2020 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 "GPSD.h" - -#if defined(USE_GPSD) - -#include -#include -#include -#include - -CGPSD::CGPSD(const std::string& address, const std::string& port, CDMRNetwork* network) : -m_gpsdAddress(address), -m_gpsdPort(port), -m_network(network), -m_gpsdData(), -m_idTimer(1000U, 60U) -{ - assert(!address.empty()); - assert(!port.empty()); - assert(network != NULL); -} - -CGPSD::~CGPSD() -{ -} - -bool CGPSD::open() -{ - int ret = ::gps_open(m_gpsdAddress.c_str(), m_gpsdPort.c_str(), &m_gpsdData); - if (ret != 0) { - LogError("Error when opening access to gpsd - %d - %s", errno, ::gps_errstr(errno)); - return false; - } - - ::gps_stream(&m_gpsdData, WATCH_ENABLE | WATCH_JSON, NULL); - - LogMessage("Connected to GPSD"); - - m_idTimer.start(); - - return true; -} - -void CGPSD::clock(unsigned int ms) -{ - m_idTimer.clock(ms); - - if (m_idTimer.hasExpired()) { - sendReport(); - m_idTimer.start(); - } -} - -void CGPSD::close() -{ - ::gps_stream(&m_gpsdData, WATCH_DISABLE, NULL); - ::gps_close(&m_gpsdData); -} - -void CGPSD::sendReport() -{ - if (!::gps_waiting(&m_gpsdData, 0)) - return; - -#if GPSD_API_MAJOR_VERSION >= 7 - if (::gps_read(&m_gpsdData, NULL, 0) <= 0) - return; -#else - if (::gps_read(&m_gpsdData) <= 0) - return; -#endif - - if (m_gpsdData.status != STATUS_FIX) - return; - - bool latlonSet = (m_gpsdData.set & LATLON_SET) == LATLON_SET; - if (!latlonSet) - return; - - float latitude = float(m_gpsdData.fix.latitude); - float longitude = float(m_gpsdData.fix.longitude); - - m_network->writeHomePosition(latitude, longitude); -} - -#endif diff --git a/GPSD.h b/GPSD.h deleted file mode 100644 index cef93b5..0000000 --- a/GPSD.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2018,2020 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. - */ - -#ifndef GPSD_H -#define GPSD_H - -#if defined(USE_GPSD) - -#include "DMRNetwork.h" -#include "Timer.h" - -#include - -#include - -class CGPSD { -public: - CGPSD(const std::string& address, const std::string& port, CDMRNetwork* network); - ~CGPSD(); - - bool open(); - - void clock(unsigned int ms); - - void close(); - -private: - std::string m_gpsdAddress; - std::string m_gpsdPort; - CDMRNetwork* m_network; - struct gps_data_t m_gpsdData; - CTimer m_idTimer; - - void sendReport(); -}; - -#endif - -#endif diff --git a/MMDVM.ini b/MMDVM.ini index ccc561b..7a4f333 100644 --- a/MMDVM.ini +++ b/MMDVM.ini @@ -13,12 +13,6 @@ Daemon=0 RXFrequency=435000000 TXFrequency=435000000 Power=1 -Latitude=0.0 -Longitude=0.0 -Height=0 -Location=Nowhere -Description=Multi-Mode Repeater -URL=www.google.co.uk [Log] # Logging levels, 0=No logging @@ -288,11 +282,6 @@ UTC=0 Enable=0 File=/tmp/MMDVM_Active.lck -[GPSD] -Enable=0 -Address=127.0.0.1 -Port=2947 - [Remote Control] Enable=0 Port=7642 diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index f174b83..8faff95 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -161,9 +161,6 @@ m_id(0U), m_cwCallsign(), m_lockFileEnabled(false), m_lockFileName(), -#if defined(USE_GPSD) -m_gpsd(NULL), -#endif m_remoteControl(NULL), m_fixedMode(false) { @@ -1000,11 +997,6 @@ int CMMDVMHost::run() if (m_pocsagNetwork != NULL) m_pocsagNetwork->clock(ms); -#if defined(USE_GPSD) - if (m_gpsd != NULL) - m_gpsd->clock(ms); -#endif - m_cwIdTimer.clock(ms); if (m_cwIdTimer.isRunning() && m_cwIdTimer.hasExpired()) { if (!m_modem->hasTX()){ @@ -1080,13 +1072,6 @@ int CMMDVMHost::run() m_display->close(); delete m_display; -#if defined(USE_GPSD) - if (m_gpsd != NULL) { - m_gpsd->close(); - delete m_gpsd; - } -#endif - if (m_ump != NULL) { m_ump->close(); delete m_ump; @@ -1354,38 +1339,20 @@ bool CMMDVMHost::createDMRNetwork() 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); - - std::string options = m_conf.getDMRNetworkOptions(); - if (!options.empty()) { - LogInfo(" Options: %s", options.c_str()); - m_dmrNetwork->setOptions(options); - } + m_dmrNetwork = new CDMRNetwork(address, port, local, id, m_duplex, VERSION, debug, slot1, slot2, hwType); unsigned int rxFrequency = m_conf.getRXFrequency(); unsigned int txFrequency = m_conf.getTXFrequency(); unsigned int power = m_conf.getPower(); unsigned int colorCode = m_conf.getDMRColorCode(); - float latitude = m_conf.getLatitude(); - float longitude = m_conf.getLongitude(); - int height = m_conf.getHeight(); - std::string location = m_conf.getLocation(); - std::string description = m_conf.getDescription(); - std::string url = m_conf.getURL(); - LogInfo("Info Parameters"); + LogInfo("RF Parameters"); LogInfo(" Callsign: %s", m_callsign.c_str()); LogInfo(" RX Frequency: %uHz", rxFrequency); LogInfo(" TX Frequency: %uHz", txFrequency); LogInfo(" Power: %uW", power); - LogInfo(" Latitude: %fdeg N", latitude); - LogInfo(" Longitude: %fdeg E", longitude); - LogInfo(" Height: %um", height); - LogInfo(" Location: \"%s\"", location.c_str()); - LogInfo(" Description: \"%s\"", description.c_str()); - LogInfo(" URL: \"%s\"", url.c_str()); - m_dmrNetwork->setConfig(m_callsign, rxFrequency, txFrequency, power, colorCode, latitude, longitude, height, location, description, url); + m_dmrNetwork->setConfig(m_callsign, rxFrequency, txFrequency, power, colorCode); bool ret = m_dmrNetwork->open(); if (!ret) { @@ -1394,26 +1361,6 @@ bool CMMDVMHost::createDMRNetwork() return false; } -#if defined(USE_GPSD) - bool gpsdEnabled = m_conf.getGPSDEnabled(); - if (gpsdEnabled) { - std::string gpsdAddress = m_conf.getGPSDAddress(); - std::string gpsdPort = m_conf.getGPSDPort(); - - LogInfo("GPSD Parameters"); - LogInfo(" Address: %s", gpsdAddress.c_str()); - LogInfo(" Port: %s", gpsdPort.c_str()); - - m_gpsd = new CGPSD(gpsdAddress, gpsdPort, m_dmrNetwork); - - ret = m_gpsd->open(); - if (!ret) { - delete m_gpsd; - m_gpsd = NULL; - } - } -#endif - m_dmrNetwork->enable(true); return true; @@ -1421,12 +1368,12 @@ bool CMMDVMHost::createDMRNetwork() bool CMMDVMHost::createYSFNetwork() { - std::string myAddress = m_conf.getFusionNetworkMyAddress(); - unsigned int myPort = m_conf.getFusionNetworkMyPort(); + std::string myAddress = m_conf.getFusionNetworkMyAddress(); + unsigned int myPort = m_conf.getFusionNetworkMyPort(); std::string gatewayAddress = m_conf.getFusionNetworkGatewayAddress(); unsigned int gatewayPort = m_conf.getFusionNetworkGatewayPort(); - m_ysfNetModeHang = m_conf.getFusionNetworkModeHang(); - bool debug = m_conf.getFusionNetworkDebug(); + m_ysfNetModeHang = m_conf.getFusionNetworkModeHang(); + bool debug = m_conf.getFusionNetworkDebug(); LogInfo("System Fusion Network Parameters"); LogInfo(" Local Address: %s", myAddress.c_str()); diff --git a/MMDVMHost.h b/MMDVMHost.h index 3d77653..4c58f98 100644 --- a/MMDVMHost.h +++ b/MMDVMHost.h @@ -38,13 +38,11 @@ #include "Timer.h" #include "Modem.h" #include "Conf.h" -#include "GPSD.h" #include "UMP.h" #include - class CMMDVMHost { public: @@ -102,9 +100,6 @@ private: std::string m_cwCallsign; bool m_lockFileEnabled; std::string m_lockFileName; -#if defined(USE_GPSD) - CGPSD* m_gpsd; -#endif CRemoteControl* m_remoteControl; bool m_fixedMode; diff --git a/MMDVMHost.vcxproj b/MMDVMHost.vcxproj index b17f851..7981c50 100644 --- a/MMDVMHost.vcxproj +++ b/MMDVMHost.vcxproj @@ -183,7 +183,6 @@ - @@ -281,7 +280,6 @@ - diff --git a/MMDVMHost.vcxproj.filters b/MMDVMHost.vcxproj.filters index 7168194..534b3cd 100644 --- a/MMDVMHost.vcxproj.filters +++ b/MMDVMHost.vcxproj.filters @@ -302,9 +302,6 @@ Header Files - - Header Files - @@ -571,8 +568,5 @@ Source Files - - Source Files - \ No newline at end of file diff --git a/Makefile b/Makefile index 1ad3c8a..4dae872 100644 --- a/Makefile +++ b/Makefile @@ -2,21 +2,14 @@ CC = cc CXX = c++ - -# Use the following CFLAGS and LIBS if you don't want to use gpsd. CFLAGS = -g -O3 -Wall -std=c++0x -pthread LIBS = -lpthread - -# Use the following CFLAGS and LIBS if you do want to use gpsd. -#CFLAGS = -g -O3 -Wall -DUSE_GPSD -std=c++0x -pthread -#LIBS = -lpthread -lgps - LDFLAGS = -g OBJECTS = \ AMBEFEC.o BCH.o BPTC19696.o CASTInfo.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 DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \ - DStarSlowData.o Golay2087.o Golay24128.o GPSD.o Hamming.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o \ + DStarSlowData.o Golay2087.o Golay24128.o Hamming.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o \ NetworkInfo.o Nextion.o NullDisplay.o NullModem.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o \ NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \ P25Network.o P25NID.o P25Trellis.o P25Utils.o POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o \ diff --git a/Makefile.Pi b/Makefile.Pi index 53e457e..c124bc9 100644 --- a/Makefile.Pi +++ b/Makefile.Pi @@ -2,20 +2,14 @@ CC = gcc CXX = g++ -# Use the following CFLAGS and LIBS if you don't want to use gpsd. CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DRASPBERRY_PI -I/usr/local/include LIBS = -lwiringPi -lwiringPiDev -lpthread - -# Use the following CFLAGS and LIBS if you do want to use gpsd. -#CFLAGS = -g -O3 -Wall -DUSE_GPSD -std=c++0x -pthread -DRASPBERRY_PI -I/usr/local/include -#LIBS = -lwiringPi -lwiringPiDev -lpthread -lgps - LDFLAGS = -g -L/usr/local/lib OBJECTS = \ AMBEFEC.o BCH.o BPTC19696.o CASTInfo.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 DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \ - DStarSlowData.o Golay2087.o Golay24128.o GPSD.o Hamming.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o \ + DStarSlowData.o Golay2087.o Golay24128.o Hamming.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o \ NetworkInfo.o Nextion.o NullDisplay.o NullModem.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o \ NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o \ P25Trellis.o P25Utils.o POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o \ diff --git a/Makefile.Pi.Adafruit b/Makefile.Pi.Adafruit index 0a8fa85..b4cc4d7 100644 --- a/Makefile.Pi.Adafruit +++ b/Makefile.Pi.Adafruit @@ -3,20 +3,14 @@ CC = gcc CXX = g++ -# Use the following CFLAGS and LIBS if you don't want to use gpsd. CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHD44780 -DADAFRUIT_DISPLAY -I/usr/local/include LIBS = -lwiringPi -lwiringPiDev -lpthread - -# Use the following CFLAGS and LIBS if you do want to use gpsd. -#CFLAGS = -g -O3 -Wall -DUSE_GPSD -std=c++0x -pthread -DHD44780 -DADAFRUIT_DISPLAY -I/usr/local/include -#LIBS = -lwiringPi -lwiringPiDev -lpthread -lgps - LDFLAGS = -g -L/usr/local/lib OBJECTS = \ AMBEFEC.o BCH.o BPTC19696.o CASTInfo.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 DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \ - DStarSlowData.o Golay2087.o Golay24128.o GPSD.o Hamming.o HD44780.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o \ + DStarSlowData.o Golay2087.o Golay24128.o Hamming.o HD44780.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o \ NetworkInfo.o Nextion.o NullDisplay.o NullModem.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o \ NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o \ P25Trellis.o P25Utils.o POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o \ diff --git a/Makefile.Pi.HD44780 b/Makefile.Pi.HD44780 index 5417946..ba0fc74 100644 --- a/Makefile.Pi.HD44780 +++ b/Makefile.Pi.HD44780 @@ -2,21 +2,14 @@ CC = gcc CXX = g++ - -# Use the following CFLAGS and LIBS if you don't want to use gpsd. CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHD44780 -I/usr/local/include LIBS = -lwiringPi -lwiringPiDev -lpthread - -# Use the following CFLAGS and LIBS if you do want to use gpsd. -#CFLAGS = -g -O3 -Wall -DUSE_GPSD -std=c++0x -pthread -DHD44780 -I/usr/local/include -#LIBS = -lwiringPi -lwiringPiDev -lpthread -lgps - LDFLAGS = -g -L/usr/local/lib OBJECTS = \ AMBEFEC.o BCH.o BPTC19696.o CASTInfo.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 DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \ - DStarSlowData.o Golay2087.o Golay24128.o GPSD.o Hamming.o HD44780.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o \ + DStarSlowData.o Golay2087.o Golay24128.o Hamming.o HD44780.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o \ NetworkInfo.o Nextion.o NullDisplay.o NullModem.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o \ NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o \ P25Trellis.o P25Utils.o POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o \ diff --git a/Makefile.Pi.OLED b/Makefile.Pi.OLED index 9949cf2..67babd1 100644 --- a/Makefile.Pi.OLED +++ b/Makefile.Pi.OLED @@ -2,21 +2,14 @@ CC = gcc CXX = g++ - -# Use the following CFLAGS and LIBS if you don't want to use gpsd. CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DOLED -I/usr/local/include LIBS = -lArduiPi_OLED -lwiringPi -lpthread - -# Use the following CFLAGS and LIBS if you do want to use gpsd. -#CFLAGS = -g -O3 -Wall -DUSE_GPSD -std=c++0x -pthread -DOLED -I/usr/local/include -#LIBS = -lArduiPi_OLED -lwiringPi -lpthread -lgps - LDFLAGS = -g -L/usr/local/lib OBJECTS = \ AMBEFEC.o BCH.o BPTC19696.o CASTInfo.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 DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \ - DStarSlowData.o Golay2087.o Golay24128.o GPSD.o Hamming.o I2CController.o OLED.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o \ + DStarSlowData.o Golay2087.o Golay24128.o Hamming.o I2CController.o OLED.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o \ NetworkInfo.o Nextion.o NullDisplay.o NullModem.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o \ NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o \ P25Trellis.o P25Utils.o POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o \ diff --git a/Makefile.Pi.PCF8574 b/Makefile.Pi.PCF8574 index aa84cc8..e3a9b53 100644 --- a/Makefile.Pi.PCF8574 +++ b/Makefile.Pi.PCF8574 @@ -3,21 +3,14 @@ CC = gcc CXX = g++ - -# Use the following CFLAGS and LIBS if you don't want to use gpsd. CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHD44780 -DPCF8574_DISPLAY -I/usr/local/include LIBS = -lwiringPi -lwiringPiDev -lpthread - -# Use the following CFLAGS and LIBS if you do want to use gpsd. -#CFLAGS = -g -O3 -Wall -DUSE_GPSD -std=c++0x -pthread -DHD44780 -DPCF8574_DISPLAY -I/usr/local/include -#LIBS = -lwiringPi -lwiringPiDev -lpthread -lgps - LDFLAGS = -g -L/usr/local/lib OBJECTS = \ AMBEFEC.o BCH.o BPTC19696.o CASTInfo.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 DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \ - DStarSlowData.o Golay2087.o Golay24128.o GPSD.o Hamming.o HD44780.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o \ + DStarSlowData.o Golay2087.o Golay24128.o Hamming.o HD44780.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o \ NetworkInfo.o Nextion.o NullDisplay.o NullModem.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o \ NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o \ P25Trellis.o P25Utils.o POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o \ diff --git a/Nextion.cpp b/Nextion.cpp index ac6e8d7..fa6851e 100644 --- a/Nextion.cpp +++ b/Nextion.cpp @@ -25,7 +25,6 @@ #include #include #include -//#include const unsigned int DSTAR_RSSI_COUNT = 3U; // 3 * 420ms = 1260ms const unsigned int DSTAR_BER_COUNT = 63U; // 63 * 20ms = 1260ms @@ -48,7 +47,7 @@ const unsigned int NXDN_BER_COUNT = 28U; // 28 * 40ms = 1120ms // 00:low, others:high-speed. bit[2] is overlapped with LAYOUT_COMPAT_MASK. #define LAYOUT_HIGHSPEED (3 << 2) -CNextion::CNextion(const std::string& callsign, unsigned int dmrid, ISerialPort* serial, unsigned int brightness, bool displayClock, bool utc, unsigned int idleBrightness, unsigned int screenLayout, unsigned int txFrequency, unsigned int rxFrequency, bool displayTempInF, const std::string& location) : +CNextion::CNextion(const std::string& callsign, unsigned int dmrid, ISerialPort* serial, unsigned int brightness, bool displayClock, bool utc, unsigned int idleBrightness, unsigned int screenLayout, unsigned int txFrequency, unsigned int rxFrequency, bool displayTempInF) : CDisplay(), m_callsign(callsign), m_ipaddress("(ip unknown)"), @@ -73,8 +72,7 @@ m_txFrequency(txFrequency), m_rxFrequency(rxFrequency), m_fl_txFrequency(0.0F), m_fl_rxFrequency(0.0F), -m_displayTempInF(displayTempInF), -m_location(location) +m_displayTempInF(displayTempInF) { assert(serial != NULL); assert(brightness >= 0U && brightness <= 100U); @@ -179,10 +177,6 @@ void CNextion::setIdleInt() sendCommandAction(22U); } } - - ::sprintf(command, "t31.txt=\"%s\"", m_location.c_str()); // location - sendCommand(command); - sendCommandAction(23U); } else { sendCommandAction(17U); } diff --git a/Nextion.h b/Nextion.h index 7217d2a..488372f 100644 --- a/Nextion.h +++ b/Nextion.h @@ -29,7 +29,7 @@ class CNextion : public CDisplay { public: - CNextion(const std::string& callsign, unsigned int dmrid, ISerialPort* serial, unsigned int brightness, bool displayClock, bool utc, unsigned int idleBrightness, unsigned int screenLayout, unsigned int txFrequency, unsigned int rxFrequency, bool displayTempInF, const std::string& location); + CNextion(const std::string& callsign, unsigned int dmrid, ISerialPort* serial, unsigned int brightness, bool displayClock, bool utc, unsigned int idleBrightness, unsigned int screenLayout, unsigned int txFrequency, unsigned int rxFrequency, bool displayTempInF); virtual ~CNextion(); virtual bool open(); @@ -103,7 +103,6 @@ private: double m_fl_txFrequency; double m_fl_rxFrequency; bool m_displayTempInF; - std::string m_location; void sendCommand(const char* command); void sendCommandAction(unsigned int status); diff --git a/Version.h b/Version.h index 4d2faa4..426bd2a 100644 --- a/Version.h +++ b/Version.h @@ -19,6 +19,6 @@ #if !defined(VERSION_H) #define VERSION_H -const char* VERSION = "20200809"; +const char* VERSION = "20200826"; #endif