中间件标准版5.1git,去除基础模块

TapiControl.h 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*************************************************************************
  2. 【文件名】 TapiControl.h
  3. 【功能模块和目的】 TAPI控制类头文件
  4. 【开发者及日期】 郑石诺 2016/03/24
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2016 河南华谊网络科技有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. #include <Tapi.h>
  11. class CTapiLine;
  12. class CTrunkBase;
  13. /*************************************************************************
  14. 【类名】 CTapiControl
  15. 【功能】
  16. 【接口说明】 TAPI控制类
  17. 【开发者及日期】 郑石诺 2016/03/24
  18. 【版本】 V1.0.0
  19. 【版权信息】 Copyright (C)2016 河南华谊网络科技有限公司
  20. 【更改记录】
  21. *************************************************************************/
  22. class CTapiControl
  23. {
  24. SINGLETON_DECLARE(CTapiControl)
  25. public:
  26. ~CTapiControl(void);
  27. // 设备操作
  28. bool init(void);
  29. void release(void);
  30. // 线路查询函数
  31. CTapiLine* getLine(DWORD DevID); // 根据设备编号查找线路
  32. CTapiLine* getLine(LPCTSTR ExtID); // 根据分机号查找线路
  33. CTapiLine* getLineByCallId(int DevLinkCallId); // 根据DevLink CallId 查找线路
  34. CTapiLine* getIvrLineByAssoTrunk(UINT TrunkId); // 根据中继ID查找其当前关联的IVR分机
  35. CTapiLine* getFaxLineByAssoTrunk(UINT TrunkId); // 根据中继ID查找其当前关联的传真分机
  36. CTapiLine* getFreeIvrLine(void); // 查找一条空闲的IVR线路
  37. CTapiLine* getFreeFaxLine(void); // 查找一条空闲的FAX线路
  38. CTapiLine* getFreeFaxLineOnly(void); // 仅查找空闲的Fax线路不包含IVR线路
  39. CTapiLine* getErrorIvrLine(void); // 获取正在执行任务,并且未关联外线成功的线路
  40. UINT getTrunkAssoIvrId(UINT TrunkId);
  41. UINT getTrunkAssoFaxId(UINT TrunkId);
  42. // DevLink设备事件响应入口
  43. void onDevLinkEventS(DevLinkInfoS* pInfoS); // S事件
  44. void onDevLinkEventA(int DevLinkCallId); // A事件
  45. void onDevLinkEventD(int DevLinkCallId); // D事件
  46. private:
  47. CTapiControl(void);
  48. // 设备控制主回调函数
  49. static void CALLBACK __tapiLineCallback(DWORD dwDevice,
  50. DWORD nMsg,
  51. DWORD dwInstance,
  52. DWORD dwParam1,
  53. DWORD dwParam2,
  54. DWORD dwParam3);
  55. // 设备初始化相关函数
  56. UINT __openValidLines(int DevCounts); // 打开所有可用线路
  57. HLINE __openDev(CString& ExtID, DWORD DevID, DWORD ApiVersion, DWORD ExtVersion, LINEDEVCAPS* pDevCaps); // 打开TAPI线路并返回设备句柄
  58. // TAPI设备操作子函数
  59. HRESULT __loopLineGetDevCaps(DWORD DevID, DWORD ApiVersion, DWORD ExtVersion, LINEDEVCAPS* &pDevCaps); // 得到设备功能
  60. HRESULT __loopLineGetAddressCaps(DWORD DevID, DWORD AddressID, DWORD ApiVersion, LINEADDRESSCAPS*& pAddressCaps); // 得到线路能力
  61. // TAPI通用字符解析函数(从TAPI数据结构中得到相关信息)
  62. CString __getTapiString(void *pInfo, DWORD Size, DWORD Offset);
  63. private:
  64. const static DWORD TAPI_LO_VERSION = 0x00020000; // TAPI v2.0
  65. const static DWORD TAPI_HI_VERSION = TAPI_CURRENT_VERSION; // TAPI当前最高版本号
  66. // 系统成员
  67. HLINEAPP m_hLineApp; // TAPI应用主控句柄
  68. CMap<DWORD, DWORD, CTapiLine*, CTapiLine*> m_MapLineByDevID; // 以DevID为索引的LineMap
  69. CMap<CString, LPCTSTR, CTapiLine*, CTapiLine*> m_MapLineByExtID; // 以ExtID为索引的LineMap
  70. };