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

📄 csector.h

📁 此程序为wcdma系统当中ftp/video业务模型的c++程序仿真 通过此程序 能得到此两种业务在多种条件下的吞吐量和无码率的性能
💻 H
字号:
///////////////////////////////////////////////////////////////////
//                             WCDMA TEAM                        //
//                      BUPT Radio Research Center               //
///////////////////////////////////////////////////////////////////
//
//                          CSector.h
//
///////////////////////////////////////////////////////////////////
//
// 扇区类的头文件, 用于声明扇区类CSector, 其实现在CSector.cpp中。
//
// 为了做到:首先考虑话音用户,并累加话音用户的功率,将剩余的功率
// 分给分组用户;再考虑DCH用户,并累加DCH用户的功率,再将剩下的功
// 率分给DSCH用户;最后基站根据可以使用的DSCH功率(即上面使用剩下
// 的功率),进行调度.做了以下的改动:
// 
// 1.增加了m_fTotalDCHPower及m_fDSCHAvailablePower这两个数据成员,原
// 来的m_fPacketPower数据成员保持不变
// 
// 2.增加了DCH功率累加函数DCHPowerCumulate(float),用于每一个扇区
// 的DCH用户的功率累加;增加了成员函数DSCHPowerCalculate(),用于计
// 算可用的DSCH分配功率,代替了PacketPowerCalculate()
// 
// 3.将所有的CurrentDataMs都改为了CurrentDSCHMs 
//
// 另外还在扇区类中增加了接纳控制函数AdmissionControl(),用于初始
// 及软切换时的接纳判决.相应的增加了m_fTxPow[SlotsNumPerFrame],
// m_iIndex,m_fmeanTxPower这三个数据成员
// 
// 还要在systemsim.h中加上宏定义:#define SlotsNumPerFrame 15
//
// 还要加一个DSCH调度队列
//
// Written by:     李晶
// Date:     200404
//
///////////////////////////////////////////////////////////////////
#if !defined(CSECTOR_H_INCLUDED)
#define  CSECTOR_H_INCLUDED

#include "systemsim.h"
//#include "CCell.h"
class CDataMs;

#define PowerControlReserved 0.1

///////////////////////////////////////////////////////////////
//		         扇区类头文件                                //
///////////////////////////////////////////////////////////////
class CSector
{
//属性
private:    
	float	m_fTxPow[SlotsNumPerFrame];       //新增数组,用以记录最近的这若干个时隙扇区的实际发射功率
    int     m_iIndex;                         //新增变量,是上面这个数组中的下标,用于在每次扇区发射功
                                              //率更新后指明将此功率值存入数组的具体位子
    float   m_fmeanTxPower;                   //新增变量,记录扇区的平均发射功率 
	
	int	    m_iSectorIndex;	                  //扇区标号(即1,2,3)
	CELLID_TYPE	m_stParentCellID;             //父小区标号	
	CCell*	m_pParentCell;                    //父小区指针
	int	    m_iSectorOrientation;             //扇区朝向 取值范围0-359
	float	m_fMaxPower;                      //最大发射功率,单位为毫瓦 
	float	m_fTxPower;                       //实际发射功率
	float	m_fPilotPower;                    //导频功率	
	float	m_fCommonPower;                   //公共信道功率
	float	m_fMaxPacketPower;                //分组数据信道的最大功率
	
	float	m_fTotalVoicePower;               //实际的话音业务总功率 

	int     m_iTotalDataMsNum;                //本扇区总的分组用户数
//	int     m_iDCHDataMsNum;
// 	int     m_iHSDSCHDataMsNum;   

	float	m_fTotalDCHPower;                 //实际的DCH用户总功率
	float	m_fDCHAvailablePower;		      //DCH信道可用功率
	float   m_fHSDSCHPower;                     //实际的DSCH发射功率
	float   m_fPacketPower;                   //可用的分组信道功率,为DCH和HSDSCH信道发射功率之和
 
	bool	m_bIsTransmiting;				 //当前扇区是否在传输的标志

	//by zl
	float	m_fHSDSCHAvailablePower;            //可用的DSCH数据信道功率
	float 	m_iPriorityFactor;                //当前的最佳用户的优先级指标
	                                          //用来记录本扇区对应的最佳分组用户的优先级,
						                      //供调度算法函数循环处理时使用。
	
