From 51e74c6182b75aa00d47f90f677b351ae3dd01c6 Mon Sep 17 00:00:00 2001 From: SASANO Takayoshi Date: Wed, 10 Mar 2021 21:09:58 +0900 Subject: [PATCH 1/2] revise UserDB display setting on OLED To display UserDB on OLED, either Slot1=0/Slot2=1 or Slot1=1/Slot2=0 of [DMR Network] in MMDVM.ini was required. Other displays such as LCDproc, HD44180 and TFTSurenoo uses duplex value of [General], OLED also uses same entry from now. --- Display.cpp | 2 +- OLED.cpp | 10 +++++----- OLED.h | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Display.cpp b/Display.cpp index 39b0a09..516d76d 100644 --- a/Display.cpp +++ b/Display.cpp @@ -642,7 +642,7 @@ CDisplay* CDisplay::createDisplay(const CConf& conf, CUMP* ump, CModem* modem) bool rotate = conf.getOLEDRotate(); bool logosaver = conf.getOLEDLogoScreensaver(); - display = new COLED(type, brightness, invert, scroll, rotate, logosaver, conf.getDMRNetworkSlot1(), conf.getDMRNetworkSlot2()); + display = new COLED(type, brightness, invert, scroll, rotate, logosaver, conf.getDuplex()); #endif } else if (type == "CAST") { display = new CCASTInfo(modem); diff --git a/OLED.cpp b/OLED.cpp index 34365aa..fddbe4d 100644 --- a/OLED.cpp +++ b/OLED.cpp @@ -169,15 +169,15 @@ const unsigned char logo_POCSAG_bmp [] = 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; -COLED::COLED(unsigned char displayType, unsigned char displayBrightness, bool displayInvert, bool displayScroll, bool displayRotate, bool displayLogoScreensaver, bool slot1Enabled, bool slot2Enabled) : +COLED::COLED(unsigned char displayType, unsigned char displayBrightness, bool displayInvert, bool displayScroll, bool displayRotate, bool displayLogoScreensaver, bool duplex) : m_displayType(displayType), m_displayBrightness(displayBrightness), m_displayInvert(displayInvert), m_displayScroll(displayScroll), m_displayRotate(displayRotate), m_displayLogoScreensaver(displayLogoScreensaver), -m_slot1Enabled(slot1Enabled), -m_slot2Enabled(slot2Enabled), +m_duplex(duplex), +//m_duplex(true), // uncomment to force duplex display for testing! m_ipaddress(), m_display() { @@ -382,7 +382,7 @@ int COLED::writeDMRIntEx(unsigned int slotNo, const class CUserDBentry& src, boo } // if both slots, use lines 2-3 for slot 1, lines 4-5 for slot 2 // if single slot, use lines 2-3 - if ( m_slot1Enabled && m_slot2Enabled ) { + if ( m_duplex ) { if (slotNo == 1U) { m_display.fillRect(0,OLED_LINE2,m_display.width(),40,BLACK); @@ -430,7 +430,7 @@ void COLED::clearDMRInt(unsigned int slotNo) { // if both slots, use lines 2-3 for slot 1, lines 4-5 for slot 2 // if single slot, use lines 2-3 - if ( m_slot1Enabled && m_slot2Enabled ){ + if ( m_duplex ){ if (slotNo == 1U) { m_display.fillRect(0, OLED_LINE3, m_display.width(), 40, BLACK); m_display.setCursor(0,OLED_LINE3); diff --git a/OLED.h b/OLED.h index 5f3ead0..a703ba5 100644 --- a/OLED.h +++ b/OLED.h @@ -41,7 +41,7 @@ class COLED : public CDisplay { public: - COLED(unsigned char displayType, unsigned char displayBrighness, bool displayInvert, bool displayScroll, bool displayRotate, bool displayLogoScreensaver, bool slot1Enabled, bool slot2Enabled); + COLED(unsigned char displayType, unsigned char displayBrighness, bool displayInvert, bool displayScroll, bool displayRotate, bool displayLogoScreensaver, bool duplex); virtual ~COLED(); virtual bool open(); @@ -88,7 +88,7 @@ private: bool m_displayScroll; bool m_displayRotate; bool m_displayLogoScreensaver; - bool m_slot1Enabled; + bool m_duplex; bool m_slot2Enabled; std::string m_ipaddress; ArduiPi_OLED m_display; From 125f21735bedb1c56ee7fc732847f74884067737 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Fri, 12 Mar 2021 19:56:05 +0000 Subject: [PATCH 2/2] Move the host lookup for the DMR Direct Network. --- DMRDirectNetwork.cpp | 7 +++---- DMRDirectNetwork.h | 4 +++- Version.h | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/DMRDirectNetwork.cpp b/DMRDirectNetwork.cpp index 8bb397f..4ed871c 100644 --- a/DMRDirectNetwork.cpp +++ b/DMRDirectNetwork.cpp @@ -31,6 +31,8 @@ const unsigned int HOMEBREW_DATA_PACKET_LENGTH = 55U; CDMRDirectNetwork::CDMRDirectNetwork(const std::string& address, unsigned int port, unsigned int local, unsigned int id, const std::string& password, bool duplex, const char* version, bool slot1, bool slot2, HW_TYPE hwType, bool debug) : +m_address(address), +m_port(port), m_addr(), m_addrLen(0U), m_id(NULL), @@ -70,9 +72,6 @@ m_beacon(false) assert(id > 1000U); assert(!password.empty()); - if (CUDPSocket::lookup(address, port, m_addr, m_addrLen) != 0) - m_addrLen = 0U; - m_buffer = new unsigned char[BUFFER_LENGTH]; m_salt = new unsigned char[sizeof(uint32_t)]; m_id = new uint8_t[4U]; @@ -122,7 +121,7 @@ void CDMRDirectNetwork::setConfig(const std::string& callsign, unsigned int rxFr bool CDMRDirectNetwork::open() { - if (m_addrLen == 0U) { + if (CUDPSocket::lookup(m_address, m_port, m_addr, m_addrLen) != 0) { LogError("DMR, Could not lookup the address of the DMR Network"); return false; } diff --git a/DMRDirectNetwork.h b/DMRDirectNetwork.h index 896d5e4..30ba951 100644 --- a/DMRDirectNetwork.h +++ b/DMRDirectNetwork.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015,2016,2017,2018,2020 by Jonathan Naylor G4KLX + * Copyright (C) 2015,2016,2017,2018,2020,2021 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 @@ -58,6 +58,8 @@ public: virtual void close(); private: + std::string m_address; + unsigned int m_port; sockaddr_storage m_addr; unsigned int m_addrLen; uint8_t* m_id; diff --git a/Version.h b/Version.h index 8a94573..6e4502f 100644 --- a/Version.h +++ b/Version.h @@ -19,6 +19,6 @@ #if !defined(VERSION_H) #define VERSION_H -const char* VERSION = "20210309"; +const char* VERSION = "20210312"; #endif