-
athatheocsd authoredathatheocsd authored
EventReportService.cpp 2.46 KiB
#include <Services/EventReportService.hpp>
#include "Services/EventReportService.hpp"
#include "Message.hpp"
/**
* @todo: Add message type in TCs
* @todo: this code is error prone, depending on parameters given, add fail safes (probably?)
*/
void EventReportService::informativeEventReport(Event eventID, const uint8_t *data,
uint8_t length) {
// TM[5,1]
Message report = createTM(1);
report.appendEnum16(eventID);
report.appendString(length, data);
storeMessage(report);
}
void
EventReportService::lowSeverityAnomalyReport(Event eventID, const uint8_t *data,
uint8_t length) {
// TM[5,2]
Message report = createTM(2);
report.appendEnum16(eventID);
report.appendString(length, data);
storeMessage(report);
}
void EventReportService::mediumSeverityAnomalyReport(Event eventID,
const uint8_t *data, uint8_t length) {
// TM[5,3]
Message report = createTM(3);
report.appendEnum16(eventID);
report.appendString(length, data);
storeMessage(report);
}
void
EventReportService::highSeverityAnomalyReport(Event eventID, const uint8_t *data,
uint8_t length) {
// TM[5,4]
Message report = createTM(4);
report.appendEnum16(eventID);
report.appendString(length, data);
storeMessage(report);
}
void EventReportService::enableReportGeneration(uint16_t length, Event *eventID) {
// TC[5,5]
/**
* @todo: Report an error if length>numberOfEvents
*/
if (length <= numberOfEvents) {
for (uint16_t i = 0; i < length; i++) {
stateOfEvents[static_cast<uint16_t> (eventID[i])] = 1;
}
}
}
void EventReportService::disableReportGeneration(uint16_t length, Event *eventID) {
// TC[5,6]
/**
* @todo: Report an error if length>numberOfEvents
*/
if (length <= numberOfEvents) {
for (uint16_t i = 0; i < length; i++) {
stateOfEvents[static_cast<uint16_t> (eventID[i])] = 0;
}
}
}
void EventReportService::requestListOfDisabledEvents() {
// TC[5,7]
// I think this is all that is needed here.
listOfDisabledEventsReport();
}
void EventReportService::listOfDisabledEventsReport() {
// TM[5,8]
Message report = createTM(8);
uint16_t numberOfDisabledEvents = stateOfEvents.size() - stateOfEvents.count();
report.appendByte(numberOfDisabledEvents);
for (uint16_t i = 0; i < stateOfEvents.size(); i++) {
if (stateOfEvents[i] == 0) {
report.appendEnum16(i);
}
}
storeMessage(report);
}