    CDataMs* m_pHighestPriorityDataMs;		  //扇区等待调度的最高优先级DSCH移动台指针
 

	//扇区统计相关变量
	long	m_lGoodBitNum;                   //本扇区中到目前为止成功传输的bit数  
	float   m_fSectorDataThrput;		     //扇区数据吞吐量
	int     m_iSectorSucfulBLNum;			 //扇区成功传输的传输块数
	int     m_iSectorFailedBLNum;			 //扇区传输失败的传输块数	
	int	    m_iSectorPacketNum;		         //扇区传输分组数
	int     m_iSectorSucfulPacketNum;		 //扇区传输成功分组数
	int     m_iSectorFailedPacketNum;		 //扇区传输失败分组数
	int	    m_iSectorPacketDelay;	         //扇区传输分组时延总和,单位是时隙
	float	m_fSectorAveragePacketDelay;	 //扇区平均分组时延,单位是秒
	long	m_lSectorPacketCallBitNum;	     //扇区分组呼叫成功传输比特数
	float	m_fSectorPCThrput;		         //扇区HTTP业务吞吐量
	int	    m_iSectorPCNum;		             //扇区分组呼叫数目
	int	    m_iSectorPCDelay;		         //扇区分组呼叫时延总和
	float	m_fSectorAveragePCDelay;		 //扇区平均分组呼叫时延

    //新增成员变量 by zl
	bool    m_bIsExistHighestPriority;        //扇区是否存在最高优先级

	//每个扇区中均匀撒用户
public:
	int     m_iVoiceNum;                      //扇区中的语音用户数
	int     m_iDCHNum;                        //扇区中的DCH数据用户  
	int     m_iHSDSCHNum;                     //扇区中的HSDSCH数据用户 
	int     m_iSectorLocationNum[3];          //扇区中的用户位置 20051205
	bool    m_bSectorClassIndex[3][4];        //扇区3个环内用户级别 20051205
	int     m_iSectorGradeIndex;              //扇区内用户级别(不分环)20060112

	//zl 20060308
	int     m_iFtpNum;
	int     m_iVideoNum;
//操作
public:
	void Initialization(int, CELLID_TYPE, CCell*, int);  //初始化函数
	void ResetPower();                                   //功率复位函数     
	void VoicePowerCumulate(float);                      //话音功率的累加函数
	void DCHPowerCumulate(float);                        //新增成员函数,是DCH功率的累加函数
	void DCHAvailablePowerCalculate();		//DCH数据信道可用功率计算函数
	//by zl
	void HSDSCHAvailablePowerCalculate();                           //新增成员函数,HSDSCH数据信道可用的功率计算函数 
    void TxPowerUpdate();                                //新增成员变量,扇区实际发射功率更新函数
	void SlotTxPowerCalculate();                         //实际发射功率计算函数
	bool AdmissionControl(int SlotNum,float TempPower);  //新增成员函数,参数为当前的时隙数和要求的扇区发射功率。
	                                                     //若结果为true,则接纳成功;否则接纳失败。
	bool PowerControlDecision(float PowerIncrement);     //新增成员函数

	void SectorStatisticsCalculate(float fDroptime);						//计算扇区吞吐量和分组统计量

	void OutputPower();									//输出扇区总的发射功率

//////////////////其它接口函数:	完成私有型数据的读写////////////////////////	
	int         GetSectorIndex();                        //返回扇区标号 

	CELLID_TYPE	GetParentCellID();                       //返回父小区标号	
	void        SetParentCell(CCell*);                   //设置父小区指针  
	CCell*	    GetParentCell();                         //返回父小区指针
	                                                     
	int	        GetSectorOrientation();        	         //返回扇区朝向 取值范围0-359
	void        SetMaxPower(float);                      //设置最大发射功率 
	float	    GetMaxPower();                           //返回最大发射功率 
	void        SetTxPower(float);                       //设置实际发射功率
	float	    GetTxPower();                            //返回实际发射功率
	void        SetPilotPower(float);                    //设置导频功率
	float	    GetPilotPower();                         //返回导频功率	
	void        SetCommonPower(float);    	             //设置公共信道功率
	float 	    GetCommonPower();    	                 //返回公共信道功率

