Add confidence values to GPS coords, calculate CAM pos confidence
This commit is contained in:
parent
a22a723fca
commit
c75624d8ca
15
src/cam.c
15
src/cam.c
|
|
@ -116,9 +116,8 @@ static int mk_cam(facilities_t* facilities, uint8_t *cam_oer, uint32_t *cam_len)
|
|||
// Set GPS coordinates
|
||||
bc->referencePosition.latitude = facilities->epv.space.latitude;
|
||||
bc->referencePosition.longitude = facilities->epv.space.longitude;
|
||||
bc->referencePosition.positionConfidenceEllipse.semiMinorConfidence = SemiAxisLength_unavailable;
|
||||
bc->referencePosition.positionConfidenceEllipse.semiMajorConfidence = SemiAxisLength_unavailable;
|
||||
bc->referencePosition.positionConfidenceEllipse.semiMajorOrientation = HeadingValue_unavailable;
|
||||
uint16_t lat_conf = facilities->epv.space.latitude_conf;
|
||||
uint16_t lon_conf = facilities->epv.space.longitude_conf;
|
||||
|
||||
cam->cam.camParameters.highFrequencyContainer.present = HighFrequencyContainer_PR_basicVehicleContainerHighFrequency;
|
||||
BasicVehicleContainerHighFrequency_t* bvc_hf = &cam->cam.camParameters.highFrequencyContainer.choice.basicVehicleContainerHighFrequency;
|
||||
|
|
@ -133,6 +132,16 @@ static int mk_cam(facilities_t* facilities, uint8_t *cam_oer, uint32_t *cam_len)
|
|||
|
||||
it2s_tender_unlock_space(&facilities->epv);
|
||||
|
||||
if (lat_conf > lon_conf) {
|
||||
bc->referencePosition.positionConfidenceEllipse.semiMinorConfidence = lon_conf;
|
||||
bc->referencePosition.positionConfidenceEllipse.semiMajorConfidence = lat_conf;
|
||||
bc->referencePosition.positionConfidenceEllipse.semiMajorOrientation = 0;
|
||||
} else {
|
||||
bc->referencePosition.positionConfidenceEllipse.semiMinorConfidence = lon_conf;
|
||||
bc->referencePosition.positionConfidenceEllipse.semiMajorConfidence = lat_conf;
|
||||
bc->referencePosition.positionConfidenceEllipse.semiMajorOrientation = 900;
|
||||
}
|
||||
|
||||
bvc_hf->vehicleWidth = facilities->vehicle.width;
|
||||
bvc_hf->vehicleLength.vehicleLengthValue = facilities->vehicle.length;
|
||||
bvc_hf->vehicleLength.vehicleLengthConfidenceIndication = VehicleLengthConfidenceIndication_unavailable;
|
||||
|
|
|
|||
|
|
@ -342,7 +342,9 @@ int facilities_config(void* facilities_s) {
|
|||
mrep->attributes->clockOffset &&
|
||||
mrep->attributes->gpsType) {
|
||||
facilities->epv.space.latitude = mrep->attributes->coordinates->latitude;
|
||||
facilities->epv.space.latitude_conf = mrep->attributes->coordinates->latitudeConfidence;
|
||||
facilities->epv.space.longitude = mrep->attributes->coordinates->longitude;
|
||||
facilities->epv.space.longitude_conf = mrep->attributes->coordinates->longitudeConfidence;
|
||||
facilities->epv.space.altitude = mrep->attributes->altitude->altitudeValue;
|
||||
facilities->epv.space.altitude_conf = mrep->attributes->altitude->altitudeConfidence;
|
||||
facilities->epv.space.heading = mrep->attributes->heading->headingValue;
|
||||
|
|
|
|||
|
|
@ -402,7 +402,9 @@ static int management_indication(facilities_t* facilities, void* responder, uint
|
|||
if (mi->present == ManagementIndication_PR_attributes) {
|
||||
it2s_tender_lock_space(&facilities->epv);
|
||||
facilities->epv.space.latitude = mi->choice.attributes.coordinates.latitude;
|
||||
facilities->epv.space.latitude_conf = mi->choice.attributes.coordinates.latitudeConfidence;
|
||||
facilities->epv.space.longitude = mi->choice.attributes.coordinates.longitude;
|
||||
facilities->epv.space.longitude_conf = mi->choice.attributes.coordinates.longitudeConfidence;
|
||||
facilities->epv.space.speed = mi->choice.attributes.speed.speedValue;
|
||||
facilities->epv.space.speed_conf = mi->choice.attributes.speed.speedConfidence;
|
||||
facilities->epv.space.heading = mi->choice.attributes.heading.headingValue;
|
||||
|
|
|
|||
Loading…
Reference in New Issue