CPM thread control

This commit is contained in:
Marco 2021-04-20 15:11:03 +01:00
parent 180fd4766b
commit c369f434d3
2 changed files with 37 additions and 36 deletions

View File

@ -509,16 +509,29 @@ void dissemination_reset_timer(dissemination_t* dissemination){
void *cp_service(void *fc){ void *cp_service(void *fc){
//roadRotationSin = sin(((config->applications.its_center.rotation + 90.0) * PI) / 180);
//roadRotationCos = cos(((config->applications.its_center.rotation + 90.0) * PI) / 180);
roadRotationSin = 0.8660; // Default values for A3 Configuration
roadRotationCos = -0.5000; // Default values for A3 configuration /* Variables */
int i32_recv_bytes;
u_int8_t au8_readBuffer[READ_BUFFER_SIZE];
//void* message_data = malloc(1500);
uint8_t bdr_oer[2048];
bdr_oer[0] = 4; //Facilities
int is_radar_connected_error;
socklen_t len = sizeof(error);
facilities_t *facilities = (facilities_t *) fc; facilities_t *facilities = (facilities_t *) fc;
BTPDataRequest_t *bdr = calloc(1, sizeof(BTPDataRequest_t)); BTPDataRequest_t *bdr = calloc(1, sizeof(BTPDataRequest_t));
//roadRotationSin = sin(((config->applications.its_center.rotation + 90.0) * PI) / 180);
//roadRotationCos = cos(((config->applications.its_center.rotation + 90.0) * PI) / 180);
roadRotationSin = 0.8660; // Default values for A3 Configuration
roadRotationCos = -0.5000; // Default values for A3 configuration
/* Fill mandatory BTP Data Request parameters */ /* Fill mandatory BTP Data Request parameters */
bdr->gnDestinationAddress.buf = malloc(6); bdr->gnDestinationAddress.buf = malloc(6);
@ -541,16 +554,6 @@ void *cp_service(void *fc){
*bdr->gnSecurityProfile = 1; *bdr->gnSecurityProfile = 1;
} }
/* Not needed
read_config("/etc/it2s/itss.toml"); // To get the parameters of the broker
signal(SIGINT, interruption_handler); // In case Ctrl+C is sent to the process interruption_handler will be executed
setup_mec_server_connection();
init_tiles();
*/
interface_connection(RADAR_IP,RADAR_PORT); // Create Radar listening socket interface_connection(RADAR_IP,RADAR_PORT); // Create Radar listening socket
struct timespec* systemtime; struct timespec* systemtime;
systemtime = (struct timespec*)malloc(sizeof(struct timespec)); systemtime = (struct timespec*)malloc(sizeof(struct timespec));
@ -560,23 +563,19 @@ void *cp_service(void *fc){
} }
/* Variables */
int i32_recv_bytes;
u_int8_t au8_readBuffer[READ_BUFFER_SIZE];
//void* message_data = malloc(1500);
uint8_t bdr_oer[2048];
bdr_oer[0] = 4; //Facilities
while(!facilities->exit){ while(!facilities->exit){
usleep(1000*50); usleep(1000*50);
if(getsockopt(s_socket.i32_client, &) != 0)
syslog_err("--------------------Radar not connected-------------------");
if (dissemination_check(facilities->dissemination) && facilities->dissemination->active){ if (dissemination_check(facilities->dissemination) && facilities->dissemination->active){
/* Receive Data from radar interface */ /* Receive Data from radar interface */
CPM_t* cpm_tx = calloc(1, sizeof(CPM_t)); CPM_t* cpm_tx = calloc(1, sizeof(CPM_t));
i32_recv_bytes = recv(s_socket.i32_client, &au8_readBuffer, READ_BUFFER_SIZE, 0); //recv(socket,buffer,size,flags) i32_recv_bytes = recv(s_socket.i32_client, &au8_readBuffer, READ_BUFFER_SIZE, 0); //recv(socket,buffer,size,flags)
if(i32_recv_bytes < 0){ if(i32_recv_bytes < 0){
syslog_debug("No data received from radar ..."); syslog_debug("No data received from radar ...");
break; break;

View File

@ -414,6 +414,7 @@ int main() {
pthread_create(&facilities.infrastructure_service, NULL, infrastructure_service, (void*) &facilities); pthread_create(&facilities.infrastructure_service, NULL, infrastructure_service, (void*) &facilities);
// CPM // CPM
if(facilities.dissemination->active)
pthread_create(&facilities.cp_service, NULL, cp_service, (void*) &facilities); pthread_create(&facilities.cp_service, NULL, cp_service, (void*) &facilities);
uint8_t buffer[PACKET_MAX_LEN]; uint8_t buffer[PACKET_MAX_LEN];
@ -468,6 +469,7 @@ int main() {
pthread_join(facilities.ca_service, NULL); pthread_join(facilities.ca_service, NULL);
pthread_join(facilities.den_service, NULL); pthread_join(facilities.den_service, NULL);
pthread_join(facilities.infrastructure_service, NULL); pthread_join(facilities.infrastructure_service, NULL);
if(facilities.dissemination->active)
pthread_join(facilities.cp_service, NULL); pthread_join(facilities.cp_service, NULL);
return 0; return 0;