00001
00002
00003
00004
00005
00006
00007 #include <opal/buildopts.h>
00008
00009 #if ! H323_DISABLE_H4509
00010
00011 #ifndef __H4509_H
00012 #define __H4509_H
00013
00014 #ifdef P_USE_PRAGMA
00015 #pragma interface
00016 #endif
00017
00018 #include <ptclib/asner.h>
00019
00020 #include "h4501.h"
00021 #include "h225.h"
00022 #include "h4501.h"
00023 #include "h4504.h"
00024 #include "h4501.h"
00025 #include "h4507.h"
00026
00027
00028
00029
00030
00031
00032 class H4509_H323CallCompletionOperations : public PASN_Enumeration
00033 {
00034 #ifndef PASN_LEANANDMEAN
00035 PCLASSINFO(H4509_H323CallCompletionOperations, PASN_Enumeration);
00036 #endif
00037 public:
00038 H4509_H323CallCompletionOperations(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00039
00040 enum Enumerations {
00041 e_ccbsRequest = 40,
00042 e_ccnrRequest = 27,
00043 e_ccCancel,
00044 e_ccExecPossible,
00045 e_ccRingout = 31,
00046 e_ccSuspend,
00047 e_ccResume
00048 };
00049
00050 H4509_H323CallCompletionOperations & operator=(unsigned v);
00051 PObject * Clone() const;
00052 };
00053
00054
00055
00056
00057
00058
00059 class H4509_CcShortArg;
00060 class H4509_CcLongArg;
00061
00062 class H4509_CcArg : public PASN_Choice
00063 {
00064 #ifndef PASN_LEANANDMEAN
00065 PCLASSINFO(H4509_CcArg, PASN_Choice);
00066 #endif
00067 public:
00068 H4509_CcArg(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00069
00070 enum Choices {
00071 e_shortArg,
00072 e_longArg
00073 };
00074
00075 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00076 operator H4509_CcShortArg &() const;
00077 #else
00078 operator H4509_CcShortArg &();
00079 operator const H4509_CcShortArg &() const;
00080 #endif
00081 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00082 operator H4509_CcLongArg &() const;
00083 #else
00084 operator H4509_CcLongArg &();
00085 operator const H4509_CcLongArg &() const;
00086 #endif
00087
00088 PBoolean CreateObject();
00089 PObject * Clone() const;
00090 };
00091
00092
00093
00094
00095
00096
00097 class H4509_CallCompletionErrors : public PASN_Enumeration
00098 {
00099 #ifndef PASN_LEANANDMEAN
00100 PCLASSINFO(H4509_CallCompletionErrors, PASN_Enumeration);
00101 #endif
00102 public:
00103 H4509_CallCompletionErrors(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00104
00105 enum Enumerations {
00106 e_shortTermRejection = 1010,
00107 e_longTermRejection,
00108 e_remoteUserBusyAgain,
00109 e_failureToMatch
00110 };
00111
00112 H4509_CallCompletionErrors & operator=(unsigned v);
00113 PObject * Clone() const;
00114 };
00115
00116
00117
00118
00119
00120
00121 class H4504_MixedExtension;
00122
00123 class H4509_ArrayOf_MixedExtension : public PASN_Array
00124 {
00125 #ifndef PASN_LEANANDMEAN
00126 PCLASSINFO(H4509_ArrayOf_MixedExtension, PASN_Array);
00127 #endif
00128 public:
00129 H4509_ArrayOf_MixedExtension(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00130
00131 PASN_Object * CreateObject() const;
00132 H4504_MixedExtension & operator[](PINDEX i) const;
00133 PObject * Clone() const;
00134 };
00135
00136
00137
00138
00139
00140
00141 class H4509_CcRequestArg : public PASN_Sequence
00142 {
00143 #ifndef PASN_LEANANDMEAN
00144 PCLASSINFO(H4509_CcRequestArg, PASN_Sequence);
00145 #endif
00146 public:
00147 H4509_CcRequestArg(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00148
00149 enum OptionalFields {
00150 e_ccIdentifier,
00151 e_retain_sig_connection,
00152 e_extension
00153 };
00154
00155 H4501_EndpointAddress m_numberA;
00156 H4501_EndpointAddress m_numberB;
00157 H225_CallIdentifier m_ccIdentifier;
00158 H4507_BasicService m_service;
00159 PASN_Boolean m_can_retain_service;
00160 PASN_Boolean m_retain_sig_connection;
00161 H4509_ArrayOf_MixedExtension m_extension;
00162
00163 PINDEX GetDataLength() const;
00164 PBoolean Decode(PASN_Stream & strm);
00165 void Encode(PASN_Stream & strm) const;
00166 #ifndef PASN_NOPRINTON
00167 void PrintOn(ostream & strm) const;
00168 #endif
00169 Comparison Compare(const PObject & obj) const;
00170 PObject * Clone() const;
00171 };
00172
00173
00174
00175
00176
00177
00178 class H4509_CcRequestRes : public PASN_Sequence
00179 {
00180 #ifndef PASN_LEANANDMEAN
00181 PCLASSINFO(H4509_CcRequestRes, PASN_Sequence);
00182 #endif
00183 public:
00184 H4509_CcRequestRes(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00185
00186 enum OptionalFields {
00187 e_extension
00188 };
00189
00190 PASN_Boolean m_retain_service;
00191 H4509_ArrayOf_MixedExtension m_extension;
00192
00193 PINDEX GetDataLength() const;
00194 PBoolean Decode(PASN_Stream & strm);
00195 void Encode(PASN_Stream & strm) const;
00196 #ifndef PASN_NOPRINTON
00197 void PrintOn(ostream & strm) const;
00198 #endif
00199 Comparison Compare(const PObject & obj) const;
00200 PObject * Clone() const;
00201 };
00202
00203
00204
00205
00206
00207
00208 class H4509_CcShortArg : public PASN_Sequence
00209 {
00210 #ifndef PASN_LEANANDMEAN
00211 PCLASSINFO(H4509_CcShortArg, PASN_Sequence);
00212 #endif
00213 public:
00214 H4509_CcShortArg(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00215
00216 enum OptionalFields {
00217 e_ccIdentifier,
00218 e_extension
00219 };
00220
00221 H225_CallIdentifier m_ccIdentifier;
00222 H4509_ArrayOf_MixedExtension m_extension;
00223
00224 PINDEX GetDataLength() const;
00225 PBoolean Decode(PASN_Stream & strm);
00226 void Encode(PASN_Stream & strm) const;
00227 #ifndef PASN_NOPRINTON
00228 void PrintOn(ostream & strm) const;
00229 #endif
00230 Comparison Compare(const PObject & obj) const;
00231 PObject * Clone() const;
00232 };
00233
00234
00235
00236
00237
00238
00239 class H4509_CcLongArg : public PASN_Sequence
00240 {
00241 #ifndef PASN_LEANANDMEAN
00242 PCLASSINFO(H4509_CcLongArg, PASN_Sequence);
00243 #endif
00244 public:
00245 H4509_CcLongArg(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00246
00247 enum OptionalFields {
00248 e_numberA,
00249 e_numberB,
00250 e_ccIdentifier,
00251 e_service,
00252 e_extension
00253 };
00254
00255 H4501_EndpointAddress m_numberA;
00256 H4501_EndpointAddress m_numberB;
00257 H225_CallIdentifier m_ccIdentifier;
00258 H4507_BasicService m_service;
00259 H4509_ArrayOf_MixedExtension m_extension;
00260
00261 PINDEX GetDataLength() const;
00262 PBoolean Decode(PASN_Stream & strm);
00263 void Encode(PASN_Stream & strm) const;
00264 #ifndef PASN_NOPRINTON
00265 void PrintOn(ostream & strm) const;
00266 #endif
00267 Comparison Compare(const PObject & obj) const;
00268 PObject * Clone() const;
00269 };
00270
00271
00272 #endif // __H4509_H
00273
00274 #endif // if ! H323_DISABLE_H4509
00275
00276
00277