From 919aaad6fc87b6729e0f2857618049930032cd44 Mon Sep 17 00:00:00 2001 From: emanuel Date: Fri, 23 Apr 2021 15:58:48 +0100 Subject: [PATCH 1/2] Compatibility with updated it2s-asn --- src/config.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/config.c b/src/config.c index c761f8c..9e4e3ab 100644 --- a/src/config.c +++ b/src/config.c @@ -259,11 +259,11 @@ int facilities_config(void* facilities_s) { pthread_mutex_init(&facilities->epv.lock, NULL); ManagementRequest_t* mreq = calloc(1, sizeof(ManagementRequest_t)); - mreq->present = ManagementRequest_PR_attributes; - mreq->choice.attributes.coordinates = 1; - mreq->choice.attributes.altitude = 1; - mreq->choice.attributes.heading = 1; - mreq->choice.attributes.speed = 1; + mreq->present = ManagementRequest_PR_get; + mreq->choice.get.coordinates = 1; + mreq->choice.get.altitude = 1; + mreq->choice.get.heading = 1; + mreq->choice.get.speed = 1; void* management_socket = zmq_socket(facilities->zmq.ctx, ZMQ_REQ); zmq_connect(management_socket, facilities->zmq.management_address); uint8_t buffer[256]; From 5f6c758733ec3efadee494c986c9551a7868f47e Mon Sep 17 00:00:00 2001 From: emanuel Date: Sat, 24 Apr 2021 20:25:55 +0100 Subject: [PATCH 2/2] Time manipulation first efforts --- src/cam.c | 10 ++-------- src/config.c | 2 ++ src/facilities.c | 3 +++ src/facilities.h | 1 + 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/cam.c b/src/cam.c index 10165e9..07f68d7 100644 --- a/src/cam.c +++ b/src/cam.c @@ -89,20 +89,14 @@ static int mk_cam(facilities_t* facilities, uint8_t *cam_oer, uint32_t *cam_len) pthread_mutex_unlock(&facilities->id.lock); cam->cam.camParameters.basicContainer.stationType = facilities->station_type; - - long generationdeltatime = (long)((systemtime.tv_sec + LEAP_SECONDS) * 1000 + systemtime.tv_nsec / 1E6); - generationdeltatime = generationdeltatime - 1072915200000; // EPOCH -> 2004/01/01 00:00:000 - generationdeltatime = generationdeltatime % 64536; - cam->cam.generationDeltaTime = generationdeltatime; - BasicContainer_t* bc = &cam->cam.camParameters.basicContainer; - lightship_t* lightship = facilities->lightship; pthread_mutex_lock(&lightship->lock); if (facilities->station_type != StationType_roadSideUnit) { pthread_mutex_lock(&facilities->epv.lock); + cam->cam.generationDeltaTime = facilities->epv.timestamp % 64536; bc->referencePosition.altitude.altitudeValue = facilities->epv.altitude; bc->referencePosition.altitude.altitudeConfidence = facilities->epv.altitude_conf; @@ -113,7 +107,6 @@ static int mk_cam(facilities_t* facilities, uint8_t *cam_oer, uint32_t *cam_len) bc->referencePosition.positionConfidenceEllipse.semiMajorConfidence = SemiAxisLength_unavailable; bc->referencePosition.positionConfidenceEllipse.semiMajorOrientation = HeadingValue_unavailable; - cam->cam.camParameters.highFrequencyContainer.present = HighFrequencyContainer_PR_basicVehicleContainerHighFrequency; BasicVehicleContainerHighFrequency_t* bvc_hf = &cam->cam.camParameters.highFrequencyContainer.choice.basicVehicleContainerHighFrequency; @@ -223,6 +216,7 @@ static int mk_cam(facilities_t* facilities, uint8_t *cam_oer, uint32_t *cam_len) } else { pthread_mutex_lock(&facilities->epv.lock); + cam->cam.generationDeltaTime = facilities->epv.timestamp % 64536; bc->referencePosition.altitude.altitudeValue = facilities->epv.altitude; bc->referencePosition.altitude.altitudeConfidence = facilities->epv.altitude_conf; diff --git a/src/config.c b/src/config.c index 9e4e3ab..7ddac9a 100644 --- a/src/config.c +++ b/src/config.c @@ -286,6 +286,8 @@ int facilities_config(void* facilities_s) { facilities->epv.heading_conf = mrep->attributes->heading->headingConfidence; facilities->epv.speed = mrep->attributes->speed->speedValue; facilities->epv.speed_conf = mrep->attributes->speed->speedConfidence; + + asn_INTEGER2ulong(&mrep->attributes->timestamp, &facilities->epv.timestamp); } else { syslog_err("[applications] rejected MR attribute request"); rv = 1; diff --git a/src/facilities.c b/src/facilities.c index 8697a0d..32d347a 100644 --- a/src/facilities.c +++ b/src/facilities.c @@ -373,6 +373,9 @@ static int management_indication(facilities_t* facilities, void* responder, uint facilities->epv.altitude = mi->choice.attributes.altitude->altitudeValue; facilities->epv.altitude_conf = mi->choice.attributes.altitude->altitudeConfidence; } + + asn_INTEGER2ulong(&mi->choice.attributes.timestamp, &facilities->epv.timestamp); + pthread_mutex_unlock(&facilities->epv.lock); } diff --git a/src/facilities.h b/src/facilities.h index 6d99122..cc6fdd3 100644 --- a/src/facilities.h +++ b/src/facilities.h @@ -20,6 +20,7 @@ enum ID_CHANGE_STAGE { typedef struct epv { pthread_mutex_t lock; + uint64_t timestamp; long latitude; long longitude;