diff --git a/components/spit/include/SPITObject.h b/components/spit/include/SPITObject.h
index 837f709..5d6678d 100644
--- a/components/spit/include/SPITObject.h
+++ b/components/spit/include/SPITObject.h
@@ -169,8 +169,8 @@ class SPITObject {
bool setDuration(long long p_Duration);
bool setMessageOP(SPIT_Message::ReportSPITObject *p_ReportSPITObject);
- void fillMessageOP(SPIT_Message::ReportSPITObject *p_ReportSPITObject);
- void fillMessageOP(SPIT_Message::RemoveSPITObject *p_RemoveSPITObject);
+ void fillMessageOP(SPIT_Message::ReportSPITObject &p_ReportSPITObject);
+ void fillMessageOP(SPIT_Message::RemoveSPITObject &p_RemoveSPITObject);
};
#endif /* SPITOBJECT_H */
diff --git a/components/spit/include/SPIT_Client.h b/components/spit/include/SPIT_Client.h
index fd72916..b2e73b2 100644
--- a/components/spit/include/SPIT_Client.h
+++ b/components/spit/include/SPIT_Client.h
@@ -68,34 +68,34 @@ class SPIT_Client : I_SAD_Client {
//----- Connection Status -----
public:
/** No Connection established.
Either no connect tried or disconnected*/
- static const int CONNECTION_NONE = 0;
+ static constexpr int CONNECTION_NONE = 0;
/** Server has disconnected*/
- static const int CONNECTION_NONESERVER = 1;
+ static constexpr int CONNECTION_NONESERVER = 1;
/** The connection is lost
Either because of a network crash or because the server no longer responds.*/
- static const int CONNECTION_LOST = 2;
+ static constexpr int CONNECTION_LOST = 2;
/** Connection to the serv er is established.*/
- static const int CONNECTION_OK = 3;
+ static constexpr int CONNECTION_OK = 3;
/** A connection to the server is tried.*/
- static const int CONNECTION_TRYCONNECTION = 4;
+ static constexpr int CONNECTION_TRYCONNECTION = 4;
//------ PlayerType ------
public:
/** continous main player, time value can be used like a timecode.
The time value is the position in server's project.
A server should use only one main player.*/
- static const char PLAYERTYPE_MAIN = 0x02;
+ static constexpr char PLAYERTYPE_MAIN = 0x02;
/** continous player. This player plays SPIT objects sometime during the project.*/
- static const char PLAYERTYPE_CONTINOUS = 0x01;
+ static constexpr char PLAYERTYPE_CONTINOUS = 0x01;
/** diescrete player. This player is used to transmit single discrete values.*/
- static const char PLAYERTYPE_DISCRETE = 0x00;
+ static constexpr char PLAYERTYPE_DISCRETE = 0x00;
//------ Value Flag ------
//------ used by sendRemoteObject
public:
/**Set the given value directly*/
- static const char VALUEFLAG_DIRECT = 0x00;
+ static constexpr char VALUEFLAG_DIRECT = 0x00;
/**Increase the existing value by the given value.
This is usefull e.g. when instead of a fader a endless wheel is used*/
- static const char VALUEFLAG_INCREASE = 0x01;
+ static constexpr char VALUEFLAG_INCREASE = 0x01;
/**Decrease the existing value by the given value.
This is usefull e.g. when instead of a fader a endless wheel is used*/
- static const char VALUEFLAG_DECREASE = 0x02;
+ static constexpr char VALUEFLAG_DECREASE = 0x02;
//----- SPIT_Client -----
public:
@@ -182,7 +182,7 @@ class SPIT_Client : I_SAD_Client {
bool _doReconnect{}; // true = on eventServerDetected connect to the server identified by m_ServerID
public:
void fillHeader(SPIT_Message::Header *p_Header);
- int sendSPITMessage(SPIT_Message::OPPart &p_SPITMessageOPPart);
+ int sendSPITMessage(unique_ptr spitMessageOPPart);
//--------------- ServerAutoDetection SAD ---------------
public:
diff --git a/components/spit/include/SPIT_Message.h b/components/spit/include/SPIT_Message.h
index 86ba047..e4f7c89 100644
--- a/components/spit/include/SPIT_Message.h
+++ b/components/spit/include/SPIT_Message.h
@@ -15,9 +15,9 @@
#define SPIT_MESSAGE_H
#include
-#include
-#include
#include
+#include
+#include
#include
using namespace std;
@@ -29,10 +29,9 @@ class SPIT_Message {
class Header {
public:
static constexpr int BYTESLENGTH = 99;
- virtual ~Header();
Header(const Header &orig);
Header();
- // Members
+
private:
string m_SPITID;
int m_SPITVersion{SPITVERSION};
@@ -40,7 +39,7 @@ class SPIT_Message {
int m_BytesCount{BYTESLENGTH};
string m_ServerID{};
string m_ClientID{};
- int m_OPFlag;
+ int m_OPFlag{-1};
int m_ParseOffset{};
public:
@@ -53,15 +52,15 @@ class SPIT_Message {
int getOPFlag() const { return m_OPFlag; }
// Receive
- bool parse(char *p_Bytes, int p_ByteCount);
+ bool parse(const std::vector &message);
// Send
Header(int p_SPITVersion, int p_OPFlag);
- void setMessageNumber(unsigned char p_MessageNumber);
- void setServerID(string p_ServerID);
- void setClientID(string p_ID);
- void setOPFlag(int p_OPFlag);
- bool fillBytes(char *p_Bytes, int p_ByteCount);
+ void setMessageNumber(unsigned char p_MessageNumber) { m_MessageNumber = p_MessageNumber; }
+ void setServerID(string p_ID) { m_ServerID = p_ID; }
+ void setClientID(string p_ID) { m_ClientID = p_ID; }
+ void setOPFlag(int p_OPFlag) { m_OPFlag = p_OPFlag; }
+ bool fillBytes(std::vector &message);
};
//----------- OPPart -----------
@@ -70,100 +69,92 @@ class SPIT_Message {
// Members
protected:
- Header *m_Header;
- int m_ParseOffset;
+ unique_ptr m_Header{};
+ int m_ParseOffset{};
int m_BytesCount;
- private:
- void initMembers();
-
public:
- virtual ~OPPart();
- // OPPart(const OPPart& orig);
- Header *getHeader() const { return m_Header; }
+ Header *getHeader() const { return m_Header.get(); }
int getBytesCount() const { return m_BytesCount; }
const string getServerID() const {
- if (m_Header == NULL)
+ if (!m_Header) {
return "";
+ }
return m_Header->getServerID();
}
const string getClientID() const {
- if (m_Header == NULL)
+ if (!m_Header) {
return "";
+ }
return m_Header->getClientID();
}
int getOPFlag() const {
- if (m_Header == NULL)
+ if (!m_Header) {
return -1;
+ }
return m_Header->getOPFlag();
}
// Receive
- public:
- OPPart(Header *p_Header, int p_OPFlag);
- void setHeader(Header *p_Header);
- virtual bool parse(char *p_Bytes, int p_ByteCounth) = 0;
+ OPPart(unique_ptr p_Header, int p_OPFlag, int size);
+ void setHeader(unique_ptr p_Header);
+ virtual bool parse(const std::vector &message) = 0;
// Send
- public:
- OPPart();
- virtual bool fillBytes(char *p_Bytes, int p_ByteCount) = 0;
+ OPPart(int size);
+ virtual bool fillBytes(std::vector &message) = 0;
};
//----------- SPIT_Message -----------
public:
- static const int SPITVERSION = 1;
+ static constexpr int SPITVERSION = 1;
// SPIT_Object value usage
- static const char VALUEUSE_DISCARD = 0x00; // value of SPITObejct is not used
- static const char VALUEUSE_INRANGE = 0x01; // value of SPITOBject in range 0 - 1000000ppm
- static const char VALUEUSE_OVERRIDE = 0x02; // value can be overridden
+ static constexpr char VALUEUSE_DISCARD = 0x00; // value of SPITObejct is not used
+ static constexpr char VALUEUSE_INRANGE = 0x01; // value of SPITOBject in range 0 - 1000000ppm
+ static constexpr char VALUEUSE_OVERRIDE = 0x02; // value can be overridden
// SPIT Player type
- static const char PLAYERTYPE_MAIN = 0x02;
- static const char PLAYERTYPE_CONTINIOUS = 0x01;
- static const char PLAYERTYPE_DISCRETE = 0x00;
+ static constexpr char PLAYERTYPE_MAIN = 0x02;
+ static constexpr char PLAYERTYPE_CONTINIOUS = 0x01;
+ static constexpr char PLAYERTYPE_DISCRETE = 0x00;
// PlayObject value usage
- static const char VALUEFLAG_DIRECT = 0x00; // use the vlue direct
- static const char VALUEFLAG_INCREASE = 0x01; // increase the value
- static const char VALUEFLAG_DECREASE = 0x02; // decrease the value
+ static constexpr char VALUEFLAG_DIRECT = 0x00; // use the vlue direct
+ static constexpr char VALUEFLAG_INCREASE = 0x01; // increase the value
+ static constexpr char VALUEFLAG_DECREASE = 0x02; // decrease the value
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{};
+ std::vector m_MessageBytes{};
+ unique_ptr m_OPPart{};
// Receive
public:
- SPIT_Message(char *msgBytes, int msgSize);
+ SPIT_Message(std::vector message);
- const Header *getHeader() const { return m_Header; }
+ const Header *getHeader() const { return m_OPPart->getHeader(); }
int getOPFlag() const {
- if (m_Header == NULL)
+ if (!m_OPPart || !m_OPPart->getHeader()) {
return -1;
- return m_Header->getOPFlag();
+ }
+ return m_OPPart->getHeader()->getOPFlag();
}
- const OPPart *getOPPart() const { return m_OPPart; }
- int getMesageByteCount() const { return m_MessageByteCount; }
+ const OPPart *getOPPart() const { return m_OPPart.get(); }
- OPPart *parse();
+ private:
+ bool parse();
// Send
public:
- SPIT_Message(OPPart *p_OPPart);
+ SPIT_Message(unique_ptr p_OPPart);
bool fillBytes();
- const char *getMessageBytes();
+ const std::vector *getMessageBytes();
//------------------------------ Connection ----------------------------------
@@ -171,67 +162,58 @@ class SPIT_Message {
public:
class Connect : public OPPart {
public:
- static const int OPFLAG = 1;
- static const int BYTESLENGTH = 304;
+ static constexpr int OPFLAG = 1;
+ static constexpr int BYTESLENGTH = 304;
private:
- string m_ClientComputerName;
- string m_ClientName;
- string m_LoginName;
- string m_LoginPassword;
- string m_ServerIP;
- int m_ServerPort;
- void initMembers();
+ string m_ClientComputerName{};
+ string m_ClientName{};
+ string m_LoginName{};
+ string m_LoginPassword{};
+ string m_ServerIP{};
+ int m_ServerPort{};
public:
- ~Connect();
- // Connect(const Connect& orig);
// Receive
- public:
- Connect(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ Connect(unique_ptr p_Header);
+ bool parse(const std::vector &message);
- const string getClientComputerName() const { return m_ClientComputerName; }
- const string getClientName() const { return m_ClientName; }
- const string getLoginName() const { return m_LoginName; }
- const string getLoginPassword() const { return m_LoginPassword; }
- const string getServerIP() const { return m_ServerIP; }
+ string getClientComputerName() const { return m_ClientComputerName; }
+ string getClientName() const { return m_ClientName; }
+ string getLoginName() const { return m_LoginName; }
+ string getLoginPassword() const { return m_LoginPassword; }
+ string getServerIP() const { return m_ServerIP; }
int getServerPort() const { return m_ServerPort; }
// Send
- public:
- Connect();
- void setClientComputerName(string p_ComputerName);
- void setClientName(string p_ClientName);
- void setLoginName(string p_LoginName);
- void setLoginPassword(string p_LoginPassword);
- void setServerIP(string p_ServerIP);
+ Connect(string p_ComputerName, string p_ClientName);
+
+ void setLoginName(string p_LoginName) { m_LoginName = p_LoginName; }
+ void setLoginPassword(string p_LoginPassword) { m_LoginPassword = p_LoginPassword; }
+ void setServerIP(string p_ServerIP) { m_ServerIP = p_ServerIP; }
void setServerPort(int p_ServerPort);
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ bool fillBytes(std::vector &message);
};
//----------- ConnectAnswer -----------
class ConnectAnswer : public OPPart {
public:
- static const int OPFLAG = 2;
- static const int BYTESLENGTH = 137;
+ static constexpr int OPFLAG = 2;
+ static constexpr int BYTESLENGTH = 137;
private:
- string m_ServerComputerName;
- string m_ServerName;
- bool m_Connected;
- int m_StepTime; // ms step size the Server will send play sequences
-
- void initMembers();
+ string m_ServerComputerName{};
+ string m_ServerName{};
+ bool m_Connected{};
+ int m_StepTime{40}; // ms step size the Server will send play sequences
public:
- ~ConnectAnswer();
ConnectAnswer(const ConnectAnswer &orig);
// Receive
- ConnectAnswer(Header *p_Header);
+ ConnectAnswer(unique_ptr p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ bool parse(const std::vector &message);
const string getServerComputerName() const { return m_ServerComputerName; }
const string getServerName() const { return m_ServerName; }
@@ -239,81 +221,63 @@ class SPIT_Message {
int getStepTime() const { return m_StepTime; }
// Send
- public:
ConnectAnswer();
- void setServerComputerName(string p_ServerComputerName);
- void setServerName(string p_ContollerName);
- void setConnected(bool p_Connected);
+ void setServerComputerName(string p_ServerComputerName) { m_ServerComputerName = p_ServerComputerName; }
+ void setServerName(string p_ServerName) { m_ServerName = p_ServerName; }
+ void setConnected(bool p_Connected) { m_Connected = p_Connected; }
void setStepTime(int p_StepTime_ms);
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ bool fillBytes(std::vector &message);
};
//----------- Disconnect -----------
class Disconnect : public OPPart {
public:
- static const int OPFLAG = 3;
- static const int BYTESLENGTH = 4;
+ static constexpr int OPFLAG = 3;
+ static constexpr int BYTESLENGTH = 4;
- private:
- void initMembers();
-
- public:
- ~Disconnect();
Disconnect(const Disconnect &orig);
// Receive
- Disconnect(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ Disconnect(unique_ptr p_Header);
+ bool parse(const std::vector &message);
// Send
- public:
Disconnect();
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ bool fillBytes(std::vector &message);
};
//----------- Watchdog -----------
class Watchdog : public OPPart {
public:
- static const int OPFLAG = 8;
- static const int BYTESLENGTH = 4;
+ static constexpr int OPFLAG = 8;
+ static constexpr int BYTESLENGTH = 4;
- private:
- void initMembers();
-
- public:
- ~Watchdog();
Watchdog(const Watchdog &orig);
// Receive
- Watchdog(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ Watchdog(unique_ptr p_Header);
+ bool parse(const std::vector &message);
// Send
- public:
Watchdog();
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ bool fillBytes(std::vector &message);
};
//----------- WatchdogAnswer -----------
class WatchdogAnswer : public OPPart {
public:
- static const int OPFLAG = 9;
- static const int BYTESLENGTH = 4;
+ static constexpr int OPFLAG = 9;
+ static constexpr int BYTESLENGTH = 4;
- private:
- void initMembers();
// Receive
- public:
- ~WatchdogAnswer();
WatchdogAnswer(const WatchdogAnswer &orig);
- WatchdogAnswer(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ WatchdogAnswer(unique_ptr p_Header);
+ bool parse(const std::vector &message);
// Send
- public:
WatchdogAnswer();
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ bool fillBytes(std::vector &message);
};
//------------------------------ SPITProject ----------------------------------
@@ -322,129 +286,96 @@ class SPIT_Message {
class ReportSPITProject : public OPPart {
public:
- static const int OPFLAG = 11;
- static const int BYTESLENGTH = 113;
+ static constexpr int OPFLAG = 11;
+ static constexpr int BYTESLENGTH = 113;
private:
- string m_ProjectID;
- string m_ProjectName;
- int m_FramesPerSecond; // Frames per second
+ string m_ProjectID{};
+ string m_ProjectName{};
+ int m_FramesPerSecond{1000}; // Frames per second
- void initMembers();
// Receive
public:
- ~ReportSPITProject();
ReportSPITProject(const ReportSPITProject &orig);
- ReportSPITProject(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
- const string getProjectID() const {
- return m_ProjectID;
- }
- const string getProjectName() const {
- return m_ProjectName;
- }
- int getFramesPerSecond() const {
- return m_FramesPerSecond;
- }
+ ReportSPITProject(unique_ptr p_Header);
+ bool parse(const std::vector &message);
+ const string getProjectID() const { return m_ProjectID; }
+ const string getProjectName() const { return m_ProjectName; }
+ int getFramesPerSecond() const { return m_FramesPerSecond; }
// Send
- ReportSPITProject();
+ ReportSPITProject(string p_ProjectID, string p_ProjectName);
- void setProjectID(string p_ClientID);
- void setProjectName(string p_ClientName);
- void setFramesPerSecond(const int p_FramesPerSecond);
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ void setFramesPerSecond(const int p_FramesPerSecond) { m_FramesPerSecond = p_FramesPerSecond; }
+ bool fillBytes(std::vector &message);
};
//----------- CloseSPITProject -----------
class CloseSPITProject : public OPPart {
public:
- static const int OPFLAG = 13;
- static const int BYTESLENGTH = 45;
+ static constexpr int OPFLAG = 13;
+ static constexpr int BYTESLENGTH = 45;
private:
- string m_ProjectID;
-
- void initMembers();
+ string m_ProjectID{};
public:
- ~CloseSPITProject();
CloseSPITProject(const CloseSPITProject &orig);
// Receive
- CloseSPITProject(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ CloseSPITProject(unique_ptr p_Header);
+ bool parse(const std::vector &message);
const string getProjectID() const {
return m_ProjectID;
}
// Send
- public:
- CloseSPITProject();
-
- void setProjectID(string p_ClientID);
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ CloseSPITProject(string projectID);
+ bool fillBytes(std::vector &message);
};
//----------- StartProjectTransfer -----------
class RequestProjectTransfer : public OPPart {
public:
- static const int OPFLAG = 15;
- static const int BYTESLENGTH = 4;
+ static constexpr int OPFLAG = 15;
+ static constexpr int BYTESLENGTH = 4;
- private:
- void initMembers();
-
- public:
- ~RequestProjectTransfer();
RequestProjectTransfer(const RequestProjectTransfer &orig);
// Receive
- RequestProjectTransfer(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ RequestProjectTransfer(unique_ptr p_Header);
+ bool parse(const std::vector &message);
// Send
- public:
RequestProjectTransfer();
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ bool fillBytes(std::vector &message);
};
//----------- StartProjectTransfer -----------
class StartProjectTransfer : public OPPart {
public:
- static const int OPFLAG = 16;
- static const int BYTESLENGTH = 4;
+ static constexpr int OPFLAG = 16;
+ static constexpr int BYTESLENGTH = 4;
- private:
- void initMembers();
-
- public:
- ~StartProjectTransfer();
StartProjectTransfer(const StartProjectTransfer &orig);
// Receive
- StartProjectTransfer(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ StartProjectTransfer(unique_ptr p_Header);
+ bool parse(const std::vector &message);
// Send
- public:
StartProjectTransfer();
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ bool fillBytes(std::vector &message);
};
//----------- EndProjectTransfer -----------
class EndProjectTransfer : public OPPart {
public:
- static const int OPFLAG = 17;
- static const int BYTESLENGTH = 4;
+ static constexpr int OPFLAG = 17;
+ static constexpr int BYTESLENGTH = 4;
- private:
- void initMembers();
-
- public:
- ~EndProjectTransfer();
EndProjectTransfer(const EndProjectTransfer &orig);
// Receive
- EndProjectTransfer(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ EndProjectTransfer(unique_ptr p_Header);
+ bool parse(const std::vector &message);
// Send
EndProjectTransfer();
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ bool fillBytes(std::vector &message);
};
//---------------------------- SPIT_Types ----------------------------------
@@ -452,100 +383,73 @@ class SPIT_Message {
//----------- ReportSPITType -----------
class ReportSPITType : public OPPart {
public:
- static const int OPFLAG = 21;
- static const int BYTESLENGTH = 168;
+ static constexpr int OPFLAG = 21;
+ static constexpr int BYTESLENGTH = 168;
private:
- bool m_Confirmed;
- string m_SPITTypeID;
- bool m_Fixed;
- bool m_ServerRemote;
- bool m_ServerProjectIndepended;
- string m_SPITTypeGroupName;
- string m_SPITTypeName;
- long long m_Delay;
- long long m_Duration;
-
- void initMembers();
+ bool m_Confirmed {};
+ string m_SPITTypeID {};
+ bool m_Fixed {};
+ bool m_ServerRemote {};
+ bool m_ServerProjectIndepended {};
+ string m_SPITTypeGroupName {};
+ string m_SPITTypeName {};
+ long long m_Delay {};
+ long long m_Duration {};
public:
- ~ReportSPITType();
ReportSPITType(const ReportSPITType &orig);
// Receive
- ReportSPITType(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ ReportSPITType(unique_ptr p_Header);
+ bool parse(const std::vector &message);
- bool getConfirmed() const {
- return m_Confirmed;
- }
- const string getID() const {
- return m_SPITTypeID;
- }
- bool getFixed() const {
- return m_Fixed;
- }
- bool getServerRemote() const {
- return m_ServerRemote;
- }
- bool getServerProjectIndepended() const {
- return m_ServerProjectIndepended;
- }
- const string getGroupName() const {
- return m_SPITTypeGroupName;
- }
- const string getName() const {
- return m_SPITTypeName;
- }
- long long getDelay() const {
- return m_Delay;
- }
- long long getDuration() const {
- return m_Duration;
- }
+ bool getConfirmed() const { return m_Confirmed; }
+ const string getID() const { return m_SPITTypeID; }
+ bool getFixed() const { return m_Fixed; }
+ bool getServerRemote() const { return m_ServerRemote; }
+ bool getServerProjectIndepended() const { return m_ServerProjectIndepended; }
+ const string getGroupName() const { return m_SPITTypeGroupName; }
+ const string getName() const { return m_SPITTypeName; }
+ long long getDelay() const { return m_Delay; }
+ long long getDuration() const { return m_Duration; }
// Send
- public:
+
ReportSPITType();
+ void setConfirmed(bool p_Confirmed) { m_Confirmed = p_Confirmed; }
+ void setID(string p_ID) { m_SPITTypeID = p_ID; }
+ void setFixed(bool p_Fixed) { m_Fixed = p_Fixed; }
+ void setServerRemote(bool p_IsServerRemote) { m_ServerRemote = p_IsServerRemote; }
+ void setServerProjectIndepended(bool p_ProjectIndpended) { m_ServerProjectIndepended = p_ProjectIndpended; }
+ void setGroupName(string p_GroupName) { m_SPITTypeGroupName = p_GroupName; }
+ void setName(string p_Name) { m_SPITTypeName = p_Name; }
+ void setDelay(long long p_Delay) { m_Delay = p_Delay; }
+ void setDuration(long long p_Duration) { m_Duration = p_Duration; }
- void setConfirmed(bool p_Confirmed);
- void setID(string p_ID);
- void setFixed(bool p_Fixed);
- void setServerRemote(bool p_IsServerRemote);
- void setServerProjectIndepended(bool p_ProjectIndpended);
- void setGroupName(string p_GroupName);
- void setName(string p_Name);
- void setDelay(long long p_Delay);
- void setDuration(long long p_Duration);
-
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ bool fillBytes(std::vector &message);
};
//----------- RemoveSPITType -----------
class RemoveSPITType : public OPPart {
public:
- static const int OPFLAG = 23;
- static const int BYTESLENGTH = 45;
+ static constexpr int OPFLAG = 23;
+ static constexpr int BYTESLENGTH = 45;
private:
- string m_SPITTypeID;
-
- void initMembers();
+ string m_SPITTypeID{};
public:
- ~RemoveSPITType();
RemoveSPITType(const RemoveSPITType &orig);
// Receive
- RemoveSPITType(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ RemoveSPITType(unique_ptr p_Header);
+ bool parse(const std::vector &message);
+
+ const string getID() const { return m_SPITTypeID; }
- const string getID() const {
- return m_SPITTypeID;
- }
// Send
RemoveSPITType();
-
- void setID(string p_ID);
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ void setID(string p_ID) { m_SPITTypeID = p_ID; }
+ bool fillBytes(std::vector &message);
};
//---------------------------- SPITObjects ----------------------------------
@@ -554,37 +458,34 @@ class SPIT_Message {
class ReportSPITObject : public OPPart {
public:
- static const int OPFLAG = 31;
- static const int BYTESLENGTH = 339;
+ static constexpr int OPFLAG = 31;
+ static constexpr int BYTESLENGTH = 339;
private:
- bool m_Confirmed;
- string m_SPITObjectID;
- bool m_Fixed;
- bool m_ServerRemote;
- string m_SPITObjectName;
- string m_SPITTypeID;
- string m_ServerParams;
- long long m_FrameStart;
- long long m_FrameLength;
- long long m_FrameFadeInLength;
- long long m_FrameFadeOutLength;
- int m_ValueFactor;
- char m_ValueUse;
- int m_Track;
- string m_Remark;
- long long m_Delay;
- long long m_Duration;
- bool m_ActionAssigned;
-
- void initMembers();
+ bool m_Confirmed{};
+ string m_SPITObjectID{};
+ bool m_Fixed{};
+ bool m_ServerRemote{};
+ string m_SPITObjectName{};
+ string m_SPITTypeID{};
+ string m_ServerParams{};
+ long long m_FrameStart{};
+ long long m_FrameLength{};
+ long long m_FrameFadeInLength{};
+ long long m_FrameFadeOutLength{};
+ int m_ValueFactor{};
+ char m_ValueUse{VALUEUSE_DISCARD};
+ int m_Track{};
+ string m_Remark{};
+ long long m_Delay{};
+ long long m_Duration{};
+ bool m_ActionAssigned{};
public:
- ~ReportSPITObject();
ReportSPITObject(const ReportSPITObject &orig);
// Receive
- ReportSPITObject(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ ReportSPITObject(unique_ptr p_Header);
+ bool parse(const std::vector &message);
bool getConfirmed() const { return m_Confirmed; }
const string getID() const { return m_SPITObjectID; }
@@ -608,54 +509,50 @@ class SPIT_Message {
public:
ReportSPITObject();
- void setConfirmed(bool p_Confirmed);
- void setID(string p_ID);
- void setFixed(bool p_Fixed);
- void setServerRemote(bool p_IsRemote);
- void setName(string p_Name);
- void setSPITTypeID(string p_ID);
- void setServerParams(string p_Parameters);
- void setFrameStart(long long p_StartTime);
- void setFrameLength(long long p_Length);
- void setFrameFadeInLength(long long p_FadeInTime);
- void setFrameFadeOutLength(long long p_FadeOutTime);
- void setValueFactor(int p_Volume);
- void setValueUse(char p_ValueUse);
- void setTrack(int p_Track);
- void setRemark(string p_Description);
+ void setConfirmed(bool p_Confirmed) { m_Confirmed = p_Confirmed; };
+ void setID(string p_ID) { m_SPITObjectID = p_ID; };
+ void setFixed(bool p_Fixed) { m_Fixed = p_Fixed; };
+ void setServerRemote(bool p_IsRemote) { m_ServerRemote = p_IsRemote; };
+ void setName(string p_Name) { m_SPITObjectName = p_Name; };
+ void setSPITTypeID(string p_ID) { m_SPITTypeID = p_ID; };
+ void setServerParams(string p_Parameters) { m_ServerParams = p_Parameters; };
+ void setFrameStart(long long p_StartTime) { m_FrameStart = p_StartTime; };
+ void setFrameLength(long long p_Length) { m_FrameLength = p_Length; };
+ void setFrameFadeInLength(long long p_FadeInTime) { m_FrameFadeInLength = p_FadeInTime; };
+ void setFrameFadeOutLength(long long p_FadeOutTime) { m_FrameFadeOutLength = p_FadeOutTime; };
+ void setValueFactor(int p_Volume) { m_ValueFactor = p_Volume; };
+ void setValueUse(char p_ValueUse) { m_ValueUse = p_ValueUse; };
+ void setTrack(int p_Track) { m_Track = p_Track; };
+ void setRemark(string p_Description) { m_Remark = p_Description; };
void setDelay(long long p_Delay);
void setDuration(long long p_Duration);
- void setActionAssigned(bool p_ActionAssigned);
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ void setActionAssigned(bool p_ActionAssigned) { m_ActionAssigned = p_ActionAssigned; }
+ bool fillBytes(std::vector &message);
+
};
//----------- RemoveSPITObject -----------
class RemoveSPITObject : public OPPart {
public:
- static const int OPFLAG = 33;
- static const int BYTESLENGTH = 45;
+ static constexpr int OPFLAG = 33;
+ static constexpr int BYTESLENGTH = 45;
private:
- string m_SPITObjectID;
-
- void initMembers();
+ string m_SPITObjectID{};
public:
- ~RemoveSPITObject();
RemoveSPITObject(const RemoveSPITObject &orig);
// Receive
- RemoveSPITObject(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ RemoveSPITObject(unique_ptr p_Header);
+ bool parse(const std::vector &message);
- const string getID() const {
- return m_SPITObjectID;
- }
+ const string getID() const { return m_SPITObjectID; }
// Send
public:
RemoveSPITObject();
- void setID(string p_ID);
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ void setID(string p_ID) { m_SPITObjectID = p_ID; }
+ bool fillBytes(std::vector &message);
};
//---------------------------- SPITPlayer ----------------------------------
@@ -664,24 +561,21 @@ class SPIT_Message {
class PlaySPITStart : public OPPart {
public:
- static const int OPFLAG = 37;
- static const int BYTESLENGTH = 119;
+ static constexpr int OPFLAG = 37;
+ static constexpr int BYTESLENGTH = 119;
private:
- string m_PlayerID;
- string m_PlayerName;
- char m_PlayerType;
- bool m_PlayerIsRunning;
+ string m_PlayerID{};
+ string m_PlayerName{};
+ char m_PlayerType{};
+ bool m_PlayerIsRunning{};
long long m_Time; // Frames
- void initMembers();
-
public:
- ~PlaySPITStart();
PlaySPITStart(const PlaySPITStart &orig);
// Receive
- PlaySPITStart(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ PlaySPITStart(unique_ptr p_Header);
+ bool parse(const std::vector &message);
const string getPlayerID() const { return m_PlayerID; }
const string getPlayerName() const { return m_PlayerName; }
@@ -690,40 +584,32 @@ class SPIT_Message {
long long getTime() const { return m_Time; }
// Send
- public:
- PlaySPITStart();
-
- void setPlayerID(string p_PlayerID);
- void setPlayerName(string p_PlayerName);
- void setPlayerType(char p_PlayerType);
- void setPlayerIsRunning(bool p_IsPlaying);
- void setTime(long long p_Time);
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ PlaySPITStart(string p_PlayerID, string p_PlayerName, char p_PlayerType);
+ void setPlayerIsRunning(bool p_IsPlaying) { m_PlayerIsRunning = p_IsPlaying; }
+ void setTime(long long p_Time) { m_Time = p_Time; }
+ bool fillBytes(std::vector &message);
};
//----------- PlaySPITObject -----------
class PlaySPITObject : public OPPart {
public:
- static const int OPFLAG = 38;
- static const int BYTESLENGTH = 100;
+ static constexpr int OPFLAG = 38;
+ static constexpr int BYTESLENGTH = 100;
private:
- string m_PlayerID;
- string m_SPITObjectID;
- long long m_FrameInsideObject; // Frames
- bool m_PlayPrePosition;
- int m_Value;
- char m_ValueFlag;
-
- void initMembers();
+ string m_PlayerID{};
+ string m_SPITObjectID{};
+ long long m_FrameInsideObject{}; // Frames
+ bool m_PlayPrePosition{};
+ int m_Value{};
+ char m_ValueFlag{VALUEFLAG_DIRECT};
public:
- ~PlaySPITObject();
PlaySPITObject(const PlaySPITObject &orig);
// Receive
- PlaySPITObject(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ PlaySPITObject(unique_ptr p_Header);
+ bool parse(const std::vector &message);
const string getPlayerID() const { return m_PlayerID; }
const string getSPITObjectID() const { return m_SPITObjectID; }
@@ -734,61 +620,53 @@ class SPIT_Message {
// Send
PlaySPITObject();
- void setPlayerID(string p_PlayerID);
- void setID(string p_ID);
- void setFrameInsideObject(long long p_TimeInside);
- void setPlayPrePosition(bool p_PlayOldPosition);
- void setValue(int p_Value);
- void setValueFlag(char p_ValueFlag);
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ void setPlayerID(string p_PlayerID) { m_PlayerID = p_PlayerID; }
+ void setID(string p_ID) { m_SPITObjectID = p_ID; }
+ void setFrameInsideObject(long long p_TimeInside) { m_FrameInsideObject = p_TimeInside; }
+ void setPlayPrePosition(bool p_PlayOldPosition) { m_PlayPrePosition = p_PlayOldPosition; }
+ void setValue(int p_Value) { m_Value = p_Value; }
+ void setValueFlag(char p_ValueFlag) { m_ValueFlag = p_ValueFlag; }
+ bool fillBytes(std::vector &message);
};
//----------- PlaySPITEnd -----------
class PlaySPITEnd : public OPPart {
public:
- static const int OPFLAG = 39;
- static const int BYTESLENGTH = 45;
+ static constexpr int OPFLAG = 39;
+ static constexpr int BYTESLENGTH = 45;
private:
- string m_PlayerID;
-
- void initMembers();
+ string m_PlayerID{};
public:
- ~PlaySPITEnd();
PlaySPITEnd(const PlaySPITEnd &orig);
// Receive
- PlaySPITEnd(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
-
+ PlaySPITEnd(unique_ptr p_Header);
+ bool parse(const std::vector &message);
const string getPlayerID() const { return m_PlayerID; }
+
// Send
- public:
- PlaySPITEnd();
- void setPlayerID(string p_PlayerID);
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ PlaySPITEnd(string p_PlayerID);
+ bool fillBytes(std::vector &message);
};
//----------- ReportPlayStatus -----------
class ReportPlayStatus : public OPPart {
public:
- static const int OPFLAG = 40;
- static const int BYTESLENGTH = 57;
+ static constexpr int OPFLAG = 40;
+ static constexpr int BYTESLENGTH = 57;
private:
- string m_SPITObjectID;
- long long m_FrameInsideObject; // Frames
- int m_Value;
-
- void initMembers();
+ string m_SPITObjectID{};
+ long long m_FrameInsideObject{}; // Frames
+ int m_Value{};
public:
- ~ReportPlayStatus();
ReportPlayStatus(const ReportPlayStatus &orig);
// Receive
- ReportPlayStatus(Header *p_Header);
- bool parse(char *p_Bytes, int p_ByteCount);
+ ReportPlayStatus(unique_ptr p_Header);
+ bool parse(const std::vector &message);
const string getID() const { return m_SPITObjectID; }
long long getFrameInsideObject() const { return m_FrameInsideObject; }
@@ -799,53 +677,41 @@ class SPIT_Message {
void setID(string p_ID);
void setFrameInsideObject(long long p_TimeInside);
void setValue(int p_Value);
- bool fillBytes(char *msgBytes, int p_ByteCount);
+ bool fillBytes(std::vector &message);
};
//----------------------- static helper functions ----------------------------
public:
static bool isSystemLittleEndian();
- 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);
+ static optional getInt(const std::vector &message, int &offset);
+ static optional getLong(const std::vector &message, int &offset);
+ static optional getBoolean(const std::vector &message, int &offset);
+ static optional getByte(const std::vector &message, int &offset);
+ static int setInt(int value, std::vector &message, int offset);
+ static int setLong(long long value, std::vector &message, int offset);
+ static int setBoolean(bool value, std::vector &message, int offset);
+ static int setByte(int value, std::vector &message, int offset);
/**
* Returns the string char* of the part of the byte sequence (0x00 null terminated).
* @param p_Bytes the byte array
* @param offset the startposition of strings bytes
- * @param p_Length the length of the string included the null terminate byte (0x00).
+ * @param p_Length the length of the string included the null terminate byte (0x00).
* The length of the string will be p_Length -1.
*/
- static optional getString(char *bytes, int size, int &offset, int maxLength);
+ static optional getString(const std::vector &message, int &offset, int maxLength);
/**
- * Fill the p_String in the byte array.
+ * Fill the p_String in the byte array.
* If p_String length is greater than p_Length -1, the p_String will be truncated.
* CAUTION the return value should be freed after use.
* @param p_String the string
- * @param p_Bytes the byte array where the string is filled
- * @param p_Offset the offset inside the byte array
- * @param p_Length the maximal length of the string included the null character.
- * @throws Exception if p_String == NULL, p_Bytes == NULL
- * p_Offset less than 0
+ * @param p_Length the maximal length of the string included the null character.
+ * @throws Exception if p_String == nullptr, p_Bytes == nullptr
+ * p_Offset less than 0
* p_ByteCount less than p_Offset + p_Length
* @return p_Length
*/
- static int setString(string p_String, char *p_Bytes, int p_ByteCount, int p_Offset, int p_Length);
- /**
- * Compares two strings for equality.
- * @param p_String1 string terminated by null character
- * @param p_String2 string terminated by null character
- * @return true if both strings are equal
- * false if the strings are NULL or not equal or not terminated by "\0"
- */
- // 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 int setString(string p_String, std::vector &message, int p_Offset, int p_Length);
};
#endif /* SPIT_MESSAGE_H */
diff --git a/components/spit/src/SPITObject.cpp b/components/spit/src/SPITObject.cpp
index db5837b..9797b73 100644
--- a/components/spit/src/SPITObject.cpp
+++ b/components/spit/src/SPITObject.cpp
@@ -324,28 +324,28 @@ bool SPITObject::setMessageOP(SPIT_Message::ReportSPITObject *p_ReportSPITObject
return boolChanged;
}
-void SPITObject::fillMessageOP(SPIT_Message::ReportSPITObject *p_ReportSPITObject) {
- p_ReportSPITObject->setActionAssigned(getActionAssigned()); // Action can be assigned to type or to this object
- p_ReportSPITObject->setConfirmed(m_Confirmed);
- p_ReportSPITObject->setDelay(m_Delay);
- p_ReportSPITObject->setDuration(m_Duration);
- p_ReportSPITObject->setFixed(m_Fixed);
- p_ReportSPITObject->setFrameFadeInLength(m_FrameFadeInLength);
- p_ReportSPITObject->setFrameFadeOutLength(m_FrameFadeOutLength);
- p_ReportSPITObject->setFrameLength(m_FrameLength);
- p_ReportSPITObject->setFrameStart(m_FrameStart);
- p_ReportSPITObject->setID(m_ID);
- p_ReportSPITObject->setName(m_Name);
- p_ReportSPITObject->setRemark(m_Remark);
- p_ReportSPITObject->setSPITTypeID(m_SPITTypeID);
- p_ReportSPITObject->setServerParams(m_ServerParams);
- p_ReportSPITObject->setServerRemote(m_ServerRemote);
- p_ReportSPITObject->setTrack(m_Track);
- p_ReportSPITObject->setValueFactor(m_ValueFactor);
- p_ReportSPITObject->setValueUse(m_ValueUse);
+void SPITObject::fillMessageOP(SPIT_Message::ReportSPITObject &p_ReportSPITObject) {
+ p_ReportSPITObject.setActionAssigned(getActionAssigned()); // Action can be assigned to type or to this object
+ p_ReportSPITObject.setConfirmed(m_Confirmed);
+ p_ReportSPITObject.setDelay(m_Delay);
+ p_ReportSPITObject.setDuration(m_Duration);
+ p_ReportSPITObject.setFixed(m_Fixed);
+ p_ReportSPITObject.setFrameFadeInLength(m_FrameFadeInLength);
+ p_ReportSPITObject.setFrameFadeOutLength(m_FrameFadeOutLength);
+ p_ReportSPITObject.setFrameLength(m_FrameLength);
+ p_ReportSPITObject.setFrameStart(m_FrameStart);
+ p_ReportSPITObject.setID(m_ID);
+ p_ReportSPITObject.setName(m_Name);
+ p_ReportSPITObject.setRemark(m_Remark);
+ p_ReportSPITObject.setSPITTypeID(m_SPITTypeID);
+ p_ReportSPITObject.setServerParams(m_ServerParams);
+ p_ReportSPITObject.setServerRemote(m_ServerRemote);
+ p_ReportSPITObject.setTrack(m_Track);
+ p_ReportSPITObject.setValueFactor(m_ValueFactor);
+ p_ReportSPITObject.setValueUse(m_ValueUse);
}
-void SPITObject::fillMessageOP(SPIT_Message::RemoveSPITObject *p_RemoveSPITObject) {
- p_RemoveSPITObject->setID(m_ID);
+void SPITObject::fillMessageOP(SPIT_Message::RemoveSPITObject &p_RemoveSPITObject) {
+ p_RemoveSPITObject.setID(m_ID);
}
void SPITObject::setID(const string &id) {
diff --git a/components/spit/src/SPIT_Client.cpp b/components/spit/src/SPIT_Client.cpp
index a300789..f0165f5 100644
--- a/components/spit/src/SPIT_Client.cpp
+++ b/components/spit/src/SPIT_Client.cpp
@@ -310,18 +310,13 @@ void SPIT_Client::stopReceiveSPITMessages() {
}
void SPIT_Client::receiveSPITMessage(SPIT_Client &rM) {
-
- char buffer[MAXSPITMESSAGEBYTECOUNT];
- int intResult;
+ char buffer[MAXSPITMESSAGEBYTECOUNT + 1];
+ int rdLen;
while (rM.m_StopReceiveSPITMessages == false) {
- if (rM.m_StopReceiveSPITMessages == true) {
- return;
- }
- intResult = rM.mSPITSocket->receiveMessage(buffer, MAXSPITMESSAGEBYTECOUNT, nullptr);
- if (intResult < 0) {
+ rdLen = rM.mSPITSocket->receiveMessage(buffer, MAXSPITMESSAGEBYTECOUNT, nullptr);
+ if (rdLen < 0) {
if (rM.m_StopReceiveSPITMessages) {
return;
- ;
}
continue;
}
@@ -1496,22 +1491,18 @@ fos::Semaphore SPIT_Client::sStartSad;
void SPIT_Client::processSocketTask(SPIT_Client &instance) {
ESP_LOGI(TAG, "Starting Socket managing");
-
static const string SERVERAUTODETECT_PRECODE = "#SAD#";
static const string SERVERAUTODETECT_SEPERATOR = "#,#";
static const string SERVERAUTODETECT_TASKID = "#spit#"; // -> "#SAD##,##spit#"
static const string SERVERAUTODETECT_PORT = "15110";
static constexpr int WATCHDOGTIME = 3000;
- string stringDatagram = SERVERAUTODETECT_PRECODE + SERVERAUTODETECT_SEPERATOR + SERVERAUTODETECT_TASKID;
- int intDatagramLength = stringDatagram.length();
- string stringPart;
- string stringParts[10];
-
while (true) {
sStartSad.take();
bool searching = true;
instance.mSPITSocket->setBroadcast(true);
+ string stringDatagram = SERVERAUTODETECT_PRECODE + SERVERAUTODETECT_SEPERATOR + SERVERAUTODETECT_TASKID;
+ int intDatagramLength = stringDatagram.length();
while (searching) {
if (instance.abortSearch)
break;
@@ -1526,29 +1517,27 @@ void SPIT_Client::processSocketTask(SPIT_Client &instance) {
bool receiving = true;
while (receiving) {
- if (instance.abortSearch)
+ if (instance.abortSearch) {
break;
-
- char buffer[512 + 1];
+ }
+ constexpr int SIZE = 512;
+ char buffer[SIZE + 1];
string stringServerIP;
- int intReceivedByteCount = instance.mSPITSocket->receiveMessage(buffer, 512, &stringServerIP);
+ int intReceivedByteCount = instance.mSPITSocket->receiveMessage(buffer, SIZE, &stringServerIP);
if (intReceivedByteCount <= 0) {
break;
}
-
- // add null chararcter
- if (intReceivedByteCount < 512) {
buffer[intReceivedByteCount] = '\0';
- } else {
- buffer[512] = '\0';
- }
string stringMessage = buffer;
// Check if precode is ok
if (stringMessage.find(SERVERAUTODETECT_PRECODE.data(), 0) != 0) {
- return;
+ break;
}
int intIndex = 0;
int intOldPos = 0;
+ string stringPart;
+ string stringParts[10];
+
while (intIndex < SAD_DetectedServer::PARAMINDEX_IP) {
int intPos = stringMessage.find(SERVERAUTODETECT_SEPERATOR.data(), intOldPos);
if (intPos == string::npos) {
diff --git a/components/spit/src/SPIT_Message.cpp b/components/spit/src/SPIT_Message.cpp
index 7825600..b5e1803 100644
--- a/components/spit/src/SPIT_Message.cpp
+++ b/components/spit/src/SPIT_Message.cpp
@@ -16,133 +16,109 @@
#include "SPIT_Message.h"
-#include
#include "esp_log.h"
+#include
-const char * TAG = "SpitMsg";
+const char *TAG = "SpitMsg";
//---------- Receive ---------
-SPIT_Message::SPIT_Message(char *msgBytes, int msgSize) {
- m_MessageBytes = msgBytes;
- if (m_MessageBytes == nullptr) {
- m_MessageByteCount = 0;
+SPIT_Message::SPIT_Message(std::vector message) {
+ if (message.empty()) {
+ ESP_LOGE(TAG, "message is emtpy, nothing to parse");
return;
}
- m_MessageByteCount = msgSize;
+
+ m_MessageBytes = message;
if (!parse()) {
ESP_LOGE(TAG, "Failed ot parse message");
+ return;
}
}
-SPIT_Message::~SPIT_Message() {
- delete m_OPPart;
- if (m_MessageBytesCreated && m_MessageBytes != nullptr) {
- free(m_MessageBytes);
- }
-}
-
-
// Receive
-SPIT_Message::OPPart *SPIT_Message::parse() {
- if (m_MessageBytes == nullptr)
- return nullptr;
- m_OPPart = nullptr;
- m_MessageBytesCreated = false;
+bool SPIT_Message::parse() {
// parse Header
- m_Header = new Header();
- if (m_Header->parse(m_MessageBytes, m_MessageByteCount) == false) {
- m_Header = nullptr;
- m_OPPart = nullptr;
- return nullptr;
+ auto header = make_unique();
+ if (!header->parse(m_MessageBytes)) {
+ return false;
}
// parse OP
- switch (m_Header->getOPFlag()) {
+ switch (header->getOPFlag()) {
// Connection
case SPIT_Message::Connect::OPFLAG: {
- m_OPPart = new Connect(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
case SPIT_Message::ConnectAnswer::OPFLAG: {
- m_OPPart = new ConnectAnswer(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
case Disconnect::OPFLAG: {
- m_OPPart = new Disconnect(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
case Watchdog::OPFLAG: {
- m_OPPart = new Watchdog(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
case WatchdogAnswer::OPFLAG: {
- m_OPPart = new WatchdogAnswer(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
-
// SPITProject
case ReportSPITProject::OPFLAG: {
- m_OPPart = new ReportSPITProject(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
case CloseSPITProject::OPFLAG: {
- m_OPPart = new CloseSPITProject(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
case RequestProjectTransfer::OPFLAG: {
- m_OPPart = new RequestProjectTransfer(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
case StartProjectTransfer::OPFLAG: {
- m_OPPart = new StartProjectTransfer(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
case EndProjectTransfer::OPFLAG: {
- m_OPPart = new EndProjectTransfer(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
-
// SPITType
case ReportSPITType::OPFLAG: {
- m_OPPart = new ReportSPITType(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
case RemoveSPITType::OPFLAG: {
- m_OPPart = new RemoveSPITType(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
-
// SPITObject
case ReportSPITObject::OPFLAG: {
- m_OPPart = new ReportSPITObject(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
case RemoveSPITObject::OPFLAG: {
- m_OPPart = new RemoveSPITObject(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
// PlaySPITObjects
case PlaySPITStart::OPFLAG: {
- m_OPPart = new PlaySPITStart(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
case PlaySPITObject::OPFLAG: {
- m_OPPart = new PlaySPITObject(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
case PlaySPITEnd::OPFLAG: {
- m_OPPart = new PlaySPITEnd(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
case ReportPlayStatus::OPFLAG: {
- m_OPPart = new ReportPlayStatus(m_Header);
+ m_OPPart = make_unique(move(header));
} break;
default:
- m_OPPart = nullptr;
- break;
+ return false;
}
- if (m_OPPart != nullptr) {
- if (m_OPPart->parse(m_MessageBytes, m_MessageByteCount) == false) {
- delete m_OPPart;
- m_Header = nullptr;
- m_OPPart = nullptr;
- return nullptr;
- }
- }
- return m_OPPart;
+
+ return m_OPPart->parse(m_MessageBytes);
}
//---------- Send ----------
-SPIT_Message::SPIT_Message(OPPart *p_OPPart) {
- if (p_OPPart == nullptr)
+SPIT_Message::SPIT_Message(unique_ptr p_OPPart) {
+ if (!p_OPPart) {
return;
- m_OPPart = p_OPPart;
- m_Header = m_OPPart->getHeader();
- if (m_Header == nullptr) {
+ }
+ m_OPPart = move(p_OPPart);
+ if (!m_OPPart->getHeader()) {
m_OPPart = nullptr;
return;
}
@@ -151,28 +127,26 @@ bool SPIT_Message::fillBytes() {
if (m_OPPart == nullptr)
return false;
try {
- 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);
+ if (m_MessageBytes.empty()) {
+ int totalSize = Header::BYTESLENGTH + m_OPPart->getBytesCount();
+ std::vector buffer(totalSize);
+ }
+ return m_OPPart->fillBytes(m_MessageBytes);
} catch (...) {
+ ESP_LOGE(TAG, "Failed to allocate memory");
return false;
}
return true;
}
-const char *SPIT_Message::getMessageBytes() {
+const std::vector *SPIT_Message::getMessageBytes() {
if (m_OPPart == nullptr)
return nullptr;
if (fillBytes() == false)
return nullptr;
- return m_MessageBytes;
+ return &m_MessageBytes;
}
//----------- Header -----------
-SPIT_Message::Header::~Header() {
-}
SPIT_Message::Header::Header(const Header &orig) {
m_SPITID = &SPITID[0];
m_MessageNumber = orig.getMessageNumber();
@@ -184,32 +158,30 @@ SPIT_Message::Header::Header() {
m_SPITID = &SPITID[0];
}
-bool SPIT_Message::Header::parse(char *msgByts, int msgLen) {
- if (!msgByts) {
- return false;
- }
+bool SPIT_Message::Header::parse(const std::vector &message) {
try {
m_ParseOffset = 0;
- auto strID = getString(msgByts, msgLen, m_ParseOffset, 7).value();
+ auto strID = getString(message, m_ParseOffset, 7).value();
if (strID != SPITID) {
return false;
}
- auto iVer = getInt(msgByts, msgLen, m_ParseOffset).value();
+ auto iVer = getInt(message, m_ParseOffset).value();
if (iVer < 0) {
return false;
}
- m_MessageNumber = getByte(msgByts, msgLen, m_ParseOffset).value();
- m_BytesCount = getInt(msgByts, msgLen, m_ParseOffset).value();
+ m_MessageNumber = getByte(message, m_ParseOffset).value();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
if (m_BytesCount < 0) {
return false;
}
- m_ServerID = getString(msgByts, msgLen, m_ParseOffset, 41).value();
- m_ClientID = getString(msgByts, msgLen, m_ParseOffset, 41).value();
- m_OPFlag = msgByts[m_ParseOffset++] & 0xFF;
+ m_ServerID = getString(message, m_ParseOffset, 41).value();
+ m_ClientID = getString(message, m_ParseOffset, 41).value();
+ m_OPFlag = message[m_ParseOffset++] & 0xFF;
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
- return true;
+ return true;
}
// Send
@@ -219,94 +191,53 @@ SPIT_Message::Header::Header(int p_SPITVersion, int p_OPFlag) {
m_OPFlag = p_OPFlag;
}
-void SPIT_Message::Header::setMessageNumber(unsigned char p_MessageNumber) {
- m_MessageNumber = p_MessageNumber;
-}
-
-void SPIT_Message::Header::setServerID(string p_ID) {
- m_ServerID = p_ID;
-}
-void SPIT_Message::Header::setClientID(string p_ID) {
- m_ClientID = p_ID;
-}
-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 == nullptr)
- return false;
+bool SPIT_Message::Header::fillBytes(std::vector &message) {
try {
m_ParseOffset = 0;
- m_ParseOffset += setString(m_SPITID, p_Bytes, p_ByteCount, m_ParseOffset, 7);
- m_ParseOffset += setInt(SPITVERSION, p_Bytes, p_ByteCount, m_ParseOffset);
- m_ParseOffset += setByte(m_MessageNumber, p_Bytes, p_ByteCount, m_ParseOffset);
- m_ParseOffset += setInt(m_BytesCount, p_Bytes, p_ByteCount, m_ParseOffset);
- m_ParseOffset += setString(m_ServerID, p_Bytes, p_ByteCount, m_ParseOffset, 41);
- m_ParseOffset += setString(m_ClientID, p_Bytes, p_ByteCount, m_ParseOffset, 41);
- m_ParseOffset += setByte(m_OPFlag, p_Bytes, p_ByteCount, m_ParseOffset);
+ m_ParseOffset += setString(m_SPITID, message, m_ParseOffset, 7);
+ m_ParseOffset += setInt(SPITVERSION, message, m_ParseOffset);
+ m_ParseOffset += setByte(m_MessageNumber, message, m_ParseOffset);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
+ m_ParseOffset += setString(m_ServerID, message, m_ParseOffset, 41);
+ m_ParseOffset += setString(m_ClientID, message, m_ParseOffset, 41);
+ m_ParseOffset += setByte(m_OPFlag, message, m_ParseOffset);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
}
//----------- OPPart -----------
-SPIT_Message::OPPart::~OPPart() {
- if (m_Header != nullptr) {
- delete m_Header;
- }
- m_Header = nullptr;
-}
-void SPIT_Message::OPPart::initMembers() {
- m_Header = nullptr;
- m_ParseOffset = 0;
- m_BytesCount = 0;
-}
// Receive
-SPIT_Message::OPPart::OPPart(Header *p_Header, int p_OPFlag) {
- initMembers();
- m_Header = p_Header;
- if (m_Header != nullptr) {
+SPIT_Message::OPPart::OPPart(unique_ptr p_Header, int p_OPFlag, int size)
+ : m_Header(move(p_Header)),
+ m_BytesCount(size) {
+ if (!m_Header) {
m_ParseOffset = Header::BYTESLENGTH;
m_Header->setOPFlag(p_OPFlag);
}
}
-void SPIT_Message::OPPart::setHeader(Header *p_Header) {
- m_Header = p_Header;
+void SPIT_Message::OPPart::setHeader(unique_ptr p_Header) {
+ m_Header = move(p_Header);
if (m_Header != nullptr) {
m_ParseOffset = Header::BYTESLENGTH;
}
}
// Send
-SPIT_Message::OPPart::OPPart() {
- initMembers();
-}
+SPIT_Message::OPPart::OPPart(int size)
+ : m_BytesCount(size) {}
//--------------------------- Connection --------------------------------
-
//----------- Connect -----------
-SPIT_Message::Connect::~Connect() {
-}
// Receive
-SPIT_Message::Connect::Connect(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::Connect::Connect(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-void SPIT_Message::Connect::initMembers() {
- m_ClientComputerName = "";
- m_ClientName = "";
- m_LoginName = "";
- m_LoginPassword = "";
- m_ServerIP = "";
- m_ServerPort = 0;
- m_BytesCount = BYTESLENGTH;
-}
-
-bool SPIT_Message::Connect::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::Connect::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -314,63 +245,49 @@ bool SPIT_Message::Connect::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
+ m_ClientComputerName = getString(message, m_ParseOffset, 64).value();
+ m_ClientName = getString(message, m_ParseOffset, 64).value();
+ m_LoginName = getString(message, m_ParseOffset, 64).value();
+ m_LoginPassword = getString(message, m_ParseOffset, 64).value();
+ m_ServerIP = getString(message, m_ParseOffset, 40).value();
+ m_ServerPort = getInt(message, m_ParseOffset).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::Connect::Connect() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::Connect::Connect(string p_ComputerName, string p_ClientName)
+ : OPPart(BYTESLENGTH),
+ m_ClientComputerName(p_ComputerName),
+ m_ClientName(p_ClientName) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-void SPIT_Message::Connect::setClientComputerName(string p_ComputerName) {
- m_ClientComputerName = p_ComputerName;
-}
-void SPIT_Message::Connect::setClientName(string p_ClientName) {
- m_ClientName = p_ClientName;
-}
-void SPIT_Message::Connect::setLoginName(string p_LoginName) {
- m_LoginName = p_LoginName;
-}
-void SPIT_Message::Connect::setLoginPassword(string p_LoginPassword) {
- m_LoginPassword = p_LoginPassword;
-}
-void SPIT_Message::Connect::setServerIP(string p_ServerIP) {
- m_ServerIP = p_ServerIP;
-}
void SPIT_Message::Connect::setServerPort(int p_ServerPort) {
if (p_ServerPort < 0 || p_ServerPort > 65535)
p_ServerPort = 0;
m_ServerPort = p_ServerPort;
}
-bool SPIT_Message::Connect::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::Connect::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
+ m_ParseOffset += setString(m_ClientComputerName, message, m_ParseOffset, 64);
+ m_ParseOffset += setString(m_ClientName, message, m_ParseOffset, 64);
+ m_ParseOffset += setString(m_LoginName, message, m_ParseOffset, 64);
+ m_ParseOffset += setString(m_LoginPassword, message, m_ParseOffset, 64);
+ m_ParseOffset += setString(m_ServerIP, message, m_ParseOffset, 40);
+ m_ParseOffset += setInt(m_ServerPort, message, m_ParseOffset);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -378,24 +295,10 @@ bool SPIT_Message::Connect::fillBytes(char *msgBytes, int p_ByteCount) {
//----------- ConnectAnswer -----------
-void SPIT_Message::ConnectAnswer::initMembers() {
- m_ServerComputerName = "";
- m_ServerName = "";
- m_Connected = false;
- m_BytesCount = BYTESLENGTH;
- m_StepTime = 40;
-}
-SPIT_Message::ConnectAnswer::~ConnectAnswer() {
-}
-SPIT_Message::ConnectAnswer::ConnectAnswer(const ConnectAnswer &orig) {
-}
// Receive
-SPIT_Message::ConnectAnswer::ConnectAnswer(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
-}
-bool SPIT_Message::ConnectAnswer::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+SPIT_Message::ConnectAnswer::ConnectAnswer(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {}
+bool SPIT_Message::ConnectAnswer::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -403,53 +306,43 @@ bool SPIT_Message::ConnectAnswer::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
+ m_ServerComputerName = getString(message, m_ParseOffset, 64).value();
+ m_ServerName = getString(message, m_ParseOffset, 64).value();
+ m_StepTime = getInt(message, m_ParseOffset).value();
+ m_Connected = getBoolean(message, m_ParseOffset).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::ConnectAnswer::ConnectAnswer() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::ConnectAnswer::ConnectAnswer()
+: OPPart(BYTESLENGTH) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-void SPIT_Message::ConnectAnswer::setServerComputerName(string p_ServerComputerName) {
- m_ServerComputerName = p_ServerComputerName;
-}
-void SPIT_Message::ConnectAnswer::setServerName(string p_ServerName) {
- m_ServerName = p_ServerName;
-}
-void SPIT_Message::ConnectAnswer::setConnected(bool p_Connected) {
- m_Connected = p_Connected;
-}
void SPIT_Message::ConnectAnswer::setStepTime(int p_StepTime_ms) {
if (p_StepTime_ms < 0)
p_StepTime_ms = 1;
m_StepTime = p_StepTime_ms;
}
-bool SPIT_Message::ConnectAnswer::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::ConnectAnswer::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
+ m_ParseOffset += setString(m_ServerComputerName, message, m_ParseOffset, 64);
+ m_ParseOffset += setString(m_ServerName, message, m_ParseOffset, 64);
+ m_ParseOffset += setInt(m_StepTime, message, m_ParseOffset);
+ m_ParseOffset += setBoolean(m_Connected, message, m_ParseOffset);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -457,18 +350,10 @@ bool SPIT_Message::ConnectAnswer::fillBytes(char *msgBytes, int p_ByteCount) {
//----------- Disconnect -----------
-void SPIT_Message::Disconnect::initMembers() {
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::Disconnect::~Disconnect() {
-}
// Receive
-SPIT_Message::Disconnect::Disconnect(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::Disconnect::Disconnect(unique_ptr p_Header) : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::Disconnect::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::Disconnect::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -476,51 +361,41 @@ bool SPIT_Message::Disconnect::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::Disconnect::Disconnect() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::Disconnect::Disconnect() : OPPart(BYTESLENGTH) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
}
-bool SPIT_Message::Disconnect::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::Disconnect::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset);
+ setInt(m_BytesCount, message, m_ParseOffset);
m_ParseOffset += 4;
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
}
//----------- Watchdog -----------
-void SPIT_Message::Watchdog::initMembers() {
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::Watchdog::~Watchdog() {
-}
-
// Receive
-SPIT_Message::Watchdog::Watchdog(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::Watchdog::Watchdog(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::Watchdog::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::Watchdog::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -528,32 +403,30 @@ bool SPIT_Message::Watchdog::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::Watchdog::Watchdog() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::Watchdog::Watchdog() : OPPart(BYTESLENGTH) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-bool SPIT_Message::Watchdog::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::Watchdog::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset);
+ setInt(m_BytesCount, message, m_ParseOffset);
m_ParseOffset += 4;
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -561,19 +434,10 @@ bool SPIT_Message::Watchdog::fillBytes(char *msgBytes, int p_ByteCount) {
//----------- WatchdogAnswer -----------
-void SPIT_Message::WatchdogAnswer::initMembers() {
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::WatchdogAnswer::~WatchdogAnswer() {
-}
-
// Receive
-SPIT_Message::WatchdogAnswer::WatchdogAnswer(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::WatchdogAnswer::WatchdogAnswer(unique_ptr p_Header) : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::WatchdogAnswer::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::WatchdogAnswer::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -581,32 +445,30 @@ bool SPIT_Message::WatchdogAnswer::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::WatchdogAnswer::WatchdogAnswer() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::WatchdogAnswer::WatchdogAnswer() : OPPart(BYTESLENGTH) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-bool SPIT_Message::WatchdogAnswer::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::WatchdogAnswer::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset);
+ setInt(m_BytesCount, message, m_ParseOffset);
m_ParseOffset += 4;
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -615,21 +477,11 @@ bool SPIT_Message::WatchdogAnswer::fillBytes(char *msgBytes, int p_ByteCount) {
//--------------------------- SPITProject --------------------------------
//----------- ReportSPITProject -----------
-void SPIT_Message::ReportSPITProject::initMembers() {
- m_ProjectID = "";
- m_ProjectName = "";
- m_BytesCount = BYTESLENGTH;
- m_FramesPerSecond = 1000;
-}
-SPIT_Message::ReportSPITProject::~ReportSPITProject() {
-}
// Receive
-SPIT_Message::ReportSPITProject::ReportSPITProject(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::ReportSPITProject::ReportSPITProject(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::ReportSPITProject::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::ReportSPITProject::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -637,46 +489,38 @@ bool SPIT_Message::ReportSPITProject::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
+ m_ProjectID = getString(message, m_ParseOffset, 41).value();
+ m_ProjectName = getString(message, m_ParseOffset, 64).value();
+ m_FramesPerSecond = getInt(message, m_ParseOffset).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::ReportSPITProject::ReportSPITProject() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::ReportSPITProject::ReportSPITProject(string p_ProjectID, string p_ProjectName)
+ : OPPart(BYTESLENGTH),
+ m_ProjectID(p_ProjectID),
+ m_ProjectName(p_ProjectName) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-void SPIT_Message::ReportSPITProject::setProjectID(string p_ProjectID) {
- m_ProjectID = p_ProjectID;
-}
-void SPIT_Message::ReportSPITProject::setProjectName(string p_ProjectName) {
- m_ProjectName = p_ProjectName;
-}
-void SPIT_Message::ReportSPITProject::setFramesPerSecond(const int p_FramesPerSecond) {
- m_FramesPerSecond = p_FramesPerSecond;
-}
-bool SPIT_Message::ReportSPITProject::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::ReportSPITProject::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
+ m_ParseOffset += setString(m_ProjectID, message, m_ParseOffset, 41);
+ m_ParseOffset += setString(m_ProjectName, message, m_ParseOffset, 64);
+ m_ParseOffset += setInt(m_FramesPerSecond, message, m_ParseOffset);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -684,19 +528,11 @@ bool SPIT_Message::ReportSPITProject::fillBytes(char *msgBytes, int p_ByteCount)
//----------- StartProjectTransfer -----------
-void SPIT_Message::CloseSPITProject::initMembers() {
- m_ProjectID = "";
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::CloseSPITProject::~CloseSPITProject() {
-}
// Receive
-SPIT_Message::CloseSPITProject::CloseSPITProject(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::CloseSPITProject::CloseSPITProject(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::CloseSPITProject::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::CloseSPITProject::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -704,36 +540,33 @@ bool SPIT_Message::CloseSPITProject::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value();
- m_ProjectID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
+ m_ProjectID = getString(message, m_ParseOffset, 41).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::CloseSPITProject::CloseSPITProject() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::CloseSPITProject::CloseSPITProject(string projectID)
+ : OPPart(BYTESLENGTH),
+ m_ProjectID(projectID) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-void SPIT_Message::CloseSPITProject::setProjectID(string p_ProjectID) {
- m_ProjectID = p_ProjectID;
-}
-bool SPIT_Message::CloseSPITProject::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::CloseSPITProject::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset);
- m_ParseOffset += setString(m_ProjectID, msgBytes, p_ByteCount, m_ParseOffset, 41);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
+ m_ParseOffset += setString(m_ProjectID, message, m_ParseOffset, 41);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -741,18 +574,11 @@ bool SPIT_Message::CloseSPITProject::fillBytes(char *msgBytes, int p_ByteCount)
//----------- RequestProjectTransfer -----------
-void SPIT_Message::RequestProjectTransfer::initMembers() {
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::RequestProjectTransfer::~RequestProjectTransfer() {
-}
// Receive
-SPIT_Message::RequestProjectTransfer::RequestProjectTransfer(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::RequestProjectTransfer::RequestProjectTransfer(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::RequestProjectTransfer::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::RequestProjectTransfer::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -760,30 +586,29 @@ bool SPIT_Message::RequestProjectTransfer::parse(char *msgBytes, int p_ByteCount
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::RequestProjectTransfer::RequestProjectTransfer() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::RequestProjectTransfer::RequestProjectTransfer()
+ : OPPart(BYTESLENGTH) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-bool SPIT_Message::RequestProjectTransfer::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::RequestProjectTransfer::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -791,18 +616,11 @@ bool SPIT_Message::RequestProjectTransfer::fillBytes(char *msgBytes, int p_ByteC
//----------- StartProjectTransfer -----------
-void SPIT_Message::StartProjectTransfer::initMembers() {
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::StartProjectTransfer::~StartProjectTransfer() {
-}
// Receive
-SPIT_Message::StartProjectTransfer::StartProjectTransfer(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::StartProjectTransfer::StartProjectTransfer(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::StartProjectTransfer::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::StartProjectTransfer::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -810,31 +628,30 @@ bool SPIT_Message::StartProjectTransfer::parse(char *msgBytes, int p_ByteCount)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::StartProjectTransfer::StartProjectTransfer() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::StartProjectTransfer::StartProjectTransfer()
+ : OPPart(BYTESLENGTH) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-bool SPIT_Message::StartProjectTransfer::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::StartProjectTransfer::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -842,18 +659,11 @@ bool SPIT_Message::StartProjectTransfer::fillBytes(char *msgBytes, int p_ByteCou
//----------- ENdProjectTransfer -----------
-void SPIT_Message::EndProjectTransfer::initMembers() {
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::EndProjectTransfer::~EndProjectTransfer() {
-}
// Receive
-SPIT_Message::EndProjectTransfer::EndProjectTransfer(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::EndProjectTransfer::EndProjectTransfer(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::EndProjectTransfer::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::EndProjectTransfer::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -861,30 +671,29 @@ bool SPIT_Message::EndProjectTransfer::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::EndProjectTransfer::EndProjectTransfer() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::EndProjectTransfer::EndProjectTransfer()
+ : OPPart(BYTESLENGTH) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-bool SPIT_Message::EndProjectTransfer::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::EndProjectTransfer::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -894,27 +703,11 @@ bool SPIT_Message::EndProjectTransfer::fillBytes(char *msgBytes, int p_ByteCount
//----------- ReportSPITType -----------
-void SPIT_Message::ReportSPITType::initMembers() {
- m_Confirmed = false;
- m_SPITTypeID = "";
- m_Fixed = false;
- m_ServerRemote = false;
- m_ServerProjectIndepended = false;
- m_SPITTypeGroupName = "";
- m_SPITTypeName = "";
- m_Delay = 0;
- m_Duration = 0;
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::ReportSPITType::~ReportSPITType() {
-}
// Receive
-SPIT_Message::ReportSPITType::ReportSPITType(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::ReportSPITType::ReportSPITType(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::ReportSPITType::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::ReportSPITType::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -922,76 +715,48 @@ bool SPIT_Message::ReportSPITType::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
+ m_Confirmed = getBoolean(message, m_ParseOffset).value();
+ m_SPITTypeID = getString(message, m_ParseOffset, 41).value();
+ m_Fixed = getBoolean(message, m_ParseOffset).value();
+ m_ServerRemote = getBoolean(message, m_ParseOffset).value();
+ m_ServerProjectIndepended = getBoolean(message, m_ParseOffset).value();
+ m_SPITTypeGroupName = getString(message, m_ParseOffset, 39).value();
+ m_SPITTypeName = getString(message, m_ParseOffset, 64).value();
+ m_Delay = getLong(message, m_ParseOffset).value();
+ m_Duration = getLong(message, m_ParseOffset).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::ReportSPITType::ReportSPITType() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::ReportSPITType::ReportSPITType()
+ : OPPart(BYTESLENGTH) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-void SPIT_Message::ReportSPITType::setConfirmed(bool p_Confirmed) {
- m_Confirmed = p_Confirmed;
-}
-void SPIT_Message::ReportSPITType::setID(string p_ID) {
- m_SPITTypeID = p_ID;
-}
-void SPIT_Message::ReportSPITType::setFixed(bool p_Fixed) {
- m_Fixed = p_Fixed;
-}
-void SPIT_Message::ReportSPITType::setServerRemote(bool p_IsServerRemote) {
- m_ServerRemote = p_IsServerRemote;
-}
-void SPIT_Message::ReportSPITType::setServerProjectIndepended(bool p_ProjectIndpended) {
- m_ServerProjectIndepended = p_ProjectIndpended;
-}
-void SPIT_Message::ReportSPITType::setGroupName(string p_GroupName) {
- m_SPITTypeGroupName = p_GroupName;
-}
-void SPIT_Message::ReportSPITType::setName(string p_Name) {
- m_SPITTypeName = p_Name;
-}
-void SPIT_Message::ReportSPITType::setDelay(long long p_Delay) {
- m_Delay = p_Delay;
-}
-void SPIT_Message::ReportSPITType::setDuration(long long p_Duration) {
- m_Duration = p_Duration;
-}
-bool SPIT_Message::ReportSPITType::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::ReportSPITType::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = m_Header->BYTESLENGTH;
- 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);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
+ m_ParseOffset += setBoolean(m_Confirmed, message, m_ParseOffset);
+ m_ParseOffset += setString(m_SPITTypeID, message, m_ParseOffset, 41);
+ m_ParseOffset += setBoolean(m_Fixed, message, m_ParseOffset);
+ m_ParseOffset += setBoolean(m_ServerRemote, message, m_ParseOffset);
+ m_ParseOffset += setBoolean(m_ServerProjectIndepended, message, m_ParseOffset);
+ m_ParseOffset += setString(m_SPITTypeGroupName, message, m_ParseOffset, 39);
+ m_ParseOffset += setString(m_SPITTypeName, message, m_ParseOffset, 64);
+ m_ParseOffset += setLong(m_Delay, message, m_ParseOffset);
+ m_ParseOffset += setLong(m_Duration, message, m_ParseOffset);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -999,19 +764,11 @@ bool SPIT_Message::ReportSPITType::fillBytes(char *msgBytes, int p_ByteCount) {
//----------- ReportSPITType -----------
-void SPIT_Message::RemoveSPITType::initMembers() {
- m_SPITTypeID = "";
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::RemoveSPITType::~RemoveSPITType() {
-}
// Receive
-SPIT_Message::RemoveSPITType::RemoveSPITType(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::RemoveSPITType::RemoveSPITType(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::RemoveSPITType::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::RemoveSPITType::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -1019,36 +776,32 @@ bool SPIT_Message::RemoveSPITType::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value();
- m_SPITTypeID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
+ m_SPITTypeID = getString(message, m_ParseOffset, 41).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::RemoveSPITType::RemoveSPITType() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::RemoveSPITType::RemoveSPITType()
+ : OPPart(BYTESLENGTH) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-void SPIT_Message::RemoveSPITType::setID(string p_ID) {
- m_SPITTypeID = p_ID;
-}
-bool SPIT_Message::RemoveSPITType::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::RemoveSPITType::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset);
- m_ParseOffset += setString(m_SPITTypeID, msgBytes, p_ByteCount, m_ParseOffset, 41);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
+ m_ParseOffset += setString(m_SPITTypeID, message, m_ParseOffset, 41);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -1057,36 +810,11 @@ bool SPIT_Message::RemoveSPITType::fillBytes(char *msgBytes, int p_ByteCount) {
//---------------------------- SPITObjects ----------------------------------
//----------- ReportSPITObject -----------
-void SPIT_Message::ReportSPITObject::initMembers() {
- m_Confirmed = false;
- m_SPITObjectID = "";
- m_Fixed = false;
- m_ServerRemote = false;
- m_SPITObjectName = "";
- m_SPITTypeID = "";
- m_ServerParams = "";
- m_FrameStart = 0;
- m_FrameLength = 0;
- m_FrameFadeInLength = 0;
- m_FrameFadeOutLength = 0;
- m_ValueFactor = 0;
- m_ValueUse = VALUEUSE_DISCARD;
- m_Track = 0;
- m_Remark = "";
- m_Delay = 0;
- m_Duration = 0;
- m_ActionAssigned = false;
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::ReportSPITObject::~ReportSPITObject() {
-}
// Receive
-SPIT_Message::ReportSPITObject::ReportSPITObject(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::ReportSPITObject::ReportSPITObject(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::ReportSPITObject::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::ReportSPITObject::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -1094,83 +822,37 @@ bool SPIT_Message::ReportSPITObject::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
+ m_Confirmed = getBoolean(message, m_ParseOffset).value();
+ m_SPITObjectID = getString(message, m_ParseOffset, 41).value();
+ m_Fixed = getBoolean(message, m_ParseOffset).value();
+ m_ServerRemote = getBoolean(message, m_ParseOffset).value();
+ m_SPITObjectName = getString(message, m_ParseOffset, 64).value();
+ m_SPITTypeID = getString(message, m_ParseOffset, 41).value();
+ m_ServerParams = getString(message, m_ParseOffset, 64).value();
+ m_FrameStart = getLong(message, m_ParseOffset).value();
+ m_FrameLength = getLong(message, m_ParseOffset).value();
+ m_FrameFadeInLength = getLong(message, m_ParseOffset).value();
+ m_FrameFadeOutLength = getLong(message, m_ParseOffset).value();
+ m_ValueFactor = getInt(message, m_ParseOffset).value();
+ m_ValueUse = getByte(message, m_ParseOffset).value();
+ m_Track = getInt(message, m_ParseOffset).value();
+ m_Remark = getString(message, m_ParseOffset, 64).value();
+ m_Delay = getLong(message, m_ParseOffset).value();
+ m_Duration = getLong(message, m_ParseOffset).value();
+ m_ActionAssigned = getBoolean(message, m_ParseOffset).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::ReportSPITObject::ReportSPITObject() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::ReportSPITObject::ReportSPITObject() : OPPart(BYTESLENGTH) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-void SPIT_Message::ReportSPITObject::setConfirmed(bool p_Confirmed) {
- m_Confirmed = p_Confirmed;
-}
-void SPIT_Message::ReportSPITObject::setID(string p_ID) {
- m_SPITObjectID = p_ID;
-}
-void SPIT_Message::ReportSPITObject::setFixed(bool p_Fixed) {
- m_Fixed = p_Fixed;
-}
-void SPIT_Message::ReportSPITObject::setServerRemote(bool p_IsRemote) {
- m_ServerRemote = p_IsRemote;
-}
-void SPIT_Message::ReportSPITObject::setName(string p_Name) {
- m_SPITObjectName = p_Name;
-}
-void SPIT_Message::ReportSPITObject::setSPITTypeID(string p_ID) {
- m_SPITTypeID = p_ID;
-}
-void SPIT_Message::ReportSPITObject::setServerParams(string p_Parameters) {
- m_ServerParams = p_Parameters;
-}
-void SPIT_Message::ReportSPITObject::setFrameStart(long long p_StartTime) {
- m_FrameStart = p_StartTime;
-}
-void SPIT_Message::ReportSPITObject::setFrameLength(long long p_Length) {
- m_FrameLength = p_Length;
-}
-void SPIT_Message::ReportSPITObject::setFrameFadeInLength(long long p_FadeInTime) {
- m_FrameFadeInLength = p_FadeInTime;
-}
-void SPIT_Message::ReportSPITObject::setFrameFadeOutLength(long long p_FadeOutTime) {
- m_FrameFadeOutLength = p_FadeOutTime;
-}
-void SPIT_Message::ReportSPITObject::setValueFactor(int p_Volume) {
- m_ValueFactor = p_Volume;
-}
-void SPIT_Message::ReportSPITObject::setValueUse(char p_ValueUse) {
- m_ValueUse = p_ValueUse;
-}
-void SPIT_Message::ReportSPITObject::setTrack(int p_Track) {
- m_Track = p_Track;
-}
-void SPIT_Message::ReportSPITObject::setRemark(string p_Description) {
- m_Remark = p_Description;
-}
void SPIT_Message::ReportSPITObject::setDelay(long long p_Delay) {
if (p_Delay < 0)
p_Delay = 0;
@@ -1182,57 +864,45 @@ void SPIT_Message::ReportSPITObject::setDuration(long long p_Duration) {
m_Duration = p_Duration;
}
-void SPIT_Message::ReportSPITObject::setActionAssigned(bool p_ActionAssigned) {
- m_ActionAssigned = p_ActionAssigned;
-}
-bool SPIT_Message::ReportSPITObject::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::ReportSPITObject::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
+ m_ParseOffset += setBoolean(m_Confirmed, message, m_ParseOffset);
+ m_ParseOffset += setString(m_SPITObjectID, message, m_ParseOffset, 41);
+ m_ParseOffset += setBoolean(m_Fixed, message, m_ParseOffset);
+ m_ParseOffset += setBoolean(m_ServerRemote, message, m_ParseOffset);
+ m_ParseOffset += setString(m_SPITObjectName, message, m_ParseOffset, 64);
+ m_ParseOffset += setString(m_SPITTypeID, message, m_ParseOffset, 41);
+ m_ParseOffset += setString(m_ServerParams, message, m_ParseOffset, 64);
+ m_ParseOffset += setLong(m_FrameStart, message, m_ParseOffset);
+ m_ParseOffset += setLong(m_FrameLength, message, m_ParseOffset);
+ m_ParseOffset += setLong(m_FrameFadeInLength, message, m_ParseOffset);
+ m_ParseOffset += setLong(m_FrameFadeOutLength, message, m_ParseOffset);
+ m_ParseOffset += setInt(m_ValueFactor, message, m_ParseOffset);
+ m_ParseOffset += setByte(m_ValueUse, message, m_ParseOffset);
+ m_ParseOffset += setInt(m_Track, message, m_ParseOffset);
+ m_ParseOffset += setString(m_Remark, message, m_ParseOffset, 64);
+ m_ParseOffset += setLong(m_Delay, message, m_ParseOffset);
+ m_ParseOffset += setLong(m_Duration, message, m_ParseOffset);
+ m_ParseOffset += setBoolean(m_ActionAssigned, message, m_ParseOffset);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
}
//----------- RemoveSPITObject -----------
-void SPIT_Message::RemoveSPITObject::initMembers() {
- m_SPITObjectID = "";
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::RemoveSPITObject::~RemoveSPITObject() {
-}
// Receive
-SPIT_Message::RemoveSPITObject::RemoveSPITObject(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::RemoveSPITObject::RemoveSPITObject(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::RemoveSPITObject::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::RemoveSPITObject::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -1240,37 +910,32 @@ bool SPIT_Message::RemoveSPITObject::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value();
- m_SPITObjectID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
+ m_SPITObjectID = getString(message, m_ParseOffset, 41).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::RemoveSPITObject::RemoveSPITObject() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::RemoveSPITObject::RemoveSPITObject() : OPPart(BYTESLENGTH) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-void SPIT_Message::RemoveSPITObject::setID(string p_ID) {
- m_SPITObjectID = p_ID;
-}
-bool SPIT_Message::RemoveSPITObject::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::RemoveSPITObject::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset);
- m_ParseOffset += setString(m_SPITObjectID, msgBytes, p_ByteCount, m_ParseOffset, 41);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
+ m_ParseOffset += setString(m_SPITObjectID, message, m_ParseOffset, 41);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -1279,23 +944,11 @@ bool SPIT_Message::RemoveSPITObject::fillBytes(char *msgBytes, int p_ByteCount)
//---------------------------- SPITPlayer ----------------------------------
//----------- PlaySPITStart -----------
-void SPIT_Message::PlaySPITStart::initMembers() {
- m_PlayerID = "";
- m_PlayerName = "";
- m_PlayerType = 0x00;
- m_Time = 0;
- m_PlayerIsRunning = false;
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::PlaySPITStart::~PlaySPITStart() {
-}
// Receive
-SPIT_Message::PlaySPITStart::PlaySPITStart(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::PlaySPITStart::PlaySPITStart(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::PlaySPITStart::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::PlaySPITStart::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -1303,57 +956,44 @@ bool SPIT_Message::PlaySPITStart::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
+ m_PlayerID = getString(message, m_ParseOffset, 41).value();
+ m_PlayerName = getString(message, m_ParseOffset, 64).value();
+ m_PlayerType = getByte(message, m_ParseOffset).value();
+ m_PlayerIsRunning = getBoolean(message, m_ParseOffset).value();
+ m_Time = getLong(message, m_ParseOffset).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::PlaySPITStart::PlaySPITStart() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::PlaySPITStart::PlaySPITStart(string p_PlayerID, string p_PlayerName, char p_PlayerType)
+ : OPPart(BYTESLENGTH),
+ m_PlayerID(p_PlayerID),
+ m_PlayerName(p_PlayerName),
+ m_PlayerType(p_PlayerType) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-void SPIT_Message::PlaySPITStart::setPlayerID(string p_PlayerID) {
- m_PlayerID = p_PlayerID;
-}
-void SPIT_Message::PlaySPITStart::setPlayerName(string p_PlayerName) {
- m_PlayerName = p_PlayerName;
-}
-void SPIT_Message::PlaySPITStart::setPlayerType(char p_PlayerType) {
- m_PlayerType = p_PlayerType;
-}
-void SPIT_Message::PlaySPITStart::setPlayerIsRunning(bool p_IsPlaying) {
- m_PlayerIsRunning = p_IsPlaying;
-}
-void SPIT_Message::PlaySPITStart::setTime(long long p_Time) {
- m_Time = p_Time;
-}
-bool SPIT_Message::PlaySPITStart::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::PlaySPITStart::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
+ m_ParseOffset += setString(m_PlayerID, message, m_ParseOffset, 41);
+ m_ParseOffset += setString(m_PlayerName, message, m_ParseOffset, 64);
+ m_ParseOffset += setByte(m_PlayerType, message, m_ParseOffset);
+ m_ParseOffset += setBoolean(m_PlayerIsRunning, message, m_ParseOffset);
+ m_ParseOffset += setLong(m_Time, message, m_ParseOffset);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -1361,23 +1001,11 @@ bool SPIT_Message::PlaySPITStart::fillBytes(char *msgBytes, int p_ByteCount) {
//----------- PlaySPITObject -----------
-void SPIT_Message::PlaySPITObject::initMembers() {
- m_PlayerID = "";
- m_SPITObjectID = "";
- m_FrameInsideObject = 0;
- m_Value = 0;
- m_ValueFlag = VALUEFLAG_DIRECT;
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::PlaySPITObject::~PlaySPITObject() {
-}
// Receive
-SPIT_Message::PlaySPITObject::PlaySPITObject(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::PlaySPITObject::PlaySPITObject(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::PlaySPITObject::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::PlaySPITObject::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -1385,60 +1013,41 @@ bool SPIT_Message::PlaySPITObject::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
+ m_PlayerID = getString(message, m_ParseOffset, 41).value();
+ m_SPITObjectID = getString(message, m_ParseOffset, 41).value();
+ m_FrameInsideObject = getLong(message, m_ParseOffset).value();
+ m_PlayPrePosition = getBoolean(message, m_ParseOffset).value();
+ m_Value = getInt(message, m_ParseOffset).value();
+ m_ValueFlag = getByte(message, m_ParseOffset).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::PlaySPITObject::PlaySPITObject() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::PlaySPITObject::PlaySPITObject()
+ : OPPart(BYTESLENGTH) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-void SPIT_Message::PlaySPITObject::setPlayerID(string p_PlayerID) {
- m_PlayerID = p_PlayerID;
-}
-void SPIT_Message::PlaySPITObject::setID(string p_ID) {
- m_SPITObjectID = p_ID;
-}
-void SPIT_Message::PlaySPITObject::setFrameInsideObject(long long p_TimeInside) {
- m_FrameInsideObject = p_TimeInside;
-}
-void SPIT_Message::PlaySPITObject::setPlayPrePosition(bool p_PlayOldPosition) {
- m_PlayPrePosition = p_PlayOldPosition;
-}
-void SPIT_Message::PlaySPITObject::setValue(int p_Value) {
- m_Value = p_Value;
-}
-void SPIT_Message::PlaySPITObject::setValueFlag(char p_ValueFlag) {
- m_ValueFlag = p_ValueFlag;
-}
-bool SPIT_Message::PlaySPITObject::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::PlaySPITObject::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
+ m_ParseOffset += setString(m_PlayerID, message, m_ParseOffset, 41);
+ m_ParseOffset += setString(m_SPITObjectID, message, m_ParseOffset, 41);
+ m_ParseOffset += setLong(m_FrameInsideObject, message, m_ParseOffset);
+ m_ParseOffset += setBoolean(m_PlayPrePosition, message, m_ParseOffset);
+ m_ParseOffset += setInt(m_Value, message, m_ParseOffset);
+ m_ParseOffset += setByte(m_ValueFlag, message, m_ParseOffset);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -1446,19 +1055,11 @@ bool SPIT_Message::PlaySPITObject::fillBytes(char *msgBytes, int p_ByteCount) {
//----------- PlaySPITEnd -----------
-void SPIT_Message::PlaySPITEnd::initMembers() {
- m_PlayerID = "";
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::PlaySPITEnd::~PlaySPITEnd() {
-}
// Receive
-SPIT_Message::PlaySPITEnd::PlaySPITEnd(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::PlaySPITEnd::PlaySPITEnd(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::PlaySPITEnd::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::PlaySPITEnd::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -1466,36 +1067,33 @@ bool SPIT_Message::PlaySPITEnd::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_BytesCount = getInt(msgBytes, p_ByteCount, m_ParseOffset).value();
- m_PlayerID = getString(msgBytes, p_ByteCount, m_ParseOffset, 41).value();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
+ m_PlayerID = getString(message, m_ParseOffset, 41).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::PlaySPITEnd::PlaySPITEnd() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::PlaySPITEnd::PlaySPITEnd(string p_PlayerID)
+ : OPPart(BYTESLENGTH),
+ m_PlayerID(p_PlayerID) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
-void SPIT_Message::PlaySPITEnd::setPlayerID(string p_PlayerID) {
- m_PlayerID = p_PlayerID;
-}
-bool SPIT_Message::PlaySPITEnd::fillBytes(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::PlaySPITEnd::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- m_ParseOffset += setInt(m_BytesCount, msgBytes, p_ByteCount, m_ParseOffset);
- m_ParseOffset += setString(m_PlayerID, msgBytes, p_ByteCount, m_ParseOffset, 41);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
+ m_ParseOffset += setString(m_PlayerID, message, m_ParseOffset, 41);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -1503,21 +1101,11 @@ bool SPIT_Message::PlaySPITEnd::fillBytes(char *msgBytes, int p_ByteCount) {
//----------- ReportPlayStatus -----------
-void SPIT_Message::ReportPlayStatus::initMembers() {
- m_SPITObjectID = "";
- m_FrameInsideObject = 0;
- m_Value = 0;
- m_BytesCount = BYTESLENGTH;
-}
-SPIT_Message::ReportPlayStatus::~ReportPlayStatus() {
-}
// Receive
-SPIT_Message::ReportPlayStatus::ReportPlayStatus(Header *p_Header) : OPPart(p_Header, OPFLAG) {
- initMembers();
+SPIT_Message::ReportPlayStatus::ReportPlayStatus(unique_ptr p_Header)
+ : OPPart(move(p_Header), OPFLAG, BYTESLENGTH) {
}
-bool SPIT_Message::ReportPlayStatus::parse(char *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::ReportPlayStatus::parse(const std::vector &message) {
if (m_Header == nullptr)
return false;
int intOPFlag = m_Header->getOPFlag();
@@ -1525,20 +1113,19 @@ bool SPIT_Message::ReportPlayStatus::parse(char *msgBytes, int p_ByteCount) {
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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();
+ m_BytesCount = getInt(message, m_ParseOffset).value();
+ m_SPITObjectID = getString(message, m_ParseOffset, 41).value();
+ m_FrameInsideObject = getLong(message, m_ParseOffset).value();
+ m_Value = getInt(message, m_ParseOffset).value();
} catch (...) {
+ ESP_LOGE(TAG, "failed to parse message");
return false;
}
return true;
}
// Send
-SPIT_Message::ReportPlayStatus::ReportPlayStatus() : OPPart() {
- initMembers();
- m_Header = new Header(SPITVERSION, OPFLAG);
- setHeader(m_Header);
+SPIT_Message::ReportPlayStatus::ReportPlayStatus() : OPPart(BYTESLENGTH) {
+ setHeader(make_unique(SPITVERSION, OPFLAG));
m_ParseOffset = Header::BYTESLENGTH;
}
@@ -1551,20 +1138,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 *msgBytes, int p_ByteCount) {
- if (msgBytes == nullptr)
- return false;
+bool SPIT_Message::ReportPlayStatus::fillBytes(std::vector &message) {
if (m_Header == nullptr)
return false;
- if (m_Header->fillBytes(msgBytes, p_ByteCount) == false)
+ if (m_Header->fillBytes(message) == false)
return false;
try {
m_ParseOffset = Header::BYTESLENGTH;
- 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);
+ m_ParseOffset += setInt(m_BytesCount, message, m_ParseOffset);
+ m_ParseOffset += setString(m_SPITObjectID, message, m_ParseOffset, 41);
+ m_ParseOffset += setLong(m_FrameInsideObject, message, m_ParseOffset);
+ m_ParseOffset += setInt(m_Value, message, m_ParseOffset);
} catch (...) {
+ ESP_LOGE(TAG, "failed to create message");
return false;
}
return true;
@@ -1582,159 +1168,148 @@ bool SPIT_Message::isSystemLittleEndian() {
return true;
}
-optional SPIT_Message::getInt(char *bytes, int size, int &offset) {
- if (!bytes || offset < 0 || offset + 4 > size)
+optional SPIT_Message::getInt(const std::vector &message, int &offset) {
+ if (offset < 0 || offset + 4 > message.size())
return std::nullopt;
// low byte first
int intValue = 0;
if (isSystemLittleEndian() == false) {
- intValue += ((bytes[offset + 0] & 0x000000ff));
- intValue += ((bytes[offset + 1] & 0x000000ff) << 8);
- intValue += ((bytes[offset + 2] & 0x000000ff) << 16);
- intValue += ((bytes[offset + 3] & 0x000000ff) << 24);
+ intValue += ((message[offset + 0] & 0x000000ff));
+ intValue += ((message[offset + 1] & 0x000000ff) << 8);
+ intValue += ((message[offset + 2] & 0x000000ff) << 16);
+ intValue += ((message[offset + 3] & 0x000000ff) << 24);
} else {
- intValue += ((bytes[offset + 3] & 0x000000ff));
- intValue += ((bytes[offset + 2] & 0x000000ff) << 8);
- intValue += ((bytes[offset + 1] & 0x000000ff) << 16);
- intValue += ((bytes[offset + 0] & 0x000000ff) << 24);
+ intValue += ((message[offset + 3] & 0x000000ff));
+ intValue += ((message[offset + 2] & 0x000000ff) << 8);
+ intValue += ((message[offset + 1] & 0x000000ff) << 16);
+ intValue += ((message[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 == nullptr || p_ByteCount < p_Offset + 4)
+int SPIT_Message::setInt(int p_Value, std::vector &message, int p_Offset) {
+ if ((p_Offset < 0) || (message.size() < p_Offset + 4))
throw "ParseError_send";
+
// low byte first
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);
+ message[p_Offset + 0] = (char)(p_Value & 0x000000ff);
+ message[p_Offset + 1] = (char)((p_Value & 0x0000ff00) >> 8);
+ message[p_Offset + 2] = (char)((p_Value & 0x00ff0000) >> 16);
+ message[p_Offset + 3] = (char)((p_Value & 0xff000000) >> 24);
} 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);
+ message[p_Offset + 3] = (char)(p_Value & 0x000000ff);
+ message[p_Offset + 2] = (char)((p_Value & 0x0000ff00) >> 8);
+ message[p_Offset + 1] = (char)((p_Value & 0x00ff0000) >> 16);
+ message[p_Offset + 0] = (char)((p_Value & 0xff000000) >> 24);
}
return 4;
}
-optional SPIT_Message::getLong(char *bytes, int size, int &offset) {
- if (!bytes || offset < 0 || offset + 8 > size)
+optional SPIT_Message::getLong(const std::vector &message, int &offset) {
+ if (offset < 0 || offset + 8 > message.size())
return std::nullopt;
// low byte first
long long intValue = 0;
if (isSystemLittleEndian() == false) {
- 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);
+ intValue += ((long long)(message[offset] & 0x000000ff));
+ intValue += ((long long)(message[offset + 1] & 0x000000ff) << 8);
+ intValue += ((long long)(message[offset + 2] & 0x000000ff) << 16);
+ intValue += ((long long)(message[offset + 3] & 0x000000ff) << 24);
+ intValue += ((long long)(message[offset + 4] & 0x000000ff) << 32);
+ intValue += ((long long)(message[offset + 5] & 0x000000ff) << 40);
+ intValue += ((long long)(message[offset + 6] & 0x000000ff) << 48);
+ intValue += ((long long)(message[offset + 7] & 0x000000ff) << 56);
} else {
- 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);
+ intValue += ((long long)(message[offset + 7] & 0x000000ff));
+ intValue += ((long long)(message[offset + 6] & 0x000000ff) << 8);
+ intValue += ((long long)(message[offset + 5] & 0x000000ff) << 16);
+ intValue += ((long long)(message[offset + 4] & 0x000000ff) << 24);
+ intValue += ((long long)(message[offset + 3] & 0x000000ff) << 32);
+ intValue += ((long long)(message[offset + 2] & 0x000000ff) << 40);
+ intValue += ((long long)(message[offset + 1] & 0x000000ff) << 48);
+ intValue += ((long long)(message[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 == nullptr || p_ByteCount < p_Offset + 8)
+int SPIT_Message::setLong(long long p_Value, std::vector &message, int p_Offset) {
+ if ((p_Offset < 0) || (message.size() < p_Offset + 8))
throw "ParseError_send";
// low byte first
if (isSystemLittleEndian() == false) {
- p_Bytes[p_Offset + 0] = (char)((p_Value & 0x00000000000000ff));
- p_Bytes[p_Offset + 1] = (char)((p_Value & 0x000000000000ff00) >> 8);
- p_Bytes[p_Offset + 2] = (char)((p_Value & 0x0000000000ff0000) >> 16);
- p_Bytes[p_Offset + 3] = (char)((p_Value & 0x00000000ff000000) >> 24);
- p_Bytes[p_Offset + 4] = (char)((p_Value & 0x000000ff00000000) >> 32);
- p_Bytes[p_Offset + 5] = (char)((p_Value & 0x0000ff0000000000) >> 40);
- p_Bytes[p_Offset + 6] = (char)((p_Value & 0x00ff000000000000) >> 48);
- p_Bytes[p_Offset + 7] = (char)((p_Value & 0xff00000000000000) >> 56);
+ message[p_Offset + 0] = (char)((p_Value & 0x00000000000000ff));
+ message[p_Offset + 1] = (char)((p_Value & 0x000000000000ff00) >> 8);
+ message[p_Offset + 2] = (char)((p_Value & 0x0000000000ff0000) >> 16);
+ message[p_Offset + 3] = (char)((p_Value & 0x00000000ff000000) >> 24);
+ message[p_Offset + 4] = (char)((p_Value & 0x000000ff00000000) >> 32);
+ message[p_Offset + 5] = (char)((p_Value & 0x0000ff0000000000) >> 40);
+ message[p_Offset + 6] = (char)((p_Value & 0x00ff000000000000) >> 48);
+ message[p_Offset + 7] = (char)((p_Value & 0xff00000000000000) >> 56);
} else {
- p_Bytes[p_Offset + 7] = (char)((p_Value & 0x00000000000000ff));
- p_Bytes[p_Offset + 6] = (char)((p_Value & 0x000000000000ff00) >> 8);
- p_Bytes[p_Offset + 5] = (char)((p_Value & 0x0000000000ff0000) >> 16);
- p_Bytes[p_Offset + 4] = (char)((p_Value & 0x00000000ff000000) >> 24);
- p_Bytes[p_Offset + 3] = (char)((p_Value & 0x000000ff00000000) >> 32);
- p_Bytes[p_Offset + 2] = (char)((p_Value & 0x0000ff0000000000) >> 40);
- p_Bytes[p_Offset + 1] = (char)((p_Value & 0x00ff000000000000) >> 48);
- p_Bytes[p_Offset + 0] = (char)((p_Value & 0xff00000000000000) >> 56);
+ message[p_Offset + 7] = (char)((p_Value & 0x00000000000000ff));
+ message[p_Offset + 6] = (char)((p_Value & 0x000000000000ff00) >> 8);
+ message[p_Offset + 5] = (char)((p_Value & 0x0000000000ff0000) >> 16);
+ message[p_Offset + 4] = (char)((p_Value & 0x00000000ff000000) >> 24);
+ message[p_Offset + 3] = (char)((p_Value & 0x000000ff00000000) >> 32);
+ message[p_Offset + 2] = (char)((p_Value & 0x0000ff0000000000) >> 40);
+ message[p_Offset + 1] = (char)((p_Value & 0x00ff000000000000) >> 48);
+ message[p_Offset + 0] = (char)((p_Value & 0xff00000000000000) >> 56);
}
return 8;
}
-optional SPIT_Message::getBoolean(char *bytes, int size, int &offset) {
- if (!bytes || offset < 0 || offset + 1 > size)
+optional SPIT_Message::getBoolean(const std::vector &message, int &offset) {
+ if (offset < 0 || offset + 1 > message.size())
return std::nullopt;
- return {bytes[offset++] > 0x00};
+ return {message[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 == nullptr || p_ByteCount < p_Offset + 1)
+int SPIT_Message::setBoolean(bool p_Value, std::vector &message, int p_Offset) {
+ if ((p_Offset < 0) || (message.size() < p_Offset + 1))
throw "ParseError_send";
+
if (p_Value == false) {
- p_Bytes[p_Offset] = 0x00;
+ message[p_Offset] = 0x00;
} else {
- p_Bytes[p_Offset] = 0x01;
+ message[p_Offset] = 0x01;
}
return 1;
}
-optional SPIT_Message::getByte(char *bytes, int size, int &offset) {
- if (!bytes || offset < 0 || offset + 1 > size)
+optional SPIT_Message::getByte(const std::vector &message, int &offset) {
+ if (offset < 0 || offset + 1 > message.size())
return std::nullopt;
- return {bytes[offset++]};
+ return {message[offset++]};
}
-int SPIT_Message::setByte(int p_Value, char *p_Bytes, int p_ByteCount, int p_Offset) {
- if (p_Offset < 0)
+int SPIT_Message::setByte(int p_Value, std::vector &message, int p_Offset) {
+ if ((p_Offset < 0) || (message.size() < p_Offset + 1))
throw "ParseError_send";
- if (p_Bytes == nullptr || p_ByteCount < p_Offset + 1)
- throw "ParseError_send";
- p_Bytes[p_Offset] = (char)(p_Value & 0xff);
+
+ message[p_Offset] = (char)(p_Value & 0xff);
return 1;
}
-optional SPIT_Message::getString(char *bytes, int size, int &offset, int maxLength) {
- if (!bytes || offset < 0 || offset + maxLength > size)
+optional SPIT_Message::getString(const std::vector &message, int &offset, int maxLength) {
+ if (offset < 0 || offset + maxLength > message.size())
return std::nullopt;
- size_t len = strnlen(&bytes[offset], maxLength);
+ size_t len = strnlen(&message[offset], maxLength);
if (len >= maxLength)
return std::nullopt;
- string str(&bytes[offset], len);
+ string str(&message[offset], len);
offset += maxLength;
return str;
}
-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 (maxLength < 1)
- throw "ParseError_send";
- if (p_Bytes == nullptr || p_ByteCount < offset + maxLength)
+int SPIT_Message::setString(string p_String, std::vector &message, int offset, int maxLength) {
+ if ((offset < 0) || (maxLength < 1) || (message.size() < offset + maxLength))
throw "ParseError_send";
int intLength;
@@ -1743,8 +1318,10 @@ int SPIT_Message::setString(string p_String, char *p_Bytes, int p_ByteCount, int
} else {
intLength = p_String.length() + 1;
}
+ int intChar = 0;
+ bool boolNullChar = false;
while (intChar < intLength) {
- p_Bytes[offset + intChar] = p_String.data()[intChar];
+ message[offset + intChar] = p_String.data()[intChar];
if (p_String[intChar] == '\0') {
boolNullChar = true;
break;
@@ -1752,22 +1329,7 @@ int SPIT_Message::setString(string p_String, char *p_Bytes, int p_ByteCount, int
intChar++;
}
if (boolNullChar == false) {
- p_Bytes[offset + intLength - 1] = '\0';
+ message[offset + intLength - 1] = '\0';
}
return maxLength;
}
-
-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();
- o_ByteArray = (char *)malloc(intBytesCount);
- *p_ByteCount = intBytesCount;
- } catch (...) {
- return nullptr;
- ESP_LOGE(TAG, "Failed to allocate memory");
- }
- return o_ByteArray;
-}