Merge remote-tracking branch 'origin/basic-simulator-fixes' into develop_integration_2018_w35
This commit is contained in:
@@ -346,6 +346,13 @@ uint8_t generate_dci_top(uint8_t num_pdcch_symbols,
|
|||||||
y[0] = &yseq0[0];
|
y[0] = &yseq0[0];
|
||||||
y[1] = &yseq1[0];
|
y[1] = &yseq1[0];
|
||||||
|
|
||||||
|
#if BASIC_SIMULATOR
|
||||||
|
/* this should be the normal case
|
||||||
|
* but it has to be validated for all the various cases
|
||||||
|
* so let's just do it for the basic simulator
|
||||||
|
*/
|
||||||
|
memset(e, 2, DCI_BITS_MAX);
|
||||||
|
#else
|
||||||
#if 1
|
#if 1
|
||||||
// reset all bits to <NIL>, here we set <NIL> elements as 2
|
// reset all bits to <NIL>, here we set <NIL> elements as 2
|
||||||
// memset(e, 2, DCI_BITS_MAX);
|
// memset(e, 2, DCI_BITS_MAX);
|
||||||
@@ -358,6 +365,7 @@ uint8_t generate_dci_top(uint8_t num_pdcch_symbols,
|
|||||||
* (not sure about this, to be checked somehow)
|
* (not sure about this, to be checked somehow)
|
||||||
*/
|
*/
|
||||||
//memset(e, 0, DCI_BITS_MAX);
|
//memset(e, 0, DCI_BITS_MAX);
|
||||||
|
#endif /* BASIC_SIMULATOR */
|
||||||
|
|
||||||
e_ptr = e;
|
e_ptr = e;
|
||||||
|
|
||||||
|
|||||||
@@ -253,7 +253,7 @@ int tcp_bridge_ue_first_read(openair0_device *device, openair0_timestamp *timest
|
|||||||
tcp_bridge_state_t *t = device->priv;
|
tcp_bridge_state_t *t = device->priv;
|
||||||
|
|
||||||
uint32_t b[t->samples_per_subframe * 12];
|
uint32_t b[t->samples_per_subframe * 12];
|
||||||
memset(b, 0, nsamps * 4);
|
memset(b, 0, t->samples_per_subframe * 12 * 4);
|
||||||
int n = fullwrite(t->sock, b, t->samples_per_subframe * 12 * 4);
|
int n = fullwrite(t->sock, b, t->samples_per_subframe * 12 * 4);
|
||||||
if (n != t->samples_per_subframe * 12 * 4) {
|
if (n != t->samples_per_subframe * 12 * 4) {
|
||||||
printf("tcp_bridge: write error ret %d error %s\n", n, strerror(errno));
|
printf("tcp_bridge: write error ret %d error %s\n", n, strerror(errno));
|
||||||
|
|||||||
+15
-19
@@ -446,7 +446,6 @@ static void *UE_thread_synch(void *arg)
|
|||||||
int freq_offset=0;
|
int freq_offset=0;
|
||||||
char threadname[128];
|
char threadname[128];
|
||||||
|
|
||||||
UE->is_synchronized = 0;
|
|
||||||
printf("UE_thread_sync in with PHY_vars_UE %p\n",arg);
|
printf("UE_thread_sync in with PHY_vars_UE %p\n",arg);
|
||||||
|
|
||||||
cpu_set_t cpuset;
|
cpu_set_t cpuset;
|
||||||
@@ -522,11 +521,6 @@ static void *UE_thread_synch(void *arg)
|
|||||||
|
|
||||||
printf("Started device, unlocked sync_mutex (UE_sync_thread)\n");
|
printf("Started device, unlocked sync_mutex (UE_sync_thread)\n");
|
||||||
|
|
||||||
if (UE->rfdevice.trx_start_func(&UE->rfdevice) != 0 ) {
|
|
||||||
LOG_E(HW,"Could not start the device\n");
|
|
||||||
oai_exit=1;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (oai_exit==0) {
|
while (oai_exit==0) {
|
||||||
AssertFatal ( 0== pthread_mutex_lock(&UE->proc.mutex_synch), "");
|
AssertFatal ( 0== pthread_mutex_lock(&UE->proc.mutex_synch), "");
|
||||||
while (UE->proc.instance_cnt_synch < 0)
|
while (UE->proc.instance_cnt_synch < 0)
|
||||||
@@ -755,7 +749,6 @@ static void *UE_thread_rxn_txnp4(void *arg) {
|
|||||||
UE_rxtx_proc_t *proc = rtd->proc;
|
UE_rxtx_proc_t *proc = rtd->proc;
|
||||||
PHY_VARS_UE *UE = rtd->UE;
|
PHY_VARS_UE *UE = rtd->UE;
|
||||||
|
|
||||||
proc->instance_cnt_rxtx=-1;
|
|
||||||
proc->subframe_rx=proc->sub_frame_start;
|
proc->subframe_rx=proc->sub_frame_start;
|
||||||
|
|
||||||
char threadname[256];
|
char threadname[256];
|
||||||
@@ -1457,20 +1450,25 @@ void *UE_thread(void *arg) {
|
|||||||
int sub_frame=-1;
|
int sub_frame=-1;
|
||||||
//int cumulated_shift=0;
|
//int cumulated_shift=0;
|
||||||
|
|
||||||
|
if (UE->rfdevice.trx_start_func(&UE->rfdevice) != 0 ) {
|
||||||
|
LOG_E(HW,"Could not start the device\n");
|
||||||
|
oai_exit=1;
|
||||||
|
}
|
||||||
|
|
||||||
while (!oai_exit) {
|
while (!oai_exit) {
|
||||||
|
#if BASIC_SIMULATOR
|
||||||
|
while (!(UE->proc.instance_cnt_synch < 0)) {
|
||||||
|
printf("ue sync not ready\n");
|
||||||
|
usleep(500*1000);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
AssertFatal ( 0== pthread_mutex_lock(&UE->proc.mutex_synch), "");
|
AssertFatal ( 0== pthread_mutex_lock(&UE->proc.mutex_synch), "");
|
||||||
int instance_cnt_synch = UE->proc.instance_cnt_synch;
|
int instance_cnt_synch = UE->proc.instance_cnt_synch;
|
||||||
int is_synchronized = UE->is_synchronized;
|
int is_synchronized = UE->is_synchronized;
|
||||||
AssertFatal ( 0== pthread_mutex_unlock(&UE->proc.mutex_synch), "");
|
AssertFatal ( 0== pthread_mutex_unlock(&UE->proc.mutex_synch), "");
|
||||||
|
|
||||||
if (is_synchronized == 0) {
|
if (is_synchronized == 0) {
|
||||||
#if BASIC_SIMULATOR
|
|
||||||
while (!((instance_cnt_synch = UE->proc.instance_cnt_synch) < 0)) {
|
|
||||||
printf("ue sync not ready\n");
|
|
||||||
usleep(500*1000);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (instance_cnt_synch < 0) { // we can invoke the synch
|
if (instance_cnt_synch < 0) { // we can invoke the synch
|
||||||
// grab 10 ms of signal and wakeup synch thread
|
// grab 10 ms of signal and wakeup synch thread
|
||||||
for (int i=0; i<UE->frame_parms.nb_antennas_rx; i++)
|
for (int i=0; i<UE->frame_parms.nb_antennas_rx; i++)
|
||||||
@@ -1661,12 +1659,7 @@ void *UE_thread(void *arg) {
|
|||||||
|
|
||||||
proc->instance_cnt_rxtx++;
|
proc->instance_cnt_rxtx++;
|
||||||
LOG_D( PHY, "[SCHED][UE %d] UE RX instance_cnt_rxtx %d subframe %d !!\n", UE->Mod_id, proc->instance_cnt_rxtx,proc->subframe_rx);
|
LOG_D( PHY, "[SCHED][UE %d] UE RX instance_cnt_rxtx %d subframe %d !!\n", UE->Mod_id, proc->instance_cnt_rxtx,proc->subframe_rx);
|
||||||
if (proc->instance_cnt_rxtx == 0) {
|
if (proc->instance_cnt_rxtx != 0) {
|
||||||
if (pthread_cond_signal(&proc->cond_rxtx) != 0) {
|
|
||||||
LOG_E( PHY, "[SCHED][UE %d] ERROR pthread_cond_signal for UE RX thread\n", UE->Mod_id);
|
|
||||||
exit_fun("nothing to add");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
LOG_E( PHY, "[SCHED][UE %d] UE RX thread busy (IC %d)!!\n", UE->Mod_id, proc->instance_cnt_rxtx);
|
LOG_E( PHY, "[SCHED][UE %d] UE RX thread busy (IC %d)!!\n", UE->Mod_id, proc->instance_cnt_rxtx);
|
||||||
if (proc->instance_cnt_rxtx > 2)
|
if (proc->instance_cnt_rxtx > 2)
|
||||||
exit_fun("instance_cnt_rxtx > 2");
|
exit_fun("instance_cnt_rxtx > 2");
|
||||||
@@ -1717,6 +1710,8 @@ void init_UE_threads(int inst) {
|
|||||||
|
|
||||||
pthread_mutex_init(&UE->proc.mutex_synch,NULL);
|
pthread_mutex_init(&UE->proc.mutex_synch,NULL);
|
||||||
pthread_cond_init(&UE->proc.cond_synch,NULL);
|
pthread_cond_init(&UE->proc.cond_synch,NULL);
|
||||||
|
UE->proc.instance_cnt_synch = -1;
|
||||||
|
UE->is_synchronized = 0;
|
||||||
|
|
||||||
// the threads are not yet active, therefore access is allowed without locking
|
// the threads are not yet active, therefore access is allowed without locking
|
||||||
int nb_threads=RX_NB_TH;
|
int nb_threads=RX_NB_TH;
|
||||||
@@ -1728,6 +1723,7 @@ void init_UE_threads(int inst) {
|
|||||||
|
|
||||||
pthread_mutex_init(&UE->proc.proc_rxtx[i].mutex_rxtx,NULL);
|
pthread_mutex_init(&UE->proc.proc_rxtx[i].mutex_rxtx,NULL);
|
||||||
pthread_cond_init(&UE->proc.proc_rxtx[i].cond_rxtx,NULL);
|
pthread_cond_init(&UE->proc.proc_rxtx[i].cond_rxtx,NULL);
|
||||||
|
UE->proc.proc_rxtx[i].instance_cnt_rxtx = -1;
|
||||||
UE->proc.proc_rxtx[i].sub_frame_start=i;
|
UE->proc.proc_rxtx[i].sub_frame_start=i;
|
||||||
UE->proc.proc_rxtx[i].sub_frame_step=nb_threads;
|
UE->proc.proc_rxtx[i].sub_frame_step=nb_threads;
|
||||||
printf("Init_UE_threads rtd %d proc %d nb_threads %d i %d\n",rtd->proc->sub_frame_start, UE->proc.proc_rxtx[i].sub_frame_start,nb_threads, i);
|
printf("Init_UE_threads rtd %d proc %d nb_threads %d i %d\n",rtd->proc->sub_frame_start, UE->proc.proc_rxtx[i].sub_frame_start,nb_threads, i);
|
||||||
|
|||||||
Reference in New Issue
Block a user