📄 cmobile.h
字号:
///////////////////////////////////////////////////////////////////
// WCDMA TEAM //
// BUPT Radio Research Center //
///////////////////////////////////////////////////////////////////
//
// CMobile.h
//
///////////////////////////////////////////////////////////////////
//
// 移动台基类的头文件, 用于声明移动台基类CMobile, 其实现在CMobile.cpp中。
// 其派生类; 包括话音MS类, 数据MS类,
// 它们的声明和定义都在相应的*.h和*.cpp文件中.
//
// 另外,基类中有关激活集以及软切换的成员函数,如:InitActiveSet(),
// UpdataActiveSet(),SHOMsgGenerator(),SHOMsgProcess(),ChangeActiveSet(),
// DSCH用户都不调用。
//
// 有关监测集InterferenceFromOtherSector值的计算算法,由于以前2000的算法
// 不是很正确,现在将计算算法改为:移动台的InterferenceFromOtherSector值
// 就是移动台所有监测扇区(除了移动台所在扇区本身之外的20个扇区)
// fPowerFromTheSector值的累加和。这样,由于对某一个移动台而言,它的所有
// 监测扇区的InterferenceFromOtherSector值都是一样的,所以将原先候选扇区
// 结构体中的InterferenceFromOtherSector值去掉,而将它作为移动台类的一个
// 数据成员(即增加数据成员:m_fInterferenceFromOtherSector).
// 相应的要修改初始化监测集、更新监测集、初始化激活集、更新激活集、激活集
// 变更函数等函数。
//
// 为了标识一个用户(话音用户或者是DCH数据用户)是否接纳成功,并对接纳失
// 败进行计时等相关判断,新增加了数据成员:m_bIsAdmitted,m_iAdmitTimer,
// 以及接口函数:IsAdmitted(),GetAdmitTimer(),SetAdmitTimer(int)
//
// Written by: 李晶
// Date: 200404
//
///////////////////////////////////////////////////////////////////
#ifndef CMOBILE_H
#define CMOBILE_H
#define PILOTSNRTHRESHOLD -12.5
enum TRAFFICTYPE {HTTP=1,FTP=2,VIDEO=3}; //业务类型取值 20060116
#include "Afxtempl.h"
#include "systemsim.h" //基本的数据结构体定义,同原来的header1.h基本相同
#include "CServiceArea.h"
#include "CMsManager.h"
#include "CChannelModel.h"
///////////////////////////////////////////////////////////////
// 移动台用户基类头文件 //
///////////////////////////////////////////////////////////////
class CMobile
{
//-------------属性--------------
protected:
int m_iMsID; //移动台ID
Usertype m_eUsertype; //新增的枚举型参数,用于区分移动台的业务类型。
//当其值为voice时,表明是话音用户;
//当其值是DCHdata时,表明是处于DCH状态的数据移动台;
//当其值是DSCHdata时,表明是处于DSCH状态的数据移动台。
//这个参数用于在不同业务类型的移动台共用的函数
//中区分移动台类型。它的初始化不放在基类中
TRAFFICTYPE m_enTrafficType; //数据移动台的业务类型
LOCATION_TYPE m_stMsLocation; //用户坐标,单位为米
//Added by Li Jing,20040821
float m_fMsBsDistance; //移动台与最佳扇区(有最大的导频SNR)的距离
float m_fIor2Ioc; //移动台处来自最佳扇区与其他小区总干扰功率谱密度的比值
float m_fIor; //ior by zl 20050517
float m_fIoc;//ioc by zl 20050517
float m_fgem;//by zl 20050527 只与地理位置有关的geometry,不考虑衰落的影响
// float m_fInterferenceFromOtherSector;
//相邻的监测扇区来的对移动台的总干扰
//这个值原先放在候选扇区结构体中,现在将它改为移动台的数据成员
CChannelModel m_ChannelModel; //信道模型对象(链路级)
FADINGVALUE_TYPE* m_pFadingValuePointer; //衰落数据结构体指针, 读取信道模型衰落数据用
CLinkPrediction * m_pLinkPrediction; //指向链路预测对象
int m_iChannelType; //MS信道类型
float m_fMsVelocity; //MS速率
SECTORID_TYPE m_stLocationSector; //归属扇区的标号, 根据移动台的地理位置确定,不一定就是最佳扇区
SECTORID_TYPE m_stBestSector; //最佳扇区的标号, 根据导频信道信噪比确定
int m_iBestSectorIndex; //最佳扇区在监测集中的相对位置(即在移动台监测集数组中的下标)
float m_fBestPilotSNR; //最佳扇区的导频信道信噪比
int m_iSlotCount; //时隙记数器
float m_fStdSlowFading; //慢衰标准差
int m_iActiveSetSize; //当前激活集大小
int m_iSHOMsgNum; //当前软切换消息队列长度
float m_fC2I; //当前时隙的C/I(若是软切换,此为累加后的C/I)
float m_fMeanC2I; //平均的C/I(对于话音移动台,是帧内累加,帧结束时才是平均值;
//对于数据移动台,是传输块内累加,块结束时才是平均值)
float m_fTTIC2I[30]; //存放当前TTI内每个时隙的C/I值
float m_fHSTTIC2I[3]; //存放当前HSDSCH TTI内每个时隙的C/I值 by zl
float m_fTTIMeanC2I; //当前TTI时间内的平均C/I,此变量用于查链路级的提供的
//BLER vs C/I表,从而得到这个TTI的误块率
float m_fFwdCurrentActiveFactor;
//当前slot前向话音激活因子,经考虑还是将其放在基类,但初始化更新等还是放在话音移动台中实现
float m_fFwdLastActiveFactor;
//上一slot前向话音激活因子,经考虑还是将其放在基类,但初始化更新等还是放在话音移动台中实现
bool m_bIsC2IEnough; //C/I是否超过门限值
bool m_bIsAdmitted; //新增数据成员,用户是否已经接纳成功标识.若为True,则
//已经接纳成功;否则表示还没有接纳成功
int m_iAdmitTimer; //新增数据成员,用户接纳失败计时器。初始化时其值为0,每
//个时隙若接纳失败则计时器加一;若计时器超过某门限值,则
//用户接入失败。并进行重撒
float m_fC2ITarget; //目标C/I(2000的平台中是将它设为局部变量,现将它改在基类中)。对于
//话音用户,目标C/I是根据不同的话音激活因子来定的;对于数据用户
//它是根据传输速率等查链路级提供的表得到的
float m_fC2IThreshold; //C2I门限值
CTypedPtrList<CPtrList, SOFTHANDOFFMESSAGE_TYPE*> m_SoftHandoffMessageList;
//软切换消息队列,模拟软切换事件的时延每一个移动台
//(不管是话音移动台还是数据移动台)都有一个软切消息队列
TFI_TYPE* m_pstTFI; //移动台接收TFI结构体指针,根据其扩频因子或传输速率对其进行赋值
float* m_pfC2IIndex; //C/I索引
float* m_pfBLER; //BLER表指针
float m_fTTIBLER; //当前TTI时间内的误块率,查链路级的表得到
int m_iNumOfErrorBlock; //累加一个窗口时间内的误块数
int m_iNumOfTotalBlock; //累加一个窗口时间内的总块数
float m_fWindowBLER; //一个窗口时间内的误块率,统计得到
//用于软切换下的各统计量add by slj 20041020
int m_iNumOfSHOBlock; //记录处于软切换的总的传输块
int m_iNumOfSHOFailedBlock; //记录处于软切换下传错的块数
float m_fTotalPowerInSHO; //记录软切换下总的发射功率,累加所有处于软切换状态
//下的时隙的移动台总功率
//for compile
public:
int m_iLocationSectorIndex; //归属扇区在监测集中的相对位置 by zl
int m_iSectorLocationIndex; //用户所在环位置 20051205
int m_iClassIndex; //用户在当前扇区环内的级别,值越大级别越高20051205
CTypedPtrList<CPtrList, ACTIVESECTOR_TYPE*> m_ActiveSetList;
//激活集链表,在此链表中的扇区的bIsInActive也不
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -