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

IP电话/视频会议

开发平台:

WINDOWS

  1. /*
  2.  * $Revision: 1.6 $
  3.  * $Date: 1998/10/23 15:54:13 $
  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 : h245types.h                                         //
  20. //                                                            //
  21. // This file defines the types used in H.245 signalling.      //
  22. //                                                            //
  23. //                                                            //
  24. // History:                                                   //
  25. //  07_Mar_1997 Created                                       //
  26. //  16_Apr_1997 Code review pass 1, check for PASS1   //
  27. //  16_Apr_1997 H245SigH225Params::GetSilenceSuppression   //
  28. //  16_Apr_1997 H245SigNonStdParam::GetIDType      //
  29. //  16_Apr_1997 H245SigH225Params::xxxGuaranteedDelivery      //
  30. //    methods                                       //
  31. //  16_Apr_1997 H245SigMedDistCap::cent, dist data methods   //
  32. // 17_Apr_1997 Code review pass2, check for PASS2.   //
  33. //  08_Jul_1997 Merged Sun5 changes.   //
  34. //  23_Jun_1998 Added methods in H245SigCommModeTableEntry    //    
  35. // to manipulate sessionDescription.   //
  36. //  02_Oct_1998 Added classes H245SigForwardLCParams,   //
  37. // H245SigReverseLCParams and   //
  38. // H245SigOpenLogicalChannel   //
  39. // 06_Oct_1998 Added class H245SigNullDataType and    //
  40. // corr. enum DT_NULL   //
  41. // 19_Oct_1998 Added H245SigMuxNone class.   //
  42. ////////////////////////////////////////////////////////////////
  43. #if (!defined(__H245TYPES_H__))
  44. #define __H245TYPES_H__
  45. #include "util/platform.h"
  46. #include "api/h245sigerr.h"
  47. #include "util/listifc.h"
  48. // 
  49. // Forward declarations.
  50. //
  51. class H245NonStandardParameter;
  52. class H245TransportAddress;
  53. class H245H2250LogicalChannelParameters;
  54. class H245H2250LogicalChannelAckParameters;
  55. class H245Capability;
  56. class H245AudioCapability;
  57. class H245VideoCapability;
  58. class H245DataApplicationCapability;
  59. class H245MediaDistributionCapability;
  60. class H245H2250Capability;
  61. class H245CommunicationModeTableEntry;
  62. class H245SigCap;
  63. class H245SigAudCap;
  64. class H245SigVidCap;
  65. class H245SigDataCap;
  66. class H245SigMultipointCap;
  67. struct _H245NonStandardParameter;
  68. class H245ForwardLogicalChannelParameters;
  69. class H245ReverseLogicalChannelParameters;
  70. class H245OpenLogicalChannel;
  71. class H245DataType;
  72. // H245 states
  73. enum H245SigStates
  74. {
  75. // LCO states.
  76. ST_LC0_NOT_CONNECTED,
  77. ST_LC0_CONNECTED,
  78. ST_LC0_CONNECTION_ERROR
  79. };
  80. // H245 terminal types.
  81. enum H245SigTerminalType
  82. {
  83. TT_TERMINAL_NO_MC = 50,
  84. TT_TERMINAL_MC_NO_MP = 70,
  85. TT_GATEWAY_NO_MC = 60,
  86. TT_GATEWAY_MC_NO_MP = 80,
  87. TT_GATEWAY_MC_DATA_MP = 90,
  88. TT_GATEWAY_MC_DATA_AUDIO_MP = 100,
  89. TT_GATEWAY_MC_DATA_AUDIO_VIDEO_MP = 110,
  90. TT_GATEKEEPER_MC_NO_MP = 120,
  91. TT_GATEKEEPER_MC_DATA_MP = 130,
  92. TT_GATEKEEPER_MC_DATA_AUDIO_MP = 140,
  93. TT_GATEKEEPER_MC_DATA_AUDIO_VIDEO_MP = 150,
  94. TT_MCU_MC_NO_MP = 160,
  95. TT_MCU_MC_DATA_MP = 170,
  96. TT_MCU_MC_DATA_AUDIO_MP = 180,
  97. TT_MCU_MC_DATA_AUDIO_VIDEO_MP = 190
  98. };
  99. // Capability set reject reasons.
  100. enum H245SigCapRejectReason
  101. {
  102. CRR_REJECT_UNSPECIFIED = 1,
  103. CRR_TABLE_ENTRY_UNDEFINED,
  104. CRR_DESCRIPTOR_CAPACITY_EXCEEDED,
  105. CRR_TABLE_ENTRY_CAPACITY_EXCEEDED
  106. };
  107. // Open logical channel reject reasons.
  108. enum H245SigOLCRejectReason
  109. {
  110. OLCRR_UNSPECIFIED = 1,
  111. OLCRR_UNSUITABLE_REVERSE_PARAMS,
  112. OLCRR_DATATYPE_NOT_SUPPORTED,
  113. OLCRR_DATATYPE_NOT_AVAILABLE,
  114. OLCRR_UNKNOWN_DATATYPE,
  115. OLCRR_DATATYPE_AL_COMBO_NOT_SUPPORTED,
  116. OLCRR_MULTICAST_NOT_ALLOWED,
  117. OLCRR_INSUFFICENT_BANDWIDTH,
  118. OLCRR_SEPERATE_STACK_ESTAB_FAILED,
  119. OLCRR_INVALID_SESSION_ID
  120. };
  121. // Master slave determination errors.
  122. enum H245SigMSDError
  123. {
  124. //received unexpected MasterSlaveDetermination
  125. MSDERR_UNEXPECTED_MSD,
  126. //received unexpected MasterSlaveDeterminationReject
  127. MSDERR_UNEXPECTED_MSDR,
  128. //no response from remote MSDSE
  129. MSDERR_NO_RESPONSE_REMOTE,
  130. //remote sees no response from local MSDSE
  131. MSDERR_NO_RESPONSE_LOCAL,
  132. //inconsistent field values
  133. MSDERR_INCONSISTENT,
  134. MSDERR_MAX_ATTEMPTS
  135. };
  136. // Master slave determination results.
  137. enum H245SigMSDResult
  138. {
  139. MSDRES_MASTER = 1,
  140. MSDRES_SLAVE
  141. };
  142. // Media packetization protocols.
  143. enum H245SigMedPacketization
  144. {
  145. MEDPKT_H261A_VIDEO
  146. };
  147. //  Logical channel signalling error.
  148. enum H245SigLCSError
  149. {
  150. //received unexpected OpenLogicalChannelAck
  151. LCSERR_UNEXPECTED_ACK, 
  152. //received unexpected OpenLogicalChannelReject
  153. LCSERR_UNEXPECTED_REJECT,
  154. //received unexpected OpenLogicalChannelConfirm
  155. LCSERR_UNEXPECTED_CONFIRM, 
  156. //received unexpected CloseLogicalChannelAck
  157. LCSERR_UNEXPECTED_CLOSE_ACK,
  158. // no response from peer LCSE (timer expired)
  159. LCSERR_NO_RESPONSE
  160. };
  161. // Logical channel data types.
  162. enum H245SigDataTypes
  163. {
  164. DT_AUDIO,
  165. DT_VIDEO,
  166. DT_DATA,
  167. DT_NON_STD,
  168. DT_ENCRYPTION_MODE,
  169. DT_NULL
  170. };
  171. // Multiplexing protocols.
  172. enum H245SigMuxType
  173. {
  174. MT_H222,
  175. MT_H223,
  176. MT_V76,
  177. MT_H225,
  178. MT_NONE
  179. };
  180. // Well known session ids, for use with logical
  181. // channel signalling.
  182. enum H245SigPriSessID
  183. {
  184. PRI_SSID_AUDIO = 1,
  185. PRI_SSID_VIDEO = 2
  186. };
  187. // PASS2. added INVALID.
  188. enum H245SigNonStdIDType
  189. {
  190. H245NS_IDT_INVALID = 0,
  191. H245NS_IDT_OBJECT = 1,
  192. H245NS_IDT_H221NS = 2
  193. };
  194. // Specifies the Capability Exchange Signalling entity, that generated
  195. // the NotifyTermCapsReject callback.
  196. enum H245SigCESEDirection
  197. {
  198. CESE_INCOMING,
  199. CESE_OUTGOING
  200. };
  201. enum H245SigCommModeTableEntryType
  202. {
  203. CMTE_INVALID,
  204. CMTE_VIDEO,
  205. CMTE_AUDIO,
  206. CMTE_DATA
  207. };
  208. // The abstraction for the H.245 NonStandardParameter.
  209. class DLLEXPORT H245SigNonStdParam
  210. {
  211. public:
  212. // Constructors and destructors.
  213. H245SigNonStdParam();
  214. ~H245SigNonStdParam();
  215. // PASS1 : new function
  216. // Get the type of non standard parameter..
  217. // returns one of enum H245SigNonStdIDType
  218. int GetIDType();
  219. // For H245SigNonStdIDType = H245NS_IDT_OBJECT use the
  220. // following.
  221. ProtReturnCode SetObjectIdentifier(unsigned short *data, 
  222. unsigned short len);
  223. ProtReturnCode GetObjectIdentifier(unsigned short *&data, 
  224. unsigned short &len);
  225. // For H245SigNonStdIDType = H245NS_IDT_H221NS use the
  226. // following.
  227. ProtReturnCode SetH221NonStd(unsigned short t35_cc,
  228. unsigned short t35_ext, unsigned short manufacturer_code);
  229. ProtReturnCode GetH221NonStd(unsigned short &t35_cc,
  230. unsigned short &t35_ext, unsigned short &manufacturer_code);
  231. // Must be set for both types of H245SigNonStdIDType.
  232. ProtReturnCode SetNonStdData(unsigned char *data, 
  233. unsigned int len);
  234. ProtReturnCode GetNonStdData(unsigned char *&data, 
  235. unsigned int &len);
  236. H245SigNonStdParam& operator=(H245SigNonStdParam &);
  237. public:
  238. // For protocol internal use.
  239. H245NonStandardParameter * GetPriv();
  240. ProtReturnCode SetPriv(H245NonStandardParameter *);
  241. private:
  242. // The pointer to the internal representation..
  243. H245NonStandardParameter *nsp_cp;
  244. _H245NonStandardParameter *nsp_sp;
  245. };
  246. class DLLEXPORT H245SigDataType
  247. {
  248. public:
  249. H245SigDataType(int type);
  250. virtual ~H245SigDataType();
  251. // Method returns the data type ..
  252. // data_type is one of enum H245SigDataTypes,
  253. // cap_type is one of enum H245SigCapType
  254. // and cap_sub_type depends on the
  255. // value of cap_type. cap_sub_type is
  256. // a value from one of the following sets:
  257. // enum H245SigAudProt,enum H245SigVidProt 
  258. // enum H245SigDataProt, enum H245SigNonStdProt 
  259. // Note: cap_type and cap_sub_type are valid
  260. // only if data_type is DT_AUDIO or DT_VIDEO
  261. // DT_DATA, DT_NON_STD.
  262. // Note: after getting values of cap_type and 
  263. //     cap_sub_type, use the Factory method
  264. //  in the Capability class to create the
  265. //  appropriate capability object.
  266. virtual ProtReturnCode GetType(int& data_type,
  267. int& cap_type, int& cap_sub_type);
  268. // PASS1 : made this protected to give access to derived classes.
  269. protected:
  270. int type;
  271. };
  272. class DLLEXPORT H245SigAudDataType: public H245SigDataType
  273. {
  274. public:
  275. H245SigAudDataType();
  276. ~H245SigAudDataType();
  277. ProtReturnCode Get(H245SigAudCap &);
  278. ProtReturnCode Set(H245SigAudCap &);
  279. H245SigAudDataType& operator=(H245SigAudDataType &);
  280. virtual ProtReturnCode GetType(int& data_type,
  281. int& cap_type, int& cap_sub_type);
  282. //PASS2: cosmetic, added public:
  283. public:
  284. // For protocol internal use.
  285. H245AudioCapability * GetPriv();
  286. ProtReturnCode SetPriv(H245AudioCapability *);
  287. private:
  288. H245AudioCapability *acap;
  289. };
  290. class DLLEXPORT H245SigNullDataType: public H245SigDataType
  291. {
  292. public:
  293. H245SigNullDataType();
  294. ~H245SigNullDataType();
  295. H245SigNullDataType& operator=(H245SigNullDataType &);
  296. virtual ProtReturnCode GetType(int& data_type,
  297. int& cap_type, int& cap_sub_type);
  298. };
  299. class DLLEXPORT H245SigNonStdDataType: public H245SigDataType
  300. {
  301. public:
  302. H245SigNonStdDataType();
  303. ~H245SigNonStdDataType();
  304. ProtReturnCode Get(H245SigNonStdParam &);
  305. ProtReturnCode Set(H245SigNonStdParam &);
  306. H245SigNonStdDataType& operator=(
  307. H245SigNonStdDataType &);
  308. virtual ProtReturnCode GetType(int& data_type,
  309. int& cap_type, int& cap_sub_type);
  310. // For protocol internal use.
  311. H245NonStandardParameter* GetPriv();
  312. ProtReturnCode SetPriv(H245NonStandardParameter*);
  313. private:
  314. H245NonStandardParameter *nsp;
  315. };
  316. class DLLEXPORT H245SigVidDataType: public H245SigDataType
  317. {
  318. public:
  319. H245SigVidDataType();
  320. ~H245SigVidDataType();
  321. ProtReturnCode Get(H245SigVidCap &);
  322. ProtReturnCode Set(H245SigVidCap &);
  323. H245SigVidDataType& operator= (H245SigVidDataType &);
  324. virtual ProtReturnCode GetType(int& data_type,
  325. int& cap_type, int& cap_sub_type);
  326. // PASS2: added public:
  327. public:
  328. // For protocol internal use.
  329. H245VideoCapability * GetPriv();
  330. ProtReturnCode SetPriv(H245VideoCapability *);
  331. private:
  332. H245VideoCapability *vcap;
  333. };
  334. class DLLEXPORT H245SigMuxParams
  335. {
  336. public:
  337. H245SigMuxParams(int type);
  338. // PASS1 : made destructor virtual.
  339. virtual ~H245SigMuxParams();
  340. virtual ProtReturnCode GetType(int& type);
  341. private:
  342. int type;
  343. };
  344. class DLLEXPORT H245SigMuxNone : public H245SigMuxParams
  345. {
  346. public:
  347. H245SigMuxNone();
  348. ~H245SigMuxNone();
  349. };
  350. class DLLEXPORT H245SigH225Params : public H245SigMuxParams
  351. {
  352. public:
  353. H245SigH225Params();
  354. ~H245SigH225Params();
  355. // Methods to manipulate session ids.
  356. ProtReturnCode SetSessionID(unsigned short id);
  357. ProtReturnCode GetSessionID(unsigned short& id);
  358. ProtReturnCode SetAssocSessionID(unsigned short id);
  359. ProtReturnCode GetAssocSessionID(unsigned short& id);
  360. // Methods to manipulate media channel transport
  361. // addresses.
  362. ProtReturnCode SetMediaChan(sockaddr* addr);
  363. ProtReturnCode GetMediaChan(sockaddr* addr);
  364. ProtReturnCode SetMediaCtrlChan(sockaddr* addr);
  365. ProtReturnCode GetMediaCtrlChan(sockaddr* addr);
  366. // Methods to set/get dynamic rtp payload type.
  367. ProtReturnCode SetDynamicRTPPayloadType(int pt);
  368. ProtReturnCode GetDynamicRTPPayloadType(int& pt);
  369. // PASS1 : GetSilenceSupp now returns ProtReturnCode
  370. // Methods for manipulating the silence suppression flag.
  371. ProtReturnCode SetSilenceSupp(boolean flag);
  372. ProtReturnCode GetSilenceSupp(boolean &flag);
  373. // PASS1: split the SetGuaranteedDelivery functions into two.
  374. // Methods for manipulating the mediaGuaranteedDelivery
  375. // flag and mediacControlGuaranteedDelivery. 
  376. ProtReturnCode SetMediaGuaranteedDelivery(boolean media_flag);
  377. ProtReturnCode GetMediaGuaranteedDelivery(boolean &media_flag);
  378. ProtReturnCode SetMediaCtrlGuaranteedDelivery(boolean ctrl_flag);
  379. ProtReturnCode GetMediaCtrlGuaranteedDelivery(boolean &ctrl_flag);
  380. // Set/Get terminal label.
  381. ProtReturnCode SetTerminalLabel(int mcu_number,
  382. int term_number);
  383. ProtReturnCode GetTerminalLabel(int& mcu_number,
  384. int& term_number);
  385. // Media pkt'ization
  386. ProtReturnCode SetMediaPacketization(int mp);
  387. ProtReturnCode GetMediaPacketization(int& mp);
  388. // Non standard parameters
  389. ProtReturnCode GetNumNonStd(int& count);
  390. ProtReturnCode GetNonStdList(H245SigNonStdParam nsp_list[],
  391. int& count);
  392. ProtReturnCode AddNonStd(H245SigNonStdParam&);
  393. H245SigH225Params& operator=(H245SigH225Params&);
  394. public:
  395. // For protocol internal use.
  396. H245H2250LogicalChannelParameters* GetPriv();
  397. ProtReturnCode SetPriv(
  398. H245H2250LogicalChannelParameters* lcp);
  399. private:
  400. int media_flag;
  401. int ctrl_flag;
  402. int payload_type;
  403. int silence_supp;
  404. H245TransportAddress *media_chan;
  405. H245TransportAddress *media_ctrl_chan;
  406. unsigned short session_id;
  407. unsigned short assoc_session_id;
  408. H245H2250LogicalChannelParameters* lcp;
  409. void* nsp_list;
  410. // Flag to indicate if terminal label is present.
  411. int tl_present;
  412. int term;
  413. int mcu;
  414. int mp_present;
  415. int mp;
  416. };
  417. class DLLEXPORT H245SigH225AckParams
  418. {
  419. public:
  420. H245SigH225AckParams();
  421. ~H245SigH225AckParams();
  422. // Methods to manipulate session id.
  423. ProtReturnCode SetSessionID(unsigned short id);
  424. ProtReturnCode GetSessionID(unsigned short& id);
  425. // Methods to manipulate media channel transport
  426. // addresses.
  427. ProtReturnCode SetMediaChan(sockaddr* addr);
  428. ProtReturnCode GetMediaChan(sockaddr* addr);
  429. ProtReturnCode SetMediaCtrlChan(sockaddr* addr);
  430. ProtReturnCode GetMediaCtrlChan(sockaddr* addr);
  431. // Methods to set/get dynamic rtp payload type.
  432. ProtReturnCode SetDymnamicRTPPayloadType(int pt);
  433. ProtReturnCode GetDymnamicRTPPayloadType(int& pt);
  434. // Non standard parameters
  435. ProtReturnCode GetNumNonStd(int& count);
  436. ProtReturnCode GetNonStdList(H245SigNonStdParam nsp_list[],
  437. int& count);
  438. ProtReturnCode AddNonStd(H245SigNonStdParam&);
  439. H245SigH225AckParams& operator=(H245SigH225AckParams&);
  440. // For protocol internal use.
  441. H245H2250LogicalChannelAckParameters* GetPriv();
  442. ProtReturnCode SetPriv(
  443. H245H2250LogicalChannelAckParameters* lcp);
  444. private:
  445. void* nsp_list;
  446. unsigned short session_id;
  447. int payload_type;
  448. H245TransportAddress *media_chan;
  449. H245TransportAddress *media_ctrl_chan;
  450. H245H2250LogicalChannelAckParameters* lcack;
  451. };
  452. class DLLEXPORT H245SigMedDistCap
  453. {
  454. public:
  455. H245SigMedDistCap();
  456. ~H245SigMedDistCap();
  457. ProtReturnCode SetControl(boolean centralized, 
  458. boolean distributed);
  459. ProtReturnCode GetControl(boolean& centralized, boolean&
  460. distributed);
  461. ProtReturnCode SetAudio(boolean centralized,
  462. boolean distributed);
  463. ProtReturnCode GetAudio(boolean& centralized, boolean&
  464. distributed);
  465. ProtReturnCode SetVideo(boolean centralized, 
  466. boolean distributed);
  467. ProtReturnCode GetVideo(boolean& centralized, boolean&
  468. distributed);
  469. // PASS1 : Added functions to manipulate centralized data.
  470. ProtReturnCode GetNumCentralData(int& count);
  471. ProtReturnCode GetCentralData(H245SigDataCap data_list[],
  472. int& count);
  473. ProtReturnCode AddCentralData(H245SigDataCap&);
  474. // PASS1 : Added functions to manipulate distributed data.
  475. ProtReturnCode GetNumDistData(int& count);
  476. ProtReturnCode GetDistData(H245SigDataCap data_list[],
  477. int& count);
  478. ProtReturnCode AddDistData(H245SigDataCap&);
  479. H245SigMedDistCap& operator=(H245SigMedDistCap& mdist_cap);
  480. public:
  481. // For protocol internal use.
  482. H245MediaDistributionCapability* GetPriv();
  483. ProtReturnCode SetPriv(H245MediaDistributionCapability* cap);
  484. private:
  485. H245MediaDistributionCapability* cap;
  486. int cent_ctrl;
  487. int dist_ctrl;
  488. int cent_audio;
  489. int dist_audio;
  490. int cent_video;
  491. int dist_video;
  492. // PASS1 : Additional 2 parameters.
  493. void *central_data;
  494. void *dist_data;
  495. };
  496. class DLLEXPORT H245SigMultipointCap
  497. {
  498. public:
  499. H245SigMultipointCap();
  500. ~H245SigMultipointCap();
  501. ProtReturnCode SetMcast(boolean flag);
  502. ProtReturnCode GetMcast(boolean& flag); 
  503. ProtReturnCode SetMultiUcast(boolean flag);
  504. ProtReturnCode GetMultiUcast(boolean& flag); 
  505. // Methods to manipulate media distribution
  506. // capabilities. 
  507. ProtReturnCode GetNumMedDistCap(int& count);
  508. // mdist_cap_list points an array of 
  509. // H245SigMedDistCap, count contains the number
  510. // of elements in the array, upon return from
  511. // the call count will contain the number of
  512. // items filled.
  513. ProtReturnCode GetMedDistCap(H245SigMedDistCap
  514. mdist_cap_list[], int& count);
  515. ProtReturnCode AddMedDistCap(H245SigMedDistCap& 
  516. mdist_cap);
  517. H245SigMultipointCap& operator=(H245SigMultipointCap&);
  518. // For protocol internal use.
  519. ProtReturnCode SetPriv(int mcast, int multi_ucast,
  520. void* mdist_list);
  521. ProtReturnCode GetPriv(int& mcast, int& multi_ucast,
  522. void*& mdist_list);
  523. private:
  524. int mcast;
  525. int multi_ucast;
  526. void* mdist_list;
  527. int list_length;
  528. };
  529. class DLLEXPORT H245SigMuxCap
  530. {
  531. public:
  532. H245SigMuxCap(int type);
  533. // PASS1 : destructor made virtual
  534. virtual ~H245SigMuxCap();
  535. virtual ProtReturnCode GetType(int& type);
  536. private:
  537. int type;
  538. };
  539. class DLLEXPORT H245SigH225Cap : public H245SigMuxCap
  540. {
  541. public:
  542. H245SigH225Cap();
  543. ~H245SigH225Cap();
  544. // Methods to Set/Get delay jitter
  545. ProtReturnCode SetAudioDelayJitter(int jitter);
  546. ProtReturnCode GetAudioDelayJitter(int& jitter);
  547. // Methods to Set/Get multipoint cap.
  548. // Receive cap
  549. ProtReturnCode GetRxMultipointCap(
  550. H245SigMultipointCap& mcap);
  551. ProtReturnCode SetRxMultipointCap(
  552. H245SigMultipointCap& mcap);
  553. // transmit cap
  554. ProtReturnCode GetTxMultipointCap(
  555. H245SigMultipointCap& mcap);
  556. ProtReturnCode SetTxMultipointCap(
  557. H245SigMultipointCap& mcap);
  558. // receive/transmit cap
  559. ProtReturnCode GetRxTxMultipointCap(
  560. H245SigMultipointCap& mcap);
  561. ProtReturnCode SetRxTxMultipointCap(
  562. H245SigMultipointCap& mcap);
  563. // Set/Get MC capability.
  564. ProtReturnCode SetMCCap(boolean centralized_conf,
  565. boolean decentralized_conf);
  566. ProtReturnCode GetMCCap(boolean& centralized_conf,
  567. boolean& decentralized_conf);
  568. ProtReturnCode SetRTCPVideoControlCap(boolean flag);
  569. ProtReturnCode GetRTCPVideoControlCap(boolean& flag);
  570. // Set/Get media packetization capabilities.
  571. ProtReturnCode SetMedPktCap(int medpkt);
  572. ProtReturnCode GetMedPktCap(int& medpkt);
  573. H245SigH225Cap& operator=(H245SigH225Cap&);
  574. // For protocol internal use.
  575. H245H2250Capability* GetPriv();
  576. ProtReturnCode SetPriv(H245H2250Capability* cap);
  577. private:
  578. int jitter;
  579. H245H2250Capability* cap;
  580. H245SigMultipointCap rx_mcap;
  581. H245SigMultipointCap tx_mcap;
  582. H245SigMultipointCap rxtx_mcap;
  583. int mc_cent_conf;
  584. int mc_decent_conf;
  585. int rtcp_video_ctrl_cap;
  586. int medpkt;
  587. };
  588. class DLLEXPORT H245SigCommModeTableEntry 
  589. {
  590. public:
  591. H245SigCommModeTableEntry();
  592. ~H245SigCommModeTableEntry();
  593. // Method to get the type of this entry.
  594. // type is from enum H245SigCommunicationModeTableEntryType
  595. ProtReturnCode GetType(int &type);
  596. ProtReturnCode SetDataType(H245SigCap &cap);
  597. ProtReturnCode GetDataType(H245SigCap &cap);
  598. // Methods to manipulate session ids.
  599. ProtReturnCode SetSessionID(unsigned short id);
  600. ProtReturnCode GetSessionID(unsigned short& id);
  601. ProtReturnCode SetAssocSessionID(unsigned short id);
  602. ProtReturnCode GetAssocSessionID(unsigned short& id);
  603. ProtReturnCode SetMediaGuaranteedDelivery(
  604. boolean media_flag);
  605. ProtReturnCode GetMediaGuaranteedDelivery(
  606. boolean &media_flag);
  607. ProtReturnCode SetMediaCtrlGuaranteedDelivery(
  608. boolean ctrl_flag);
  609. ProtReturnCode GetMediaCtrlGuaranteedDelivery(
  610. boolean &ctrl_flag);
  611. // Set/Get terminal label.
  612. ProtReturnCode SetTerminalLabel(int mcu_number,
  613. int term_number);
  614. ProtReturnCode GetTerminalLabel(int& mcu_number,
  615. int& term_number);
  616. // Methods to manipulate media channel transport
  617. // addresses.
  618. ProtReturnCode SetMediaChan(sockaddr* addr);
  619. ProtReturnCode GetMediaChan(sockaddr* addr);
  620. ProtReturnCode SetMediaCtrlChan(sockaddr* addr);
  621. ProtReturnCode GetMediaCtrlChan(sockaddr* addr);
  622. // Non standard parameters
  623. ProtReturnCode GetNumNonStd(int& count);
  624. ProtReturnCode GetNonStdList(H245SigNonStdParam nsp_list[],
  625. int& count);
  626. ProtReturnCode AddNonStd(H245SigNonStdParam&);
  627. /*
  628.  * Methods to set/get session description.
  629.  */
  630. ProtReturnCode SetSessionDesc(unsigned short *desc,
  631. int desc_length);
  632. ProtReturnCode GetSessionDescLength(int& length);
  633. /*
  634.  * This method must be invoked with desc_length initialized
  635.  * to the length of the input buffer in shorts.
  636.  * Upon return desc_length will contain the length of the
  637.  * resultant desc in number of shorts.
  638.  */
  639. ProtReturnCode GetSessionDesc(unsigned short *desc,
  640. int& desc_length);
  641. H245SigCommModeTableEntry& operator=(
  642. H245SigCommModeTableEntry &ent);
  643. public:
  644. // for internal use.
  645. ProtReturnCode SetPriv(H245CommunicationModeTableEntry *priv);
  646. H245CommunicationModeTableEntry *GetPriv();
  647. private:
  648. H245CommunicationModeTableEntry *cmte;
  649. int media_flag;
  650. int ctrl_flag;
  651. int payload_type;
  652. int silence_supp;
  653. H245TransportAddress *media_chan;
  654. H245TransportAddress *media_ctrl_chan;
  655. unsigned short session_id;
  656. unsigned short assoc_session_id;
  657. int cap_type;
  658. int prot;
  659. H245AudioCapability *aud_cap;
  660. H245VideoCapability *vid_cap;
  661. H245DataApplicationCapability *data_cap;
  662. void *nsp_list;
  663. // Flag to indicate if terminal label is present.
  664. int tl_present;
  665. int term;
  666. int mcu;
  667. unsigned short *desc;
  668. unsigned short desc_length;
  669. void FreeCaps();
  670. };
  671. class DLLEXPORT H245SigTerminalLabel
  672. {
  673. public:
  674. unsigned short mcu_number;
  675. unsigned short terminal_number;
  676. };
  677. // H245SigForwardLCParams encapsulates the ForwardLogicalChannelParameters
  678. // field of the H.245 OpenLogicalChannel structure. Use this class to 
  679. // initialize the ForwardLogicalChannelParameters and then set in 
  680. // the H245SigOpenLogicalChannel object using the SetForwardLCParams method.
  681. // @See: 
  682. // -H245SigOpenLogicalChannel  
  683. //
  684. // @Version: PX3230S Version 2.2
  685. class DLLEXPORT H245SigForwardLCParams
  686. {
  687. public:
  688. H245SigForwardLCParams();
  689. ~H245SigForwardLCParams();
  690. H245SigForwardLCParams& operator=(H245SigForwardLCParams &);
  691.                 
  692. // Use this method to set the dataType field of the H.245
  693. // ForwardLogicalChannelParameters field of the H.245 
  694. // OpenLogicalChannel structure.
  695. ProtReturnCode SetDataType(H245SigDataType &dataType);
  696. // Use this method to set the multiplexParameters field of the H.245
  697. // ForwardLogicalChannelParameters field of the H.245 
  698. // OpenLogicalChannel structure.
  699. ProtReturnCode SetMuxParams(H245SigMuxParams &muxParams);
  700. // Use this method to set the portNumber field of the H.245
  701. // ForwardLogicalChannelParameters field of the H.245 
  702. // OpenLogicalChannel structure.
  703. ProtReturnCode SetPortNumber(unsigned short portNumber);
  704.                 
  705. // Use this method to retrieve the type of the dataType present
  706. // in the ForwardLogicalChannelParameters field of the H.245 
  707. // OpenLogicalChannel structure. 
  708. ProtReturnCode GetTypeOfDataType(int &type);
  709. // Use this method to retrieve the dataType field of 
  710. // the ForwardLogicalChannelParameters field of the H.245 
  711. // OpenLogicalChannel structure.  The argument dataType is 
  712. // assumed to be of the correct subtype. Use the method 
  713. // GetTypeOfDataType to figure out the subtype.
  714. ProtReturnCode GetDataType(H245SigDataType &dataType);
  715. // Use this method to retrieve the type of the multiplexParameters 
  716. // present in the ForwardLogicalChannelParameters field of the H.245 
  717. // OpenLogicalChannel structure. 
  718. ProtReturnCode GetTypeOfMuxParams(int &type);
  719. // Use this method to retrieve the multiplexParameters field of 
  720. // the ForwardLogicalChannelParameters field of the H.245 
  721. // OpenLogicalChannel structure.  The argument muxParams is 
  722. // assumed to be of the correct subtype. Use the method 
  723. // GetTypeOfMuxParams to figure out the subtype.
  724. ProtReturnCode GetMuxParams(H245SigMuxParams &muxParams);
  725. // Use this method to retrive the portNumber field of the H.245
  726. // ForwardLogicalChannelParameters field of the H.245 
  727. // OpenLogicalChannel structure. 
  728. ProtReturnCode GetPortNumber(unsigned short &portNumber);
  729. //@DELB
  730. public:
  731. // For protocol internal use.
  732. H245ForwardLogicalChannelParameters * GetPriv();
  733. ProtReturnCode SetPriv(H245ForwardLogicalChannelParameters *);
  734. private:
  735. H245ForwardLogicalChannelParameters *_fwdlcpPtr;
  736. H245DataType *_dataTypeObjPtr;
  737. H245H2250LogicalChannelParameters *_lcpObjPtr;
  738. int _portNumber;
  739. //@DELE
  740. };
  741. // H245SigReverseLCParams encapsulates the ReverseLogicalChannelParameters
  742. // field of the H.245 OpenLogicalChannel structure. Use this class to 
  743. // initialize the ReverseLogicalChannelParameters and then set in 
  744. // the H245SigOpenLogicalChannel object using the SetReverseLCParams method.
  745. // @See: 
  746. // -H245SigOpenLogicalChannel  
  747. //
  748. // @Version: PX3230S Version 2.2
  749. class DLLEXPORT H245SigReverseLCParams
  750. {
  751. public:
  752. H245SigReverseLCParams();
  753. ~H245SigReverseLCParams();
  754. H245SigReverseLCParams& operator=(H245SigReverseLCParams &);
  755. // Use this method to set the dataType field of the H.245
  756. // ReverseLogicalChannelParameters field of the H.245 
  757. // OpenLogicalChannel structure.
  758. ProtReturnCode SetDataType(H245SigDataType &dataType);
  759. // Use this method to set the multiplexParameters field of the H.245
  760. // ReverseLogicalChannelParameters field of the H.245 
  761. // OpenLogicalChannel structure.
  762. ProtReturnCode SetMuxParams(H245SigMuxParams &muxParams);
  763.         
  764. // Use this method to retrieve the type of the dataType present
  765. // in the ReverseLogicalChannelParameters field of the H.245 
  766. // OpenLogicalChannel structure. 
  767. ProtReturnCode GetTypeOfDataType(int &type);
  768. // Use this method to retrieve the dataType field of 
  769. // the ReverseLogicalChannelParameters field of the H.245 
  770. // OpenLogicalChannel structure.  The argument dataType is 
  771. // assumed to be of the correct subtype. Use the method 
  772. // GetTypeOfDataType to figure out the subtype.
  773. ProtReturnCode GetDataType(H245SigDataType &dataType);
  774. // Use this method to retrieve the type of the multiplexParameters 
  775. // present in the ReverseLogicalChannelParameters field of the H.245 
  776. // OpenLogicalChannel structure. 
  777. ProtReturnCode GetTypeOfMuxParams(int &type);
  778. // Use this method to retrieve the multiplexParameters field of 
  779. // the ReverseLogicalChannelParameters field of the H.245 
  780. // OpenLogicalChannel structure.  The argument muxParams is 
  781. // assumed to be of the correct subtype. Use the method 
  782. // GetTypeOfMuxParams to figure out the subtype.
  783. ProtReturnCode GetMuxParams(H245SigMuxParams &muxParams);
  784. //@DELB
  785. public:
  786. // For protocol internal use.
  787. H245ReverseLogicalChannelParameters * GetPriv();
  788. ProtReturnCode SetPriv(H245ReverseLogicalChannelParameters *);
  789. private:
  790. H245ReverseLogicalChannelParameters *_revlcpPtr;
  791. H245DataType *_dataTypeObjPtr;
  792. H245H2250LogicalChannelParameters *_lcpObjPtr;
  793. //@DELE
  794. };
  795. // H245SigOpenLogicalChannel encapsulates the H.245 OpenLogicalChannel 
  796. // structure. 
  797. // @See:
  798. // -H245SigReverseLCParams
  799. // -H245SigForwardLCParams
  800. //
  801. // @Version: PX3230S Version 2.2
  802. class DLLEXPORT H245SigOpenLogicalChannel : public ListElementInterface
  803. {
  804. public:
  805. H245SigOpenLogicalChannel();
  806. ~H245SigOpenLogicalChannel();
  807. H245SigOpenLogicalChannel& operator=(H245SigOpenLogicalChannel &);
  808. // Use this method to set the ForwardLogicalChannelNumber field of
  809. // H.245 OpenLogicalChannel structure.
  810. ProtReturnCode SetForwardLCNumber(int fwdLcn);
  811. // Use this method to set the ForwardLogicalChannelParameters field
  812. // of the H.245 OpenLogicalChannel structure.
  813. ProtReturnCode SetForwardLCParams(H245SigForwardLCParams &fwdLcp);
  814.  
  815. // Use this method to set the ReverseLogicalChannnelParameters field
  816. // of the H.245 OpenLogicalChannel structure. Note that this field
  817. // is optional.
  818. ProtReturnCode SetReverseLCParams(H245SigReverseLCParams &revlcp);
  819. // Use this method to get the ForwardLogicalChannelNumber field of
  820. // H.245 OpenLogicalChannel structure.
  821. ProtReturnCode GetForwardLCNumber(int &fwdLcn);
  822. // Use this method to get the ForwardLogicalChannelParameters field
  823. // of the H.245 OpenLogicalChannel structure.
  824. ProtReturnCode GetForwardLCParams(H245SigForwardLCParams &fwdLcp);
  825. // Use this method to get the ReverseLogicalChannelParameters field
  826. // of the H.245 OpenLogicalChannel structure. If this field is not
  827. // present then an error value of H245SIG_ITEM_NOT_PRESENT is returned.
  828. ProtReturnCode GetReverseLCParams(H245SigReverseLCParams &revlcp);
  829. //@DELB
  830. public:
  831. // For protocol internal use.
  832. H245OpenLogicalChannel * GetPriv();
  833. ProtReturnCode SetPriv(H245OpenLogicalChannel *);
  834.         int Match(void *key, unsigned long key_type);
  835. private:
  836. H245OpenLogicalChannel *_olcPtr;
  837. int _fwdlcNum;
  838. H245ForwardLogicalChannelParameters *_fwdlcpPtr;
  839. H245ReverseLogicalChannelParameters *_revlcpPtr;
  840. //@DELE
  841. };
  842. #endif // __H245TYPES_H__