예제 #1
0
        /// <summary>
        /// 把接入成功的用户加进来
        /// </summary>
        /// <param name="iAccessControlCarrier"></param>
        /// <param name="userList"></param>
        private void addUser(IAccessControlCarrier iAccessControlCarrier, List<ISimulationUser> userList)
        {
            foreach (IAccessControlUser user in userList)
            {
                /*接入准则是每个用户接收到下行RS的SINR值是否大于某个设定门限,大于则接入成功,小于或等于则接入失败*/
                if (user.DlInitRsSinr > iAccessControlCarrier.DLRsSinrAccessThreshold)
                {
                    user.State = State.NewAccess;
                    this.dispatchUser(iAccessControlCarrier, user);
                }
                //else
                //{
                //    user.State = State.NoAccess;
                //    user.FailReason = FailReason.DlRsSinrFail;
                //    iAccessControlCarrier.FailUserList.Add(user);
                //}
                else if (user.LTEUser.LinkType == LinkType.Uplink)
                {
                    user.State = State.NoAccess;
                    user.FailReason = FailReason.UlRsSinrFail;
                    iAccessControlCarrier.UlRsSinrFailUserList.Add(user);
                }
                else
                {
                    user.State = State.NoAccess;
                    user.FailReason = FailReason.DlRsSinrFail;
                    iAccessControlCarrier.FailUserList.Add(user);
                }

            }
        }
예제 #2
0
 private void addUlUser(IAccessControlCarrier iAccessControlCarrier, IAccessControlUser user)
 {
     if (this.GetService(user).Type == ServiceType.Voice)
     {
         iAccessControlCarrier.UlVoiceNewAccessUserList.Add(user);
     }
     else
     {
         iAccessControlCarrier.UlDataNewAccessUserList.Add(user);
     }
 }
예제 #3
0
        //private void deleteFailedUser(IAccessControlCarrier iAccessControlCarrier)
        //{
        //    foreach (ISimulationUser user in iAccessControlCarrier.FailUserList)
        //    {
        //        if (user.LTEUser.LinkType == LinkType.Uplink)
        //        {
        //            iAccessControlCarrier.UlUserList.Remove(user);
        //        }
        //        else
        //        {
        //            iAccessControlCarrier.DlUserList.Remove(user);
        //        }
        //    }
        //}

        private void deleteFailedUser(IAccessControlCarrier iAccessControlCarrier)
        {
            foreach (ISimulationUser user in iAccessControlCarrier.UlRsSinrFailUserList)
                iAccessControlCarrier.UlUserList.Remove(user);
            foreach (ISimulationUser user in iAccessControlCarrier.FailUserList)
                iAccessControlCarrier.DlUserList.Remove(user);
        }
예제 #4
0
 private void addUser(IAccessControlCarrier iAccessControlCarrier)
 {
     this.addUser(iAccessControlCarrier, iAccessControlCarrier.DlUserList);
     this.addUser(iAccessControlCarrier, iAccessControlCarrier.UlUserList);
 }
예제 #5
0
 private void dispatchUser(IAccessControlCarrier iAccessControlCarrier, IAccessControlUser user)
 {
     if (user.LTEUser.LinkType == LinkType.Downlink)
     {
         this.addDlUser(iAccessControlCarrier, user);
     }
     else
     {
         this.addUlUser(iAccessControlCarrier, user);
     }
 }