add special vehicle container inclusion (public transport and emergency) based on vehicle role from config

This commit is contained in:
dmtar 2025-03-28 16:22:17 +00:00
parent d678c301d8
commit 52c3968f15
1 changed files with 32 additions and 1 deletions

View File

@ -335,7 +335,38 @@ static int mk_cam(uint8_t *cam_oer, uint16_t *cam_len) {
}
lightship->t_last_cam_lfc = now;
}
}
// Special vehicle container
if (facilities.vehicle.role == EI2_VehicleRole_publicTransport) {
cam->cam.camParameters.specialVehicleContainer = calloc(1, sizeof(EI2_SpecialVehicleContainer_t));
cam->cam.camParameters.specialVehicleContainer->present = EI2_SpecialVehicleContainer_PR_publicTransportContainer;
EI2_PublicTransportContainer_t* cam_ptc = &cam->cam.camParameters.specialVehicleContainer->choice.publicTransportContainer;
cam_ptc->embarkationStatus = true;
}
else if (facilities.vehicle.role == EI2_VehicleRole_emergency) {
cam->cam.camParameters.specialVehicleContainer = calloc(1, sizeof(EI2_SpecialVehicleContainer_t));
cam->cam.camParameters.specialVehicleContainer->present = EI2_SpecialVehicleContainer_PR_emergencyContainer;
EI2_EmergencyContainer_t* cam_ec = &cam->cam.camParameters.specialVehicleContainer->choice.emergencyContainer;
cam_ec->lightBarSirenInUse.buf = calloc(sizeof(uint8_t), 1);
uint8_t lightBarSirenInUseValue = 0x00;
memcpy(cam_ec->lightBarSirenInUse.buf, &lightBarSirenInUseValue, 1);
cam_ec->lightBarSirenInUse.size = 1;
cam_ec->lightBarSirenInUse.bits_unused = 6;
cam_ec->incidentIndication = calloc(1, sizeof(struct EI2_CauseCodeV2));
cam_ec->incidentIndication->ccAndScc.present = EI2_CauseCodeChoice_PR_publicTransportVehicleApproaching28;
cam_ec->incidentIndication->ccAndScc.choice.publicTransportVehicleApproaching28 = 0;
cam_ec->emergencyPriority = calloc(1, sizeof(EI2_EmergencyPriority_t));
cam_ec->emergencyPriority->buf = malloc(sizeof(uint8_t));
uint8_t emergencyPriorityValue = 0x00;
emergencyPriorityValue = emergencyPriorityValue | 0x80;
memcpy(cam_ec->emergencyPriority->buf, &emergencyPriorityValue, 1);
cam_ec->emergencyPriority->size = 1;
cam_ec->emergencyPriority->bits_unused = 6;
}
lightship->last_pos = pn;