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

📄 cdatams.h

📁 此程序为wcdma系统当中ftp/video业务模型的c++程序仿真 通过此程序 能得到此两种业务在多种条件下的吞吐量和无码率的性能
💻 H
📖 第 1 页 / 共 2 页
字号:
/** Copyright (c) 2004,北京邮电大学无线研究中心
* All rights reserved.
* 
* 文件名称:CDataMs.h
* 文件标识:数据移动台模块类定义
* 摘    要:声明CDataMs类
* 
* 当前版本:1.0
* 作    者:陈美娅
* 完成日期:2004年
*/

#ifndef CDATAMS_H_INCLUDED
#define CDATAMS_H_INCLUDED

#include "afxtempl.h"
#include "systemsim.h"
#include "CMobile.h"

#include "ThresholdAdjust_Algorithm.h"
#include "Schedule_Algorithm.h"


class CDataMs:public CMobile
{
public:

//a初始化相关方法
	CDataMs(){}
	~CDataMs();//by slj
	void DataMsInitialize(CLinkPrediction *pLinkPrediction,long lTotalSucfulBitNum);		//移动台初始化函数

//b导频强度测量相关方法
	void BestPilotStrenMonitor(void);	//移动台导频测量函数

//c数据传输相关方法
	void NewTTIGenerate(void);		//生成TTI结构
	void RATEandTFIPredict(void);		//预测速率和TFI结构
	void RateAdjustforPCFailed(void);	//功率控制失败后的速率调整函数

	//notice 可以将以下的几个函数设置为私有函数,对外只提供TTI的传输
	void TTITransmit(void);		//模拟TTI内传输块集的传输
	void SectorStatistics(void);	//统计扇区相应的统计变量
	void ReTransControl(void);		//重传控制
	void TTICRCAndStatics(void);	//模拟CRC功能,判断传输块是否正确传输,并对当前的TTI进行数据统计
	bool IsTTIEnd(void);			//判断TTI是否传输完毕

//d功率控制相关方法
	void DCHC2ICalculate(void);	//计算处DCH信道移动台接收到的业务信道C2I
	void DCHPowerControl(void);		//进行DCH信道的功率控制	
	void ReleaseDCHPower(void);//释放DCH信道功率
//e数据统计相关方法
	void PCThrputCalculate(void);		//计算HTTP移动台的吞吐量
	void AveragePDelayCalculate(void);	//计算HTTP移动台平均分组时延
	void AveragePCDelayCalculate(void);	//计算HTTP移动台平均分组呼叫时延
	void ServiceThrputCalculate(void);	//计算移动台吞吐量
	void SerivceStatisticsCalculate(void);		//计算相关服务的统计特性
	void ClosestSectorDistance(void);	//计算移动台和服务扇区之间的最短距离	
//////////////////////////////////////////////////////纯虚函数////////////////////////////////////////////////////////	
//定义了纯虚函数,数据移动台类成为虚基类
     virtual void FillDataQueue(void) = 0;		//填充数据读列
	 virtual void DataMsTrafficInitialize(void) = 0;		//初始化业务模型的数据移动台
public:
////////////////////////////////////////////////////接口函数//////////////////////////////////////////////////////

	void SetPilotStrenThreshold(float);	//设置导频强度门限
	void SetPilotStrenHyst(float);		//设置导频强度门限滞后
	
	int  GetBestSecTimer(void);			//返回最佳扇区计时器取值
	void SetBestSecTimer(int);			//设置最佳扇区计时器取值
	bool IsBlocked(void);			//获取移动台是否被block的标志
	void SetIsBlocked(bool);		//设定移动台是否被block的标志
	
//  bool IsAdmitted(void);		//获取移动台是否成功接纳的标志,已经在基类中定义
	void SetIsAdmitted(bool);		//设定移动台是否成功接纳的标志

	bool IsInAdmittedList(void);	//获取移动台是否已经加入成功接纳DCH移动台队列的标志
	void SetIsInAdmittedList(bool);	//设置移动台是否已经加入成功接纳DCH移动台队列的标志
	
	RATE2CI_TYPE* GetpstRate(void); //获取速率预测结构体
	
	bool IsTransmitNow(void);		//读取移动台当前是否在传输的标志
	int GetDataQueueEmptyTimer(void);	//获取数据队列为空计时器的取值
	void SetDataQueueEmptyTimer(int);	//设置数据队列为空计时器的取值
	bool IsDataQueueEmpty(void);		//读取移动台数据队列是否为空的标志

	long GetTotalSucfulBitNum(void);		//读取移动台成功传输比特数
	long GetTotalFailedBitNum(void);		//读取移动台失败传输比特数
    int  GetTotalSucfulBLNum(void);		//读取移动台成功传输的传输块数
	int  GetTotalFailedBLNum(void);		//读取移动台传输失败的传输块数
	int  GetTotalSucfulPacketNum(void);		//读取移动台成功传输的分组数
	int  GetTotalFailedPacketNum(void);		//读取移动台传输失败的分组数

	int  GetASTTimer(void);				//读取移动台AST计时器
	void SetASTTimer(int);				//设置移动台AST计时器
	float GetAST(void);					//读取移动台Active Session Throughput
	float GetThrput(void); 			    //读取移动台吞吐量

    float GetPacketErrorRate(void);			//计算分组错误率
	int  GetTotalPacketDelay(void);			//计算分组时延
	float GetAveragePacketDelay(void);		//计算平均分组时延
	long GetTotalPCSucfulBitNum(void);		//读取分组呼叫传输成功比特数
	int  GetTotalPCDelay(void);				//读取分组呼叫时延数,以时隙为单位
	int  GetTotalPCNum(void);				//返回分组呼叫数
	float GetAveragePCDelay(void);			//读取平均分组时延,以s为单位
	
