OSDN Git Service

Add MS7619SE
[uclinux-h8/uClinux-dist.git] / lib / libopenh323 / openh323.dxy
1 /*! \mainpage OpenH323
2
3 \section contents Table of Contents
4
5 \li \ref intro
6 \li \ref arch
7 \li \ref classes
8 \li \ref history
9
10 \section intro Introduction
11
12 OpenH323 is an Open Source class library for the development of applications
13 using the H.323 protocol for multi-media communications over
14 packet based networks. It uses the PWLib library to provide platform independence, and
15 makes extensive use of the C++ techniques of inheritance and polymorphism.
16
17 This document is intended as reference guide, not a tutorial. For examples
18 of using OpenH323, see the sample programs provided in the samples directory.
19 A tutorial on using PWLib and OpenH323 is also available at http://toncar.cz/openh323/tut.
20
21 Last updated 17 May, 2004
22
23 Copyright (C) 1999-2003 Equivalence Pty Ltd, All right reserved 
24
25 Portions Copyright (C) 2004 Post Increment, All Rights Reserved
26
27
28 \section arch Architecture
29
30 The fundamental object in the ownership hierarchy is the H323Endpoint 
31 class. An application would typically have one instance of a descendant of 
32 this class. The application defined descendant would set up defaults for 
33 various H323 parameters (timeouts etc), the most important of which is the 
34 capability table which defines the codecs and channel types the application 
35 is capable of handling.
36
37 Also created by the application in the H323Endpoint would be instances of one 
38 or more descendants of the H323Listener class. There is a descendant of this 
39 class for each protocol that is supported. For example H323ListenerIP would 
40 be for Internet use. Each listener spawns a thread that monitors its protocol 
41 and when a new incoming call is detected, creates an instance of a 
42 H323Transport class descendent. As for the H323Listener class, there is a 
43 descendent for each protocol supported, eg H323TransportIP.
44
45 When the first PDU arrives on a H323Transport using the Q.931 and H.225 
46 protocols, there is a call reference that identifies the connection that has 
47 been made. These connections are embodied by the H323Connection class, which 
48 contains all of the state information for a connection between H323 endpoints. 
49 The H323Endpoint instance keeps track of these active connections. If there 
50 is no connection for the call reference number already, a new one is created 
51 and H323 signalling negotiations begun.
52
53 An application would often have the system create an instance of a descendant 
54 of the H323Connection class, rather than that class itself. This is so that 
55 any of a large number of virtual methods may be overridden. These virtual 
56 methods are "callback" functions by the library to allow the application to 
57 either obtain information or modify the behaviour at various phases of the 
58 protocol negotiations. For example, there is a callback for when an incoming 
59 call is in progress and the application user should be "alerted". This is 
60 highly application specific being anything from a simple audible beep to 
61 displaying a pop up window with bells and whistles.
62
63 The H323Negotiator classes are used to maintain the state and functionality 
64 of each command or variable defined by the H.245 protocol. Their main reason 
65 for existence is actually to reduce the scope of the h225.h and h245.h files, 
66 which define many hundreds of classes. A user of the H323Connection class 
67 thus does not have to include all of these classes on every compilation unit.
68
69 During some of the H.245 negotiations, logical channels may be created, both 
70 by the remote endpoint and by the local application. The H323Channel class 
71 descendants represents this. A typical use of one of these classes is to open 
72 a stream of encoded audio data. The H323Channel class would create a 
73 H323Codec using the H323Capability that was passed during the protocol 
74 negotiations.
75
76 \section classes Class hierarchy
77
78 OpenH323 provides a rich class hierarchy that allows access to most of the functions
79 requires for H.323 endponts. The list below is not intended an exhaustive list of the
80 classes available (which is available here) but is good starting point for finding out
81 more information on the various functions available
82
83 \subsection endpoint Endpoint Classes
84
85 \li H323EndPoint - implements a H.323 endpoint that can make or receive calls
86 \li H323Connection - an instance  of the class is created for each outgoing or incoming call
87 \li H323Channel - the base class for all H.323 logical channels
88 \li H323Codec - the base class for all codecs. See also H323AudioCode and H323VideoCodec
89 \li H323SignalPDU - the base class for all H.323 Protocol Data Units (PDU)
90 \li H323DataPDU - the base class for all H.323 Protocol Data Units (PDU)
91 \li H323GatekeeperServer - implements a H.323 Gatekeeper, i.e. a server for H.225 RAS protocl
92
93 \subsection daattypes Data types
94 \li H225_AliasAddress - defines a H.225 aliasAddress object
95 \li H323TransportAddress - defines a IPv4 or IPv6 transport address as a string
96
97 \subsection h225 H.225 Protocol Classes
98 These classes are created from the H.225 ASN definitions
99 \li H225_Setup_UUIE
100 \li H225_CallProceeding_UUIE
101 \li H225_Connect_UUIE
102 \li H225_Alerting_UUIE
103 \li H225_Information_UUIE
104 \li H225_ReleaseComplete_UUIE
105 \li H225_Facility_UUIE
106 \li H225_Progress_UUIE
107 \li H225_Status_UUIE
108 \li H225_StatusInquiry_UUIE
109 \li H225_SetupAcknowledge_UUIE
110 \li H225_Notify_UUIE
111 \li H225_GatekeeperRequest,
112 \li H225_GatekeeperConfirm,
113 \li H225_GatekeeperReject,
114 \li H225_RegistrationRequest,
115 \li H225_RegistrationConfirm,
116 \li H225_RegistrationReject,
117 \li H225_UnregistrationRequest,
118 \li H225_UnregistrationConfirm,
119 \li H225_UnregistrationReject,
120 \li H225_AdmissionRequest,
121 \li H225_AdmissionConfirm,
122 \li H225_AdmissionReject,
123 \li H225_BandwidthRequest,
124 \li H225_BandwidthConfirm,
125 \li H225_BandwidthReject,
126 \li H225_DisengageRequest,
127 \li H225_DisengageConfirm,
128 \li H225_DisengageReject,
129 \li H225_LocationRequest,
130 \li H225_LocationConfirm,
131 \li H225_LocationReject, 
132 \li H225_InfoRequest,
133 \li H225_InfoRequestResponse,
134 \li H225_NonStandardMessage,
135 \li H225_UnknownMessageResponse,
136 \li H225_RequestInProgress,
137 \li H225_ResourcesAvailableIndicate,
138 \li H225_ResourcesAvailableConfirm,
139 \li H225_InfoRequestAck,
140 \li H225_InfoRequestNak,
141 \li H225_ServiceControlIndication,
142 \li H225_ServiceControlResponse,
143
144
145 \subsection h245 H.245 Protocol Classes
146 These classes are created from the H.245 ASN definitions
147
148 \li H245_NonStandardMessage
149 \li H245_MasterSlaveDetermination
150 \li H245_TerminalCapabilitySet
151 \li H245_OpenLogicalChannel
152 \li H245_CloseLogicalChannel
153 \li H245_RequestChannelClose
154 \li H245_MultiplexEntrySend
155 \li H245_RequestMultiplexEntry
156 \li H245_RequestMode
157 \li H245_RoundTripDelayRequest
158 \li H245_MaintenanceLoopRequest
159 \li H245_CommunicationModeRequest
160 \li H245_ConferenceRequest
161 \li H245_MultilinkRequest
162 \li H245_LogicalChannelRateRequest
163 \li H245_MasterSlaveDeterminationAck
164 \li H245_MasterSlaveDeterminationReject
165 \li H245_TerminalCapabilitySetAck
166 \li H245_TerminalCapabilitySetReject
167 \li H245_OpenLogicalChannelAck
168 \li H245_OpenLogicalChannelReject
169 \li H245_CloseLogicalChannelAck
170 \li H245_RequestChannelCloseAck
171 \li H245_RequestChannelCloseReject
172 \li H245_MultiplexEntrySendAck
173 \li H245_MultiplexEntrySendReject
174 \li H245_RequestMultiplexEntryAck
175 \li H245_RequestMultiplexEntryReject
176 \li H245_RequestModeAck
177 \li H245_RequestModeReject
178 \li H245_RoundTripDelayResponse
179 \li H245_MaintenanceLoopAck
180 \li H245_MaintenanceLoopReject
181 \li H245_CommunicationModeResponse
182 \li H245_ConferenceResponse
183 \li H245_MultilinkResponse
184 \li H245_LogicalChannelRateAcknowledge
185 \li H245_LogicalChannelRateReject
186 \li H245_MaintenanceLoopOffCommand
187 \li H245_SendTerminalCapabilitySet
188 \li H245_EncryptionCommand
189 \li H245_FlowControlCommand
190 \li H245_EndSessionCommand
191 \li H245_MiscellaneousCommand
192 \li H245_CommunicationModeCommand
193 \li H245_ConferenceCommand
194 \li H245_H223MultiplexReconfiguration
195 \li H245_NewATMVCCommand
196 \li H245_MobileMultilinkReconfigurationCommand
197 \li H245_FunctionNotUnderstood
198 \li H245_MasterSlaveDeterminationRelease
199 \li H245_TerminalCapabilitySetRelease
200 \li H245_OpenLogicalChannelConfirm
201 \li H245_RequestChannelCloseRelease
202 \li H245_MultiplexEntrySendRelease
203 \li H245_RequestMultiplexEntryRelease
204 \li H245_RequestModeRelease
205 \li H245_MiscellaneousIndication
206 \li H245_JitterIndication
207 \li H245_H223SkewIndication
208 \li H245_NewATMVCIndication
209 \li H245_UserInputIndication
210 \li H245_H2250MaximumSkewIndication
211 \li H245_MCLocationIndication
212 \li H245_ConferenceIndication
213 \li H245_VendorIdentification
214 \li H245_FunctionNotSupported
215 \li H245_MultilinkIndication
216 \li H245_LogicalChannelRateRelease
217 \li H245_FlowControlIndication
218 \li H245_MobileMultilinkReconfigurationIndication
219
220 \subsection history History
221
222 \li 17 May 2004 - Converted from Doc++ to Doxygen format by Craig Southeren
223
224 */