	float       GetMaxPacketPower(void);				 //返回分组数据信道的最大功率
	void        SetMaxPacketPower(float); 	             //设置分组数据信道的最大功率

	float	    GetTotalVoicePower();   	             //返回实际的话音业务总功率  
	
	int         GetDataUserNum(void);					 //返回扇区数据用户数

	void        SetPacketPower(float); 	                 //设置实际的分组数据信道功率
	float	    GetPacketPower();    	                 //返回实际的分组数据信道功率
	
	void		SetIsTransmiting(bool);					 //设置扇区是否在传输的标志
	bool		IsTransmiting(void);					 //读取扇区是否在传输的标志

	float 	GetDCHAvailablePower();		//返回DCH信道可用功率
	void 	SetDCHAvailablePower(float);		//设置DCH信道可用功率
	
	//by zl
	float	GetHSDSCHAvailablePower();		//返回DSCH信道可用功率
	void	SetHSDSCHAvailablePower(float);		//设置DSCH信道可用功率
	 
	void        SetPriorityFactor(float);  	             //设置当前的最佳用户的优先级指标 
	float	    GetPriorityFactor();     	             //返回当前的最佳用户的优先级指标
	
	CDataMs*	GetHighestPriorityDataMs();	             //返回扇区等待调度的最高优先级的HSDSCH用户
	void		SetHighestPriorityDataMs(CDataMs*);		 //设定扇区等待调度的最高优先级HSDSCH用户	
	
	void        SetTotalDataMsNum(int);                  //设置本扇区总的分组用户数
    int         GetTotalDataMsNum();                     //返回本扇区总的分组用户数
	
	void        SetDCHDataMsNum(int);
	int         GetDCHDataMsNum(void);

	void        SetGoodBitNum(long);                      //设置本扇区到目前为止成功传输bit数
    long         GetGoodBitNum();                         //返回本扇区到目前为止成功传输bit数 
    
	void		SetSectorSucfulBLNum(int);				 //设置扇区成功传输传输块数
	int         GetSectorSucfulBLNum(void);				 //返回扇区成功传输分组块数
	void        SetSectorFailedBLNum(int);				 //设置扇区传输失败传输块数
	int         GetSectorFailedBLNum(void);	
	
	void        SetPacketNum(int);						 //设置扇区传输分组数目
	int         GetPacketNum(void);						 //返回扇区传输分组数目
	void        SetSectorSucfulPacketNum(int);			 //设置扇区成功传输分组数
	int         GetSectorSucfulPacketNum(void);			 //返回扇区成功传输分组数
	void        SetSectorFailedPacketNum(int);			 //设置扇区传输失败分组数
	int         GetSectorFailedPacketNum(void);			 //返回扇区传输失败分组数
	
	void        SetPacketDelay(int);					 //设置扇区分组时延总和
	int         GetPacketDelay(void);					 //返回扇区分组时延总和
	void        SetPacketCallNum(int);					 //设置扇区传输分组呼叫数目
	int         GetPacketCallNum(void);					 //返回扇区传输分组呼叫数目
	void        SetPacketCallDelay(int);				 //设置扇区分组呼叫时延总和
	int         GetPacketCallDelay(void);				 //返回扇区分组呼叫时延总和
	float       GetAveragePDelay(void);					 //返回扇区平均分组时延
	void        SetPacketCallBitNum(long);						 //设置扇区传输分组呼叫比特数总和
	long        GetPacketCallBitNum(void);						 //返回扇区传输分组呼叫比特数总和
 


	////////////////////以下为新增的接口函数/////////////////////        
    float	    GetTotalDCHPower();   	                 //返回实际的DCH总功率
    void		SetTotalDCHPower(float);				 //设置DCH数据用户总功率

	//by zl
	void        SetHSDSCHPower(float); 	                 //设置实际分配的DSCH分组数据信道功率
    float	    GetHSDSCHPower();    	                     //返回实际分配的DSCH分组数据信道功率

	//新增函数 by zl
    bool        IsExistHighestPriority();               //返回扇区是否存在最高优先级
	void        SetIsExistHighestPriority(bool);        //设置扇区是否存在最高优先级
};
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -