?? 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 + -