private void SaveNoScheduledUser(IDlScheduleUser user, DLUserTag userTag, short tti) { SimulationUser user2 = (SimulationUser) user; if (user2.PreScheduleTime != -1) { user2.VoiceContinueLost = (short) (user2.VoiceContinueLost + 1); user2.TotalPackageLossCount = (short) (user2.TotalPackageLossCount + 1); user2.VoiceMaxContinueLost = Math.Max(user2.VoiceMaxContinueLost, user2.VoiceContinueLost); } }
private void AllotResourceForEdgeUser(IDlScheduleUser user, DLUserTag userTag, int rbNeed) { if (this.resource.RbEdgeList.Count >= rbNeed) { this.AllotRbList(user, this.resource.RbEdgeList, rbNeed, this.IsSfSbSsSsStriNbrCarrier((IDlScheduleCarrier) user.SfSbSsSsStroNbr)); } else { this.AllotResourceWhileEdgeRbNotEnough(user, userTag, rbNeed); } }
private void AllotResourceForCenterUser(IDlScheduleUser user, DLUserTag userTag, int rbNeed) { int num = rbNeed - this.resource.RbCenterList.Count; this.AllotRbList(user, this.resource.RbCenterList, Math.Min(rbNeed, this.resource.RbCenterList.Count)); //如果RbCenter不够的话,就会分一些RbEdge num = Math.Min(num, this.resource.RbEdgeList.Count); if (num > 0) { this.AllotRbList(user, this.resource.RbEdgeList, num); } }
protected void ResetUserBeforeSchedule(IDlScheduleUser user, DLUserTag userTag) { user.RbList.Clear(); user.RbgList.Clear(); user.DlMcsEff = 0f; user.MacTBS = 0f; user.State = State.Wait; userTag.RbNeed = 0; SimulationUser user2 = (SimulationUser) user; user2.RbCombineSinr = 0f; }
private bool ScheduleVoiceUser(IDlScheduleUser user, DLUserTag userTag, short ttiNum) { if (((base.Tag.UsableRbNumPerTti > 0) && (base.Tag.TypeARemaindPower > 0f)) && (base.Tag.TypeBRemaindPower > 0f)) { float pdschSinr = user.PdschSinr; float mcsBySinr = DLScheduleCalaculateTool.GetMcsBySinr(user, pdschSinr); if (mcsBySinr <= 0f) { return false; } float minSinr = 0f; float mimoClutterGain = 0f; SimulationTools.GetMinSinrAndMimoClutterGain(user, ref minSinr, ref mimoClutterGain, pdschSinr); if (pdschSinr < minSinr) { return false; } float voicePacketSize = (user as SimulationUser).VoicePacketSize; //¸ù¾Ýtbs¼ÆËãRBÊý int rbNeed = DLScheduleCalaculateTool.CalculateRBCountByTbs(user, mcsBySinr, voicePacketSize, mimoClutterGain); int rbNumByPower = DLScheduleCalaculateTool.CalaCountRBByRemaindPower(user, base.CurrentCarrier, base.Tag); if (this.IsCanScheduleUser(user, rbNeed, rbNumByPower)) { user.MacTBS = voicePacketSize; SimulationUser user2 = (SimulationUser) user; user2.PreScheduleTime = ttiNum; user.ServiceCount = (short) (user.ServiceCount + 1); user.MeasureSinr = pdschSinr; user.FinalSinr = pdschSinr; user.DlMcsEff = mcsBySinr; user2.VoiceContinueLost = 0; user.PreScheduleTime = ttiNum; userTag.RbNeed = rbNeed; user.State = State.Service; base.CurrentCarrier.DlVoiceServiceUserList.Add(user); base.CurrentCarrier.DlVoiceWaitUserList.Remove(user); DLCarrierTag tag = base.Tag; tag.UsableRbNumPerTti = (byte) (tag.UsableRbNumPerTti - Convert.ToByte(rbNeed)); return true; } } return false; }
public abstract void AddUser(IDlScheduleUser user, DLUserTag usertag);
public override float GetPriority(IDlScheduleUser user, DLUserTag usertag) { int servicePriority = SimulationTools.GetServicePriority(user.LTEUser.Service); return ((user.LTEUser.Priority * servicePriority) * (user.DlRsSinr - user.BestServiceCarrier.DLRsSinrAccessThreshold)); }
private void AllotResourceWhileEdgeRbNotEnough(IDlScheduleUser user, DLUserTag userTag, int rbNeed) { int allotCount = rbNeed - this.resource.RbEdgeList.Count; this.AllotRbList(user, this.resource.RbEdgeList, this.resource.RbEdgeList.Count); if (user.SfSbStroNbr == null) { this.AllotRbList(user, this.resource.RbCenterList, allotCount, true); } else { this.AllotResourceWhileSfSbStroNbrNotNull(user, userTag, allotCount); } }
private void AllotResourceWhileSfSbStroNbrNotNull(IDlScheduleUser user, DLUserTag userTag, int centerNeedRbCount) { if (user.SfSbSsSsStroNbr == null) { this.RobCenterRbNotEqualNbrEdgeRb(user, this.resource.RbCenterList, centerNeedRbCount); } else { this.AllotRbList(user, this.resource.RbCenterList, centerNeedRbCount, this.isHighCarrier((IDlScheduleCarrier) user.SfSbStroNbr)); } }