From af77a59fe7c282625a9a3fea7471d8dcebf27a20 Mon Sep 17 00:00:00 2001 From: Dimitrios Stoupis <dimitris.apple@gmail.com> Date: Fri, 15 Mar 2019 22:34:05 +0000 Subject: [PATCH] Insert activities in an ordered fashion --- src/Services/TimeBasedSchedulingService.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Services/TimeBasedSchedulingService.cpp b/src/Services/TimeBasedSchedulingService.cpp index 266babd2..8d1beceb 100644 --- a/src/Services/TimeBasedSchedulingService.cpp +++ b/src/Services/TimeBasedSchedulingService.cpp @@ -66,7 +66,15 @@ void TimeBasedSchedulingService::insertActivities(Message &request) { newActivity.requestID.applicationID = request.applicationId; newActivity.requestID.sequenceCount = request.packetSequenceCount; - scheduledActivities.push_back(newActivity); // Insert the new activity in the schedule + const auto releaseTimeOrder = etl::find_if_not(scheduledActivities.begin(), + scheduledActivities.end(), + [=] + (ScheduledActivity const ¤tElement) { + return releaseTime >= + currentElement.requestReleaseTime; + }); + // Add activities ordered by release time as per the standard requirement + scheduledActivities.emplace(releaseTimeOrder, newActivity); } } } @@ -148,7 +156,7 @@ void TimeBasedSchedulingService::timeShiftActivitiesByID(Message &request) { }); if (requestIDMatch != scheduledActivities.end()) { - requestIDMatch->requestReleaseTime += relativeOffset; // Add the required offset + requestIDMatch->requestReleaseTime += relativeOffset; // Add the required offset } else { // todo: Generate failed start of execution for the failed instruction } @@ -192,15 +200,13 @@ void TimeBasedSchedulingService::detailReportAllActivities(Message &request) { assert(request.serviceType == 11); assert(request.messageType == 16); - // todo: add an extra check for the vector size to make sure it matches with - // currentNumberOfActivities? for (auto const &activity : scheduledActivities) { // Create the report message object of telemetry message subtype 10 for each activity Message report = createTM(10); // todo: append sub-schedule and group ID if they are defined - // todo: append the release time of the current activity "activity.requestReleaseTime;" // todo: append the request contained in the activity "activity.request;" // todo: important todo, implement append TC packet in the Message header + report.appendUint32(activity.requestReleaseTime); // todo: Replace with the time parser storeMessage(report); // Save the report request.resetRead(); // todo: define if this statement is required } -- GitLab