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
Michael Black
OpenXG-RAN
Commits
6050c55a
Commit
6050c55a
authored
Dec 31, 2022
by
General ABS
Committed by
rmagueta
Jun 06, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Send SS-RSRP measurement for neighboring cell from PHY to RRC
parent
f97b28bf
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
112 additions
and
50 deletions
+112
-50
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h
+1
-1
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
+19
-6
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
+24
-0
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+4
-4
openair1/SIMULATION/NR_PHY/nr_dummy_functions.c
openair1/SIMULATION/NR_PHY/nr_dummy_functions.c
+11
-0
openair2/COMMON/mac_messages_types.h
openair2/COMMON/mac_messages_types.h
+4
-1
openair2/LAYER2/NR_MAC_UE/mac_defs.h
openair2/LAYER2/NR_MAC_UE/mac_defs.h
+2
-2
openair2/LAYER2/NR_MAC_UE/mac_proto.h
openair2/LAYER2/NR_MAC_UE/mac_proto.h
+1
-1
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+21
-18
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
+7
-7
openair2/RRC/NR_UE/L2_interface_ue.c
openair2/RRC/NR_UE/L2_interface_ue.c
+6
-2
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+7
-6
openair2/RRC/NR_UE/rrc_proto.h
openair2/RRC/NR_UE/rrc_proto.h
+5
-2
No files found.
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h
View file @
6050c55a
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
#define FAPI_NR_RX_PDU_TYPE_DLSCH 0x03
#define FAPI_NR_RX_PDU_TYPE_DLSCH 0x03
#define FAPI_NR_DCI_IND 0x04
#define FAPI_NR_DCI_IND 0x04
#define FAPI_NR_RX_PDU_TYPE_RAR 0x05
#define FAPI_NR_RX_PDU_TYPE_RAR 0x05
#define FAPI_NR_
CSIR
S_IND 0x06
#define FAPI_NR_
MEA
S_IND 0x06
#define FAPI_NR_SIBS_MASK_SIB1 0x1
#define FAPI_NR_SIBS_MASK_SIB1 0x1
...
...
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
View file @
6050c55a
...
@@ -27,6 +27,7 @@
...
@@ -27,6 +27,7 @@
#define NFAPI_UE_MAX_NUM_CB 8
#define NFAPI_UE_MAX_NUM_CB 8
#define NFAPI_MAX_NUM_UL_PDU 255
#define NFAPI_MAX_NUM_UL_PDU 255
#define NUMBER_OF_NEIGHBORING_CELLs_MAX 1
/*
/*
typedef unsigned int uint32_t;
typedef unsigned int uint32_t;
...
@@ -50,13 +51,16 @@ typedef struct {
...
@@ -50,13 +51,16 @@ typedef struct {
}
fapi_nr_uci_pdu_rel15_t
;
}
fapi_nr_uci_pdu_rel15_t
;
typedef
struct
{
typedef
struct
{
uint32_t
rsrp
;
uint32_t
gNB_index
;
int
rsrp_dBm
;
uint16_t
Nid_cell
;
uint8_t
meas_type
;
// (0) SS, (1) CSI
uint8_t
is_neighboring_cell
;
// (0) false, (1) true
uint8_t
rsrp_dBm
;
uint8_t
rank_indicator
;
uint8_t
rank_indicator
;
uint8_t
i1
;
uint8_t
i1
;
uint8_t
i2
;
uint8_t
i2
;
uint8_t
cqi
;
uint8_t
cqi
;
}
fapi_nr_
csirs
_measurements_t
;
}
fapi_nr_
l1
_measurements_t
;
typedef
struct
{
typedef
struct
{
/// frequency_domain_resource;
/// frequency_domain_resource;
...
@@ -139,7 +143,7 @@ typedef struct {
...
@@ -139,7 +143,7 @@ typedef struct {
fapi_nr_pdsch_pdu_t
pdsch_pdu
;
fapi_nr_pdsch_pdu_t
pdsch_pdu
;
fapi_nr_ssb_pdu_t
ssb_pdu
;
fapi_nr_ssb_pdu_t
ssb_pdu
;
fapi_nr_sib_pdu_t
sib_pdu
;
fapi_nr_sib_pdu_t
sib_pdu
;
fapi_nr_
csirs_measurements_t
csirs
_measurements
;
fapi_nr_
l1_measurements_t
l1
_measurements
;
};
};
}
fapi_nr_rx_indication_body_t
;
}
fapi_nr_rx_indication_body_t
;
...
@@ -658,20 +662,29 @@ typedef struct
...
@@ -658,20 +662,29 @@ typedef struct
}
fapi_nr_prach_config_t
;
}
fapi_nr_prach_config_t
;
typedef
struct
{
uint16_t
Nid_cell
;
uint8_t
active
;
uint8_t
perform_validation
;
}
fapi_nr_neighboring_cell_t
;
typedef
struct
{
fapi_nr_neighboring_cell_t
nr_neighboring_cell
[
NUMBER_OF_NEIGHBORING_CELLs_MAX
];
}
fapi_nr_meas_config_t
;
typedef
struct
{
typedef
struct
{
uint16_t
target_Nid_cell
;
uint16_t
target_Nid_cell
;
}
fapi_nr_synch_request_t
;
}
fapi_nr_synch_request_t
;
typedef
struct
{
typedef
struct
{
uint32_t
config_mask
;
uint32_t
config_mask
;
fapi_nr_ue_carrier_config_t
carrier_config
;
fapi_nr_ue_carrier_config_t
carrier_config
;
fapi_nr_cell_config_t
cell_config
;
fapi_nr_cell_config_t
cell_config
;
fapi_nr_ssb_config_t
ssb_config
;
fapi_nr_ssb_config_t
ssb_config
;
fapi_nr_ssb_table_t
ssb_table
;
fapi_nr_ssb_table_t
ssb_table
;
fapi_nr_tdd_table_t
tdd_table
;
fapi_nr_tdd_table_t
tdd_table
;
fapi_nr_prach_config_t
prach_config
;
fapi_nr_prach_config_t
prach_config
;
fapi_nr_meas_config_t
meas_config
;
}
fapi_nr_config_request_t
;
}
fapi_nr_config_request_t
;
#endif
#endif
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
View file @
6050c55a
...
@@ -39,6 +39,7 @@
...
@@ -39,6 +39,7 @@
#include "PHY/sse_intrin.h"
#include "PHY/sse_intrin.h"
#include "PHY/NR_REFSIG/sss_nr.h"
#include "PHY/NR_REFSIG/sss_nr.h"
#include "PHY/MODULATION/modulation_UE.h"
#include "PHY/MODULATION/modulation_UE.h"
#include "SCHED_NR_UE/defs.h"
//#define k1 1000
//#define k1 1000
#define k1 ((long long int) 1000)
#define k1 ((long long int) 1000)
...
@@ -386,6 +387,29 @@ void nr_ue_meas_neighboring_cell(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc)
...
@@ -386,6 +387,29 @@ void nr_ue_meas_neighboring_cell(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc)
#ifdef DEBUG_MEAS_NEIGHBORING_CELL
#ifdef DEBUG_MEAS_NEIGHBORING_CELL
LOG_I
(
NR_PHY
,
"[Nid_cell %i] SSB RSRP = %u (%i dBm)
\n
"
,
neighboring_cell_info
->
Nid_cell
,
neighboring_cell_info
->
ssb_rsrp
,
neighboring_cell_info
->
ssb_rsrp_dBm
);
LOG_I
(
NR_PHY
,
"[Nid_cell %i] SSB RSRP = %u (%i dBm)
\n
"
,
neighboring_cell_info
->
Nid_cell
,
neighboring_cell_info
->
ssb_rsrp
,
neighboring_cell_info
->
ssb_rsrp_dBm
);
#endif
#endif
// Send SS measurements to MAC
fapi_nr_l1_measurements_t
l1_measurements
;
l1_measurements
.
gNB_index
=
proc
->
gNB_id
;
l1_measurements
.
meas_type
=
0
;
l1_measurements
.
Nid_cell
=
neighboring_cell_info
->
Nid_cell
;
l1_measurements
.
is_neighboring_cell
=
1
;
if
(
neighboring_cell_info
->
ssb_rsrp_dBm
<
-
140
)
{
l1_measurements
.
rsrp_dBm
=
16
;
}
else
if
(
neighboring_cell_info
->
ssb_rsrp_dBm
>
-
44
)
{
l1_measurements
.
rsrp_dBm
=
113
;
}
else
{
l1_measurements
.
rsrp_dBm
=
neighboring_cell_info
->
ssb_rsrp_dBm
+
157
;
// TS 38.133 - Table 10.1.6.1-1
}
nr_downlink_indication_t
dl_indication
;
fapi_nr_rx_indication_t
*
rx_ind
=
calloc
(
sizeof
(
*
rx_ind
),
1
);
nr_fill_dl_indication
(
&
dl_indication
,
NULL
,
rx_ind
,
proc
,
ue
,
NULL
);
nr_fill_rx_indication
(
rx_ind
,
FAPI_NR_MEAS_IND
,
ue
,
NULL
,
NULL
,
1
,
proc
,
(
void
*
)
&
l1_measurements
);
if
(
ue
->
if_inst
&&
ue
->
if_inst
->
dl_indication
)
{
ue
->
if_inst
->
dl_indication
(
&
dl_indication
,
NULL
);
}
else
{
free
(
rx_ind
);
}
}
}
}
}
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
6050c55a
...
@@ -170,10 +170,10 @@ void nr_fill_rx_indication(fapi_nr_rx_indication_t *rx_ind,
...
@@ -170,10 +170,10 @@ void nr_fill_rx_indication(fapi_nr_rx_indication_t *rx_ind,
ssb_pdu
->
decoded_pdu
=
false
;
ssb_pdu
->
decoded_pdu
=
false
;
}
}
break
;
break
;
case
FAPI_NR_
CSIR
S_IND
:
case
FAPI_NR_
MEA
S_IND
:
memcpy
(
&
rx_ind
->
rx_indication_body
[
n_pdus
-
1
].
csirs
_measurements
,
memcpy
(
&
rx_ind
->
rx_indication_body
[
n_pdus
-
1
].
l1
_measurements
,
(
fapi_nr_
csirs
_measurements_t
*
)
typeSpecific
,
(
fapi_nr_
l1
_measurements_t
*
)
typeSpecific
,
sizeof
(
*
(
fapi_nr_
csirs
_measurements_t
*
)
typeSpecific
));
sizeof
(
*
(
fapi_nr_
l1
_measurements_t
*
)
typeSpecific
));
break
;
break
;
default:
default:
break
;
break
;
...
...
openair1/SIMULATION/NR_PHY/nr_dummy_functions.c
View file @
6050c55a
...
@@ -34,6 +34,17 @@ void rrc_data_ind(const protocol_ctxt_t *const ctxt_pP,
...
@@ -34,6 +34,17 @@ void rrc_data_ind(const protocol_ctxt_t *const ctxt_pP,
const
uint8_t
*
const
buffer_pP
)
{
}
const
uint8_t
*
const
buffer_pP
)
{
}
typedef
uint32_t
channel_t
;
typedef
uint32_t
channel_t
;
int8_t
nr_mac_rrc_meas_ind_ue
(
module_id_t
module_id
,
uint32_t
gNB_index
,
uint16_t
Nid_cell
,
uint8_t
meas_type
,
uint8_t
is_neighboring_cell
,
uint8_t
rsrp_dBm
)
{
return
0
;
}
int8_t
nr_mac_rrc_data_ind_ue
(
const
module_id_t
module_id
,
int8_t
nr_mac_rrc_data_ind_ue
(
const
module_id_t
module_id
,
const
int
CC_id
,
const
int
CC_id
,
const
uint8_t
gNB_index
,
const
uint8_t
gNB_index
,
...
...
openair2/COMMON/mac_messages_types.h
View file @
6050c55a
...
@@ -103,7 +103,10 @@ typedef struct NRRrcMacBcchDataInd_s {
...
@@ -103,7 +103,10 @@ typedef struct NRRrcMacBcchDataInd_s {
typedef
struct
NRRrcMacMeasDataInd_s
{
typedef
struct
NRRrcMacMeasDataInd_s
{
uint8_t
gnb_index
;
uint8_t
gnb_index
;
uint8_t
rsrp
;
uint8_t
rsrp_dBm
;
uint16_t
Nid_cell
;
uint8_t
meas_type
;
// (0) SS, (1) CSI
uint8_t
is_neighboring_cell
;
// (0) false, (1) true
}
NRRrcMacMeasDataInd
;
}
NRRrcMacMeasDataInd
;
typedef
struct
RrcMacBcchMbmsDataReq_s
{
typedef
struct
RrcMacBcchMbmsDataReq_s
{
...
...
openair2/LAYER2/NR_MAC_UE/mac_defs.h
View file @
6050c55a
...
@@ -442,8 +442,8 @@ typedef struct {
...
@@ -442,8 +442,8 @@ typedef struct {
nr_csi_report_t
csi_report_template
[
MAX_CSI_REPORTCONFIG
];
nr_csi_report_t
csi_report_template
[
MAX_CSI_REPORTCONFIG
];
/// measurements from CSI-RS
/// measurements from
SS or
CSI-RS
fapi_nr_
csirs_measurements_t
csirs
_measurements
;
fapi_nr_
l1_measurements_t
l1
_measurements
;
/// Last NDI of UL HARQ processes
/// Last NDI of UL HARQ processes
uint8_t
UL_ndi
[
NR_MAX_HARQ_PROCESSES
];
uint8_t
UL_ndi
[
NR_MAX_HARQ_PROCESSES
];
...
...
openair2/LAYER2/NR_MAC_UE/mac_proto.h
View file @
6050c55a
...
@@ -190,7 +190,7 @@ int nr_get_sf_retxBSRTimer(uint8_t retxBSR_Timer);
...
@@ -190,7 +190,7 @@ int nr_get_sf_retxBSRTimer(uint8_t retxBSR_Timer);
int8_t
nr_ue_process_dci
(
module_id_t
module_id
,
int
cc_id
,
uint8_t
gNB_index
,
frame_t
frame
,
int
slot
,
dci_pdu_rel15_t
*
dci
,
fapi_nr_dci_indication_pdu_t
*
dci_ind
);
int8_t
nr_ue_process_dci
(
module_id_t
module_id
,
int
cc_id
,
uint8_t
gNB_index
,
frame_t
frame
,
int
slot
,
dci_pdu_rel15_t
*
dci
,
fapi_nr_dci_indication_pdu_t
*
dci_ind
);
int
nr_ue_process_dci_indication_pdu
(
module_id_t
module_id
,
int
cc_id
,
int
gNB_index
,
frame_t
frame
,
int
slot
,
fapi_nr_dci_indication_pdu_t
*
dci
);
int
nr_ue_process_dci_indication_pdu
(
module_id_t
module_id
,
int
cc_id
,
int
gNB_index
,
frame_t
frame
,
int
slot
,
fapi_nr_dci_indication_pdu_t
*
dci
);
int8_t
nr_ue_process_
csirs_measurements
(
module_id_t
module_id
,
frame_t
frame
,
int
slot
,
fapi_nr_csirs_measurements_t
*
csirs
_measurements
);
int8_t
nr_ue_process_
l1_measurements
(
module_id_t
module_id
,
frame_t
frame
,
int
slot
,
fapi_nr_l1_measurements_t
*
l1
_measurements
);
uint32_t
get_ssb_frame
(
uint32_t
test
);
uint32_t
get_ssb_frame
(
uint32_t
test
);
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
6050c55a
...
@@ -1215,14 +1215,17 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
...
@@ -1215,14 +1215,17 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
return
ret
;
return
ret
;
}
}
int8_t
nr_ue_process_csirs_measurements
(
module_id_t
module_id
,
int8_t
nr_ue_process_l1_measurements
(
module_id_t
module_id
,
frame_t
frame
,
int
slot
,
fapi_nr_l1_measurements_t
*
l1_measurements
)
frame_t
frame
,
{
int
slot
,
LOG_D
(
NR_MAC
,
"(%d.%d) Received CSI-RS measurements
\n
"
,
frame
,
slot
);
fapi_nr_csirs_measurements_t
*
csirs_measurements
)
{
LOG_D
(
NR_MAC
,
"(%d.%d) Received CSI-RS measurements
\n
"
,
frame
,
slot
);
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
module_id
);
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
module_id
);
memcpy
(
&
mac
->
csirs_measurements
,
csirs_measurements
,
sizeof
(
*
csirs_measurements
));
memcpy
(
&
mac
->
l1_measurements
,
l1_measurements
,
sizeof
(
*
l1_measurements
));
nr_mac_rrc_meas_ind_ue
(
module_id
,
csirs_measurements
->
gNB_index
,
csirs_measurements
->
rsrp
);
nr_mac_rrc_meas_ind_ue
(
module_id
,
l1_measurements
->
gNB_index
,
l1_measurements
->
Nid_cell
,
l1_measurements
->
meas_type
,
l1_measurements
->
is_neighboring_cell
,
l1_measurements
->
rsrp_dBm
);
return
0
;
return
0
;
}
}
...
@@ -2685,9 +2688,9 @@ uint8_t get_csirs_RI_PMI_CQI_payload(NR_UE_MAC_INST_t *mac,
...
@@ -2685,9 +2688,9 @@ uint8_t get_csirs_RI_PMI_CQI_payload(NR_UE_MAC_INST_t *mac,
int
cri_bitlen
=
csi_report
->
csi_meas_bitlen
.
cri_bitlen
;
int
cri_bitlen
=
csi_report
->
csi_meas_bitlen
.
cri_bitlen
;
int
ri_bitlen
=
csi_report
->
csi_meas_bitlen
.
ri_bitlen
;
int
ri_bitlen
=
csi_report
->
csi_meas_bitlen
.
ri_bitlen
;
int
pmi_x1_bitlen
=
csi_report
->
csi_meas_bitlen
.
pmi_x1_bitlen
[
mac
->
csirs
_measurements
.
rank_indicator
];
int
pmi_x1_bitlen
=
csi_report
->
csi_meas_bitlen
.
pmi_x1_bitlen
[
mac
->
l1
_measurements
.
rank_indicator
];
int
pmi_x2_bitlen
=
csi_report
->
csi_meas_bitlen
.
pmi_x2_bitlen
[
mac
->
csirs
_measurements
.
rank_indicator
];
int
pmi_x2_bitlen
=
csi_report
->
csi_meas_bitlen
.
pmi_x2_bitlen
[
mac
->
l1
_measurements
.
rank_indicator
];
int
cqi_bitlen
=
csi_report
->
csi_meas_bitlen
.
cqi_bitlen
[
mac
->
csirs
_measurements
.
rank_indicator
];
int
cqi_bitlen
=
csi_report
->
csi_meas_bitlen
.
cqi_bitlen
[
mac
->
l1
_measurements
.
rank_indicator
];
int
padding_bitlen
=
n_bits
-
(
cri_bitlen
+
ri_bitlen
+
pmi_x1_bitlen
+
pmi_x2_bitlen
+
cqi_bitlen
);
int
padding_bitlen
=
n_bits
-
(
cri_bitlen
+
ri_bitlen
+
pmi_x1_bitlen
+
pmi_x2_bitlen
+
cqi_bitlen
);
if
(
get_softmodem_params
()
->
emulate_l1
)
{
if
(
get_softmodem_params
()
->
emulate_l1
)
{
...
@@ -2696,16 +2699,16 @@ uint8_t get_csirs_RI_PMI_CQI_payload(NR_UE_MAC_INST_t *mac,
...
@@ -2696,16 +2699,16 @@ uint8_t get_csirs_RI_PMI_CQI_payload(NR_UE_MAC_INST_t *mac,
CHECK_INDEX
(
nr_bler_data
,
NR_NUM_MCS
-
1
);
CHECK_INDEX
(
nr_bler_data
,
NR_NUM_MCS
-
1
);
int
mcs
=
get_mcs_from_sinr
(
nr_bler_data
,
(
mac
->
nr_ue_emul_l1
.
cqi
-
640
)
*
0
.
1
);
int
mcs
=
get_mcs_from_sinr
(
nr_bler_data
,
(
mac
->
nr_ue_emul_l1
.
cqi
-
640
)
*
0
.
1
);
CHECK_INDEX
(
mcs_to_cqi
,
mcs
);
CHECK_INDEX
(
mcs_to_cqi
,
mcs
);
mac
->
csirs
_measurements
.
rank_indicator
=
mac
->
nr_ue_emul_l1
.
ri
;
mac
->
l1
_measurements
.
rank_indicator
=
mac
->
nr_ue_emul_l1
.
ri
;
mac
->
csirs
_measurements
.
i1
=
mac
->
nr_ue_emul_l1
.
pmi
;
mac
->
l1
_measurements
.
i1
=
mac
->
nr_ue_emul_l1
.
pmi
;
mac
->
csirs
_measurements
.
cqi
=
mcs_to_cqi
[
mcs
];
mac
->
l1
_measurements
.
cqi
=
mcs_to_cqi
[
mcs
];
}
}
// TODO: Improvements will be needed to cri_bitlen>0 and pmi_x1_bitlen>0
// TODO: Improvements will be needed to cri_bitlen>0 and pmi_x1_bitlen>0
temp_payload
=
(
mac
->
csirs
_measurements
.
rank_indicator
<<
(
cri_bitlen
+
cqi_bitlen
+
pmi_x2_bitlen
+
padding_bitlen
+
pmi_x1_bitlen
))
|
temp_payload
=
(
mac
->
l1
_measurements
.
rank_indicator
<<
(
cri_bitlen
+
cqi_bitlen
+
pmi_x2_bitlen
+
padding_bitlen
+
pmi_x1_bitlen
))
|
(
mac
->
csirs
_measurements
.
i1
<<
(
cri_bitlen
+
cqi_bitlen
+
pmi_x2_bitlen
))
|
(
mac
->
l1
_measurements
.
i1
<<
(
cri_bitlen
+
cqi_bitlen
+
pmi_x2_bitlen
))
|
(
mac
->
csirs
_measurements
.
i2
<<
(
cri_bitlen
+
cqi_bitlen
))
|
(
mac
->
l1
_measurements
.
i2
<<
(
cri_bitlen
+
cqi_bitlen
))
|
(
mac
->
csirs
_measurements
.
cqi
<<
cri_bitlen
)
|
(
mac
->
l1
_measurements
.
cqi
<<
cri_bitlen
)
|
0
;
0
;
reverse_n_bits
((
uint8_t
*
)
&
temp_payload
,
n_bits
);
reverse_n_bits
((
uint8_t
*
)
&
temp_payload
,
n_bits
);
...
@@ -2760,7 +2763,7 @@ uint8_t get_csirs_RSRP_payload(NR_UE_MAC_INST_t *mac,
...
@@ -2760,7 +2763,7 @@ uint8_t get_csirs_RSRP_payload(NR_UE_MAC_INST_t *mac,
}
}
// TODO: Improvements will be needed to cri_ssbri_bitlen>0
// TODO: Improvements will be needed to cri_ssbri_bitlen>0
temp_payload
=
mac
->
csirs_measurements
.
rsrp
;
temp_payload
=
mac
->
l1_measurements
.
rsrp_dBm
;
reverse_n_bits
((
uint8_t
*
)
&
temp_payload
,
n_bits
);
reverse_n_bits
((
uint8_t
*
)
&
temp_payload
,
n_bits
);
LOG_D
(
NR_MAC
,
"cri_ssbri_bitlen = %d
\n
"
,
cri_ssbri_bitlen
);
LOG_D
(
NR_MAC
,
"cri_ssbri_bitlen = %d
\n
"
,
cri_ssbri_bitlen
);
...
...
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
View file @
6050c55a
...
@@ -1098,8 +1098,8 @@ int8_t handle_dlsch(nr_downlink_indication_t *dl_info, int pdu_id)
...
@@ -1098,8 +1098,8 @@ int8_t handle_dlsch(nr_downlink_indication_t *dl_info, int pdu_id)
return
0
;
return
0
;
}
}
int8_t
handle_
csirs_measurements
(
module_id_t
module_id
,
frame_t
frame
,
int
slot
,
fapi_nr_csirs_measurements_t
*
csirs
_measurements
)
{
int8_t
handle_
l1_measurements
(
module_id_t
module_id
,
frame_t
frame
,
int
slot
,
fapi_nr_l1_measurements_t
*
l1
_measurements
)
{
return
nr_ue_process_
csirs_measurements
(
module_id
,
frame
,
slot
,
csirs
_measurements
);
return
nr_ue_process_
l1_measurements
(
module_id
,
frame
,
slot
,
l1
_measurements
);
}
}
void
update_harq_status
(
module_id_t
module_id
,
uint8_t
harq_pid
,
uint8_t
ack_nack
)
{
void
update_harq_status
(
module_id_t
module_id
,
uint8_t
harq_pid
,
uint8_t
ack_nack
)
{
...
@@ -1225,11 +1225,11 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info)
...
@@ -1225,11 +1225,11 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info)
case
FAPI_NR_RX_PDU_TYPE_RAR
:
case
FAPI_NR_RX_PDU_TYPE_RAR
:
ret_mask
|=
(
handle_dlsch
(
dl_info
,
i
))
<<
FAPI_NR_RX_PDU_TYPE_RAR
;
ret_mask
|=
(
handle_dlsch
(
dl_info
,
i
))
<<
FAPI_NR_RX_PDU_TYPE_RAR
;
break
;
break
;
case
FAPI_NR_
CSIR
S_IND
:
case
FAPI_NR_
MEA
S_IND
:
ret_mask
|=
(
handle_
csirs
_measurements
(
dl_info
->
module_id
,
ret_mask
|=
(
handle_
l1
_measurements
(
dl_info
->
module_id
,
dl_info
->
frame
,
dl_info
->
frame
,
dl_info
->
slot
,
dl_info
->
slot
,
&
rx_indication_body
.
csirs_measurements
))
<<
FAPI_NR_CSIR
S_IND
;
&
rx_indication_body
.
l1_measurements
))
<<
FAPI_NR_MEA
S_IND
;
break
;
break
;
default:
default:
break
;
break
;
...
...
openair2/RRC/NR_UE/L2_interface_ue.c
View file @
6050c55a
...
@@ -39,10 +39,14 @@
...
@@ -39,10 +39,14 @@
typedef
uint32_t
channel_t
;
typedef
uint32_t
channel_t
;
int8_t
nr_mac_rrc_meas_ind_ue
(
module_id_t
module_id
,
uint32_t
gNB_index
,
uint8_t
rsrp_s
)
{
int8_t
nr_mac_rrc_meas_ind_ue
(
module_id_t
module_id
,
uint32_t
gNB_index
,
uint16_t
Nid_cell
,
uint8_t
meas_type
,
uint8_t
is_neighboring_cell
,
uint8_t
rsrp_dBm
)
{
MessageDef
*
message_p
=
itti_alloc_new_message
(
TASK_MAC_UE
,
0
,
NR_RRC_MAC_MEAS_DATA_IND
);
MessageDef
*
message_p
=
itti_alloc_new_message
(
TASK_MAC_UE
,
0
,
NR_RRC_MAC_MEAS_DATA_IND
);
NR_RRC_MAC_MEAS_DATA_IND
(
message_p
).
gnb_index
=
gNB_index
;
NR_RRC_MAC_MEAS_DATA_IND
(
message_p
).
gnb_index
=
gNB_index
;
NR_RRC_MAC_MEAS_DATA_IND
(
message_p
).
rsrp
=
rsrp_s
;
NR_RRC_MAC_MEAS_DATA_IND
(
message_p
).
Nid_cell
=
Nid_cell
;
NR_RRC_MAC_MEAS_DATA_IND
(
message_p
).
meas_type
=
meas_type
;
NR_RRC_MAC_MEAS_DATA_IND
(
message_p
).
is_neighboring_cell
=
is_neighboring_cell
;
NR_RRC_MAC_MEAS_DATA_IND
(
message_p
).
rsrp_dBm
=
rsrp_dBm
;
itti_send_msg_to_task
(
TASK_RRC_NRUE
,
GNB_MODULE_ID_TO_INSTANCE
(
module_id
),
message_p
);
itti_send_msg_to_task
(
TASK_RRC_NRUE
,
GNB_MODULE_ID_TO_INSTANCE
(
module_id
),
message_p
);
return
0
;
return
0
;
}
}
...
...
openair2/RRC/NR_UE/rrc_UE.c
View file @
6050c55a
...
@@ -2280,16 +2280,17 @@ nr_rrc_ue_establish_srb2(
...
@@ -2280,16 +2280,17 @@ nr_rrc_ue_establish_srb2(
break
;
break
;
case
NR_RRC_MAC_MEAS_DATA_IND
:
case
NR_RRC_MAC_MEAS_DATA_IND
:
LOG_I
(
NR_RRC
,
"[gNB %i, count %i] Received measurements: RSRP_s = %i (dBm)
\n
"
,
LOG_D
(
NR_RRC
,
"[%s][Nid_cell %i] Received %s measurements: RSRP = %i (dBm)
\n
"
,
NR_RRC_MAC_MEAS_DATA_IND
(
msg_p
).
gnb_index
,
NR_RRC_MAC_MEAS_DATA_IND
(
msg_p
).
is_neighboring_cell
==
0
?
"Active cell"
:
"Neighboring cell"
,
number_of_received_meas
,
NR_RRC_MAC_MEAS_DATA_IND
(
msg_p
).
Nid_cell
,
NR_RRC_MAC_MEAS_DATA_IND
(
msg_p
).
rsrp
-
157
);
NR_RRC_MAC_MEAS_DATA_IND
(
msg_p
).
meas_type
==
0
?
"SS"
:
"CSI"
,
NR_RRC_MAC_MEAS_DATA_IND
(
msg_p
).
rsrp_dBm
-
157
);
// FIXME: Add a correct criterion
// FIXME: Add a correct criterion
if
(
number_of_received_meas
==
1
00
)
{
if
(
number_of_received_meas
==
2
00
)
{
rrc_ue_generate_measurementReport
(
&
ctxt
,
rrc_ue_generate_measurementReport
(
&
ctxt
,
NR_RRC_MAC_MEAS_DATA_IND
(
msg_p
).
gnb_index
,
NR_RRC_MAC_MEAS_DATA_IND
(
msg_p
).
gnb_index
,
NR_RRC_MAC_MEAS_DATA_IND
(
msg_p
).
rsrp
);
NR_RRC_MAC_MEAS_DATA_IND
(
msg_p
).
rsrp
_dBm
);
number_of_received_meas
=
0
;
number_of_received_meas
=
0
;
}
}
...
...
openair2/RRC/NR_UE/rrc_proto.h
View file @
6050c55a
...
@@ -113,8 +113,11 @@ int8_t nr_rrc_ue_decode_NR_DL_DCCH_Message(const module_id_t module_id, const ui
...
@@ -113,8 +113,11 @@ int8_t nr_rrc_ue_decode_NR_DL_DCCH_Message(const module_id_t module_id, const ui
/**\brief Send measurements to RRC to perform the L3 measurements
/**\brief Send measurements to RRC to perform the L3 measurements
\param module_id module id
\param module_id module id
\param gNB_index gNB index
\param gNB_index gNB index
\param rsrp_s reference signal received power*/
\param Nid_cell Nid_cell
int8_t
nr_mac_rrc_meas_ind_ue
(
module_id_t
module_id
,
uint32_t
gNB_index
,
uint8_t
rsrp_s
);
\param meas_type (0) SS, (1) CSI
\param is_neighboring_cell (0) false, (1) true
\param rsrp_dBm reference signal received power*/
int8_t
nr_mac_rrc_meas_ind_ue
(
module_id_t
module_id
,
uint32_t
gNB_index
,
uint16_t
Nid_cell
,
uint8_t
meas_type
,
uint8_t
is_neighboring_cell
,
uint8_t
rsrp_dBm
);
/**\brief interface between MAC and RRC thru SRB0 (RLC TM/no PDCP)
/**\brief interface between MAC and RRC thru SRB0 (RLC TM/no PDCP)
\param module_id module id
\param module_id module id
...
...
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