Config MCM protocol

This commit is contained in:
emanuel 2023-01-31 17:57:53 +00:00
parent 7d1b1eabb5
commit ea3f129b69
2 changed files with 17 additions and 7 deletions

View File

@ -1,6 +1,7 @@
#include "config.h"
#include "facilities.h"
#include "tpm.h"
#include "vcm.h"
#include <string.h>
#include <stdlib.h>
@ -353,8 +354,15 @@ int facilities_config() {
}
facilities.tolling.station.obu.client_id = config->facilities.tpm.client_id;
// VCM
// MCM
facilities.coordination.active = config->facilities.mcm.activate;
if (!strcmp("vcm-reqrep", config->facilities.mcm.protocol)) {
facilities.coordination.protocol = MC_PROTOCOL_REQ_REP;
} else if (!strcmp("vcm-reqrepcom", config->facilities.mcm.protocol)) {
facilities.coordination.protocol = MC_PROTOCOL_REQ_REP_COM;
} else {
facilities.coordination.protocol = MC_PROTOCOL_REQ_REP;
}
facilities.coordination.vcm_period_min = config->facilities.mcm.period_min;
facilities.coordination.vcm_period_max = config->facilities.mcm.period_max;

View File

@ -172,7 +172,7 @@ static void vcm_reject(VCM_t* vcm, mc_neighbour_s* neighbour) {
vcm->vcm.chain->area->trees.list.array = malloc(1 * sizeof(OCTET_STRING_t*));
for (int q = 0; q < 1; ++q) {
vcm->vcm.chain->area->trees.list.array[q] = calloc(1, sizeof(OCTET_STRING_t));
vcm->vcm.chain->area->trees.list.array[q]->buf = malloc(4);
vcm->vcm.chain->area->trees.list.array[q]->buf = calloc(1,4);
vcm->vcm.chain->area->trees.list.array[q]->size = 4;
}
}
@ -325,6 +325,7 @@ static int vcm_check_handle_request(VCM_t* vcm, mc_neighbour_s* neighbour) {
neighbour->proposed = true;
neighbour->session.requested = true;
neighbour->session.nonce = request->nonce;
neighbour->station_id = vcm->header.stationID;
coordination->session.requester = neighbour;
vcm_rep = calloc(1, sizeof(VCM_t));
@ -358,7 +359,7 @@ static int vcm_check_handle_request(VCM_t* vcm, mc_neighbour_s* neighbour) {
vcm_rep->vcm.chain->area->trees.list.array = malloc(1 * sizeof(OCTET_STRING_t*));
for (int q = 0; q < 1; ++q) {
vcm_rep->vcm.chain->area->trees.list.array[q] = calloc(1, sizeof(OCTET_STRING_t));
vcm_rep->vcm.chain->area->trees.list.array[q]->buf = malloc(4);
vcm_rep->vcm.chain->area->trees.list.array[q]->buf = calloc(1,4);
vcm_rep->vcm.chain->area->trees.list.array[q]->size = 4;
}
}
@ -578,10 +579,11 @@ static int vcm_check_handle_reply(VCM_t* vcm, mc_neighbour_s* neighbour) {
mvc->negotiation = calloc(1, sizeof(CoordinationNegotiation_t));
mvc->negotiation->present = CoordinationNegotiation_PR_commit;
mvc->negotiation->choice.commit.nonce = coordination->session.nonce;
mvc->negotiation->choice.commit.requesterId = coordination->session.requester->station_id;
mvc->negotiation->choice.commit.requesterId = reply->requesterId;
tx_vcm(vcm_com);
ASN_STRUCT_FREE(asn_DEF_VCM, vcm);
ASN_STRUCT_FREE(asn_DEF_VCM, vcm_com);
log_warn("SENDING COMMIT");
}
@ -649,7 +651,7 @@ static int intersection_detected(VCM_t* vcm, mc_neighbour_s* neighbour) {
vcm->vcm.chain->area->trees.list.array = malloc(1 * sizeof(OCTET_STRING_t*));
for (int q = 0; q < 1; ++q) {
vcm->vcm.chain->area->trees.list.array[q] = calloc(1, sizeof(OCTET_STRING_t));
vcm->vcm.chain->area->trees.list.array[q]->buf = malloc(4);
vcm->vcm.chain->area->trees.list.array[q]->buf = calloc(1,4);
vcm->vcm.chain->area->trees.list.array[q]->size = 4;
}
}
@ -959,7 +961,7 @@ static int mk_vcm() {
vcm->vcm.chain->area->trees.list.array = malloc(1 * sizeof(OCTET_STRING_t*));
for (int q = 0; q < 1; ++q) {
vcm->vcm.chain->area->trees.list.array[q] = calloc(1, sizeof(OCTET_STRING_t));
vcm->vcm.chain->area->trees.list.array[q]->buf = malloc(4);
vcm->vcm.chain->area->trees.list.array[q]->buf = calloc(1,4);
vcm->vcm.chain->area->trees.list.array[q]->size = 4;
}
}