Config MCM protocol
This commit is contained in:
parent
7d1b1eabb5
commit
ea3f129b69
10
src/config.c
10
src/config.c
|
|
@ -1,6 +1,7 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "facilities.h"
|
#include "facilities.h"
|
||||||
#include "tpm.h"
|
#include "tpm.h"
|
||||||
|
#include "vcm.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
@ -353,8 +354,15 @@ int facilities_config() {
|
||||||
}
|
}
|
||||||
facilities.tolling.station.obu.client_id = config->facilities.tpm.client_id;
|
facilities.tolling.station.obu.client_id = config->facilities.tpm.client_id;
|
||||||
|
|
||||||
// VCM
|
// MCM
|
||||||
facilities.coordination.active = config->facilities.mcm.activate;
|
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_min = config->facilities.mcm.period_min;
|
||||||
facilities.coordination.vcm_period_max = config->facilities.mcm.period_max;
|
facilities.coordination.vcm_period_max = config->facilities.mcm.period_max;
|
||||||
|
|
||||||
|
|
|
||||||
14
src/vcm.c
14
src/vcm.c
|
|
@ -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*));
|
vcm->vcm.chain->area->trees.list.array = malloc(1 * sizeof(OCTET_STRING_t*));
|
||||||
for (int q = 0; q < 1; ++q) {
|
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] = 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;
|
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->proposed = true;
|
||||||
neighbour->session.requested = true;
|
neighbour->session.requested = true;
|
||||||
neighbour->session.nonce = request->nonce;
|
neighbour->session.nonce = request->nonce;
|
||||||
|
neighbour->station_id = vcm->header.stationID;
|
||||||
coordination->session.requester = neighbour;
|
coordination->session.requester = neighbour;
|
||||||
|
|
||||||
vcm_rep = calloc(1, sizeof(VCM_t));
|
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*));
|
vcm_rep->vcm.chain->area->trees.list.array = malloc(1 * sizeof(OCTET_STRING_t*));
|
||||||
for (int q = 0; q < 1; ++q) {
|
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] = 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;
|
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 = calloc(1, sizeof(CoordinationNegotiation_t));
|
||||||
mvc->negotiation->present = CoordinationNegotiation_PR_commit;
|
mvc->negotiation->present = CoordinationNegotiation_PR_commit;
|
||||||
mvc->negotiation->choice.commit.nonce = coordination->session.nonce;
|
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);
|
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*));
|
vcm->vcm.chain->area->trees.list.array = malloc(1 * sizeof(OCTET_STRING_t*));
|
||||||
for (int q = 0; q < 1; ++q) {
|
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] = 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;
|
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*));
|
vcm->vcm.chain->area->trees.list.array = malloc(1 * sizeof(OCTET_STRING_t*));
|
||||||
for (int q = 0; q < 1; ++q) {
|
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] = 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;
|
vcm->vcm.chain->area->trees.list.array[q]->size = 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue