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
wangjie
OpenXG-RAN
Commits
4fe2d6d7
Commit
4fe2d6d7
authored
Jan 04, 2017
by
Wilson W.K. Thong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix noise power calculation and downlink CQI reporting
see issue #177
parent
3bf8768d
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
178 additions
and
49 deletions
+178
-49
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
+80
-17
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+25
-22
openair1/PHY/LTE_TRANSPORT/initial_sync.c
openair1/PHY/LTE_TRANSPORT/initial_sync.c
+1
-1
openair1/PHY/LTE_TRANSPORT/proto.h
openair1/PHY/LTE_TRANSPORT/proto.h
+27
-0
openair1/PHY/LTE_TRANSPORT/sss.c
openair1/PHY/LTE_TRANSPORT/sss.c
+27
-4
openair1/PHY/LTE_TRANSPORT/uci_tools.c
openair1/PHY/LTE_TRANSPORT/uci_tools.c
+1
-0
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
+2
-0
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+9
-5
openair2/UTIL/LOG/vcd_signal_dumper.c
openair2/UTIL/LOG/vcd_signal_dumper.c
+3
-0
openair2/UTIL/LOG/vcd_signal_dumper.h
openair2/UTIL/LOG/vcd_signal_dumper.h
+3
-0
No files found.
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
View file @
4fe2d6d7
...
...
@@ -32,7 +32,8 @@
#define k1 ((long long int) 1000)
#define k2 ((long long int) (1024-k1))
//#define DEBUG_MEAS
//#define DEBUG_MEAS_RRC
//#define DEBUG_MEAS_UE
#ifdef USER_MODE
void
print_shorts
(
char
*
s
,
short
*
x
)
...
...
@@ -165,23 +166,30 @@ int8_t set_RSRQ_filtered(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_index,float rs
}
void
ue_rrc_measurements
(
PHY_VARS_UE
*
ue
,
uint8_t
subframe
,
uint8_t
abstraction_flag
)
uint8_t
slot
,
uint8_t
abstraction_flag
)
{
int
aarx
,
rb
;
uint8_t
subframe
=
slot
>>
1
;
int
aarx
,
rb
,
n
;
int16_t
*
rxF
,
*
rxF_pss
,
*
rxF_sss
;
uint16_t
Nid_cell
=
ue
->
frame_parms
.
Nid_cell
;
uint8_t
eNB_offset
,
nu
,
l
,
nushift
,
k
;
uint16_t
off
;
uint8_t
isPss
;
// indicate if this is a slot for extracting PSS
uint8_t
isSss
;
// indicate if this is a slot for extracting SSS
int32_t
pss_ext
[
4
][
72
];
// contain the extracted 6*12 REs for mapping the PSS
int32_t
sss_ext
[
4
][
72
];
// contain the extracted 6*12 REs for mapping the SSS
int32_t
(
*
xss_ext
)[
72
];
// point to either pss_ext or sss_ext for common calculation
int16_t
*
re
,
*
im
;
// real and imag part of each 32-bit xss_ext[][] value
for
(
eNB_offset
=
0
;
eNB_offset
<
1
+
ue
->
measurements
.
n_adj_cells
;
eNB_offset
++
)
{
if
(
eNB_offset
==
0
)
{
ue
->
measurements
.
rssi
=
0
;
ue
->
measurements
.
n0_power_tot
=
0
;
//
ue->measurements.n0_power_tot = 0;
if
(
abstraction_flag
==
0
)
{
if
((
ue
->
frame_parms
.
frame_type
==
FDD
)
&&
...
...
@@ -225,16 +233,66 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
// ue->measurements.n0_power[aarx] += (((int32_t)rxF_pss[-64]*rxF_pss[-64])+((int32_t)rxF_pss[-63]*rxF_pss[-63]));
// printf("pssm32 %d\n",ue->measurements.n0_power[aarx]);
ue
->
measurements
.
n0_power_dB
[
aarx
]
=
(
unsigned
short
)
dB_fixed
(
ue
->
measurements
.
n0_power
[
aarx
]
/
12
);
ue
->
measurements
.
n0_power_tot
+=
ue
->
measurements
.
n0_power
[
aarx
];
ue
->
measurements
.
n0_power_tot
/*+=*/
=
ue
->
measurements
.
n0_power
[
aarx
];
}
ue
->
measurements
.
n0_power_tot_dB
=
(
unsigned
short
)
dB_fixed
(
ue
->
measurements
.
n0_power_tot
/
(
12
*
aarx
));
ue
->
measurements
.
n0_power_tot_dBm
=
ue
->
measurements
.
n0_power_tot_dB
-
ue
->
rx_total_gain_dB
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
);
}
}
else
{
LOG_E
(
PHY
,
"Not yet implemented: noise power calculation when prefix length = EXTENDED
\n
"
);
}
}
else
if
((
ue
->
frame_parms
.
frame_type
==
TDD
)
&&
(
subframe
==
0
))
{
// TDD SSS, compute noise in DTX REs
else
if
((
ue
->
frame_parms
.
frame_type
==
TDD
)
&&
((
slot
==
2
)
||
(
slot
==
12
)
||
(
slot
==
1
)
||
(
slot
==
11
)))
{
// TDD PSS/SSS, compute noise in DTX REs // 2016-09-29 wilson fix incorrect noise power calculation
#if 1 // fixing REs extraction in noise power calculation
// check if this slot has a PSS or SSS sequence
if
((
slot
==
2
)
||
(
slot
==
12
))
{
isPss
=
1
;
}
else
{
isPss
=
0
;
}
if
((
slot
==
1
)
||
(
slot
==
11
))
{
isSss
=
1
;
}
else
{
isSss
=
0
;
}
if
(
isPss
)
{
pss_only_extract
(
ue
,
pss_ext
);
xss_ext
=
pss_ext
;
}
if
(
isSss
)
{
sss_only_extract
(
ue
,
sss_ext
);
xss_ext
=
sss_ext
;
}
// calculate noise power
int
num_tot
=
0
;
// number of REs totally used in calculating noise power
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
int
num_per_rx
=
0
;
// number of REs used in caluclaing noise power for this RX antenna
ue
->
measurements
.
n0_power
[
aarx
]
=
0
;
for
(
n
=
2
;
n
<
70
;
n
++
)
{
// skip the 2 REs next to PDSCH, i.e. n={0,1,70,71}
if
(
n
==
5
)
{
n
=
67
;}
re
=
(
int16_t
*
)(
&
(
xss_ext
[
aarx
][
n
]));
im
=
re
+
1
;
ue
->
measurements
.
n0_power
[
aarx
]
+=
(
*
re
)
*
(
*
re
)
+
(
*
im
)
*
(
*
im
);
num_per_rx
++
;
num_tot
++
;
}
ue
->
measurements
.
n0_power_dB
[
aarx
]
=
(
unsigned
short
)
dB_fixed
(
ue
->
measurements
.
n0_power
[
aarx
]
/
(
num_per_rx
));
ue
->
measurements
.
n0_power_tot
/*+=*/
=
ue
->
measurements
.
n0_power
[
aarx
];
}
ue
->
measurements
.
n0_power_tot_dB
=
(
unsigned
short
)
dB_fixed
(
ue
->
measurements
.
n0_power_tot
/
(
num_tot
));
ue
->
measurements
.
n0_power_tot_dBm
=
ue
->
measurements
.
n0_power_tot_dB
-
ue
->
rx_total_gain_dB
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
);
#else
if
(
ue
->
frame_parms
.
Ncp
==
NORMAL
)
{
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
...
...
@@ -263,8 +321,9 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
ue
->
measurements
.
n0_power_tot_dBm
=
ue
->
measurements
.
n0_power_tot_dB
-
ue
->
rx_total_gain_dB
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
);
}
}
}
#endif
}
}
}
// recompute nushift with eNB_offset corresponding to adjacent eNB on which to perform channel estimation
...
...
@@ -286,7 +345,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
for
(
l
=
0
,
nu
=
0
;
l
<=
(
4
-
ue
->
frame_parms
.
Ncp
);
l
+=
(
4
-
ue
->
frame_parms
.
Ncp
),
nu
=
3
)
{
k
=
(
nu
+
nushift
)
%
6
;
#ifdef DEBUG_MEAS
#ifdef DEBUG_MEAS
_RRC
LOG_I
(
PHY
,
"[UE %d] Frame %d subframe %d Doing ue_rrc_measurements rsrp/rssi (Nid_cell %d, nushift %d, eNB_offset %d, k %d, l %d)
\n
"
,
ue
->
Mod_id
,
ue
->
proc
.
proc_rxtx
[
subframe
&
1
].
frame_rx
,
subframe
,
Nid_cell
,
nushift
,
eNB_offset
,
k
,
l
);
#endif
...
...
@@ -364,7 +423,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
}
#ifdef DEBUG_MEAS
#ifdef DEBUG_MEAS
_RRC
// if (slot == 0) {
...
...
@@ -498,10 +557,14 @@ void lte_ue_measurements(PHY_VARS_UE *ue,
ue
->
measurements
.
wideband_cqi_tot
[
eNB_id
]
=
dB_fixed2
(
ue
->
measurements
.
rx_power_tot
[
eNB_id
],
ue
->
measurements
.
n0_power_tot
);
ue
->
measurements
.
wideband_cqi_avg
[
eNB_id
]
=
dB_fixed2
(
ue
->
measurements
.
rx_power_avg
[
eNB_id
],
ue
->
measurements
.
n0_power_avg
);
ue
->
measurements
.
rx_rssi_dBm
[
eNB_id
]
=
ue
->
measurements
.
rx_power_avg_dB
[
eNB_id
]
-
ue
->
rx_total_gain_dB
;
#ifdef DEBUG_MEAS
LOG_I
(
PHY
,
"[eNB %d] lte_ue_measurements: RSSI %d dBm, RSSI (digital) %d dB
\n
"
,
eNB_id
,
ue
->
measurements
.
rx_rssi_dBm
[
eNB_id
],
ue
->
measurements
.
rx_power_avg_dB
[
eNB_id
]);
#ifdef DEBUG_MEAS_UE
LOG_D
(
PHY
,
"[eNB %d] RSSI %d dBm, RSSI (digital) %d dB, WBandCQI %d dB, rxPwrAvg %d, n0PwrAvg %d
\n
"
,
eNB_id
,
ue
->
measurements
.
rx_rssi_dBm
[
eNB_id
],
ue
->
measurements
.
rx_power_avg_dB
[
eNB_id
],
ue
->
measurements
.
wideband_cqi_avg
[
eNB_id
],
ue
->
measurements
.
rx_power_avg
[
eNB_id
],
ue
->
measurements
.
n0_power_avg
);
#endif
}
...
...
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
4fe2d6d7
...
...
@@ -5866,36 +5866,38 @@ uint8_t sinr2cqi(double sinr,uint8_t trans_mode)
{
// int flag_LA=0;
uint8_t
retValue
=
0
;
if
(
flag_LA
==
0
)
{
// Ideal Channel Estimation
if
(
sinr
<=-
4
.
89
)
ret
urn
(
0
);
ret
Value
=
(
0
);
else
if
(
sinr
<
-
3
.
53
)
ret
urn
(
3
);
ret
Value
=
(
3
);
else
if
(
sinr
<=
-
1
.
93
)
ret
urn
(
4
);
ret
Value
=
(
4
);
else
if
(
sinr
<=
-
0
.
43
)
ret
urn
(
5
);
ret
Value
=
(
5
);
else
if
(
sinr
<=
1
.
11
)
ret
urn
(
6
);
ret
Value
=
(
6
);
else
if
(
sinr
<=
3
.
26
)
ret
urn
(
7
);
else
if
(
sinr
<=
5
)
ret
urn
(
8
);
else
if
(
sinr
<=
7
)
ret
urn
(
9
);
else
if
(
sinr
<=
9
)
ret
urn
(
10
);
else
if
(
sinr
<=
11
)
ret
urn
(
11
);
else
if
(
sinr
<=
13
)
ret
urn
(
12
);
ret
Value
=
(
7
);
else
if
(
sinr
<=
5
.
0
)
ret
Value
=
(
8
);
else
if
(
sinr
<=
7
.
0
)
ret
Value
=
(
9
);
else
if
(
sinr
<=
9
.
0
)
ret
Value
=
(
10
);
else
if
(
sinr
<=
11
.
0
)
ret
Value
=
(
11
);
else
if
(
sinr
<=
13
.
0
)
ret
Value
=
(
12
);
else
if
(
sinr
<=
15
.
5
)
ret
urn
(
13
);
ret
Value
=
(
13
);
else
if
(
sinr
<=
17
.
5
)
ret
urn
(
14
);
else
if
(
sinr
>
19
.
5
)
ret
urn
(
15
);
ret
Value
=
(
14
);
else
ret
Value
=
(
15
);
}
else
{
int
h
=
0
;
int
trans_mode_tmp
;
...
...
@@ -5909,11 +5911,12 @@ uint8_t sinr2cqi(double sinr,uint8_t trans_mode)
for
(
h
=
0
;
h
<
16
;
h
++
)
{
if
(
sinr
<=
sinr_to_cqi
[
trans_mode_tmp
][
h
])
ret
urn
(
h
);
ret
Value
=
(
h
);
}
}
return
(
0
);
LOG_D
(
PHY
,
"sinr=%f trans_mode=%d cqi=%d
\n
"
,
sinr
,
trans_mode
,
retValue
);
return
retValue
;
}
//uint32_t fill_subband_cqi(PHY_MEASUREMENTS *meas,uint8_t eNB_id) {
//
...
...
openair1/PHY/LTE_TRANSPORT/initial_sync.c
View file @
4fe2d6d7
...
...
@@ -88,7 +88,7 @@ int pbch_detection(PHY_VARS_UE *ue, runmode_t mode)
if
(
ue
->
frame_parms
.
frame_type
==
TDD
)
{
ue_rrc_measurements
(
ue
,
1
,
2
,
0
);
}
else
{
...
...
openair1/PHY/LTE_TRANSPORT/proto.h
View file @
4fe2d6d7
...
...
@@ -1194,6 +1194,33 @@ int32_t rx_pdcch(LTE_UE_COMMON *lte_ue_common_vars,
MIMO_mode_t
mimo_mode
,
uint32_t
high_speed_flag
,
uint8_t
is_secondary_ue
);
/*! \brief Extract PSS and SSS resource elements
@param phy_vars_ue Pointer to UE variables
@param[out] pss_ext contain the PSS signals after the extraction
@param[out] sss_ext contain the SSS signals after the extraction
@returns 0 on success
*/
int
pss_sss_extract
(
PHY_VARS_UE
*
phy_vars_ue
,
int32_t
pss_ext
[
4
][
72
],
int32_t
sss_ext
[
4
][
72
]);
/*! \brief Extract only PSS resource elements
@param phy_vars_ue Pointer to UE variables
@param[out] pss_ext contain the PSS signals after the extraction
@returns 0 on success
*/
int
pss_only_extract
(
PHY_VARS_UE
*
phy_vars_ue
,
int32_t
pss_ext
[
4
][
72
]);
/*! \brief Extract only SSS resource elements
@param phy_vars_ue Pointer to UE variables
@param[out] sss_ext contain the SSS signals after the extraction
@returns 0 on success
*/
int
sss_only_extract
(
PHY_VARS_UE
*
phy_vars_ue
,
int32_t
sss_ext
[
4
][
72
]);
/*! \brief Performs detection of SSS to find cell ID and other framing parameters (FDD/TDD, normal/extended prefix)
@param phy_vars_ue Pointer to UE variables
@param tot_metric Pointer to variable containing maximum metric under framing hypothesis (to be compared to other hypotheses
...
...
openair1/PHY/LTE_TRANSPORT/sss.c
View file @
4fe2d6d7
...
...
@@ -146,9 +146,10 @@ int pss_ch_est(PHY_VARS_UE *ue,
}
int
pss_sss_extract
(
PHY_VARS_UE
*
ue
,
int
_do_
pss_sss_extract
(
PHY_VARS_UE
*
ue
,
int32_t
pss_ext
[
4
][
72
],
int32_t
sss_ext
[
4
][
72
])
int32_t
sss_ext
[
4
][
72
],
uint8_t
doPss
,
uint8_t
doSss
)
// add flag to indicate extracting only PSS, only SSS, or both
{
...
...
@@ -191,8 +192,8 @@ int pss_sss_extract(PHY_VARS_UE *ue,
}
for
(
i
=
0
;
i
<
12
;
i
++
)
{
pss_rxF_ext
[
i
]
=
pss_rxF
[
i
];
sss_rxF_ext
[
i
]
=
sss_rxF
[
i
];
if
(
doPss
)
{
pss_rxF_ext
[
i
]
=
pss_rxF
[
i
];}
if
(
doSss
)
{
sss_rxF_ext
[
i
]
=
sss_rxF
[
i
];}
}
pss_rxF
+=
12
;
...
...
@@ -206,6 +207,28 @@ int pss_sss_extract(PHY_VARS_UE *ue,
return
(
0
);
}
int
pss_sss_extract
(
PHY_VARS_UE
*
phy_vars_ue
,
int32_t
pss_ext
[
4
][
72
],
int32_t
sss_ext
[
4
][
72
])
{
return
_do_pss_sss_extract
(
phy_vars_ue
,
pss_ext
,
sss_ext
,
1
/* doPss */
,
1
/* doSss */
);
}
int
pss_only_extract
(
PHY_VARS_UE
*
phy_vars_ue
,
int32_t
pss_ext
[
4
][
72
])
{
static
int32_t
dummy
[
4
][
72
];
return
_do_pss_sss_extract
(
phy_vars_ue
,
pss_ext
,
dummy
,
1
/* doPss */
,
0
/* doSss */
);
}
int
sss_only_extract
(
PHY_VARS_UE
*
phy_vars_ue
,
int32_t
sss_ext
[
4
][
72
])
{
static
int32_t
dummy
[
4
][
72
];
return
_do_pss_sss_extract
(
phy_vars_ue
,
dummy
,
sss_ext
,
0
/* doPss */
,
1
/* doSss */
);
}
int16_t
phase_re
[
7
]
=
{
16383
,
25101
,
30791
,
32767
,
30791
,
25101
,
16383
};
int16_t
phase_im
[
7
]
=
{
-
28378
,
-
21063
,
-
11208
,
0
,
11207
,
21062
,
28377
};
...
...
openair1/PHY/LTE_TRANSPORT/uci_tools.c
View file @
4fe2d6d7
...
...
@@ -581,6 +581,7 @@ void print_CQI(void *o,UCI_format_t uci_format,unsigned char eNB_id,int N_RB_DL)
switch
(
uci_format
)
{
case
wideband_cqi_rank1_2A
:
#ifdef DEBUG_UCI
LOG_D
(
PHY
,
"[PRINT CQI] flat_LA %d
\n
"
,
flag_LA
);
switch
(
N_RB_DL
)
{
case
6
:
LOG_I
(
PHY
,
"[PRINT CQI] wideband_cqi rank 1: eNB %d, cqi %d
\n
"
,
eNB_id
,
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
View file @
4fe2d6d7
...
...
@@ -260,6 +260,7 @@ uint32_t ulsch_encoding(uint8_t *a,
// fill CQI/PMI information
if
(
ulsch
->
O
>
0
)
{
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ULSCH_ENCODING_FILL_CQI
,
VCD_FUNCTION_IN
);
rnti
=
ue
->
pdcch_vars
[
eNB_id
]
->
crnti
;
fill_CQI
(
ulsch
,
meas
,
0
,
harq_pid
,
ue
->
frame_parms
.
N_RB_DL
,
rnti
,
tmode
,
ue
->
sinr_eff
);
...
...
@@ -271,6 +272,7 @@ uint32_t ulsch_encoding(uint8_t *a,
//LOG_I(PHY,"XXX saving pmi for DL %x\n",pmi2hex_2Ar1(((wideband_cqi_rank1_2A_5MHz *)ulsch->o)->pmi));
dlsch
[
0
]
->
pmi_alloc
=
((
wideband_cqi_rank1_2A_5MHz
*
)
ulsch
->
o
)
->
pmi
;
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ULSCH_ENCODING_FILL_CQI
,
VCD_FUNCTION_OUT
);
}
if
(
ulsch
->
O
<=
32
)
{
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
4fe2d6d7
...
...
@@ -2042,7 +2042,11 @@ void phy_procedures_UE_S_TX(PHY_VARS_UE *ue,uint8_t eNB_id,uint8_t abstraction_f
}
}
void
ue_measurement_procedures
(
uint16_t
l
,
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
runmode_t
mode
)
void
ue_measurement_procedures
(
uint16_t
l
,
// symbol index of each slot [0..6]
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint16_t
slot
,
// slot index of each radio frame [0..19]
uint8_t
abstraction_flag
,
runmode_t
mode
)
{
LTE_DL_FRAME_PARMS
*
frame_parms
=&
ue
->
frame_parms
;
...
...
@@ -2074,7 +2078,7 @@ void ue_measurement_procedures(uint16_t l, PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_RRC_MEASUREMENTS
,
VCD_FUNCTION_IN
);
ue_rrc_measurements
(
ue
,
s
ubframe_rx
,
s
lot
,
abstraction_flag
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_RRC_MEASUREMENTS
,
VCD_FUNCTION_OUT
);
...
...
@@ -3379,7 +3383,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
stop_meas
(
&
ue
->
ofdm_demod_stats
);
}
ue_measurement_procedures
(
l
-
1
,
ue
,
proc
,
eNB_id
,
abstraction_flag
,
mode
);
ue_measurement_procedures
(
l
-
1
,
ue
,
proc
,
eNB_id
,
(
subframe_rx
<<
1
),
abstraction_flag
,
mode
);
if
((
l
==
pilot1
)
||
((
pmch_flag
==
1
)
&
(
l
==
l2
)))
{
LOG_D
(
PHY
,
"[UE %d] Frame %d: Calling pdcch procedures (eNB %d)
\n
"
,
ue
->
Mod_id
,
frame_rx
,
eNB_id
);
...
...
@@ -3392,7 +3396,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
}
}
// for l=1..l2
ue_measurement_procedures
(
l
-
1
,
ue
,
proc
,
eNB_id
,
abstraction_flag
,
mode
);
ue_measurement_procedures
(
l
-
1
,
ue
,
proc
,
eNB_id
,
(
subframe_rx
<<
1
),
abstraction_flag
,
mode
);
// If this is PMCH, call procedures and return
if
(
pmch_flag
==
1
)
{
...
...
@@ -3483,7 +3487,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
stop_meas
(
&
ue
->
ofdm_demod_stats
);
}
ue_measurement_procedures
(
l
-
1
,
ue
,
proc
,
eNB_id
,
abstraction_flag
,
mode
);
ue_measurement_procedures
(
l
-
1
,
ue
,
proc
,
eNB_id
,
1
+
(
subframe_rx
<<
1
),
abstraction_flag
,
mode
);
}
// for l=1..l2
...
...
openair2/UTIL/LOG/vcd_signal_dumper.c
View file @
4fe2d6d7
...
...
@@ -283,6 +283,9 @@ const char* eurecomFunctionsNames[] = {
"phy_ue_generate_prach"
,
"phy_ue_ulsch_modulation"
,
"phy_ue_ulsch_encoding"
,
#if 1 // add for debugging losing PDSCH immediately before and after reporting CQI
"phy_ue_ulsch_encoding_fill_cqi"
,
#endif
"phy_ue_ulsch_scrambling"
,
"phy_eNB_dlsch_modulation"
,
"phy_eNB_dlsch_encoding"
,
...
...
openair2/UTIL/LOG/vcd_signal_dumper.h
View file @
4fe2d6d7
...
...
@@ -257,6 +257,9 @@ typedef enum {
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GENERATE_PRACH
,
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ULSCH_MODULATION
,
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ULSCH_ENCODING
,
#if 1 // add for debugging losing PDSCH immediately before and after reporting CQI
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ULSCH_ENCODING_FILL_CQI
,
#endif
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ULSCH_SCRAMBLING
,
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_MODULATION
,
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
...
...
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