#define EVENT_DL_CQI_TO_SCH 32
#define EVENT_UL_CQI_TO_SCH 33
#define EVENT_PHR_IND_TO_SCH 34
+#define EVENT_STATISTICS_REQ_TO_SCH 35
+#define EVENT_STATISTICS_RSP_TO_MAC 36
+#define EVENT_STATISTICS_IND_TO_MAC 37
+#define EVENT_STATISTICS_DELETE_REQ_TO_SCH 38
+#define EVENT_STATISTICS_DELETE_RSP_TO_MAC 39
+#define EVENT_STATISTICS_MODIFY_REQ_TO_SCH 40
+#define EVENT_STATISTICS_MODIFY_RSP_TO_MAC 41
+
/*macros*/
#define MAX_SSB_IDX 1 /* forcing it as 1 for now. Right value is 64 */
#define SCH_SSB_MASK_SIZE 1
#define MAX_PHR_REPORT 1 /*TODO: Range of PHR reports in multiple PHR.*/
#define MAX_FAILURE_DET_RESOURCES 10 /*Spec 38.331 'maxNrofFailureDetectionResources'*/
+/*As per SCF222_5GFAPI, 'MaxDciPerSlot' defines this value but this parameter value is missing in Spec.*/
+#ifdef INTEL_FAPI
+ #define MAX_NUM_PDCCH 1
+#else
+ #define MAX_NUM_PDCCH 2
+#endif
+
#define ADD_DELTA_TO_TIME(crntTime, toFill, incr, numOfSlot) \
{ \
if ((crntTime.slot + incr) > (numOfSlot - 1)) \
RRC_CONNECTED_USERS_RSRC
}SchResourceType;
-typedef enum
-{
- SLICE_NOT_FOUND,
- SLICE_CONFIGURED,
- SLICE_RECONFIGURED,
- RESOURCE_NOT_AVAILABLE
-}RspCause;
-
typedef enum
{
NO_TRANSMISSION,
REPEATITION
}PduTxOccsaion;
-typedef enum
-{
- UNSPECIFIED_CAUSE,
- INVALID_PARAM_VALUE,
- RESOURCE_UNAVAILABLE,
- SYSTEM_ERROR
-}SchFailureCause;
-
typedef enum
{
SR_PROHIBIT_MS1,
SR_PROHIBIT_MS128
}SchSrProhibitTimer;
-typedef enum
-{
- NOT_APPLICABLE,
- INVALID_CELLID,
- INVALID_UEID
-}ErrorCause;
-
typedef enum
{
SR_TRANS_MAX_N4,
typedef enum
{
- SLOT_PERIODICITY_AND_OFFSET_SL_1 = 1,
- SLOT_PERIODICITY_AND_OFFSET_SL_2,
- SLOT_PERIODICITY_AND_OFFSET_SL_4,
- SLOT_PERIODICITY_AND_OFFSET_SL_5,
- SLOT_PERIODICITY_AND_OFFSET_SL_8,
- SLOT_PERIODICITY_AND_OFFSET_SL_10,
- SLOT_PERIODICITY_AND_OFFSET_SL_16,
- SLOT_PERIODICITY_AND_OFFSET_SL_20,
- SLOT_PERIODICITY_AND_OFFSET_SL_40,
- SLOT_PERIODICITY_AND_OFFSET_SL_80,
- SLOT_PERIODICITY_AND_OFFSET_SL_160,
- SLOT_PERIODICITY_AND_OFFSET_SL_320,
- SLOT_PERIODICITY_AND_OFFSET_SL_640,
- SLOT_PERIODICITY_AND_OFFSET_SL_1280,
- SLOT_PERIODICITY_AND_OFFSET_SL_2560
-}SchMSlotPeriodAndOffset;
+ SLOT_PERIODICITY_SL_1 = 1,
+ SLOT_PERIODICITY_SL_2,
+ SLOT_PERIODICITY_SL_4,
+ SLOT_PERIODICITY_SL_5,
+ SLOT_PERIODICITY_SL_8,
+ SLOT_PERIODICITY_SL_10,
+ SLOT_PERIODICITY_SL_16,
+ SLOT_PERIODICITY_SL_20,
+ SLOT_PERIODICITY_SL_40,
+ SLOT_PERIODICITY_SL_80,
+ SLOT_PERIODICITY_SL_160,
+ SLOT_PERIODICITY_SL_320,
+ SLOT_PERIODICITY_SL_640,
+ SLOT_PERIODICITY_SL_1280,
+ SLOT_PERIODICITY_SL_2560
+}SchMSlotPeriodicity;
typedef enum
{
CQI_PUSCH
}CqiUlReportType;
+/* Performance measurements from 3GPP TS 28.552 Release 15 */
+typedef enum
+{
+ SCH_DL_TOTAL_PRB_USAGE,
+ SCH_UL_TOTAL_PRB_USAGE
+}SchMeasurementType;
+
/*structures*/
typedef struct timeDomainAlloc
{
/* coreset-0 configuration */
CoresetCfg coresetCfg;
uint16_t numDlDci;
- DlDCI dci; /* as of now its only one DCI, later it will be numDlCi */
+ DlDCI dci[MAX_NUM_PDCCH];
} PdcchCfg;
/* end of SIB1 PDCCH structures */
typedef struct schPlmnInfoList
{
Plmn plmn;
- uint8_t numSliceSupport; /* Total slice supporting */
- Snssai **snssai; /* List of supporting snssai*/
+ SupportedSliceList suppSliceList;
}SchPlmnInfoList;
#ifdef NR_DRX
uint16_t phyCellId; /* Physical cell id */
SchPlmnInfoList plmnInfoList[MAX_PLMN]; /* Consits of PlmnId and Snssai list */
SchDuplexMode dupMode; /* Duplex type: TDD/FDD */
- uint8_t numerology; /* Supported numerology */
uint8_t dlBandwidth; /* Supported B/W */
uint8_t ulBandwidth; /* Supported B/W */
SchDlCfgCommon dlCfgCommon; /*Spec 38.331 DownlinkConfigCommonSIB*/
SchSSBPeriod ssbPeriod; /* SSB Periodicity in msec */
uint32_t ssbFrequency; /* SB frequency in kHz*/
uint8_t dmrsTypeAPos;
- uint8_t scsCommon; /* subcarrier spacing for common [0-3]*/
- SchPdcchConfigSib1 pdcchCfgSib1; /* Req to configure CORESET#0 and SearchSpace#0*/
+ uint8_t ssbScs; /* SSB subcarrier spacing*/
+ SchPdcchConfigSib1 pdcchCfgSib1; /* Req to configure CORESET#0 and SearchSpace#0*/
uint32_t ssbPbchPwr; /* SSB block power */
uint8_t ssbSubcOffset; /* Subcarrier Offset(Kssb) */
uint16_t sib1PduLen;
{
uint16_t cellId; /* Cell Id */
SchMacRsp rsp;
- SchFailureCause cause;
+ CauseOfResult cause;
}SchCellCfgCfm;
/*Ref: ORAN_WG8.V7.0.0 Sec 11.2.4.2.2 Cell Del Req*/
{
uint16_t cellId;
SchMacRsp rsp;
- SchFailureCause cause;
+ CauseOfResult cause;
}SchCellDeleteRsp;
/*Ref: ORAN_WG8.V7.0.0 Sec 11.2.4.2.3*/
{
Snssai snssai;
SchMacRsp rsp;
- RspCause cause;
+ CauseOfResult cause;
}SchSliceCfgRsp;
/*As per ORAN-WG8 V7.0.0 Sec 11.2.4.3.4 , Slice Cfg and Recfg are same structures*/
typedef struct schPuschInfo
{
uint8_t harqProcId; /* HARQ Process ID */
+ uint16_t crnti;
FreqDomainAlloc fdAlloc; /* Freq domain allocation */
TimeDomainAlloc tdAlloc; /* Time domain allocation */
TbInfo tbInfo; /* TB info */
typedef struct schPucchInfo
{
+ uint16_t crnti;
FreqDomainRsrc fdAlloc;
TimeDomainAlloc tdAlloc;
uint8_t srFlag;
typedef struct schPuschUci
{
uint8_t harqProcId; /* HARQ Process ID */
+ uint16_t crnti;
FreqDomainAlloc fdAlloc; /* Freq domain allocation */
TimeDomainAlloc tdAlloc; /* Time domain allocation */
TbInfo tbInfo; /* TB information */
typedef struct ulSchedInfo
{
uint16_t cellId; /* Cell Id */
- uint16_t crnti; /* CRNI */
SlotTimingInfo slotIndInfo; /* Slot Info: sfn, slot number */
uint8_t dataType; /* Type of info being scheduled */
SchPrachInfo prachSchInfo; /* Prach scheduling info */
- SchPuschInfo schPuschInfo; /* Pusch scheduling info */
- SchPuschUci schPuschUci; /* Pusch Uci */
- SchPucchInfo schPucchInfo; /* Pucch and Uci scheduling info */
+ SchPuschInfo schPuschInfo[MAX_NUM_UE]; /* Pusch scheduling info */
+ SchPuschUci schPuschUci[MAX_NUM_UE]; /* Pusch Uci */
+ SchPucchInfo schPucchInfo[MAX_NUM_UE]; /* Pucch and Uci scheduling info */
}UlSchedInfo;
/* Info of Scheduling Request to Add/Modify */
uint16_t dmrsScramblingId;
}SchControlRsrcSet;
+/*Slot Perioicity and Offset*/
+typedef struct schMSlotPeriodAndOffset
+{
+ SchMSlotPeriodicity mSlotPeriodicity;
+ uint16_t mSlotOffset;
+}SchMSlotPeriodAndOffset;
+
/* Search Space info */
typedef struct schSearchSpace
{
typedef struct schUeCfgReq
{
uint16_t cellId;
- uint8_t ueId;
uint8_t beamIdx;
uint16_t crnti;
bool macCellGrpCfgPres;
typedef struct schUeRecfgReq
{
uint16_t cellId;
- uint8_t ueId;
uint8_t beamIdx;
uint16_t crnti;
bool macCellGrpRecfgPres;
{
uint16_t cellId;
uint8_t beamIdx;
- uint16_t ueId;
uint16_t crnti;
SchMacRsp rsp;
- SchFailureCause cause;
+ CauseOfResult cause;
}SchUeCfgRsp;
/*As per WG8 V7.0.0 Sec 11.2.4.3.6, UE ReCFG and UECFG have same structure definition*/
uint16_t cellId;
uint16_t crnti;
SchMacRsp rsp;
- ErrorCause cause;
+ CauseOfResult cause;
}SchUeDeleteRsp;
/*Spec O-RAN, WG8, V7.0.0, '11.2.4.2.8' DL HARQ Indication*/
SchUeHqInfo *ueHqInfo;
}SchRlsHqInfo;
+/* Statistics Request from MAC to SCH */
+typedef struct schStatsGrpInfo
+{
+ uint8_t groupId;
+ uint16_t periodicity; /* In milliseconds */
+ uint8_t numStats;
+ SchMeasurementType statsList[MAX_NUM_STATS];
+}SchStatsGrpInfo;
+
+typedef struct schStatsReq
+{
+ uint64_t subscriptionId;
+ uint8_t numStatsGroup;
+ SchStatsGrpInfo statsGrpList[MAX_NUM_STATS_GRP];
+}SchStatsReq;
+
+typedef struct schStatsReq SchStatsModificationReq;
+typedef struct schStatsRsp SchStatsModificationRsp;
+
+/* Statistics Response from SCH to MAC */
+typedef struct schStatsGrpRejected
+{
+ uint8_t groupId;
+ CauseOfResult cause;
+}SchStatsGrpRejected;
+
+typedef struct schStatsRsp
+{
+ uint64_t subscriptionId;
+ uint8_t numGrpAccepted;
+ uint8_t statsGrpAcceptedList[MAX_NUM_STATS_GRP];
+ uint8_t numGrpRejected;
+ SchStatsGrpRejected statsGrpRejectedList[MAX_NUM_STATS_GRP];
+}SchStatsRsp;
+
+/* Statistics Indication from SCH to MAC */
+typedef struct schStats
+{
+ SchMeasurementType type;
+ double value;
+}SchStats;
+
+typedef struct schStatsInd
+{
+ uint64_t subscriptionId;
+ uint8_t groupId;
+ uint8_t numStats;
+ SchStats measuredStatsList[MAX_NUM_STATS];
+}SchStatsInd;
+
+typedef struct schStatsDeleteReq
+{
+ uint64_t subscriptionId;
+ uint8_t numStatsGroupToBeDeleted;
+ uint8_t statsGrpIdToBeDelList[MAX_NUM_STATS_GRP];
+}SchStatsDeleteReq;
+
+typedef struct statsDeleteResult
+{
+ uint8_t groupId;
+ SchMacRsp statsGrpDelRsp;
+ CauseOfResult statsGrpDelCause;
+}StatsDeleteResult;
+
+typedef struct schStatsDeleteRsp
+{
+ uint64_t subscriptionId; /* subscription Id */
+ SchMacRsp subsDelRsp; /* deletion status of all statsGrp with given subscriptionId */
+ CauseOfResult subsDelCause; /* cause of failure in deletion of all statsGrp with given subscriptionId*/
+ uint8_t numStatsGroupDeleted; /* num of action deleted */
+ StatsDeleteResult statsGrpDelInfo[MAX_NUM_STATS_GRP]; /* list of the deletion status for specific actions */
+}SchStatsDeleteRsp;
+
/* function declarations */
-uint8_t schActvInit(Ent entity, Inst instId, Region region, Reason reason);
uint8_t MacMessageRouter(Pst *pst, void *msg);
uint8_t SchMessageRouter(Pst *pst, void *msg);