h225csp.h
上传用户:hnnddl
上传日期:2007-01-06
资源大小:3580k
文件大小:8k
源码类别:

IP电话/视频会议

开发平台:

WINDOWS

  1. /*
  2.  * $Revision: 1.8 $
  3.  * $Date: 1998/05/19 18:29:20 $
  4.  */
  5. ////////////////////////////////////////////////////////////////
  6. //               Copyright (c) 1996,97 Lucent Technologies    //
  7. //                       All Rights Reserved                  //
  8. //                                                            //
  9. //                       THIS IS UNPUBLISHED                  //
  10. //                       PROPRIETARY SOURCE                   //
  11. //                   CODE OF Lucent Technologies              //
  12. //       AND elemedia    //
  13. //                                                            //
  14. //           The copyright notice above does not evidence any //
  15. //          actual or intended publication of such source code//
  16. ////////////////////////////////////////////////////////////////
  17. //
  18. /////////////////////////////////////////////////////////////////
  19. // File : h225csp.h        //
  20. //                                                             //
  21. // History:    //
  22. //    //
  23. //  3_Mar_1997  Created    //
  24. // 28_Apr_1997 Code Review PASS1.    //
  25. // 29_Apr_1997 Code Review PASS2.    //
  26. // 17_Sep_1997 New variant of InvokeCCPrim added, namely    //
  27. //     InvokeCCPrim(int, Q931Message *)    //
  28. // 25_Sep_1997 Comments for NotifyEvent call    //
  29. // 17_Oct_1997 H225 version made short[] from char[]    //
  30. // 11_Nov_1997 Added the GetCRV call    //
  31. // 10_Dec_1997 Destructor made virtual    //
  32. // 06_Apr_1998 Added SetCallID and GetCallID in H225CSProtocol//
  33. // Addition of conference_id_length member.    //
  34. //  08_Apr_1998 h225_version no longer static(private change). //
  35. //     H225 version made long[] from short[]    //
  36. // 08_May_1998 New overloaded methods for set/get protocolids.//
  37. //    //
  38. /////////////////////////////////////////////////////////////////
  39. #if !defined(__H225CSP_H__)
  40. #define __H225CSP_H__
  41. #include "util/platform.h"
  42. #include "api/h225csperr.h"
  43. #include "api/h225types.h"
  44. #include "api/connmgr.h"
  45. class H225Q931Client;
  46. class Logger;
  47. // The H225 Call signalling protocol API class.
  48. class DLLEXPORT H225CSProtocol : public ConnectionEntity
  49. {
  50. public:
  51. H225CSProtocol(int identifier,
  52. H225CSEndpointType& endpoint_type,
  53. ProtReturnCode& result,
  54. char *display_string = NULL);
  55. virtual ~H225CSProtocol();
  56. ProtReturnCode GetEndpointType(H225CSEndpointType&); 
  57. // Methods to get/set conference id.
  58. ProtReturnCode GetConfID(unsigned char*& buf, int& length);
  59. ProtReturnCode SetConfID(unsigned char* buf, int length);
  60. // Methods to get/set call identifier.
  61. ProtReturnCode GetCallID(H225CSCallID& call_id);
  62. ProtReturnCode SetCallID(H225CSCallID& call_id);
  63. // Method to get protocolid, this contains the H225 version number
  64. // In the overloaded versions, the parameters are integers 
  65. // that refer to version numbers. version is one of H225VersionNumber
  66. // NOTE: setting the protocolid will result in the pid being set
  67. // to this value in future messages. The default is version 2.
  68. ProtReturnCode GetProtocolID(unsigned char*& buf, int& length);
  69. ProtReturnCode SetProtocolID(int version);
  70. ProtReturnCode GetProtocolID(int &version);
  71. // Method to get the crv associated with this call. 
  72. // Note: for outgoing calls, the crv is allocated only at the
  73. // time of sending the setup message. An error is returned
  74. // if an attempt is made to retrive the crv prior to this stage.
  75. // For incoming messages, the crv is also available via the
  76. // Q931Message::GetCRV method.
  77. ProtReturnCode GetCRV(unsigned short& crv);
  78. // Method to respond to an incoming message, or initiate an outgoing
  79. // message.
  80. //
  81. // primitive is one of the following which specifies what message
  82. // to send out next.
  83. // CCP_SETUP_REQUEST
  84. // CCP_PROCEEDING_REQUEST
  85. // CCP_ALERTING_REQUEST
  86. // CCP_SETUP_RESPONSE
  87. // CCP_REJECT_REQUEST
  88. // CCP_RELEASE_REQUEST
  89. //
  90. // message specifies any additional information elements, which the
  91. // user requires to be sent out in the message, that is a result of
  92. // the primitive passed. User specified information elements will
  93. // override internally generated ones.  Note that there is an 
  94. // additional parameter to specifiy the user to user information 
  95. // elements. If present in message it will override the parameter ie.
  96. //
  97. // ie specifies the user to user information element, to be sent
  98. // as a part of the message. Note that messages sent out as a 
  99. // result of the allowed primitives must mandatorily contain 
  100. // the user to user information element, as dictated by H.225
  101. ProtReturnCode InvokeCCPrim(int primitive,
  102. Q931Message* message, H225CSUUIE& ie);
  103. // Variant of the previous InvokeCCPrim function. Some of the Q.931 
  104. // messages do not have the user to user information element as a
  105. // part of the message. Use this member to send out such messages.
  106. //
  107. // primitive specifies what message to send out next. It can be one of
  108. // CCP_SETUP_REQUEST
  109. // CCP_PROCEEDING_REQUEST
  110. // CCP_ALERTING_REQUEST
  111. // CCP_SETUP_RESPONSE
  112. // CCP_REJECT_REQUEST
  113. // CCP_RELEASE_REQUEST
  114. // CCP_STATUS_ENQUIRY
  115. // CCP_STATUS
  116. //
  117. // message specifies any additional information elements, which the
  118. // user requires to be sent out in the message, that is a result of
  119. // the primitive passed. User specified information elements will
  120. // override internally generated ones.
  121. //
  122. // NOTE: Use InvokeCCPrim(int , Q931Message* , H225CSUUIE& ) to
  123. // send messages that have a mandatory User to User information 
  124. // element. The user is responsible for making sure that a user to
  125. // user information element is present if the 
  126. // InvokeCCPrim(int , Q931Message *) is called for such messages, 
  127. // say for example CCP_ALERTING_REQUEST.
  128. // 
  129. // NOTE regarding CCP_STATUS: note that the stack generates a status
  130. // message internally for cases when either a status enquiry was
  131. // sent by the remote end or when a packet arrives for an inconsistant
  132. // state. CCP_STATUS is to be used for cases where the users decide
  133. // to send a status message on their own without any stimulus. Also
  134. // note that the cause information element is optional under H.323
  135. // and the callstate ie is generated internally by default.
  136. ProtReturnCode InvokeCCPrim(int primitive, Q931Message* message);
  137. // Set the value for the timeouts used by the Q.931 engine.
  138. // timer_name selects the timer value to modify, and is from
  139. // enum Q931TimerTypes and value specifies in seconds, 
  140. // the timeout to use in place of the internal defaults.
  141. ProtReturnCode SetTimeout(int timer_name, int value);
  142. // Method returns the current state of the q931 finite state
  143. // machine.
  144. int GetCallState();
  145. // Method to return the Call direction, whether outgoing or
  146. // incoming.
  147. int GetCallDirection();
  148. // Callback to notify user of a Q931 event. old_state and
  149. // new_state specify the state of the Q931 Finite State Machince
  150. // before and after the occurence of the event. If the event
  151. // is arrival of a network message then "ie" points to the
  152. // user to user information element in that message (if any).
  153. // Note: event can be NULL for cases where notification 
  154. // is for informational purposes (like a state transition
  155. // in the state machine when a setup is sent out).
  156. virtual void NotifyEvent(int old_state, int new_state,
  157. Q931Event* event, H225CSUUIE* ie) = 0;
  158. private:
  159. friend class H225Q931Client;
  160. H225CSEndpointType* endpoint_type;
  161. H225Q931Client* callsig;
  162. H225CSUUIE* current_uuie;
  163. Q931Message* other_ies;
  164. unsigned char conference_id[16];
  165. int conference_id_length;
  166. H225CSCallID call_id;
  167. unsigned long h225_version[6];
  168. Logger *_logger;
  169. };
  170. extern DLLEXPORT const char * H225CSGetVersionString();
  171. extern DLLEXPORT unsigned long H225CSGetVersionNumber();
  172. #endif // __H225CSP_H__