int main(int argc, char **argv) { unsigned int i; /* parse input arguments */ get_options(argc, argv); /* initialize logger and signal analyzer */ debug_init(); /* */ set_latency_target(); /* make a graceful exit when ctrl-c is pressed */ signal(SIGSEGV, signal_handler); signal(SIGINT, signal_handler); /* create modules based on input arguments */ if (eNB_flag==1) { enb_array=(rrh_module_t*)malloc(num_eNB_mod*sizeof(rrh_module_t)); for(i=0; i<num_eNB_mod; i++) { enb_array[i]=new_module(i);//enb_array[i]=new_module(i, get_RF_interfaces(&hardware_target)); config_BBU_mod(&enb_array[i],RT_flag,NRT_flag); LOG_I(RRH,"[eNB %d] module(s) created (out of %u) \n",i,num_eNB_mod); } } if (UE_flag==1) { ue_array=(rrh_module_t*)malloc(num_UE_mod*sizeof(rrh_module_t)); for(i=0; i<num_UE_mod; i++) { ue_array[i]=new_module(i); config_UE_mod(&ue_array[i],RT_flag,NRT_flag); LOG_I(RRH,"[UE %d] module(s) created (out of %u)\n",i, num_UE_mod); } } printf("TYPE <CTRL-C> TO TERMINATE\n"); while (rrh_exit==0) sleep(1); return EXIT_SUCCESS; }
static int configure_display(vout_display_t *vd, const vout_display_cfg_t *cfg, const video_format_t *fmt) { vout_display_sys_t *sys = vd->sys; vout_display_place_t place; MMAL_DISPLAYREGION_T display_region; MMAL_STATUS_T status; if (!cfg && !fmt) return -EINVAL; if (fmt) { sys->input->format->es->video.par.num = fmt->i_sar_num; sys->input->format->es->video.par.den = fmt->i_sar_den; status = mmal_port_format_commit(sys->input); if (status != MMAL_SUCCESS) { msg_Err(vd, "Failed to commit format for input port %s (status=%"PRIx32" %s)", sys->input->name, status, mmal_status_to_string(status)); return -EINVAL; } } else { fmt = &vd->source; } if (!cfg) cfg = vd->cfg; vout_display_PlacePicture(&place, fmt, cfg, false); display_region.hdr.id = MMAL_PARAMETER_DISPLAYREGION; display_region.hdr.size = sizeof(MMAL_DISPLAYREGION_T); display_region.fullscreen = MMAL_FALSE; display_region.src_rect.x = fmt->i_x_offset; display_region.src_rect.y = fmt->i_y_offset; display_region.src_rect.width = fmt->i_visible_width; display_region.src_rect.height = fmt->i_visible_height; display_region.dest_rect.x = place.x; display_region.dest_rect.y = place.y; display_region.dest_rect.width = place.width; display_region.dest_rect.height = place.height; display_region.layer = sys->layer; display_region.set = MMAL_DISPLAY_SET_FULLSCREEN | MMAL_DISPLAY_SET_SRC_RECT | MMAL_DISPLAY_SET_DEST_RECT | MMAL_DISPLAY_SET_LAYER; status = mmal_port_parameter_set(sys->input, &display_region.hdr); if (status != MMAL_SUCCESS) { msg_Err(vd, "Failed to set display region (status=%"PRIx32" %s)", status, mmal_status_to_string(status)); return -EINVAL; } show_background(vd, cfg->is_fullscreen); sys->adjust_refresh_rate = var_InheritBool(vd, MMAL_ADJUST_REFRESHRATE_NAME); sys->native_interlaced = var_InheritBool(vd, MMAL_NATIVE_INTERLACED); if (sys->adjust_refresh_rate) { adjust_refresh_rate(vd, fmt); set_latency_target(vd, true); } return 0; }
int main(int argc, char **argv) { unsigned int i; /* parse input arguments */ get_options(argc, argv); /* initialize logger and signal analyzer */ debug_init(); /* */ set_latency_target(); /*make a graceful exit when ctrl-c is pressed */ signal(SIGSEGV, signal_handler); signal(SIGINT, signal_handler); /*probe RF front end devices interfaced to RRH */ // get_RFinterfaces(); #ifdef ETHERNET int error_code_timer; pthread_t main_timer_proc_thread; LOG_I(RRH,"Creating timer thread with rt period %d ns.\n",rt_period); /* setup the timer to generate an interrupt: -for the first time in (sample_per_packet/sample_rate) ns -and then every (sample_per_packet/sample_rate) ns */ timerspec.it_value.tv_sec = rt_period/1000000000; timerspec.it_value.tv_nsec = rt_period%1000000000; timerspec.it_interval.tv_sec = rt_period/1000000000; timerspec.it_interval.tv_nsec = rt_period%1000000000; //#ifndef LOWLATENCY pthread_attr_t attr_timer; struct sched_param sched_param_timer; pthread_attr_init(&attr_timer); sched_param_timer.sched_priority = sched_get_priority_max(SCHED_FIFO); pthread_attr_setschedparam(&attr_timer,&sched_param_timer); pthread_attr_setschedpolicy(&attr_timer,SCHED_FIFO); pthread_mutex_init(&timer_mutex,NULL); error_code_timer = pthread_create(&main_timer_proc_thread, &attr_timer, timer_proc, (void *)&timerspec); LOG_I(RRH,"[SCHED] FIFO scheduling applied to timer thread \n"); /*#else error_code_timer = pthread_create(&main_timer_proc_thread, NULL, timer_proc, (void *)&timerspec); LOG_I(RRH,"[SCHED] deadline scheduling applied to timer thread \n"); #endif*/ if (error_code_timer) { LOG_E(RRH,"Error while creating timer proc thread\n"); exit(-1); } #endif /* create modules based on input arguments */ if (eNB_flag==1){ enb_array=(rrh_module_t*)malloc(num_eNB_mod*sizeof(rrh_module_t)); for(i=0;i<num_eNB_mod;i++){ enb_array[i]=new_module(i);//enb_array[i]=new_module(i, get_RF_interfaces(&hardware_target)); create_eNB_trx_threads(&enb_array[i],RT_flag,NRT_flag); LOG_I(RRH,"[eNB %d] module(s) created (out of %u) \n",i,num_eNB_mod); } } if (UE_flag==1){ ue_array=(rrh_module_t*)malloc(num_UE_mod*sizeof(rrh_module_t)); for(i=0;i<num_UE_mod;i++){ ue_array[i]=new_module(i); create_UE_trx_threads(&ue_array[i],RT_flag,NRT_flag); LOG_I(RRH,"[UE %d] module(s) created (out of %u)\n",i, num_UE_mod); } } printf("TYPE <CTRL-C> TO TERMINATE\n"); while (rrh_exit==0) sleep(1); //close sockets return EXIT_SUCCESS; }