	bool GetIsCurrentPacketOver(void);		//读取当前分组是否结束标志
	bool GetIsCurrentPCOver(void);			//读取当前分组呼叫是否结束标志
	int  GetTTISucfulBitNum(void);			//读取当前TTI内传对的比特数
	int  GetTTISucfulBLNum(void);			//读取当前TTI传输成功的传输块数
	int  GetTTIFailedBLNum(void);			//读取当前TTI传输失败的传输块数
	int  GetTTISucfulPacketNum(void);		//读取当前TTI内传输成功分组数
	int  GetTTIFailedPacketNum(void);		//读取当前TTI内传输失败分组数
	
	int  GetCurrentPacketDelay(void);		//读取当前分组时延
	int  GetCurrentPCDelay(void);			//读取当前分组呼叫时延
	long GetCurrentPCBitNum(void);			//读取当前分组呼叫比特数
	float GetClosestSecDistance(void);		//读取和服务扇区的最近距离

	//用于数据DCH用户drop的判断 add by苏丽君 7月30日 
    bool   DCHIsDropped();                  //判断DCH用户是否掉话的接口函数             
    void   SetDCHIsDropped(bool);           //设置DCH用户是否掉话的接口函数
	
	int    GetDCHDropTimer();               //读取DCH掉话用户计时器
    void   SetDCHDropTimer(int);            //设置DCH掉话用户计时器

	int    GetDCHServicedSlot();               //读取DCH用户的服务时隙数
    void   SetDCHServicedSlot(int);            //设置DCH用户的服务时隙数
	
private:
//b导频强度测量相关方法
	void DCHInitialize(void);		//DCH信道初始化函数
	void HSDSCHInitialize(void);		//HSDSCH信道初始化函数 by zl

	void DCHToDCHProcess(int,int);		//DCH信道状态到DCH信道状态的处理
	
//c数据传输相关方法	
	void BLERPredict(void);		//查找链路级提供的误块率
	void BLERInitialization();   
	void HandlePacket(void);		//处理分组和分组呼叫信息

public:	
	//新增函数 by zl
	void C2ICalculate(void);        //计算当前时隙的C/I
	void SAWProcess();        //分配处理用户的子信道
	void TTIMeanC2ICalculate(); //计算TTI内的平均C/I
	bool IsTTIGood();          //TTI的传输是否正确
	void HSTTIStatics();       //TTI数据统计
    
	void ThresholdAdjust();    //门限调整
	void ThresholdOrderAdjust(); //门限顺序调整
	void OutputThreshold();     //输出门限
	float ThresholdfromSlideWindow();

	void IntervalStatistics();  //区间统计

	void Predict();       //long-range预测

	void HandleVideoPacket(); //zl 20060328

	//新增接口函数  by zl
	int GetFreeSAWProcess(void);       //读取当前HSDSCH用户的空闲子信道数
	void SetFreeSAWProcess(int);      //设置当前HSDSCH用户的空闲子信道数
    
	float GetCurrentC2I(void);         //读取当前时隙的C/I实值
	void  SetCurrentC2I(float);        //设置当前时隙的C/I实值

	float GetCurrentC2IindB(void);     //读取当前时隙的C/I的dB值 
	void  SetCurrentC2IindB(float);    //设置当前时隙的C/I的dB值

//	int GetCurrentPacketSize(void);     //读取当前分组的大小
//	void SetCurrentPacketSize(int);      //设置当前分组的大小

	long GetDataQueueSize(void);        //读取数据队列中的数据量
	void SetDataQueueSize(long);        //设置数据队列中的数据量

    NCHANNELSAW_TYPE* GetSAWChannel(int index); //读取下标为index的子信道结构体
	void SetSAWChannel(NCHANNELSAW_TYPE ,int index); //设置下标为index的子信道结构体

	int GetPrevChannelIndex(void);      //读取前一被调用的子信道的下标
	void SetPrevChannelIndex(int);      //设置前一被调用的子信道的下标
	
	int GetCurrChannelIndex(void);      //读取当前被调用的子信道的下标
	void SetCurrChannelIndex(int);      //设置当前被调用的子信道的下标
	
	HSRATE2CI_TYPE* GetstHSRatePrediction();  //读取子信道的速率预测结构体

	float GetTTIMeanC2IindB();           //读取TTI内的平均C/I,dB值
	void  SetTTIMeanC2IindB(float);      //设置TTI内的平均C/I,dB值

	int GetSlotNumRemained();		//读取当前TTI剩余时隙数

//链路预测接口函数 by slj 20050408
	void HSRatePrediction();             //进行速率预测
	void HSFERPredition(float);          //进行FER预测
//速率预测相关处理 by slj 20050408
	void HSRateTableInitiailize();			//初始化速率预测表,包括地址空间分配
	void HSRateTableDelete();					//速率表空间释放
	HSRATE2CI_TYPE *GetHSDataRate(int, float);		//速率估计函数
//新增接口函数,获得速率预测结构体 by slj
	HSRATE2CI_TYPE *GetHSDataRate();            
protected:
//a导频强度测量相关属性
	float m_fBestSecPilotStrengthindBm;		//移动台测量集中最佳扇区的导频强度
										//notice 单位是dBm
	float m_fPilotStrenThreshold;		//导频强度绝对门限

⌨️ 快捷键说明

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