From 16e7ba13f8057f5a3210526254fc979fa09b0869 Mon Sep 17 00:00:00 2001 From: Jakob Gegeniger Date: Fri, 4 Apr 2025 16:30:22 +0200 Subject: [PATCH] refactoring spit messages --- components/spit/include/SPIT_Message.h | 112 ++- components/spit/src/SPIT_Message.cpp | 950 +++++++++++-------------- main/watchMain.cpp | 2 +- 3 files changed, 467 insertions(+), 597 deletions(-) diff --git a/components/spit/include/SPIT_Message.h b/components/spit/include/SPIT_Message.h index 9c3a0fb..86ba047 100644 --- a/components/spit/include/SPIT_Message.h +++ b/components/spit/include/SPIT_Message.h @@ -16,49 +16,46 @@ #include #include +#include +#include +#include using namespace std; static const string SPITID = "#spit#"; -// static char stringEmpty[] = ""; -static char nullChar[] = "\0"; class SPIT_Message { //----------- Header ----------- public: class Header { public: - static const int BYTESLENGTH = 99; + static constexpr int BYTESLENGTH = 99; virtual ~Header(); Header(const Header &orig); Header(); // Members private: string m_SPITID; - int m_SPITVersion; - unsigned char m_MessageNumber; - int m_BytesCount; - string m_ServerID; - string m_ClientID; + int m_SPITVersion{SPITVERSION}; + unsigned char m_MessageNumber{}; + int m_BytesCount{BYTESLENGTH}; + string m_ServerID{}; + string m_ClientID{}; int m_OPFlag; - int m_ParseOffset = 0; - - void initMembers(); + int m_ParseOffset{}; public: - const string getSPITID() const { return m_SPITID; } + string getSPITID() const { return m_SPITID; } int getSPITVersion() const { return m_SPITVersion; } unsigned char getMessageNumber() const { return m_MessageNumber; } int getBytesCount() const { return m_BytesCount; } - const string getServerID() const { return m_ServerID; } - const string getClientID() const { return m_ClientID; } + string getServerID() const { return m_ServerID; } + string getClientID() const { return m_ClientID; } int getOPFlag() const { return m_OPFlag; } // Receive - public: bool parse(char *p_Bytes, int p_ByteCount); // Send - public: Header(int p_SPITVersion, int p_OPFlag); void setMessageNumber(unsigned char p_MessageNumber); void setServerID(string p_ServerID); @@ -86,7 +83,7 @@ class SPIT_Message { Header *getHeader() const { return m_Header; } int getBytesCount() const { return m_BytesCount; } - const string getServerID() const { + const string getServerID() const { if (m_Header == NULL) return ""; return m_Header->getServerID(); @@ -135,25 +132,22 @@ class SPIT_Message { static const char VALUEFLAG_INCREASE = 0x01; // increase the value static const char VALUEFLAG_DECREASE = 0x02; // decrease the value - SPIT_Message(); + SPIT_Message() = default; virtual ~SPIT_Message(); // SPIT_Message(const SPIT_Message& orig); // Members private: - char *m_MessageBytes; - int m_MessageByteCount; - Header *m_Header; - OPPart *m_OPPart; - bool m_MessageBytesCreated; - - void initMembers(); + char *m_MessageBytes{}; + int m_MessageByteCount{}; + Header *m_Header{}; + OPPart * m_OPPart{}; + bool m_MessageBytesCreated{}; // Receive public: - SPIT_Message(char *p_MessageBytes, int p_MessageBytesLength); + SPIT_Message(char *msgBytes, int msgSize); - // SPIT_Message(const SPIT_Message& orig); const Header *getHeader() const { return m_Header; } int getOPFlag() const { if (m_Header == NULL) @@ -213,7 +207,7 @@ class SPIT_Message { void setLoginPassword(string p_LoginPassword); void setServerIP(string p_ServerIP); void setServerPort(int p_ServerPort); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //----------- ConnectAnswer ----------- @@ -251,7 +245,7 @@ class SPIT_Message { void setServerName(string p_ContollerName); void setConnected(bool p_Connected); void setStepTime(int p_StepTime_ms); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //----------- Disconnect ----------- @@ -274,7 +268,7 @@ class SPIT_Message { // Send public: Disconnect(); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //----------- Watchdog ----------- @@ -297,7 +291,7 @@ class SPIT_Message { // Send public: Watchdog(); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //----------- WatchdogAnswer ----------- @@ -319,7 +313,7 @@ class SPIT_Message { // Send public: WatchdogAnswer(); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //------------------------------ SPITProject ---------------------------------- @@ -358,7 +352,7 @@ class SPIT_Message { void setProjectID(string p_ClientID); void setProjectName(string p_ClientName); void setFramesPerSecond(const int p_FramesPerSecond); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //----------- CloseSPITProject ----------- @@ -387,7 +381,7 @@ class SPIT_Message { CloseSPITProject(); void setProjectID(string p_ClientID); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //----------- StartProjectTransfer ----------- @@ -408,7 +402,7 @@ class SPIT_Message { // Send public: RequestProjectTransfer(); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //----------- StartProjectTransfer ----------- @@ -430,7 +424,7 @@ class SPIT_Message { // Send public: StartProjectTransfer(); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //----------- EndProjectTransfer ----------- @@ -450,7 +444,7 @@ class SPIT_Message { bool parse(char *p_Bytes, int p_ByteCount); // Send EndProjectTransfer(); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //---------------------------- SPIT_Types ---------------------------------- @@ -522,7 +516,7 @@ class SPIT_Message { void setDelay(long long p_Delay); void setDuration(long long p_Duration); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //----------- RemoveSPITType ----------- @@ -551,7 +545,7 @@ class SPIT_Message { RemoveSPITType(); void setID(string p_ID); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //---------------------------- SPITObjects ---------------------------------- @@ -632,7 +626,7 @@ class SPIT_Message { void setDelay(long long p_Delay); void setDuration(long long p_Duration); void setActionAssigned(bool p_ActionAssigned); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //----------- RemoveSPITObject ----------- @@ -661,7 +655,7 @@ class SPIT_Message { public: RemoveSPITObject(); void setID(string p_ID); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //---------------------------- SPITPlayer ---------------------------------- @@ -704,7 +698,7 @@ class SPIT_Message { void setPlayerType(char p_PlayerType); void setPlayerIsRunning(bool p_IsPlaying); void setTime(long long p_Time); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //----------- PlaySPITObject ----------- @@ -746,7 +740,7 @@ class SPIT_Message { void setPlayPrePosition(bool p_PlayOldPosition); void setValue(int p_Value); void setValueFlag(char p_ValueFlag); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //----------- PlaySPITEnd ----------- @@ -772,7 +766,7 @@ class SPIT_Message { public: PlaySPITEnd(); void setPlayerID(string p_PlayerID); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //----------- ReportPlayStatus ----------- @@ -805,33 +799,29 @@ class SPIT_Message { void setID(string p_ID); void setFrameInsideObject(long long p_TimeInside); void setValue(int p_Value); - bool fillBytes(char *p_MessageBytes, int p_ByteCount); + bool fillBytes(char *msgBytes, int p_ByteCount); }; //----------------------- static helper functions ---------------------------- public: static bool isSystemLittleEndian(); - static int getInt(char *p_Bytes, int p_ByteCount, int p_Offset); - static int setInt(int p_Value, char *p_Bytes, int p_ByteCount, int p_Offset); - static long long getLong(char *p_Bytes, int p_ByteCount, int p_Offset); - static int setLong(long long p_Value, char *p_Bytes, int p_ByteCount, int p_Offset); - static bool getBoolean(char *p_Bytes, int p_ByteCount, int p_Offset); - static int setBoolean(bool p_Value, char *p_Bytes, int p_ByteCount, int p_Offset); - static char getByte(char *p_Bytes, int p_ByteCount, int p_Offset); - static int setByte(int p_Value, char *p_Bytes, int p_ByteCount, int p_Offset); + static optional getInt(char *bytes, int size, int& offset); + static optional getLong(char *bytes, int size, int &offset); + static optional getBoolean(char *bytes, int size, int& offset); + static optional getByte(char *bytes, int size, int& offset); + static int setInt(int value, char *bytes, int size, int offset); + static int setLong(long long value, char *bytes, int size, int offset); + static int setBoolean(bool value, char *bytes, int size, int offset); + static int setByte(int value, char *bytes, int size, int offset); + /** * Returns the string char* of the part of the byte sequence (0x00 null terminated). * @param p_Bytes the byte array - * @param p_Offset the startposition of strings bytes + * @param offset the startposition of strings bytes * @param p_Length the length of the string included the null terminate byte (0x00).
* The length of the string will be p_Length -1. - * @return the String char* - * @throws Exception if p_Bytes == null
- * p_Offset less than 0
- * p_Bytes.length less than p_Offset + p_Length
- * No 0x00 null terminate byte is found */ - static string getString(char *p_Bytes, int p_ByteCount, int p_Offset, int p_Length); + static optional getString(char *bytes, int size, int &offset, int maxLength); /** * Fill the p_String in the byte array.
@@ -856,6 +846,6 @@ class SPIT_Message { */ // static bool stringEqual(const char* p_String1, const char* p_String2); // static char* stringCopy(const char* p_String); - static char *createByteArray(const OPPart *p_OPPart, int *p_BytesCount); + static char *createByteArray(const OPPart &p_OPPart, int *p_BytesCount); }; #endif /* SPIT_MESSAGE_H */ diff --git a/components/spit/src/SPIT_Message.cpp b/components/spit/src/SPIT_Message.cpp index b88d531..7825600 100644 --- a/components/spit/src/SPIT_Message.cpp +++ b/components/spit/src/SPIT_Message.cpp @@ -16,50 +16,45 @@ #include "SPIT_Message.h" -SPIT_Message::SPIT_Message() { - initMembers(); -} +#include +#include "esp_log.h" + +const char * TAG = "SpitMsg"; + //---------- Receive --------- -SPIT_Message::SPIT_Message(char *p_MessageBytes, int p_MessageByteCount) { - initMembers(); - m_MessageBytes = p_MessageBytes; - if (m_MessageBytes == NULL) { +SPIT_Message::SPIT_Message(char *msgBytes, int msgSize) { + m_MessageBytes = msgBytes; + if (m_MessageBytes == nullptr) { m_MessageByteCount = 0; return; } - m_MessageByteCount = p_MessageByteCount; - if (parse() == NULL) { + m_MessageByteCount = msgSize; + if (!parse()) { + ESP_LOGE(TAG, "Failed ot parse message"); } } SPIT_Message::~SPIT_Message() { delete m_OPPart; - if (m_MessageBytesCreated && m_MessageBytes != NULL) { + if (m_MessageBytesCreated && m_MessageBytes != nullptr) { free(m_MessageBytes); } } -void SPIT_Message::initMembers() { - m_MessageBytes = NULL; - m_MessageByteCount = 0; - m_Header = NULL; - m_OPPart = NULL; - m_MessageBytesCreated = false; -} // Receive SPIT_Message::OPPart *SPIT_Message::parse() { - if (m_MessageBytes == NULL) - return NULL; - m_OPPart = NULL; + if (m_MessageBytes == nullptr) + return nullptr; + m_OPPart = nullptr; m_MessageBytesCreated = false; // parse Header m_Header = new Header(); if (m_Header->parse(m_MessageBytes, m_MessageByteCount) == false) { - m_Header = NULL; - m_OPPart = NULL; - return NULL; + m_Header = nullptr; + m_OPPart = nullptr; + return nullptr; } // parse OP @@ -127,15 +122,15 @@ SPIT_Message::OPPart *SPIT_Message::parse() { m_OPPart = new ReportPlayStatus(m_Header); } break; default: - m_OPPart = NULL; + m_OPPart = nullptr; break; } - if (m_OPPart != NULL) { + if (m_OPPart != nullptr) { if (m_OPPart->parse(m_MessageBytes, m_MessageByteCount) == false) { delete m_OPPart; - m_Header = NULL; - m_OPPart = NULL; - return NULL; + m_Header = nullptr; + m_OPPart = nullptr; + return nullptr; } } return m_OPPart; @@ -143,23 +138,22 @@ SPIT_Message::OPPart *SPIT_Message::parse() { //---------- Send ---------- SPIT_Message::SPIT_Message(OPPart *p_OPPart) { - initMembers(); - if (p_OPPart == NULL) + if (p_OPPart == nullptr) return; m_OPPart = p_OPPart; m_Header = m_OPPart->getHeader(); - if (m_Header == NULL) { - m_OPPart = NULL; + if (m_Header == nullptr) { + m_OPPart = nullptr; return; } } bool SPIT_Message::fillBytes() { - if (m_OPPart == NULL) + if (m_OPPart == nullptr) return false; try { - if (m_MessageBytes == NULL) - m_MessageBytes = createByteArray(m_OPPart, &m_MessageByteCount); - if (m_MessageBytes == NULL) + if (m_MessageBytes == nullptr) + m_MessageBytes = createByteArray(*m_OPPart, &m_MessageByteCount); + if (m_MessageBytes == nullptr) return false; m_MessageBytesCreated = true; return m_OPPart->fillBytes(m_MessageBytes, m_MessageByteCount); @@ -169,10 +163,10 @@ bool SPIT_Message::fillBytes() { return true; } const char *SPIT_Message::getMessageBytes() { - if (m_OPPart == NULL) - return NULL; + if (m_OPPart == nullptr) + return nullptr; if (fillBytes() == false) - return NULL; + return nullptr; return m_MessageBytes; } @@ -180,61 +174,47 @@ const char *SPIT_Message::getMessageBytes() { SPIT_Message::Header::~Header() { } SPIT_Message::Header::Header(const Header &orig) { - initMembers(); + m_SPITID = &SPITID[0]; m_MessageNumber = orig.getMessageNumber(); m_ServerID = orig.getServerID(); m_ClientID = orig.getClientID(); } -// Receive + SPIT_Message::Header::Header() { - initMembers(); -} - -void SPIT_Message::Header::initMembers() { m_SPITID = &SPITID[0]; - m_SPITVersion = SPITVERSION; - m_MessageNumber = 0; - m_BytesCount = BYTESLENGTH; - m_ServerID = ""; - m_ClientID = ""; } -bool SPIT_Message::Header::parse(char *p_MessageBytes, int p_MessageBytesLength) { - if (p_MessageBytes == NULL) +bool SPIT_Message::Header::parse(char *msgByts, int msgLen) { + if (!msgByts) { return false; - string stringSPIT_ID; + } try { m_ParseOffset = 0; - // SPIT ID - stringSPIT_ID = getString(p_MessageBytes, p_MessageBytesLength, m_ParseOffset, 7); - m_ParseOffset += 7; - if (SPITID != stringSPIT_ID) + auto strID = getString(msgByts, msgLen, m_ParseOffset, 7).value(); + if (strID != SPITID) { return false; - m_SPITVersion = getInt(p_MessageBytes, p_MessageBytesLength, m_ParseOffset); - if (m_SPITVersion < 0) + } + auto iVer = getInt(msgByts, msgLen, m_ParseOffset).value(); + if (iVer < 0) { return false; - m_ParseOffset += 4; - m_MessageNumber = getByte(p_MessageBytes, p_MessageBytesLength, m_ParseOffset); - m_ParseOffset += 1; - m_BytesCount = getInt(p_MessageBytes, p_MessageBytesLength, m_ParseOffset); - if (m_BytesCount < 0) + } + m_MessageNumber = getByte(msgByts, msgLen, m_ParseOffset).value(); + m_BytesCount = getInt(msgByts, msgLen, m_ParseOffset).value(); + if (m_BytesCount < 0) { return false; - m_ParseOffset += 4; - m_ServerID = getString(p_MessageBytes, p_MessageBytesLength, m_ParseOffset, 41); - m_ParseOffset += 41; - m_ClientID = getString(p_MessageBytes, p_MessageBytesLength, m_ParseOffset, 41); - m_ParseOffset += 41; - m_OPFlag = p_MessageBytes[m_ParseOffset] & 0xFF; - m_ParseOffset += 1; + } + m_ServerID = getString(msgByts, msgLen, m_ParseOffset, 41).value(); + m_ClientID = getString(msgByts, msgLen, m_ParseOffset, 41).value(); + m_OPFlag = msgByts[m_ParseOffset++] & 0xFF; } catch (...) { return false; } - return true; + return true; } // Send SPIT_Message::Header::Header(int p_SPITVersion, int p_OPFlag) { - initMembers(); + m_SPITID = &SPITID[0]; m_SPITVersion = p_SPITVersion; m_OPFlag = p_OPFlag; } @@ -253,7 +233,7 @@ void SPIT_Message::Header::setOPFlag(int p_OPFlag) { m_OPFlag = p_OPFlag; } bool SPIT_Message::Header::fillBytes(char *p_Bytes, int p_ByteCount) { - if (p_Bytes == NULL) + if (p_Bytes == nullptr) return false; try { m_ParseOffset = 0; @@ -272,13 +252,13 @@ bool SPIT_Message::Header::fillBytes(char *p_Bytes, int p_ByteCount) { //----------- OPPart ----------- SPIT_Message::OPPart::~OPPart() { - if (m_Header != NULL) { + if (m_Header != nullptr) { delete m_Header; } - m_Header = NULL; + m_Header = nullptr; } void SPIT_Message::OPPart::initMembers() { - m_Header = NULL; + m_Header = nullptr; m_ParseOffset = 0; m_BytesCount = 0; } @@ -287,14 +267,14 @@ void SPIT_Message::OPPart::initMembers() { SPIT_Message::OPPart::OPPart(Header *p_Header, int p_OPFlag) { initMembers(); m_Header = p_Header; - if (m_Header != NULL) { + if (m_Header != nullptr) { m_ParseOffset = Header::BYTESLENGTH; m_Header->setOPFlag(p_OPFlag); } } void SPIT_Message::OPPart::setHeader(Header *p_Header) { m_Header = p_Header; - if (m_Header != NULL) { + if (m_Header != nullptr) { m_ParseOffset = Header::BYTESLENGTH; } } @@ -309,17 +289,6 @@ SPIT_Message::OPPart::OPPart() { //----------- Connect ----------- SPIT_Message::Connect::~Connect() { } -/* SPIT_Message::Connect::Connect(const Connect& orig) : OPPart(new Header(*orig.getHeader()), OPFLAG) { - initMembers(); - if (orig.getHeader() == NULL) return; - m_ClientComputerName = stringCopy(orig.getClientComputerName()); - m_ClientName = stringCopy(orig.getClientName()); - m_LoginName = stringCopy(orig.getLoginName()); - m_LoginPassword = stringCopy(orig.getLoginPassword()); - m_ServerIP = stringCopy(orig.getServerIP()); - m_ServerPort = orig.getServerPort(); - } -*/ // Receive SPIT_Message::Connect::Connect(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); @@ -335,30 +304,23 @@ void SPIT_Message::Connect::initMembers() { m_BytesCount = BYTESLENGTH; } -bool SPIT_Message::Connect::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::Connect::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_ClientComputerName = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += 64; - m_ClientName = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += 64; - m_LoginName = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += 64; - m_LoginPassword = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += 64; - m_ServerIP = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 40); - m_ParseOffset += 40; - m_ServerPort = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_ClientComputerName = getString(msgBytes, p_ByteCount, m_ParseOffset, 64).value(); + m_ClientName = getString(msgBytes, p_ByteCount, m_ParseOffset, 64).value(); + m_LoginName = getString(msgBytes, p_ByteCount, m_ParseOffset, 64).value(); + m_LoginPassword = getString(msgBytes, p_ByteCount, m_ParseOffset, 64).value(); + m_ServerIP = getString(msgBytes, p_ByteCount, m_ParseOffset, 40).value(); + m_ServerPort = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); } catch (...) { return false; } @@ -392,22 +354,22 @@ void SPIT_Message::Connect::setServerPort(int p_ServerPort) { p_ServerPort = 0; m_ServerPort = p_ServerPort; } -bool SPIT_Message::Connect::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::Connect::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_ClientComputerName, p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += setString(m_ClientName, p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += setString(m_LoginName, p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += setString(m_LoginPassword, p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += setString(m_ServerIP, p_MessageBytes, p_ByteCount, m_ParseOffset, 40); - m_ParseOffset += setInt(m_ServerPort, p_MessageBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_ClientComputerName, msgBytes, p_ByteCount, m_ParseOffset, 64); + m_ParseOffset += setString(m_ClientName, msgBytes, p_ByteCount, m_ParseOffset, 64); + m_ParseOffset += setString(m_LoginName, msgBytes, p_ByteCount, m_ParseOffset, 64); + m_ParseOffset += setString(m_LoginPassword, msgBytes, p_ByteCount, m_ParseOffset, 64); + m_ParseOffset += setString(m_ServerIP, msgBytes, p_ByteCount, m_ParseOffset, 40); + m_ParseOffset += setInt(m_ServerPort, msgBytes, p_ByteCount, m_ParseOffset); } catch (...) { return false; } @@ -431,26 +393,21 @@ SPIT_Message::ConnectAnswer::ConnectAnswer(const ConnectAnswer &orig) { SPIT_Message::ConnectAnswer::ConnectAnswer(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::ConnectAnswer::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::ConnectAnswer::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_ServerComputerName = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += 64; - m_ServerName = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += 64; - m_StepTime = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_Connected = getBoolean(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 1; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_ServerComputerName = getString(msgBytes, p_ByteCount, m_ParseOffset, 64).value(); + m_ServerName = getString(msgBytes, p_ByteCount, m_ParseOffset, 64).value(); + m_StepTime = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_Connected = getBoolean(msgBytes, p_ByteCount, m_ParseOffset).value(); } catch (...) { return false; } @@ -478,20 +435,20 @@ void SPIT_Message::ConnectAnswer::setStepTime(int p_StepTime_ms) { p_StepTime_ms = 1; m_StepTime = p_StepTime_ms; } -bool SPIT_Message::ConnectAnswer::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::ConnectAnswer::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_ServerComputerName, p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += setString(m_ServerName, p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += setInt(m_StepTime, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setBoolean(m_Connected, p_MessageBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_ServerComputerName, msgBytes, p_ByteCount, m_ParseOffset, 64); + m_ParseOffset += setString(m_ServerName, msgBytes, p_ByteCount, m_ParseOffset, 64); + m_ParseOffset += setInt(m_StepTime, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setBoolean(m_Connected, msgBytes, p_ByteCount, m_ParseOffset); } catch (...) { return false; } @@ -509,18 +466,17 @@ SPIT_Message::Disconnect::~Disconnect() { SPIT_Message::Disconnect::Disconnect(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::Disconnect::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::Disconnect::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); } catch (...) { return false; } @@ -534,16 +490,16 @@ SPIT_Message::Disconnect::Disconnect() : OPPart() { setHeader(m_Header); } -bool SPIT_Message::Disconnect::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::Disconnect::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); + setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); m_ParseOffset += 4; } catch (...) { return false; @@ -562,18 +518,17 @@ SPIT_Message::Watchdog::~Watchdog() { SPIT_Message::Watchdog::Watchdog(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::Watchdog::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::Watchdog::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); } catch (...) { return false; } @@ -587,16 +542,16 @@ SPIT_Message::Watchdog::Watchdog() : OPPart() { setHeader(m_Header); m_ParseOffset = Header::BYTESLENGTH; } -bool SPIT_Message::Watchdog::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::Watchdog::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); + setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); m_ParseOffset += 4; } catch (...) { return false; @@ -616,18 +571,17 @@ SPIT_Message::WatchdogAnswer::~WatchdogAnswer() { SPIT_Message::WatchdogAnswer::WatchdogAnswer(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::WatchdogAnswer::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::WatchdogAnswer::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); } catch (...) { return false; } @@ -641,16 +595,16 @@ SPIT_Message::WatchdogAnswer::WatchdogAnswer() : OPPart() { setHeader(m_Header); m_ParseOffset = Header::BYTESLENGTH; } -bool SPIT_Message::WatchdogAnswer::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::WatchdogAnswer::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); + setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); m_ParseOffset += 4; } catch (...) { return false; @@ -673,24 +627,20 @@ SPIT_Message::ReportSPITProject::~ReportSPITProject() { SPIT_Message::ReportSPITProject::ReportSPITProject(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::ReportSPITProject::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::ReportSPITProject::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_ProjectID = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += 41; - m_ProjectName = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += 64; - m_FramesPerSecond = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_ProjectID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value(); + m_ProjectName = getString(msgBytes, p_ByteCount, m_ParseOffset, 64).value(); + m_FramesPerSecond = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); } catch (...) { return false; } @@ -713,19 +663,19 @@ void SPIT_Message::ReportSPITProject::setProjectName(string p_ProjectName) { void SPIT_Message::ReportSPITProject::setFramesPerSecond(const int p_FramesPerSecond) { m_FramesPerSecond = p_FramesPerSecond; } -bool SPIT_Message::ReportSPITProject::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::ReportSPITProject::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_ProjectID, p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += setString(m_ProjectName, p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += setInt(m_FramesPerSecond, p_MessageBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_ProjectID, msgBytes, p_ByteCount, m_ParseOffset, 41); + m_ParseOffset += setString(m_ProjectName, msgBytes, p_ByteCount, m_ParseOffset, 64); + m_ParseOffset += setInt(m_FramesPerSecond, msgBytes, p_ByteCount, m_ParseOffset); } catch (...) { return false; } @@ -744,20 +694,18 @@ SPIT_Message::CloseSPITProject::~CloseSPITProject() { SPIT_Message::CloseSPITProject::CloseSPITProject(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::CloseSPITProject::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::CloseSPITProject::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_ProjectID = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += 41; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_ProjectID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value(); } catch (...) { return false; } @@ -774,17 +722,17 @@ SPIT_Message::CloseSPITProject::CloseSPITProject() : OPPart() { void SPIT_Message::CloseSPITProject::setProjectID(string p_ProjectID) { m_ProjectID = p_ProjectID; } -bool SPIT_Message::CloseSPITProject::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::CloseSPITProject::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_ProjectID, p_MessageBytes, p_ByteCount, m_ParseOffset, 41); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_ProjectID, msgBytes, p_ByteCount, m_ParseOffset, 41); } catch (...) { return false; } @@ -802,18 +750,17 @@ SPIT_Message::RequestProjectTransfer::~RequestProjectTransfer() { SPIT_Message::RequestProjectTransfer::RequestProjectTransfer(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::RequestProjectTransfer::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::RequestProjectTransfer::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); } catch (...) { return false; } @@ -826,16 +773,16 @@ SPIT_Message::RequestProjectTransfer::RequestProjectTransfer() : OPPart() { setHeader(m_Header); m_ParseOffset = Header::BYTESLENGTH; } -bool SPIT_Message::RequestProjectTransfer::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::RequestProjectTransfer::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); } catch (...) { return false; } @@ -853,18 +800,17 @@ SPIT_Message::StartProjectTransfer::~StartProjectTransfer() { SPIT_Message::StartProjectTransfer::StartProjectTransfer(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::StartProjectTransfer::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::StartProjectTransfer::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); } catch (...) { return false; } @@ -878,16 +824,16 @@ SPIT_Message::StartProjectTransfer::StartProjectTransfer() : OPPart() { m_ParseOffset = Header::BYTESLENGTH; } -bool SPIT_Message::StartProjectTransfer::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::StartProjectTransfer::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); } catch (...) { return false; } @@ -905,18 +851,17 @@ SPIT_Message::EndProjectTransfer::~EndProjectTransfer() { SPIT_Message::EndProjectTransfer::EndProjectTransfer(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::EndProjectTransfer::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::EndProjectTransfer::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); } catch (...) { return false; } @@ -929,16 +874,16 @@ SPIT_Message::EndProjectTransfer::EndProjectTransfer() : OPPart() { setHeader(m_Header); m_ParseOffset = Header::BYTESLENGTH; } -bool SPIT_Message::EndProjectTransfer::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::EndProjectTransfer::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); } catch (...) { return false; } @@ -967,36 +912,26 @@ SPIT_Message::ReportSPITType::~ReportSPITType() { SPIT_Message::ReportSPITType::ReportSPITType(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::ReportSPITType::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::ReportSPITType::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_Confirmed = getBoolean(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 1; - m_SPITTypeID = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += 41; - m_Fixed = getBoolean(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 1; - m_ServerRemote = getBoolean(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 1; - m_ServerProjectIndepended = getBoolean(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 1; - m_SPITTypeGroupName = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 39); - m_ParseOffset += 39; - m_SPITTypeName = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += 64; - m_Delay = getLong(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 8; - m_Duration = getLong(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 8; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_Confirmed = getBoolean(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_SPITTypeID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value(); + m_Fixed = getBoolean(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_ServerRemote = getBoolean(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_ServerProjectIndepended = getBoolean(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_SPITTypeGroupName = getString(msgBytes, p_ByteCount, m_ParseOffset, 39).value(); + m_SPITTypeName = getString(msgBytes, p_ByteCount, m_ParseOffset, 64).value(); + m_Delay = getLong(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_Duration = getLong(msgBytes, p_ByteCount, m_ParseOffset).value(); } catch (...) { return false; } @@ -1037,25 +972,25 @@ void SPIT_Message::ReportSPITType::setDelay(long long p_Delay) { void SPIT_Message::ReportSPITType::setDuration(long long p_Duration) { m_Duration = p_Duration; } -bool SPIT_Message::ReportSPITType::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::ReportSPITType::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = m_Header->BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setBoolean(m_Confirmed, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_SPITTypeID, p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += setBoolean(m_Fixed, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setBoolean(m_ServerRemote, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setBoolean(m_ServerProjectIndepended, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_SPITTypeGroupName, p_MessageBytes, p_ByteCount, m_ParseOffset, 39); - m_ParseOffset += setString(m_SPITTypeName, p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += setLong(m_Delay, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setLong(m_Duration, p_MessageBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setBoolean(m_Confirmed, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_SPITTypeID, msgBytes, p_ByteCount, m_ParseOffset, 41); + m_ParseOffset += setBoolean(m_Fixed, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setBoolean(m_ServerRemote, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setBoolean(m_ServerProjectIndepended, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_SPITTypeGroupName, msgBytes, p_ByteCount, m_ParseOffset, 39); + m_ParseOffset += setString(m_SPITTypeName, msgBytes, p_ByteCount, m_ParseOffset, 64); + m_ParseOffset += setLong(m_Delay, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setLong(m_Duration, msgBytes, p_ByteCount, m_ParseOffset); } catch (...) { return false; } @@ -1074,20 +1009,18 @@ SPIT_Message::RemoveSPITType::~RemoveSPITType() { SPIT_Message::RemoveSPITType::RemoveSPITType(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::RemoveSPITType::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::RemoveSPITType::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_SPITTypeID = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += 41; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_SPITTypeID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value(); } catch (...) { return false; } @@ -1104,17 +1037,17 @@ SPIT_Message::RemoveSPITType::RemoveSPITType() : OPPart() { void SPIT_Message::RemoveSPITType::setID(string p_ID) { m_SPITTypeID = p_ID; } -bool SPIT_Message::RemoveSPITType::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::RemoveSPITType::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_SPITTypeID, p_MessageBytes, p_ByteCount, m_ParseOffset, 41); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_SPITTypeID, msgBytes, p_ByteCount, m_ParseOffset, 41); } catch (...) { return false; } @@ -1151,54 +1084,35 @@ SPIT_Message::ReportSPITObject::~ReportSPITObject() { SPIT_Message::ReportSPITObject::ReportSPITObject(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::ReportSPITObject::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::ReportSPITObject::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_Confirmed = getBoolean(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 1; - m_SPITObjectID = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += 41; - m_Fixed = getBoolean(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 1; - m_ServerRemote = getBoolean(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 1; - m_SPITObjectName = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += 64; - m_SPITTypeID = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += 41; - m_ServerParams = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += 64; - m_FrameStart = getLong(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 8; - m_FrameLength = getLong(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 8; - m_FrameFadeInLength = getLong(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 8; - m_FrameFadeOutLength = getLong(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 8; - m_ValueFactor = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_ValueUse = getByte(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 1; - m_Track = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_Remark = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += 64; - m_Delay = getLong(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 8; - m_Duration = getLong(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 8; - m_ActionAssigned = getBoolean(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 1; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_Confirmed = getBoolean(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_SPITObjectID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value(); + m_Fixed = getBoolean(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_ServerRemote = getBoolean(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_SPITObjectName = getString(msgBytes, p_ByteCount, m_ParseOffset, 64).value(); + m_SPITTypeID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value(); + m_ServerParams = getString(msgBytes, p_ByteCount, m_ParseOffset, 64).value(); + m_FrameStart = getLong(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_FrameLength = getLong(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_FrameFadeInLength = getLong(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_FrameFadeOutLength = getLong(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_ValueFactor = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_ValueUse = getByte(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_Track = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_Remark = getString(msgBytes, p_ByteCount, m_ParseOffset, 64).value(); + m_Delay = getLong(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_Duration = getLong(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_ActionAssigned = getBoolean(msgBytes, p_ByteCount, m_ParseOffset).value(); } catch (...) { return false; } @@ -1271,34 +1185,34 @@ void SPIT_Message::ReportSPITObject::setDuration(long long p_Duration) { void SPIT_Message::ReportSPITObject::setActionAssigned(bool p_ActionAssigned) { m_ActionAssigned = p_ActionAssigned; } -bool SPIT_Message::ReportSPITObject::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::ReportSPITObject::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setBoolean(m_Confirmed, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_SPITObjectID, p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += setBoolean(m_Fixed, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setBoolean(m_ServerRemote, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_SPITObjectName, p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += setString(m_SPITTypeID, p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += setString(m_ServerParams, p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += setLong(m_FrameStart, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setLong(m_FrameLength, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setLong(m_FrameFadeInLength, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setLong(m_FrameFadeOutLength, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setInt(m_ValueFactor, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setByte(m_ValueUse, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setInt(m_Track, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_Remark, p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += setLong(m_Delay, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setLong(m_Duration, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setBoolean(m_ActionAssigned, p_MessageBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setBoolean(m_Confirmed, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_SPITObjectID, msgBytes, p_ByteCount, m_ParseOffset, 41); + m_ParseOffset += setBoolean(m_Fixed, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setBoolean(m_ServerRemote, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_SPITObjectName, msgBytes, p_ByteCount, m_ParseOffset, 64); + m_ParseOffset += setString(m_SPITTypeID, msgBytes, p_ByteCount, m_ParseOffset, 41); + m_ParseOffset += setString(m_ServerParams, msgBytes, p_ByteCount, m_ParseOffset, 64); + m_ParseOffset += setLong(m_FrameStart, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setLong(m_FrameLength, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setLong(m_FrameFadeInLength, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setLong(m_FrameFadeOutLength, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_ValueFactor, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setByte(m_ValueUse, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_Track, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_Remark, msgBytes, p_ByteCount, m_ParseOffset, 64); + m_ParseOffset += setLong(m_Delay, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setLong(m_Duration, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setBoolean(m_ActionAssigned, msgBytes, p_ByteCount, m_ParseOffset); } catch (...) { return false; } @@ -1316,20 +1230,18 @@ SPIT_Message::RemoveSPITObject::~RemoveSPITObject() { SPIT_Message::RemoveSPITObject::RemoveSPITObject(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::RemoveSPITObject::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::RemoveSPITObject::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_SPITObjectID = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += 41; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_SPITObjectID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value(); } catch (...) { return false; } @@ -1347,17 +1259,17 @@ SPIT_Message::RemoveSPITObject::RemoveSPITObject() : OPPart() { void SPIT_Message::RemoveSPITObject::setID(string p_ID) { m_SPITObjectID = p_ID; } -bool SPIT_Message::RemoveSPITObject::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::RemoveSPITObject::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_SPITObjectID, p_MessageBytes, p_ByteCount, m_ParseOffset, 41); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_SPITObjectID, msgBytes, p_ByteCount, m_ParseOffset, 41); } catch (...) { return false; } @@ -1381,28 +1293,22 @@ SPIT_Message::PlaySPITStart::~PlaySPITStart() { SPIT_Message::PlaySPITStart::PlaySPITStart(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::PlaySPITStart::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::PlaySPITStart::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_PlayerID = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += 41; - m_PlayerName = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += 64; - m_PlayerType = getByte(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 1; - m_PlayerIsRunning = getBoolean(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 1; - m_Time = getLong(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 8; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_PlayerID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value(); + m_PlayerName = getString(msgBytes, p_ByteCount, m_ParseOffset, 64).value(); + m_PlayerType = getByte(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_PlayerIsRunning = getBoolean(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_Time = getLong(msgBytes, p_ByteCount, m_ParseOffset).value(); } catch (...) { return false; } @@ -1432,21 +1338,21 @@ void SPIT_Message::PlaySPITStart::setPlayerIsRunning(bool p_IsPlaying) { void SPIT_Message::PlaySPITStart::setTime(long long p_Time) { m_Time = p_Time; } -bool SPIT_Message::PlaySPITStart::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::PlaySPITStart::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_PlayerID, p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += setString(m_PlayerName, p_MessageBytes, p_ByteCount, m_ParseOffset, 64); - m_ParseOffset += setByte(m_PlayerType, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setBoolean(m_PlayerIsRunning, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setLong(m_Time, p_MessageBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_PlayerID, msgBytes, p_ByteCount, m_ParseOffset, 41); + m_ParseOffset += setString(m_PlayerName, msgBytes, p_ByteCount, m_ParseOffset, 64); + m_ParseOffset += setByte(m_PlayerType, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setBoolean(m_PlayerIsRunning, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setLong(m_Time, msgBytes, p_ByteCount, m_ParseOffset); } catch (...) { return false; } @@ -1469,30 +1375,23 @@ SPIT_Message::PlaySPITObject::~PlaySPITObject() { SPIT_Message::PlaySPITObject::PlaySPITObject(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::PlaySPITObject::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::PlaySPITObject::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_PlayerID = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += 41; - m_SPITObjectID = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += 41; - m_FrameInsideObject = getLong(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 8; - m_PlayPrePosition = getBoolean(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 1; - m_Value = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_ValueFlag = getByte(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 1; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_PlayerID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value(); + m_SPITObjectID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value(); + m_FrameInsideObject = getLong(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_PlayPrePosition = getBoolean(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_Value = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_ValueFlag = getByte(msgBytes, p_ByteCount, m_ParseOffset).value(); } catch (...) { return false; } @@ -1523,22 +1422,22 @@ void SPIT_Message::PlaySPITObject::setValue(int p_Value) { void SPIT_Message::PlaySPITObject::setValueFlag(char p_ValueFlag) { m_ValueFlag = p_ValueFlag; } -bool SPIT_Message::PlaySPITObject::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::PlaySPITObject::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_PlayerID, p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += setString(m_SPITObjectID, p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += setLong(m_FrameInsideObject, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setBoolean(m_PlayPrePosition, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setInt(m_Value, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setByte(m_ValueFlag, p_MessageBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_PlayerID, msgBytes, p_ByteCount, m_ParseOffset, 41); + m_ParseOffset += setString(m_SPITObjectID, msgBytes, p_ByteCount, m_ParseOffset, 41); + m_ParseOffset += setLong(m_FrameInsideObject, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setBoolean(m_PlayPrePosition, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_Value, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setByte(m_ValueFlag, msgBytes, p_ByteCount, m_ParseOffset); } catch (...) { return false; } @@ -1557,20 +1456,18 @@ SPIT_Message::PlaySPITEnd::~PlaySPITEnd() { SPIT_Message::PlaySPITEnd::PlaySPITEnd(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::PlaySPITEnd::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::PlaySPITEnd::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_PlayerID = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += 41; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_PlayerID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value(); } catch (...) { return false; } @@ -1587,17 +1484,17 @@ SPIT_Message::PlaySPITEnd::PlaySPITEnd() : OPPart() { void SPIT_Message::PlaySPITEnd::setPlayerID(string p_PlayerID) { m_PlayerID = p_PlayerID; } -bool SPIT_Message::PlaySPITEnd::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::PlaySPITEnd::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_PlayerID, p_MessageBytes, p_ByteCount, m_ParseOffset, 41); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_PlayerID, msgBytes, p_ByteCount, m_ParseOffset, 41); } catch (...) { return false; } @@ -1618,24 +1515,20 @@ SPIT_Message::ReportPlayStatus::~ReportPlayStatus() { SPIT_Message::ReportPlayStatus::ReportPlayStatus(Header *p_Header) : OPPart(p_Header, OPFLAG) { initMembers(); } -bool SPIT_Message::ReportPlayStatus::parse(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::ReportPlayStatus::parse(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; int intOPFlag = m_Header->getOPFlag(); if (intOPFlag != OPFLAG) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_BytesCount = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; - m_SPITObjectID = getString(p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += 41; - m_FrameInsideObject = getLong(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 8; - m_Value = getInt(p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += 4; + m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_SPITObjectID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value(); + m_FrameInsideObject = getLong(msgBytes, p_ByteCount, m_ParseOffset).value(); + m_Value = getInt(msgBytes, p_ByteCount, m_ParseOffset).value(); } catch (...) { return false; } @@ -1658,19 +1551,19 @@ void SPIT_Message::ReportPlayStatus::setFrameInsideObject(long long p_TimeInside void SPIT_Message::ReportPlayStatus::setValue(int p_Value) { m_Value = p_Value; } -bool SPIT_Message::ReportPlayStatus::fillBytes(char *p_MessageBytes, int p_ByteCount) { - if (p_MessageBytes == NULL) +bool SPIT_Message::ReportPlayStatus::fillBytes(char *msgBytes, int p_ByteCount) { + if (msgBytes == nullptr) return false; - if (m_Header == NULL) + if (m_Header == nullptr) return false; - if (m_Header->fillBytes(p_MessageBytes, p_ByteCount) == false) + if (m_Header->fillBytes(msgBytes, p_ByteCount) == false) return false; try { m_ParseOffset = Header::BYTESLENGTH; - m_ParseOffset += setInt(m_BytesCount, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setString(m_SPITObjectID, p_MessageBytes, p_ByteCount, m_ParseOffset, 41); - m_ParseOffset += setLong(m_FrameInsideObject, p_MessageBytes, p_ByteCount, m_ParseOffset); - m_ParseOffset += setInt(m_Value, p_MessageBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setString(m_SPITObjectID, msgBytes, p_ByteCount, m_ParseOffset, 41); + m_ParseOffset += setLong(m_FrameInsideObject, msgBytes, p_ByteCount, m_ParseOffset); + m_ParseOffset += setInt(m_Value, msgBytes, p_ByteCount, m_ParseOffset); } catch (...) { return false; } @@ -1689,83 +1582,79 @@ bool SPIT_Message::isSystemLittleEndian() { return true; } -int SPIT_Message::getInt(char *p_Bytes, int p_ByteCount, int p_Offset) { - if (p_Offset < 0) - throw "ParseError_received"; - if (p_Bytes == NULL || p_ByteCount < p_Offset + 4) - throw "ParseError_received"; +optional SPIT_Message::getInt(char *bytes, int size, int &offset) { + if (!bytes || offset < 0 || offset + 4 > size) + return std::nullopt; // low byte first int intValue = 0; if (isSystemLittleEndian() == false) { - intValue += ((p_Bytes[p_Offset + 0] & 0x000000ff)); - intValue += ((p_Bytes[p_Offset + 1] & 0x000000ff) << 8); - intValue += ((p_Bytes[p_Offset + 2] & 0x000000ff) << 16); - intValue += ((p_Bytes[p_Offset + 3] & 0x000000ff) << 24); + intValue += ((bytes[offset + 0] & 0x000000ff)); + intValue += ((bytes[offset + 1] & 0x000000ff) << 8); + intValue += ((bytes[offset + 2] & 0x000000ff) << 16); + intValue += ((bytes[offset + 3] & 0x000000ff) << 24); } else { - intValue += ((p_Bytes[p_Offset + 3] & 0x000000ff)); - intValue += ((p_Bytes[p_Offset + 2] & 0x000000ff) << 8); - intValue += ((p_Bytes[p_Offset + 1] & 0x000000ff) << 16); - intValue += ((p_Bytes[p_Offset + 0] & 0x000000ff) << 24); + intValue += ((bytes[offset + 3] & 0x000000ff)); + intValue += ((bytes[offset + 2] & 0x000000ff) << 8); + intValue += ((bytes[offset + 1] & 0x000000ff) << 16); + intValue += ((bytes[offset + 0] & 0x000000ff) << 24); } + offset += 4; return intValue; } int SPIT_Message::setInt(int p_Value, char *p_Bytes, int p_ByteCount, int p_Offset) { if (p_Offset < 0) throw "ParseError_send"; - if (p_Bytes == NULL || p_ByteCount < p_Offset + 4) + if (p_Bytes == nullptr || p_ByteCount < p_Offset + 4) throw "ParseError_send"; // low byte first - int intTest; if (isSystemLittleEndian() == false) { p_Bytes[p_Offset + 0] = (char)(p_Value & 0x000000ff); p_Bytes[p_Offset + 1] = (char)((p_Value & 0x0000ff00) >> 8); p_Bytes[p_Offset + 2] = (char)((p_Value & 0x00ff0000) >> 16); p_Bytes[p_Offset + 3] = (char)((p_Value & 0xff000000) >> 24); - - intTest = getInt(p_Bytes, p_ByteCount, p_Offset); } else { p_Bytes[p_Offset + 3] = (char)(p_Value & 0x000000ff); p_Bytes[p_Offset + 2] = (char)((p_Value & 0x0000ff00) >> 8); p_Bytes[p_Offset + 1] = (char)((p_Value & 0x00ff0000) >> 16); p_Bytes[p_Offset + 0] = (char)((p_Value & 0xff000000) >> 24); - - intTest = getInt(p_Bytes, p_ByteCount, p_Offset); } return 4; } -long long SPIT_Message::getLong(char *p_Bytes, int p_ByteCount, int p_Offset) { - if (p_Offset < 0) - throw "ParseError_received"; - if (p_Bytes == NULL || p_ByteCount < p_Offset + 8) - throw "ParseError_received"; + +optional SPIT_Message::getLong(char *bytes, int size, int &offset) { + if (!bytes || offset < 0 || offset + 8 > size) + return std::nullopt; + // low byte first long long intValue = 0; if (isSystemLittleEndian() == false) { - intValue += ((long long)(p_Bytes[p_Offset] & 0x000000ff)); - intValue += ((long long)(p_Bytes[p_Offset + 1] & 0x000000ff) << 8); - intValue += ((long long)(p_Bytes[p_Offset + 2] & 0x000000ff) << 16); - intValue += ((long long)(p_Bytes[p_Offset + 3] & 0x000000ff) << 24); - intValue += ((long long)(p_Bytes[p_Offset + 4] & 0x000000ff) << 32); - intValue += ((long long)(p_Bytes[p_Offset + 5] & 0x000000ff) << 40); - intValue += ((long long)(p_Bytes[p_Offset + 6] & 0x000000ff) << 48); - intValue += ((long long)(p_Bytes[p_Offset + 7] & 0x000000ff) << 56); + intValue += ((long long)(bytes[offset] & 0x000000ff)); + intValue += ((long long)(bytes[offset + 1] & 0x000000ff) << 8); + intValue += ((long long)(bytes[offset + 2] & 0x000000ff) << 16); + intValue += ((long long)(bytes[offset + 3] & 0x000000ff) << 24); + intValue += ((long long)(bytes[offset + 4] & 0x000000ff) << 32); + intValue += ((long long)(bytes[offset + 5] & 0x000000ff) << 40); + intValue += ((long long)(bytes[offset + 6] & 0x000000ff) << 48); + intValue += ((long long)(bytes[offset + 7] & 0x000000ff) << 56); } else { - intValue += ((long long)(p_Bytes[p_Offset + 7] & 0x000000ff)); - intValue += ((long long)(p_Bytes[p_Offset + 6] & 0x000000ff) << 8); - intValue += ((long long)(p_Bytes[p_Offset + 5] & 0x000000ff) << 16); - intValue += ((long long)(p_Bytes[p_Offset + 4] & 0x000000ff) << 24); - intValue += ((long long)(p_Bytes[p_Offset + 3] & 0x000000ff) << 32); - intValue += ((long long)(p_Bytes[p_Offset + 2] & 0x000000ff) << 40); - intValue += ((long long)(p_Bytes[p_Offset + 1] & 0x000000ff) << 48); - intValue += ((long long)(p_Bytes[p_Offset + 0] & 0x000000ff) << 56); + intValue += ((long long)(bytes[offset + 7] & 0x000000ff)); + intValue += ((long long)(bytes[offset + 6] & 0x000000ff) << 8); + intValue += ((long long)(bytes[offset + 5] & 0x000000ff) << 16); + intValue += ((long long)(bytes[offset + 4] & 0x000000ff) << 24); + intValue += ((long long)(bytes[offset + 3] & 0x000000ff) << 32); + intValue += ((long long)(bytes[offset + 2] & 0x000000ff) << 40); + intValue += ((long long)(bytes[offset + 1] & 0x000000ff) << 48); + intValue += ((long long)(bytes[offset + 0] & 0x000000ff) << 56); } + offset += 8; return intValue; } + int SPIT_Message::setLong(long long p_Value, char *p_Bytes, int p_ByteCount, int p_Offset) { if (p_Offset < 0) throw "ParseError_send"; - if (p_Bytes == NULL || p_ByteCount < p_Offset + 8) + if (p_Bytes == nullptr || p_ByteCount < p_Offset + 8) throw "ParseError_send"; // low byte first if (isSystemLittleEndian() == false) { @@ -1789,21 +1678,17 @@ int SPIT_Message::setLong(long long p_Value, char *p_Bytes, int p_ByteCount, int } return 8; } -bool SPIT_Message::getBoolean(char *p_Bytes, int p_ByteCount, int p_Offset) { - if (p_Offset < 0) - throw "ParseError_received"; - if (p_Bytes == NULL || p_ByteCount < p_Offset + 1) - throw "ParseError_received"; - // low byte first - if (p_Bytes[p_Offset] > 0x00) - return true; - else - return false; + +optional SPIT_Message::getBoolean(char *bytes, int size, int &offset) { + if (!bytes || offset < 0 || offset + 1 > size) + return std::nullopt; + return {bytes[offset++] > 0x00}; } + int SPIT_Message::setBoolean(bool p_Value, char *p_Bytes, int p_ByteCount, int p_Offset) { if (p_Offset < 0) throw "ParseError_send"; - if (p_Bytes == NULL || p_ByteCount < p_Offset + 1) + if (p_Bytes == nullptr || p_ByteCount < p_Offset + 1) throw "ParseError_send"; if (p_Value == false) { p_Bytes[p_Offset] = 0x00; @@ -1812,82 +1697,77 @@ int SPIT_Message::setBoolean(bool p_Value, char *p_Bytes, int p_ByteCount, int p } return 1; } -char SPIT_Message::getByte(char *p_Bytes, int p_ByteCount, int p_Offset) { - if (p_Offset < 0) - throw "ParseError_received"; - if (p_Bytes == NULL || p_ByteCount < p_Offset + 1) - throw "ParseError_received"; - // low byte first - return p_Bytes[p_Offset]; + +optional SPIT_Message::getByte(char *bytes, int size, int &offset) { + if (!bytes || offset < 0 || offset + 1 > size) + return std::nullopt; + + return {bytes[offset++]}; } + int SPIT_Message::setByte(int p_Value, char *p_Bytes, int p_ByteCount, int p_Offset) { if (p_Offset < 0) throw "ParseError_send"; - if (p_Bytes == NULL || p_ByteCount < p_Offset + 1) + if (p_Bytes == nullptr || p_ByteCount < p_Offset + 1) throw "ParseError_send"; p_Bytes[p_Offset] = (char)(p_Value & 0xff); return 1; } -string SPIT_Message::getString(char *p_Bytes, int p_ByteCount, int p_Offset, int p_Length) { - if (p_Offset < 0) - throw "ParseError_received getString()"; - if (p_Bytes == NULL || p_ByteCount < p_Offset + p_Length) - throw "ParseError_received getString()"; - int intPos; - // get Length of String - for (intPos = 0; intPos < p_Length; intPos++) { - if (p_Bytes[p_Offset + intPos] == 0x00) - break; - } - if (intPos >= p_Length) - throw "ParseError_received getString()"; - string stringResult; - stringResult = &p_Bytes[p_Offset]; - return stringResult; + +optional SPIT_Message::getString(char *bytes, int size, int &offset, int maxLength) { + if (!bytes || offset < 0 || offset + maxLength > size) + return std::nullopt; + + size_t len = strnlen(&bytes[offset], maxLength); + if (len >= maxLength) + return std::nullopt; + + string str(&bytes[offset], len); + offset += maxLength; + return str; } -int SPIT_Message::setString(string p_String, char *p_Bytes, int p_ByteCount, int p_Offset, int p_Length) { - if (p_Offset < 0) +int SPIT_Message::setString(string p_String, char *p_Bytes, int p_ByteCount, int offset, int maxLength) { + if (offset < 0) throw "ParseError_send"; int intChar = 0; bool boolNullChar = false; - if (p_Length < 1) + if (maxLength < 1) throw "ParseError_send"; - if (p_Bytes == NULL || p_ByteCount < p_Offset + p_Length) + if (p_Bytes == nullptr || p_ByteCount < offset + maxLength) throw "ParseError_send"; int intLength; - if (p_String.length() + 1 > p_Length) { - intLength = p_Length; + if (p_String.length() + 1 > maxLength) { + intLength = maxLength; } else { intLength = p_String.length() + 1; } while (intChar < intLength) { - p_Bytes[p_Offset + intChar] = p_String.data()[intChar]; - if (p_String[intChar] == nullChar[0]) { + p_Bytes[offset + intChar] = p_String.data()[intChar]; + if (p_String[intChar] == '\0') { boolNullChar = true; break; } intChar++; } if (boolNullChar == false) { - p_Bytes[p_Offset + intLength - 1] = nullChar[0]; + p_Bytes[offset + intLength - 1] = '\0'; } - return p_Length; + return maxLength; } -char *SPIT_Message::createByteArray(const OPPart *p_OPPart, int *p_ByteCount) { - if (p_OPPart == NULL) - return NULL; +char *SPIT_Message::createByteArray(const OPPart &p_OPPart, int *p_ByteCount) { int intBytesCount = 0; char *o_ByteArray; try { intBytesCount = Header::BYTESLENGTH; - intBytesCount += p_OPPart->getBytesCount(); + intBytesCount += p_OPPart.getBytesCount(); o_ByteArray = (char *)malloc(intBytesCount); *p_ByteCount = intBytesCount; } catch (...) { - return NULL; + return nullptr; + ESP_LOGE(TAG, "Failed to allocate memory"); } return o_ByteArray; } diff --git a/main/watchMain.cpp b/main/watchMain.cpp index 5c1bb8c..d164655 100644 --- a/main/watchMain.cpp +++ b/main/watchMain.cpp @@ -927,7 +927,7 @@ void onPlaySpitType(string p_PlayerID, string spitTypeId, bool p_PlayerIsRunning * @param p_Value the new value */ void onPlayRemoteObjectStatus(const SPITType &p_SPITType, const SPITObject &p_SPITObject, long long p_FrameInsideObject, int p_Value) { - ESP_EARLY_LOGI(TAG, "eventPlayRemoteObjectStatus RemoteSPITType: %s RemoteSPITObject: %s Position: %lld Value: %d", p_SPITType.getName().data(), p_SPITObject.getName().data(), p_FrameInsideObject, p_Value); + ESP_EARLY_LOGD(TAG, "eventPlayRemoteObjectStatus RemoteSPITType: %s RemoteSPITObject: %s Position: %lld Value: %d", p_SPITType.getName().data(), p_SPITObject.getName().data(), p_FrameInsideObject, p_Value); } void SpitClientApp() {