From d5684541781d572f051caaad6204c491bd04e204 Mon Sep 17 00:00:00 2001 From: Dimitrios Stoupis <dimitris.apple@gmail.com> Date: Sun, 17 Mar 2019 07:53:20 +0000 Subject: [PATCH] Corrected signed integer fault for negative time shifts --- src/Services/TimeBasedSchedulingService.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Services/TimeBasedSchedulingService.cpp b/src/Services/TimeBasedSchedulingService.cpp index a5de3e78..4bff94b4 100644 --- a/src/Services/TimeBasedSchedulingService.cpp +++ b/src/Services/TimeBasedSchedulingService.cpp @@ -27,6 +27,7 @@ void TimeBasedSchedulingService::resetSchedule(Message &request) { executionFunctionStatus = false; // Disable the service scheduledActivities.clear(); // Delete all scheduled activities + currentNumberOfActivities = 0; // todo: Add resetting for sub-schedules and groups, if defined } @@ -76,6 +77,7 @@ void TimeBasedSchedulingService::insertActivities(Message &request) { // Add activities ordered by release time as per the standard requirement scheduledActivities.insert(releaseTimeOrder, newActivity); + currentNumberOfActivities++; } } } @@ -99,10 +101,11 @@ void TimeBasedSchedulingService::timeShiftAllActivities(Message &request) { rightSide.requestReleaseTime; }); - uint32_t relativeOffset = request.readUint32(); // Get the relative offset + int32_t relativeOffset = request.readSint32(); // Get the relative offset if ((releaseTimes.first->requestReleaseTime + relativeOffset) < (current_time + TIME_MARGIN_FOR_ACTIVATION)) { // todo: generate a failed start of execution error + std::cerr << "Relative offset error" << std::endl; } else { for (auto &activity : scheduledActivities) { activity.requestReleaseTime += relativeOffset; // Time shift each activity @@ -189,6 +192,7 @@ void TimeBasedSchedulingService::deleteActivitiesByID(Message &request) { if (requestIDMatch != scheduledActivities.end()) { scheduledActivities.erase(requestIDMatch); // Delete activity from the schedule + currentNumberOfActivities--; } else { // todo: Generate failed start of execution for the failed instruction } -- GitLab