diff --git a/src/Services/EventActionService.cpp b/src/Services/EventActionService.cpp index 2eb47acdcb08b4e9e6a5e2afe5bb0641d545ab96..487c2cd4e226ab9dee2b700fccfada6bac59c410 100644 --- a/src/Services/EventActionService.cpp +++ b/src/Services/EventActionService.cpp @@ -50,10 +50,10 @@ void EventActionService::deleteEventActionDefinitions(Message& message) { auto range = eventActionDefinitionMap.equal_range(eventDefinitionID); for (auto& element = range.first; element != range.second; ++element) { if (element->second.eventActionDefinitionID == eventActionDefinitionID){ + eventActionDefinitionIDexists = true; if (element->second.enabled == true){ ErrorHandler::reportError(message, ErrorHandler::EventActionDeleteEnabledDefinitionError); } else { - eventActionDefinitionIDexists = true; eventActionDefinitionMap.erase(element); } } @@ -80,9 +80,9 @@ void EventActionService::enableEventActionDefinitions(Message& message) { message.assertTC(19, 4); message.resetRead(); uint16_t numberOfEventActionDefinitions = message.readUint16(); - bool eventActionDefinitionIDexists = false; if (numberOfEventActionDefinitions != 0) { for (uint16_t i = 0; i < numberOfEventActionDefinitions; i++) { + bool eventActionDefinitionIDexists = false; message.skipBytes(2); uint16_t eventDefinitionID = message.readEnum16(); uint16_t eventActionDefinitionID = message.readEnum16(); @@ -114,9 +114,9 @@ void EventActionService::disableEventActionDefinitions(Message& message) { message.resetRead(); uint16_t numberOfEventActionDefinitions = message.readUint16(); - bool eventActionDefinitionIDexists = false; if (numberOfEventActionDefinitions != 0) { for (uint16_t i = 0; i < numberOfEventActionDefinitions; i++) { + bool eventActionDefinitionIDexists = false; message.skipBytes(2); uint16_t eventDefinitionID = message.readEnum16(); uint16_t eventActionDefinitionID = message.readEnum16(); diff --git a/src/main.cpp b/src/main.cpp index 570e4498887388a36aa3c970af1ff290d2f8a903..b15589d76511df1f165251d4d545ee70accdfdda 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -234,73 +234,96 @@ int main() { // ST[19] test EventActionService & eventActionService = Services.eventAction; + Message eventActionDefinition(19, 1, Message::TC, 1); eventActionDefinition.appendEnum16(0); eventActionDefinition.appendEnum16(2); + eventActionDefinition.appendEnum16(1); String<64> TCdata = "0123456789123456789123456789123456789123456789123456789123456789"; eventActionDefinition.appendString(TCdata); eventActionService.addEventActionDefinitions(eventActionDefinition); + Message eventActionDefinition1(19, 1, Message::TC, 1); eventActionDefinition1.appendEnum16(0); - eventActionDefinition1.appendEnum16(3); + eventActionDefinition1.appendEnum16(2); + eventActionDefinition1.appendEnum16(1); TCdata = "hi1"; eventActionDefinition1.appendString(TCdata); std::cout << "After this message there should be a failed start of execution error \n"; eventActionService.addEventActionDefinitions(eventActionDefinition1); + Message eventActionDefinition2(19, 1, Message::TC, 1); eventActionDefinition2.appendEnum16(0); eventActionDefinition2.appendEnum16(4); + eventActionDefinition2.appendEnum16(2); TCdata = "hi2"; eventActionDefinition2.appendString(TCdata); eventActionService.addEventActionDefinitions(eventActionDefinition2); + Message eventActionDefinition7(19, 1, Message::TC, 1); eventActionDefinition7.appendEnum16(0); eventActionDefinition7.appendEnum16(4); + eventActionDefinition7.appendEnum16(4); TCdata = "hi2"; eventActionDefinition7.appendString(TCdata); eventActionService.addEventActionDefinitions(eventActionDefinition7); - Message eventActionDefinition3(19, 5, Message::TC, 1); - eventActionDefinition3.appendUint16(3); - eventActionDefinition3.appendUint16(0); - eventActionDefinition3.appendUint16(2); - eventActionDefinition3.appendUint16(0); - eventActionDefinition3.appendUint16(3); - eventActionDefinition3.appendUint16(0); - eventActionDefinition3.appendUint16(4); - eventActionService.disableEventActionDefinitions(eventActionDefinition3); - std::cout << "Status should be 000:" << eventActionService - .eventActionDefinitionMap[2].enabled << eventActionService - .eventActionDefinitionMap[3].enabled << - eventActionService.eventActionDefinitionMap[4].enabled; + std::cout << "Status should be 000:"; + for (auto& element : eventActionService.eventActionDefinitionMap){ + std::cout << element.second.enabled; + } Message eventActionDefinition5(19, 4, Message::TC, 1); eventActionDefinition5.appendUint16(3); eventActionDefinition5.appendUint16(0); eventActionDefinition5.appendUint16(2); + eventActionDefinition5.appendUint16(1); eventActionDefinition5.appendUint16(0); - eventActionDefinition5.appendUint16(3); + eventActionDefinition5.appendUint16(4); + eventActionDefinition5.appendUint16(2); eventActionDefinition5.appendUint16(0); eventActionDefinition5.appendUint16(4); + eventActionDefinition5.appendUint16(4); + + eventActionService.enableEventActionDefinitions(eventActionDefinition5); + std::cout << "\nStatus should be 111:"; + for (auto& element : eventActionService.eventActionDefinitionMap){ + std::cout << element.second.enabled; + } + + Message eventActionDefinition3(19, 5, Message::TC, 1); + eventActionDefinition3.appendUint16(3); + eventActionDefinition3.appendUint16(0); + eventActionDefinition3.appendUint16(2); + eventActionDefinition3.appendUint16(1); + eventActionDefinition3.appendUint16(0); + eventActionDefinition3.appendUint16(4); + eventActionDefinition3.appendUint16(2); + eventActionDefinition3.appendUint16(0); + eventActionDefinition3.appendUint16(4); + eventActionDefinition3.appendUint16(4); + eventActionService.disableEventActionDefinitions(eventActionDefinition3); + std::cout << "Status should be 000:"; + for (auto& element : eventActionService.eventActionDefinitionMap){ + std::cout << element.second.enabled; + } eventActionService.enableEventActionDefinitions(eventActionDefinition5); - std::cout << "\nStatus should be 111:" << eventActionService - .eventActionDefinitionMap[2].enabled << eventActionService - .eventActionDefinitionMap[3].enabled << - eventActionService.eventActionDefinitionMap[4].enabled << "\n"; Message eventActionDefinition4(19, 2, Message::TC, 1); eventActionDefinition4.appendUint16(1); eventActionDefinition4.appendUint16(0); eventActionDefinition4.appendUint16(2); + eventActionDefinition4.appendUint16(1); std::cout << "After this message there should be a failed start of execution error \n"; eventActionService.deleteEventActionDefinitions(eventActionDefinition4); Message eventActionDefinition6(19, 5, Message::TC, 1); - eventActionDefinition4.appendUint16(1); - eventActionDefinition4.appendUint16(0); - eventActionDefinition4.appendUint16(2); + eventActionDefinition6.appendUint16(1); + eventActionDefinition6.appendUint16(0); + eventActionDefinition6.appendUint16(2); + eventActionDefinition6.appendUint16(1); eventActionService.disableEventActionDefinitions(eventActionDefinition6); std::cout << "After this message there should NOT be a failed start of execution error \n"; eventActionService.deleteEventActionDefinitions(eventActionDefinition4);