📄 cvoicems.h
字号:
///////////////////////////////////////////////////////////////////
// WCDMA TEAM //
// BUPT Radio Research Center //
///////////////////////////////////////////////////////////////////
//
// CVoiceMs.h
//
///////////////////////////////////////////////////////////////////
//
// 话音移动台类的头文件, 用于声明话音移动台类CVoiceMs, 其实现在
// CVoiceMs.cpp中。 它是移动台基类CMobile的派生类;
// CMobile的声明和定义都在相应的*.h和*.cpp文件中.
//
// 在VoiceInitialization()中,要加上对m_pstTFI的初始化!!!
//
// Written by: 李晶
// Date: 200404
//
///////////////////////////////////////////////////////////////////
#if !defined(_CVOICEMS_H__INCLUDED_)
#define _CVOICEMS_H__INCLUDED_
#define FULLRATE 0.2921
#define HALFRATE 0.0382
#define QUARTERRATE 0.0726
#define EIGHTHRATE 0.5971
//#define C2ITargetForVoice1 -17.45
//#define C2ITargetForVoice2 -17.8
//#define C2ITargetForVoice3 -17.8
//#define C2ITargetForVoice4 -18.0
//#define C2ITargetForVoice5 -18.4
//#define C2IThresholdForVoice -18.5
#include "CMobile.h"
#include "Markov.h"
#include "systemsim.h"
#include "CMsManager.h"
///////////////////////////////////////////////////////////////
// 话音移动台类头文件 //
///////////////////////////////////////////////////////////////
class CVoiceMs:public CMobile
{
//----------属性-------------------------
private:
int m_iServiceLength; //话音业务时长,以时隙为单位
int m_iServiceTime; //话音服务时长
float m_fVoiceActiveFactor; //话音激活因子
int m_iFwdFrameRate; //当前前向帧速率
int m_iTotalOutageWindow; //新增数据成员,累加话音用户中断的窗口数
int m_iTotalWindow; //新增数据成员,累加话音用户总的通话窗口数
float m_fOutageRatio; //新增数据成员,为话音用户的中断比例
CMarkovVoice m_cFwdMarkovState; //前向话音激活Markov状态
float* m_pfC2IIndex; //C/I索引
float* m_pfBLER; //BLER表指针
bool m_bIsDropped;
int m_iDropTimer;
//----------操作---------
public:
CVoiceMs();
~CVoiceMs();
void VoiceInitialization(CLinkPrediction *pLinkPrediction); //初始化函数,初始化m_iServiceLength、m_bIsServiceActive,并调用最佳扇区选择函数,计算出最佳扇区,调用激活集初始化函数,设定激活集,随机初始化激活集的业务信道功率。
void PowerControl(); //功率控制函数,根据计算得到的C/I与功率控制目标C/I的关系,调整激活集内各个扇区的发射功率。需要考虑功控误差。(在基类中用的是虚函数,此处给出实现!)
void SetVoiceActivity(); //话音激活特性设置函数,根据话音激活因子,设置话音激活标志。
bool IsServiceOver(); //服务时长到时的判断函数,判断服务时长是否到时,到时返回TRUE。若到时则可以在程序流程中调用初始化函数,重新初始化。也可以在该函数中直接调用,重新初始化。
void UpdateActiveSetPower(); //得到激活集的总功率。这个函数还是放在话音移动台中实现,因为数据时不需要调用这个函数
void Clean(); //通话结束后清除链表(这个函数还是放在话音移动台中实现,而不放在基类中。因为是满buffer业务,数据链表中的用户不需要释放,当当前包传完后,直接又产生新的包就行了。)
float BLERPrediction(float); //根据TTI内的平均C/I值,查表估计TTI内的误块率
//Added by Li Jing,20040921
void OuterLoopPowerControl(bool); //外环功控函数
// void UpdateGeometry(); //Geometry更新函数
// void DeterminePowerControlTarget(float); //功控目标值确定函数
//////////////////其它接口函数: 完成私有型数据的读写
int GetServiceLength(); //得到话音业务时长,以时隙为单位
void SetServiceLength(int); //设置话音业务时长,以时隙为单位
int GetServiceTime(); //得到话音服务时长
void SetServiceTime(int); //设置话音服务时长
float GetVoiceActiveFactor(); //得到话音激活因子
void SetVoiceActiveFactor(float); //设置话音激活因子
int GetTotalOutageWindow(); //新增接口函数,返回总的中断窗口数
void SetTotalOutageWindow(int); //新增接口函数,设置总的中断窗口数
int GetTotalWindow(); //新增接口函数,返回总的通话窗口数
void SetTotalWindow(int); //新增接口函数,设置总的通话窗口数
float GetOutageRatio();
void SetOutageRatio(float);
bool IsDropped();
void SetIsDropped(bool);
int GetDropTimer();
void SetDropTimer(int);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -