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
67322cba
Commit
67322cba
authored
4 years ago
by
Hongzhi Wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adding rsrp measurement and csi report
parent
2bf57584
No related merge requests found
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
279 additions
and
7 deletions
+279
-7
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
+6
-0
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
+101
-1
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+11
-1
openair1/SCHED_NR_UE/pucch_uci_ue_nr.c
openair1/SCHED_NR_UE/pucch_uci_ue_nr.c
+50
-4
openair1/SCHED_NR_UE/pucch_uci_ue_nr.h
openair1/SCHED_NR_UE/pucch_uci_ue_nr.h
+105
-0
openair2/LAYER2/NR_MAC_UE/mac_defs.h
openair2/LAYER2/NR_MAC_UE/mac_defs.h
+6
-1
No files found.
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
View file @
67322cba
...
...
@@ -87,6 +87,10 @@ void nr_ue_measurements(PHY_VARS_NR_UE *ue,
unsigned
char
rank_adaptation
,
uint8_t
subframe
);
void
nr_ue_rsrp_measurements
(
PHY_VARS_NR_UE
*
ue
,
uint8_t
slot
,
uint8_t
abstraction_flag
);
void
phy_adjust_gain_nr
(
PHY_VARS_NR_UE
*
ue
,
uint32_t
rx_power_fil_dB
,
uint8_t
eNB_id
);
...
...
@@ -94,4 +98,6 @@ void phy_adjust_gain_nr(PHY_VARS_NR_UE *ue,
int16_t
get_nr_PL
(
uint8_t
Mod_id
,
uint8_t
CC_id
,
uint8_t
gNB_index
);
float_t
get_nr_RSRP
(
module_id_t
Mod_id
,
uint8_t
CC_id
,
uint8_t
gNB_index
);
#endif
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
View file @
67322cba
...
...
@@ -23,6 +23,7 @@
#include "PHY/phy_extern_nr_ue.h"
#include "common/utils/LOG/log.h"
#include "PHY/sse_intrin.h"
#include "openair2/LAYER2/NR_MAC_UE/mac_proto.h"
//#define k1 1000
#define k1 ((long long int) 1000)
...
...
@@ -76,6 +77,35 @@ int16_t get_nr_PL(uint8_t Mod_id, uint8_t CC_id, uint8_t gNB_index){
//(ue->frame_parms.pdsch_config_common.referenceSignalPower*10))/10));
}
uint32_t
get_nr_rx_total_gain_dB
(
module_id_t
Mod_id
,
uint8_t
CC_id
)
{
PHY_VARS_NR_UE
*
ue
=
PHY_vars_UE_g
[
Mod_id
][
CC_id
];
if
(
ue
)
return
ue
->
rx_total_gain_dB
;
return
0xFFFFFFFF
;
}
float_t
get_nr_RSRP
(
module_id_t
Mod_id
,
uint8_t
CC_id
,
uint8_t
gNB_index
)
{
AssertFatal
(
PHY_vars_UE_g
!=
NULL
,
"PHY_vars_UE_g is null
\n
"
);
AssertFatal
(
PHY_vars_UE_g
[
Mod_id
]
!=
NULL
,
"PHY_vars_UE_g[%d] is null
\n
"
,
Mod_id
);
AssertFatal
(
PHY_vars_UE_g
[
Mod_id
][
CC_id
]
!=
NULL
,
"PHY_vars_UE_g[%d][%d] is null
\n
"
,
Mod_id
,
CC_id
);
PHY_VARS_NR_UE
*
ue
=
PHY_vars_UE_g
[
Mod_id
][
CC_id
];
if
(
ue
)
return
(
10
*
log10
(
ue
->
measurements
.
rsrp
[
gNB_index
])
-
get_nr_rx_total_gain_dB
(
Mod_id
,
0
)
-
10
*
log10
(
20
*
12
));
return
-
140
.
0
;
}
void
nr_ue_measurements
(
PHY_VARS_NR_UE
*
ue
,
unsigned
int
subframe_offset
,
unsigned
char
N0_symbol
,
...
...
@@ -191,4 +221,74 @@ void nr_ue_measurements(PHY_VARS_NR_UE *ue,
_mm_empty
();
_m_empty
();
#endif
}
\ No newline at end of file
}
void
nr_ue_rsrp_measurements
(
PHY_VARS_NR_UE
*
ue
,
uint8_t
slot
,
uint8_t
abstraction_flag
)
{
int
aarx
,
rb
,
symbol_offset
;
int16_t
*
rxF
;
uint16_t
Nid_cell
=
ue
->
frame_parms
.
Nid_cell
;
uint8_t
eNB_offset
=
0
,
l
,
nushift
;
uint16_t
off
,
nb_rb
;
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
0
);
int
**
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
slot
]].
rxdataF
;
nushift
=
ue
->
frame_parms
.
Nid_cell
%
4
;
ue
->
frame_parms
.
nushift
=
nushift
;
unsigned
int
ssb_offset
=
ue
->
frame_parms
.
first_carrier_offset
+
ue
->
frame_parms
.
ssb_start_subcarrier
;
if
(
ssb_offset
>=
ue
->
frame_parms
.
ofdm_symbol_size
)
ssb_offset
-=
ue
->
frame_parms
.
ofdm_symbol_size
;
symbol_offset
=
ue
->
frame_parms
.
ofdm_symbol_size
*
(
ue
->
symbol_offset
+
1
);
ue
->
measurements
.
rsrp
[
eNB_offset
]
=
0
;
//if (mac->csirc->reportQuantity.choice.ssb_Index_RSRP){
nb_rb
=
20
;
//} else{
// LOG_E(PHY,"report quantity not supported \n");
//}
if
(
abstraction_flag
==
0
)
{
for
(
l
=
0
;
l
<
1
;
l
++
)
{
LOG_D
(
PHY
,
"[UE %d] slot %d Doing ue_rrc_measurements rsrp/rssi (Nid_cell %d, nushift %d, eNB_offset %d, l %d)
\n
"
,
ue
->
Mod_id
,
slot
,
Nid_cell
,
nushift
,
eNB_offset
,
l
);
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
rxF
=
(
int16_t
*
)
&
rxdataF
[
aarx
][(
symbol_offset
+
ssb_offset
+
nushift
)];
off
=
0
;
if
(
l
==
0
)
{
for
(
rb
=
0
;
rb
<
nb_rb
;
rb
++
)
{
ue
->
measurements
.
rsrp
[
eNB_offset
]
+=
(((
int32_t
)(
rxF
[
off
])
*
rxF
[
off
])
+
((
int32_t
)(
rxF
[
off
+
1
])
*
rxF
[
off
+
1
]));
//printf("rb %d, off %d : %d\n",rb,off,((((int32_t)rxF[off])*rxF[off])+((int32_t)(rxF[off+1])*rxF[off+1])));
off
=
(
off
+
4
)
%
ue
->
frame_parms
.
ofdm_symbol_size
;
}
}
}
}
ue
->
measurements
.
rsrp
[
eNB_offset
]
/=
nb_rb
;
}
else
{
ue
->
measurements
.
rsrp
[
eNB_offset
]
=
-
93
;
}
if
(
eNB_offset
==
0
)
LOG_I
(
PHY
,
"[UE %d] slot %d RRC Measurements (idx %d, Cell id %d) => rsrp: %3.1f dBm/RE (%d)
\n
"
,
ue
->
Mod_id
,
slot
,
eNB_offset
,
(
eNB_offset
>
0
)
?
ue
->
measurements
.
adj_cell_id
[
eNB_offset
-
1
]
:
ue
->
frame_parms
.
Nid_cell
,
10
*
log10
(
ue
->
measurements
.
rsrp
[
eNB_offset
])
-
ue
->
rx_total_gain_dB
,
ue
->
measurements
.
rsrp
[
eNB_offset
]);
}
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
67322cba
...
...
@@ -55,6 +55,8 @@
#include "SCHED/phy_procedures_emos.h"
#endif
#include "executables/softmodem-common.h"
#include "openair2/LAYER2/NR_MAC_UE/mac_proto.h"
//#define DEBUG_PHY_PROC
#define NR_PDCCH_SCHED
...
...
@@ -4035,6 +4037,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
uint8_t
dci_cnt
=
0
;
NR_DL_FRAME_PARMS
*
fp
=
&
ue
->
frame_parms
;
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX
,
VCD_FUNCTION_IN
);
LOG_D
(
PHY
,
" ****** start RX-Chain for Frame.Slot %d.%d ******
\n
"
,
frame_rx
%
1024
,
nr_tti_rx
);
...
...
@@ -4073,7 +4077,13 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
#endif
}
nr_ue_pbch_procedures
(
eNB_id
,
ue
,
proc
,
0
);
//if (mac->csirc->reportQuantity.choice.ssb_Index_RSRP){
nr_ue_rsrp_measurements
(
ue
,
nr_tti_rx
,
0
);
//}
nr_ue_pbch_procedures
(
eNB_id
,
ue
,
proc
,
0
);
if
(
ue
->
no_timing_correction
==
0
)
{
LOG_I
(
PHY
,
"start adjust sync slot = %d no timing %d
\n
"
,
nr_tti_rx
,
ue
->
no_timing_correction
);
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR_UE/pucch_uci_ue_nr.c
View file @
67322cba
...
...
@@ -37,6 +37,8 @@
#include "PHY/defs_nr_UE.h"
#include <openair1/SCHED/sched_common.h>
#include <openair1/PHY/NR_UE_TRANSPORT/pucch_nr.h>
#include "openair2/LAYER2/NR_MAC_UE/mac_proto.h"
#include "openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h"
#ifndef NO_RAT_NR
...
...
@@ -44,9 +46,9 @@
#include "SCHED_NR_UE/harq_nr.h"
#include "SCHED_NR_UE/pucch_power_control_ue_nr.h"
#define DEFINE_VARIABLES_PUCCH_UE_NR_H
//
#define DEFINE_VARIABLES_PUCCH_UE_NR_H
#include "SCHED_NR_UE/pucch_uci_ue_nr.h"
#undef DEFINE_VARIABLES_PUCCH_UE_NR_H
//
#undef DEFINE_VARIABLES_PUCCH_UE_NR_H
#endif
...
...
@@ -54,6 +56,44 @@
uint8_t
nr_is_cqi_TXOp
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
uint8_t
gNB_id
);
uint8_t
nr_is_ri_TXOp
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
uint8_t
gNB_id
);
long
binary_search_float_nr
(
float
elements
[],
long
numElem
,
float
value
)
//-----------------------------------------------------------------------------
{
long
first
,
last
,
middle
;
first
=
0
;
last
=
numElem
-
1
;
middle
=
(
first
+
last
)
/
2
;
if
(
value
<
elements
[
0
])
{
return
first
;
}
if
(
value
>=
elements
[
last
])
{
return
last
;
}
while
(
last
-
first
>
1
)
{
if
(
elements
[
middle
]
>
value
)
{
last
=
middle
;
}
else
{
first
=
middle
;
}
middle
=
(
first
+
last
)
/
2
;
}
if
(
first
<
0
||
first
>=
numElem
)
{
LOG_E
(
RRC
,
"
\n
Error in binary search float!"
);
}
return
first
;
}
/*
void nr_generate_pucch0(int32_t **txdataF,
NR_DL_FRAME_PARMS *frame_parms,
...
...
@@ -1242,7 +1282,7 @@ int trigger_periodic_scheduling_request(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_n
*
*********************************************************************/
int
dummy_csi_status
=
0
;
int
dummy_csi_status
=
1
;
uint32_t
dummy_csi_payload
=
0
;
/* FFS TODO_NR code that should be developed */
...
...
@@ -1251,12 +1291,18 @@ int get_csi_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, uint32_t *csi_payload)
{
VOID_PARAMETER
ue
;
VOID_PARAMETER
gNB_id
;
float
rsrp_db
[
7
];
int
nElem
=
98
;
int
rsrp_offset
=
17
;
rsrp_db
[
0
]
=
get_nr_RSRP
(
0
,
0
,
0
);
if
(
dummy_csi_status
==
0
)
{
*
csi_payload
=
0
;
}
else
{
*
csi_payload
=
dummy_csi_payload
;
*
csi_payload
=
binary_search_float_nr
(
RSRP_meas_mapping_nr
,
nElem
,
rsrp_db
[
0
])
+
rsrp_offset
;
}
return
(
dummy_csi_status
);
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR_UE/pucch_uci_ue_nr.h
View file @
67322cba
...
...
@@ -60,6 +60,111 @@
/************** VARIABLES *****************************************/
float
RSRP_meas_mapping_nr
[
98
]
#ifdef INIT_VARIABLES_PUCCH_UE_NR_H
=
{
-
140
,
-
139
,
-
138
,
-
137
,
-
136
,
-
135
,
-
134
,
-
133
,
-
132
,
-
131
,
-
130
,
-
129
,
-
128
,
-
127
,
-
126
,
-
125
,
-
124
,
-
123
,
-
122
,
-
121
,
-
120
,
-
119
,
-
118
,
-
117
,
-
116
,
-
115
,
-
114
,
-
113
,
-
112
,
-
111
,
-
110
,
-
109
,
-
108
,
-
107
,
-
106
,
-
105
,
-
104
,
-
103
,
-
102
,
-
101
,
-
100
,
-
99
,
-
98
,
-
97
,
-
96
,
-
95
,
-
94
,
-
93
,
-
92
,
-
91
,
-
90
,
-
89
,
-
88
,
-
87
,
-
86
,
-
85
,
-
84
,
-
83
,
-
82
,
-
81
,
-
80
,
-
79
,
-
78
,
-
77
,
-
76
,
-
75
,
-
74
,
-
73
,
-
72
,
-
71
,
-
70
,
-
69
,
-
68
,
-
67
,
-
66
,
-
65
,
-
64
,
-
63
,
-
62
,
-
61
,
-
60
,
-
59
,
-
58
,
-
57
,
-
56
,
-
55
,
-
54
,
-
53
,
-
52
,
-
51
,
-
50
,
-
49
,
-
48
,
-
47
,
-
46
,
-
45
,
-
44
,
-
43
}
#endif
;
/* TS 36.213 Table 9.2.1-1: PUCCH resource sets before dedicated PUCCH resource configuration */
const
initial_pucch_resource_t
initial_pucch_resource
[
NB_INITIAL_PUCCH_RESOURCE
]
#ifdef INIT_VARIABLES_PUCCH_UE_NR_H
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/mac_defs.h
View file @
67322cba
...
...
@@ -63,7 +63,11 @@
#include "NR_PhysicalCellGroupConfig.h"
#include "NR_CellGroupConfig.h"
#include "NR_ServingCellConfig.h"
#include "NR_MeasConfig.h"
#include "fapi_nr_ue_interface.h"
#include "NR_IF_Module.h"
#include "PHY/defs_nr_common.h"
#include "openair2/LAYER2/NR_MAC_COMMON/nr_mac.h"
#define NB_NR_UE_MAC_INST 1
/*!\brief Maximum number of logical channl group IDs */
...
...
@@ -158,6 +162,7 @@ typedef struct {
NR_CellGroupConfig_t
*
scg
;
NR_RACH_ConfigDedicated_t
*
rach_ConfigDedicated
;
int
servCellIndex
;
NR_CSI_ReportConfig_t
*
csirc
;
//// MAC config
NR_DRX_Config_t
*
drx_Config
;
NR_SchedulingRequestConfig_t
*
schedulingRequestConfig
;
...
...
This diff is collapsed.
Click to expand it.
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