private byte GetSelCenterBeginSbIndex(ScheduleResource res, IUlSchuduleCarrier carrier) { if (res.RbLists[0].Count > 0) { return this.FindBeginRBIndex(res.RbLists[0], carrier); } return this.FindBeginRBIndex(res.RbLists[1], carrier); }
private RNQueueBuilder GetRNQueueBuilder(IUlSchuduleCarrier carrier) { RNQueueBuilder rnQueueBuilder; if (!this.m_RNQueueBuilderDic.TryGetValue(carrier.SchedulePolicy, out rnQueueBuilder)) { rnQueueBuilder = QueueBuilderFactory.GetRNQueueBuilder(carrier.SchedulePolicy); this.m_RNQueueBuilderDic.Add(carrier.SchedulePolicy, rnQueueBuilder); } return rnQueueBuilder; }
private IQueueBuilder GetVoiceQueueBuilder(IUlSchuduleCarrier carrier) { IQueueBuilder semiPersistQueueBuilder; if (!this.m_VoiceQueueBuilderDic.TryGetValue(carrier.SchedulePolicy, out semiPersistQueueBuilder)) { semiPersistQueueBuilder = QueueBuilderFactory.GetSemiPersistQueueBuilder(carrier.SchedulePolicy); this.m_VoiceQueueBuilderDic.Add(carrier.SchedulePolicy, semiPersistQueueBuilder); } return semiPersistQueueBuilder; }
private IQueueBuilder GetDataQueueBuilder(IUlSchuduleCarrier carrier) { IQueueBuilder bEQueueBuilder; if (!this.m_DataQueueBuilderDic.TryGetValue(carrier.SchedulePolicy, out bEQueueBuilder)) { bEQueueBuilder = QueueBuilderFactory.GetBEQueueBuilder(carrier.SchedulePolicy); this.m_DataQueueBuilderDic.Add(carrier.SchedulePolicy, bEQueueBuilder); } return bEQueueBuilder; }
public byte GetFreqSelUserBeginSbIndex(IUlScheduleUser user, ScheduleResource res, IUlSchuduleCarrier carrier) { if (user.IsSameSiteEdgeUser) { return this.GetSelSSiteEdgeBeginRbIndex(res, carrier); } if (user.IsEdgeUser) { return this.GetSelDSiteEdgeBeginRbIndex(res, carrier); } return this.GetSelCenterBeginSbIndex(res, carrier); }
public static UlResAssignOutput FreqUserExpandRB(IUlScheduleUser user, IUlSchuduleCarrier carrier, ScheduleResource res, byte beginRbIndex, int userMaxRbNum, int tti) { List<byte> rbs = new List<byte>(); List<byte> centerRbs = new List<byte>(); List<byte> edgeRbs = new List<byte>(); res.RbLists[0].ForEach(delegate (RBData rb) { centerRbs.Add(rb.Index); }); res.RbLists[1].ForEach(delegate (RBData rb) { edgeRbs.Add(rb.Index); }); rbs.AddRange(centerRbs); rbs.AddRange(edgeRbs); rbs.Sort(); List<byte> list2 = new List<byte>(); list2.Add(beginRbIndex); res.RemoveRbRes(beginRbIndex); int idxLeft = rbs.FindIndex(delegate (byte rbIndex) { return rbIndex == beginRbIndex; }); int idxRight = idxLeft; bool flag = list2.Count < userMaxRbNum; bool canLeftExpand = true; bool canRightExpand = true; while (flag) { float maxValue = float.MaxValue; float inRight = float.MaxValue; canLeftExpand = (canLeftExpand && (idxLeft >= 1)) && (Math.Abs((int) (rbs[idxLeft - 1] - rbs[idxLeft])) == 1); if (canLeftExpand) { maxValue = carrier.UlRbInterferenceNoiseList[rbs[idxLeft - 1]]; } canRightExpand = (canRightExpand && (idxRight <= (rbs.Count - 2))) && (Math.Abs((int) (rbs[idxRight + 1] - rbs[idxRight])) == 1); if (canRightExpand) { inRight = carrier.UlRbInterferenceNoiseList[rbs[idxRight + 1]]; } byte num5 = GetExpandRbIndex(canLeftExpand, canRightExpand, ref idxLeft, ref idxRight, maxValue, inRight, rbs); if (num5 == 0xff) { break; } res.RemoveRbRes(num5); list2.Add(num5); flag = list2.Count < userMaxRbNum; } UlResAssignOutput output = new UlResAssignOutput(); output.RbIndexs = list2; return output; }
private byte FindBeginRBIndex(List<RBData> resList, IUlSchuduleCarrier carrier) { byte index = resList[0].Index; float maxValue = float.MaxValue; List<float> ulRbInterferenceNoiseList = carrier.UlRbInterferenceNoiseList; for (int i = 0; i < resList.Count; i++) { float num3 = ulRbInterferenceNoiseList[resList[i].Index]; if (maxValue > num3) { maxValue = num3; index = resList[i].Index; } } return index; }
public byte GetFreqSelUserBeginSbIndex(IUlScheduleUser user, ScheduleResource res, IUlSchuduleCarrier carrier) { byte index = res.RbLists[0][0].Index; float maxValue = float.MaxValue; List<float> ulRbInterferenceNoiseList = carrier.UlRbInterferenceNoiseList; for (int i = 0; i < res.RbLists[0].Count; i++) { float num3 = ulRbInterferenceNoiseList[res.RbLists[0][i].Index]; if (maxValue > num3) { maxValue = num3; index = res.RbLists[0][i].Index; } } return index; }
/// <summary> /// 载波是否需要进行虚MIMO /// </summary> /// <param name="SimulationCarrier"></param> /// <param name="lteCell"></param> /// <returns></returns> public static bool IsDoVMIMO(IUlSchuduleCarrier SimulationCarrier) { int rxNum = SimulationTools.GetRxNum(SimulationCarrier as SimulationCarrier); return ((((!SimulationCarrier.IsUlIcicOn && !SimulationConstant.UL_TTI_BUNDLING_ON) && (SimulationConstant.UL_VMIMO_ON && (rxNum > 1))) && (SimulationCarrier.UlVMIMOPair < SimulationConstant.UL_VMIMO_MAX_PAIR)) && (SimulationCarrier.UlVMIMOUsedRB < SimulationConstant.UL_VMIMO_MAX_RB)); }
private byte GetSelSSiteEdgeBeginRbIndex(ScheduleResource res, IUlSchuduleCarrier carrier) { List<RBData> resList = new List<RBData>(); resList.AddRange(res.RbLists[0]); resList.AddRange(res.RbLists[1]); return this.FindBeginRBIndex(resList, carrier); }
public ScheduleResource InitRes(ScheduleResource resourceTemplate, IUlSchuduleCarrier carrier) { return (resourceTemplate.Clone() as ScheduleResource); }
public static bool CalVMIMOContinueCondition(IUlSchuduleCarrier SimulationCarrier) { return (((SimulationCarrier.UlVMIMOInitPair < SimulationConstant.UL_VMIMO_INIT_MAX_PAIR) && (SimulationCarrier.UlVMIMOPair < SimulationConstant.UL_VMIMO_MAX_PAIR)) && (SimulationCarrier.UlVMIMOUsedRB < SimulationConstant.UL_VMIMO_MAX_RB)); }
private byte GetBeginSbIndex(IUlScheduleUser user, ScheduleResource res, IUlSchuduleCarrier carrier, bool isFreqSelUser) { if (isFreqSelUser) {//若是频选用户则··· return this.m_UserBeginSbApplyer.GetFreqSelUserBeginSbIndex(user, base.ScheduleRes, base.SimulationCarrier); } return this.m_UserBeginSbApplyer.GetNonFreqSelUserBeginSbIndex(user, base.ScheduleRes); }
private byte GetBeginSbIndex(IUlScheduleUser user, ScheduleResource res, IUlSchuduleCarrier carrier) { return this.m_UserBeginSbApplyer.GetNonFreqSelUserBeginSbIndex(user, base.ScheduleRes); }
private static void FreqGainJudge(List<byte> assignRBList, IUlScheduleUser user, IUlSchuduleCarrier carrier, ref float mcsSinr, ref bool isFSPositiveGain) { float num = 0f; float num4 = (SimulationTools.ConvertdBToLine(user.UeTxPower) / ((float)user.UlRbNum)) / user.UlPathLoss; if (assignRBList.Count > 0) { foreach (byte num5 in assignRBList) { float num2 = 1f / carrier.UlRbInterferenceNoiseList[num5]; float num3 = num4 * num2; num += num3; } mcsSinr = num / ((float)assignRBList.Count); mcsSinr = SimulationTools.ConvertLineTodB(mcsSinr); isFSPositiveGain = mcsSinr > user.PuschSinr; } }
private byte GetBeginSbIndex(SimulationUser user, ScheduleResource scheduleResource, IUlSchuduleCarrier iUlSchuduleCarrier) { return this.m_RelayBeginSbApplyer.GetNonFreqSelUserBeginSbIndex(user, scheduleResource); }
public CarrierScheduleManager(IUlSchuduleCarrier carrier) { this.m_SimulationCarrier = carrier; }