From 1a83eb4f52365819568a4a8bfd28b444ee6362b3 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Thu, 4 Jun 2020 08:16:48 +0100 Subject: [PATCH] Fix up aprstransmit. --- APRSTransmit/APRSTransmit.cpp | 4 +- APRSTransmit/APRSTransmitAppD.cpp | 62 ++++++++--------------------- APRSTransmit/APRSTransmitAppD.h | 10 ++--- GUICommon/GUICommon.vcxproj | 6 +-- GUICommon/GUICommon.vcxproj.filters | 14 +++---- Makefile | 2 +- MakefileGUI | 2 +- 7 files changed, 36 insertions(+), 64 deletions(-) diff --git a/APRSTransmit/APRSTransmit.cpp b/APRSTransmit/APRSTransmit.cpp index e50393d..b5ae92f 100644 --- a/APRSTransmit/APRSTransmit.cpp +++ b/APRSTransmit/APRSTransmit.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 by Jonathan Naylor G4KLX + * Copyright (C) 2014,2020 by Jonathan Naylor G4KLX * APRSTransmit Copyright (C) 2015 Geoffrey Merck F4FXL / KC3FRA * * This program is free software; you can redistribute it and/or modify @@ -24,7 +24,7 @@ CAPRSTransmit::CAPRSTransmit(const wxString& callsign, const wxString& text) : -m_socket(wxEmptyString, 0U), +m_socket(), m_repeaterCallsign(callsign), m_APRSCallsign(callsign), m_text(text) diff --git a/APRSTransmit/APRSTransmitAppD.cpp b/APRSTransmit/APRSTransmitAppD.cpp index 7d69438..272e0b2 100644 --- a/APRSTransmit/APRSTransmitAppD.cpp +++ b/APRSTransmit/APRSTransmitAppD.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014,2018 by Jonathan Naylor G4KLX + * Copyright (C) 2014,2018,2020 by Jonathan Naylor G4KLX * APRSTransmit Copyright (C) 2015 Geoffrey Merck F4FXL / KC3FRA * * This program is free software; you can redistribute it and/or modify @@ -20,7 +20,6 @@ #include "DStarDefines.h" #include "APRSTransmit.h" #include "APRSTransmitAppD.h" -#include "APRSWriterThread.h" #include #include @@ -33,10 +32,8 @@ #endif const wxChar* REPEATER_PARAM = wxT("Repeater"); -const wxChar* APRS_PASSWORD = wxT("password"); const wxChar* APRS_HOST = wxT("host"); const wxChar* APRS_PORT = wxT("port"); -const wxChar* APRS_FILTER = wxT("filter"); const wxChar* DAEMON_SWITCH = wxT("daemon"); static CAPRSTransmitAppD* m_aprsTransmit = NULL; @@ -46,12 +43,6 @@ static void handler(int signum) m_aprsTransmit->kill(); } -static void aprsFrameCallback(const wxString& aprsFrame) -{ - //wxLogMessage(wxT("Received APRS Frame : ") + aprsFrame); - m_aprsTransmit->m_aprsFramesQueue->addData(new wxString(aprsFrame.Clone())); -} - int main(int argc, char** argv) { bool res = ::wxInitialize(); @@ -62,10 +53,8 @@ int main(int argc, char** argv) wxCmdLineParser parser(argc, argv); parser.AddParam(REPEATER_PARAM, wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL); - parser.AddOption(APRS_PASSWORD, wxEmptyString, wxEmptyString, wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL); parser.AddOption(APRS_HOST, wxEmptyString, wxEmptyString, wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL); parser.AddOption(APRS_PORT, wxEmptyString, wxEmptyString, wxCMD_LINE_VAL_NUMBER, wxCMD_LINE_PARAM_OPTIONAL); - parser.AddOption(APRS_FILTER, wxEmptyString, wxEmptyString, wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL); parser.AddSwitch(DAEMON_SWITCH, wxEmptyString, wxEmptyString, wxCMD_LINE_PARAM_OPTIONAL); int cmd = parser.Parse(); @@ -75,7 +64,7 @@ int main(int argc, char** argv) } if (parser.GetParamCount() < 1U) { - ::fprintf(stderr, "aprstransmitd: invalid command line usage: aprstransmitd [-password ] [-host ] [-port ] [-filter [; [-host ] [-port ] [-daemon] exiting\n"); ::wxUninitialize(); return 1; } @@ -91,10 +80,6 @@ int main(int argc, char** argv) } repeater.Replace(wxT("_"), wxT(" ")); repeater.MakeUpper(); - - wxString aprsPassword; - if (!parser.Found(APRS_PASSWORD, &aprsPassword)) - aprsPassword = wxT("00000"); long aprsPort; if (!parser.Found(APRS_PORT, &aprsPort)) @@ -104,18 +89,10 @@ int main(int argc, char** argv) if (!parser.Found(APRS_HOST, &aprsHost)) aprsHost = wxT("rotate.aprs2.net"); - wxString aprsFilter; - if (!parser.Found(APRS_FILTER, &aprsFilter)) { - /* no filter specified on command line, - build one which will tell the APRS server to pass - us all stations 50km around our repeater */ - aprsFilter = wxT("m/50"); - } - bool daemon = parser.Found(DAEMON_SWITCH); #if defined(__WINDOWS__) - m_aprsTransmit = new CAPRSTransmitAppD(repeater, aprsPassword, aprsHost, aprsPort, aprsFilter, daemon); + m_aprsTransmit = new CAPRSTransmitAppD(repeater, aprsHost, aprsPort, daemon); if (!m_aprsTransmit->init()) { ::wxUninitialize(); return 1; @@ -148,7 +125,7 @@ int main(int argc, char** argv) ::fclose(fp); } - m_aprsTransmit = new CAPRSTransmitAppD(repeater, aprsPassword, aprsHost, aprsPort, aprsFilter, daemon); + m_aprsTransmit = new CAPRSTransmitAppD(repeater, aprsHost, aprsPort, daemon); if (!m_aprsTransmit->init()) { ::wxUninitialize(); return 1; @@ -167,14 +144,12 @@ int main(int argc, char** argv) -CAPRSTransmitAppD::CAPRSTransmitAppD(const wxString& repeater, const wxString& aprsPassword, const wxString& aprsHost, unsigned int aprsPort, const wxString& aprsFilter, bool daemon) : +CAPRSTransmitAppD::CAPRSTransmitAppD(const wxString& repeater, const wxString& aprsHost, unsigned int aprsPort, bool daemon) : m_aprsFramesQueue(NULL), m_repeater(repeater), -m_aprsPassword(aprsPassword), m_aprsHost(aprsHost), -m_aprsFilter(aprsFilter), m_aprsPort(aprsPort), -m_aprsThread(NULL), +m_aprsSocket(NULL), m_run(false), m_checker(NULL), m_daemon(daemon) @@ -226,9 +201,8 @@ void CAPRSTransmitAppD::run() if(m_run) return; m_aprsFramesQueue = new CRingBuffer(30U); - m_aprsThread = new CAPRSWriterThread(m_repeater, m_aprsPassword, wxT("0.0.0.0"), m_aprsHost, m_aprsPort, m_aprsFilter, wxT("APRSTransmit 1.1")); - m_aprsThread->setReadAPRSCallback(aprsFrameCallback); - m_aprsThread->start(); + m_aprsSocket = new CUDPReaderWriter; + m_aprsSocket->open(); wxString * aprsFrame; @@ -236,38 +210,36 @@ void CAPRSTransmitAppD::run() while(m_run){ wxMilliSleep(10U); aprsFrame = m_aprsFramesQueue->getData(); - if(aprsFrame){ + if (aprsFrame != NULL) { CAPRSTransmit aprsTransmit(m_repeater, wxString(*aprsFrame)); aprsTransmit.run(); delete aprsFrame; } } - m_aprsThread->stop(); - cleanup(); } void CAPRSTransmitAppD::cleanup() { - m_aprsThread->setReadAPRSCallback(NULL); - - if(m_aprsFramesQueue) + if (m_aprsFramesQueue != NULL) { - while(m_aprsFramesQueue->peek()) delete m_aprsFramesQueue->getData(); + while (m_aprsFramesQueue->peek()) delete m_aprsFramesQueue->getData(); delete m_aprsFramesQueue; m_aprsFramesQueue = NULL; } - if(m_checker) { + + if (m_checker != NULL) { delete m_checker; m_checker = NULL; } - if(m_aprsThread) + if (m_aprsSocket != NULL) { - delete m_aprsThread; - m_aprsThread = NULL; + m_aprsSocket->close(); + delete m_aprsSocket; + m_aprsSocket = NULL; } } diff --git a/APRSTransmit/APRSTransmitAppD.h b/APRSTransmit/APRSTransmitAppD.h index 0e0c160..80b0734 100644 --- a/APRSTransmit/APRSTransmitAppD.h +++ b/APRSTransmit/APRSTransmitAppD.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014,2018 by Jonathan Naylor G4KLX + * Copyright (C) 2014,2018,2020 by Jonathan Naylor G4KLX * APRSTransmit Copyright (C) 2015 Geoffrey Merck F4FXL / KC3FRA * * This program is free software; you can redistribute it and/or modify @@ -20,8 +20,8 @@ #ifndef APRSTransmitAppD_H #define APRSTransmitAppD_H +#include "UDPReaderWriter.h" #include "RingBuffer.h" -#include "APRSWriterThread.h" #include #include @@ -31,7 +31,7 @@ class CAPRSTransmitAppD { public: - CAPRSTransmitAppD(const wxString& repeater, const wxString& aprsPassword, const wxString& aprsHost, unsigned int aprsPort, const wxString& aprsFilter, bool daemon); + CAPRSTransmitAppD(const wxString& repeater, const wxString& aprsHost, unsigned int aprsPort, bool daemon); ~CAPRSTransmitAppD(); CRingBuffer * m_aprsFramesQueue; @@ -41,9 +41,9 @@ public: void kill(); private: - wxString m_repeater, m_aprsPassword, m_aprsHost, m_aprsFilter; + wxString m_repeater, m_aprsHost; unsigned int m_aprsPort; - CAPRSWriterThread * m_aprsThread; + CUDPReaderWriter * m_aprsSocket; bool m_run; wxSingleInstanceChecker * m_checker; bool m_daemon; diff --git a/GUICommon/GUICommon.vcxproj b/GUICommon/GUICommon.vcxproj index 3d02b78..832cc6d 100644 --- a/GUICommon/GUICommon.vcxproj +++ b/GUICommon/GUICommon.vcxproj @@ -143,7 +143,7 @@ - + @@ -160,7 +160,7 @@ - + @@ -172,4 +172,4 @@ - \ No newline at end of file + diff --git a/GUICommon/GUICommon.vcxproj.filters b/GUICommon/GUICommon.vcxproj.filters index 1e65ef7..69724e2 100644 --- a/GUICommon/GUICommon.vcxproj.filters +++ b/GUICommon/GUICommon.vcxproj.filters @@ -32,6 +32,9 @@ Source Files + + Source Files + Source Files @@ -53,9 +56,6 @@ Source Files - - Source Files - @@ -79,6 +79,9 @@ Header Files + + Header Files + Header Files @@ -100,8 +103,5 @@ Header Files - - Header Files - - \ No newline at end of file + diff --git a/Makefile b/Makefile index cf5bae5..041add6 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ export LIBS := $(shell wx-config --libs base,net) -lgps export LDFLAGS := .PHONY: all -all: ircDDBGateway/ircddbgatewayd RemoteControl/remotecontrold \ +all: ircDDBGateway/ircddbgatewayd APRSTransmit/aprstransmitd RemoteControl/remotecontrold \ StarNetServer/starnetserverd TextTransmit/texttransmitd TimerControl/timercontrold TimeServer/timeserverd VoiceTransmit/voicetransmitd ircDDBGateway/ircddbgatewayd: Common/Common.a ircDDB/IRCDDB.a force diff --git a/MakefileGUI b/MakefileGUI index 15fd13d..d208c0c 100644 --- a/MakefileGUI +++ b/MakefileGUI @@ -20,7 +20,7 @@ export LIBS := $(shell wx-config --libs base,net) -lgps export LDFLAGS := .PHONY: all -all: ircDDBGateway/ircddbgateway ircDDBGatewayConfig/ircddbgatewayconfig RemoteControl/remotecontrol \ +all: ircDDBGateway/ircddbgateway ircDDBGatewayConfig/ircddbgatewayconfig APRSTransmit/aprstransmitd RemoteControl/remotecontrol \ StarNetServer/starnetserver TextTransmit/texttransmitd TimerControl/timercontrol TimeServer/timeserver VoiceTransmit/voicetransmitd ircDDBGateway/ircddbgateway: GUICommon/GUICommon.a Common/Common.a ircDDB/IRCDDB.a force