Radar IP and Interface are now in the toml file

This commit is contained in:
Marco 2021-05-26 17:09:30 +01:00
parent 64f9b91035
commit f08c25812f
3 changed files with 40 additions and 21 deletions

View File

@ -252,6 +252,8 @@ int facilities_config(void* facilities_s) {
facilities->dissemination->tmc_connect = config->facilities.cpm.tmc_connected;
facilities->dissemination->latitude = config->management.gps.latitude;
facilities->dissemination->longitude = config->management.gps.longitude;
facilities->dissemination->int_radar = config->facilities.cpm.radar_interface;
facilities->dissemination->ip_radar = config->facilities.cpm.radar_ip;

View File

@ -66,11 +66,11 @@ bool waitingIncomingConnection(void){
bool interface_connection(char* radar_ip,char* radar_port, facilities_t* facilities){
bool interface_connection(char* radar_port, facilities_t* facilities){
if(facilities->dissemination->tmc_connect == false){
// 1 - Create socket
// Create socket
s_socket.i32_socket = socket(AF_INET, SOCK_STREAM, 0);
if(s_socket.i32_socket < 0){
@ -78,10 +78,10 @@ bool interface_connection(char* radar_ip,char* radar_port, facilities_t* facilit
return false;
}
// 2 - Bind it to server address and port
// Bind it to server address and port
bzero(&s_socket.s_server, sizeof(s_socket.s_server));
s_socket.s_server.sin_family = AF_INET;
s_socket.s_server.sin_addr.s_addr = inet_addr(radar_ip);
s_socket.s_server.sin_addr.s_addr = inet_addr(facilities->dissemination->ip_radar);
s_socket.s_server.sin_port = htons(atoi(radar_port));
if(bind(s_socket.i32_socket, (struct sockaddr*)&s_socket.s_server,sizeof(s_socket.s_server)) < 0){
@ -107,7 +107,7 @@ bool interface_connection(char* radar_ip,char* radar_port, facilities_t* facilit
bzero(&raw_socket.sll, sizeof(raw_socket.sll));
bzero(&raw_socket.ifr, sizeof(raw_socket.ifr));
strncpy((char *)raw_socket.ifr.ifr_name, INTERFACE_RADAR, IFNAMSIZ);
strncpy((char *)raw_socket.ifr.ifr_name, facilities->dissemination->int_radar, IFNAMSIZ);
if((ioctl(raw_socket.raw_fd, SIOCGIFINDEX, &raw_socket.ifr)) == -1){
syslog_err("Error getting interface index");
return false;
@ -539,20 +539,18 @@ void dissemination_reset_timer(dissemination_t* dissemination, it2s_tender_epv_t
void *cp_service(void *fc){
/* Variables */
int i32_recv_bytes;
u_int8_t au8_readBuffer[READ_BUFFER_SIZE];
bool is_radar_connected;
u_int8_t au8_readTcp[READ_BUFFER_SIZE];
facilities_t *facilities = (facilities_t *) fc;
uint8_t bdr_oer[2048];
uint8_t fdi_oer[2048];
bdr_oer[0] = 4; //Facilities
fdi_oer[0] = 4;
BTPDataRequest_t *bdr = calloc(1, sizeof(BTPDataRequest_t));
FacilitiesDataIndication_t *fdi = calloc(1, sizeof(FacilitiesDataIndication_t));
@ -581,15 +579,14 @@ void *cp_service(void *fc){
*bdr->gnSecurityProfile = 1;
}
is_radar_connected = interface_connection(RADAR_IP,RADAR_PORT,facilities); // Create Radar listening socket
is_radar_connected = interface_connection(RADAR_PORT,facilities); // Create Radar listening socket
/*--- Fill mandatory Facilities Data Indication parameters ---*/
fdi->itsMessageType = ItsMessageType_cpm;
fdi->data.buf = malloc(1500);
struct timespec* systemtime;
systemtime = (struct timespec*)malloc(sizeof(struct timespec));
if (systemtime == NULL) {
@ -614,12 +611,33 @@ void *cp_service(void *fc){
if (dissemination_check(facilities->dissemination, &facilities->epv) && facilities->dissemination->active){
if(is_radar_connected){
if(i32_recv_bytes <= 0){
syslog_debug("No data received from radar ...");
is_radar_connected = false;
continue;
}
int j = 0;
int temp_data = ((int)(au8_readBuffer[12])) >> 4;
for(int i = temp_data;i < READ_BUFFER_SIZE; i++){
au8_readBuffer[j] = au8_readBuffer[i];
j++;
}
temp_data = ((int)(au8_readBuffer[0])) & 0x0f;
j = 0;
for(int i = temp_data;i < READ_BUFFER_SIZE; i++){
au8_readBuffer[j] = au8_readBuffer[i];
j++;
}
if(i32_recv_bytes < 0){
syslog_debug("No data received from radar ...");
break;
}
/* Information parsing */
parse_input(au8_readBuffer,i32_recv_bytes);

View File

@ -17,9 +17,6 @@
#define ROAD_ANGLE 120
#define MESSAGE_ID 14
#define PROTOCOL_VERSION 1
#define INTERFACE_RADAR "enp3s0"
#define RADAR_IP "192.168.11.1" // ITS-S interface connected to the radar
#define RADAR_PORT "55555" // Destination port from the radar
@ -120,6 +117,8 @@ typedef struct
bool active;
bool tmc_connect;
char* int_radar;
char* ip_radar;
pthread_mutex_t lock;