⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmobile.h

📁 此程序为wcdma系统当中ftp/video业务模型的c++程序仿真 通过此程序 能得到此两种业务在多种条件下的吞吐量和无码率的性能
💻 H
📖 第 1 页 / 共 2 页
字号:
///////////////////////////////////////////////////////////////////
//                             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 + -