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

IP电话/视频会议

开发平台:

WINDOWS

  1. /*
  2.  * $Revision: 1.14 $
  3.  * $Date: 1999/03/30 21:55:43 $
  4.  */
  5. ////////////////////////////////////////////////////////////////
  6. //               Copyright (c) 1996 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. // File : h225types.h                                         //
  19. //                                                            //
  20. // This file defines the types used in H.225(0) signalling.   //
  21. //                                                            //
  22. //                                                            //
  23. // History:                                                   //
  24. //  03_Mar_1997 Created                                       //
  25. //  06_Mar_1997 operator = added                              //
  26. //  16_Apr_1997 Code review Pass1   //
  27. //  17_Apr_1997 Code review Pass2   //
  28. // 19_May_1997 Incorporated Profile 1b changes   //
  29. // 02_Jul_1997 Added Facility UUIE.   //
  30. // 26_Aug_1997 Changed wchar_t to unsigned short    //
  31. // (ISO/IEC 10646-1)      //
  32. // Added methods in H225EndpointType class for   //
  33. // setting GK,GW, TERM, MCU without supplying   //
  34. // NSP.   //
  35. // SetConfID and GetConfID take length arg   //
  36. // 11_Nov_1997 Added methods to get/set user-data field   //
  37. // of H323-UserInformation.   //
  38. // Added methods to get/set nonStandardData field//
  39. // of H323-UserInformation::H323-UU-PDU   //
  40. //  03_Apr_1998 Addition of H225CSCallID class   //
  41. // Addition of UUIEItemCallID class   //
  42. // H225CSxxxUUIE derive from UUIEItemCallID   //
  43. // 06_Apr_1998 Populate method in all UUIEs.   //
  44. // UUIEItemConfID constructor prototype changed  //
  45. // 08_Apr_1998 Addition of new get and set protocolid fns.   //
  46. // 30_Apr_1998 Fixed typo in H225CSReleaseCompleteReason enum//
  47. // list.   //
  48. //   RCR_RELEASECOMPLETEREASON_INVALID_REVISION  //
  49. //   changed to RCR_INVALID_REVISION.   //
  50. // 30_Apr_1998 Added new enum values in   //
  51. //  H225CSReleaseCompleteReason &   //
  52. //  H225CSFacilityReason,   //
  53. //  H225CSAliasAddressType    //
  54. //  H225CSSupportedProtocols   //
  55. // Changed H225CSAliasAddress for H225V2.   //
  56. // 01_May_1998 Modified H225CSGatewayInfo for H225V2.   //
  57. // 05_May_1998 New overloaded methods in H225CSUUIE to set   //
  58. // and get protocol id using integers.      //
  59. // 07_May_1998 Changed enum H225CSSupportedProtocols to     //
  60. // H225CSSupportedProtocolsEnum   //
  61. // 08_May_1998 Added H225CSUUIEType enum.   //
  62. //  03_Aug_1998 Added two new enum H225CSConferenceGoal       //
  63. //              values for general support of V2 and          //
  64. //              Supplemenatry Service features  (acg)         //
  65. // 18_Aug_1998 Added methods in class H225CSUUIE   //
  66. // for H4501 Supplementary services   //
  67. // AddH450SupplementaryService() &   //
  68. // Get[Num]H450SupplementaryServices()  (ajs)   //
  69. //  02_Oct_1998 Added class UUIEItemFastStartList. Also   //
  70. // changed classes H225CSSetupUUIE,   //
  71. // H225CSAlertingUUIE, H225CSCallProceedingUUIE  //
  72. // and H225CSConnectUUIE to derive from it   //
  73. // 08_Oct_1998 Added H245 Transport address to FacilityUUIE  //
  74. // 13_Oct_1998 Added ProgressUUIE.   //
  75. // 10_Mar_1999 Added RCR_ABSENT for stack internal use   //
  76. // 11_Mar_1999 Added H225CSInformationUUIE   //
  77. //                                                            //    
  78. ////////////////////////////////////////////////////////////////
  79. #if (!defined(__H225TYPES_H__))
  80. #define __H225TYPES_H__
  81. #include "util/platform.h"
  82. #include "api/h225csperr.h"
  83. #include "q931/q931event.h"
  84. #include "q931/q931ie.h"
  85. // 
  86. // Forward declarations.
  87. //
  88. class H225EndpointType;
  89. class H225VendorIdentifier;
  90. class H225GatewayInfo;
  91. class H225AliasAddress;
  92. class H225QseriesOptions;
  93. class H225MessageBody;
  94. class H225CSProtocol;
  95. class H225NonStandardParameter;
  96. class H225TransportAddress;
  97. class H225ConferenceIdentifier;
  98. class H225ProtocolIdentifier;
  99. class H225DataRate;
  100. class H225SupportedPrefix;
  101. class H225SupportedProtocols;
  102. class H4501SuppService;
  103. class H245SigOpenLogicalChannel;
  104. class ListManager;
  105. struct _H225VendorIdentifier;
  106. struct _H225AliasAddress;
  107. struct _H225QseriesOptions;
  108. struct _H225H323_MESSAGES_NonStandardParameter;
  109. struct _H225CallIdentifier;
  110. struct _H4501SuppServiceList;
  111. class H225CSSupportedProtocols;
  112. //
  113. // Enumeration types.
  114. //
  115. enum H225VersionNumber
  116. {
  117. H225_VERSION_INVALID = 0,
  118. H225_VERSION_1 = 1,
  119. H225_VERSION_2 = 2
  120. };
  121. // The various reasons for dropping a Q.931 call.
  122. // Used in the ReleaseCompleteReason field of the Release Complete message's
  123. // user to user information element.
  124. // All values other than RCR_ABSENT are legal.
  125. // Note that RCR_ABSENT alone is used internally in the stack, and can be 
  126. // changed without notice.
  127. enum H225CSReleaseCompleteReason
  128. {
  129. RCR_ABSENT = 0, // For stack internal use only.
  130. RCR_NO_BANDWIDTH = 1,
  131. RCR_GATEKEEPER_RESOURCES,
  132. RCR_UNREACHABLE_DESTINATION,
  133. RCR_DESTINATION_REJECTION,
  134. RCR_INVALID_REVISION,
  135. RCR_NO_PERMISSION,
  136. RCR_UNREACHABLE_GATEKEEPER,
  137. RCR_GATEWAY_RESOURCES,
  138. RCR_BADFORMAT_ADDRESS,
  139. RCR_ADAPTIVE_BUSY,
  140. RCR_INCONF,
  141. RCR_UNDEFINED,
  142. RCR_FACILITY_CALL_DEFLECTION,
  143. RCR_SECURITY_DENIED,
  144. RCR_CALLED_PARTY_NOT_REGISTERED,
  145. RCR_CALLER_NOT_REGISTERED
  146. };
  147. // The various reasons for sending a facility message.
  148. enum H225CSFacilityReason
  149. {
  150. FYR_INVALID = 0,
  151. FYR_ROUTE_CALL_TO_GATEKEEPER = 1,
  152. FYR_CALL_FORWARDED,
  153. FYR_ROUTE_CALL_TO_MC,
  154. FYR_UNDEFINED,
  155. FYR_CONFERENCE_LIST_CHOICE,
  156. FYR_START_H245
  157. };
  158. // The conference goal for a Q.931 call.
  159. // Used in the conferenceGoal field of the Setup message's user to user
  160. // information element.
  161. enum H225CSConferenceGoal
  162. {
  163. CG_CREATE = 1,
  164. CG_JOIN,
  165. CG_INVITE,
  166. CG_CAPABILITY, // capability-negotiation
  167. CG_SUPP_SERVICE  // callIndependentSupplemenatryService
  168. };
  169. // The type of Q.931 call.
  170. // Used in the callType field of the Setup message's user to user
  171. // information element.
  172. enum H225CSCallType
  173. {
  174. CT_POINT_TO_POINT = 1,
  175. CT_ONE_TO_N,
  176. CT_N_TO_ONE,
  177. CT_N_TO_N
  178. };
  179. // The type of calling to be done for a Q.931 call, whether
  180. // direct or gatekeeper routed. Used in ARQ RAS message.
  181. enum H225CSCallModel
  182. {
  183. CM_DIRECT = 1,
  184. CM_GATEKEEPER_ROUTED
  185. };
  186. // Used in the H225CSGatewayInfo class.
  187. enum H225CSSupportedProtocolsEnum
  188. {
  189. PROT_NONSTANDARD_DATA = 1,
  190. PROT_H310,
  191. PROT_H320,
  192. PROT_H321,
  193. PROT_H322,
  194. PROT_H323,
  195. PROT_H324,
  196. PROT_VOICE,
  197. PROT_T120_ONLY,
  198. PROT_NONSTANDARD_PROTOCOL
  199. };
  200. // Types of non standard identifiers.
  201. enum H225CSNonStdIDType
  202. {
  203. H225NS_IDT_INVALID,
  204. H225NS_IDT_OBJECT,
  205. H225NS_IDT_H221NS
  206. };
  207. // Types of alias addresses.
  208. enum H225CSAliasAddressType
  209. {
  210. AAT_INVALID,
  211. AAT_E164,
  212. AAT_H323_ID,
  213. AAT_URL_ID,
  214. AAT_TRANSPORT_ID,
  215. AAT_EMAIL_ID,
  216. AAT_PARTY_NUMBER
  217. };
  218. // Types of uuie.
  219. enum H225CSUUIEType
  220. {
  221. UUIET_INVALID = 0,
  222. UUIET_SETUP,
  223. UUIET_CALL_PROCEEDING,
  224. UUIET_CONNECT,
  225. UUIET_ALERTING,
  226. UUIET_INFORMATION,
  227. UUIET_RELEASE_COMPLETE,
  228. UUIET_FACILITY,
  229. UUIET_PROGRESS,
  230. UUIET_EMPTY
  231. };
  232. //
  233. // Classes.
  234. //
  235. // The abstraction for the H.225 NonStandardParameter.
  236. class DLLEXPORT H225CSNonStdParameter
  237. {
  238. public:
  239. // Constructors and destructors.
  240. H225CSNonStdParameter();
  241. ~H225CSNonStdParameter();
  242. // Returns the type of the non standard identifier.
  243. // See enum H225CSNonStdIDType
  244. //
  245. // if type is NSIDT_OBJECT then call
  246. // GetObjectIdentifier to get the id.
  247. // if type is NSIDT_H221_NON_STD call
  248. // GetH221NonStd to get the ID.
  249. // PASS1.
  250. int GetIDType();
  251. ProtReturnCode GetH221NonStd(unsigned short &t35_cc,
  252. unsigned short &t35_ext, unsigned short &manufacturer_code);
  253. ProtReturnCode SetH221NonStd(unsigned short t35_cc,
  254. unsigned short t35_ext, unsigned short manufacturer_code);
  255. ProtReturnCode GetObjectIdentifier(unsigned long *&data, 
  256. unsigned short &len);
  257. ProtReturnCode SetObjectIdentifier(unsigned long *data, 
  258. unsigned short len);
  259. ProtReturnCode SetNonStdData(unsigned char *data, 
  260. unsigned int len);
  261. ProtReturnCode GetNonStdData(unsigned char *&data, 
  262. unsigned int &len);
  263. H225CSNonStdParameter & operator=(H225CSNonStdParameter &);
  264. // For protocol internal use.
  265. H225NonStandardParameter * GetPriv();
  266. ProtReturnCode SetPriv(H225NonStandardParameter *);
  267. private:
  268. // The pointer to the internal representation..
  269. H225NonStandardParameter *nsp_cp;
  270. _H225H323_MESSAGES_NonStandardParameter *nsp_sp;
  271. };
  272. // The abstraction for the H.225 VendorIdentifier 
  273. class DLLEXPORT H225CSVendorID
  274. {
  275. public:
  276. // constructors and destructors.
  277. H225CSVendorID();
  278. ~H225CSVendorID();
  279. ProtReturnCode SetProductID(unsigned char *prod_id, 
  280. unsigned short len);
  281. ProtReturnCode GetProductID(unsigned char *&prod_id, 
  282. unsigned short &len);
  283. ProtReturnCode SetVersionID(unsigned char *vers_id, 
  284. unsigned short len);
  285. ProtReturnCode GetVersionID(unsigned char *&vers_id,
  286. unsigned short &len);
  287. ProtReturnCode SetH221NonStd(unsigned short t35_country_code,
  288. unsigned short t35_extension,
  289. unsigned short manufaturer_code);
  290. ProtReturnCode GetH221NonStd(unsigned short &t35_country_code,
  291. unsigned short &t35_extension,
  292. unsigned short &manufaturer_code);
  293. H225CSVendorID & operator=(H225CSVendorID &);
  294. // For protocol internal use.
  295. H225VendorIdentifier * GetPriv();
  296. ProtReturnCode SetPriv(H225VendorIdentifier *);
  297. private:
  298. // The pointer to the internal representation..
  299. H225VendorIdentifier *vid_cp;
  300. _H225VendorIdentifier *vid_sp;
  301. };
  302. class DLLEXPORT ItemNonStdParam
  303. {
  304. public:
  305. ItemNonStdParam(int is_mandatory);
  306. virtual ~ItemNonStdParam();
  307. // Set and get the non standard data of a ras message.
  308. // Note that this optional parameter is present in all
  309. // ras messages.
  310. virtual ProtReturnCode SetNonStdData(H225CSNonStdParameter &);
  311. virtual ProtReturnCode GetNonStdData(H225CSNonStdParameter &);
  312. protected:
  313. H225NonStandardParameter *nsp;
  314. };
  315. // The abstraction for the H.225 GatewayInfo
  316. class DLLEXPORT H225CSGatewayInfo : public ItemNonStdParam
  317. {
  318. public:
  319. // constructors and destructors.
  320. H225CSGatewayInfo();
  321. ~H225CSGatewayInfo();
  322. // Returns the number of SupportedProtocol items present.
  323. ProtReturnCode GetNumProtocols(int& count);
  324. // Retrieve the list of supported protocols. input is a pointer 
  325. // to an array, of atleast the size returned by the previous call, 
  326. // namely, GetNumProtocols. On return the array will be initialized 
  327. // with the protocols that are supported by the gateway. The array 
  328. // elements would be from H225CSSUpportedProtocolsEnum. count specifies 
  329. // the size of the array. 
  330. ProtReturnCode GetProtocolTypes(int types_array[], int& count);
  331. // Retrieve the capability information associated with a protocol.
  332. // index is the index(starting from 0) of the protocol, in the array 
  333. // returned by the GetTypes call, for which the capability
  334. // information is requested. 
  335. // supp_prot should be instantiated as the appropriate derived
  336. // class based on the type.
  337. ProtReturnCode GetProtocols(int index,
  338. H225CSSupportedProtocols& supp_prot); 
  339. ProtReturnCode AddProtocols(H225CSSupportedProtocols&);
  340. H225CSGatewayInfo & operator=(H225CSGatewayInfo&);
  341. // For protocol internal use.
  342. H225GatewayInfo * GetPriv();
  343. ProtReturnCode SetPriv(H225GatewayInfo *);
  344. private:
  345. // The pointer to the internal representation..
  346. H225GatewayInfo *gw_cp;
  347. void *protocol_list;
  348. };
  349. // The abstraction for the H.225 GatewayInfo
  350. class DLLEXPORT H225CSEndpointType
  351. {
  352. public:
  353. // constructors and destructors.
  354. H225CSEndpointType();
  355. ~H225CSEndpointType();
  356. ProtReturnCode SetNonStd(H225CSNonStdParameter &);
  357. ProtReturnCode GetNonStd(H225CSNonStdParameter &);
  358. ProtReturnCode SetVendor(H225CSVendorID &);
  359. ProtReturnCode GetVendor(H225CSVendorID &);
  360. ProtReturnCode SetGatekeeper(H225CSNonStdParameter &);
  361. ProtReturnCode SetGatekeeper(H225CSNonStdParameter *);
  362. // Method returns if Gatekeeper is set.
  363. ProtReturnCode IsGatekeeperSet();
  364. ProtReturnCode GetGatekeeper(H225CSNonStdParameter &);
  365. ProtReturnCode SetGateway(H225CSGatewayInfo &);
  366. ProtReturnCode SetGateway(H225CSGatewayInfo *);
  367. ProtReturnCode IsGatewaySet();
  368. ProtReturnCode GetGateway(H225CSGatewayInfo &);
  369. ProtReturnCode SetTerminal(H225CSNonStdParameter &);
  370. ProtReturnCode SetTerminal(H225CSNonStdParameter *);
  371. ProtReturnCode IsTerminalSet();
  372. ProtReturnCode GetTerminal(H225CSNonStdParameter &);
  373. ProtReturnCode SetMCU(H225CSNonStdParameter &);
  374. ProtReturnCode SetMCU(H225CSNonStdParameter *);
  375. ProtReturnCode IsMCUSet();
  376. ProtReturnCode GetMCU(H225CSNonStdParameter &);
  377. void SetMC(boolean);
  378. ProtReturnCode GetMC(boolean &);
  379. void SetUndefinedNode(boolean);
  380. ProtReturnCode GetUndefinedNode(boolean &);
  381. H225CSEndpointType & operator=(H225CSEndpointType &);
  382. // For protocol internal use.
  383. H225EndpointType * GetPriv();
  384. ProtReturnCode SetPriv(H225EndpointType *);
  385. private:
  386. // The pointers to the internal representation..
  387. H225NonStandardParameter *_non_standard_data;
  388. H225VendorIdentifier     *_vendor;
  389. int gk_flag;
  390. H225NonStandardParameter *_gatekeeper;
  391. int gw_flag;
  392. H225GatewayInfo          *_gateway;
  393. int mcu_flag;
  394. H225NonStandardParameter *_mcu;
  395. int term_flag;
  396. H225NonStandardParameter *_terminal;
  397. boolean _undefined_node;
  398. boolean _mc;
  399. H225EndpointType *ep_cp;
  400. };
  401. // The abstraction for the H.225 AliasAddress. 
  402. class DLLEXPORT H225CSAliasAddress
  403. {
  404. public:
  405. // constructors and destructors.
  406. H225CSAliasAddress();
  407. ~H225CSAliasAddress();
  408. // Returns values from enum H225CSAliasAddressType.
  409. // Invoke the appropriate GetXXX method based on the
  410. // type.
  411. int GetType();
  412. // Here len is in number of wide characters (not bytes..)
  413. ProtReturnCode SetH323ID(unsigned short *id, unsigned short len);
  414. ProtReturnCode GetH323ID(unsigned short *&id, unsigned short &len);
  415. // len is the number of bytes without the null termination char.
  416. ProtReturnCode SetE164(char * num, unsigned short len);
  417. ProtReturnCode GetE164(char *& num, unsigned short &len);
  418. // len is the number of bytes without the null termination char.
  419. ProtReturnCode SetURLID(char * url, unsigned short len);
  420. ProtReturnCode GetURLID(char *& url, unsigned short &len);
  421. // len is the number of bytes without the null termination char.
  422. ProtReturnCode SetEMailID(char * email, unsigned short len);
  423. ProtReturnCode GetEMailID(char *& email, unsigned short &len);
  424. // Set/Get TransportID
  425. ProtReturnCode SetTransportID(sockaddr *trans_id);
  426. ProtReturnCode GetTransportID(sockaddr *trans_id);
  427. H225CSAliasAddress &  operator=(H225CSAliasAddress &);
  428. // For protocol internal use.
  429. H225AliasAddress * GetPriv();
  430. ProtReturnCode SetPriv(H225AliasAddress *);
  431. private:
  432. // The pointer to the internal representation..
  433. H225AliasAddress *aa_p;
  434. };
  435. // V2 Feature.
  436. class DLLEXPORT H225CSCallID
  437. {
  438. public:
  439. H225CSCallID();
  440. ~H225CSCallID();
  441. ProtReturnCode SetCallID(unsigned char *, int length);
  442. ProtReturnCode GetCallID(unsigned char *&, int &length);
  443. H225CSCallID & operator=(H225CSCallID &);
  444. boolean Valid(); 
  445. // For protocol internal use.
  446. struct _H225CallIdentifier *GetPriv();
  447. ProtReturnCode SetPriv(struct _H225CallIdentifier *);
  448. private:
  449. struct _H225CallIdentifier *cid;
  450. int is_valid;
  451. };
  452. // The abstraction for the H.225 QSeriesOptions. 
  453. class DLLEXPORT H225CSQSeriesOptions
  454. {
  455. public:
  456. // constructors and destructors.
  457. H225CSQSeriesOptions();
  458. ~H225CSQSeriesOptions();
  459.      void SetQ932(boolean full);
  460.      ProtReturnCode GetQ932(boolean &full);
  461.      void SetQ951(boolean full);
  462.      ProtReturnCode GetQ951(boolean &full);
  463.      void SetQ952(boolean full);
  464.      ProtReturnCode GetQ952(boolean &full);
  465.      void SetQ953(boolean full);
  466.      ProtReturnCode GetQ953(boolean &full);
  467.      void SetQ955(boolean full);
  468.      ProtReturnCode GetQ955(boolean &full);
  469.      void SetQ956(boolean full);
  470.      ProtReturnCode GetQ956(boolean &full);
  471.      void SetQ957(boolean full);
  472.      ProtReturnCode GetQ957(boolean &full);
  473.      void SetQ954(boolean conf_calling, boolean three_party);
  474.      ProtReturnCode GetQ954(boolean &conf_calling, boolean &three_party);
  475. H225CSQSeriesOptions & operator=(H225CSQSeriesOptions &);
  476. // For protocol internal use.
  477. H225QseriesOptions * GetPriv();
  478. ProtReturnCode SetPriv(H225QseriesOptions *);
  479. private:
  480. // The pointer to the internal representation..
  481. H225QseriesOptions *qs_cp;
  482. _H225QseriesOptions *qs_sp;
  483. };
  484. // 
  485. // The Q.931 User to User information elements abstraction.
  486. //
  487. //
  488. // The basic user to user information element class.
  489. // Note: This class can be instatianted only from its friends.
  490. //  However, The GetType function is to be used to figure
  491. //  the message type and then the class can be casted to
  492. //  an appropriate type (for e.g., H225CSAlertingUUIE etc.)
  493. // A pointer to this class is passed back as an argument in the
  494. // H225CSProtocol callback functions. (see file H225csp.h)
  495. //
  496. class DLLEXPORT H225CSUUIE
  497. {
  498. public:
  499. // Get the message type of which this user to user information
  500. // element is a part of. See enum H225CSUUIEType.
  501. int GetType();
  502. // Methods to set and get protocol identifier.
  503. // Note: buf must be long aligned, and must be read as a seq of ulong.
  504. //       length is the number of chars pointed to by buf.
  505. ProtReturnCode SetProtocolID(unsigned char *buf, int length);
  506. ProtReturnCode GetProtocolID(unsigned char *&buf, int& length);
  507. // Methods to get and set the protocol identifier.
  508. // The parameters are integers that refer to version numbers.
  509. // version is one of H225VersionNumber
  510. ProtReturnCode SetProtocolID(int version);
  511. ProtReturnCode GetProtocolID(int &version);
  512. // Methods to set and get the user-data field of
  513. // H323-UserInformation
  514. ProtReturnCode SetUserData(unsigned short pd,
  515. unsigned char *data, int length);
  516. ProtReturnCode GetUserData(unsigned short &pd,
  517. unsigned char *&data, int &length);
  518. // Methods to set and get the nonStandardData
  519. // field of the H323-UU-PDU field of H323-UserInformation
  520. ProtReturnCode SetNonStd(H225CSNonStdParameter &);
  521. ProtReturnCode GetNonStd(H225CSNonStdParameter &);
  522. // Methods to set and get the H4501SupplementaryServices
  523. // field of the H323-UU-PDU field of H323-UserInformation
  524. ProtReturnCode AddH450SupplementaryService(H4501SuppService &SuppSvc);
  525. ProtReturnCode GetNumH450SupplementaryServices(int &count);
  526. ProtReturnCode GetH450SupplementaryServices(H4501SuppService suppSvcList[], int &count);
  527. // For protocol internal use..
  528. virtual H225MessageBody* GetPriv() = 0;
  529. virtual ProtReturnCode SetPriv(H225MessageBody*) = 0;
  530. virtual ~H225CSUUIE();
  531. H225CSUUIE& operator=(H225CSUUIE& uuie);
  532. void *GetSSPriv();
  533. ProtReturnCode SetSSPriv(void *soos);
  534. private:
  535. // Friendships.
  536. friend class H225CSProtocol;
  537. friend class H225CSAlertingUUIE;
  538. friend class H225CSCallProceedingUUIE;
  539. friend class H225CSReleaseCompleteUUIE;
  540. friend class H225CSSetupUUIE;
  541. friend class H225CSConnectUUIE;
  542. friend class H225CSFacilityUUIE;
  543. friend class H225CSProgressUUIE;
  544. friend class H225CSInformationUUIE;
  545. friend class H225Q931Client;
  546. // constructors and destructors.
  547. H225CSUUIE(H225CSProtocol *proto, H225MessageBody* m, int type);
  548. void SetType(int type);
  549. void SetPID(H225ProtocolIdentifier &pid);
  550. H225ProtocolIdentifier *GetPID();
  551. virtual ProtReturnCode Populate(H225CSProtocol *proto);
  552. private:
  553. // The message type.
  554. int type;
  555. // The pointer to the protocol class.
  556. H225CSProtocol* proto;
  557. // Other private data.
  558. H225MessageBody *mb_p;
  559. H225ProtocolIdentifier *pid;
  560. // Data for H450 Supplementary Services
  561. struct _H4501SuppServiceList *h450ss_list_head;
  562. struct _H4501SuppServiceList *h450ss_list_tail;
  563. int h450ss_list_length;
  564. unsigned short ud_pd;
  565. unsigned char *ud_data;
  566. int ud_length;
  567. H225NonStandardParameter *ns;
  568. };
  569. // PASS1. New class.
  570. class DLLEXPORT UUIEItemH245TransportAddress
  571. {
  572. public:
  573. UUIEItemH245TransportAddress(H225CSProtocol* proto);
  574. virtual ~UUIEItemH245TransportAddress();
  575. // PASS2 : made these virtual
  576. virtual ProtReturnCode SetH245Transport(sockaddr*);
  577. virtual ProtReturnCode GetH245Transport(sockaddr*);
  578. protected:
  579. H225TransportAddress* h245_address;
  580. };
  581. // PASS1. New class
  582. class DLLEXPORT UUIEItemDstInfo
  583. {
  584. public:
  585. UUIEItemDstInfo(H225CSProtocol* proto);
  586. virtual ~UUIEItemDstInfo();
  587. // PASS2 : made these virtual
  588. virtual ProtReturnCode SetDstInfo(H225CSEndpointType& dest_info);
  589. virtual ProtReturnCode GetDstInfo(H225CSEndpointType& dest_info);
  590. protected:
  591. H225EndpointType* endpoint_type;
  592. };
  593. // PASS1. New class.
  594. class DLLEXPORT UUIEItemConfID
  595. {
  596. public:
  597. UUIEItemConfID();
  598. virtual ~UUIEItemConfID();
  599. // Get and set the 16 byte conference ID.
  600. // PASS2 : made these virtual
  601. virtual ProtReturnCode SetConfID(unsigned char *conf_id, int length);
  602. virtual ProtReturnCode GetConfID(unsigned char*& conf_id, int &length);
  603. protected:
  604. ProtReturnCode Populate(H225CSProtocol *proto);
  605. H225ConferenceIdentifier* conference_id;
  606. };
  607. // Version 2 Addition.
  608. class DLLEXPORT UUIEItemCallID
  609. {
  610. public:
  611. UUIEItemCallID();
  612. virtual ~UUIEItemCallID();
  613. ProtReturnCode GetCallID(H225CSCallID &id);
  614. ProtReturnCode SetCallID(H225CSCallID &id);
  615. protected:
  616. ProtReturnCode Populate(H225CSProtocol *proto);
  617. H225CSCallID callid;
  618. int is_dummy_callid;
  619. };
  620. // The class UUIEItemFastStartList encapsulates the list of OpenLogicalChannel
  621. // structures that are needed for fast connect signalling, introduced in
  622. // H.323 version 2.0. The user to user information element classes of the
  623. // messages that can carry this element, derive from this class.
  624. // @See: 
  625. //  -H225CSAlertingUUIE
  626. //  -H225CSCallProceedingUUIE
  627. //  -H225CSConnectUUIE
  628. //  -H225CSSetupUUIE
  629. //  -H225CSProgressUUIE
  630. // -H245SigOpenLogicalChannel 
  631. //
  632. // @Version: PX3230S Version 2.2 
  633. class DLLEXPORT UUIEItemFastStartList
  634. {
  635. public:
  636. UUIEItemFastStartList();
  637. virtual ~UUIEItemFastStartList();
  638. // Returns the number of H.245 OpenLogicalChannel structures that were 
  639. // passed in the faststart list.
  640. ProtReturnCode GetNumOLC(int &count);
  641. // Retrieves the list of H.245 OpenLogicalChannel structures that were
  642. // sent by the remote end. olcList is an array of empty 
  643. // H245SigOpenLogicalChannel objects that are filled on return.
  644. // count is a value-return parameter. During the call it specifies
  645. // the number of elements in the olcList array and on return 
  646. // specifies how many of those were filled.
  647. ProtReturnCode GetOLC(H245SigOpenLogicalChannel olcList[], int &count);
  648. // Use this method to add a H.245 OpenlogicalChannel structure to the
  649. // list of such structures that need to be sent in a fast connect
  650. // proposal or reply. olc represents that H.245 OpenLogicalChannel
  651. // structure that needs to be added to the list.
  652. ProtReturnCode AddOLC(H245SigOpenLogicalChannel &olc);
  653. // Use this method to determine if the H.225 user to user information
  654. // element carried a list of H.245 OpenLogicalChannel structures
  655. // meant for for fast connect signalling.
  656. Boolean IsFastStartPresent()
  657. {
  658. return m_bFastStart;
  659. }
  660. //@DELB
  661. protected:
  662. void DelAll();
  663. void* GetFastStartList();
  664. ProtReturnCode SetFastStartList(void *pList);
  665. private:
  666. //data area
  667. ListManager *m_pFastStartList;
  668. Boolean m_bFastStart;
  669. //@DELE
  670. };
  671. // The abstraction for the user to user information element
  672. // for the Q.931 Alerting message as specified by H.225
  673. class DLLEXPORT H225CSAlertingUUIE  : public H225CSUUIE,
  674.  public UUIEItemDstInfo, public UUIEItemH245TransportAddress,
  675.  public UUIEItemCallID,
  676.  public UUIEItemFastStartList
  677. {
  678. public:
  679. // constructors and destructors.
  680. H225CSAlertingUUIE(H225CSProtocol &proto);
  681. ~H225CSAlertingUUIE();
  682. H225CSAlertingUUIE & operator=(H225CSAlertingUUIE &);
  683. public:
  684. // For protocol internal use..
  685. H225MessageBody* GetPriv();
  686. ProtReturnCode SetPriv(H225MessageBody*);
  687. private:
  688. friend class H225Q931Client;
  689. // private functions
  690. H225CSAlertingUUIE(H225CSProtocol *proto,
  691. H225MessageBody* m);
  692. void init_alerting(H225CSProtocol *proto,
  693.  H225MessageBody* m);
  694. ProtReturnCode Populate(H225CSProtocol *proto);
  695. };
  696. // The abstraction for the user to user information element
  697. // for the Q.931 Call Proceeding message as specified by H.225
  698. class DLLEXPORT H225CSCallProceedingUUIE  : public H225CSUUIE,
  699.  public UUIEItemDstInfo, public UUIEItemH245TransportAddress,
  700.  public UUIEItemCallID,
  701.  public UUIEItemFastStartList
  702. {
  703. public:
  704. // constructors and destructors.
  705. H225CSCallProceedingUUIE(H225CSProtocol& proto);
  706. ~H225CSCallProceedingUUIE();
  707. H225CSCallProceedingUUIE & operator=(H225CSCallProceedingUUIE &);
  708. public:
  709. // For protocol internal use..
  710. H225MessageBody* GetPriv();
  711. ProtReturnCode SetPriv(H225MessageBody*);
  712. private:
  713. friend class H225Q931Client;
  714. // private functions
  715. H225CSCallProceedingUUIE(H225CSProtocol *proto,
  716. H225MessageBody* m);
  717. void init_call_proceeding(H225CSProtocol *proto,
  718.  H225MessageBody* m);
  719. ProtReturnCode Populate(H225CSProtocol *proto);
  720. };
  721. // The abstraction for the user to user information element
  722. // for the Q.931 Connect message as specified by H.225
  723. class DLLEXPORT H225CSConnectUUIE  : public H225CSUUIE,
  724. public UUIEItemDstInfo, public UUIEItemH245TransportAddress,
  725. public UUIEItemConfID, public UUIEItemCallID,
  726. public UUIEItemFastStartList
  727. {
  728. public:
  729. // constructors and destructors.
  730. H225CSConnectUUIE(H225CSProtocol& proto);
  731. ~H225CSConnectUUIE();
  732. H225CSConnectUUIE & operator=(H225CSConnectUUIE &);
  733. public:
  734. // For protocol internal use..
  735. H225MessageBody* GetPriv();
  736. ProtReturnCode SetPriv(H225MessageBody*);
  737. private:
  738. friend class H225Q931Client;
  739. // private functions
  740. H225CSConnectUUIE(H225CSProtocol *proto,
  741. H225MessageBody *m);
  742. void init_connect(H225CSProtocol *proto,
  743.  H225MessageBody* m);
  744. ProtReturnCode Populate(H225CSProtocol *proto);
  745. };
  746. // The abstraction for the user to user information element
  747. // for the Q.931 Release complete message as specified by H.225
  748. class DLLEXPORT H225CSReleaseCompleteUUIE  : public H225CSUUIE,
  749. public UUIEItemCallID
  750. {
  751. public:
  752. // constructors and destructors.
  753. H225CSReleaseCompleteUUIE(H225CSProtocol& proto);
  754. ~H225CSReleaseCompleteUUIE();
  755. // reason is one of enum H225CSReleaseCompleteReason.
  756. ProtReturnCode SetReason(int reason);
  757. ProtReturnCode GetReason(int& reason);
  758. H225CSReleaseCompleteUUIE & operator=(H225CSReleaseCompleteUUIE &);
  759. public:
  760. // For protocol internal use..
  761. H225MessageBody* GetPriv();
  762. ProtReturnCode SetPriv(H225MessageBody*);
  763. private:
  764. friend class H225Q931Client;
  765. // private functions
  766. H225CSReleaseCompleteUUIE(H225CSProtocol *proto,
  767. H225MessageBody* m);
  768. void init_release_complete(H225CSProtocol *proto,
  769.  H225MessageBody* m);
  770. ProtReturnCode Populate(H225CSProtocol *proto);
  771. // private data members
  772. H225CSReleaseCompleteReason reason;
  773. };
  774. // The abstraction for the user to user information element
  775. // for the Q.931 Setup message as specified by H.225
  776. class DLLEXPORT H225CSSetupUUIE  : public H225CSUUIE,
  777. public UUIEItemH245TransportAddress, public UUIEItemConfID,
  778. public UUIEItemCallID,
  779. public UUIEItemFastStartList
  780. {
  781. public:
  782. // constructors and destructors.
  783. H225CSSetupUUIE(H225CSProtocol& proto);
  784. ~H225CSSetupUUIE();
  785. // Source address. Use GetNumSrcAddrs to get the number 
  786. // of elements in the list and GetSrcAddrs to get the list 
  787. // itself (argument is an array of H225CSAliasAddress enough to
  788. // hold the list). 
  789. // count contains the number of entries list can hold, upon
  790. // return count contains the number of entries filled.
  791. ProtReturnCode GetNumSrcAddrs(int &);
  792. ProtReturnCode GetSrcAddrs(H225CSAliasAddress list[],
  793. int& count);
  794. ProtReturnCode AddSrcAddr(H225CSAliasAddress&);
  795. // Set and get the source Info.
  796. ProtReturnCode SetSrcInfo(H225CSEndpointType&);
  797. ProtReturnCode GetSrcInfo(H225CSEndpointType&);
  798. // Destination address. Use GetNumDstAddrs to get the number 
  799. // of elements in the list and GetDstAddrs to get the list 
  800. // itself (argument is an array of H225CSAliasAddress enough to
  801. // hold the list). 
  802. // count contains the number of entries list can hold, upon
  803. // return count contains the number of entries filled.
  804. ProtReturnCode GetNumDstAddrs(int &);
  805. ProtReturnCode GetDstAddrs(H225CSAliasAddress list[],
  806. int& count);
  807. ProtReturnCode AddDstAddr(H225CSAliasAddress&);
  808. // Set and Get the destination call signalling address.
  809. ProtReturnCode SetDstCallSig(sockaddr*);
  810. ProtReturnCode GetDstCallSig(sockaddr*);
  811. // Destination extra call info. Use GetNumDstCallInfo to get the 
  812. // number of elements in the list and GetDstCallInfo to get the list 
  813. // itself (argument is an array of H225CSAliasAddress enough to
  814. // hold the list). 
  815. // count contains the number of entries list can hold, upon
  816. // return count contains the number of entries filled.
  817. ProtReturnCode GetNumDstExtraCallInfo(int &);
  818. ProtReturnCode GetDstExtraCallInfo(H225CSAliasAddress list[],
  819. int& count);
  820. ProtReturnCode AddDstExtraCallInfo(H225CSAliasAddress&);
  821. // Destination extra crv. Use GetNumDstExtraCRV to get the 
  822. // number of elements in the list and GetDstExtraCRV to get the 
  823. // list itself (argument is an array of H225CSAliasAddress enough 
  824. // to hold the list). 
  825. ProtReturnCode GetNumDstExtraCRV(int &);
  826. ProtReturnCode GetDstExtraCRV(unsigned short crv[], int& count);
  827. ProtReturnCode AddDstExtraCRV(unsigned short crv);
  828. // Get and set the active MC status.
  829. ProtReturnCode GetActiveMC(boolean&);
  830. ProtReturnCode SetActiveMC(boolean);
  831. // Set and get the conference Goal.
  832. // goal is one of H225CSConferenceGoal
  833. ProtReturnCode SetConfGoal(int goal) ;
  834. ProtReturnCode GetConfGoal(int &goal);
  835. // Set and get the  qseries options.
  836. ProtReturnCode SetCallServices(H225CSQSeriesOptions&);
  837. ProtReturnCode GetCallServices(H225CSQSeriesOptions&);
  838. // Set and get the call type.
  839. ProtReturnCode SetCallType(int);
  840. ProtReturnCode GetCallType(int&);
  841. // Set and get the source call signalling address.
  842. ProtReturnCode SetSrcCallSig(sockaddr*);
  843. ProtReturnCode GetSrcCallSig(sockaddr*);
  844. // Set and get the remote extension address
  845. ProtReturnCode SetRemoteExtension(H225CSAliasAddress&);
  846. ProtReturnCode GetRemoteExtension(H225CSAliasAddress&);
  847. // Get and set media wait for connect flag
  848. ProtReturnCode GetMediaWaitForConnect(boolean&);
  849. ProtReturnCode SetMediaWaitForConnect(boolean);
  850. // Get and set the active MC status.
  851. ProtReturnCode GetCanOverlapSend(boolean&);
  852. ProtReturnCode SetCanOverlapSend(boolean);
  853. H225CSSetupUUIE & operator=(H225CSSetupUUIE &);
  854. public:
  855. // For protocol internal use..
  856. ProtReturnCode SetPriv(H225MessageBody*);
  857. H225MessageBody* GetPriv();
  858. private:
  859. friend class H225Q931Client;
  860. // private functions
  861. H225CSSetupUUIE(H225CSProtocol *proto, H225MessageBody* m);
  862. void init_setup(H225CSProtocol *proto, H225MessageBody* m);
  863. ProtReturnCode Populate(H225CSProtocol *proto);
  864. // private data members
  865. H225TransportAddress* dest_call_sig_addr;
  866. H225TransportAddress* src_call_sig_addr;
  867. H225EndpointType* endpoint_type;
  868. void* src_addr_list;
  869. void* dest_addr_list;
  870. H225CSConferenceGoal conference_goal;
  871. H225CSCallType call_type;
  872. boolean active_mc;
  873. boolean media_wait_for_connect;
  874. boolean can_overlap_send;
  875. H225QseriesOptions *call_services;
  876. };
  877. class DLLEXPORT H225CSFacilityUUIE  : public H225CSUUIE,
  878. public UUIEItemConfID, public UUIEItemCallID,
  879. public UUIEItemH245TransportAddress
  880. {
  881. public:
  882. // constructors and destructors.
  883. H225CSFacilityUUIE(H225CSProtocol& proto);
  884. ~H225CSFacilityUUIE();
  885. // reason is one of enum H225CSFacilityReason.
  886. ProtReturnCode SetReason(int reason);
  887. ProtReturnCode GetReason(int& reason);
  888. ProtReturnCode SetAlternativeAddr(sockaddr*);
  889. ProtReturnCode GetAlternativeAddr(sockaddr*);
  890. ProtReturnCode GetNumAlternativeAliasAddr(int &);
  891. ProtReturnCode GetAlternativeAliasAddr(H225CSAliasAddress[],
  892. int& count);
  893. ProtReturnCode AddAlternativeAliasAddr(H225CSAliasAddress&);
  894. H225CSFacilityUUIE & operator=(H225CSFacilityUUIE &);
  895. public:
  896. // For protocol internal use..
  897. H225MessageBody* GetPriv();
  898. ProtReturnCode SetPriv(H225MessageBody*);
  899. ProtReturnCode Populate(H225CSProtocol *proto);
  900. private:
  901. friend class H225Q931Client;
  902. // private functions
  903. H225CSFacilityUUIE(H225CSProtocol *proto,
  904. H225MessageBody* m);
  905. void init_facility(H225CSProtocol *proto,
  906.  H225MessageBody* m);
  907. void *alt_aa_list;
  908. H225TransportAddress *alt_addr;
  909. H225CSFacilityReason reason;
  910. };
  911. // This class encapsulates the Progress User to User Information
  912. // element as defined in the H.225 Standard. 
  913. //
  914. // @See: 
  915. //  -H225CSUUIE
  916. // -UUIEItemCallID
  917. // -UUIEItemDstInfo
  918. // -UUIEItemH225TransportAddress
  919. // -UUIEItemFastStartList
  920. //
  921. // @Version: PX3230S Version 2.2 
  922. class DLLEXPORT H225CSProgressUUIE  : public H225CSUUIE,
  923. public UUIEItemCallID,public UUIEItemDstInfo,
  924. public UUIEItemH245TransportAddress,
  925. public UUIEItemFastStartList
  926. {
  927. public:
  928. // constructors and destructors.
  929. H225CSProgressUUIE(H225CSProtocol& proto);
  930. ~H225CSProgressUUIE();
  931. H225CSProgressUUIE & operator=(H225CSProgressUUIE &);
  932. //@DELB
  933. public:
  934. // For protocol internal use..
  935. H225MessageBody* GetPriv();
  936. ProtReturnCode SetPriv(H225MessageBody*);
  937. ProtReturnCode Populate(H225CSProtocol *proto);
  938. private:
  939. friend class H225Q931Client;
  940. // private functions
  941. H225CSProgressUUIE(H225CSProtocol *proto,
  942. H225MessageBody* m);
  943. void init_progress(H225CSProtocol *proto,
  944.  H225MessageBody* m);
  945. //@DELE
  946. };
  947. // This class encapsulates the Information User to User Information
  948. // element as defined in the H.225 Standard. 
  949. //
  950. // @See: 
  951. //  -H225CSUUIE
  952. // -UUIEItemCallID
  953. //
  954. // @Version: PX3230S Version 2.3.2 
  955. class DLLEXPORT H225CSInformationUUIE  : public H225CSUUIE,
  956. public UUIEItemCallID
  957. {
  958. public:
  959. // constructors and destructors.
  960. H225CSInformationUUIE(H225CSProtocol& proto);
  961. ~H225CSInformationUUIE();
  962. H225CSInformationUUIE & operator=(H225CSInformationUUIE &);
  963. //@DELB
  964. public:
  965. // For protocol internal use..
  966. H225MessageBody* GetPriv();
  967. ProtReturnCode SetPriv(H225MessageBody*);
  968. ProtReturnCode Populate(H225CSProtocol *proto);
  969. private:
  970. friend class H225Q931Client;
  971. // private functions
  972. H225CSInformationUUIE(H225CSProtocol *proto,
  973. H225MessageBody* m);
  974. void init_information(H225CSProtocol *proto,
  975.  H225MessageBody* m);
  976. //@DELE
  977. };
  978. //
  979. // This is used for describing each of the
  980. // protocols listed under SupportedProtocols
  981. //
  982. class DLLEXPORT H225CSDataRate : public ItemNonStdParam
  983. {
  984. public:
  985. H225CSDataRate();
  986. virtual ~H225CSDataRate();
  987. // Bandwidth is a value in the range
  988. // [0..4294967295]. The value represents the
  989. // bandwidth in 100s of bits.
  990. ProtReturnCode SetChannelRate(unsigned long bandwidth);
  991. ProtReturnCode GetChannelRate(unsigned long& bandwidth);
  992. // Channel multiplier is a value in the range [1,256]
  993. ProtReturnCode SetChannelMultiplier(int cm);
  994. ProtReturnCode GetChannelMultiplier(int& cm);
  995. H225CSDataRate& operator=(H225CSDataRate&);
  996. // For protocol internal use
  997. H225DataRate *GetPriv();
  998. ProtReturnCode SetPriv(H225DataRate*);
  999. protected:
  1000. H225DataRate *data_rate;
  1001. int channel_multiplier;
  1002. unsigned long bandwidth;
  1003. };
  1004. class DLLEXPORT H225CSSupportedPrefix : public ItemNonStdParam
  1005. {
  1006. public:
  1007. H225CSSupportedPrefix();
  1008. virtual ~H225CSSupportedPrefix();
  1009. ProtReturnCode SetPrefix(H225CSAliasAddress&);
  1010. ProtReturnCode GetPrefix(H225CSAliasAddress&);
  1011. H225CSSupportedPrefix& operator=(H225CSSupportedPrefix&);
  1012. // For stack internal use.
  1013. virtual H225SupportedPrefix *GetPriv();
  1014. virtual ProtReturnCode SetPriv(H225SupportedPrefix*);
  1015. protected:
  1016. H225SupportedPrefix *prefix;
  1017. H225AliasAddress *alias;
  1018. };
  1019. class DLLEXPORT H225CSSupportedProtocols
  1020. {
  1021. public:
  1022. // type is one of H225CSSupportedProtocols
  1023. H225CSSupportedProtocols(int type);
  1024. virtual ~H225CSSupportedProtocols();
  1025. virtual int GetType()
  1026. {
  1027. return type;
  1028. }
  1029. H225CSSupportedProtocols& operator=(
  1030. H225CSSupportedProtocols&);
  1031. // For Stack internal use.
  1032. virtual H225SupportedProtocols *GetPriv() = 0;
  1033. virtual ProtReturnCode SetPriv(H225SupportedProtocols*) = 0;
  1034. protected:
  1035. int type;
  1036. H225SupportedProtocols *supported_protocols;
  1037. };
  1038. class DLLEXPORT H225SuppProtNonStdData : public H225CSSupportedProtocols,
  1039. public ItemNonStdParam
  1040. {
  1041. public:
  1042. H225SuppProtNonStdData():
  1043.  H225CSSupportedProtocols(PROT_NONSTANDARD_DATA),
  1044.  ItemNonStdParam(0)
  1045. {
  1046. }
  1047. virtual ~H225SuppProtNonStdData()
  1048. {
  1049. }
  1050. H225SupportedProtocols *GetPriv();
  1051. ProtReturnCode SetPriv(H225SupportedProtocols*);
  1052. };
  1053. class DLLEXPORT H225ProtocolCaps : public ItemNonStdParam
  1054. {
  1055. public:
  1056. H225ProtocolCaps();
  1057. virtual ~H225ProtocolCaps();
  1058. virtual ProtReturnCode GetNumDataRatesSupported(int& count);
  1059. virtual ProtReturnCode GetDataRatesSupported(
  1060. H225CSDataRate data_rates[], int& count);
  1061. virtual ProtReturnCode AddDataRatesSupported(
  1062. H225CSDataRate &data_rate);
  1063. virtual ProtReturnCode GetNumSupportedPrefixes(int& count);
  1064. virtual ProtReturnCode GetSupportedPrefixes(
  1065. H225CSSupportedPrefix prefixes[], int& count);
  1066. virtual ProtReturnCode AddSupportedPrefixes(
  1067. H225CSSupportedPrefix &prefix);
  1068. protected:
  1069. void *prefix_list;
  1070. void *data_rates_list;
  1071. };
  1072. class DLLEXPORT H225SuppProtH310Caps : public H225ProtocolCaps,
  1073. public H225CSSupportedProtocols
  1074. {
  1075. public:
  1076. H225SuppProtH310Caps():
  1077.  H225CSSupportedProtocols(PROT_H310)
  1078. {
  1079. }
  1080. virtual ~H225SuppProtH310Caps()
  1081. {
  1082. }
  1083. // For stack internal use.
  1084. H225SupportedProtocols *GetPriv();
  1085. ProtReturnCode SetPriv(H225SupportedProtocols*);
  1086. };
  1087. class DLLEXPORT H225SuppProtH320Caps : public H225ProtocolCaps,
  1088. public H225CSSupportedProtocols
  1089. {
  1090. public:
  1091. H225SuppProtH320Caps()
  1092.  : H225CSSupportedProtocols(PROT_H320)
  1093. {
  1094. }
  1095. virtual ~H225SuppProtH320Caps()
  1096. {
  1097. }
  1098. // For stack internal use.
  1099. H225SupportedProtocols *GetPriv();
  1100. ProtReturnCode SetPriv(H225SupportedProtocols*);
  1101. };
  1102. class DLLEXPORT H225SuppProtH321Caps : public H225ProtocolCaps,
  1103. public H225CSSupportedProtocols
  1104. {
  1105. public:
  1106. H225SuppProtH321Caps()
  1107.  : H225CSSupportedProtocols(PROT_H321)
  1108. {
  1109. }
  1110. virtual ~H225SuppProtH321Caps()
  1111. {
  1112. }
  1113. // For stack internal use.
  1114. H225SupportedProtocols *GetPriv();
  1115. ProtReturnCode SetPriv(H225SupportedProtocols*);
  1116. };
  1117. class DLLEXPORT H225SuppProtH322Caps : public H225ProtocolCaps,
  1118. public H225CSSupportedProtocols
  1119. {
  1120. public:
  1121. H225SuppProtH322Caps()
  1122.  : H225CSSupportedProtocols(PROT_H322)
  1123. {
  1124. }
  1125. virtual ~H225SuppProtH322Caps()
  1126. {
  1127. }
  1128. // For stack internal use.
  1129. H225SupportedProtocols *GetPriv();
  1130. ProtReturnCode SetPriv(H225SupportedProtocols*);
  1131. };
  1132. class DLLEXPORT H225SuppProtH323Caps :public  H225ProtocolCaps,
  1133. public H225CSSupportedProtocols
  1134. {
  1135. public:
  1136. H225SuppProtH323Caps()
  1137.  : H225CSSupportedProtocols(PROT_H323)
  1138. {
  1139. }
  1140. virtual ~H225SuppProtH323Caps()
  1141. {
  1142. }
  1143. // For stack internal use.
  1144. H225SupportedProtocols *GetPriv();
  1145. ProtReturnCode SetPriv(H225SupportedProtocols*);
  1146. };
  1147. class DLLEXPORT H225SuppProtH324Caps : public H225ProtocolCaps,
  1148. public H225CSSupportedProtocols
  1149. {
  1150. public:
  1151. H225SuppProtH324Caps()
  1152.  : H225CSSupportedProtocols(PROT_H324)
  1153. {
  1154. }
  1155. virtual ~H225SuppProtH324Caps()
  1156. {
  1157. }
  1158. // For stack internal use.
  1159. H225SupportedProtocols *GetPriv();
  1160. ProtReturnCode SetPriv(H225SupportedProtocols*);
  1161. };
  1162. class DLLEXPORT H225SuppProtVoiceCaps : public H225ProtocolCaps,
  1163. public H225CSSupportedProtocols
  1164. {
  1165. public:
  1166. H225SuppProtVoiceCaps()
  1167.  : H225CSSupportedProtocols(PROT_VOICE)
  1168. {
  1169. }
  1170. virtual ~H225SuppProtVoiceCaps()
  1171. {
  1172. }
  1173. // For stack internal use.
  1174. H225SupportedProtocols *GetPriv();
  1175. ProtReturnCode SetPriv(H225SupportedProtocols*);
  1176. };
  1177. class DLLEXPORT H225SuppProtT120OnlyCaps : public H225ProtocolCaps,
  1178. public H225CSSupportedProtocols
  1179. {
  1180. public:
  1181. H225SuppProtT120OnlyCaps()
  1182.  : H225CSSupportedProtocols(PROT_T120_ONLY)
  1183. {
  1184. }
  1185. virtual ~H225SuppProtT120OnlyCaps()
  1186. {
  1187. }
  1188. // For stack internal use.
  1189. H225SupportedProtocols *GetPriv();
  1190. ProtReturnCode SetPriv(H225SupportedProtocols*);
  1191. };
  1192. class DLLEXPORT H225SuppProtNonStdProtocol : public H225ProtocolCaps,
  1193. public H225CSSupportedProtocols
  1194. {
  1195. public:
  1196. H225SuppProtNonStdProtocol()
  1197.  : H225CSSupportedProtocols(PROT_NONSTANDARD_PROTOCOL)
  1198. {
  1199. }
  1200. virtual ~H225SuppProtNonStdProtocol()
  1201. {
  1202. }
  1203. // For stack internal use.
  1204. H225SupportedProtocols *GetPriv();
  1205. ProtReturnCode SetPriv(H225SupportedProtocols*);
  1206. };
  1207. #endif //__H225TYPES_H__