diff --git a/AX25Network.cpp b/AX25Network.cpp index 65b1058..9137f75 100644 --- a/AX25Network.cpp +++ b/AX25Network.cpp @@ -33,6 +33,7 @@ extern CMQTTConnection* m_mqtt; CAX25Network::CAX25Network(bool debug) : m_buffer(1000U, "AX.25 buffer"), +m_mutex(), m_debug(debug), m_enabled(false) { @@ -58,9 +59,6 @@ bool CAX25Network::write(const unsigned char* data, unsigned int length) if (!m_enabled) return true; - if (m_debug) - CUtils::dump(1U, "AX.25 Network Data Sent", data, length); - unsigned char txData[500U]; unsigned int txLength = 0U; @@ -88,7 +86,7 @@ bool CAX25Network::write(const unsigned char* data, unsigned int length) txData[txLength++] = AX25_FEND; if (m_debug) - CUtils::dump(1U, "AX.25 Network KISS Data Sent", txData, txLength); + CUtils::dump(1U, "AX.25 network KISS packet sent", txData, txLength); m_mqtt->publish("ax25-out", txData, txLength); @@ -105,11 +103,16 @@ unsigned int CAX25Network::read(unsigned char* data, unsigned int length) unsigned char rxData[500U]; unsigned int rxLength = 0U; + + m_mutex.lock(); + m_buffer.getData((unsigned char*)&rxLength, sizeof(unsigned int)); m_buffer.getData(rxData, rxLength); + m_mutex.unlock(); + if (m_debug) - CUtils::dump(1U, "AX.25 Network KISS Data Received", rxData, rxLength); + CUtils::dump(1U, "AX.25 network KISS packet received", rxData, rxLength); if (rxData[0U] != AX25_FEND) { LogWarning("Missing FEND at start of a KISS frame - 0x%02X", rxData[0U]); @@ -145,9 +148,6 @@ unsigned int CAX25Network::read(unsigned char* data, unsigned int length) if (!complete) return 0U; - if (m_debug) - CUtils::dump(1U, "AX.25 Network Data Received", data, length); - return length; } @@ -156,8 +156,12 @@ void CAX25Network::setData(const unsigned char* data, unsigned int length) assert(data != NULL); assert(length > 0U); + m_mutex.lock(); + m_buffer.addData((unsigned char*)&length, sizeof(unsigned int)); m_buffer.addData(data, length); + + m_mutex.unlock(); } void CAX25Network::reset() diff --git a/AX25Network.h b/AX25Network.h index 5652f7b..8251936 100644 --- a/AX25Network.h +++ b/AX25Network.h @@ -24,6 +24,7 @@ #if defined(USE_AX25) #include "RingBuffer.h" +#include "Mutex.h" #include #include @@ -49,6 +50,7 @@ public: private: CRingBuffer m_buffer; + CMutex m_mutex; bool m_debug; bool m_enabled; }; diff --git a/Version.h b/Version.h index cfe3a9b..8521601 100644 --- a/Version.h +++ b/Version.h @@ -19,6 +19,6 @@ #if !defined(VERSION_H) #define VERSION_H -const char* VERSION = "20230729"; +const char* VERSION = "20230730"; #endif