升龙物业 老版本 ocx IPO, 加密狗 转值班电话

AnswerCallReq.cpp 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #include "StdAfx.h"
  2. #include "AnswerCallReq.h"
  3. #include "ControlShell.h"
  4. #include "VirtualProxy.h"
  5. #include "ProxyShell.h"
  6. #include "MC.h"
  7. CAnswerCallReq::CAnswerCallReq(CProxyShell* pParent, CPduEntity& ReqPdu) : CReqBase(pParent, ReqPdu), m_HostCall(0)
  8. {
  9. }
  10. CAnswerCallReq::~CAnswerCallReq(void)
  11. {
  12. }
  13. /*****************************************************************
  14. **【函数名称】 request
  15. **【函数功能】 发出请求(命令方式)
  16. **【参数】
  17. **【返回值】
  18. ****************************************************************/
  19. bool CAnswerCallReq::request( void )
  20. {
  21. // 校验状态
  22. if(m_pHostLine->state() != VIRTUAL_LINE_STATE_ALERTING)
  23. return false;
  24. // 保存呼叫信息
  25. m_HostCall = m_pHostLine->activeCallId();
  26. // 通知启动日志
  27. LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{LineReq}: 分机[%lu]应答, CallId = %ld"), m_pHostLine->lineId(), m_HostCall);
  28. // 开始应答
  29. return CMC::GetInstance().answer(m_pHostLine->devId());
  30. }
  31. /*****************************************************************
  32. **【函数名称】 end
  33. **【函数功能】 操作完成
  34. **【参数】 IsSucceed 操作是否成功
  35. lpData 随路数据
  36. **【返回值】
  37. ****************************************************************/
  38. void CAnswerCallReq::end( bool IsSucceed, LPCTSTR lpData )
  39. {
  40. if(IsSucceed)
  41. {
  42. LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{LineReq}: 分机[%lu]应答成功, CallerNum = %s"),
  43. m_pHostLine->lineId(), m_pHostLine->callerNum());
  44. }
  45. else
  46. {
  47. LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_WARNING, _T("{LineReq}: 分机[%lu]应答失败, CallerNum = %s"),
  48. m_pHostLine->lineId(), m_pHostLine->callerNum());
  49. } // end if
  50. // 返回执行结果
  51. m_pParent->onLineReqEnd(this, IsSucceed, lpData);
  52. }
  53. /*****************************************************************
  54. **【函数名称】 onDevChEvent
  55. **【函数功能】 线路向上层发送的设备主动事件
  56. **【参数】 pEventLine 触发事件的线路
  57. EvtType 事件类型
  58. lpContent 事件内容
  59. **【返回值】
  60. *****************************************************************/
  61. void CAnswerCallReq::onDevChEvent( CVirtualProxy* pEventLine, DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent )
  62. {
  63. }
  64. /*****************************************************************
  65. **【函数名称】 onLineStateChanged
  66. **【函数功能】 线路状态变化事件响应接口
  67. **【参数】 pEventLine 状态变化的线路实体指针
  68. LineState 线路当前状态
  69. Call 主呼叫ID
  70. SubCall 子呼叫ID
  71. lpCallerNum 主叫号码
  72. lpCalleeNum 被叫号码
  73. **【返回值】
  74. ****************************************************************/
  75. void CAnswerCallReq::onLineStateChanged( CVirtualProxy* pEventLine, VIRTUAL_LINE_STATE LineState, long Call, long SubCall, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum )
  76. {
  77. if(m_HostCall != Call) // 其它呼叫信息
  78. return;
  79. // 根据线路状态进行处理
  80. switch(LineState)
  81. {
  82. case VIRTUAL_LINE_STATE_FREE: // 应答失败
  83. end(false, NULL);
  84. break;
  85. case VIRTUAL_LINE_STATE_TALKING: // 应答成功
  86. end(true, NULL);
  87. break;
  88. } // end switch
  89. }