diff --git a/components/spit/include/SPITPlayer.h b/components/spit/include/SPITPlayer.h index 3ba8463..1b74a00 100644 --- a/components/spit/include/SPITPlayer.h +++ b/components/spit/include/SPITPlayer.h @@ -73,13 +73,13 @@ class SPITPlayer { } unordered_map *getPlaySPITTypes(); - void setIsRunning(bool p_IsRunning); + void setIsRunning(bool p_IsRunning) { m_IsRunning = p_IsRunning; } + void setName(string p_Name) { m_Name = p_Name; } + void setType(char p_Type) { m_Type = p_Type; } + void setTime(long long p_Frames) { m_TimeFrames = p_Frames; } bool getIsRunning() { return m_IsRunning; } - void setName(string p_Name); string getName() { return m_Name; } - void setType(char p_Type); char getType() { return m_Type; } - void setTime(long long p_Frames); long long getTime() { return m_TimeFrames; } private: diff --git a/components/spit/src/SPITPlayer.cpp b/components/spit/src/SPITPlayer.cpp index 61a441a..4f7a513 100644 --- a/components/spit/src/SPITPlayer.cpp +++ b/components/spit/src/SPITPlayer.cpp @@ -61,19 +61,6 @@ SPITPlayer::~SPITPlayer() { } } -void SPITPlayer::setIsRunning(bool p_IsRunning) { - m_IsRunning = p_IsRunning; -} -void SPITPlayer::setName(string p_Name) { - m_Name = p_Name; -} -void SPITPlayer::setType(char p_Type) { - m_Type = p_Type; -} -void SPITPlayer::setTime(long long p_Frames) { - m_TimeFrames = p_Frames; -} - unordered_map *SPITPlayer::getPlaySPITTypes() { return &m_PlaySPITTypes; } diff --git a/components/spit/src/SPIT_Client.cpp b/components/spit/src/SPIT_Client.cpp index 6c0563e..9754ade 100644 --- a/components/spit/src/SPIT_Client.cpp +++ b/components/spit/src/SPIT_Client.cpp @@ -421,7 +421,7 @@ void SPIT_Client::addOvertakingSPIT_Message(SPIT_Message *p_SPIT_Message) { int intOvertakingMessageNumber; if (m_OvertakingSPIT_Messages.size() > s_MAX_OVERTAKING_SPIT_MESSAGES) { - printf("SPIT_Client receiveing: perhaps message lost !!!!!"); + ESP_LOGD(TAG, "SPIT_Client receiveing: perhaps message lost !!!!!"); } intMessageNumber = (int)(p_SPIT_Message->getHeader()->getMessageNumber() & 0xFF); @@ -730,7 +730,7 @@ void SPIT_Client::parseReportSPITProject(SPIT_Message::ReportSPITProject *p_Repo // Send RequestProjectTransfer SPIT_Message::RequestProjectTransfer sMRequestProjectTransfer; if (sendSPITMessage(sMRequestProjectTransfer) < 0) { - printf("SPIT_Client::parseReportSPITProject could not send RequestProjectTransfer\n"); + ESP_LOGD(TAG, "SPIT_Client::parseReportSPITProject could not send RequestProjectTransfer\n"); } // todo Don't send the ReportSPITProject here it should be sended after parseEndProjectTransfer @@ -740,7 +740,7 @@ void SPIT_Client::parseReportSPITProject(SPIT_Message::ReportSPITProject *p_Repo sMReportSPITProject.setProjectName(m_ProjName); sMReportSPITProject.setFramesPerSecond(0); if (sendSPITMessage(sMReportSPITProject) < 0) { - printf("SPIT_Client::parseReportSPITProject could not send Client's ReportSPITProject"); + ESP_LOGD(TAG, "SPIT_Client::parseReportSPITProject could not send Client's ReportSPITProject"); } } void SPIT_Client::parseCloseSPITProject(SPIT_Message::CloseSPITProject *p_CloseSPITProject) { @@ -927,7 +927,7 @@ void SPIT_Client::parseStartProjectTransfer(SPIT_Message::StartProjectTransfer * } void SPIT_Client::parseEndProjectTransfer(SPIT_Message::EndProjectTransfer *p_EndProjectTransfer) { SPITObject::clearUnconfirmedSPITObjects(); - mCallbacks.onProjectUpdate(ProjUpdate::EndTransfer, m_ServerProjectID) ; + mCallbacks.onProjectUpdate(ProjUpdate::EndTransfer, m_ServerProjectID); // Send SPIT_Message::ReportSPITProject after the m_SPITClientInterface is notfied of EndProjectTransfer SPIT_Message::ReportSPITProject ptrSMReportSPITProject; @@ -935,7 +935,7 @@ void SPIT_Client::parseEndProjectTransfer(SPIT_Message::EndProjectTransfer *p_En ptrSMReportSPITProject.setProjectName(m_ProjName); ptrSMReportSPITProject.setFramesPerSecond(0); if (sendSPITMessage(ptrSMReportSPITProject) < 0) { - printf("SPIT_Client::parseReportSPITProject could not send Client's ReportSPITProject"); + ESP_LOGD(TAG, "SPIT_Client::parseReportSPITProject could not send Client's ReportSPITProject"); } } @@ -1090,7 +1090,7 @@ int SPIT_Client::removeSPITType(string p_SPITTypeID) { return -1; SPIT_Message::RemoveSPITType sMRemoveSPITType; ptrSPITType->fillMessageOP(&sMRemoveSPITType); - mCallbacks.onSpitType(ObjectEvent::Deleted,*ptrSPITType); + mCallbacks.onSpitType(ObjectEvent::Deleted, *ptrSPITType); SPITType::removeSPITType(ptrSPITType); delete ptrSPITType; return sendSPITMessage(sMRemoveSPITType); @@ -1132,8 +1132,7 @@ SPITType *SPIT_Client::createSPITType(string p_ID, string p_GroupName, string p_ //----- SPIT Objects ------ void SPIT_Client::parseReportSPITObject(SPIT_Message::ReportSPITObject *p_ReportSPITObject) { - - // printf("parse ReportSPITObject %s\n", p_ReportSPITObject->getID()); + ESP_LOGD(TAG, "parse ReportSPITObject %s\n", p_ReportSPITObject->getID().c_str()); if (p_ReportSPITObject == NULL) return; SPITObject *ptrSPITObject; @@ -1160,6 +1159,7 @@ void SPIT_Client::parseReportSPITObject(SPIT_Message::ReportSPITObject *p_Report if (ptrSPITObject == NULL) { // 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()); return; } @@ -1170,6 +1170,7 @@ void SPIT_Client::parseReportSPITObject(SPIT_Message::ReportSPITObject *p_Report if (mCallbacks.onCheckSpitObjectVeto(p_ReportSPITObject) == false) { // SpitObject exists and User APp denied the SPITObject -> remove the SPITObject without sending a message SPITObject::removeSPITObject(ptrSPITObject); + ESP_LOGD(TAG, "TypeVeto %s / %s", p_ReportSPITObject->getID().c_str(), p_ReportSPITObject->getName().c_str()); delete ptrSPITObject; return; } @@ -1336,89 +1337,72 @@ int SPIT_Client::removeSPITObject(string p_SPITObjectID) { //----- Play SPIT Objects ------ void SPIT_Client::parsePlaySPITStart(SPIT_Message::PlaySPITStart *p_PlaySPITStart) { - // printf("parse PlaySPITStart ID: %s Name: %s Running: %d\n", p_PlaySPITStart->getPlayerID(), p_PlaySPITStart->getPlayerName(), p_PlaySPITStart->getPlayerIsRunning()); - SPITPlayer *ptrSPITPlayer; - { - ptrSPITPlayer = SPITPlayer::getSPITPlayer(p_PlaySPITStart->getPlayerID()); - if (ptrSPITPlayer == NULL) - return; - ptrSPITPlayer->setIsRunning(p_PlaySPITStart->getPlayerIsRunning()); - ptrSPITPlayer->setName(p_PlaySPITStart->getPlayerName()); - ptrSPITPlayer->setType(p_PlaySPITStart->getPlayerType()); - ptrSPITPlayer->setTime(p_PlaySPITStart->getTime()); - ptrSPITPlayer->startPlaySequence(); - - mCallbacks.onPlay(ptrSPITPlayer->getID(), ptrSPITPlayer->getName(), ptrSPITPlayer->getType(), ptrSPITPlayer->getIsRunning(), ptrSPITPlayer->getTime()); - } -} -void SPIT_Client::parsePlaySPITObject(SPIT_Message::PlaySPITObject *p_PlaySPITObject) { - // printf("parse RPlaySPITObject Object:%s\n", p_PlaySPITObject->getSPITObjectID()); - SPITPlayer *ptrSPITPlayer; - SPITPlayer::PlaySPITType *ptrPlaySPITType; - SPITObject *ptrSPITObject; - { - ptrSPITPlayer = SPITPlayer::getSPITPlayer(p_PlaySPITObject->getPlayerID()); - if (ptrSPITPlayer == NULL) - return; - - // Fetch infoemations from SPITObject - ptrSPITObject = SPITObject::getSPITObject(p_PlaySPITObject->getSPITObjectID()); - if (ptrSPITObject == NULL) { - return; - } - ptrPlaySPITType = ptrSPITPlayer->addSPITType_Playing(ptrSPITObject->getSPITTypeID()); - if (ptrPlaySPITType == NULL) { - - return; - } - ptrPlaySPITType->setPlayerIsRunning(ptrSPITPlayer->getIsRunning()); - ptrPlaySPITType->addValue(((double)p_PlaySPITObject->getValue() / 1000000), ((double)ptrSPITObject->getValueFactor() / 1000000)); - } -} -void SPIT_Client::parsePlaySPITEnd(SPIT_Message::PlaySPITEnd *p_PlaySPITEnd) { - // printf("parse PlaySPITEnd \n"); - SPITPlayer *ptrSPITPlayer; - SPITType *ptrSPITType = NULL; - - // { - // ptrSPITPlayer = SPITPlayer::getSPITPlayer(p_PlaySPITEnd->getPlayerID()); - // if (ptrSPITPlayer == NULL) return; - - // unordered_map* ptrPlayObjects; - // SPITPlayer::PlayObject* ptrPlayObject; - // bool boolStarted; - // bool boolStopped; - - // ptrPlayObjects = ptrSPITPlayer->getPlayObjects(); - // for (auto i = ptrPlayObjects->begin(); i != ptrPlayObjects->end(); i++) { - // ptrPlayObject = i->second; - // boolStarted = false; - // boolStopped = false; - // if (ptrPlayObject->getIsNew()) { - // boolStarted = true; - // } - // if (ptrPlayObject->getIsPlayed() == false) { - // boolStopped = true; - // } - // { - // ptrSPITObject = SPITObject::getSPITObject(ptrPlayObject->getSPITObjectID()); - // if (ptrSPITObject == NULL) { - // return; - // } - // ptrSPITType = SPITType::getSPITType(ptrSPITObject->getSPITTypeID()); - // if (ptrSPITType == NULL) { - // return; - // } - - // mCallbacks.onPlaySpitType(ptrPlayObject->getPlayerID(), boolStarted, boolStopped, *ptrSPITType, *ptrSPITObject, *ptrPlayObject); - // } - // } - // ptrSPITPlayer->endPlaySequence(); - // } - - ptrSPITPlayer = SPITPlayer::getSPITPlayer(p_PlaySPITEnd->getPlayerID()); + 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 *ptrSPITPlayer = SPITPlayer::getSPITPlayer(p_PlaySPITStart->getPlayerID()); if (ptrSPITPlayer == NULL) return; + ptrSPITPlayer->setIsRunning(p_PlaySPITStart->getPlayerIsRunning()); + ptrSPITPlayer->setName(p_PlaySPITStart->getPlayerName()); + ptrSPITPlayer->setType(p_PlaySPITStart->getPlayerType()); + ptrSPITPlayer->setTime(p_PlaySPITStart->getTime()); + ptrSPITPlayer->startPlaySequence(); + + mCallbacks.onPlay(ptrSPITPlayer->getID(), ptrSPITPlayer->getName(), ptrSPITPlayer->getType(), ptrSPITPlayer->getIsRunning(), ptrSPITPlayer->getTime()); +} +void SPIT_Client::parsePlaySPITObject(SPIT_Message::PlaySPITObject *p_PlaySPITObject) { + SPITPlayer *ptrSPITPlayer = SPITPlayer::getSPITPlayer(p_PlaySPITObject->getPlayerID()); + if (ptrSPITPlayer == NULL) + return; + + SPITObject *ptrSPITObject = SPITObject::getSPITObject(p_PlaySPITObject->getSPITObjectID()); + if (ptrSPITObject == NULL) { + return; + } + SPITPlayer::PlaySPITType *ptrPlaySPITType = ptrSPITPlayer->addSPITType_Playing(ptrSPITObject->getSPITTypeID()); + if (ptrPlaySPITType == NULL) { + return; + } + ptrPlaySPITType->setPlayerIsRunning(ptrSPITPlayer->getIsRunning()); + 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()); + if (ptrSPITPlayer == NULL) + return; + + // unordered_map* ptrPlayObjects; + // bool boolStarted; + // bool boolStopped; + + // SPITPlayer::PlaySPITType* ptrPlayObject = ptrSPITPlayer->getPlayObjects(); + // for (auto i = ptrPlayObjects->begin(); i != ptrPlayObjects->end(); i++) { + // ptrPlayObject = i->second; + // boolStarted = false; + // boolStopped = false; + // if (ptrPlayObject->getIsNew()) { + // boolStarted = true; + // } + // if (ptrPlayObject->getIsPlayed() == false) { + // boolStopped = true; + // } + // { + // ptrSPITObject = SPITObject::getSPITObject(ptrPlayObject->getSPITObjectID()); + // if (ptrSPITObject == NULL) { + // return; + // } + // SPITType *ptrSPITType = SPITType::getSPITType(ptrSPITObject->getSPITTypeID()); + // if (ptrSPITType == NULL) { + // return; + // } + + // mCallbacks.onPlaySpitType(ptrPlayObject->getPlayerID(), boolStarted, boolStopped, *ptrSPITType, *ptrSPITObject, *ptrPlayObject); + // } + // } + // ptrSPITPlayer->endPlaySequence(); + + // SPITPlayer *ptrSPITPlayer = SPITPlayer::getSPITPlayer(p_PlaySPITEnd->getPlayerID()); + // if (ptrSPITPlayer == NULL) + // return; unordered_map *ptrPlaySPITTypes = ptrSPITPlayer->getPlaySPITTypes(); for (auto i = ptrPlaySPITTypes->begin(); i != ptrPlaySPITTypes->end(); i++) { @@ -1432,7 +1416,7 @@ void SPIT_Client::parsePlaySPITEnd(SPIT_Message::PlaySPITEnd *p_PlaySPITEnd) { boolStopped = true; } { - ptrSPITType = SPITType::getSPITType(ptrPlaySPITType->getSPITTypeID()); + SPITType *ptrSPITType = SPITType::getSPITType(ptrPlaySPITType->getSPITTypeID()); if (ptrSPITType == NULL) { // set isplayed to false, the ptrPlayObject will be removed by ptrSPITPlayer->endPlaySequence() ptrPlaySPITType->setIsPlayed(false); @@ -1445,13 +1429,11 @@ void SPIT_Client::parsePlaySPITEnd(SPIT_Message::PlaySPITEnd *p_PlaySPITEnd) { } void SPIT_Client::parseReportPlayStatus(SPIT_Message::ReportPlayStatus *p_ReportPlayStatus) { - // only REMOTE server -> client - // printf(" parseReportPlayStatus "); + ESP_LOGD(TAG, "parseReportPlayStatus"); SPITType *ptrSPITType = NULL; - SPITObject *ptrSPITObject = NULL; { - ptrSPITObject = SPITObject::getSPITObjectRemote(p_ReportPlayStatus->getID()); + SPITObject *ptrSPITObject = SPITObject::getSPITObjectRemote(p_ReportPlayStatus->getID()); if (ptrSPITObject == NULL) { ptrSPITObject = SPITObject::getSPITObject(p_ReportPlayStatus->getID()); if (ptrSPITObject == NULL) { diff --git a/doc/LSS-Icon.afdesign b/doc/LSS-Icon.afdesign index 90a4b2d..732dad7 100644 Binary files a/doc/LSS-Icon.afdesign and b/doc/LSS-Icon.afdesign differ diff --git a/doc/LSS-Icon.jpg b/doc/LSS-Icon.jpg index fdc11a8..7c24feb 100644 Binary files a/doc/LSS-Icon.jpg and b/doc/LSS-Icon.jpg differ diff --git a/doc/LiveShowProject/CatasWatchProject.lsc b/doc/LiveShowProject/CatasWatchProject.lsc index c7d849e..f40b98d 100644 Binary files a/doc/LiveShowProject/CatasWatchProject.lsc and b/doc/LiveShowProject/CatasWatchProject.lsc differ diff --git a/doc/LiveShowProject/CatasWatchProject.spi b/doc/LiveShowProject/CatasWatchProject.spi index 6c2bc7f..88c385a 100644 Binary files a/doc/LiveShowProject/CatasWatchProject.spi and b/doc/LiveShowProject/CatasWatchProject.spi differ diff --git a/main/watchMain.cpp b/main/watchMain.cpp index 87f0830..55fc25e 100644 --- a/main/watchMain.cpp +++ b/main/watchMain.cpp @@ -6,15 +6,18 @@ * @copyright Copyright (c) 2024 */ -// Conig-Key: -// -// -// +/* Watchface + 6/ + 5 / 1 + 4 2 + 3 +*/ struct { const char *syslogDest = "syslogDst"; // example: "172.16.16.10" - const char *mqttBroker = "mqttBroker"; // example: "172.16.17.62" + const char *mqttBroker = "mqttBroker"; // example: "172.16.16.10" const char *mqttPrefix = "mqttPrefix"; // example: "SomeTag" + const char *spitServer = "spitServer"; // example: "172.16.16.10" } ConfigKeys; // MQTT Topics @@ -476,7 +479,7 @@ namespace Effect { }; const Macro macDemoFlicker = { - {64, 1, &InitSlopeWave, StateMachine::UpdateWave, 0xFF}, + {16, 1, &InitSlopeWave, StateMachine::UpdateWave, 0xFF}, {32, 1, StateMachine::UpdateFlicker, 0xFF}, }; } @@ -511,15 +514,24 @@ void LightingTask() { processors[5].setEffect(Effect::macDark, &colorSource, 0); const std::array PictoEffects{ + Effect::macDemoPulse, // 1 Effect::macDemoPulse, Effect::macDemoPulse, Effect::macDemoPulse, - Effect::macDemoPulse, - Effect::macDemoPulse, - Effect::macStartFlicker}; + Effect::macStartFlicker, + Effect::macDemoPulse}; // 6 uint8_t lastPicto = 0; + std::array startPoints{ + &(values[0][4]), // 1 + &(values[1][12]), + &(values[1][8]), + &(values[1][4]), + &(values[0][12]), + &(values[0][8]), // 6 + }; + while (true) { auto onPos = pictoIllumQue.dequeue(0); if (onPos) { @@ -543,14 +555,6 @@ void LightingTask() { } } - std::array startPoints{ - &(values[0][4]), - &(values[0][8]), - &(values[0][12]), - &(values[1][4]), - &(values[1][8]), - &(values[1][12]), - }; for (size_t i = 0; i < processors.size(); i++) { auto col = processors[i].tick(); auto sp = startPoints[i]; @@ -572,7 +576,7 @@ void MovementTask() { StepperDriverDrv8833::Pins stepperPins{ LEDC_TIMER_0, {LEDC_CHANNEL_0, LEDC_CHANNEL_1, LEDC_CHANNEL_2, LEDC_CHANNEL_3}, - {GPIO_NUM_23, GPIO_NUM_22, GPIO_NUM_21, GPIO_NUM_20}, + {GPIO_NUM_21, GPIO_NUM_20, GPIO_NUM_23, GPIO_NUM_22}, }; StepperDriverDrv8833 stepperDriver(stepperPins, MicroSteps, 0.25F); stepperDriver.setPos(0); @@ -591,7 +595,7 @@ void MovementTask() { ESP_LOGI("Stepper", "Find Home"); stepper.findRef(); // Illum 1 - pictoIllumQue.enqueue(std::make_unique(1)); + pictoIllumQue.enqueue(std::make_unique(6)); ESP_LOGI(TAG, "Fist Position is %f.2", stepper.getScaledPos() * 6); fos::Task::delayMs(1000); @@ -603,7 +607,6 @@ void MovementTask() { auto cmd = commandQueue.dequeue(); if (cmd->type == MoveType::StepTo) { if (stepper.isIdle()) { - pictoIllumQue.enqueue(std::make_unique(0)); int newPos = cmd->pos; if ((newPos >= 1) && (newPos <= 6)) { auto idx = newPos - 1; @@ -727,33 +730,47 @@ void onProjectUpdate(SPIT_Client::ProjUpdate state, string projectId) { * @return false = the SPITType is denied, true = the SPITType is accepted */ bool onCheckSpitTypeVeto(SPIT_Message::ReportSPITType *p_ReportSPITType) { + return true; // Bypass veto + if (p_ReportSPITType == NULL) return true; SPITType *ptrSPITType; ptrSPITType = SPITType::getSPITType(p_ReportSPITType->getID()); // Don't allow foreign SPITTypes - if (ptrSPITType == NULL) + if (ptrSPITType == NULL) { + // ESP_LOGW(TAG, "ObjectVeto NoSpitType"); return false; - if (ptrSPITType->getCreatedByClient() == false) + } + if (ptrSPITType->getCreatedByClient() == false){ + // ESP_LOGW(TAG, "getCreatedByClient"); return false; + } return true; } bool onCheckSpitObjectVeto(SPIT_Message::ReportSPITObject *p_ReportSPITObject) { + return true; // Bypass veto + if (p_ReportSPITObject == NULL) return true; SPITType *ptrSPITType = SPITType::getSPITType(p_ReportSPITObject->getSPITTypeID()); - if (ptrSPITType == NULL) + if (ptrSPITType == NULL) { + // ESP_LOGW(TAG, "ObjectVeto NoSpitObj"); return false; + } // Don't allow SPITObjects which refers to a SPITType which is not created by this client - other SPITTypes cannot be handled here - if (ptrSPITType->getCreatedByClient() == false) + if (ptrSPITType->getCreatedByClient() == false) { + // ESP_LOGW(TAG, "getCreatedByClient"); return false; + } SPITObject *ptrSPITObject = SPITObject::getSPITObject(p_ReportSPITObject->getID()); // Don't allow foreign SPITTypes - if (ptrSPITObject == NULL) + if (ptrSPITObject == NULL) { + // ESP_LOGE(TAG, "Unknown ID"); return false; + } return true; } @@ -765,10 +782,6 @@ void onSpitType(SPIT_Client::ObjectEvent event, const SPITType &p_SPITType) { // Whenever you provide an action for this SPITType take this over in your code. // call _SpitClient.setActionSPITType(p_SPITType.getID(), true); ESP_LOGI(TAG, "NEW SPIT-Type ID: %s GroupName: %s Name: %s confirmed: %d", p_SPITType.getID().data(), p_SPITType.getGroupName().data(), p_SPITType.getName().data(), p_SPITType.getConfirmed()); - auto typeName = p_SPITType.getName(); - if (ExpectedObjects.contains(typeName)) { - ExpectedObjects[typeName] = p_SPITType.getID(); - } } else if (event == SPIT_Client::ObjectEvent::Changed) { ESP_LOGI(TAG, "SPIT-Type CHANGED ID: %s GroupName: %s Name: %s confirmed: %d", p_SPITType.getID().data(), p_SPITType.getGroupName().data(), p_SPITType.getName().data(), p_SPITType.getConfirmed()); } else if (event == SPIT_Client::ObjectEvent::Deleted) { @@ -784,6 +797,10 @@ void onSpitType(SPIT_Client::ObjectEvent event, const SPITType &p_SPITType) { void onSpitTypeRemote(SPIT_Client::ObjectEvent event, const SPITType &p_SPITType) { if (event == SPIT_Client::ObjectEvent::Created) { ESP_LOGI(TAG, "NEW SPIT-REMOTE-Type ID: %s GroupName: %s Name: %s confirmed: %d", p_SPITType.getID().data(), p_SPITType.getGroupName().data(), p_SPITType.getName().data(), p_SPITType.getConfirmed()); + auto typeName = p_SPITType.getName(); + if (ExpectedObjects.contains(typeName)) { + ExpectedObjects[typeName] = p_SPITType.getID(); + } } else if (event == SPIT_Client::ObjectEvent::Changed) { // we had to inform all Remote SPITObjects using the p_SPITType // perhaps the SPITObject uses information from the SPITType @@ -964,8 +981,6 @@ void SpitClientApp() { while (true) { fos::Task::delayMs(10000); - ESP_LOGI(TAG, "Test LiveShow"); - auto res = responseQueue.dequeue(); if (res->type == ResponseType::StartMoving) { spitClient.sendRemoteObject(ExpectedObjects[expected.changingPos]);