Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
openairinterface-6g
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
OpenXG
openairinterface-6g
Commits
e5ea77f6
Commit
e5ea77f6
authored
Aug 18, 2025
by
francescomani
2
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
separate UE fapi message for SSB measurements
parent
fc4bd2e2
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
10 additions
and
19 deletions
+10
-19
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
+3
-4
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
+1
-0
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+0
-2
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+5
-0
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
+1
-13
No files found.
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
View file @
e5ea77f6
...
@@ -59,7 +59,9 @@ typedef struct {
...
@@ -59,7 +59,9 @@ typedef struct {
uint16_t
Nid_cell
;
uint16_t
Nid_cell
;
nfapi_nr_meas_type_e
meas_type
;
nfapi_nr_meas_type_e
meas_type
;
bool
is_neighboring_cell
;
bool
is_neighboring_cell
;
uint8_t
rsrp_dBm
;
int
ssb_index
;
int
rsrp_dBm
;
float
sinr_dB
;
uint8_t
rank_indicator
;
uint8_t
rank_indicator
;
uint16_t
i1
;
uint16_t
i1
;
uint8_t
i2
;
uint8_t
i2
;
...
@@ -133,11 +135,8 @@ typedef struct {
...
@@ -133,11 +135,8 @@ typedef struct {
uint8_t
ssb_length
;
uint8_t
ssb_length
;
uint16_t
cell_id
;
uint16_t
cell_id
;
uint16_t
ssb_start_subcarrier
;
uint16_t
ssb_start_subcarrier
;
short
rsrp_dBm
;
long
arfcn
;
long
arfcn
;
rlm_t
radiolink_monitoring
;
// -1 no monitoring, 0 out_of_sync, 1 in_sync
rlm_t
radiolink_monitoring
;
// -1 no monitoring, 0 out_of_sync, 1 in_sync
// SINR value times 10 as reporting granularity is 0.5
float
sinr_dB
;
}
fapi_nr_ssb_pdu_t
;
}
fapi_nr_ssb_pdu_t
;
typedef
struct
{
typedef
struct
{
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
View file @
e5ea77f6
...
@@ -264,6 +264,7 @@ void nr_ue_ssb_rsrp_measurements(PHY_VARS_NR_UE *ue,
...
@@ -264,6 +264,7 @@ void nr_ue_ssb_rsrp_measurements(PHY_VARS_NR_UE *ue,
.
gNB_index
=
proc
->
gNB_id
,
.
gNB_index
=
proc
->
gNB_id
,
.
meas_type
=
NFAPI_NR_SS_MEAS
,
.
meas_type
=
NFAPI_NR_SS_MEAS
,
.
Nid_cell
=
ue
->
frame_parms
.
Nid_cell
,
.
Nid_cell
=
ue
->
frame_parms
.
Nid_cell
,
.
ssb_index
=
ssb_index
,
.
is_neighboring_cell
=
false
,
.
is_neighboring_cell
=
false
,
};
};
int
ssb_rsrp_dBm
=
ue
->
measurements
.
ssb_rsrp_dBm
[
ssb_index
];
int
ssb_rsrp_dBm
=
ue
->
measurements
.
ssb_rsrp_dBm
[
ssb_index
];
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
e5ea77f6
...
@@ -176,8 +176,6 @@ void nr_fill_rx_indication(fapi_nr_rx_indication_t *rx_ind,
...
@@ -176,8 +176,6 @@ void nr_fill_rx_indication(fapi_nr_rx_indication_t *rx_ind,
rx
->
ssb_pdu
.
ssb_length
=
frame_parms
->
Lmax
;
rx
->
ssb_pdu
.
ssb_length
=
frame_parms
->
Lmax
;
rx
->
ssb_pdu
.
cell_id
=
frame_parms
->
Nid_cell
;
rx
->
ssb_pdu
.
cell_id
=
frame_parms
->
Nid_cell
;
rx
->
ssb_pdu
.
ssb_start_subcarrier
=
frame_parms
->
ssb_start_subcarrier
;
rx
->
ssb_pdu
.
ssb_start_subcarrier
=
frame_parms
->
ssb_start_subcarrier
;
rx
->
ssb_pdu
.
rsrp_dBm
=
ue
->
measurements
.
ssb_rsrp_dBm
[
frame_parms
->
ssb_index
];
rx
->
ssb_pdu
.
sinr_dB
=
ue
->
measurements
.
ssb_sinr_dB
[
frame_parms
->
ssb_index
];
rx
->
ssb_pdu
.
arfcn
=
get_ssb_arfcn
(
frame_parms
);
rx
->
ssb_pdu
.
arfcn
=
get_ssb_arfcn
(
frame_parms
);
rx
->
ssb_pdu
.
radiolink_monitoring
=
RLM_in_sync
;
// TODO to be removed from here
rx
->
ssb_pdu
.
radiolink_monitoring
=
RLM_in_sync
;
// TODO to be removed from here
rx
->
ssb_pdu
.
decoded_pdu
=
true
;
rx
->
ssb_pdu
.
decoded_pdu
=
true
;
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
e5ea77f6
...
@@ -1509,6 +1509,11 @@ void nr_ue_process_l1_measurements(NR_UE_MAC_INST_t *mac, frame_t frame, int slo
...
@@ -1509,6 +1509,11 @@ void nr_ue_process_l1_measurements(NR_UE_MAC_INST_t *mac, frame_t frame, int slo
LOG_D
(
NR_MAC
,
"(%d.%d) Received CSI-RS measurements
\n
"
,
frame
,
slot
);
LOG_D
(
NR_MAC
,
"(%d.%d) Received CSI-RS measurements
\n
"
,
frame
,
slot
);
memcpy
(
&
mac
->
l1_measurements
,
l1_measurements
,
sizeof
(
*
l1_measurements
));
memcpy
(
&
mac
->
l1_measurements
,
l1_measurements
,
sizeof
(
*
l1_measurements
));
bool
csi_meas
=
l1_measurements
->
meas_type
==
NFAPI_NR_CSI_MEAS
;
bool
csi_meas
=
l1_measurements
->
meas_type
==
NFAPI_NR_CSI_MEAS
;
if
(
!
csi_meas
&&
!
l1_measurements
->
is_neighboring_cell
)
{
mac
->
ssb_measurements
.
ssb_index
=
l1_measurements
->
ssb_index
;
mac
->
ssb_measurements
.
ssb_rsrp_dBm
=
l1_measurements
->
rsrp_dBm
;
mac
->
ssb_measurements
.
ssb_sinr_dB
=
l1_measurements
->
sinr_dB
;
}
nr_mac_rrc_meas_ind_ue
(
mac
->
ue_id
,
nr_mac_rrc_meas_ind_ue
(
mac
->
ue_id
,
l1_measurements
->
gNB_index
,
l1_measurements
->
gNB_index
,
l1_measurements
->
Nid_cell
,
l1_measurements
->
Nid_cell
,
...
...
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
View file @
e5ea77f6
...
@@ -374,7 +374,6 @@ static void fill_mib_in_rx_ind(nfapi_nr_dl_tti_request_pdu_t *pdu_list, fapi_nr_
...
@@ -374,7 +374,6 @@ static void fill_mib_in_rx_ind(nfapi_nr_dl_tti_request_pdu_t *pdu_list, fapi_nr_
rx_ind
->
rx_indication_body
[
pdu_idx
].
ssb_pdu
.
pdu
[
0
]
=
(
ssb_pdu
->
bchPayload
)
&
0xff
;
rx_ind
->
rx_indication_body
[
pdu_idx
].
ssb_pdu
.
pdu
[
0
]
=
(
ssb_pdu
->
bchPayload
)
&
0xff
;
rx_ind
->
rx_indication_body
[
pdu_idx
].
ssb_pdu
.
pdu
[
1
]
=
(
ssb_pdu
->
bchPayload
>>
8
)
&
0xff
;
rx_ind
->
rx_indication_body
[
pdu_idx
].
ssb_pdu
.
pdu
[
1
]
=
(
ssb_pdu
->
bchPayload
>>
8
)
&
0xff
;
rx_ind
->
rx_indication_body
[
pdu_idx
].
ssb_pdu
.
pdu
[
2
]
=
(
ssb_pdu
->
bchPayload
>>
16
)
&
0xff
;
rx_ind
->
rx_indication_body
[
pdu_idx
].
ssb_pdu
.
pdu
[
2
]
=
(
ssb_pdu
->
bchPayload
>>
16
)
&
0xff
;
rx_ind
->
rx_indication_body
[
pdu_idx
].
ssb_pdu
.
rsrp_dBm
=
ssb_pdu
->
ssbRsrp
;
rx_ind
->
rx_indication_body
[
pdu_idx
].
ssb_pdu
.
ssb_index
=
ssb_pdu
->
SsbBlockIndex
;
rx_ind
->
rx_indication_body
[
pdu_idx
].
ssb_pdu
.
ssb_index
=
ssb_pdu
->
SsbBlockIndex
;
rx_ind
->
rx_indication_body
[
pdu_idx
].
ssb_pdu
.
ssb_length
=
pdu_list
->
PDUSize
;
rx_ind
->
rx_indication_body
[
pdu_idx
].
ssb_pdu
.
ssb_length
=
pdu_list
->
PDUSize
;
rx_ind
->
rx_indication_body
[
pdu_idx
].
ssb_pdu
.
ssb_start_subcarrier
=
ssb_pdu
->
SsbSubcarrierOffset
;
rx_ind
->
rx_indication_body
[
pdu_idx
].
ssb_pdu
.
ssb_start_subcarrier
=
ssb_pdu
->
SsbSubcarrierOffset
;
...
@@ -1138,13 +1137,6 @@ static nr_dci_format_t handle_dci(NR_UE_MAC_INST_t *mac,
...
@@ -1138,13 +1137,6 @@ static nr_dci_format_t handle_dci(NR_UE_MAC_INST_t *mac,
return
nr_ue_process_dci_indication_pdu
(
mac
,
frame
,
slot
,
dci
);
return
nr_ue_process_dci_indication_pdu
(
mac
,
frame
,
slot
,
dci
);
}
}
static
void
handle_ssb_meas
(
NR_UE_MAC_INST_t
*
mac
,
uint8_t
ssb_index
,
int16_t
rsrp_dbm
,
float_t
sinr_dB
)
{
mac
->
ssb_measurements
.
ssb_index
=
ssb_index
;
mac
->
ssb_measurements
.
ssb_rsrp_dBm
=
rsrp_dbm
;
mac
->
ssb_measurements
.
ssb_sinr_dB
=
sinr_dB
;
}
// L2 Abstraction Layer
// L2 Abstraction Layer
// Note: sdu should always be processed because data and timing advance updates are transmitted by the UE
// Note: sdu should always be processed because data and timing advance updates are transmitted by the UE
static
int8_t
handle_dlsch
(
NR_UE_MAC_INST_t
*
mac
,
nr_downlink_indication_t
*
dl_info
,
int
pdu_id
)
static
int8_t
handle_dlsch
(
NR_UE_MAC_INST_t
*
mac
,
nr_downlink_indication_t
*
dl_info
,
int
pdu_id
)
...
@@ -1268,16 +1260,12 @@ static uint32_t nr_ue_dl_processing(NR_UE_MAC_INST_t *mac, nr_downlink_indicatio
...
@@ -1268,16 +1260,12 @@ static uint32_t nr_ue_dl_processing(NR_UE_MAC_INST_t *mac, nr_downlink_indicatio
rx_indication_body
.
pdu_type
,
rx_indication_body
.
pdu_type
,
dl_info
->
rx_ind
->
number_pdus
);
dl_info
->
rx_ind
->
number_pdus
);
switch
(
rx_indication_body
.
pdu_type
){
switch
(
rx_indication_body
.
pdu_type
)
{
case
FAPI_NR_RX_PDU_TYPE_SSB
:
case
FAPI_NR_RX_PDU_TYPE_SSB
:
handle_rlm
(
rx_indication_body
.
ssb_pdu
.
radiolink_monitoring
,
handle_rlm
(
rx_indication_body
.
ssb_pdu
.
radiolink_monitoring
,
dl_info
->
frame
,
dl_info
->
frame
,
mac
);
mac
);
if
(
rx_indication_body
.
ssb_pdu
.
decoded_pdu
)
{
if
(
rx_indication_body
.
ssb_pdu
.
decoded_pdu
)
{
handle_ssb_meas
(
mac
,
rx_indication_body
.
ssb_pdu
.
ssb_index
,
rx_indication_body
.
ssb_pdu
.
rsrp_dBm
,
rx_indication_body
.
ssb_pdu
.
sinr_dB
);
ret_mask
|=
(
handle_bcch_bch
(
mac
,
ret_mask
|=
(
handle_bcch_bch
(
mac
,
dl_info
->
cc_id
,
dl_info
->
cc_id
,
dl_info
->
gNB_index
,
dl_info
->
gNB_index
,
...
...
Luhan Wang
@luhan
mentioned in commit
4057cdaa
·
Nov 17, 2025
mentioned in commit
4057cdaa
mentioned in commit 4057cdaa80218a71f2e0f8b22de6ba5ce54a1964
Toggle commit list
Luhan Wang
@luhan
mentioned in commit
afa55ff9
·
Nov 17, 2025
mentioned in commit
afa55ff9
mentioned in commit afa55ff951ae9680d8a5161a78108e6ebbf6ed4a
Toggle commit list
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