00001
00002
00003
00004
00005
00006
00007 #if ! H323_DISABLE_H4503
00008
00009 #ifndef __H4503_H
00010 #define __H4503_H
00011
00012 #ifdef P_USE_PRAGMA
00013 #pragma interface
00014 #endif
00015
00016 #include <ptclib/asner.h>
00017
00018 #include "h4501.h"
00019 #include "h225.h"
00020 #include "h225.h"
00021 #include "h4501.h"
00022 #include "h4501.h"
00023
00024
00025
00026
00027
00028
00029 class H4503_H323CallDiversionOperations : public PASN_Enumeration
00030 {
00031 #ifndef PASN_LEANANDMEAN
00032 PCLASSINFO(H4503_H323CallDiversionOperations, PASN_Enumeration);
00033 #endif
00034 public:
00035 H4503_H323CallDiversionOperations(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00036
00037 enum Enumerations {
00038 e_activateDiversionQ = 15,
00039 e_deactivateDiversionQ,
00040 e_interrogateDiversionQ,
00041 e_checkRestriction,
00042 e_callRerouting,
00043 e_divertingLegInformation1,
00044 e_divertingLegInformation2,
00045 e_divertingLegInformation3,
00046 e_divertingLegInformation4 = 100,
00047 e_cfnrDivertedLegFailed = 23
00048 };
00049
00050 H4503_H323CallDiversionOperations & operator=(unsigned v);
00051 PObject * Clone() const;
00052 };
00053
00054
00055
00056
00057
00058
00059 class H4503_DiversionReason : public PASN_Enumeration
00060 {
00061 #ifndef PASN_LEANANDMEAN
00062 PCLASSINFO(H4503_DiversionReason, PASN_Enumeration);
00063 #endif
00064 public:
00065 H4503_DiversionReason(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00066
00067 enum Enumerations {
00068 e_unknown,
00069 e_cfu,
00070 e_cfb,
00071 e_cfnr
00072 };
00073
00074 H4503_DiversionReason & operator=(unsigned v);
00075 PObject * Clone() const;
00076 };
00077
00078
00079
00080
00081
00082
00083 class H4503_IntResult;
00084
00085 class H4503_IntResultList : public PASN_Array
00086 {
00087 #ifndef PASN_LEANANDMEAN
00088 PCLASSINFO(H4503_IntResultList, PASN_Array);
00089 #endif
00090 public:
00091 H4503_IntResultList(unsigned tag = UniversalSet, TagClass tagClass = UniversalTagClass);
00092
00093 PASN_Object * CreateObject() const;
00094 H4503_IntResult & operator[](PINDEX i) const;
00095 PObject * Clone() const;
00096 };
00097
00098
00099
00100
00101
00102
00103 class H4503_Procedure : public PASN_Enumeration
00104 {
00105 #ifndef PASN_LEANANDMEAN
00106 PCLASSINFO(H4503_Procedure, PASN_Enumeration);
00107 #endif
00108 public:
00109 H4503_Procedure(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00110
00111 enum Enumerations {
00112 e_cfu,
00113 e_cfb,
00114 e_cfnr
00115 };
00116
00117 H4503_Procedure & operator=(unsigned v);
00118 PObject * Clone() const;
00119 };
00120
00121
00122
00123
00124
00125
00126 class H4503_SubscriptionOption : public PASN_Enumeration
00127 {
00128 #ifndef PASN_LEANANDMEAN
00129 PCLASSINFO(H4503_SubscriptionOption, PASN_Enumeration);
00130 #endif
00131 public:
00132 H4503_SubscriptionOption(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00133
00134 enum Enumerations {
00135 e_noNotification,
00136 e_notificationWithoutDivertedToNr,
00137 e_notificationWithDivertedToNr
00138 };
00139
00140 H4503_SubscriptionOption & operator=(unsigned v);
00141 PObject * Clone() const;
00142 };
00143
00144
00145
00146
00147
00148
00149 class H4503_CallDiversionErrors : public PASN_Enumeration
00150 {
00151 #ifndef PASN_LEANANDMEAN
00152 PCLASSINFO(H4503_CallDiversionErrors, PASN_Enumeration);
00153 #endif
00154 public:
00155 H4503_CallDiversionErrors(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00156
00157 enum Enumerations {
00158 e_invalidDivertedNumber = 12,
00159 e_specialServiceNumber = 14,
00160 e_diversionToServedUserNumber,
00161 e_numberOfDiversionsExceeded = 24,
00162 e_temporarilyUnavailable = 1000,
00163 e_notAuthorized = 1007,
00164 e_unspecified
00165 };
00166
00167 H4503_CallDiversionErrors & operator=(unsigned v);
00168 PObject * Clone() const;
00169 };
00170
00171
00172
00173
00174
00175
00176 class H4503_BasicService : public PASN_Enumeration
00177 {
00178 #ifndef PASN_LEANANDMEAN
00179 PCLASSINFO(H4503_BasicService, PASN_Enumeration);
00180 #endif
00181 public:
00182 H4503_BasicService(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00183
00184 enum Enumerations {
00185 e_allServices
00186 };
00187
00188 H4503_BasicService & operator=(unsigned v);
00189 PObject * Clone() const;
00190 };
00191
00192
00193
00194
00195
00196
00197 class H4501_Extension;
00198
00199 class H4503_ExtensionSeq : public PASN_Array
00200 {
00201 #ifndef PASN_LEANANDMEAN
00202 PCLASSINFO(H4503_ExtensionSeq, PASN_Array);
00203 #endif
00204 public:
00205 H4503_ExtensionSeq(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00206
00207 PASN_Object * CreateObject() const;
00208 H4501_Extension & operator[](PINDEX i) const;
00209 PObject * Clone() const;
00210 };
00211
00212
00213
00214
00215
00216
00217 class H4503_ExtensionSeq;
00218 class H225_NonStandardParameter;
00219
00220 class H4503_IntResult_extension : public PASN_Choice
00221 {
00222 #ifndef PASN_LEANANDMEAN
00223 PCLASSINFO(H4503_IntResult_extension, PASN_Choice);
00224 #endif
00225 public:
00226 H4503_IntResult_extension(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00227
00228 enum Choices {
00229 e_extensionSeq,
00230 e_nonStandardData
00231 };
00232
00233 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00234 operator H4503_ExtensionSeq &() const;
00235 #else
00236 operator H4503_ExtensionSeq &();
00237 operator const H4503_ExtensionSeq &() const;
00238 #endif
00239 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00240 operator H225_NonStandardParameter &() const;
00241 #else
00242 operator H225_NonStandardParameter &();
00243 operator const H225_NonStandardParameter &() const;
00244 #endif
00245
00246 BOOL CreateObject();
00247 PObject * Clone() const;
00248 };
00249
00250
00251
00252
00253
00254
00255 class H4503_ExtensionSeq;
00256 class H225_NonStandardParameter;
00257
00258 class H4503_DivertingLegInfo2Arg_extension : public PASN_Choice
00259 {
00260 #ifndef PASN_LEANANDMEAN
00261 PCLASSINFO(H4503_DivertingLegInfo2Arg_extension, PASN_Choice);
00262 #endif
00263 public:
00264 H4503_DivertingLegInfo2Arg_extension(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00265
00266 enum Choices {
00267 e_extensionSeq,
00268 e_nonStandardData
00269 };
00270
00271 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00272 operator H4503_ExtensionSeq &() const;
00273 #else
00274 operator H4503_ExtensionSeq &();
00275 operator const H4503_ExtensionSeq &() const;
00276 #endif
00277 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00278 operator H225_NonStandardParameter &() const;
00279 #else
00280 operator H225_NonStandardParameter &();
00281 operator const H225_NonStandardParameter &() const;
00282 #endif
00283
00284 BOOL CreateObject();
00285 PObject * Clone() const;
00286 };
00287
00288
00289
00290
00291
00292
00293 class H4503_IntResult : public PASN_Sequence
00294 {
00295 #ifndef PASN_LEANANDMEAN
00296 PCLASSINFO(H4503_IntResult, PASN_Sequence);
00297 #endif
00298 public:
00299 H4503_IntResult(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00300
00301 enum OptionalFields {
00302 e_extension
00303 };
00304
00305 H4501_EndpointAddress m_servedUserNr;
00306 H4503_BasicService m_basicService;
00307 H4503_Procedure m_procedure;
00308 H4501_EndpointAddress m_divertedToAddress;
00309 PASN_Boolean m_remoteEnabled;
00310 H4503_IntResult_extension m_extension;
00311
00312 PINDEX GetDataLength() const;
00313 BOOL Decode(PASN_Stream & strm);
00314 void Encode(PASN_Stream & strm) const;
00315 #ifndef PASN_NOPRINTON
00316 void PrintOn(ostream & strm) const;
00317 #endif
00318 Comparison Compare(const PObject & obj) const;
00319 PObject * Clone() const;
00320 };
00321
00322
00323
00324
00325
00326
00327 class H4503_DivertingLegInfo2Arg : public PASN_Sequence
00328 {
00329 #ifndef PASN_LEANANDMEAN
00330 PCLASSINFO(H4503_DivertingLegInfo2Arg, PASN_Sequence);
00331 #endif
00332 public:
00333 H4503_DivertingLegInfo2Arg(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00334
00335 enum OptionalFields {
00336 e_originalDiversionReason,
00337 e_divertingNr,
00338 e_originalCalledNr,
00339 e_redirectingInfo,
00340 e_originalCalledInfo,
00341 e_extension
00342 };
00343
00344 PASN_Integer m_diversionCounter;
00345 H4503_DiversionReason m_diversionReason;
00346 H4503_DiversionReason m_originalDiversionReason;
00347 H4501_EndpointAddress m_divertingNr;
00348 H4501_EndpointAddress m_originalCalledNr;
00349 PASN_BMPString m_redirectingInfo;
00350 PASN_BMPString m_originalCalledInfo;
00351 H4503_DivertingLegInfo2Arg_extension m_extension;
00352
00353 PINDEX GetDataLength() const;
00354 BOOL Decode(PASN_Stream & strm);
00355 void Encode(PASN_Stream & strm) const;
00356 #ifndef PASN_NOPRINTON
00357 void PrintOn(ostream & strm) const;
00358 #endif
00359 Comparison Compare(const PObject & obj) const;
00360 PObject * Clone() const;
00361 };
00362
00363
00364 #endif // __H4503_H
00365
00366 #endif // if ! H323_DISABLE_H4503
00367
00368
00369