From 07dcd7ef974395f376783f6d2dc03dac5876fe30 Mon Sep 17 00:00:00 2001 From: emanuel Date: Wed, 26 Oct 2022 18:43:32 +0100 Subject: [PATCH] VCM: Fix VCM.req trjlen --- src/vcm.c | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/src/vcm.c b/src/vcm.c index 27cbb89..7dbd88d 100644 --- a/src/vcm.c +++ b/src/vcm.c @@ -377,18 +377,14 @@ static int intersection_detected(VCM_t* vcm, mc_neighbour_s* neighbour) { mvc->vehicleWidth = facilities.vehicle.width; // Planned trajectory - mvc->plannedTrajectory.list.count = trajectoryA_len; - mvc->plannedTrajectory.list.size = trajectoryA_len * sizeof(void*); - mvc->plannedTrajectory.list.array = malloc(trajectoryA_len * sizeof(void*)); - mvc->plannedTrajectory.list.array[0] = calloc(1, sizeof(STPoint_t)); - mvc->plannedTrajectory.list.array[0]->deltaLatitude = trajectoryA[0].latitude - lat; - mvc->plannedTrajectory.list.array[0]->deltaLongitude = trajectoryA[0].longitude - lon; - mvc->plannedTrajectory.list.array[0]->deltaTime = trajectoryA[0].timestamp - now; - for (int i = 1; i < trajectoryA_len; ++i) { + mvc->plannedTrajectory.list.count = trajectoryA_len - 1; + mvc->plannedTrajectory.list.size = (trajectoryA_len - 1) * sizeof(void*); + mvc->plannedTrajectory.list.array = malloc((trajectoryA_len - 1) * sizeof(void*)); + for (int i = 0; i < trajectoryA_len - 1; ++i) { mvc->plannedTrajectory.list.array[i] = calloc(1, sizeof(STPoint_t)); - mvc->plannedTrajectory.list.array[i]->deltaLatitude = trajectoryA[i].latitude - trajectoryA[i-1].latitude; - mvc->plannedTrajectory.list.array[i]->deltaLongitude = trajectoryA[i].longitude - trajectoryA[i-1].longitude; - mvc->plannedTrajectory.list.array[i]->deltaTime = trajectoryA[i].timestamp - trajectoryA[i-1].timestamp; + mvc->plannedTrajectory.list.array[i]->deltaLatitude = trajectoryA[i+1].latitude - trajectoryA[i].latitude; + mvc->plannedTrajectory.list.array[i]->deltaLongitude = trajectoryA[i+1].longitude - trajectoryA[i].longitude; + mvc->plannedTrajectory.list.array[i]->deltaTime = trajectoryA[i+1].timestamp - trajectoryA[i].timestamp; } // Desired trajectory @@ -402,18 +398,14 @@ static int intersection_detected(VCM_t* vcm, mc_neighbour_s* neighbour) { mvc->negotiation->choice.request.requesterId = vcm->header.stationID; mvc->negotiation->choice.request.nonce = rand() + 1; - pt->trajectory.list.count = trajectoryA_len; - pt->trajectory.list.size = sizeof(void*) * trajectoryA_len; - pt->trajectory.list.array = malloc(sizeof(void*) * trajectoryA_len); - pt->trajectory.list.array[0] = calloc(1, sizeof(STPoint_t)); - pt->trajectory.list.array[0]->deltaLatitude = trajectoryA[0].latitude - lat; - pt->trajectory.list.array[0]->deltaLongitude = trajectoryA[0].longitude - lon; - pt->trajectory.list.array[0]->deltaTime = trajectoryA[0].timestamp - now; - for (int i = 1; i < trajectoryA_len; ++i) { + pt->trajectory.list.count = trajectoryA_len - 1; + pt->trajectory.list.size = sizeof(void*) * (trajectoryA_len - 1); + pt->trajectory.list.array = malloc(sizeof(void*) * (trajectoryA_len - 1)); + for (int i = 0; i < trajectoryA_len - 1; ++i) { pt->trajectory.list.array[i] = calloc(1, sizeof(STPoint_t)); - pt->trajectory.list.array[i]->deltaLatitude = trajectoryA[i].latitude - trajectoryA[i-1].latitude; - pt->trajectory.list.array[i]->deltaLongitude = trajectoryA[i].longitude - trajectoryA[i-1].longitude; - pt->trajectory.list.array[i]->deltaTime = trajectoryA[i].timestamp - trajectoryA[i-1].timestamp; + pt->trajectory.list.array[i]->deltaLatitude = trajectoryA[i+1].latitude - trajectoryA[i].latitude; + pt->trajectory.list.array[i]->deltaLongitude = trajectoryA[i+1].longitude - trajectoryA[i].longitude; + pt->trajectory.list.array[i]->deltaTime = trajectoryA[i+1].timestamp - trajectoryA[i].timestamp; } pt->offer = 5;