/// <summary> /// 初始化上行用户链路 /// </summary> /// <param name="user">用户</param> /// <param name="nt">用户的终端类型</param> /// <param name="linkParam">用户所在的链路的信息</param> private void InitUlLinkParam(TDSimUser user, TSLinkParam linkParam) { float ulTotalLoss = m_LossCalc.GetULTotalLoss(user, user.ServiceCell); float bsSensitivity = CalcBsSensitivity(user); float gain = m_SmartGain.GetSmartAntMainGain(user); float ulTxPower = ulTotalLoss + bsSensitivity - gain; ulTxPower = Math.Max(ulTxPower, user.MinTxPower); linkParam.TxPower = Math.Min(ulTxPower, user.MaxTxPower); linkParam.BsRxPower = linkParam.TxPower - ulTotalLoss + gain; }
public static Dictionary<TS, TSLinkParam> CreatTSLinkSetDictionary() { Dictionary<TS, TSLinkParam> linksetDic = new Dictionary<TS, TSLinkParam>(); TSLinkParam tsLinkParam = null; TS number = TS.TS0; for (int slotId = 0; slotId < 7; slotId++) { tsLinkParam = new TSLinkParam(); tsLinkParam.CodeNum = 10; tsLinkParam.LinkCIR = 3; tsLinkParam.MsRxPower = 10; tsLinkParam.BsRxPower = 10; linksetDic.Add(number++, tsLinkParam); } return linksetDic; }
/// <summary> /// 初始化LinkSet /// </summary> /// <param name="user"></param> /// <param name="slot"></param> /// <param name="tsRes"></param> private static void InitTSLinkParam(TDSimUser user, TimeSlot slot, TSResource tsRes) { TSLinkParam link = new TSLinkParam(); link.CodeRU = tsRes.RuNum; link.CodeNum = tsRes.PhCodeNum; link.TxPower = float.NegativeInfinity; user.LinkSet.Add(slot.TsNum, link); slot.AccessedUsers.Add(user); }
/// <summary> /// 初始化下行链路信息 /// </summary> /// <param name="user"></param> /// <param name="linkParam"></param> /// <param name="tsNum"></param> private void InitDlLinkParam(TDSimUser user, TSLinkParam linkParam, TS tsNum) { float dlTotalLoss = m_LossCalc.GetDLTotalLoss(user, user.ServiceCell); float msSensitivity = CalcMsSensitivity(user); float gain = m_SmartGain.GetSmartAntMainGain(user); float dlTxPower = dlTotalLoss + msSensitivity - gain; float minPower = user.ServiceCell.MinSingleChPower + (float)UnitTrans.todB((double)linkParam.CodeNum); float maxPower = user.ServiceCell.MaxSingleChPower + (float)UnitTrans.todB((double)linkParam.CodeNum); float availablePower = R4_CommonCalcMethod.GetAvailablePower(tsNum, user); dlTxPower = Math.Max(dlTxPower, minPower); dlTxPower = Math.Min(dlTxPower, maxPower); linkParam.TxPower = Math.Min(dlTxPower, availablePower); linkParam.MsRxPower = linkParam.TxPower - dlTotalLoss + gain; }