From d5a9568b67c4351db19fb74cab590c21c4501976 Mon Sep 17 00:00:00 2001 From: wellenvogel Date: Wed, 17 Sep 2025 17:57:03 +0200 Subject: [PATCH] make birectional channels the default, clean up some channel handling --- lib/channel/GwChannel.cpp | 13 +++++++++++++ lib/channel/GwChannel.h | 3 ++- lib/channel/GwChannelInterface.h | 4 ++-- lib/hardware/GwChannelModes.h | 23 +++++++++++++++++++++++ lib/hardware/GwHardware.h | 6 +----- lib/serial/GwSerial.cpp | 13 ------------- lib/serial/GwSerial.h | 1 - lib/socketserver/GwSocketServer.cpp | 3 --- lib/socketserver/GwSocketServer.h | 1 - lib/socketserver/GwTcpClient.cpp | 3 --- lib/socketserver/GwTcpClient.h | 1 - lib/socketserver/GwUdpReader.cpp | 5 +---- lib/socketserver/GwUdpReader.h | 1 - lib/socketserver/GwUdpWriter.cpp | 3 --- lib/socketserver/GwUdpWriter.h | 1 - 15 files changed, 42 insertions(+), 39 deletions(-) create mode 100644 lib/hardware/GwChannelModes.h diff --git a/lib/channel/GwChannel.cpp b/lib/channel/GwChannel.cpp index 9c79983..1a0d06f 100644 --- a/lib/channel/GwChannel.cpp +++ b/lib/channel/GwChannel.cpp @@ -249,3 +249,16 @@ unsigned long GwChannel::countTx(){ if (! countOut) return 0UL; return countOut->getGlobal(); } +String GwChannel::typeString(int type){ + switch (type){ + case GWSERIAL_TYPE_UNI: + return "UNI"; + case GWSERIAL_TYPE_BI: + return "BI"; + case GWSERIAL_TYPE_RX: + return "RX"; + case GWSERIAL_TYPE_TX: + return "TX"; + } + return "UNKNOWN"; +} \ No newline at end of file diff --git a/lib/channel/GwChannel.h b/lib/channel/GwChannel.h index 66fb4ae..6b34432 100644 --- a/lib/channel/GwChannel.h +++ b/lib/channel/GwChannel.h @@ -77,7 +77,8 @@ class GwChannel{ if (maxSourceId < 0) return source == sourceId; return (source >= sourceId && source <= maxSourceId); } - String getMode(){return impl->getMode();} + static String typeString(int type); + String getMode(){return typeString(impl->getType());} int getMinId(){return sourceId;}; }; diff --git a/lib/channel/GwChannelInterface.h b/lib/channel/GwChannelInterface.h index a028eff..30550d9 100644 --- a/lib/channel/GwChannelInterface.h +++ b/lib/channel/GwChannelInterface.h @@ -1,11 +1,11 @@ #pragma once #include "GwBuffer.h" +#include "GwChannelModes.h" class GwChannelInterface{ public: virtual void loop(bool handleRead,bool handleWrite)=0; virtual void readMessages(GwMessageFetcher *writer)=0; virtual size_t sendToClients(const char *buffer, int sourceId, bool partial=false)=0; virtual Stream * getStream(bool partialWrites){ return NULL;} - virtual String getMode(){return "UNKNOWN";} - virtual int getType()=0; //return the numeric type + virtual int getType(){ return GWSERIAL_TYPE_BI;} //return the numeric type }; \ No newline at end of file diff --git a/lib/hardware/GwChannelModes.h b/lib/hardware/GwChannelModes.h new file mode 100644 index 0000000..a9d7757 --- /dev/null +++ b/lib/hardware/GwChannelModes.h @@ -0,0 +1,23 @@ +/* + This code is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + This code 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 + Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + defines for the channel modes(types) +*/ +#ifndef _GWCHANNELMODES_H +#define _GWCHANNELMODES_H +#define GWSERIAL_TYPE_UNI 1 +#define GWSERIAL_TYPE_BI 2 +#define GWSERIAL_TYPE_RX 3 +#define GWSERIAL_TYPE_TX 4 +#define GWSERIAL_TYPE_UNK 0 +#endif \ No newline at end of file diff --git a/lib/hardware/GwHardware.h b/lib/hardware/GwHardware.h index 0b14ab3..41bca41 100644 --- a/lib/hardware/GwHardware.h +++ b/lib/hardware/GwHardware.h @@ -20,11 +20,7 @@ #endif #ifndef _GWHARDWARE_H #define _GWHARDWARE_H -#define GWSERIAL_TYPE_UNI 1 -#define GWSERIAL_TYPE_BI 2 -#define GWSERIAL_TYPE_RX 3 -#define GWSERIAL_TYPE_TX 4 -#define GWSERIAL_TYPE_UNK 0 +#include "GwChannelModes.h" #include #include #include "GwAppInfo.h" diff --git a/lib/serial/GwSerial.cpp b/lib/serial/GwSerial.cpp index e6ec320..ed469f9 100644 --- a/lib/serial/GwSerial.cpp +++ b/lib/serial/GwSerial.cpp @@ -66,19 +66,6 @@ GwSerial::~GwSerial() if (lock != nullptr) vSemaphoreDelete(lock); } -String GwSerial::getMode(){ - switch (type){ - case GWSERIAL_TYPE_UNI: - return "UNI"; - case GWSERIAL_TYPE_BI: - return "BI"; - case GWSERIAL_TYPE_RX: - return "RX"; - case GWSERIAL_TYPE_TX: - return "TX"; - } - return "UNKNOWN"; -} int GwSerial::getType() { return type; } diff --git a/lib/serial/GwSerial.h b/lib/serial/GwSerial.h index 51c9100..ae2ca1f 100644 --- a/lib/serial/GwSerial.h +++ b/lib/serial/GwSerial.h @@ -42,7 +42,6 @@ class GwSerial : public GwChannelInterface{ virtual Stream *getStream(bool partialWrites); bool getAvailableWrite(){return availableWrite;} virtual void begin(unsigned long baud, uint32_t config=SERIAL_8N1, int8_t rxPin=-1, int8_t txPin=-1)=0; - virtual String getMode() override; virtual int getType() override; friend GwSerialStream; }; diff --git a/lib/socketserver/GwSocketServer.cpp b/lib/socketserver/GwSocketServer.cpp index 53ccb82..0e0b79e 100644 --- a/lib/socketserver/GwSocketServer.cpp +++ b/lib/socketserver/GwSocketServer.cpp @@ -4,7 +4,6 @@ #include "GwBuffer.h" #include "GwSocketConnection.h" #include "GwSocketHelper.h" -#include "GwHardware.h" GwSocketServer::GwSocketServer(const GwConfigHandler *config, GwLog *logger, int minId) { @@ -187,5 +186,3 @@ int GwSocketServer::numClients() GwSocketServer::~GwSocketServer() { } - -int GwSocketServer::getType() {return GWSERIAL_TYPE_BI;} \ No newline at end of file diff --git a/lib/socketserver/GwSocketServer.h b/lib/socketserver/GwSocketServer.h index dcee8fc..248fc95 100644 --- a/lib/socketserver/GwSocketServer.h +++ b/lib/socketserver/GwSocketServer.h @@ -27,6 +27,5 @@ class GwSocketServer: public GwChannelInterface{ virtual size_t sendToClients(const char *buf,int sourceId, bool partialWrite=false); int numClients(); virtual void readMessages(GwMessageFetcher *writer); - virtual int getType() override; }; #endif \ No newline at end of file diff --git a/lib/socketserver/GwTcpClient.cpp b/lib/socketserver/GwTcpClient.cpp index f3761db..a2c68eb 100644 --- a/lib/socketserver/GwTcpClient.cpp +++ b/lib/socketserver/GwTcpClient.cpp @@ -2,7 +2,6 @@ #include #include #include "GwSocketHelper.h" -#include "GwHardware.h" class ResolveArgs{ public: @@ -293,5 +292,3 @@ GwTcpClient::ResolvedAddress GwTcpClient::getResolved(){ GWSYNCHRONIZED(locker); return resolvedAddress; } - -int GwTcpClient::getType(){return GWSERIAL_TYPE_BI;} \ No newline at end of file diff --git a/lib/socketserver/GwTcpClient.h b/lib/socketserver/GwTcpClient.h index 8665e04..25cc654 100644 --- a/lib/socketserver/GwTcpClient.h +++ b/lib/socketserver/GwTcpClient.h @@ -53,5 +53,4 @@ public: virtual void readMessages(GwMessageFetcher *writer); bool isConnected(); String getError(){return error;} - virtual int getType() override; }; \ No newline at end of file diff --git a/lib/socketserver/GwUdpReader.cpp b/lib/socketserver/GwUdpReader.cpp index f5927be..29d854e 100644 --- a/lib/socketserver/GwUdpReader.cpp +++ b/lib/socketserver/GwUdpReader.cpp @@ -5,8 +5,6 @@ #include "GwSocketConnection.h" #include "GwSocketHelper.h" #include "GWWifi.h" -#include "GwHardware.h" - GwUdpReader::GwUdpReader(const GwConfigHandler *config, GwLog *logger, int minId) { @@ -165,5 +163,4 @@ size_t GwUdpReader::sendToClients(const char *buf, int source,bool partial) GwUdpReader::~GwUdpReader() { -} -int GwUdpReader::getType(){return GWSERIAL_TYPE_BI;} \ No newline at end of file +} \ No newline at end of file diff --git a/lib/socketserver/GwUdpReader.h b/lib/socketserver/GwUdpReader.h index 199096d..08c56bb 100644 --- a/lib/socketserver/GwUdpReader.h +++ b/lib/socketserver/GwUdpReader.h @@ -41,6 +41,5 @@ class GwUdpReader: public GwChannelInterface{ virtual void loop(bool handleRead=true,bool handleWrite=true); virtual size_t sendToClients(const char *buf,int sourceId, bool partialWrite=false); virtual void readMessages(GwMessageFetcher *writer); - virtual int getType() override; }; #endif \ No newline at end of file diff --git a/lib/socketserver/GwUdpWriter.cpp b/lib/socketserver/GwUdpWriter.cpp index 3ab9236..ef0020c 100644 --- a/lib/socketserver/GwUdpWriter.cpp +++ b/lib/socketserver/GwUdpWriter.cpp @@ -5,7 +5,6 @@ #include "GwSocketConnection.h" #include "GwSocketHelper.h" #include "GWWifi.h" -#include "GwHardware.h" GwUdpWriter::WriterSocket::WriterSocket(GwLog *l,int p,const String &src,const String &dst, SourceMode sm) : sourceMode(sm), source(src), destination(dst), port(p),logger(l) @@ -202,5 +201,3 @@ size_t GwUdpWriter::sendToClients(const char *buf, int source,bool partial) GwUdpWriter::~GwUdpWriter() { } - -int GwUdpWriter::getType() {return GWSERIAL_TYPE_BI;} \ No newline at end of file diff --git a/lib/socketserver/GwUdpWriter.h b/lib/socketserver/GwUdpWriter.h index 3299cde..e17a17e 100644 --- a/lib/socketserver/GwUdpWriter.h +++ b/lib/socketserver/GwUdpWriter.h @@ -69,6 +69,5 @@ class GwUdpWriter: public GwChannelInterface{ virtual void loop(bool handleRead=true,bool handleWrite=true); virtual size_t sendToClients(const char *buf,int sourceId, bool partialWrite=false); virtual void readMessages(GwMessageFetcher *writer); - virtual int getType() override; }; #endif \ No newline at end of file