Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
alex037yang
OpenXG-RAN
Commits
d2a5b4ef
Commit
d2a5b4ef
authored
Sep 18, 2018
by
lfarizav
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Channel update for multiple RRUS
parent
4a3f5ec4
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
90 additions
and
72 deletions
+90
-72
openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
...air1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
+2
-2
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
+29
-25
openair1/PHY/LTE_TRANSPORT/initial_sync.c
openair1/PHY/LTE_TRANSPORT/initial_sync.c
+7
-2
openair1/PHY/MODULATION/slot_fep.c
openair1/PHY/MODULATION/slot_fep.c
+3
-3
openair1/PHY/TOOLS/lte_phy_scope.c
openair1/PHY/TOOLS/lte_phy_scope.c
+4
-2
openair1/SCHED/phy_procedures_lte_common.c
openair1/SCHED/phy_procedures_lte_common.c
+1
-0
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+1
-1
openair2/RRC/LITE/rrc_UE.c
openair2/RRC/LITE/rrc_UE.c
+2
-1
targets/SIMU/USER/channel_sim.c
targets/SIMU/USER/channel_sim.c
+17
-15
targets/SIMU/USER/init_lte.c
targets/SIMU/USER/init_lte.c
+1
-1
targets/SIMU/USER/oaisim.c
targets/SIMU/USER/oaisim.c
+23
-20
No files found.
openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
View file @
d2a5b4ef
...
...
@@ -45,7 +45,7 @@ int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *ue,
// unsigned int n;
// int i;
int
**
dl_ch_estimates
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates
[
0
];
int
**
dl_ch_estimates
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates
[
eNB_id
];
int
**
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
rxdataF
;
ch_offset
=
(
l
*
(
ue
->
frame_parms
.
ofdm_symbol_size
));
...
...
@@ -788,7 +788,7 @@ int lte_dl_mbsfn_channel_estimation_freq(PHY_VARS_UE *ue,
// unsigned int n;
// int i;
int
**
dl_ch_estimates
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
0
];
int
**
dl_ch_estimates
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
];
int
**
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
;
ch_offset
=
(
l
*
(
ue
->
frame_parms
.
ofdm_symbol_size
));
...
...
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
View file @
d2a5b4ef
...
...
@@ -840,24 +840,26 @@ void lte_ue_measurements(PHY_VARS_UE *ue,
}
//eNB_id
eNB_id
=
0
;
if
(
ue
->
transmission_mode
[
0
]
==
4
||
ue
->
transmission_mode
[
0
]
==
3
){
for
(
eNB_id
=
0
;
eNB_id
<
ue
->
n_connected_eNB
;
eNB_id
++
){
if
(
ue
->
transmission_mode
[
eNB_id
]
==
4
||
ue
->
transmission_mode
[
eNB_id
]
==
3
){
if
(
rank_adaptation
==
1
)
rank_tm3_tm4
=
rank_estimation_tm3_tm4
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
0
][
4
],
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
2
][
4
],
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
1
][
4
],
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
3
][
4
],
rank_tm3_tm4
=
rank_estimation_tm3_tm4
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
0
][
4
],
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
2
][
4
],
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
1
][
4
],
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
3
][
4
],
N_RB_DL
);
else
rank_tm3_tm4
=
1
;
#ifdef DEBUG_RANK_EST
printf
(
"rank tm3 or tm4 %d
\n
"
,
rank_tm3_tm4
);
printf
(
"rank tm3 or tm4 %d
\n
"
,
rank_tm3_tm4
);
#endif
}
}
if
(
ue
->
transmission_mode
[
eNB_id
]
!=
4
&&
ue
->
transmission_mode
[
eNB_id
]
!=
3
)
if
(
ue
->
transmission_mode
[
eNB_id
]
!=
4
&&
ue
->
transmission_mode
[
eNB_id
]
!=
3
)
ue
->
measurements
.
rank
[
eNB_id
]
=
0
;
else
else
ue
->
measurements
.
rank
[
eNB_id
]
=
rank_tm3_tm4
;
}
// printf ("tx mode %d\n", ue->transmission_mode[eNB_id]);
// printf ("rank %d\n", ue->PHY_measurements.rank[eNB_id]);
...
...
@@ -1179,11 +1181,12 @@ void lte_ue_measurements_freq(PHY_VARS_UE *ue,
}
// signal measurements
printf
(
"lte_ue_measurements_freq: ue->n_connected_eNB %d
\n
"
,
ue
->
n_connected_eNB
);
for
(
eNB_id
=
0
;
eNB_id
<
ue
->
n_connected_eNB
;
eNB_id
++
)
{
for
(
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
for
(
aatx
=
0
;
aatx
<
frame_parms
->
nb_antenna_ports_eNB
;
aatx
++
)
{
ue
->
measurements
.
rx_spatial_power
[
eNB_id
][
aatx
][
aarx
]
=
(
signal_energy_nodc
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][(
aatx
<<
1
)
+
aarx
][
0
],
(
signal_energy_nodc
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][(
aatx
<<
1
)
+
aarx
][
0
],
(
N_RB_DL
*
12
)));
//- ue->measurements.n0_power[aarx];
...
...
@@ -1211,19 +1214,20 @@ void lte_ue_measurements_freq(PHY_VARS_UE *ue,
}
//eNB_id
eNB_id
=
0
;
if
(
ue
->
transmission_mode
[
0
]
==
4
||
ue
->
transmission_mode
[
0
]
==
3
){
for
(
eNB_id
=
0
;
eNB_id
<
ue
->
n_connected_eNB
;
eNB_id
++
){
if
(
ue
->
transmission_mode
[
eNB_id
]
==
4
||
ue
->
transmission_mode
[
eNB_id
]
==
3
){
if
(
rank_adaptation
==
1
)
rank_tm3_tm4
=
rank_estimation_tm3_tm4
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
0
][
4
],
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
2
][
4
],
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
1
][
4
],
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
3
][
4
],
rank_tm3_tm4
=
rank_estimation_tm3_tm4
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
0
][
4
],
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
2
][
4
],
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
1
][
4
],
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
3
][
4
],
N_RB_DL
);
else
rank_tm3_tm4
=
1
;
#ifdef DEBUG_RANK_EST
printf
(
"rank tm3 or tm4 %d
\n
"
,
rank_tm3_tm4
);
printf
(
"rank tm3 or tm4 %d
\n
"
,
rank_tm3_tm4
);
#endif
}
}
if
(
ue
->
transmission_mode
[
eNB_id
]
!=
4
&&
ue
->
transmission_mode
[
eNB_id
]
!=
3
)
ue
->
measurements
.
rank
[
eNB_id
]
=
0
;
...
...
@@ -1231,7 +1235,7 @@ void lte_ue_measurements_freq(PHY_VARS_UE *ue,
ue
->
measurements
.
rank
[
eNB_id
]
=
rank_tm3_tm4
;
// printf ("tx mode %d\n", ue->transmission_mode[eNB_id]);
// printf ("rank %d\n", ue->PHY_measurements.rank[eNB_id]);
}
// filter to remove jitter
if
(
ue
->
init_averaging
==
0
)
{
for
(
eNB_id
=
0
;
eNB_id
<
ue
->
n_connected_eNB
;
eNB_id
++
)
...
...
@@ -1276,8 +1280,8 @@ void lte_ue_measurements_freq(PHY_VARS_UE *ue,
// cqi/pmi information
for
(
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
dl_ch0
=
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
aarx
][
4
];
dl_ch1
=
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
2
+
aarx
][
4
];
dl_ch0
=
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
aarx
][
4
];
dl_ch1
=
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
2
+
aarx
][
4
];
for
(
subband
=
0
;
subband
<
nb_subbands
;
subband
++
)
{
...
...
@@ -1332,13 +1336,13 @@ void lte_ue_measurements_freq(PHY_VARS_UE *ue,
#if defined(__x86_64__) || defined(__i386__)
__m128i
pmi128_re
,
pmi128_im
,
mmtmpPMI0
,
mmtmpPMI1
/* ,mmtmpPMI2,mmtmpPMI3 */
;
dl_ch0_128
=
(
__m128i
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
aarx
][
4
];
dl_ch1_128
=
(
__m128i
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
2
+
aarx
][
4
];
dl_ch0_128
=
(
__m128i
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
aarx
][
4
];
dl_ch1_128
=
(
__m128i
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
2
+
aarx
][
4
];
#elif defined(__arm__)
int32x4_t
pmi128_re
,
pmi128_im
,
mmtmpPMI0
,
mmtmpPMI1
,
mmtmpPMI0b
,
mmtmpPMI1b
;
dl_ch0_128
=
(
int16x8_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
aarx
][
4
];
dl_ch1_128
=
(
int16x8_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
2
+
aarx
][
4
];
dl_ch0_128
=
(
int16x8_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
aarx
][
4
];
dl_ch1_128
=
(
int16x8_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
2
+
aarx
][
4
];
#endif
for
(
subband
=
0
;
subband
<
nb_subbands
;
subband
++
)
{
...
...
@@ -1432,7 +1436,7 @@ void lte_ue_measurements_freq(PHY_VARS_UE *ue,
else
{
// cqi information only for mode 1
for
(
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
dl_ch0
=
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
aarx
][
4
];
dl_ch0
=
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
aarx
][
4
];
for
(
subband
=
0
;
subband
<
7
;
subband
++
)
{
...
...
openair1/PHY/LTE_TRANSPORT/initial_sync.c
View file @
d2a5b4ef
...
...
@@ -454,7 +454,7 @@ int pbch_detection_freq(PHY_VARS_UE *ue, runmode_t mode)
for
(
int
i
=
0
;
i
<
RX_NB_TH
;
i
++
)
{
ue
->
proc
.
proc_rxtx
[
i
].
frame_rx
=
(((
ue
->
pbch_vars
[
ue
->
common_vars
.
eNb_id
]
->
decoded_output
[
2
]
&
3
)
<<
6
)
+
(
ue
->
pbch_vars
[
ue
->
common_vars
.
eNb_id
]
->
decoded_output
[
1
]
>>
2
))
<<
2
;
ue
->
proc
.
proc_rxtx
[
i
].
frame_rx
=
(((
ue
->
pbch_vars
[
ue
->
common_vars
.
eNb_id
]
->
decoded_output
[
2
]
&
3
)
<<
6
)
+
(
ue
->
pbch_vars
[
ue
->
common_vars
.
eNb_id
]
->
decoded_output
[
1
]
>>
2
))
<<
2
;
//
ue->proc.proc_rxtx[i].frame_rx = (((ue->pbch_vars[ue->common_vars.eNb_id]->decoded_output[2]&3)<<6) + (ue->pbch_vars[ue->common_vars.eNb_id]->decoded_output[1]>>2))<<2;
#ifndef USER_MODE
// one frame delay
...
...
@@ -888,7 +888,7 @@ int initial_sync_freq(PHY_VARS_UE *ue, runmode_t mode)
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
ue
->
frame_parms
;
int
ret
=-
1
;
int
aarx
,
rx_power
=
0
;
printf
(
"initial_synch_freq:
id %d
\n
"
,
ue
->
Mod
_id
);
printf
(
"initial_synch_freq:
UE %d, eNB %d
\n
"
,
ue
->
Mod_id
,
ue
->
common_vars
.
eNb
_id
);
/*#ifdef OAI_USRP
__m128i *rxdata128;
#endif*/
...
...
@@ -909,7 +909,9 @@ int initial_sync_freq(PHY_VARS_UE *ue, runmode_t mode)
frame_parms
->
nushift
=
frame_parms
->
Nid_cell
%
6
;
// lte-gold
lte_gold
(
frame_parms
,
ue
->
lte_gold_table
[
0
],
frame_parms
->
Nid_cell
);
printf
(
"binitial_synch [UE%d]->[eNB%d]: pbch_detection_freq returns %d
\n
"
,
ue
->
Mod_id
,
ue
->
common_vars
.
eNb_id
,
ret
);
ret
=
pbch_detection_freq
(
ue
,
mode
);
printf
(
"ainitial_synch [UE%d]->[eNB%d]: pbch_detection_freq returns %d
\n
"
,
ue
->
Mod_id
,
ue
->
common_vars
.
eNb_id
,
ret
);
//init_frame_parms(frame_parms,1);
//printf("dumping enb frame params\n");
//dump_frame_parms(&PHY_vars_eNB_g[0][0]->frame_parms);
...
...
@@ -920,9 +922,12 @@ int initial_sync_freq(PHY_VARS_UE *ue, runmode_t mode)
frame_parms
->
frame_type
=
PHY_vars_eNB_g
[
ue
->
common_vars
.
eNb_id
][
0
]
->
frame_parms
.
frame_type
;
frame_parms
->
N_RB_DL
=
PHY_vars_eNB_g
[
ue
->
common_vars
.
eNb_id
][
0
]
->
frame_parms
.
N_RB_DL
;
init_frame_parms
(
frame_parms
,
1
);
frame_parms
->
Nid_cell
=
PHY_vars_eNB_g
[
ue
->
common_vars
.
eNb_id
][
0
]
->
frame_parms
.
Nid_cell
;
frame_parms
->
nushift
=
frame_parms
->
Nid_cell
%
6
;
lte_gold
(
frame_parms
,
ue
->
lte_gold_table
[
0
],
frame_parms
->
Nid_cell
);
printf
(
"binitial_synch, second chance[UE%d]->[eNB%d]: pbch_detection_freq returns %d
\n
"
,
ue
->
Mod_id
,
ue
->
common_vars
.
eNb_id
,
ret
);
ret
=
pbch_detection_freq
(
ue
,
mode
);
printf
(
"ainitial_synch, second chance[UE%d]->[eNB%d]: pbch_detection_freq returns %d
\n
"
,
ue
->
Mod_id
,
ue
->
common_vars
.
eNb_id
,
ret
);
}
if
(
ret
==
0
)
{
// fake first PBCH found so indicate sync to higher layers and configure frame parameters
...
...
openair1/PHY/MODULATION/slot_fep.c
View file @
d2a5b4ef
...
...
@@ -224,7 +224,7 @@ int slot_fep(PHY_VARS_UE *ue,
start_meas
(
&
ue
->
dlsch_freq_offset_estimation_stats
);
#endif
lte_est_freq_offset
(
common_vars
->
common_vars_rx_data_per_thread
[
current_thread_id
[
Ns
>>
1
]].
dl_ch_estimates
[
0
],
lte_est_freq_offset
(
common_vars
->
common_vars_rx_data_per_thread
[
current_thread_id
[
Ns
>>
1
]].
dl_ch_estimates
[
eNB_id
],
frame_parms
,
l
,
&
common_vars
->
freq_offset
,
...
...
@@ -440,7 +440,7 @@ int slot_fep_freq(PHY_VARS_UE *ue,
start_meas
(
&
ue
->
dlsch_freq_offset_estimation_stats
);
#endif
lte_est_freq_offset
(
common_vars
->
common_vars_rx_data_per_thread
[
(
Ns
>>
1
)
&
0x1
].
dl_ch_estimates
[
0
],
lte_est_freq_offset
(
common_vars
->
common_vars_rx_data_per_thread
[
current_thread_id
[
Ns
>>
1
]].
dl_ch_estimates
[
eNB_id
],
frame_parms
,
l
,
&
common_vars
->
freq_offset
,
...
...
@@ -662,7 +662,7 @@ int front_end_chanEst(PHY_VARS_UE *ue,
if
(
l
==
(
4
-
frame_parms
->
Ncp
))
{
start_meas
(
&
ue
->
dlsch_freq_offset_estimation_stats
);
lte_est_freq_offset
(
common_vars
->
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
&
0x1
].
dl_ch_estimates
[
0
],
lte_est_freq_offset
(
common_vars
->
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
&
0x1
].
dl_ch_estimates
[
eNB_id
],
frame_parms
,
l
,
&
common_vars
->
freq_offset
,
...
...
openair1/PHY/TOOLS/lte_phy_scope.c
View file @
d2a5b4ef
...
...
@@ -196,8 +196,10 @@ void phy_scope_eNB(FD_lte_phy_scope_enb *form,
chest_f_abs
=
(
float
*
)
calloc
(
nsymb_ce
*
nb_antennas_rx
*
nb_antennas_tx
,
sizeof
(
float
));
llr
=
(
float
*
)
calloc
(
coded_bits_per_codeword
,
sizeof
(
float
));
// init to zero
bit
=
malloc
(
coded_bits_per_codeword
*
sizeof
(
float
));
rxsig_t
=
(
int16_t
**
)
phy_vars_enb
->
common_vars
.
rxdata
[
eNB_id
];
if
(
phy_vars_ue
->
do_ofdm_mod
)
rxsig_t
=
(
int16_t
**
)
phy_vars_enb
->
common_vars
.
rxdataF
[
eNB_id
];
else
rxsig_t
=
(
int16_t
**
)
phy_vars_enb
->
common_vars
.
rxdata
[
eNB_id
];
//chest_t = (int16_t**) phy_vars_enb->pusch_vars[UE_id]->drs_ch_estimates_time[eNB_id];
chest_t
=
(
int16_t
**
)
phy_vars_enb
->
srs_vars
[
UE_id
].
srs_ch_estimates
[
eNB_id
];
chest_f
=
(
int16_t
**
)
phy_vars_enb
->
pusch_vars
[
UE_id
]
->
drs_ch_estimates
[
eNB_id
];
...
...
openair1/SCHED/phy_procedures_lte_common.c
View file @
d2a5b4ef
...
...
@@ -1089,6 +1089,7 @@ int8_t find_ue(uint16_t rnti, PHY_VARS_eNB *eNB)
uint8_t
i
;
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
printf
(
"eNB->dlsch[i] %d, eNB->dlsch[i][0] %d, eNB->dlsch[i][0]->rnti %d, rnti %d
\n
"
,
eNB
->
dlsch
[
i
],
eNB
->
dlsch
[
i
][
0
],
eNB
->
dlsch
[
i
][
0
]
->
rnti
,
rnti
);
if
((
eNB
->
dlsch
[
i
])
&&
(
eNB
->
dlsch
[
i
][
0
])
&&
(
eNB
->
dlsch
[
i
][
0
]
->
rnti
==
rnti
))
{
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
d2a5b4ef
...
...
@@ -2892,7 +2892,7 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc){
if
(
eNB
->
node_function
==
NGFI_RRU_IF4p5
)
{
/// **** in TDD during DL send_IF4 of ULTICK to RCC **** ///
LOG_D
(
PHY
,
"send_IF4p5 (phy_procedures_eNB_common_RX): frame %d, subframe %d
\n
"
,
proc
->
frame_rx
,
proc
->
subframe_rx
);
LOG_D
(
PHY
,
"send_IF4p5 (phy_procedures_eNB_common_RX): frame %d, subframe %d
, eNB %d
\n
"
,
proc
->
frame_rx
,
proc
->
subframe_rx
,
eNB
->
Mod_id
);
send_IF4p5
(
eNB
,
proc
->
frame_rx
,
proc
->
subframe_rx
,
IF4p5_PULTICK
,
0
);
}
return
;
...
...
openair2/RRC/LITE/rrc_UE.c
View file @
d2a5b4ef
...
...
@@ -4451,8 +4451,9 @@ NAS_KENB_REFRESH_REQ,NAS_CELL_SELECTION_REQ,RRC_STATE_INACTIVE,RRC_STATE_IDLE,RR
{
UE_rrc_inst
[
ue_mod_id
].
plmnID
=
NAS_CELL_SELECTION_REQ
(
msg_p
).
plmnID
;
UE_rrc_inst
[
ue_mod_id
].
rat
=
NAS_CELL_SELECTION_REQ
(
msg_p
).
rat
;
LOG_D
(
RRC
,
"[UE %d] Save cell selection criterion MCC %X%X%X MNC %X%X%X
\n
"
,
LOG_D
(
RRC
,
"[UE %d]
[eNB %d]
Save cell selection criterion MCC %X%X%X MNC %X%X%X
\n
"
,
ue_mod_id
,
PHY_vars_UE_g
[
ue_mod_id
][
0
]
->
common_vars
.
eNb_id
,
UE_rrc_inst
[
ue_mod_id
].
plmnID
.
MCCdigit1
,
UE_rrc_inst
[
ue_mod_id
].
plmnID
.
MCCdigit2
,
UE_rrc_inst
[
ue_mod_id
].
plmnID
.
MCCdigit3
,
...
...
targets/SIMU/USER/channel_sim.c
View file @
d2a5b4ef
...
...
@@ -238,7 +238,6 @@ void do_DL_sig(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][MAX_N
}
else
{
//abstraction_flag
pthread_mutex_lock
(
&
eNB_output_mutex
[
UE_id
]);
if
(
eNB_output_mask
[
UE_id
]
==
0
)
{
// This is the first eNodeB for this UE, clear the buffer
...
...
@@ -353,7 +352,6 @@ void do_DL_sig(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][MAX_N
eNB_output_mask
[
UE_id
]
|=
(
1
<<
eNB_id
);
if
(
eNB_output_mask
[
UE_id
]
==
(
1
<<
NB_eNB_INST
)
-
1
)
{
eNB_output_mask
[
UE_id
]
=
0
;
}
double
*
r_re_p
[
2
]
=
{
r_re_DL
[
UE_id
][
0
],
r_re_DL
[
UE_id
][
1
]};
double
*
r_im_p
[
2
]
=
{
r_im_DL
[
UE_id
][
0
],
r_im_DL
[
UE_id
][
1
]};
...
...
@@ -386,7 +384,7 @@ void do_DL_sig(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][MAX_N
UNUSED_VARIABLE
(
rx_pwr
);
#endif
//
} // eNB_output_mask
}
// eNB_output_mask
pthread_mutex_unlock
(
&
eNB_output_mutex
[
UE_id
]);
}
// eNB_id
...
...
@@ -409,7 +407,7 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
count=0;
}
count++;*/
//
int32_t att_eNB_id=-1;
int32_t
att_eNB_id
=-
1
;
int32_t
**
txdataF
,
**
rxdataF
;
uint8_t
eNB_id
=
0
;
...
...
@@ -482,22 +480,23 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
}
else
{
//abstraction_flag = 0
printf
(
"UE association: (UE%d->eNB%d)
\n
"
,
UE_id
,
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
common_vars
.
eNb_id
);
eNB_id
=
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
common_vars
.
eNb_id
;
pthread_mutex_lock
(
&
eNB_output_mutex
[
UE_id
]);
//printf("eNB_output_mask[UE_id] is %d\n",eNB_output_mask[UE_id]);
if
(
eNB_output_mask
[
UE_id
]
==
0
)
{
// This is the first eNodeB for this UE, clear the buffer
//
if (eNB_output_mask[UE_id] == 0) { // This is the first eNodeB for this UE, clear the buffer
for
(
aa
=
0
;
aa
<
nb_antennas_rx
;
aa
++
)
{
memset
((
void
*
)
r_re_DL_f
[
UE_id
][
aa
],
0
,(
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_tti
)
*
sizeof
(
double
));
memset
((
void
*
)
r_im_DL_f
[
UE_id
][
aa
],
0
,(
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_tti
)
*
sizeof
(
double
));
//memset(&PHY_vars_UE_g[UE_id][CC_id]->common_vars.common_vars_rx_data_per_thread[subframe&0x1].rxdataF[aa][subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti],0,(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti)*sizeof(int));
}
}
//
}
pthread_mutex_unlock
(
&
eNB_output_mutex
[
UE_id
]);
for
(
eNB_id
=
0
;
eNB_id
<
NB_eNB_INST
;
eNB_id
++
)
{
//
for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) {
txdataF
=
PHY_vars_eNB_g
[
eNB_id
][
CC_id
]
->
common_vars
.
txdataF
[
0
];
sf_offset
=
subframe
*
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_tti
;
//for (int idx=0;idx<10;idx++) printf("dumping DL raw subframe %d,
eNB_id %d: txdataF[%d] = (%d,%d)\n", subframe
,eNB_id, idx, ((short*)&txdataF[0][sf_offset+idx])[0], ((short*)&txdataF[0][sf_offset+idx])[1]);
//for (int idx=0;idx<10;idx++) printf("dumping DL raw subframe %d,
UE %d, eNB_id %d: txdataF[%d] = (%d,%d)\n", subframe,UE_id
,eNB_id, idx, ((short*)&txdataF[0][sf_offset+idx])[0], ((short*)&txdataF[0][sf_offset+idx])[1]);
#ifdef __AVX2__
...
...
@@ -685,10 +684,10 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
}
}
eNB_output_mask
[
UE_id
]
|=
(
1
<<
eNB_id
);
/*
eNB_output_mask[UE_id] |= (1<<eNB_id);
if (eNB_output_mask[UE_id] == (1<<NB_eNB_INST)-1) {
eNB_output_mask[UE_id]=0;
}
}
*/
#ifdef __AVX2__
float
*
r_re_p_f
[
2
]
=
{
r_re_DL_f
[
UE_id
][
0
],
r_re_DL_f
[
UE_id
][
1
]};
float
*
r_im_p_f
[
2
]
=
{
r_im_DL_f
[
UE_id
][
0
],
r_im_DL_f
[
UE_id
][
1
]};
...
...
@@ -736,7 +735,7 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
#endif
//for (int idx=0;idx<10;idx++) printf("dumping DL raw subframe %d: r_re_p_f[%d] = (%e,%e)\n", subframe, idx, r_re_p_f[0][idx], r_im_p_f[0][idx]);
//for (int idx=0;idx<10;idx++) printf("dumping DL raw subframe %d,
eNB_id %d: rxdataF0[%d] = (%d,%d)\n", subframe
,eNB_id, idx, ((short*)&rxdataF[0][sf_offset+idx])[0], ((short*)&rxdataF[0][sf_offset+idx])[1]);
//for (int idx=0;idx<10;idx++) printf("dumping DL raw subframe %d,
UE %d, eNB_id %d: rxdataF0[%d] = (%d,%d)\n", subframe,UE_id
,eNB_id, idx, ((short*)&rxdataF[0][sf_offset+idx])[0], ((short*)&rxdataF[0][sf_offset+idx])[1]);
//print_meas (&eNB2UE[eNB_id][UE_id][CC_id]->DL_adc,"[DL][adc]", &eNB2UE[eNB_id][UE_id][CC_id]->DL_adc, &eNB2UE[eNB_id][UE_id][CC_id]->DL_adc);
//for (int idx=0;idx<10;idx++) printf("dumping DL raw rx subframe %d: rxdataF[%d] = (%d,%d)=====>%s,txdataF[%d] = (%d,%d), r_re_im_p_f(%e,%e)\n", subframe, idx, ((short*)&rxdataF[0][sf_offset+idx])[0], ((short*)&rxdataF[0][sf_offset+idx])[1],(((((r_re_p_f[0][idx]<0)&&(((short*)&rxdataF[0][sf_offset+idx])[0]<0))||((r_re_p_f[0][idx]>=0)&&(((short*)&rxdataF[0][sf_offset+idx])[0]>=0))))&&(((r_im_p_f[0][idx]<0)&&(((short*)&rxdataF[0][sf_offset+idx])[1]<0))||((r_im_p_f[0][idx]>=0)&&(((short*)&rxdataF[0][sf_offset+idx])[1]>=0))))?"OK":"ERROR",idx,((short*)&txdataF[0][sf_offset+idx])[0],((short*)&txdataF[0][sf_offset+idx])[1],r_re_p_f[0][idx],r_im_p_f[0][idx]);
/*if (UE_id==0)
...
...
@@ -755,7 +754,7 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
#endif
//} // eNB_output_mask
pthread_mutex_unlock
(
&
eNB_output_mutex
[
UE_id
]);
}
// eNB_id
//
} // eNB_id
}
}
...
...
@@ -1092,6 +1091,8 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][
// Compute RX signal for eNB = eNB_id
for
(
UE_id
=
0
;
UE_id
<
NB_UE_INST
;
UE_id
++
)
{
//printf("ue->generate_ul_signal[%d] %d\n",eNB_id,PHY_vars_UE_g[UE_id][CC_id]->generate_ul_signal[eNB_id]);
if
(
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
common_vars
.
eNb_id
!=
eNB_id
)
continue
;
txdataF
=
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
common_vars
.
txdataF
;
AssertFatal
(
txdataF
!=
NULL
,
"txdataF is null
\n
"
);
sf_offset
=
subframe
*
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_tti
;
...
...
@@ -1415,11 +1416,12 @@ void do_UL_sig_freq_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB
//for (int i=0;i<NB_UE_INST;i++)
// Compute RX signal for eNB = eNB_id
for
(
UE_id
=
0
;
UE_id
<
NB_UE_INST
;
UE_id
++
)
{
if
(
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
common_vars
.
eNb_id
!=
eNB_id
)
continue
;
lte_frame_type_t
frame_type
=
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
frame_parms
.
frame_type
;
prach_ConfigIndex
=
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
frame_parms
.
prach_config_common
.
prach_ConfigInfo
.
prach_ConfigIndex
;
prach_fmt
=
get_prach_fmt
(
prach_ConfigIndex
,
frame_type
);
n_ra_prb
=
get_prach_prb_offset
(
frame_parms
,
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
prach_resources
[
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
common_vars
.
eNb
_id
]
->
ra_TDD_map_index
,
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
proc
.
proc_rxtx
[
subframe
&
0x1
].
frame_tx
);
n_ra_prb
=
get_prach_prb_offset
(
frame_parms
,
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
prach_resources
[
eNB
_id
]
->
ra_TDD_map_index
,
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
proc
.
proc_rxtx
[
subframe
&
0x1
].
frame_tx
);
tx_prachF
=
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
prach_vars
[
eNB_id
]
->
prachF
;
//write_output("txprachF.m","prach_txF", PHY_vars_UE_g[0][0]->prach_vars[0]->prachF,frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*12,1,1);
...
...
targets/SIMU/USER/init_lte.c
View file @
d2a5b4ef
...
...
@@ -275,9 +275,9 @@ void init_lte_vars(LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs],
PHY_vars_eNB_g
[
eNB_id
]
=
(
PHY_VARS_eNB
**
)
malloc
(
MAX_NUM_CCs
*
sizeof
(
PHY_VARS_eNB
*
));
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
PHY_vars_eNB_g
[
eNB_id
][
CC_id
]
=
init_lte_eNB
(
frame_parms
[
CC_id
],
eNB_id
,
Nid_cell
,
eNodeB_3GPP
,
abstraction_flag
);
PHY_vars_eNB_g
[
eNB_id
][
CC_id
]
->
Mod_id
=
eNB_id
;
PHY_vars_eNB_g
[
eNB_id
][
CC_id
]
->
CC_id
=
CC_id
;
PHY_vars_eNB_g
[
eNB_id
][
CC_id
]
=
init_lte_eNB
(
frame_parms
[
CC_id
],
eNB_id
,
Nid_cell
,
eNodeB_3GPP
,
abstraction_flag
);
}
}
...
...
targets/SIMU/USER/oaisim.c
View file @
d2a5b4ef
...
...
@@ -507,26 +507,28 @@ l2l1_task (void *args_p)
xargv
[
0
]
=
xname
;
fl_initialize
(
&
xargc
,
xargv
,
NULL
,
0
,
0
);
eNB_inst
=
0
;
for
(
UE_inst
=
0
;
UE_inst
<
NB_UE_INST
;
UE_inst
++
)
{
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
// DL scope at UEs
form_ue
[
CC_id
][
UE_inst
]
=
create_lte_phy_scope_ue
();
sprintf
(
title
,
"LTE DL SCOPE eNB %d to UE %d CC_id %d"
,
eNB_inst
,
UE_inst
,
CC_id
);
fl_show_form
(
form_ue
[
CC_id
][
UE_inst
]
->
lte_phy_scope_ue
,
FL_PLACE_HOTSPOT
,
FL_FULLBORDER
,
title
);
if
(
PHY_vars_UE_g
[
UE_inst
][
CC_id
]
->
use_ia_receiver
==
1
)
{
fl_set_button
(
form_ue
[
CC_id
][
UE_inst
]
->
button_0
,
1
);
fl_set_object_label
(
form_ue
[
CC_id
][
UE_inst
]
->
button_0
,
"IA Receiver ON"
);
fl_set_object_color
(
form_ue
[
CC_id
][
UE_inst
]
->
button_0
,
FL_GREEN
,
FL_GREEN
);
}
for
(
eNB_inst
=
0
;
eNB_inst
<
NB_eNB_INST
;
eNB_inst
++
)
{
for
(
UE_inst
=
0
;
UE_inst
<
NB_UE_INST
;
UE_inst
++
)
{
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
// DL scope at UEs
form_ue
[
CC_id
][
UE_inst
]
=
create_lte_phy_scope_ue
();
sprintf
(
title
,
"LTE DL SCOPE eNB %d to UE %d CC_id %d"
,
eNB_inst
,
UE_inst
,
CC_id
);
fl_show_form
(
form_ue
[
CC_id
][
UE_inst
]
->
lte_phy_scope_ue
,
FL_PLACE_HOTSPOT
,
FL_FULLBORDER
,
title
);
if
(
PHY_vars_UE_g
[
UE_inst
][
CC_id
]
->
use_ia_receiver
==
1
)
{
fl_set_button
(
form_ue
[
CC_id
][
UE_inst
]
->
button_0
,
1
);
fl_set_object_label
(
form_ue
[
CC_id
][
UE_inst
]
->
button_0
,
"IA Receiver ON"
);
fl_set_object_color
(
form_ue
[
CC_id
][
UE_inst
]
->
button_0
,
FL_GREEN
,
FL_GREEN
);
}
}
// UL scope at eNB 0
form_enb
[
UE_inst
]
=
create_lte_phy_scope_enb
();
sprintf
(
title
,
"LTE UL SCOPE UE %d to eNB %d"
,
UE_inst
,
eNB_inst
);
fl_show_form
(
form_enb
[
UE_inst
]
->
lte_phy_scope_enb
,
FL_PLACE_HOTSPOT
,
FL_FULLBORDER
,
title
);
}
}
// UL scope at eNB 0
form_enb
[
UE_inst
]
=
create_lte_phy_scope_enb
();
sprintf
(
title
,
"LTE UL SCOPE UE %d to eNB %d"
,
UE_inst
,
eNB_inst
);
fl_show_form
(
form_enb
[
UE_inst
]
->
lte_phy_scope_enb
,
FL_PLACE_HOTSPOT
,
FL_FULLBORDER
,
title
);
}
}
}
...
...
@@ -1130,7 +1132,7 @@ l2l1_task (void *args_p)
//#ifdef XFORMS
if
(
xforms
==
1
)
{
eNB_inst
=
0
;
for
(
eNB_inst
=
0
;
eNB_inst
<
NB_eNB_INST
;
eNB_inst
++
)
{
for
(
UE_inst
=
0
;
UE_inst
<
NB_UE_INST
;
UE_inst
++
)
{
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
phy_scope_UE
(
form_ue
[
CC_id
][
UE_inst
],
...
...
@@ -1147,6 +1149,7 @@ l2l1_task (void *args_p)
UE_inst
);
}
}
}
//#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment