Fix coordination lock on PCM intersection logic

This commit is contained in:
emanuel 2022-03-14 18:25:26 +00:00
parent a25d16f6c6
commit 7e5fa63c61
1 changed files with 1 additions and 4 deletions

View File

@ -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) {