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_IntResult : public
PASN_Sequence
00256 {
00257
#ifndef PASN_LEANANDMEAN
00258
PCLASSINFO(
H4503_IntResult, PASN_Sequence);
00259
#endif
00260
public:
00261
H4503_IntResult(
unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00262
00263 enum OptionalFields {
00264 e_extension
00265 };
00266
00267 H4501_EndpointAddress m_servedUserNr;
00268 H4503_BasicService m_basicService;
00269 H4503_Procedure m_procedure;
00270 H4501_EndpointAddress m_divertedToAddress;
00271 PASN_Boolean m_remoteEnabled;
00272 H4503_IntResult_extension m_extension;
00273
00274 PINDEX GetDataLength() const;
00275 BOOL Decode(PASN_Stream & strm);
00276
void Encode(PASN_Stream & strm) const;
00277 #ifndef PASN_NOPRINTON
00278
void PrintOn(ostream & strm) const;
00279 #endif
00280 Comparison Compare(const PObject & obj) const;
00281 PObject * Clone() const;
00282 };
00283
00284
00285 #endif
00286
00287 #endif
00288
00289
00290