TAPILINE.H
上传用户:chinamans
上传日期:2013-03-17
资源大小:202k
文件大小:4k
源码类别:

TAPI编程

开发平台:

Visual C++

  1. // tapiline.h : header file
  2. // (c) Dialogic corp 1995, 1996
  3. //
  4. // Functions defs
  5. #define FUNCTION_MAKECALL 1
  6. #define FUNCTION_DROP 2
  7. #define FUNCTION_ANSWER 3
  8. #define FUNCTION_DIAL 4
  9. #define FUNCTION_DEVSPEC 5
  10. #define FUNCTION_FORWARD 6
  11. // Wave IN/OUT defs
  12. #define WAVEIN 1
  13. #define WAVEOUT 2
  14. // Device specific action steps
  15. #define DEVSPEC_IDLE 0
  16. #define DEVSPEC_STARTING 1 // before LINE_REPLY arrived
  17. #define DEVSPEC_PROGRESS 2
  18. #define DEVSPEC_SUCCESS 4
  19. #define DEVSPEC_STARTFAILED 8 // failed to start
  20. #define DEVSPEC_RESULTFAILED 16 // failed to finish
  21. class CTapiCall;
  22. BOOL IsLineRemote(LPLINEDEVCAPS lpDC); // no longer need this
  23. //typedef CMap<HCALL, HCALL, CTapiCall *, (CTapiCall *)&> CallList; // list of calls on line
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CTapiLine command target
  26. class CTapiLine : public CObject
  27. {
  28. DECLARE_DYNCREATE(CTapiLine)
  29. protected:
  30. CTapiLine();           // protected constructor used by dynamic creation
  31. // Attributes
  32. public:
  33. CTapiLine(DWORD dwLineID);
  34. virtual ~CTapiLine();
  35. CString m_csName; // Readable name
  36. protected:
  37. CTapiApp *m_pApp; // Main app handle
  38. DWORD m_dwLineID;     // device ID
  39. HLINE m_hLine;     // Line handle
  40. UINT m_uiWaveInID; // WAVE/In ID
  41. UINT m_uiWaveOutID; // WAVE/Out ID
  42. DWORD m_dwApiVersion;   // TAPI version supported
  43. DWORD m_dwExtVersion;  // Extension version
  44. // for now, until one call is destroyed, don't establish another
  45. CTapiCall *m_pActiveCall; // Active call -to be replaced by List
  46. LINECALLPARAMS *m_lpCallParms;
  47. HANDLE m_hCallSem;
  48. DWORD m_dwDevSpecStat; // Status of devspec function
  49. DWORD m_dwDevSpecFunc; // Currrently executed devspec function
  50. BOOL  m_bRemote;
  51. // Operations
  52. public:
  53. DWORD ctlLineOpen(DWORD dwLineID);
  54. DWORD ctlLineClose();
  55. LONG ctlLineForward(LPSTR lpDest);
  56. HLINE ctlGetHLine()
  57. {return m_hLine;}
  58. DWORD ctlGetLineID()
  59. {return m_dwLineID;}
  60. DWORD ctlGetWaveInID()
  61. {return m_uiWaveInID;}
  62. DWORD ctlGetWaveOutID()
  63. {return m_uiWaveOutID;}
  64. CTapiCall *ctlGetActiveCall() // Protect by mutex together w/setcall
  65. {return m_pActiveCall;}
  66. DWORD ctlLineGetCaps(LPLINEDEVCAPS *lppDevCaps);
  67. BOOL ctlSetCallParms(LINECALLPARAMS *lpCallParms); // set the internal structure if needed
  68. LONG ctlLineMakeCall(LPCSTR lpDestAddress, DWORD dwCountryCode);
  69. LONG ctlLineAnswer(HCALL hCall = NULL);
  70. LONG ctlLineDrop(CTapiCall *pCall = NULL);
  71. LONG ctlLineDeallocateCall(CTapiCall *pCall = NULL);
  72. LONG ctlOfferCall(HCALL hCall);
  73. LONG ctlLineDial(CTapiCall *pCall, LPCSTR lpAddr, DWORD dwCountryCode);
  74. virtual void ctlPurgeCalls(); // free memory & other resources
  75. virtual void ctlUpdateCallStatus(WORD wFunction, DWORD dwStatus, CTapiCall *pCall);
  76. virtual BOOL ctlUpdateCallInfo(HCALL hCall, LPLINECALLINFO lpCallInfo);
  77. LPLINEDEVSTATUS ctlGetLineDevStatus();
  78. void ctlConfigDialog(HWND hWnd, LPSTR lpClass);
  79. LONG ctlLineDevSpecific(DWORD dwFunc, DWORD dwAddressID, HCALL hCall, LPVOID lParams, DWORD dwSize);
  80. void ctlUpdateDevSpecStatus(DWORD dwDevSpecStat = 0xffffffff)
  81. {if(dwDevSpecStat != 0xffffffff) InterlockedExchange((LONG *)&m_dwDevSpecStat, dwDevSpecStat);} 
  82. DWORD ctlGetDevSpecStatus()
  83. {return m_dwDevSpecStat;}
  84. void ctlUpdateDevSpecFunction(DWORD dwDevSpecFunc = 0xffffffff)
  85. {if(dwDevSpecFunc != 0xffffffff) InterlockedExchange((LONG *)&m_dwDevSpecFunc, dwDevSpecFunc);} 
  86. DWORD ctlGetDevSpecFunc()
  87. {return m_dwDevSpecFunc;}
  88. DWORD ctlGetApiVersion()
  89. {return m_dwApiVersion;}
  90. DWORD ctlGetExtVersion()
  91. {return m_dwExtVersion;}
  92. BOOL IsRemote(){return m_bRemote;}
  93. protected:
  94. LONG AddCall(HCALL hCall=NULL);
  95. void RemoveCall(CTapiCall *pCall = NULL);
  96. void ctlGetWaveDeviceID (WORD wType);
  97. // Overrides
  98. // ClassWizard generated virtual function overrides
  99. //{{AFX_VIRTUAL(CTapiLine)
  100. //}}AFX_VIRTUAL
  101. // Implementation
  102. protected:
  103. // Generated message map functions
  104. //{{AFX_MSG(CTapiLine)
  105. // NOTE - the ClassWizard will add and remove member functions here.
  106. //}}AFX_MSG
  107. //DECLARE_MESSAGE_MAP()
  108. };
  109. /////////////////////////////////////////////////////////////////////////////