diff --git a/src/requests.c b/src/requests.c index bde2503..56a27ef 100644 --- a/src/requests.c +++ b/src/requests.c @@ -531,7 +531,7 @@ int facilities_request_chaininfo_set(facilities_t* facilities, void* responder, pthread_mutex_lock(&facilities->coordination.lock); facilities->coordination.chain.id = cis->id; - memcpy(facilities->coordination.chain.link, cis->link.buf, 8); + memcpy(facilities->coordination.chain.link, cis->link.buf, cis->link.size); // TODO region pthread_mutex_unlock(&facilities->coordination.lock); diff --git a/src/vcm.c b/src/vcm.c index c0feae7..2fd0860 100644 --- a/src/vcm.c +++ b/src/vcm.c @@ -35,6 +35,8 @@ static int are_vehicles_intersecting( // B2[1] = tB[b+1].longitude; // if (it2s_tender_do_segments_intersect(A1, A2, B1, B2)) { +// printf("tA[a].lat=%d tA[a].lon=%d tB[b].lat=%d tB[b].lon=%d tA[a].ts=%ld tB[b].ts=%ld\n", +// tA[a].latitude, tA[a].longitude, tB[b].latitude, tB[b].longitude, tA[a].timestamp, tB[b].timestamp); fflush(stdout); if (it2s_tender_is_inside_circle(tA[a].latitude, tA[a].longitude, tB[b].latitude, tB[b].longitude, 8, DCM_HAVERSINE)) { if (tA[a].timestamp < tB[b].timestamp + 2000 && tA[a].timestamp > tB[b].timestamp - 2000) { @@ -103,9 +105,9 @@ static int vcm_check_handle_request(facilities_t* facilities, VCM_t* vcm, mc_nei if (coordination->chain.id) { vcm_rep->vcm.chain = calloc(1, sizeof(ChainInformation_t)); vcm_rep->vcm.chain->id = coordination->chain.id; - vcm_rep->vcm.chain->link.buf = malloc(8); - vcm_rep->vcm.chain->link.size = 8; - memcpy(vcm_rep->vcm.chain->link.buf, coordination->chain.link, 8); + vcm_rep->vcm.chain->link.buf = malloc(32); + vcm_rep->vcm.chain->link.size = 32; + memcpy(vcm_rep->vcm.chain->link.buf, coordination->chain.link, 32); vcm_rep->vcm.chain->area.present = ChainGeoRegion_PR_circle; } @@ -302,9 +304,9 @@ static int vcm_check_intersection_detected(facilities_t* facilities, VCM_t* vcm, if (coordination->chain.id) { vcm_req->vcm.chain = calloc(1, sizeof(ChainInformation_t)); vcm_req->vcm.chain->id = coordination->chain.id; - vcm_req->vcm.chain->link.buf = malloc(8); - vcm_req->vcm.chain->link.size = 8; - memcpy(vcm_req->vcm.chain->link.buf, coordination->chain.link, 8); + vcm_req->vcm.chain->link.buf = malloc(32); + vcm_req->vcm.chain->link.size = 32; + memcpy(vcm_req->vcm.chain->link.buf, coordination->chain.link, 32); vcm_req->vcm.chain->area.present = ChainGeoRegion_PR_circle; } @@ -514,7 +516,7 @@ int vcm_check(void* fc, VCM_t* vcm) { } if (intersecting) { - syslog_info("[facilities] [vc] intersection danger with %ld @ (%f, %f) in %ld ms", + syslog_info("[facilities] [vc] intersection danger with %lld @ (%f, %f) in %ld ms", vcm->header.stationID, trajectoryA[index].latitude/1.0e7, trajectoryA[index].longitude/1.0e7, @@ -572,9 +574,9 @@ static int mk_vcm(facilities_t* facilities, uint8_t* vcm_uper, uint16_t* vcm_upe if (coordination->chain.id) { vcm->vcm.chain = calloc(1, sizeof(ChainInformation_t)); vcm->vcm.chain->id = coordination->chain.id; - vcm->vcm.chain->link.buf = malloc(8); - vcm->vcm.chain->link.size = 8; - memcpy(vcm->vcm.chain->link.buf, coordination->chain.link, 8); + vcm->vcm.chain->link.buf = malloc(32); + vcm->vcm.chain->link.size = 32; + memcpy(vcm->vcm.chain->link.buf, coordination->chain.link, 32); vcm->vcm.chain->area.present = ChainGeoRegion_PR_circle; } diff --git a/src/vcm.h b/src/vcm.h index 07179d3..d8a6070 100644 --- a/src/vcm.h +++ b/src/vcm.h @@ -32,7 +32,7 @@ typedef struct coordination { struct { uint64_t id; - uint8_t link[8]; + uint8_t link[32]; it2s_tender_region_t region; } chain;