Commit 2fdce508 authored by Rangaswami's avatar Rangaswami Committed by r.karey

Initial commits for TCI and CSI reporting changes

parent 7af14dd7
This diff is collapsed.
...@@ -179,14 +179,14 @@ typedef struct { ...@@ -179,14 +179,14 @@ typedef struct {
uint8_t vrb_map_UL[100]; uint8_t vrb_map_UL[100];
/// number of subframe allocation pattern available for MBSFN sync area /// number of subframe allocation pattern available for MBSFN sync area
uint8_t num_sf_allocation_pattern; uint8_t num_sf_allocation_pattern;
///Number of active SSBs ///Number of active SSBs
uint8_t num_active_ssb; uint8_t num_active_ssb;
//Total available prach occasions per configuration period //Total available prach occasions per configuration period
uint32_t total_prach_occasions_per_config_period; uint32_t total_prach_occasions_per_config_period;
//Total available prach occasions //Total available prach occasions
uint32_t total_prach_occasions; uint32_t total_prach_occasions;
//Max Association period //Max Association period
uint8_t max_association_period; uint8_t max_association_period;
} NR_COMMON_channels_t; } NR_COMMON_channels_t;
...@@ -218,8 +218,17 @@ typedef struct pdcchStateInd { ...@@ -218,8 +218,17 @@ typedef struct pdcchStateInd {
uint8_t servingCellId; uint8_t servingCellId;
uint8_t coresetId; uint8_t coresetId;
uint8_t tciStateId; uint8_t tciStateId;
bool tci_present_inDCI;
} pdcchStateInd_t; } pdcchStateInd_t;
typedef struct pucchSpatialRelation {
bool is_scheduled;
uint8_t servingCellId;
uint8_t bwpId;
uint8_t pucchResourceId;
bool s0tos7_actDeact[8];
} pucchSpatialRelation_t;
typedef struct SPCSIReportingpucch { typedef struct SPCSIReportingpucch {
bool is_scheduled; bool is_scheduled;
uint8_t servingCellId; uint8_t servingCellId;
...@@ -243,12 +252,14 @@ typedef struct pdschTciStatesActDeact { ...@@ -243,12 +252,14 @@ typedef struct pdschTciStatesActDeact {
uint8_t bwpId; uint8_t bwpId;
uint8_t highestTciStateActivated; uint8_t highestTciStateActivated;
bool tciStateActDeact[MAX_TCI_STATES]; bool tciStateActDeact[MAX_TCI_STATES];
uint8_t codepoint[8];
} pdschTciStatesActDeact_t; } pdschTciStatesActDeact_t;
typedef struct UE_info { typedef struct UE_info {
sp_zp_csirs_t sp_zp_csi_rs; sp_zp_csirs_t sp_zp_csi_rs;
csi_rs_im_t csi_im; csi_rs_im_t csi_im;
pdcchStateInd_t pdcch_state_ind; pdcchStateInd_t pdcch_state_ind;
pucchSpatialRelation_t pucch_spatial_relation;
SPCSIReportingpucch_t SP_CSI_reporting_pucch; SPCSIReportingpucch_t SP_CSI_reporting_pucch;
aperiodicCSI_triggerStateSelection_t aperi_CSI_trigger; aperiodicCSI_triggerStateSelection_t aperi_CSI_trigger;
pdschTciStatesActDeact_t pdsch_TCI_States_ActDeact; pdschTciStatesActDeact_t pdsch_TCI_States_ActDeact;
...@@ -270,6 +281,58 @@ typedef struct NR_UE_harq { ...@@ -270,6 +281,58 @@ typedef struct NR_UE_harq {
uint16_t feedback_slot; uint16_t feedback_slot;
} NR_UE_harq_t; } NR_UE_harq_t;
//! fixme : need to enhace for the multiple TB CQI report
//
/*! As per spec 38.214 section 5.2.1.4.2
* - if the UE is configured with the higher layer parameter groupBasedBeamReporting set to 'disabled', the UE shall report in
a single report nrofReportedRS (higher layer configured) different CRI or SSBRI for each report setting.
* - if the UE is configured with the higher layer parameter groupBasedBeamReporting set to 'enabled', the UE shall report in a
single reporting instance two different CRI or SSBRI for each report setting, where CSI-RS and/or SSB
resources can be received simultaneously by the UE either with a single spatial domain receive filter, or with
multiple simultaneous spatial domain receive filter
*/
#define MAX_NR_OF_REPORTED_RS 4
typedef enum NR_CSI_Report_Config {
CSI_Report_PR_cri_ri_li_pmi_cqi_report,
CSI_Report_PR_ssb_cri_report
} NR_CSI_Report_Config_PR;
struct CRI_RI_LI_PMI_CQI {
uint8_t cri;
uint8_t ri;
uint8_t li;
uint8_t pmi_x1;
uint8_t pmi_x2;
uint8_t cqi;
};
typedef struct CRI_SSB_RSRP {
uint8_t nr_ssbri_cri;
uint8_t CRI_SSBRI[MAX_NR_OF_REPORTED_RS];
uint8_t RSRP;
uint8_t diff_RSRP[MAX_NR_OF_REPORTED_RS - 1];
} CRI_SSB_RSRP_t;
struct CSI_Report {
NR_CSI_Report_Config_PR present;
union Config_CSI_Report {
struct CRI_RI_LI_PMI_CQI cri_ri_li_pmi_cqi_report;
struct CRI_SSB_RSRP ssb_cri_report;
} choice;
};
#define MAX_SR_BITLEN 8
typedef struct NR_UE_sr {
uint8_t nr_of_srs;
bool ul_SR [MAX_SR_BITLEN];
} NR_UE_sr_t;
/*! As per the spec 38.212 and table: 6.3.1.1.2-12 in a single UCI sequence we can have multiple CSI_report
the number of CSI_report will depend on number of CSI resource sets that are configured in CSI-ResourceConfig RRC IE
From spec 38.331 from the IE CSI-ResourceConfig for SSB RSRP reporting we can configure only one resource set
From spec 38.214 section 5.2.1.2 For periodic and semi-persistent CSI Resource Settings, the number of CSI-RS Resource Sets configured is limited to S=1
*/
#define MAX_CSI_RESOURCE_SET_IN_CSI_RESOURCE_CONFIG 16
/*! \brief scheduling control information set through an API */ /*! \brief scheduling control information set through an API */
typedef struct { typedef struct {
uint64_t dlsch_in_slot_bitmap; // static bitmap signaling which slot in a tdd period contains dlsch uint64_t dlsch_in_slot_bitmap; // static bitmap signaling which slot in a tdd period contains dlsch
...@@ -278,6 +341,9 @@ typedef struct { ...@@ -278,6 +341,9 @@ typedef struct {
uint16_t ta_timer; uint16_t ta_timer;
int16_t ta_update; int16_t ta_update;
uint8_t current_harq_pid; uint8_t current_harq_pid;
uint8_t nr_of_csi_report[MAX_MOBILES_PER_GNB];
struct CSI_Report CSI_report[MAX_MOBILES_PER_GNB][MAX_CSI_RESOURCE_SET_IN_CSI_RESOURCE_CONFIG];
NR_UE_sr_t sr_req;
NR_UE_harq_t harq_processes[NR_MAX_NB_HARQ_PROCESSES]; NR_UE_harq_t harq_processes[NR_MAX_NB_HARQ_PROCESSES];
int dummy; int dummy;
NR_UE_mac_ce_ctrl_t UE_mac_ce_ctrl;// MAC CE related information NR_UE_mac_ce_ctrl_t UE_mac_ce_ctrl;// MAC CE related information
...@@ -305,7 +371,7 @@ typedef struct { ...@@ -305,7 +371,7 @@ typedef struct {
rnti_t tc_rnti[MAX_MOBILES_PER_GNB]; rnti_t tc_rnti[MAX_MOBILES_PER_GNB];
NR_preamble_ue preambles[MAX_MOBILES_PER_GNB]; NR_preamble_ue preambles[MAX_MOBILES_PER_GNB];
NR_CellGroupConfig_t *secondaryCellGroup[MAX_MOBILES_PER_GNB]; NR_CellGroupConfig_t *secondaryCellGroup[MAX_MOBILES_PER_GNB];
uint8_t UE_ssb_index[MAX_MOBILES_PER_GNB]; uint8_t UE_ssb_index[MAX_MOBILES_PER_GNB];
} NR_UE_list_t; } NR_UE_list_t;
typedef struct { typedef struct {
...@@ -317,7 +383,7 @@ typedef struct { ...@@ -317,7 +383,7 @@ typedef struct {
#define MAX_NUM_OF_SSB 64 #define MAX_NUM_OF_SSB 64
typedef struct { typedef struct {
uint8_t ssb_index; uint8_t ssb_index;
int num_UEs; int num_UEs;
NR_SSB_UE_list_t SSB_UE_list[MAX_MOBILES_PER_GNB]; NR_SSB_UE_list_t SSB_UE_list[MAX_MOBILES_PER_GNB];
} NR_SSB_list_t; } NR_SSB_list_t;
......
This diff is collapsed.
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