intmbox_bounds[20]={8,16,24,30,38,46,54,60,68,76,84,90,98,106,114,120,128,136,144,0};///boundaries of slots in terms ob mbox counter rounded up to even numbers
t_slot_idx=next_slot;// this slot is ready to send
r_slot_idx++;
if(r_slot_idx==20)
{
r_slot_idx=0;
frame++;
}
}// end of while
format_printf(1,"\n[eNB thread] Received oai_exit signal. Ends. Ran %d frames. num_slot_missed: %d\n",frame,num_slot_missed);
#ifdef HARD_RT
rt_make_soft_real_time();
#endif
// clean task
#ifdef RTAI
rt_task_delete(task);
#endif
rt_printk("Task deleted. returning\n");
return0;
}
/* This is the main UE thread. Initially it is doing a periodic get_frame. One synchronized it gets woken up by the kernel driver using the RTAI message mechanism (rt_send and rt_receive). */
stream_cmd.stream_now=false;//When true, the device will begin streaming ASAP. When false, the device will begin streaming at a time specified by time_spec.
stream_cmd.num_samps=0;
rx_timestamp=T_start+HW_offset;//Device timestamp and time of send sample
stream_cmd.stream_now=false;//When true, the device will begin streaming ASAP. When false, the device will begin streaming at a time specified by time_spec.
stream_cmd.num_samps=0;
rx_timestamp=T_start+HW_offset;//Device timestamp and time of send sample