add special vehicle container inclusion (public transport and emergency) based on vehicle role from config
This commit is contained in:
parent
d678c301d8
commit
52c3968f15
31
src/cam.c
31
src/cam.c
|
|
@ -337,6 +337,37 @@ 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;
|
||||
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Reference in New Issue