Commit e6debab9 authored by Florian Kaltenberger's avatar Florian Kaltenberger

modification from IS-Wireless regarding CQI feedback

parent a1403400
...@@ -41,7 +41,11 @@ ...@@ -41,7 +41,11 @@
#include <stdint.h> #include <stdint.h>
#include <stdbool.h> #include <stdbool.h>
#if defined (__cplusplus)
extern "C" {
#endif
/** /**
* Constants. See section 4.4 * Constants. See section 4.4
*/ */
...@@ -64,8 +68,8 @@ ...@@ -64,8 +68,8 @@
#define MAX_SI_MSG_SIZE 65535 #define MAX_SI_MSG_SIZE 65535
#define MAX_CQI_LIST 30 #define MAX_CQI_LIST 30
#define MAX_UE_SELECTED_SB 6 #define MAX_UE_SELECTED_SB 6 //comes from Table 7.2.1-5, 36.213
#define MAX_HL_SB 25 #define MAX_HL_SB 13 //comes from Table 7.2.1-3, 36.213
#define MAX_SINR_RB_LIST 100 #define MAX_SINR_RB_LIST 100
#define MAX_SR_LIST 30 #define MAX_SR_LIST 30
#define MAX_MAC_CE_LIST 30 #define MAX_MAC_CE_LIST 30
...@@ -170,7 +174,7 @@ struct UlDciListElement_s ...@@ -170,7 +174,7 @@ struct UlDciListElement_s
bool cifPresent; bool cifPresent;
uint8_t cif; uint8_t cif;
/// this is the carrier index where the DCI will be transmitted on /// this is the carrier index where the DCI will be transmitted on
uint8_t carrierIndex; uint8_t servCellIndex; //definition according to 36.331 'ServCellIndex'
}; };
/** /**
...@@ -240,7 +244,7 @@ struct PhichListElement_s ...@@ -240,7 +244,7 @@ struct PhichListElement_s
{ {
ACK, NACK ACK, NACK
} phich; } phich;
uint8_t carrierIndex; uint8_t servCellIndex; //definition according to 36.331 'ServCellIndex'
}; };
/** /**
...@@ -264,7 +268,7 @@ struct BuildDataListElement_s ...@@ -264,7 +268,7 @@ struct BuildDataListElement_s
uint8_t ceBitmap[MAX_TB_LIST]; uint8_t ceBitmap[MAX_TB_LIST];
uint8_t nr_rlcPDU_List; uint8_t nr_rlcPDU_List;
struct RlcPduListElement_s *rlcPduList[MAX_TB_LIST]; struct RlcPduListElement_s *rlcPduList[MAX_TB_LIST];
uint8_t carrierIndex; uint8_t servCellIndex; //definition according to 36.331 'ServCellIndex'
/* Hex content of Activation/Deactivation MAC CE */ /* Hex content of Activation/Deactivation MAC CE */
uint8_t activationDeactivationCE; uint8_t activationDeactivationCE;
}; };
...@@ -306,7 +310,7 @@ struct UlInfoListElement_s ...@@ -306,7 +310,7 @@ struct UlInfoListElement_s
Ok, NotOk, NotValid Ok, NotOk, NotValid
} receptionStatus; } receptionStatus;
uint8_t tpc; uint8_t tpc;
uint8_t carrierIndex; uint8_t servCellIndex; //definition according to 36.331 'ServCellIndex'
}; };
/** /**
...@@ -449,75 +453,112 @@ struct DlInfoListElement_s ...@@ -449,75 +453,112 @@ struct DlInfoListElement_s
{ {
uint16_t rnti; uint16_t rnti;
uint8_t harqProcessId; uint8_t harqProcessId;
uint8_t nr_harqStatus;
enum HarqStatus_e enum HarqStatus_e
{ {
ff_ACK, ff_NACK, ff_DTX ff_ACK, ff_NACK, ff_DTX
} harqStatus[MAX_TB_LIST]; } harqStatus[MAX_TB_LIST];
uint8_t carrierIndex; uint8_t servCellIndex; //definition according to 36.331 'ServCellIndex'
}; };
/**
* \brief See section 4.3.28 bwPart
*/
struct BwPart_s
{
uint8_t bwPartIndex;
uint8_t sb;
uint8_t cqi;
};
/** /**
* \brief See section 4.3.27 higherLayerSelected * \brief Represents types of SCI reports for all CSI reporting modes. \a mode indicates which structure is held in \a report union.
*/ */
struct HigherLayerSelected_s struct CsiReport_s
{ {
uint8_t sbPmi; uint8_t ri;
uint8_t sbCqi[MAX_TB_LIST];
};
/** enum CsiRepMode_e
* \brief See section 4.3.26 ueSelected {
*/ P10, P11, P20, P21, A12, A22, A20, A30, A31
struct UeSelected_s } mode;
{
uint8_t sbList[MAX_UE_SELECTED_SB];
uint8_t sbPmi;
uint8_t sbCqi[MAX_TB_LIST];
};
/** union
* \brief See section 4.3.25 sbMeasResult {
*/ struct A12Csi_s
struct SbMeasResult_s {
{ uint8_t wbCqi[MAX_TB_LIST];
struct UeSelected_s ueSelected; uint8_t sbPmi[MAX_HL_SB];
struct HigherLayerSelected_s higherLayerSelected[MAX_HL_SB]; } A12Csi;
struct BwPart_s bwPart;
struct A30Csi_s
{
uint8_t wbCqi;
uint8_t sbCqi[MAX_HL_SB];
} A30Csi;
struct A31Csi_s
{
uint8_t wbCqi[MAX_TB_LIST];
uint8_t sbCqi[MAX_HL_SB][MAX_TB_LIST];
uint8_t wbPmi;
} A31Csi;
struct A20Csi_s
{
uint8_t wbCqi;
uint8_t sbCqi;
uint8_t sbList[MAX_UE_SELECTED_SB];
} A20Csi;
struct A22Csi_s
{
uint8_t wbCqi[MAX_TB_LIST];
uint8_t sbCqi[MAX_TB_LIST];
uint8_t wbPmi;
uint8_t sbPmi;
uint8_t sbList[MAX_UE_SELECTED_SB];
} A22Csi;
struct P10Csi_s
{
uint8_t wbCqi;
} P10Csi;
struct P11Csi_s
{
uint8_t wbCqi[MAX_TB_LIST];
uint8_t wbPmi;
} P11Csi;
struct P20Csi_s
{
uint8_t wbCqi;
uint8_t sbCqi;
uint8_t bwPartIndex; //range 0-3; to cover maximum number of BW parts (J)
uint8_t sbIndex; //range 0-3; to cover maximum number of subbands inside BW part (Nj)
} P20Csi;
struct P21Csi_s
{
uint8_t wbCqi[MAX_TB_LIST];
uint8_t wbPmi;
uint8_t sbCqi[MAX_TB_LIST];
uint8_t bwPartIndex; //range 0-3; to cover maximum number of BW parts (J)
uint8_t sbIndex; //range 0-3; to cover maximum number of subbands inside BW part (Nj)
} P21Csi;
} report;
}; };
/** /**
* \brief See section 4.3.24 cqiListElement * \brief Modified structure holding CSI report for single UE (for original structure see section 4.3.24 cqiListElement).
*/ */
struct CqiListElement_s struct CqiListElement_s
{ {
uint16_t rnti; uint16_t rnti;
uint8_t ri; struct CsiReport_s csiReport;
enum CqiType_e uint8_t servCellIndex; //definition according to 36.331 'ServCellIndex'
{
P10, P11, P20, P21, A12, A22, A20, A30, A31
} cqiType;
uint8_t wbCqi[MAX_TB_LIST];
uint8_t wbPmi;
struct SbMeasResult_s sbMeasResult;
uint8_t carrierIndex;
}; };
/** /**
* \brief See section 4.3.29 ulCQI * \brief See section 4.3.29 ulCQI
*/ */
struct UlCqi_s struct UlCqi_s
{ {
uint16_t rnti;
uint16_t sinr[MAX_SINR_RB_LIST]; uint16_t sinr[MAX_SINR_RB_LIST];
enum UlCqiType_e enum UlCqiType_e
{ {
...@@ -527,7 +568,7 @@ struct UlCqi_s ...@@ -527,7 +568,7 @@ struct UlCqi_s
ff_PUCCH_2, ff_PUCCH_2,
ff_PRACH ff_PRACH
} type; } type;
uint8_t carrierIndex; uint8_t servCellIndex; //definition according to 36.331 'ServCellIndex'
}; };
/** /**
...@@ -566,4 +607,8 @@ struct PdcchOfdmSymbolCountListElement_s ...@@ -566,4 +607,8 @@ struct PdcchOfdmSymbolCountListElement_s
uint8_t pdcchOfdmSymbolCount; uint8_t pdcchOfdmSymbolCount;
}; };
#if defined (__cplusplus)
}
#endif
#endif /* FF_MAC_COMMON_H */ #endif /* FF_MAC_COMMON_H */
...@@ -43,6 +43,10 @@ ...@@ -43,6 +43,10 @@
#include "ff-mac-common.h" #include "ff-mac-common.h"
#if defined (__cplusplus)
extern "C" {
#endif
/** /**
* Parameters of the API primitives * Parameters of the API primitives
*/ */
...@@ -187,6 +191,7 @@ struct CschedUeConfigReqParameters ...@@ -187,6 +191,7 @@ struct CschedUeConfigReqParameters
} tddAckNackFeedbackMode; } tddAckNackFeedbackMode;
uint8_t ackNackRepetitionFactor; uint8_t ackNackRepetitionFactor;
bool extendedBSRSizes;
bool caSupport; bool caSupport;
bool crossCarrierSchedSupport; bool crossCarrierSchedSupport;
...@@ -386,4 +391,8 @@ void CschedUeConfigUpdateInd (const struct CschedUeConfigUpdateIndParameters *pa ...@@ -386,4 +391,8 @@ void CschedUeConfigUpdateInd (const struct CschedUeConfigUpdateIndParameters *pa
void CschedCellConfigUpdateInd (const struct CschedCellConfigUpdateIndParameters *params); void CschedCellConfigUpdateInd (const struct CschedCellConfigUpdateIndParameters *params);
#if defined (__cplusplus)
}
#endif
#endif /* FF_MAC_CSCHED_SAP_H */ #endif /* FF_MAC_CSCHED_SAP_H */
...@@ -43,6 +43,9 @@ ...@@ -43,6 +43,9 @@
#include "ff-mac-common.h" #include "ff-mac-common.h"
#if defined (__cplusplus)
extern "C" {
#endif
/** /**
* Parameters of the API primitives * Parameters of the API primitives
...@@ -178,7 +181,7 @@ struct SchedUlMacCtrlInfoReqParameters ...@@ -178,7 +181,7 @@ struct SchedUlMacCtrlInfoReqParameters
{ {
uint16_t sfnSf; uint16_t sfnSf;
uint8_t nr_macCEUL_List; uint8_t nr_macCEUL_List;
struct MacCeUlListElement_s macCeUlList; struct MacCeUlListElement_s *macCeUlList;
uint8_t nr_vendorSpecificList; uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList; struct VendorSpecificListElement_s *vendorSpecificList;
}; };
...@@ -190,7 +193,8 @@ struct SchedUlMacCtrlInfoReqParameters ...@@ -190,7 +193,8 @@ struct SchedUlMacCtrlInfoReqParameters
struct SchedUlCqiInfoReqParameters struct SchedUlCqiInfoReqParameters
{ {
uint16_t sfnSf; uint16_t sfnSf;
struct UlCqi_s ulCqi; uint8_t nr_ulCqiList;
struct UlCqi_s* ulCqiList;
uint8_t nr_vendorSpecificList; uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList; struct VendorSpecificListElement_s *vendorSpecificList;
}; };
...@@ -271,4 +275,8 @@ void SchedDlConfigInd (const struct SchedDlConfigIndParameters* params); ...@@ -271,4 +275,8 @@ void SchedDlConfigInd (const struct SchedDlConfigIndParameters* params);
void SchedUlConfigInd (const struct SchedUlConfigIndParameters* params); void SchedUlConfigInd (const struct SchedUlConfigIndParameters* params);
#if defined (__cplusplus)
}
#endif
#endif /* FF_MAC_SCHED_SAP_H */ #endif /* FF_MAC_SCHED_SAP_H */
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