Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 5
0
 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);
 }
Exemplo n.º 6
0
 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;
 }
Exemplo n.º 7
0
 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;
 }
Exemplo n.º 8
0
 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;
 }
Exemplo n.º 9
0
 /// <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));
 }
Exemplo n.º 10
0
 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);
 }
Exemplo n.º 11
0
 public ScheduleResource InitRes(ScheduleResource resourceTemplate, IUlSchuduleCarrier carrier)
 {
     return (resourceTemplate.Clone() as ScheduleResource);
 }
Exemplo n.º 12
0
 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));
 }
Exemplo n.º 13
0
 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);
 }
Exemplo n.º 14
0
 private byte GetBeginSbIndex(IUlScheduleUser user, ScheduleResource res, IUlSchuduleCarrier carrier)
 {
     return this.m_UserBeginSbApplyer.GetNonFreqSelUserBeginSbIndex(user, base.ScheduleRes);
 }
Exemplo n.º 15
0
 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;
     }
 }
Exemplo n.º 16
0
 private byte GetBeginSbIndex(SimulationUser user, ScheduleResource scheduleResource, IUlSchuduleCarrier iUlSchuduleCarrier)
 {
     return this.m_RelayBeginSbApplyer.GetNonFreqSelUserBeginSbIndex(user, scheduleResource);
 }
Exemplo n.º 17
0
 public CarrierScheduleManager(IUlSchuduleCarrier carrier)
 {
     this.m_SimulationCarrier = carrier;
 }