예제 #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);
 }
예제 #2
0
 public byte GetNonFreqSelUserBeginSbIndex(IUlScheduleUser user, ScheduleResource res)
 {
     if (user.IsEdgeUser)
     {//ÈôÊDZßÑØÓû§Ôò¡¤¡¤¡¤
         return this.GetFirstEdgeIndex(user, res);
     }
     return this.GetFirstCenterIndex(res);
 }
예제 #3
0
 public ScheduleResource InitResTemplet(byte bandwidthRbNum, LteAlgParam algParameter)
 {
     ScheduleResource scheduleResourceIn = new ScheduleResource();
     byte num = (byte)(bandwidthRbNum - algParameter.UlPucchRbs);
     byte puschRbNumEdge = (byte) Math.Floor((double) (((double) num) / 3.0));//±ßÔµRb×ÊԴΪʲô/3 £¿
     this.InitRbList(scheduleResourceIn, bandwidthRbNum, puschRbNumEdge, algParameter);
     return scheduleResourceIn;
 }
예제 #4
0
 private void CloneRbs(ScheduleResource clone)
 {
     foreach (List<RBData> list in this.m_RbLists)
     {
         List<RBData> item = new List<RBData>();
         item.AddRange(list);
         clone.m_RbLists.Add(item);
     }
 }
예제 #5
0
 protected override void InitRbList(ScheduleResource scheduleResourceIn, byte bandwidthRbNum, byte puschRbNumEdge, LteAlgParam algParameter)
 {
     List<RBData> centerRbDataList = new List<RBData>();
     List<RBData> edgeRbDataList = new List<RBData>();
     byte puschStartRbIndex = 0;
     byte puschEndRbIndex = Convert.ToByte((int)((puschStartRbIndex + (bandwidthRbNum - algParameter.UlPucchRbs)) - 1));
     this.InitCenterRbRes(puschStartRbIndex, puschRbNumEdge, centerRbDataList);
     this.InitEdgeRbRes(puschStartRbIndex, puschEndRbIndex, puschRbNumEdge, edgeRbDataList);
     scheduleResourceIn.RbLists.Add(centerRbDataList);
     scheduleResourceIn.RbLists.Add(edgeRbDataList);
 }
예제 #6
0
 public List<byte> TryApplyRes(ScheduleResource res, int RbNum, bool isEdgeUser)
 {
     List<byte> list = new List<byte>();
     if (res.RbLists[0].Count >= RbNum)
     {
         for (int i = 0; i < RbNum; i++)
         {
             list.Add(res.RbLists[0][i].Index);
         }
     }
     return list;
 }
예제 #7
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);
 }
예제 #8
0
 private byte GetFirstCenterIndex(ScheduleResource res)
 {
     byte index = 0;
     if (res.RbLists[0].Count > 0)
     {
         return res.RbLists[0][0].Index;
     }
     if (res.RbLists[1].Count > 0)
     {
         int count = res.RbLists[1].Count;
         index = res.RbLists[1][count - 1].Index;
     }
     return index;
 }
예제 #9
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;
 }
예제 #10
0
 private byte GetFirstEdgeIndex(IUlScheduleUser user, ScheduleResource res)
 {
     byte num = 0;
     if (res.RbLists[1].Count > 0)
     {
         return res.RbLists[1][0].Index;
     }
     if (res.RbLists[0].Count <= 0)
     {
         return num;
     }
     int count = res.RbLists[0].Count;
     ISimulationCarrier sfSbStroNbr = user.SfSbStroNbr;
     if (this.ResConflict(user, sfSbStroNbr))
     {
         return res.RbLists[0][0].Index;
     }
     return res.RbLists[0][count - 1].Index;
 }
예제 #11
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);
 }
예제 #12
0
 public byte GetNonFreqSelUserBeginSbIndex(IUlScheduleUser user, ScheduleResource res)
 {
     return res.RbLists[0][0].Index;
 }
예제 #13
0
 public ScheduleResource InitRes(ScheduleResource resourceTemplate, IUlSchuduleCarrier carrier)
 {
     return (resourceTemplate.Clone() as ScheduleResource);
 }
예제 #14
0
 protected abstract void InitRbList(ScheduleResource scheduleResourceIn, byte bandwidthRbNum, byte puschRbNumEdge, LteAlgParam algParameter);
예제 #15
0
 private byte GetBeginSbIndex(SimulationUser user, ScheduleResource scheduleResource, IUlSchuduleCarrier iUlSchuduleCarrier)
 {
     return this.m_RelayBeginSbApplyer.GetNonFreqSelUserBeginSbIndex(user, scheduleResource);
 }
예제 #16
0
 private byte GetBeginSbIndex(IUlScheduleUser user, ScheduleResource res, IUlSchuduleCarrier carrier)
 {
     return this.m_UserBeginSbApplyer.GetNonFreqSelUserBeginSbIndex(user, base.ScheduleRes);
 }
예제 #17
0
 public object Clone()
 {
     ScheduleResource clone = new ScheduleResource();
     this.CloneRbs(clone);
     return clone;
 }