Merge branch 'master' into cpm_dev
This commit is contained in:
commit
642d632f02
10
src/cam.c
10
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);
|
pthread_mutex_unlock(&facilities->id.lock);
|
||||||
cam->cam.camParameters.basicContainer.stationType = facilities->station_type;
|
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;
|
BasicContainer_t* bc = &cam->cam.camParameters.basicContainer;
|
||||||
|
|
||||||
|
|
||||||
lightship_t* lightship = facilities->lightship;
|
lightship_t* lightship = facilities->lightship;
|
||||||
pthread_mutex_lock(&lightship->lock);
|
pthread_mutex_lock(&lightship->lock);
|
||||||
|
|
||||||
if (facilities->station_type != StationType_roadSideUnit) {
|
if (facilities->station_type != StationType_roadSideUnit) {
|
||||||
pthread_mutex_lock(&facilities->epv.lock);
|
pthread_mutex_lock(&facilities->epv.lock);
|
||||||
|
cam->cam.generationDeltaTime = facilities->epv.timestamp % 64536;
|
||||||
bc->referencePosition.altitude.altitudeValue = facilities->epv.altitude;
|
bc->referencePosition.altitude.altitudeValue = facilities->epv.altitude;
|
||||||
bc->referencePosition.altitude.altitudeConfidence = facilities->epv.altitude_conf;
|
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.semiMajorConfidence = SemiAxisLength_unavailable;
|
||||||
bc->referencePosition.positionConfidenceEllipse.semiMajorOrientation = HeadingValue_unavailable;
|
bc->referencePosition.positionConfidenceEllipse.semiMajorOrientation = HeadingValue_unavailable;
|
||||||
|
|
||||||
|
|
||||||
cam->cam.camParameters.highFrequencyContainer.present = HighFrequencyContainer_PR_basicVehicleContainerHighFrequency;
|
cam->cam.camParameters.highFrequencyContainer.present = HighFrequencyContainer_PR_basicVehicleContainerHighFrequency;
|
||||||
BasicVehicleContainerHighFrequency_t* bvc_hf = &cam->cam.camParameters.highFrequencyContainer.choice.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 {
|
} else {
|
||||||
pthread_mutex_lock(&facilities->epv.lock);
|
pthread_mutex_lock(&facilities->epv.lock);
|
||||||
|
cam->cam.generationDeltaTime = facilities->epv.timestamp % 64536;
|
||||||
bc->referencePosition.altitude.altitudeValue = facilities->epv.altitude;
|
bc->referencePosition.altitude.altitudeValue = facilities->epv.altitude;
|
||||||
bc->referencePosition.altitude.altitudeConfidence = facilities->epv.altitude_conf;
|
bc->referencePosition.altitude.altitudeConfidence = facilities->epv.altitude_conf;
|
||||||
|
|
||||||
|
|
|
||||||
12
src/config.c
12
src/config.c
|
|
@ -261,11 +261,11 @@ int facilities_config(void* facilities_s) {
|
||||||
pthread_mutex_init(&facilities->epv.lock, NULL);
|
pthread_mutex_init(&facilities->epv.lock, NULL);
|
||||||
|
|
||||||
ManagementRequest_t* mreq = calloc(1, sizeof(ManagementRequest_t));
|
ManagementRequest_t* mreq = calloc(1, sizeof(ManagementRequest_t));
|
||||||
mreq->present = ManagementRequest_PR_attributes;
|
mreq->present = ManagementRequest_PR_get;
|
||||||
mreq->choice.attributes.coordinates = 1;
|
mreq->choice.get.coordinates = 1;
|
||||||
mreq->choice.attributes.altitude = 1;
|
mreq->choice.get.altitude = 1;
|
||||||
mreq->choice.attributes.heading = 1;
|
mreq->choice.get.heading = 1;
|
||||||
mreq->choice.attributes.speed = 1;
|
mreq->choice.get.speed = 1;
|
||||||
void* management_socket = zmq_socket(facilities->zmq.ctx, ZMQ_REQ);
|
void* management_socket = zmq_socket(facilities->zmq.ctx, ZMQ_REQ);
|
||||||
zmq_connect(management_socket, facilities->zmq.management_address);
|
zmq_connect(management_socket, facilities->zmq.management_address);
|
||||||
uint8_t buffer[256];
|
uint8_t buffer[256];
|
||||||
|
|
@ -288,6 +288,8 @@ int facilities_config(void* facilities_s) {
|
||||||
facilities->epv.heading_conf = mrep->attributes->heading->headingConfidence;
|
facilities->epv.heading_conf = mrep->attributes->heading->headingConfidence;
|
||||||
facilities->epv.speed = mrep->attributes->speed->speedValue;
|
facilities->epv.speed = mrep->attributes->speed->speedValue;
|
||||||
facilities->epv.speed_conf = mrep->attributes->speed->speedConfidence;
|
facilities->epv.speed_conf = mrep->attributes->speed->speedConfidence;
|
||||||
|
|
||||||
|
asn_INTEGER2ulong(&mrep->attributes->timestamp, &facilities->epv.timestamp);
|
||||||
} else {
|
} else {
|
||||||
syslog_err("[applications] rejected MR attribute request");
|
syslog_err("[applications] rejected MR attribute request");
|
||||||
rv = 1;
|
rv = 1;
|
||||||
|
|
|
||||||
|
|
@ -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 = mi->choice.attributes.altitude->altitudeValue;
|
||||||
facilities->epv.altitude_conf = mi->choice.attributes.altitude->altitudeConfidence;
|
facilities->epv.altitude_conf = mi->choice.attributes.altitude->altitudeConfidence;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
asn_INTEGER2ulong(&mi->choice.attributes.timestamp, &facilities->epv.timestamp);
|
||||||
|
|
||||||
pthread_mutex_unlock(&facilities->epv.lock);
|
pthread_mutex_unlock(&facilities->epv.lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ enum ID_CHANGE_STAGE {
|
||||||
|
|
||||||
typedef struct epv {
|
typedef struct epv {
|
||||||
pthread_mutex_t lock;
|
pthread_mutex_t lock;
|
||||||
|
uint64_t timestamp;
|
||||||
|
|
||||||
long latitude;
|
long latitude;
|
||||||
long longitude;
|
long longitude;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue