| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- #include "StdAfx.h"
- #include "LineRecordIprr.h"
- #include "Config.h"
- #include "IprControl.h"
- CLineRecordIprr::CLineRecordIprr(int LineId) : CLine(LineId), m_RecState(REC_STATE_IDLE),
- m_StationId(CONST_IPR_STATION_INVALID), m_SessionId(CONST_IPR_SESSION_INVALID), m_SessionCodec(CONST_IPR_CODEC_INVALID),
- m_FowardingPPort(0), m_FowardingSPort(0), m_IsSessionActived(false)
- {
- m_State = S_CALL_UNAVAILABLE;
- m_IPOLineID = CConfig::getAssoIpoLineIdOfRecordLineIpr(LineId);
- ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{Line}: 初始化IP录音线路, LineId = %d, IPOLineId = %d"), m_LineID, m_IPOLineID);
- }
- CLineRecordIprr::~CLineRecordIprr(void)
- {
- }
- /*****************************************************************
- **【函数名称】 getState
- **【函数功能】 获取状态字符串
- **【参数】
- **【返回值】
- ****************************************************************/
- LPCTSTR CLineRecordIprr::getState( void ) const
- {
- switch(m_State)
- {
- case S_CALL_STANDBY: return _T("空闲");
- case S_CALL_UNAVAILABLE: return _T("不可用");
- case S_IPR_COMMUNICATING: return _T("协商中");
- case S_IPR_USING: return _T("录音中");
- default: return _T("未知状态");
- }
- }
- /*****************************************************************
- **【函数名称】 procDevMsg
- **【函数功能】 底层事件响应处理
- **【参数】 pEvent 事件信息结构体
- **【返回值】
- ****************************************************************/
- void CLineRecordIprr::procDevMsg( PSSM_EVENT pEvent )
- {
- switch(pEvent->wEventCode)
- {
- case E_CHG_ChState: // 模拟录音线路状态事件
- CIprControl::GetInstance().onEventIprState(this, SsmGetChState(pEvent->nReference));
- break;
- case E_IPR_START_REC_CB:
- CIprControl::GetInstance().onEventStartRecCb(this, pEvent);
- break;
- case E_IPR_STOP_REC_CB:
- CIprControl::GetInstance().onEventStopRecCb(this, pEvent);
- break;
- case E_IPR_PAUSE_REC_CB:
- CIprControl::GetInstance().onEventPauseRecCb(this, pEvent);
- break;
- case E_IPR_RESTART_REC_CB:
- CIprControl::GetInstance().onEventRestartRecCb(this, pEvent);
- break;
- case E_IPR_ACTIVE_SESSION_CB:
- CIprControl::GetInstance().onEventActiveSessionCb(this, pEvent);
- break;
- case E_IPR_DEACTIVE_SESSION_CB:
- CIprControl::GetInstance().onEventDeactiveSessionCb(this, pEvent);
- break;
- case E_IPR_ACTIVE_AND_REC_CB:
- CIprControl::GetInstance().onEventActiveAndRecCb(this, pEvent);
- break;
- case E_IPR_DEACTIVE_AND_STOPREC_CB:
- CIprControl::GetInstance().onEventDeactiveAndStopRecCb(this, pEvent);
- break;
- }
- }
- /*****************************************************************
- **【函数名称】 procCmd
- **【函数功能】 线路命令处理
- **【参数】 pPduEntity 线路命令指针
- **【返回值】
- ****************************************************************/
- void CLineRecordIprr::procCmd( CPduEntity * pPduEntity )
- {
- switch(pPduEntity->GetCmdType())
- {
- case PDU_CMD_CTI_VS_RECORD: // 处理录音命令
- CIprControl::GetInstance().onCmdLineRecord(this, pPduEntity);
- break;
- case PDU_CMD_CTI_VS_LINECONTROL: // 处理线路控制命令
- CIprControl::GetInstance().onCmdLineControl(this, pPduEntity);
- break;
- }
- }
- /*****************************************************************
- **【函数名称】 isReady4Rec
- **【函数功能】 是否可以录音
- **【参数】
- **【返回值】
- ****************************************************************/
- bool CLineRecordIprr::isReady4Rec( CString& RecFileName )
- {
- if(m_pCmdEntity == NULL || m_pCmdEntity->GetCmdType() != PDU_CMD_CTI_VS_RECORD)
- return false;
- RecFileName = m_pCmdEntity->GetDataString(3); //录音文件名
- return true;
- }
- /*****************************************************************
- **【函数名称】 resetRecContext
- **【函数功能】 重置录音环境
- **【参数】
- **【返回值】
- ****************************************************************/
- void CLineRecordIprr::resetRecContext( void )
- {
- m_RecState = REC_STATE_IDLE;
- m_SessionId = CONST_IPR_SESSION_INVALID;
- m_SessionCodec = CONST_IPR_CODEC_INVALID;
- m_FowardingPPort = 0;
- m_FowardingSPort = 0;
- m_IsSessionActived = false;
- }
|