📄 cdatams.h
字号:
/** 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 + -