diff --git a/src/config.c b/src/config.c index e803edf..3e2ab29 100644 --- a/src/config.c +++ b/src/config.c @@ -322,6 +322,12 @@ int facilities_config() { facilities.dissemination.radar_rotation = config->applications.its_center.radar_rotation; facilities.dissemination.tmc_connect = config->facilities.cpm.tmc_connected; facilities.dissemination.T_AddSensorInformation = 1000; + uint16_t oa_start = (360-facilities.dissemination.radar_rotation) * 10 - 500; + uint16_t oa_end = (360-facilities.dissemination.radar_rotation) * 10 + 500; + facilities.dissemination.opening_angle_start = oa_start < 0 ? oa_start + 3600 : oa_start; + facilities.dissemination.opening_angle_start = oa_start > 3600 ? oa_start - 3600 : oa_start; + facilities.dissemination.opening_angle_end = oa_end > 3600 ? oa_end - 3600 : oa_end; + facilities.dissemination.opening_angle_end = oa_end < 0 ? oa_end + 3600 : oa_end; facilities.dissemination.int_radar = malloc(strlen(config->facilities.cpm.radar_interface)+1); strcpy(facilities.dissemination.int_radar,config->facilities.cpm.radar_interface); diff --git a/src/cpm.c b/src/cpm.c index 306bd9f..72b7c95 100644 --- a/src/cpm.c +++ b/src/cpm.c @@ -551,8 +551,8 @@ static int mk_cpm(uint8_t *bdr_oer, uint32_t *bdr_len, uint8_t *fdi_oer, uint32_ cpm_tx->cpm.cpmParameters.sensorInformationContainer->list.array[0]->type = SensorType_radar; cpm_tx->cpm.cpmParameters.sensorInformationContainer->list.array[0]->detectionArea.present = DetectionArea_PR_stationarySensorRadial; cpm_tx->cpm.cpmParameters.sensorInformationContainer->list.array[0]->detectionArea.choice.stationarySensorRadial.range = 3400; - cpm_tx->cpm.cpmParameters.sensorInformationContainer->list.array[0]->detectionArea.choice.stationarySensorRadial.stationaryHorizontalOpeningAngleStart = ROAD_ANGLE * 10 - 500; - cpm_tx->cpm.cpmParameters.sensorInformationContainer->list.array[0]->detectionArea.choice.stationarySensorRadial.stationaryHorizontalOpeningAngleEnd = ROAD_ANGLE * 10 + 500; + cpm_tx->cpm.cpmParameters.sensorInformationContainer->list.array[0]->detectionArea.choice.stationarySensorRadial.stationaryHorizontalOpeningAngleStart = facilities.dissemination.opening_angle_start; + cpm_tx->cpm.cpmParameters.sensorInformationContainer->list.array[0]->detectionArea.choice.stationarySensorRadial.stationaryHorizontalOpeningAngleEnd = facilities.dissemination.opening_angle_end; cpm_tx->cpm.cpmParameters.sensorInformationContainer->list.array[0]->detectionArea.choice.stationarySensorRadial.verticalOpeningAngleStart = calloc(1, sizeof(CartesianAngleValue_t)); (*cpm_tx->cpm.cpmParameters.sensorInformationContainer->list.array[0]->detectionArea.choice.stationarySensorRadial.verticalOpeningAngleStart) = 1730; cpm_tx->cpm.cpmParameters.sensorInformationContainer->list.array[0]->detectionArea.choice.stationarySensorRadial.verticalOpeningAngleEnd = calloc(1, sizeof(CartesianAngleValue_t)); diff --git a/src/cpm.h b/src/cpm.h index 417cdec..4201c1f 100644 --- a/src/cpm.h +++ b/src/cpm.h @@ -14,7 +14,6 @@ #define READ_BUFFER_SIZE 1024 // Buffer for Serial and Ethernet read function (Used in cp_service) #define NOF_OBJECTS 127 // Number of Object UMRR-0C -#define ROAD_ANGLE 120 #define MESSAGE_ID 14 #define PROTOCOL_VERSION 1 #define RADAR_PORT "55555" // Destination port from the radar @@ -138,6 +137,8 @@ typedef struct /* Position of the radar (Value from toml) */ int64_t radar_rotation; + int16_t opening_angle_start; + int16_t opening_angle_end; } dissemination_t;