/// <summary> /// 单个用户数据信道分配,返回信道是否分配成功 /// </summary> private bool APsUserAllocation(GSMSimUser user) { m_Terminal = user.TrafficUser.Terminal.GetNetWorkTerminal(NetWorkType.GSM) as GSMTerminal; if (m_Terminal.Technology == GsmTechnologyType.GSM) { return false; } InitUserParam(user); int shareNum = m_IsDl ? m_ChnAllocation.DLShareNum : m_ChnAllocation.ULShareNum; //寻找空闲的静态PDCH信道 List<GSMTimeSlot> emptyPDCH = HasStaticEmpty(user); //分配信道 EmptyChnAllc(user, emptyPDCH); if (IsUnderMultiTs(user) & GetUserRate(user) < m_PsReqRate) { //寻找小于复用动态门限的PDCH信道(TCH->PDCH) emptyPDCH = HasEmptyTs(user, m_ChnAllocation.DynamicMultiplexNum,true); EmptyChnAllc(user, emptyPDCH); } if (IsUnderMultiTs(user) & GetUserRate(user) < m_PsReqRate) { //寻找小于复用门限的所有PDCH信道 emptyPDCH = HasEmptyTs(user, shareNum,false); EmptyChnAllc(user, emptyPDCH); } if (GetUserRate(user) > m_PsAssureRate) { return true; } else { ClearUserData(user); return false; } }
public void Init() { m_ModelList = GSMPointAnalysisMock.MockModelList(); RxPowerAndLinkLossModel modelimage = new RxPowerAndLinkLossModel(); modelimage.RxPower = -90; Site site = GSMMock.MockSite(); Transceiver transceiver = new Transceiver(); transceiver.Parent = site; modelimage.Cell = new GSMTRX(); modelimage.Cell.Parent = transceiver; modelimage.Cell.ID = 2; modelimage.DownLinkLoss = 112; modelimage.UpLinkLoss = 112; m_ModelList.Add(modelimage); m_Point = GSMPointAnalysisMock.MockGeoXYPoint(); m_TargetPara = new TargetPara(); m_TargetPara.TargetCIR = 9; m_TargetPara.TargetRxPower = -110; m_TargetPara.TargetThroughput = 12; m_Terminal = new Terminal(); GSMTerminal gsmTerminal = new GSMTerminal(); gsmTerminal.NetType = NetWorkType.GSM; m_Terminal.NetTerminalList.Add(gsmTerminal); m_Service = new UnionCsService(); m_Service.CommonType = CommonServiceType.CSService; //modify by lyt 6.23 GSMService gsmservice = new GSMService(); ((UnionCsService)m_Service).CSServiceDic.Add(NetWorkType.GSM, gsmservice); m_ULDetail = (GSMULDetail)(cellCalc.CalculateUpLinkDetail(m_ModelList, point, m_Service, m_Terminal, m_mobility)); //m_ULDetail = new GSMULDetail(m_ModelList, m_TargetPara, m_Service, m_Terminal); }
public static GSMPredicGroup MockGSMPredicGroup() { GSMPredicGroup group = new GSMPredicGroup(); group.Name = "group1"; group.Region = MockRegion.CreateRegion(); group.Region.Name = "region1"; #region mock GSM 的Terminal Terminal temp = new Terminal(); temp.ID = 0; List<NetworkTerminal> m_List = new List<NetworkTerminal>(); GSMTerminal gsmTerminal1 = new GSMTerminal(); gsmTerminal1.NetType = NetWorkType.GSM; gsmTerminal1.Technology = GsmTechnologyType.GSM; m_List.Add(gsmTerminal1); GSMTerminal gsmTerminal2 = new GSMTerminal(); gsmTerminal2.NetType = NetWorkType.GSM; gsmTerminal2.Technology = GsmTechnologyType.GPRS; m_List.Add(gsmTerminal2); GSMTerminal gsmTerminal3 = new GSMTerminal(); gsmTerminal3.NetType = NetWorkType.GSM; gsmTerminal3.Technology = GsmTechnologyType.EGPRS; m_List.Add(gsmTerminal3); temp.NetTerminalList = m_List; group.TrafficTerminal =temp; #endregion return group; }
public bool ValidateDr(DataRow dr, List<Terminal> excludeTerminals, int validateId) { this.m_ValidatId = validateId; IExtractor ex = new DataRowExtractor(dr); Terminal ter = new Terminal(); ter.Technology = NetWorkType.GSM; GSMTerminal item = new GSMTerminal(); ter.NetTerminalList.Add(item); this.m_Desc = new TerminalDesc(this.m_TrafficColModel, ter); this.m_GsmTerminalDesc = new GsmTerminalDesc(ter, this.m_TrafficColModel, excludeTerminals); return this.ValidateDr(ref this.m_Info, this.m_GsmTerminalDesc, ex, validateId); }
public void CalculateDownLinkDetail_Test2() { Service psService = new UnionPsService(); psService.CommonType = CommonServiceType.PSService; GSMService gsmService = new GSMService(); ((UnionPsService)psService).PSServiceDic.Add(NetWorkType.GSM, gsmService); Mobility mobility = new Mobility(); Terminal terminal = new Terminal(); GSMTerminal gsmTerminal = new GSMTerminal(); gsmTerminal.NetType = NetWorkType.GSM; terminal.NetTerminalList.Add(gsmTerminal); IDetail detail = m_GSMCellCalculator.CalculateDownLinkDetail(m_ModelList, m_Point, psService, mobility, terminal); }
/// <summary> /// 根据CIR获得编码方式 /// </summary> /// <returns></returns> public static string GetCode(double CIR,GSMTerminal terminal) { string codingScheme = null; codingScheme = (terminal.Technology == GsmTechnologyType.GSM) ? null : GetPsCode(CIR, codingScheme); //if (terminal.Technology == GsmTechnologyType.GSM) //{ // return null; //} //else //{ // codingScheme = GetPsCode(CIR, codingScheme); // return codingScheme; //} return codingScheme; }
/// <summary> /// 初始化列表 /// </summary> public static void InialUseList(GSMTerminal terminal) { TrafficAdaptorAssist trafficAdaptor = TrafficAdaptorAssist.Instance; m_GsmCodingSchemeList = trafficAdaptor.GSMCodeSchemeList; //if (terminal.Technology == GsmTechnologyType.GPRS) //{ // m_UsedCodeList = m_GsmCodingSchemeList.GetRange(0, 11); //} //else //{ // m_UsedCodeList = m_GsmCodingSchemeList.GetRange(11, 20); //} m_UsedCodeList = (terminal.Technology == GsmTechnologyType.GPRS) ? m_GsmCodingSchemeList.GetRange(0, 11) : m_GsmCodingSchemeList.GetRange(11, 20); }
/// <summary> /// 通过CIR查询吞吐率 /// </summary> /// <param name="CIR"></param> /// <returns></returns> public static double GetRate(double CIR,GSMTerminal terminal) { double rate = 0; //todo:语音用户的吞吐率 TrafficAssist.GetNetworkService<GSMService>(NetWorkType.GSM, m_Service).VoiceServiceRate; rate = (terminal.Technology == GsmTechnologyType.GSM) ? 13 : GetPsRate(CIR, rate); //if (terminal.Technology == GsmTechnologyType.GSM) //{ // //return TrafficAssist.GetNetworkService<GSMService>(NetWorkType.GSM, m_Service).VoiceServiceRate; // //Kbps // return 13; //} //else //{ // rate = GetPsRate(CIR, rate); // return rate; //} return rate; }
public static GSMSimUser MockGsmSimUser() { User trafficUser = new User(); trafficUser.Service = new MockService(); trafficUser.Service.CommonType = CommonServiceType.CSService; GSMSimUser user = new GSMSimUser(trafficUser); GSMSimTRX trx1 = MockGsmSimTrx(); user.BestServer = trx1; user.BestServer.NeTRX.TRXType = TRXType.BCCH; user.BestServer.CellUsers = new List<GSMSimUser>(); GSMService gsmCsService = new GSMService(); UnionCsService csService = new UnionCsService(); csService.CSServiceDic.Add(NetWorkType.GSM, gsmCsService); user.TrafficUser.Service = csService; GSMTerminal gsmTerminal = new GSMTerminal(); gsmTerminal.NetType = NetWorkType.GSM; Terminal terminal = new Terminal(); terminal.Technology = NetWorkType.GSM; terminal.NetTerminalList.Add(gsmTerminal); user.TrafficUser.Terminal =terminal; Site site = MockSite(); Transceiver tran = new Transceiver(); user.BestServer.Parent = tran; user.BestServer.Parent.Parent = site; //Dictionary<GSMTimeSlot, float> dlInterf = new Dictionary<GSMTimeSlot, float>(); //Dictionary<GSMTimeSlot, float> dlcirs = new Dictionary<GSMTimeSlot, float>(); ////Dictionary<GSMTimeSlot, float> preUlTxPower = new Dictionary<GSMTimeSlot, float>(); //for (int i = 0; i < 8; i++) //{ // dlcirs.Add(TSes[i], 15 + i * 2); //} //user.DlCirs = dlcirs; //user.PreULTxPower = preUlTxPower; return user; }
private Terminal GenerateTerminal() { Terminal terminal = new Terminal(); terminal.Name = this.tbxName.Text.Trim(); terminal.Technology = NetWorkType.GSM; GSMTerminal item = new GSMTerminal(); item.PrimaryBand = this.MainBand.Text; item.SecondaryBand = this.SecondBand.Text; item.CodeConfiguration = this.cmbCodeConfigur.Text; item.NoiseFigure = (float) this.NoiseFigure.Value; item.NetType = NetWorkType.GSM; item.Technology = (GsmTechnologyType) Enum.Parse(typeof(GsmTechnologyType), this.TechnologyName.Text); item.MaxTxPower = (float) this.tbMaxTxPower.Value; item.MinTxPower = (float) this.tbMinTxPower.Value; item.DlTimeslot = (int) this.tbDlTimeslot.Value; item.UlTimeslot = (int) this.tbUlTimeslot.Value; item.Loss = (float) this.tbxLosses.Value; item.IsSupportHalfRate = this.chkSupportHalfRate.Checked; item.IsSupportDTX = this.chkIsSupportDTX.Checked; item.Name = terminal.Name; terminal.NetTerminalList.Add(item); return terminal; }
private void InitData(List<RxPowerAndLinkLossModel> ModelList, Service service, Terminal terminal, TargetPara target) { m_Terminal = (GSMTerminal)terminal.GetNetWorkTerminal(NetWorkType.GSM); m_ModelList = ModelList; //数据用户 if (service.CommonType == CommonServiceType.PSService) { GSMTerminal gsmTerminal = (GSMTerminal)terminal.GetNetWorkTerminal(NetWorkType.GSM); GSMPointAnalysisCommonCalc.InialUseList(gsmTerminal); target.TargetThroughput = GSMPointAnalysisCommonCalc.GetPsReqThroughput(); } //语音用户 else { CsInit(service, target); } target.TargetRxPower = -110; }
public void Initial() { m_ServedUser = new List<GSMSimUser>(); m_ForAccessAgain = new List<GSMSimUser>(); m_Context = GSMMock.CreateContext(); TrafficAdaptorAssist trafficAdaptor = TrafficAdaptorAssist.Instance; m_CodeSchemeTable = new CodeSchemeTable(trafficAdaptor.GSMCodeSchemeList); m_Context.AddKey(GsmContextkey.GSMForAccessAgain, m_ForAccessAgain); m_Context.AddKey(GsmContextkey.GSMServedUsers, m_ServedUser); m_Context.AddKey(GsmContextkey.CodeSchemeTable, m_CodeSchemeTable); GSMSimUser userOne = GSMMock.MockGsmSimUser(); userOne.IsCs = true; GSMSimUser userTwo = GSMMock.MockGsmSimUser(); userTwo.IsCs = true; GSMSimUser userThr = GSMMock.MockGsmPsSimUser(); userThr.IsCs = false; GSMSimUser userFor = GSMMock.MockGsmPsSimUser(); userFor.IsCs = false; m_ServedUser.Add(userOne); m_ServedUser.Add(userTwo); m_ServedUser.Add(userThr); m_ServedUser.Add(userFor); m_ServedUser[0].TrafficUser.LinkType = LinkType.Uplink; m_ServedUser[1].TrafficUser.LinkType = LinkType.Downlink; m_ServedUser[2].TrafficUser.LinkType = LinkType.Uplink; m_ServedUser[3].TrafficUser.LinkType = LinkType.Downlink; m_TRX = GSMMock.MockGsmSimTrx(); for (int i = 1; i < 4; i++) { m_TRX.TSs[i].NETimeSlot.ChanType = Huawei.UNet.NE.Interface.ChannelType.PDCH; m_TRX.TSs[i].UlChanType = Huawei.UNet.NE.Interface.ChannelType.PDCH; m_TRX.TSs[i].DlChanType = Huawei.UNet.NE.Interface.ChannelType.PDCH; } for (int i = 4; i < 8; i++) { m_TRX.TSs[i].NETimeSlot.ChanType = Huawei.UNet.NE.Interface.ChannelType.TCH; m_TRX.TSs[i].UlChanType = Huawei.UNet.NE.Interface.ChannelType.TCH; m_TRX.TSs[i].DlChanType = Huawei.UNet.NE.Interface.ChannelType.TCH; } m_TRX.TSs[4].DLMsColl.Add(m_ServedUser[1]); m_TRX.TSs[2].DLMsColl.Add(m_ServedUser[3]); m_TRX.TSs[3].DLMsColl.Add(m_ServedUser[3]); m_TRX.TSs[5].ULMsColl.Add(m_ServedUser[0]); m_TRX.TSs[2].ULMsColl.Add(m_ServedUser[2]); m_TRX.TSs[3].ULMsColl.Add(m_ServedUser[2]); m_TRX.TSs[1].ULMsColl.Add(m_ServedUser[2]); m_ServedUser[0].UlTs.Add(m_TRX.TSs[5]); m_ServedUser[1].DlTs.Add(m_TRX.TSs[4]); m_ServedUser[2].UlTs.Add(m_TRX.TSs[1]); m_ServedUser[2].UlTs.Add(m_TRX.TSs[2]); m_ServedUser[2].UlTs.Add(m_TRX.TSs[3]); m_ServedUser[3].DlTs.Add(m_TRX.TSs[2]); m_ServedUser[3].DlTs.Add(m_TRX.TSs[3]); foreach (GSMSimUser user in m_ServedUser) { GSMTerminal gsmTerminal = new GSMTerminal(); gsmTerminal.NetType = NetWorkType.GSM; Terminal terminal = new Terminal(); terminal.Technology = NetWorkType.GSM; terminal.NetTerminalList.Add(gsmTerminal); user.TrafficUser.Terminal = terminal; } }