38class QoSAwareScheduler :
public LteScheduler
41 typedef std::map<MacCid, double> PfRate;
42 typedef std::pair<MacCid, double> ScoredCid;
45 std::map<MacCid, unsigned int> grantedBytes_;
47 const double scoreEpsilon_ = 1e-6;
49 const std::map<DrbKey, DrbQosProfile> *drbQosMap_ =
nullptr;
52 double gbrMultiplier_ = 2.0;
53 double priorityBase_ = 10.0;
54 double delayUrgentMs_ = 10.0;
55 double delayTightMs_ = 50.0;
56 double delayLooseMs_ = 100.0;
57 double delayUrgentMultiplier_ = 5.0;
58 double delayTightMultiplier_ = 3.0;
59 double delayLooseMultiplier_ = 1.5;
62 DrbQosProfile groupQos_;
65 virtual double computeQosWeight(
const DrbQosProfile& e);
66 virtual const DrbQosProfile *getDrbQosForCid(
MacCid cid);
67 virtual const DrbQosProfile *getQosForUlGroup(MacNodeId ueId, Lcg lcg);
78 const std::map<DrbKey, DrbQosProfile>& drbQosMap,
LteMacBase *mac, MacNodeId ueId, Lcg lcg);
88 double& pfAlpha() {
return pfAlpha_; }
91 void setDrbQosMap(
const std::map<DrbKey, DrbQosProfile> *m) { drbQosMap_ = m; }
92 void prepareSchedule()
override;
93 void commitSchedule()
override;