Index: src/lte/model/fdtbfq-ff-mac-scheduler.h |
=================================================================== |
--- a/src/lte/model/fdtbfq-ff-mac-scheduler.h |
+++ b/src/lte/model/fdtbfq-ff-mac-scheduler.h |
@@ -32,12 +32,16 @@ |
#include <ns3/lte-amc.h> |
#include <ns3/lte-ffr-sap.h> |
-// value for SINR outside the range defined by FF-API, used to indicate that there |
-// is no CQI for this element |
+/** |
+ * value for SINR outside the range defined by FF-API, used to indicate that there |
+ * is no CQI for this element |
+ */ |
#define NO_SINR -5000 |
+/// HARQ number of processes |
#define HARQ_PROC_NUM 8 |
+/// HARQ DL timeout |
#define HARQ_DL_TIMEOUT 11 |
namespace ns3 { |
@@ -46,8 +50,8 @@ |
typedef std::vector < uint8_t > DlHarqProcessesStatus_t; |
typedef std::vector < uint8_t > DlHarqProcessesTimer_t; |
typedef std::vector < DlDciListElement_s > DlHarqProcessesDciBuffer_t; |
-typedef std::vector < std::vector <struct RlcPduListElement_s> > RlcPduList_t; // vector of the LCs and layers per UE |
-typedef std::vector < RlcPduList_t > DlHarqRlcPduListBuffer_t; // vector of the 8 HARQ processes per UE |
+typedef std::vector < std::vector <struct RlcPduListElement_s> > RlcPduList_t; ///< vector of the LCs and layers per UE |
+typedef std::vector < RlcPduList_t > DlHarqRlcPduListBuffer_t; ///< vector of the 8 HARQ processes per UE |
typedef std::vector < UlDciListElement_s > UlHarqProcessesDciBuffer_t; |
typedef std::vector < uint8_t > UlHarqProcessesStatus_t; |
@@ -58,15 +62,15 @@ |
*/ |
struct fdtbfqsFlowPerf_t |
{ |
- Time flowStart; |
- uint64_t packetArrivalRate; /// packet arrival rate( byte/s) |
- uint64_t tokenGenerationRate; /// token generation rate ( byte/s ) |
- uint32_t tokenPoolSize; /// current size of token pool (byte) |
- uint32_t maxTokenPoolSize; /// maximum size of token pool (byte) |
- int counter; /// the number of token borrow or given to token bank |
- uint32_t burstCredit; /// the maximum number of tokens connection i can borrow from the bank each time |
- int debtLimit; /// counter threshold that the flow cannot further borrow tokens from bank |
- uint32_t creditableThreshold; /// the flow cannot borrow token from bank until the number of token it has deposited to bank reaches this threshold |
+ Time flowStart; ///< flow start time |
+ uint64_t packetArrivalRate; ///< packet arrival rate( byte/s) |
+ uint64_t tokenGenerationRate; ///< token generation rate ( byte/s ) |
+ uint32_t tokenPoolSize; ///< current size of token pool (byte) |
+ uint32_t maxTokenPoolSize; ///< maximum size of token pool (byte) |
+ int counter; ///< the number of token borrow or given to token bank |
+ uint32_t burstCredit; ///< the maximum number of tokens connection i can borrow from the bank each time |
+ int debtLimit; ///< counter threshold that the flow cannot further borrow tokens from bank |
+ uint32_t creditableThreshold; ///< the flow cannot borrow token from bank until the number of token it has deposited to bank reaches this threshold |
}; |
/** |
@@ -93,21 +97,32 @@ |
// inherited from Object |
virtual void DoDispose (void); |
+ /** |
+ * \brief Get the type ID. |
+ * \return the object TypeId |
+ */ |
static TypeId GetTypeId (void); |
// inherited from FfMacScheduler |
+ /// Set FF MAC Csched SAP user function |
virtual void SetFfMacCschedSapUser (FfMacCschedSapUser* s); |
+ /// Set FF MAC sched SAP user function |
virtual void SetFfMacSchedSapUser (FfMacSchedSapUser* s); |
+ /// Get FF MAC CSched SAP provider function |
virtual FfMacCschedSapProvider* GetFfMacCschedSapProvider (); |
+ /// Get FF MAC sched SAP provider function |
virtual FfMacSchedSapProvider* GetFfMacSchedSapProvider (); |
// FFR SAPs |
+ /// FFR SAP provider function |
virtual void SetLteFfrSapProvider (LteFfrSapProvider* s); |
+ /// FFR SAP user function |
virtual LteFfrSapUser* GetLteFfrSapUser (); |
friend class MemberCschedSapProvider<FdTbfqFfMacScheduler>; |
friend class MemberSchedSapProvider<FdTbfqFfMacScheduler>; |
+ /// Transmisson mode config update function |
void TransmissionModeConfigurationUpdate (uint16_t rnti, uint8_t txMode); |
private: |
@@ -116,14 +131,19 @@ |
// (See 4.1 for description of the primitives) |
// |
+ /// Csched cell config request function |
void DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params); |
+ /// CSched UE config request function |
void DoCschedUeConfigReq (const struct FfMacCschedSapProvider::CschedUeConfigReqParameters& params); |
+ /// CSched LC configu request function |
void DoCschedLcConfigReq (const struct FfMacCschedSapProvider::CschedLcConfigReqParameters& params); |
+ /// CSched LC release request function |
void DoCschedLcReleaseReq (const struct FfMacCschedSapProvider::CschedLcReleaseReqParameters& params); |
+ /// CSched UE release request function |
void DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::CschedUeReleaseReqParameters& params); |
// |
@@ -131,39 +151,61 @@ |
// (See 4.2 for description of the primitives) |
// |
+ /// Sched DL RLC buffer request function |
void DoSchedDlRlcBufferReq (const struct FfMacSchedSapProvider::SchedDlRlcBufferReqParameters& params); |
+ /// Sched DL paging buffer request function |
void DoSchedDlPagingBufferReq (const struct FfMacSchedSapProvider::SchedDlPagingBufferReqParameters& params); |
+ /// Sched DL MAC buffer request function |
void DoSchedDlMacBufferReq (const struct FfMacSchedSapProvider::SchedDlMacBufferReqParameters& params); |
+ /** |
+ * Sched DL trigger request function |
+ * |
+ * \param params struct FfMacSchedSapProvider::SchedDlTriggerReqParameters& |
+ */ |
void DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::SchedDlTriggerReqParameters& params); |
+ /// Sched DL RACH info request function |
void DoSchedDlRachInfoReq (const struct FfMacSchedSapProvider::SchedDlRachInfoReqParameters& params); |
+ /// Sched DL CGI info request function |
void DoSchedDlCqiInfoReq (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params); |
+ /// Sched UL trigger request function |
void DoSchedUlTriggerReq (const struct FfMacSchedSapProvider::SchedUlTriggerReqParameters& params); |
+ /// Sched UL noise interference request function |
void DoSchedUlNoiseInterferenceReq (const struct FfMacSchedSapProvider::SchedUlNoiseInterferenceReqParameters& params); |
+ /// Sched UL SR info request function |
void DoSchedUlSrInfoReq (const struct FfMacSchedSapProvider::SchedUlSrInfoReqParameters& params); |
+ /// Sched UL MAC control info request function |
void DoSchedUlMacCtrlInfoReq (const struct FfMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters& params); |
+ /// Sched UL CGI infor request function |
void DoSchedUlCqiInfoReq (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params); |
+ /// Get RBG size function |
int GetRbgSize (int dlbandwidth); |
+ /// LC Active per flow function |
unsigned int LcActivePerFlow (uint16_t rnti); |
+ /// Estimate UL SNR function |
double EstimateUlSinr (uint16_t rnti, uint16_t rb); |
+ /// Refresh DL CQI maps function |
void RefreshDlCqiMaps (void); |
+ /// Refresh UL CQI maps function |
void RefreshUlCqiMaps (void); |
+ /// Update DL RLC buffer info function |
void UpdateDlRlcBufferInfo (uint16_t rnti, uint8_t lcid, uint16_t size); |
+ /// Update UL RLC buffer info function |
void UpdateUlRlcBufferInfo (uint16_t rnti, uint16_t size); |
/** |
@@ -188,120 +230,119 @@ |
*/ |
void RefreshHarqProcesses (); |
- Ptr<LteAmc> m_amc; |
+ Ptr<LteAmc> m_amc; ///< amc |
- /* |
+ /** |
* Vectors of UE's LC info |
*/ |
std::map <LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters> m_rlcBufferReq; |
- /* |
+ /** |
* Map of UE statistics (per RNTI basis) in downlink |
*/ |
std::map <uint16_t, fdtbfqsFlowPerf_t> m_flowStatsDl; |
- /* |
+ /** |
* Map of UE statistics (per RNTI basis) |
*/ |
std::map <uint16_t, fdtbfqsFlowPerf_t> m_flowStatsUl; |
- |
- /* |
+ /** |
* Map of UE's DL CQI P01 received |
*/ |
std::map <uint16_t,uint8_t> m_p10CqiRxed; |
- /* |
+ |
+ /** |
* Map of UE's timers on DL CQI P01 received |
*/ |
std::map <uint16_t,uint32_t> m_p10CqiTimers; |
- /* |
+ /** |
* Map of UE's DL CQI A30 received |
*/ |
std::map <uint16_t,SbMeasResult_s> m_a30CqiRxed; |
- /* |
+ |
+ /** |
* Map of UE's timers on DL CQI A30 received |
*/ |
std::map <uint16_t,uint32_t> m_a30CqiTimers; |
- /* |
+ /** |
* Map of previous allocated UE per RBG |
* (used to retrieve info from UL-CQI) |
*/ |
std::map <uint16_t, std::vector <uint16_t> > m_allocationMaps; |
- /* |
+ /** |
* Map of UEs' UL-CQI per RBG |
*/ |
std::map <uint16_t, std::vector <double> > m_ueCqi; |
- /* |
+ |
+ /** |
* Map of UEs' timers on UL-CQI per RBG |
*/ |
std::map <uint16_t, uint32_t> m_ueCqiTimers; |
- /* |
+ /** |
* Map of UE's buffer status reports received |
*/ |
std::map <uint16_t,uint32_t> m_ceBsrRxed; |
// MAC SAPs |
- FfMacCschedSapUser* m_cschedSapUser; |
- FfMacSchedSapUser* m_schedSapUser; |
- FfMacCschedSapProvider* m_cschedSapProvider; |
- FfMacSchedSapProvider* m_schedSapProvider; |
+ FfMacCschedSapUser* m_cschedSapUser; ///< Csched SAP user |
+ FfMacSchedSapUser* m_schedSapUser; ///< sched SAP user |
+ FfMacCschedSapProvider* m_cschedSapProvider; ///< CSched SAP provider |
+ FfMacSchedSapProvider* m_schedSapProvider; ///< sched SAP provider |
// FFR SAPs |
- LteFfrSapUser* m_ffrSapUser; |
- LteFfrSapProvider* m_ffrSapProvider; |
+ LteFfrSapUser* m_ffrSapUser; ///< FFR SAP user |
+ LteFfrSapProvider* m_ffrSapProvider; ///< FFR SAP provider |
// Internal parameters |
- FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig; |
+ FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig; ///< Csched cell config |
- uint16_t m_nextRntiUl; // RNTI of the next user to be served next scheduling in UL |
+ uint16_t m_nextRntiUl; ///< RNTI of the next user to be served next scheduling in UL |
- uint32_t m_cqiTimersThreshold; // # of TTIs for which a CQI canbe considered valid |
+ uint32_t m_cqiTimersThreshold; ///< # of TTIs for which a CQI canbe considered valid |
- std::map <uint16_t,uint8_t> m_uesTxMode; // txMode of the UEs |
+ std::map <uint16_t,uint8_t> m_uesTxMode; ///< txMode of the UEs |
- uint64_t bankSize; // the number of bytes in token bank |
+ uint64_t bankSize; ///< the number of bytes in token bank |
- int m_debtLimit; // flow debt limit (byte) |
+ int m_debtLimit; ///< flow debt limit (byte) |
- uint32_t m_creditLimit; // flow credit limit (byte) |
+ uint32_t m_creditLimit; ///< flow credit limit (byte) |
- uint32_t m_tokenPoolSize; // maximum size of token pool (byte) |
+ uint32_t m_tokenPoolSize; ///< maximum size of token pool (byte) |
- uint32_t m_creditableThreshold; // threshold of flow credit |
+ uint32_t m_creditableThreshold; ///< threshold of flow credit |
// HARQ attributes |
- /** |
- * m_harqOn when false inhibit te HARQ mechanisms (by default active) |
- */ |
- bool m_harqOn; |
- std::map <uint16_t, uint8_t> m_dlHarqCurrentProcessId; |
+ bool m_harqOn; ///< m_harqOn when false inhibit the HARQ mechanisms (by default active) |
+ std::map <uint16_t, uint8_t> m_dlHarqCurrentProcessId; ///< DL HARQ current process ID |
//HARQ status |
// 0: process Id available |
// x>0: process Id equal to `x` trasmission count |
- std::map <uint16_t, DlHarqProcessesStatus_t> m_dlHarqProcessesStatus; |
- std::map <uint16_t, DlHarqProcessesTimer_t> m_dlHarqProcessesTimer; |
- std::map <uint16_t, DlHarqProcessesDciBuffer_t> m_dlHarqProcessesDciBuffer; |
- std::map <uint16_t, DlHarqRlcPduListBuffer_t> m_dlHarqProcessesRlcPduListBuffer; |
- std::vector <DlInfoListElement_s> m_dlInfoListBuffered; // HARQ retx buffered |
+ std::map <uint16_t, DlHarqProcessesStatus_t> m_dlHarqProcessesStatus; ///< DL HARQ process status |
+ std::map <uint16_t, DlHarqProcessesTimer_t> m_dlHarqProcessesTimer; ///< DL HARQ process timer |
+ std::map <uint16_t, DlHarqProcessesDciBuffer_t> m_dlHarqProcessesDciBuffer; ///< DL HARQ process DCI buffer |
+ std::map <uint16_t, DlHarqRlcPduListBuffer_t> m_dlHarqProcessesRlcPduListBuffer; ///< DL HARQ process RLC PDU list buffer |
+ std::vector <DlInfoListElement_s> m_dlInfoListBuffered; ///< HARQ retx buffered |
- std::map <uint16_t, uint8_t> m_ulHarqCurrentProcessId; |
+ std::map <uint16_t, uint8_t> m_ulHarqCurrentProcessId; ///< UL HARQ current process ID |
//HARQ status |
// 0: process Id available |
// x>0: process Id equal to `x` trasmission count |
- std::map <uint16_t, UlHarqProcessesStatus_t> m_ulHarqProcessesStatus; |
- std::map <uint16_t, UlHarqProcessesDciBuffer_t> m_ulHarqProcessesDciBuffer; |
+ std::map <uint16_t, UlHarqProcessesStatus_t> m_ulHarqProcessesStatus; ///< UL HARQ process status |
+ std::map <uint16_t, UlHarqProcessesDciBuffer_t> m_ulHarqProcessesDciBuffer; ///< UL HARQ process DCI buffer |
// RACH attributes |
- std::vector <struct RachListElement_s> m_rachList; |
- std::vector <uint16_t> m_rachAllocationMap; |
- uint8_t m_ulGrantMcs; // MCS for UL grant (default 0) |
+ std::vector <struct RachListElement_s> m_rachList; ///< RACH list |
+ std::vector <uint16_t> m_rachAllocationMap; ///< RACH allocation map |
+ uint8_t m_ulGrantMcs; ///< MCS for UL grant (default 0) |
}; |
} // namespace ns3 |