refactor: using references where possible
This commit is contained in:
@@ -212,10 +212,10 @@ class SPIT_Client : I_SAD_Client {
|
||||
void parseSPIT_Message(unique_ptr<SPIT_Message> p_SPITMessage);
|
||||
void checkParseSPIT_Message(unique_ptr<SPIT_Message> p_SPITMessage);
|
||||
void addOvertakingSPIT_Message(unique_ptr<SPIT_Message> p_SPIT_Message);
|
||||
void parseConnectAnswer(SPIT_Message::ConnectAnswer *p_ConnectAnswer);
|
||||
void parseDisconnect(SPIT_Message::Disconnect *p_Disconnect);
|
||||
void parseWatchdog(SPIT_Message::Watchdog *p_Watchdog);
|
||||
void parseWatchdogAnswer(SPIT_Message::WatchdogAnswer *p_WatchdogAnswer);
|
||||
void parseConnectAnswer(SPIT_Message::ConnectAnswer &p_ConnectAnswer);
|
||||
void parseDisconnect(SPIT_Message::Disconnect &p_Disconnect);
|
||||
void parseWatchdog(SPIT_Message::Watchdog &p_Watchdog);
|
||||
void parseWatchdogAnswer(SPIT_Message::WatchdogAnswer &p_WatchdogAnswer);
|
||||
|
||||
public:
|
||||
/** Used internally*/
|
||||
@@ -224,8 +224,8 @@ class SPIT_Client : I_SAD_Client {
|
||||
void eventWatchdogLost();
|
||||
//--------------- SPIT Project ---------------
|
||||
private:
|
||||
void parseReportSPITProject(SPIT_Message::ReportSPITProject *p_ReportSPITProject);
|
||||
void parseCloseSPITProject(SPIT_Message::CloseSPITProject *p_CloseSPITProject);
|
||||
void parseReportSPITProject(SPIT_Message::ReportSPITProject &p_ReportSPITProject);
|
||||
void parseCloseSPITProject(SPIT_Message::CloseSPITProject &p_CloseSPITProject);
|
||||
|
||||
public:
|
||||
/** Returns the SPITServer's project ID - may be the same as the project's name*/
|
||||
@@ -236,9 +236,9 @@ class SPIT_Client : I_SAD_Client {
|
||||
int getServerFramesPerSecond();
|
||||
|
||||
private:
|
||||
void parseRequestProjectTransfer(SPIT_Message::RequestProjectTransfer *p_RequestProjectTransfer);
|
||||
void parseStartProjectTransfer(SPIT_Message::StartProjectTransfer *p_StartProjectTransfer);
|
||||
void parseEndProjectTransfer(SPIT_Message::EndProjectTransfer *p_EndProjectTransfer);
|
||||
void parseRequestProjectTransfer(SPIT_Message::RequestProjectTransfer &p_RequestProjectTransfer);
|
||||
void parseStartProjectTransfer(SPIT_Message::StartProjectTransfer &p_StartProjectTransfer);
|
||||
void parseEndProjectTransfer(SPIT_Message::EndProjectTransfer &p_EndProjectTransfer);
|
||||
|
||||
public:
|
||||
static void sendProject(SPIT_Client *p_PtrSPIT_Client);
|
||||
@@ -274,8 +274,8 @@ class SPIT_Client : I_SAD_Client {
|
||||
|
||||
private:
|
||||
// receive SPITTypes
|
||||
void parseReportSPITType(SPIT_Message::ReportSPITType *p_ReportSPITType);
|
||||
void parseRemoveSPITType(SPIT_Message::RemoveSPITType *p_RemoveSPITType);
|
||||
void parseReportSPITType(SPIT_Message::ReportSPITType &p_ReportSPITType);
|
||||
void parseRemoveSPITType(SPIT_Message::RemoveSPITType &p_RemoveSPITType);
|
||||
int sendSPITTypeInternal(SPITType &p_SPITType);
|
||||
|
||||
public:
|
||||
@@ -297,8 +297,8 @@ class SPIT_Client : I_SAD_Client {
|
||||
public:
|
||||
//--------------- SPIT Objects ---------------
|
||||
private:
|
||||
void parseReportSPITObject(SPIT_Message::ReportSPITObject *p_ReportSPITObject);
|
||||
void parseRemoveSPITObject(SPIT_Message::RemoveSPITObject *p_RemoveSPITObject);
|
||||
void parseReportSPITObject(SPIT_Message::ReportSPITObject &p_ReportSPITObject);
|
||||
void parseRemoveSPITObject(SPIT_Message::RemoveSPITObject &p_RemoveSPITObject);
|
||||
int sendSPITObjectInternal(SPITObject *ptrSPITObject);
|
||||
|
||||
public:
|
||||
@@ -320,10 +320,10 @@ class SPIT_Client : I_SAD_Client {
|
||||
public:
|
||||
//--------------- Play SPIT Objects ---------------
|
||||
private:
|
||||
void parsePlaySPITStart(SPIT_Message::PlaySPITStart *p_PlaySPITStart);
|
||||
void parsePlaySPITObject(SPIT_Message::PlaySPITObject *p_PlaySPITObject);
|
||||
void parsePlaySPITEnd(SPIT_Message::PlaySPITEnd *p_PlaySPITEnd);
|
||||
void parseReportPlayStatus(SPIT_Message::ReportPlayStatus *p_ReportPlayStatus);
|
||||
void parsePlaySPITStart(SPIT_Message::PlaySPITStart &p_PlaySPITStart);
|
||||
void parsePlaySPITObject(SPIT_Message::PlaySPITObject &p_PlaySPITObject);
|
||||
void parsePlaySPITEnd(SPIT_Message::PlaySPITEnd &p_PlaySPITEnd);
|
||||
void parseReportPlayStatus(SPIT_Message::ReportPlayStatus &p_ReportPlayStatus);
|
||||
|
||||
public:
|
||||
//--------- Remote ----------
|
||||
|
||||
@@ -156,6 +156,8 @@ class SPIT_Message {
|
||||
return m_OPPart->getHeader()->getOPFlag();
|
||||
}
|
||||
const OPPart *getOPPart() const { return m_OPPart.get(); }
|
||||
template<typename T>
|
||||
T &getOPPartAs() const { return *reinterpret_cast<T *>(m_OPPart.get()); }
|
||||
|
||||
private:
|
||||
bool parse(std::vector<char> message);
|
||||
|
||||
+126
-164
@@ -213,7 +213,6 @@ void SPIT_Client::eventServerChanged(SAD_DetectedServer &server) {
|
||||
// // } //Excample
|
||||
// }
|
||||
|
||||
|
||||
int SPIT_Client::sendSPITMessage(SPIT_Message::OPPart &opPart) {
|
||||
if (m_MessageNumber_Send == 255)
|
||||
m_MessageNumber_Send = 1;
|
||||
@@ -278,16 +277,8 @@ void SPIT_Client::resetMessageNumberReceived() {
|
||||
|
||||
void SPIT_Client::checkParseSPIT_Message(unique_ptr<SPIT_Message> p_SPITMessage) {
|
||||
answerWatchdog();
|
||||
if (p_SPITMessage == nullptr) {
|
||||
ESP_LOGD(TAG, "SPIT_Client::parseSPIT_Message Parameter == nullptr\n");
|
||||
return;
|
||||
}
|
||||
if (p_SPITMessage->getHeader() == nullptr) {
|
||||
ESP_LOGD(TAG, "SPIT_Client::parseSPIT_Message no Header\n");
|
||||
return;
|
||||
}
|
||||
if (p_SPITMessage->getOPPart() == nullptr) {
|
||||
ESP_LOGD(TAG, "SPIT_Client::parseSPIT_Message no OPPart\n");
|
||||
if (!p_SPITMessage || !p_SPITMessage->getHeader() || p_SPITMessage->getOPPart()) {
|
||||
ESP_LOGD(TAG, "SPIT_Client::parseSPIT_Message incomplete message");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -361,82 +352,69 @@ void SPIT_Client::addOvertakingSPIT_Message(unique_ptr<SPIT_Message> p_SPIT_Mess
|
||||
|
||||
void SPIT_Client::parseSPIT_Message(unique_ptr<SPIT_Message> p_SPITMessage) {
|
||||
answerWatchdog();
|
||||
if (!p_SPITMessage) {
|
||||
ESP_LOGD(TAG, "SPIT_Client::parseSPIT_Message Parameter == nullptr");
|
||||
return;
|
||||
}
|
||||
if (p_SPITMessage->getHeader() == nullptr) {
|
||||
ESP_LOGD(TAG, "SPIT_Client::parseSPIT_Message no Header");
|
||||
return;
|
||||
}
|
||||
if (p_SPITMessage->getOPPart() == nullptr) {
|
||||
ESP_LOGD(TAG, "SPIT_Client::parseSPIT_Message no OPPart");
|
||||
if (!p_SPITMessage || !p_SPITMessage->getHeader() || !p_SPITMessage->getOPPart()) {
|
||||
ESP_LOGD(TAG, "SPIT_Client::parseSPIT_Message incomplete message");
|
||||
return;
|
||||
}
|
||||
|
||||
switch (p_SPITMessage->getOPFlag()) {
|
||||
//----- Connection -----
|
||||
if (p_SPITMessage->getOPFlag() == SPIT_Message::ConnectAnswer::OPFLAG) {
|
||||
SPIT_Message::ConnectAnswer *o_ConnectAnswer = (SPIT_Message::ConnectAnswer *)p_SPITMessage->getOPPart();
|
||||
parseConnectAnswer(o_ConnectAnswer);
|
||||
} else if (p_SPITMessage->getOPFlag() == SPIT_Message::Disconnect::OPFLAG) {
|
||||
SPIT_Message::Disconnect *o_Disconnect = (SPIT_Message::Disconnect *)p_SPITMessage->getOPPart();
|
||||
parseDisconnect(o_Disconnect);
|
||||
} else if (p_SPITMessage->getOPFlag() == SPIT_Message::ReportSPITProject::OPFLAG) {
|
||||
SPIT_Message::ReportSPITProject *o_ReportSPITProject = (SPIT_Message::ReportSPITProject *)p_SPITMessage->getOPPart();
|
||||
parseReportSPITProject(o_ReportSPITProject);
|
||||
} else if (p_SPITMessage->getOPFlag() == SPIT_Message::Watchdog::OPFLAG) {
|
||||
SPIT_Message::Watchdog *o_Watchdog = (SPIT_Message::Watchdog *)p_SPITMessage->getOPPart();
|
||||
parseWatchdog(o_Watchdog);
|
||||
} else if (p_SPITMessage->getOPFlag() == SPIT_Message::WatchdogAnswer::OPFLAG) {
|
||||
SPIT_Message::WatchdogAnswer *o_WatchdogAnswer = (SPIT_Message::WatchdogAnswer *)p_SPITMessage->getOPPart();
|
||||
parseWatchdogAnswer(o_WatchdogAnswer);
|
||||
}
|
||||
case SPIT_Message::ConnectAnswer::OPFLAG:
|
||||
parseConnectAnswer(p_SPITMessage->getOPPartAs<SPIT_Message::ConnectAnswer>());
|
||||
break;
|
||||
case SPIT_Message::Disconnect::OPFLAG:
|
||||
parseDisconnect(p_SPITMessage->getOPPartAs<SPIT_Message::Disconnect>());
|
||||
break;
|
||||
case SPIT_Message::ReportSPITProject::OPFLAG:
|
||||
parseReportSPITProject(p_SPITMessage->getOPPartAs<SPIT_Message::ReportSPITProject>());
|
||||
break;
|
||||
case SPIT_Message::Watchdog::OPFLAG:
|
||||
parseWatchdog(p_SPITMessage->getOPPartAs<SPIT_Message::Watchdog>());
|
||||
break;
|
||||
case SPIT_Message::WatchdogAnswer::OPFLAG:
|
||||
parseWatchdogAnswer(p_SPITMessage->getOPPartAs<SPIT_Message::WatchdogAnswer>());
|
||||
break;
|
||||
//----- SPIT Project -----
|
||||
else if (p_SPITMessage->getOPFlag() == SPIT_Message::StartProjectTransfer::OPFLAG) {
|
||||
SPIT_Message::StartProjectTransfer *o_StartProjectTransfer = (SPIT_Message::StartProjectTransfer *)p_SPITMessage->getOPPart();
|
||||
parseStartProjectTransfer(o_StartProjectTransfer);
|
||||
} else if (p_SPITMessage->getOPFlag() == SPIT_Message::CloseSPITProject::OPFLAG) {
|
||||
SPIT_Message::CloseSPITProject *o_CloseSPITProjectr = (SPIT_Message::CloseSPITProject *)p_SPITMessage->getOPPart();
|
||||
parseCloseSPITProject(o_CloseSPITProjectr);
|
||||
} else if (p_SPITMessage->getOPFlag() == SPIT_Message::RequestProjectTransfer::OPFLAG) {
|
||||
SPIT_Message::RequestProjectTransfer *o_RequestProjectTransfer = (SPIT_Message::RequestProjectTransfer *)p_SPITMessage->getOPPart();
|
||||
parseRequestProjectTransfer(o_RequestProjectTransfer);
|
||||
} else if (p_SPITMessage->getOPFlag() == SPIT_Message::StartProjectTransfer::OPFLAG) {
|
||||
SPIT_Message::StartProjectTransfer *o_StartProjectTransfer = (SPIT_Message::StartProjectTransfer *)p_SPITMessage->getOPPart();
|
||||
parseStartProjectTransfer(o_StartProjectTransfer);
|
||||
} else if (p_SPITMessage->getOPFlag() == SPIT_Message::EndProjectTransfer::OPFLAG) {
|
||||
SPIT_Message::EndProjectTransfer *o_EndProjectTransfer = (SPIT_Message::EndProjectTransfer *)p_SPITMessage->getOPPart();
|
||||
parseEndProjectTransfer(o_EndProjectTransfer);
|
||||
}
|
||||
case SPIT_Message::StartProjectTransfer::OPFLAG:
|
||||
parseStartProjectTransfer(p_SPITMessage->getOPPartAs<SPIT_Message::StartProjectTransfer>());
|
||||
break;
|
||||
case SPIT_Message::CloseSPITProject::OPFLAG:
|
||||
parseCloseSPITProject(p_SPITMessage->getOPPartAs<SPIT_Message::CloseSPITProject>());
|
||||
break;
|
||||
case SPIT_Message::RequestProjectTransfer::OPFLAG:
|
||||
parseRequestProjectTransfer(p_SPITMessage->getOPPartAs<SPIT_Message::RequestProjectTransfer>());
|
||||
break;
|
||||
case SPIT_Message::EndProjectTransfer::OPFLAG:
|
||||
parseEndProjectTransfer(p_SPITMessage->getOPPartAs<SPIT_Message::EndProjectTransfer>());
|
||||
break;
|
||||
//----- SPIT Types ------
|
||||
else if (p_SPITMessage->getOPFlag() == SPIT_Message::ReportSPITType::OPFLAG) {
|
||||
SPIT_Message::ReportSPITType *o_ReportSPITType = (SPIT_Message::ReportSPITType *)p_SPITMessage->getOPPart();
|
||||
parseReportSPITType(o_ReportSPITType);
|
||||
} else if (p_SPITMessage->getOPFlag() == SPIT_Message::RemoveSPITType::OPFLAG) {
|
||||
SPIT_Message::RemoveSPITType *o_RemoveSPITType = (SPIT_Message::RemoveSPITType *)p_SPITMessage->getOPPart();
|
||||
parseRemoveSPITType(o_RemoveSPITType);
|
||||
}
|
||||
case SPIT_Message::ReportSPITType::OPFLAG:
|
||||
parseReportSPITType(p_SPITMessage->getOPPartAs<SPIT_Message::ReportSPITType>());
|
||||
break;
|
||||
case SPIT_Message::RemoveSPITType::OPFLAG:
|
||||
parseRemoveSPITType(p_SPITMessage->getOPPartAs<SPIT_Message::RemoveSPITType>());
|
||||
//----- SPIT Objects ------
|
||||
else if (p_SPITMessage->getOPFlag() == SPIT_Message::ReportSPITObject::OPFLAG) {
|
||||
SPIT_Message::ReportSPITObject *o_ReportSPITObject = (SPIT_Message::ReportSPITObject *)p_SPITMessage->getOPPart();
|
||||
parseReportSPITObject(o_ReportSPITObject);
|
||||
} else if (p_SPITMessage->getOPFlag() == SPIT_Message::RemoveSPITObject::OPFLAG) {
|
||||
SPIT_Message::RemoveSPITObject *o_RemoveSPITObject = (SPIT_Message::RemoveSPITObject *)p_SPITMessage->getOPPart();
|
||||
parseRemoveSPITObject(o_RemoveSPITObject);
|
||||
}
|
||||
break;
|
||||
case SPIT_Message::ReportSPITObject::OPFLAG:
|
||||
parseReportSPITObject(p_SPITMessage->getOPPartAs<SPIT_Message::ReportSPITObject>());
|
||||
break;
|
||||
case SPIT_Message::RemoveSPITObject::OPFLAG:
|
||||
parseRemoveSPITObject(p_SPITMessage->getOPPartAs<SPIT_Message::RemoveSPITObject>());
|
||||
break;
|
||||
//----- Play SPIT Objects ------
|
||||
else if (p_SPITMessage->getOPFlag() == SPIT_Message::PlaySPITStart::OPFLAG) {
|
||||
SPIT_Message::PlaySPITStart *o_PlaySPITStart = (SPIT_Message::PlaySPITStart *)p_SPITMessage->getOPPart();
|
||||
parsePlaySPITStart(o_PlaySPITStart);
|
||||
} else if (p_SPITMessage->getOPFlag() == SPIT_Message::PlaySPITObject::OPFLAG) {
|
||||
SPIT_Message::PlaySPITObject *o_PlaySPITObject = (SPIT_Message::PlaySPITObject *)p_SPITMessage->getOPPart();
|
||||
parsePlaySPITObject(o_PlaySPITObject);
|
||||
} else if (p_SPITMessage->getOPFlag() == SPIT_Message::PlaySPITEnd::OPFLAG) {
|
||||
SPIT_Message::PlaySPITEnd *o_PlaySPITEnd = (SPIT_Message::PlaySPITEnd *)p_SPITMessage->getOPPart();
|
||||
parsePlaySPITEnd(o_PlaySPITEnd);
|
||||
} else if (p_SPITMessage->getOPFlag() == SPIT_Message::ReportPlayStatus::OPFLAG) {
|
||||
SPIT_Message::ReportPlayStatus *o_ReportPlayStatus = (SPIT_Message::ReportPlayStatus *)p_SPITMessage->getOPPart();
|
||||
parseReportPlayStatus(o_ReportPlayStatus);
|
||||
} else {
|
||||
case SPIT_Message::PlaySPITStart::OPFLAG:
|
||||
parsePlaySPITStart(p_SPITMessage->getOPPartAs<SPIT_Message::PlaySPITStart>());
|
||||
break;
|
||||
case SPIT_Message::PlaySPITObject::OPFLAG:
|
||||
parsePlaySPITObject(p_SPITMessage->getOPPartAs<SPIT_Message::PlaySPITObject>());
|
||||
break;
|
||||
case SPIT_Message::PlaySPITEnd::OPFLAG:
|
||||
parsePlaySPITEnd(p_SPITMessage->getOPPartAs<SPIT_Message::PlaySPITEnd>());
|
||||
break;
|
||||
case SPIT_Message::ReportPlayStatus::OPFLAG:
|
||||
parseReportPlayStatus(p_SPITMessage->getOPPartAs<SPIT_Message::ReportPlayStatus>());
|
||||
break;
|
||||
default:
|
||||
ESP_LOGD(TAG, "SPIT_Client::parseSPIT_Message: Unknown Message");
|
||||
}
|
||||
}
|
||||
@@ -548,21 +526,21 @@ void SPIT_Client::disconnectInternal(Connection p_Cause) {
|
||||
}
|
||||
}
|
||||
|
||||
void SPIT_Client::parseConnectAnswer(SPIT_Message::ConnectAnswer *p_ConnectAnswer) {
|
||||
void SPIT_Client::parseConnectAnswer(SPIT_Message::ConnectAnswer &p_ConnectAnswer) {
|
||||
Connection intOldConnectionStatus = m_ConnectionStatus;
|
||||
|
||||
if (p_ConnectAnswer->getClientID() != m_ID)
|
||||
if (p_ConnectAnswer.getClientID() != m_ID)
|
||||
return;
|
||||
|
||||
m_ServerID = p_ConnectAnswer->getServerID();
|
||||
m_ServerComputerName = p_ConnectAnswer->getServerComputerName();
|
||||
m_ServerName = p_ConnectAnswer->getServerName();
|
||||
m_ServerStepTime = p_ConnectAnswer->getStepTime();
|
||||
m_ServerID = p_ConnectAnswer.getServerID();
|
||||
m_ServerComputerName = p_ConnectAnswer.getServerComputerName();
|
||||
m_ServerName = p_ConnectAnswer.getServerName();
|
||||
m_ServerStepTime = p_ConnectAnswer.getStepTime();
|
||||
|
||||
if (p_ConnectAnswer->getConnected() == false) {
|
||||
if (p_ConnectAnswer.getConnected() == false) {
|
||||
disconnectInternal(Connection::NoneServer);
|
||||
} else {
|
||||
p_ConnectAnswer->getStepTime();
|
||||
p_ConnectAnswer.getStepTime();
|
||||
m_ConnectionStatus = Connection::Ok;
|
||||
m_DisconnectedByServer = false;
|
||||
ESP_LOGD(TAG, "connection established");
|
||||
@@ -580,7 +558,7 @@ void SPIT_Client::parseConnectAnswer(SPIT_Message::ConnectAnswer *p_ConnectAnswe
|
||||
* The SPIT server was closed
|
||||
* @param p_Disconnect
|
||||
*/
|
||||
void SPIT_Client::parseDisconnect(SPIT_Message::Disconnect *p_Disconnect) {
|
||||
void SPIT_Client::parseDisconnect(SPIT_Message::Disconnect &p_Disconnect) {
|
||||
Connection intCauseDisconnect = Connection::NoneServer;
|
||||
/*
|
||||
function<void()> o_Callable = bind(&SPIT_Client::disconnectInternal, this, intCauseDisconnect);
|
||||
@@ -597,7 +575,7 @@ void SPIT_Client::parseDisconnect(SPIT_Message::Disconnect *p_Disconnect) {
|
||||
* This is used to check if the other side is still present.
|
||||
* @param p_Watchdog
|
||||
*/
|
||||
void SPIT_Client::parseWatchdog(SPIT_Message::Watchdog *p_Watchdog) {
|
||||
void SPIT_Client::parseWatchdog(SPIT_Message::Watchdog &p_Watchdog) {
|
||||
// printf("parse Watchdog \n");
|
||||
SPIT_Message::WatchdogAnswer o_WatchdogAnswer;
|
||||
sendSPITMessage(o_WatchdogAnswer);
|
||||
@@ -608,7 +586,7 @@ void SPIT_Client::parseWatchdog(SPIT_Message::Watchdog *p_Watchdog) {
|
||||
* This is used to check if the other side is still present.
|
||||
* @param p_Watchdog
|
||||
*/
|
||||
void SPIT_Client::parseWatchdogAnswer(SPIT_Message::WatchdogAnswer *p_WatchdogAnswer) {
|
||||
void SPIT_Client::parseWatchdogAnswer(SPIT_Message::WatchdogAnswer &p_WatchdogAnswer) {
|
||||
answerWatchdog();
|
||||
; // is also done by parseSPIT_Message
|
||||
}
|
||||
@@ -629,13 +607,11 @@ void SPIT_Client::eventWatchdogLost() {
|
||||
}
|
||||
|
||||
//----- SPIT Project ------
|
||||
void SPIT_Client::parseReportSPITProject(SPIT_Message::ReportSPITProject *p_ReportSPITProject) {
|
||||
void SPIT_Client::parseReportSPITProject(SPIT_Message::ReportSPITProject &p_ReportSPITProject) {
|
||||
// printf("parse ReportSPITProject \n");
|
||||
if (p_ReportSPITProject == nullptr)
|
||||
return;
|
||||
m_ServerProjectID = p_ReportSPITProject->getProjectID();
|
||||
m_ServerProjectName = p_ReportSPITProject->getProjectName();
|
||||
m_ServerFramesPerSecond = p_ReportSPITProject->getFramesPerSecond();
|
||||
m_ServerProjectID = p_ReportSPITProject.getProjectID();
|
||||
m_ServerProjectName = p_ReportSPITProject.getProjectName();
|
||||
m_ServerFramesPerSecond = p_ReportSPITProject.getFramesPerSecond();
|
||||
mCallbacks.onProjectUpdate(ProjUpdate::ServerLoaded, m_ServerProjectID);
|
||||
|
||||
// Set all SPITTypes and SPITObjects confirmed = false
|
||||
@@ -656,12 +632,10 @@ void SPIT_Client::parseReportSPITProject(SPIT_Message::ReportSPITProject *p_Repo
|
||||
ESP_LOGD(TAG, "SPIT_Client::parseReportSPITProject could not send Client's ReportSPITProject");
|
||||
}
|
||||
}
|
||||
void SPIT_Client::parseCloseSPITProject(SPIT_Message::CloseSPITProject *p_CloseSPITProject) {
|
||||
void SPIT_Client::parseCloseSPITProject(SPIT_Message::CloseSPITProject &p_CloseSPITProject) {
|
||||
// printf("parse CloseSPITProject \n");
|
||||
if (p_CloseSPITProject == nullptr)
|
||||
return;
|
||||
string stringProjectID;
|
||||
mCallbacks.onProjectUpdate(ProjUpdate::ServerClosed, p_CloseSPITProject->getProjectID());
|
||||
mCallbacks.onProjectUpdate(ProjUpdate::ServerClosed, p_CloseSPITProject.getProjectID());
|
||||
SPITPlayer::clearPlayers();
|
||||
}
|
||||
|
||||
@@ -669,7 +643,7 @@ string SPIT_Client::getServerProjectID() { return m_ServerProjectID; }
|
||||
string SPIT_Client::getServerProjectName() { return m_ServerProjectName; }
|
||||
int SPIT_Client::getServerFramesPerSecond() { return m_ServerFramesPerSecond; }
|
||||
|
||||
void SPIT_Client::parseRequestProjectTransfer(SPIT_Message::RequestProjectTransfer *p_RequestProjectTransfer) {
|
||||
void SPIT_Client::parseRequestProjectTransfer(SPIT_Message::RequestProjectTransfer &p_RequestProjectTransfer) {
|
||||
// printf("parse RequestProjectTransfer \n");
|
||||
// StartProjectTransfer
|
||||
SPIT_Message::StartProjectTransfer sMStartProjectTransfer;
|
||||
@@ -828,10 +802,10 @@ void SPIT_Client::sendProject(SPIT_Client *p_PtrSPIT_Client) {
|
||||
// //Send act
|
||||
}
|
||||
|
||||
void SPIT_Client::parseStartProjectTransfer(SPIT_Message::StartProjectTransfer *p_StartProjectTransfer) {
|
||||
void SPIT_Client::parseStartProjectTransfer(SPIT_Message::StartProjectTransfer &p_StartProjectTransfer) {
|
||||
mCallbacks.onProjectUpdate(ProjUpdate::StartTransfer, m_ServerProjectID);
|
||||
}
|
||||
void SPIT_Client::parseEndProjectTransfer(SPIT_Message::EndProjectTransfer *p_EndProjectTransfer) {
|
||||
void SPIT_Client::parseEndProjectTransfer(SPIT_Message::EndProjectTransfer &p_EndProjectTransfer) {
|
||||
SPITObject::clearUnconfirmedSPITObjects(mSpitObjects);
|
||||
mCallbacks.onProjectUpdate(ProjUpdate::EndTransfer, m_ServerProjectID);
|
||||
|
||||
@@ -844,36 +818,34 @@ void SPIT_Client::parseEndProjectTransfer(SPIT_Message::EndProjectTransfer *p_En
|
||||
}
|
||||
|
||||
//----- SPIT Types ------
|
||||
void SPIT_Client::parseReportSPITType(SPIT_Message::ReportSPITType *p_ReportSPITType) {
|
||||
// printf("parse ReportSPITType ID %s Name %s \n",p_ReportSPITType->getID(), p_ReportSPITType->getName());
|
||||
if (p_ReportSPITType == nullptr)
|
||||
return;
|
||||
void SPIT_Client::parseReportSPITType(SPIT_Message::ReportSPITType &p_ReportSPITType) {
|
||||
// printf("parse ReportSPITType ID %s Name %s \n",p_ReportSPITType.getID(), p_ReportSPITType.getName());
|
||||
SPITType *ptrSPITType;
|
||||
bool boolNew = false;
|
||||
bool boolChanged = false;
|
||||
{
|
||||
if (p_ReportSPITType->getServerRemote() == false) {
|
||||
ptrSPITType = mSpitTypes.getEntry(p_ReportSPITType->getID());
|
||||
if (p_ReportSPITType.getServerRemote() == false) {
|
||||
ptrSPITType = mSpitTypes.getEntry(p_ReportSPITType.getID());
|
||||
if (ptrSPITType == nullptr) {
|
||||
// The user's app my veto the SPITType
|
||||
if (mCallbacks.onCheckSpitTypeVeto(p_ReportSPITType) == false) {
|
||||
if (mCallbacks.onCheckSpitTypeVeto(&p_ReportSPITType) == false) {
|
||||
return;
|
||||
}
|
||||
auto spitType = make_unique<SPITType>(p_ReportSPITType->getID());
|
||||
auto spitType = make_unique<SPITType>(p_ReportSPITType.getID());
|
||||
ptrSPITType = spitType.get();
|
||||
mSpitTypes.addEntry(move(spitType));
|
||||
boolNew = true;
|
||||
}
|
||||
} else {
|
||||
ptrSPITType = mRemoteSpitTypes.getEntry(p_ReportSPITType->getID());
|
||||
ptrSPITType = mRemoteSpitTypes.getEntry(p_ReportSPITType.getID());
|
||||
if (ptrSPITType == nullptr) {
|
||||
auto spitType = make_unique<SPITType>(p_ReportSPITType->getID());
|
||||
auto spitType = make_unique<SPITType>(p_ReportSPITType.getID());
|
||||
ptrSPITType = spitType.get();
|
||||
mRemoteSpitTypes.addEntry(move(spitType));
|
||||
boolNew = true;
|
||||
}
|
||||
}
|
||||
if (!ptrSPITType->setMessageOP(*p_ReportSPITType)) {
|
||||
if (!ptrSPITType->setMessageOP(p_ReportSPITType)) {
|
||||
// SPITType is not changable -> send back to the server
|
||||
sendSPITTypeInternal(*ptrSPITType);
|
||||
return;
|
||||
@@ -890,13 +862,10 @@ void SPIT_Client::parseReportSPITType(SPIT_Message::ReportSPITType *p_ReportSPIT
|
||||
}
|
||||
}
|
||||
}
|
||||
void SPIT_Client::parseRemoveSPITType(SPIT_Message::RemoveSPITType *p_RemoveSPITType) {
|
||||
// printf("parse RemoveSPITType %s\n", p_RemoveSPITType->getID());
|
||||
if (!p_RemoveSPITType) {
|
||||
return;
|
||||
}
|
||||
void SPIT_Client::parseRemoveSPITType(SPIT_Message::RemoveSPITType &p_RemoveSPITType) {
|
||||
// printf("parse RemoveSPITType %s\n", p_RemoveSPITType.getID());
|
||||
bool boolRemote = false;
|
||||
string stringSPITTypeID = p_RemoveSPITType->getID();
|
||||
string stringSPITTypeID = p_RemoveSPITType.getID();
|
||||
|
||||
SPITType *ptrSPITType = mRemoteSpitTypes.getEntry(stringSPITTypeID);
|
||||
if (!ptrSPITType) {
|
||||
@@ -1018,21 +987,19 @@ SPITType *SPIT_Client::createSPITType(string p_ID, string p_GroupName, string p_
|
||||
}
|
||||
|
||||
//----- SPIT Objects ------
|
||||
void SPIT_Client::parseReportSPITObject(SPIT_Message::ReportSPITObject *p_ReportSPITObject) {
|
||||
ESP_LOGD(TAG, "parse ReportSPITObject %s\n", p_ReportSPITObject->getID().c_str());
|
||||
if (p_ReportSPITObject == nullptr)
|
||||
return;
|
||||
void SPIT_Client::parseReportSPITObject(SPIT_Message::ReportSPITObject &p_ReportSPITObject) {
|
||||
ESP_LOGD(TAG, "parse ReportSPITObject %s\n", p_ReportSPITObject.getID().c_str());
|
||||
SPITObject *ptrSPITObject;
|
||||
SPITType *ptrSPITType;
|
||||
bool boolNew = false;
|
||||
bool boolRemote = false;
|
||||
bool boolChanged = false;
|
||||
{
|
||||
ESP_LOGD(TAG, "parseReportSPITObject %s / %s", p_ReportSPITObject->getID().c_str(), p_ReportSPITObject->getName().c_str());
|
||||
if (p_ReportSPITObject->getServerRemote() == false) {
|
||||
ESP_LOGD(TAG, "parseReportSPITObject %s / %s", p_ReportSPITObject.getID().c_str(), p_ReportSPITObject.getName().c_str());
|
||||
if (p_ReportSPITObject.getServerRemote() == false) {
|
||||
boolRemote = false;
|
||||
ptrSPITObject = mSpitObjects.getEntry(p_ReportSPITObject->getID());
|
||||
ptrSPITType = mSpitTypes.getEntry(p_ReportSPITObject->getSPITTypeID());
|
||||
ptrSPITObject = mSpitObjects.getEntry(p_ReportSPITObject.getID());
|
||||
ptrSPITType = mSpitTypes.getEntry(p_ReportSPITObject.getSPITTypeID());
|
||||
|
||||
if (ptrSPITType == nullptr) {
|
||||
// No associated SPITType found
|
||||
@@ -1045,40 +1012,40 @@ void SPIT_Client::parseReportSPITObject(SPIT_Message::ReportSPITObject *p_Report
|
||||
}
|
||||
if (ptrSPITObject == nullptr) {
|
||||
// The user's app my veto the SPITType
|
||||
if (mCallbacks.onCheckSpitObjectVeto(p_ReportSPITObject) == false) {
|
||||
ESP_LOGD(TAG, "ObjectVeto %s / %s", p_ReportSPITObject->getID().c_str(), p_ReportSPITObject->getName().c_str());
|
||||
if (mCallbacks.onCheckSpitObjectVeto(&p_ReportSPITObject) == false) {
|
||||
ESP_LOGD(TAG, "ObjectVeto %s / %s", p_ReportSPITObject.getID().c_str(), p_ReportSPITObject.getName().c_str());
|
||||
return;
|
||||
}
|
||||
auto spitObj = make_unique<SPITObject>(p_ReportSPITObject->getID());
|
||||
auto spitObj = make_unique<SPITObject>(p_ReportSPITObject.getID());
|
||||
ptrSPITObject = spitObj.get();
|
||||
mSpitObjects.addEntry(move(spitObj));
|
||||
boolNew = true;
|
||||
} else {
|
||||
// The user's app my veto the SPITType
|
||||
if (mCallbacks.onCheckSpitObjectVeto(p_ReportSPITObject) == false) {
|
||||
if (mCallbacks.onCheckSpitObjectVeto(&p_ReportSPITObject) == false) {
|
||||
// SpitObject exists and User APp denied the SPITObject -> remove the SPITObject without sending a message
|
||||
mSpitObjects.removeEntry(*ptrSPITObject);
|
||||
ESP_LOGD(TAG, "TypeVeto %s / %s", p_ReportSPITObject->getID().c_str(), p_ReportSPITObject->getName().c_str());
|
||||
ESP_LOGD(TAG, "TypeVeto %s / %s", p_ReportSPITObject.getID().c_str(), p_ReportSPITObject.getName().c_str());
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
boolRemote = true;
|
||||
ptrSPITObject = mRemoteSpitObjects.getEntry(p_ReportSPITObject->getID());
|
||||
ptrSPITType = mRemoteSpitTypes.getEntry(p_ReportSPITObject->getSPITTypeID());
|
||||
ptrSPITObject = mRemoteSpitObjects.getEntry(p_ReportSPITObject.getID());
|
||||
ptrSPITType = mRemoteSpitTypes.getEntry(p_ReportSPITObject.getSPITTypeID());
|
||||
if (ptrSPITType == nullptr) {
|
||||
// No associated SPITType found
|
||||
return;
|
||||
}
|
||||
if (ptrSPITObject == nullptr) {
|
||||
auto spitObj = make_unique<SPITObject>(p_ReportSPITObject->getID());
|
||||
auto spitObj = make_unique<SPITObject>(p_ReportSPITObject.getID());
|
||||
ptrSPITObject = spitObj.get();
|
||||
mRemoteSpitObjects.addEntry(move(spitObj));
|
||||
boolNew = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!ptrSPITObject->setMessageOP(p_ReportSPITObject)) {
|
||||
if (!ptrSPITObject->setMessageOP(&p_ReportSPITObject)) {
|
||||
ESP_LOGE(TAG, "Change not allowed");
|
||||
// setMessageOP error - the SPITObject can't be changed, it may be fixed and crated by this client
|
||||
sendSPITObjectInternal(ptrSPITObject);
|
||||
@@ -1099,13 +1066,9 @@ void SPIT_Client::parseReportSPITObject(SPIT_Message::ReportSPITObject *p_Report
|
||||
}
|
||||
}
|
||||
}
|
||||
void SPIT_Client::parseRemoveSPITObject(SPIT_Message::RemoveSPITObject *p_RemoveSPITObject) {
|
||||
// printf("parse RemoveSPITObject %s\n", p_RemoveSPITObject->getID());
|
||||
if (!p_RemoveSPITObject) {
|
||||
return;
|
||||
}
|
||||
|
||||
SPITObject *ptrSPITObject = mRemoteSpitObjects.getEntry(p_RemoveSPITObject->getID());
|
||||
void SPIT_Client::parseRemoveSPITObject(SPIT_Message::RemoveSPITObject &p_RemoveSPITObject) {
|
||||
// printf("parse RemoveSPITObject %s\n", p_RemoveSPITObject.getID());
|
||||
SPITObject *ptrSPITObject = mRemoteSpitObjects.getEntry(p_RemoveSPITObject.getID());
|
||||
if (ptrSPITObject != nullptr) {
|
||||
SPITType *ptrSPITType = mRemoteSpitTypes.getEntry(ptrSPITObject->getSPITTypeID());
|
||||
if (ptrSPITType != nullptr) {
|
||||
@@ -1114,7 +1077,7 @@ void SPIT_Client::parseRemoveSPITObject(SPIT_Message::RemoveSPITObject *p_Remove
|
||||
mRemoteSpitObjects.removeEntry(*ptrSPITObject);
|
||||
} else {
|
||||
// call removeSPITObject, this will notify the server that the object is removed
|
||||
removeSPITObject(p_RemoveSPITObject->getID());
|
||||
removeSPITObject(p_RemoveSPITObject.getID());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1203,21 +1166,21 @@ int SPIT_Client::removeSPITObject(string p_SPITObjectID) {
|
||||
|
||||
//----- Play SPIT Objects ------
|
||||
|
||||
void SPIT_Client::parsePlaySPITStart(SPIT_Message::PlaySPITStart *p_PlaySPITStart) {
|
||||
ESP_LOGD(TAG, "parse PlaySPITStart ID: %s Name: %s Running: %d", p_PlaySPITStart->getPlayerID().c_str(), p_PlaySPITStart->getPlayerName().c_str(), (int)p_PlaySPITStart->getPlayerIsRunning());
|
||||
SPITPlayer &spitPlayer = SPITPlayer::getSPITPlayer(p_PlaySPITStart->getPlayerID());
|
||||
spitPlayer.setIsRunning(p_PlaySPITStart->getPlayerIsRunning());
|
||||
spitPlayer.setName(p_PlaySPITStart->getPlayerName());
|
||||
spitPlayer.setType(p_PlaySPITStart->getPlayerType());
|
||||
spitPlayer.setTime(p_PlaySPITStart->getTime());
|
||||
void SPIT_Client::parsePlaySPITStart(SPIT_Message::PlaySPITStart &p_PlaySPITStart) {
|
||||
ESP_LOGD(TAG, "parse PlaySPITStart ID: %s Name: %s Running: %d", p_PlaySPITStart.getPlayerID().c_str(), p_PlaySPITStart.getPlayerName().c_str(), (int)p_PlaySPITStart.getPlayerIsRunning());
|
||||
SPITPlayer &spitPlayer = SPITPlayer::getSPITPlayer(p_PlaySPITStart.getPlayerID());
|
||||
spitPlayer.setIsRunning(p_PlaySPITStart.getPlayerIsRunning());
|
||||
spitPlayer.setName(p_PlaySPITStart.getPlayerName());
|
||||
spitPlayer.setType(p_PlaySPITStart.getPlayerType());
|
||||
spitPlayer.setTime(p_PlaySPITStart.getTime());
|
||||
spitPlayer.startPlaySequence();
|
||||
|
||||
mCallbacks.onPlay(spitPlayer.getID(), spitPlayer.getName(), spitPlayer.getType(), spitPlayer.getIsRunning(), spitPlayer.getTime());
|
||||
}
|
||||
void SPIT_Client::parsePlaySPITObject(SPIT_Message::PlaySPITObject *p_PlaySPITObject) {
|
||||
void SPIT_Client::parsePlaySPITObject(SPIT_Message::PlaySPITObject &p_PlaySPITObject) {
|
||||
|
||||
SPITPlayer &ptrSPITPlayer = SPITPlayer::getSPITPlayer(p_PlaySPITObject->getPlayerID());
|
||||
SPITObject *ptrSPITObject = mSpitObjects.getEntry(p_PlaySPITObject->getSPITObjectID());
|
||||
SPITPlayer &ptrSPITPlayer = SPITPlayer::getSPITPlayer(p_PlaySPITObject.getPlayerID());
|
||||
SPITObject *ptrSPITObject = mSpitObjects.getEntry(p_PlaySPITObject.getSPITObjectID());
|
||||
|
||||
if (ptrSPITObject == nullptr) {
|
||||
return;
|
||||
@@ -1227,11 +1190,11 @@ void SPIT_Client::parsePlaySPITObject(SPIT_Message::PlaySPITObject *p_PlaySPITOb
|
||||
return;
|
||||
}
|
||||
ptrPlaySPITType->setPlayerIsRunning(ptrSPITPlayer.getIsRunning());
|
||||
ptrPlaySPITType->addValue(((double)p_PlaySPITObject->getValue() / 1000000), ((double)ptrSPITObject->getValueFactor() / 1000000));
|
||||
ptrPlaySPITType->addValue(((double)p_PlaySPITObject.getValue() / 1000000), ((double)ptrSPITObject->getValueFactor() / 1000000));
|
||||
}
|
||||
|
||||
void SPIT_Client::parsePlaySPITEnd(SPIT_Message::PlaySPITEnd *p_PlaySPITEnd) {
|
||||
SPITPlayer &ptrSPITPlayer = SPITPlayer::getSPITPlayer(p_PlaySPITEnd->getPlayerID());
|
||||
void SPIT_Client::parsePlaySPITEnd(SPIT_Message::PlaySPITEnd &p_PlaySPITEnd) {
|
||||
SPITPlayer &ptrSPITPlayer = SPITPlayer::getSPITPlayer(p_PlaySPITEnd.getPlayerID());
|
||||
// unordered_map<string, SPITPlayer::PlaySPITType*>* ptrPlayObjects;
|
||||
// bool boolStarted;
|
||||
// bool boolStopped;
|
||||
@@ -1280,12 +1243,12 @@ void SPIT_Client::parsePlaySPITEnd(SPIT_Message::PlaySPITEnd *p_PlaySPITEnd) {
|
||||
ptrSPITPlayer.endPlaySequence();
|
||||
}
|
||||
|
||||
void SPIT_Client::parseReportPlayStatus(SPIT_Message::ReportPlayStatus *p_ReportPlayStatus) {
|
||||
void SPIT_Client::parseReportPlayStatus(SPIT_Message::ReportPlayStatus &p_ReportPlayStatus) {
|
||||
SPITType *ptrSPITType = NULL;
|
||||
|
||||
SPITObject *ptrSPITObject = mRemoteSpitObjects.getEntry(p_ReportPlayStatus->getID());
|
||||
SPITObject *ptrSPITObject = mRemoteSpitObjects.getEntry(p_ReportPlayStatus.getID());
|
||||
if (ptrSPITObject == nullptr) {
|
||||
ptrSPITObject = mSpitObjects.getEntry(p_ReportPlayStatus->getID());
|
||||
ptrSPITObject = mSpitObjects.getEntry(p_ReportPlayStatus.getID());
|
||||
if (ptrSPITObject == nullptr) {
|
||||
return;
|
||||
}
|
||||
@@ -1299,7 +1262,7 @@ void SPIT_Client::parseReportPlayStatus(SPIT_Message::ReportPlayStatus *p_Report
|
||||
if (ptrSPITType == nullptr) {
|
||||
return;
|
||||
}
|
||||
mCallbacks.onPlayRemoteObjectStatus(*ptrSPITType, *ptrSPITObject, p_ReportPlayStatus->getFrameInsideObject(), p_ReportPlayStatus->getValue());
|
||||
mCallbacks.onPlayRemoteObjectStatus(*ptrSPITType, *ptrSPITObject, p_ReportPlayStatus.getFrameInsideObject(), p_ReportPlayStatus.getValue());
|
||||
}
|
||||
|
||||
//--------- Remote ----------
|
||||
@@ -1338,7 +1301,6 @@ void SPIT_Client::sendRemoteObject(string p_SPITObjectID, int p_Valueppm, char p
|
||||
|
||||
SPIT_Message::PlaySPITEnd playSPITEnd(m_ID);
|
||||
sendSPITMessage(playSPITEnd);
|
||||
|
||||
}
|
||||
|
||||
fos::Semaphore SPIT_Client::sStartSad;
|
||||
|
||||
Reference in New Issue
Block a user