| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #include "StdAfx.h"
- #include "TrunkBase.h"
- #include "DevControl.h"
- #include "VsControl.h"
- CTrunkBase::CTrunkBase(UINT TrunkId) : m_TrunkId(TrunkId), m_DevLinkCallId(CONST_DEV_LINK_CALL_NULL), m_LineStatus(TRUNK_STATE_FREE)
- {
- }
- /*****************************************************************
- **【函数名称】 _setState
- **【函数功能】 设置线路当前状态
- **【参数】 Flag 状态标识
- **【返回值】
- ****************************************************************/
- void CTrunkBase::_setState( TRUNK_STATE NewState, int Flag )
- {
- // 事件过滤
- if(m_LineStatus == NewState) return;
- // 保存当前状态
- m_LineStatus = NewState;
- // 线路空闲的后续处理
- if(m_LineStatus == TRUNK_STATE_FREE)
- _onFree(Flag);
- // 通知线路状态变化事件
- CString strTrunkId;
- strTrunkId.Format("%lu", m_TrunkId);
- CDevControl::GetInstance().onEventResState(DEV_RES_TYPE_TRUNK, strTrunkId, m_LineStatus, m_CallerNum, m_CalleeNum);
- }
- /*****************************************************************
- **【函数名称】 _onFree
- **【函数功能】 线路空闲的后续处理
- **【参数】 Flag 主动挂机还是被动挂机
- **【返回值】
- ****************************************************************/
- void CTrunkBase::_onFree( int Flag )
- {
- // 清空主被叫号码
- m_CallerNum = _T("");
- m_CalleeNum = _T("");
- CDevControl::GetInstance().onEventLog(LOG_LEVEL_NORMAL, _T("{Trunk_%d}: 线路空闲"), m_TrunkId);
- // 通知录音VP台停止录音
- CVsControl::GetInstance().notifyLineFree(m_TrunkId, DEV_RES_TYPE_TRUNK);
- }
- /*****************************************************************
- **【函数名称】 regist
- **【函数功能】 注册线路
- **【参数】
- **【返回值】
- ****************************************************************/
- void CTrunkBase::regist( void )
- {
- CString strTrunkId;
- strTrunkId.Format(_T("%lu"), m_TrunkId);
- // 通知业务逻辑线路创建事件
- CDevControl::GetInstance().onEventResDetail(DEV_RES_TYPE_TRUNK, strTrunkId);
- CDevControl::GetInstance().onEventResState(DEV_RES_TYPE_TRUNK, strTrunkId, m_LineStatus);
- }
- /*****************************************************************
- **【函数名称】 onDevLinkEventS
- **【函数功能】 DEV Link S 事件响应
- **【参数】 pInfoS S事件消息内容
- **【返回值】
- ****************************************************************/
- void CTrunkBase::onDevLinkEventS( DevLinkInfoS* pInfoS )
- {
- // 是否为外线来电呼入
- if(m_DevLinkCallId == CONST_DEV_LINK_CALL_NULL && pInfoS->nResStatus == TRUNK_STATE_ALERTING) // 外线来电
- {
- CDevControl::GetInstance().onEventLog(LOG_LEVEL_NORMAL, _T("{Trunk_%s}: 应答外线来电, CallerNum = %s, CalleeNum = %s, DevLinkCallId = %ld"),
- pInfoS->szResId,
- pInfoS->szCallerNum,
- pInfoS->szCalleeNum,
- pInfoS->nDevLinkCallId);
- } // end if
- // 更新数据
- m_CallerNum = pInfoS->szCallerNum;
- m_CalleeNum = pInfoS->szCalleeNum;
- m_DevLinkCallId = pInfoS->nDevLinkCallId;
- // 更新线路状态
- _setState((TRUNK_STATE)pInfoS->nResStatus, pInfoS->nFlag);
- }
- /*****************************************************************
- **【函数名称】 onDevLinkEventA
- **【函数功能】 DEV Link A 事件响应
- **【参数】 DevLinkCallId DevLink CallId
- **【返回值】
- ****************************************************************/
- void CTrunkBase::onDevLinkEventA( int DevLinkCallId )
- {
- }
- /*****************************************************************
- **【函数名称】 onDevLinkEventD
- **【函数功能】 DEV Link D 事件响应
- **【参数】 DevLinkCallId DevLink CallId
- **【返回值】
- ****************************************************************/
- void CTrunkBase::onDevLinkEventD( int DevLinkCallId )
- {
- m_DevLinkCallId = CONST_DEV_LINK_CALL_NULL;
- // 初始化线路状态
- _setState(TRUNK_STATE_FREE, 0);
- }
|