📄 csector.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 + -