Time manipulation first efforts

This commit is contained in:
emanuel 2021-04-24 20:25:55 +01:00
parent 919aaad6fc
commit 5f6c758733
4 changed files with 8 additions and 8 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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);
}

View File

@ -20,6 +20,7 @@ enum ID_CHANGE_STAGE {
typedef struct epv {
pthread_mutex_t lock;
uint64_t timestamp;
long latitude;
long longitude;