Fix coordination lock on PCM intersection logic
This commit is contained in:
parent
a25d16f6c6
commit
7e5fa63c61
|
|
@ -100,7 +100,6 @@ static int pcm_check_handle_request(facilities_t* facilities, PCM_t* pcm, mc_nei
|
||||||
pcm_rep->pcm.currentPosition.longitude = lon;
|
pcm_rep->pcm.currentPosition.longitude = lon;
|
||||||
asn_ulong2INTEGER(&pcm_rep->pcm.currentPosition.timestamp, now);
|
asn_ulong2INTEGER(&pcm_rep->pcm.currentPosition.timestamp, now);
|
||||||
|
|
||||||
pthread_mutex_lock(&facilities->coordination.lock);
|
|
||||||
if (coordination->chain.id) {
|
if (coordination->chain.id) {
|
||||||
pcm_rep->pcm.chain = calloc(1, sizeof(ChainInformation_t));
|
pcm_rep->pcm.chain = calloc(1, sizeof(ChainInformation_t));
|
||||||
pcm_rep->pcm.chain->id = coordination->chain.id;
|
pcm_rep->pcm.chain->id = coordination->chain.id;
|
||||||
|
|
@ -109,7 +108,6 @@ static int pcm_check_handle_request(facilities_t* facilities, PCM_t* pcm, mc_nei
|
||||||
memcpy(pcm_rep->pcm.chain->link.buf, coordination->chain.link, 8);
|
memcpy(pcm_rep->pcm.chain->link.buf, coordination->chain.link, 8);
|
||||||
pcm->pcm.chain->area.present = ChainGeoRegion_PR_circle;
|
pcm->pcm.chain->area.present = ChainGeoRegion_PR_circle;
|
||||||
}
|
}
|
||||||
pthread_mutex_unlock(&facilities->coordination.lock);
|
|
||||||
|
|
||||||
pcm_rep->pcm.maneuverContainer.present = ManeuverContainer_PR_vehicle;
|
pcm_rep->pcm.maneuverContainer.present = ManeuverContainer_PR_vehicle;
|
||||||
ManeuverVehicleContainer_t* mvc = &pcm_rep->pcm.maneuverContainer.choice.vehicle;
|
ManeuverVehicleContainer_t* mvc = &pcm_rep->pcm.maneuverContainer.choice.vehicle;
|
||||||
|
|
@ -295,7 +293,6 @@ static int pcm_check_intersection_detected(facilities_t* facilities, PCM_t* pcm,
|
||||||
pcm_req->pcm.currentPosition.longitude = lon;
|
pcm_req->pcm.currentPosition.longitude = lon;
|
||||||
asn_ulong2INTEGER(&pcm_req->pcm.currentPosition.timestamp, now);
|
asn_ulong2INTEGER(&pcm_req->pcm.currentPosition.timestamp, now);
|
||||||
|
|
||||||
pthread_mutex_lock(&facilities->coordination.lock);
|
|
||||||
if (coordination->chain.id) {
|
if (coordination->chain.id) {
|
||||||
pcm_req->pcm.chain = calloc(1, sizeof(ChainInformation_t));
|
pcm_req->pcm.chain = calloc(1, sizeof(ChainInformation_t));
|
||||||
pcm_req->pcm.chain->id = coordination->chain.id;
|
pcm_req->pcm.chain->id = coordination->chain.id;
|
||||||
|
|
@ -305,7 +302,6 @@ static int pcm_check_intersection_detected(facilities_t* facilities, PCM_t* pcm,
|
||||||
pcm->pcm.chain->area.present = ChainGeoRegion_PR_circle;
|
pcm->pcm.chain->area.present = ChainGeoRegion_PR_circle;
|
||||||
}
|
}
|
||||||
|
|
||||||
pthread_mutex_unlock(&facilities->coordination.lock);
|
|
||||||
pcm_req->pcm.maneuverContainer.present = ManeuverContainer_PR_vehicle;
|
pcm_req->pcm.maneuverContainer.present = ManeuverContainer_PR_vehicle;
|
||||||
ManeuverVehicleContainer_t* mvc = &pcm_req->pcm.maneuverContainer.choice.vehicle;
|
ManeuverVehicleContainer_t* mvc = &pcm_req->pcm.maneuverContainer.choice.vehicle;
|
||||||
|
|
||||||
|
|
@ -398,6 +394,7 @@ static int pcm_check_intersection_detected(facilities_t* facilities, PCM_t* pcm,
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
syslog_debug("QUEUE SEND to APP");
|
||||||
it2s_tender_queue_send(facilities->tx_queue, buf, enc.encoded+1, ITSS_APPLICATIONS, bpr->id, "FI.message");
|
it2s_tender_queue_send(facilities->tx_queue, buf, enc.encoded+1, ITSS_APPLICATIONS, bpr->id, "FI.message");
|
||||||
|
|
||||||
if (facilities->logging.recorder) {
|
if (facilities->logging.recorder) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue