diff --git a/src/MessageParser.cpp b/src/MessageParser.cpp index 91ac9ddca19feb1e2a27b349222d2602fffe2ac2..7466092a9419d6d1b6b750d73bd5ee01e57a9797 100644 --- a/src/MessageParser.cpp +++ b/src/MessageParser.cpp @@ -80,6 +80,6 @@ Message MessageParser::parseRequestTC(String<64> data) { Message message; uint8_t *dataInt = reinterpret_cast<uint8_t *>(data.data()); message.packetType = Message::TC; - parseTC(dataInt, 256, message); // Maybe instead of 256 shoule there be a variable? + parseTC(dataInt, 64, message); // Maybe instead of 256 should there be a variable? return message; } diff --git a/src/Services/EventActionService.cpp b/src/Services/EventActionService.cpp index 352261c32d123357b0433c303dcd6769a0324148..fb4e0eb9799f4f76a885b2343e666e6a4403661f 100644 --- a/src/Services/EventActionService.cpp +++ b/src/Services/EventActionService.cpp @@ -30,6 +30,7 @@ void EventActionService::addEventActionDefinitions(Message message) { // message.dataSize - 5 message.readString(data, message.dataSize); eventActionDefinitionArray[index].request = String<64>(data); + stateOfEventAction[index] = 1; } } } @@ -39,7 +40,7 @@ void EventActionService::deleteEventActionDefinitions(Message message) { if (message.messageType == 2 && message.packetType == Message::TC && message.serviceType == 19) { uint16_t N = message.readUint16(); - uint8_t index = 0; + uint16_t index = 0; for (uint16_t i = 0; i < N; i++) { uint16_t applicationID = message.readEnum16(); uint16_t eventDefinitionID = message.readEnum16(); @@ -50,6 +51,7 @@ void EventActionService::deleteEventActionDefinitions(Message message) { eventActionDefinitionArray[index].eventDefinitionID = 65535; eventActionDefinitionArray[index].request = ""; eventActionDefinitionArray[index].applicationId = 0; + stateOfEventAction[index] = 0; } index++; } @@ -79,7 +81,7 @@ void EventActionService::enableEventActionDefinitions(Message message) { if (message.messageType == 4 && message.packetType == Message::TC && message.serviceType == 19) { uint16_t N = message.readUint16(); - uint8_t index = 0; + uint16_t index = 0; for (uint16_t i = 0; i < N; i++) { uint16_t applicationID = message.readEnum16(); uint16_t eventDefinitionID = message.readEnum16(); @@ -100,11 +102,11 @@ void EventActionService::disableEventActionDefinitions(Message message) { if (message.messageType == 5 && message.packetType == Message::TC && message.serviceType == 19) { uint16_t N = message.readUint16(); - uint8_t index = 0; + uint16_t index = 0; for (uint16_t i = 0; i < N; i++) { uint16_t applicationID = message.readEnum16(); uint16_t eventDefinitionID = message.readEnum16(); - while (index < 255) { + while (index < 256) { if (eventActionDefinitionArray[index].applicationId == applicationID && eventActionDefinitionArray[index].eventDefinitionID == eventDefinitionID) { stateOfEventAction[index] = 0; diff --git a/src/main.cpp b/src/main.cpp index b5e55371ee00162dc138f66858daa086bc1bbdab..1adbf2abcea65d5a2be001cfd456a2f2e440cd57 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -183,7 +183,7 @@ int main() { // ST[05] (5,5 to 5,8) test [works] EventReportService::Event eventIDs[] = {EventReportService::HighSeverityUnknownEvent, - EventReportService::MediumSeverityUnknownEvent}; + EventReportService::MediumSeverityUnknownEvent}; EventReportService::Event eventIDs2[] = {EventReportService::HighSeverityUnknownEvent}; Message eventMessage(5, 6, Message::TC, 1); eventMessage.appendUint16(2); @@ -200,17 +200,65 @@ int main() { eventReportService.enableReportGeneration(eventMessage2); eventReportService.requestListOfDisabledEvents(eventMessage3); - //ST[19] test + // ST[19] test EventActionService eventActionService; - char checkstring[256]; Message eventActionDefinition(19, 1, Message::TC, 1); eventActionDefinition.appendEnum16(0); eventActionDefinition.appendEnum16(2); String<64> TCdata = "hi"; - eventActionDefinition.appendString(TCdata); eventActionService.addEventActionDefinitions(eventActionDefinition); + Message eventActionDefinition1(19, 1, Message::TC, 1); + eventActionDefinition1.appendEnum16(0); + eventActionDefinition1.appendEnum16(2); + TCdata = "hi1"; + eventActionDefinition1.appendString(TCdata); + eventActionService.addEventActionDefinitions(eventActionDefinition1); + Message eventActionDefinition2(19, 1, Message::TC, 1); + eventActionDefinition2.appendEnum16(0); + eventActionDefinition2.appendEnum16(3); + TCdata = "hi2"; + eventActionDefinition2.appendString(TCdata); + eventActionService.addEventActionDefinitions(eventActionDefinition2); + Message eventActionDefinition3(19, 5, Message::TC, 1); + eventActionDefinition3.appendUint16(2); + eventActionDefinition3.appendUint16(0); + eventActionDefinition3.appendUint16(2); + eventActionDefinition3.appendUint16(0); + eventActionDefinition3.appendUint16(3); + + eventActionService.disableEventActionDefinitions(eventActionDefinition3); + std::cout << "Status of position 0,1,2 should be 000:" << eventActionService + .stateOfEventAction[0] << eventActionService.stateOfEventAction[1] << eventActionService + .stateOfEventAction[2]; + + Message eventActionDefinition5(19, 4, Message::TC, 1); + eventActionDefinition5.appendUint16(2); + eventActionDefinition5.appendUint16(0); + eventActionDefinition5.appendUint16(2); + eventActionDefinition5.appendUint16(0); + eventActionDefinition5.appendUint16(3); + eventActionService.enableEventActionDefinitions(eventActionDefinition5); + std::cout << "\nStatus of position 0,1,2 should be 111:" << eventActionService + .stateOfEventAction[0] << eventActionService.stateOfEventAction[1] << eventActionService + .stateOfEventAction[2]; + + Message eventActionDefinition4(19, 2, Message::TC, 1); + eventActionDefinition4.appendUint16(1); + eventActionDefinition4.appendUint16(0); + eventActionDefinition4.appendUint16(2); + + eventActionService.deleteEventActionDefinitions(eventActionDefinition4); + std::cout << "\nPositions 0,1 empty should be 11:" << (uint16_t) eventActionService + .eventActionDefinitionArray[0].empty + << (uint16_t) eventActionService.eventActionDefinitionArray[1].empty; + + Message eventActionDefinition6(19, 3, Message::TC, 1); + eventActionService.deleteAllEventActionDefinitions(eventActionDefinition6); + std::cout << "\nPositions 0,1 empty should be 1:" << (uint16_t) eventActionService + .eventActionDefinitionArray[0].empty; + return 0; }