Commit 6050c55a authored by General ABS's avatar General ABS Committed by rmagueta

Send SS-RSRP measurement for neighboring cell from PHY to RRC

parent f97b28bf
...@@ -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_CSIRS_IND 0x06 #define FAPI_NR_MEAS_IND 0x06
#define FAPI_NR_SIBS_MASK_SIB1 0x1 #define FAPI_NR_SIBS_MASK_SIB1 0x1
......
...@@ -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
......
...@@ -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);
}
} }
} }
......
...@@ -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_CSIRS_IND: case FAPI_NR_MEAS_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;
......
...@@ -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,
......
...@@ -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 {
......
...@@ -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];
......
...@@ -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);
......
...@@ -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);
......
...@@ -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_CSIRS_IND: case FAPI_NR_MEAS_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_CSIRS_IND; &rx_indication_body.l1_measurements)) << FAPI_NR_MEAS_IND;
break; break;
default: default:
break; break;
......
...@@ -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;
} }
......
...@@ -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 == 100) { if (number_of_received_meas == 200) {
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;
} }
......
...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment