00001
00002
00003
00004
00005
00006
00007 #if ! H323_DISABLE_H4501
00008
00009 #ifndef __H4501_H
00010 #define __H4501_H
00011
00012 #ifdef P_USE_PRAGMA
00013 #pragma interface
00014 #endif
00015
00016 #include <ptclib/asner.h>
00017
00018 #include "h225.h"
00019 #include "x880.h"
00020
00021
00022
00023
00024
00025
00026 class H4501_EntityType : public PASN_Choice
00027 {
00028 #ifndef PASN_LEANANDMEAN
00029 PCLASSINFO(H4501_EntityType, PASN_Choice);
00030 #endif
00031 public:
00032 H4501_EntityType(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00033
00034 enum Choices {
00035 e_endpoint,
00036 e_anyEntity
00037 };
00038
00039 BOOL CreateObject();
00040 PObject * Clone() const;
00041 };
00042
00043
00044
00045
00046
00047
00048 class H4501_AddressInformation : public H225_AliasAddress
00049 {
00050 #ifndef PASN_LEANANDMEAN
00051 PCLASSINFO(H4501_AddressInformation, H225_AliasAddress);
00052 #endif
00053 public:
00054 H4501_AddressInformation(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00055
00056 PObject * Clone() const;
00057 };
00058
00059
00060
00061
00062
00063
00064 class H4501_InterpretationApdu : public PASN_Choice
00065 {
00066 #ifndef PASN_LEANANDMEAN
00067 PCLASSINFO(H4501_InterpretationApdu, PASN_Choice);
00068 #endif
00069 public:
00070 H4501_InterpretationApdu(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00071
00072 enum Choices {
00073 e_discardAnyUnrecognizedInvokePdu,
00074 e_clearCallIfAnyInvokePduNotRecognized,
00075 e_rejectAnyUnrecognizedInvokePdu
00076 };
00077
00078 BOOL CreateObject();
00079 PObject * Clone() const;
00080 };
00081
00082
00083
00084
00085
00086
00087 class H4501_ArrayOf_ROS;
00088
00089 class H4501_ServiceApdus : public PASN_Choice
00090 {
00091 #ifndef PASN_LEANANDMEAN
00092 PCLASSINFO(H4501_ServiceApdus, PASN_Choice);
00093 #endif
00094 public:
00095 H4501_ServiceApdus(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00096
00097 enum Choices {
00098 e_rosApdus
00099 };
00100
00101 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00102 operator H4501_ArrayOf_ROS &() const;
00103 #else
00104 operator H4501_ArrayOf_ROS &();
00105 operator const H4501_ArrayOf_ROS &() const;
00106 #endif
00107
00108 BOOL CreateObject();
00109 PObject * Clone() const;
00110 };
00111
00112
00113
00114
00115
00116
00117 class H4501_InvokeIdSet : public PASN_Integer
00118 {
00119 #ifndef PASN_LEANANDMEAN
00120 PCLASSINFO(H4501_InvokeIdSet, PASN_Integer);
00121 #endif
00122 public:
00123 H4501_InvokeIdSet(unsigned tag = UniversalInteger, TagClass tagClass = UniversalTagClass);
00124
00125 H4501_InvokeIdSet & operator=(int v);
00126 H4501_InvokeIdSet & operator=(unsigned v);
00127 PObject * Clone() const;
00128 };
00129
00130
00131
00132
00133
00134
00135 class H4501_InvokeIDs : public PASN_Integer
00136 {
00137 #ifndef PASN_LEANANDMEAN
00138 PCLASSINFO(H4501_InvokeIDs, PASN_Integer);
00139 #endif
00140 public:
00141 H4501_InvokeIDs(unsigned tag = UniversalInteger, TagClass tagClass = UniversalTagClass);
00142
00143 H4501_InvokeIDs & operator=(int v);
00144 H4501_InvokeIDs & operator=(unsigned v);
00145 PObject * Clone() const;
00146 };
00147
00148
00149
00150
00151
00152
00153 class H4501_AddressScreened;
00154
00155 class H4501_PresentedAddressScreened : public PASN_Choice
00156 {
00157 #ifndef PASN_LEANANDMEAN
00158 PCLASSINFO(H4501_PresentedAddressScreened, PASN_Choice);
00159 #endif
00160 public:
00161 H4501_PresentedAddressScreened(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00162
00163 enum Choices {
00164 e_presentationAllowedAddress,
00165 e_presentationRestricted,
00166 e_numberNotAvailableDueToInterworking,
00167 e_presentationRestrictedAddress
00168 };
00169
00170 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00171 operator H4501_AddressScreened &() const;
00172 #else
00173 operator H4501_AddressScreened &();
00174 operator const H4501_AddressScreened &() const;
00175 #endif
00176
00177 BOOL CreateObject();
00178 PObject * Clone() const;
00179 };
00180
00181
00182
00183
00184
00185
00186 class H4501_Address;
00187
00188 class H4501_PresentedAddressUnscreened : public PASN_Choice
00189 {
00190 #ifndef PASN_LEANANDMEAN
00191 PCLASSINFO(H4501_PresentedAddressUnscreened, PASN_Choice);
00192 #endif
00193 public:
00194 H4501_PresentedAddressUnscreened(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00195
00196 enum Choices {
00197 e_presentationAllowedAddress,
00198 e_presentationRestricted,
00199 e_numberNotAvailableDueToInterworking,
00200 e_presentationRestrictedAddress
00201 };
00202
00203 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00204 operator H4501_Address &() const;
00205 #else
00206 operator H4501_Address &();
00207 operator const H4501_Address &() const;
00208 #endif
00209
00210 BOOL CreateObject();
00211 PObject * Clone() const;
00212 };
00213
00214
00215
00216
00217
00218
00219 class H4501_NumberScreened;
00220
00221 class H4501_PresentedNumberScreened : public PASN_Choice
00222 {
00223 #ifndef PASN_LEANANDMEAN
00224 PCLASSINFO(H4501_PresentedNumberScreened, PASN_Choice);
00225 #endif
00226 public:
00227 H4501_PresentedNumberScreened(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00228
00229 enum Choices {
00230 e_presentationAllowedAddress,
00231 e_presentationRestricted,
00232 e_numberNotAvailableDueToInterworking,
00233 e_presentationRestrictedAddress
00234 };
00235
00236 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00237 operator H4501_NumberScreened &() const;
00238 #else
00239 operator H4501_NumberScreened &();
00240 operator const H4501_NumberScreened &() const;
00241 #endif
00242
00243 BOOL CreateObject();
00244 PObject * Clone() const;
00245 };
00246
00247
00248
00249
00250
00251
00252 class H225_PartyNumber;
00253
00254 class H4501_PresentedNumberUnscreened : public PASN_Choice
00255 {
00256 #ifndef PASN_LEANANDMEAN
00257 PCLASSINFO(H4501_PresentedNumberUnscreened, PASN_Choice);
00258 #endif
00259 public:
00260 H4501_PresentedNumberUnscreened(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00261
00262 enum Choices {
00263 e_presentationAllowedAddress,
00264 e_presentationRestricted,
00265 e_numberNotAvailableDueToInterworking,
00266 e_presentationRestrictedAddress
00267 };
00268
00269 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00270 operator H225_PartyNumber &() const;
00271 #else
00272 operator H225_PartyNumber &();
00273 operator const H225_PartyNumber &() const;
00274 #endif
00275
00276 BOOL CreateObject();
00277 PObject * Clone() const;
00278 };
00279
00280
00281
00282
00283
00284
00285 class H4501_UserSpecifiedSubaddress;
00286 class H4501_NSAPSubaddress;
00287
00288 class H4501_PartySubaddress : public PASN_Choice
00289 {
00290 #ifndef PASN_LEANANDMEAN
00291 PCLASSINFO(H4501_PartySubaddress, PASN_Choice);
00292 #endif
00293 public:
00294 H4501_PartySubaddress(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00295
00296 enum Choices {
00297 e_userSpecifiedSubaddress,
00298 e_nsapSubaddress
00299 };
00300
00301 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00302 operator H4501_UserSpecifiedSubaddress &() const;
00303 #else
00304 operator H4501_UserSpecifiedSubaddress &();
00305 operator const H4501_UserSpecifiedSubaddress &() const;
00306 #endif
00307 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00308 operator H4501_NSAPSubaddress &() const;
00309 #else
00310 operator H4501_NSAPSubaddress &();
00311 operator const H4501_NSAPSubaddress &() const;
00312 #endif
00313
00314 BOOL CreateObject();
00315 PObject * Clone() const;
00316 };
00317
00318
00319
00320
00321
00322
00323 class H4501_NSAPSubaddress : public PASN_OctetString
00324 {
00325 #ifndef PASN_LEANANDMEAN
00326 PCLASSINFO(H4501_NSAPSubaddress, PASN_OctetString);
00327 #endif
00328 public:
00329 H4501_NSAPSubaddress(unsigned tag = UniversalOctetString, TagClass tagClass = UniversalTagClass);
00330
00331 H4501_NSAPSubaddress(const char * v);
00332 H4501_NSAPSubaddress(const PString & v);
00333 H4501_NSAPSubaddress(const PBYTEArray & v);
00334
00335 H4501_NSAPSubaddress & operator=(const char * v);
00336 H4501_NSAPSubaddress & operator=(const PString & v);
00337 H4501_NSAPSubaddress & operator=(const PBYTEArray & v);
00338 PObject * Clone() const;
00339 };
00340
00341
00342
00343
00344
00345
00346 class H4501_SubaddressInformation : public PASN_OctetString
00347 {
00348 #ifndef PASN_LEANANDMEAN
00349 PCLASSINFO(H4501_SubaddressInformation, PASN_OctetString);
00350 #endif
00351 public:
00352 H4501_SubaddressInformation(unsigned tag = UniversalOctetString, TagClass tagClass = UniversalTagClass);
00353
00354 H4501_SubaddressInformation(const char * v);
00355 H4501_SubaddressInformation(const PString & v);
00356 H4501_SubaddressInformation(const PBYTEArray & v);
00357
00358 H4501_SubaddressInformation & operator=(const char * v);
00359 H4501_SubaddressInformation & operator=(const PString & v);
00360 H4501_SubaddressInformation & operator=(const PBYTEArray & v);
00361 PObject * Clone() const;
00362 };
00363
00364
00365
00366
00367
00368
00369 class H4501_ScreeningIndicator : public PASN_Enumeration
00370 {
00371 #ifndef PASN_LEANANDMEAN
00372 PCLASSINFO(H4501_ScreeningIndicator, PASN_Enumeration);
00373 #endif
00374 public:
00375 H4501_ScreeningIndicator(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00376
00377 enum Enumerations {
00378 e_userProvidedNotScreened,
00379 e_userProvidedVerifiedAndPassed,
00380 e_userProvidedVerifiedAndFailed,
00381 e_networkProvided
00382 };
00383
00384 H4501_ScreeningIndicator & operator=(unsigned v);
00385 PObject * Clone() const;
00386 };
00387
00388
00389
00390
00391
00392
00393 class H4501_PresentationAllowedIndicator : public PASN_Boolean
00394 {
00395 #ifndef PASN_LEANANDMEAN
00396 PCLASSINFO(H4501_PresentationAllowedIndicator, PASN_Boolean);
00397 #endif
00398 public:
00399 H4501_PresentationAllowedIndicator(unsigned tag = UniversalBoolean, TagClass tagClass = UniversalTagClass);
00400
00401 H4501_PresentationAllowedIndicator & operator=(BOOL v);
00402 PObject * Clone() const;
00403 };
00404
00405
00406
00407
00408
00409
00410 class H4501_GeneralErrorList : public PASN_Enumeration
00411 {
00412 #ifndef PASN_LEANANDMEAN
00413 PCLASSINFO(H4501_GeneralErrorList, PASN_Enumeration);
00414 #endif
00415 public:
00416 H4501_GeneralErrorList(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00417
00418 enum Enumerations {
00419 e_userNotSubscribed,
00420 e_rejectedByNetwork,
00421 e_rejectedByUser,
00422 e_notAvailable,
00423 e_insufficientInformation = 5,
00424 e_invalidServedUserNumber,
00425 e_invalidCallState,
00426 e_basicServiceNotProvided,
00427 e_notIncomingCall,
00428 e_supplementaryServiceInteractionNotAllowed,
00429 e_resourceUnavailable,
00430 e_callFailure = 25,
00431 e_proceduralError = 43
00432 };
00433
00434 H4501_GeneralErrorList & operator=(unsigned v);
00435 PObject * Clone() const;
00436 };
00437
00438
00439
00440
00441
00442
00443 class H4501_H225InformationElement : public PASN_OctetString
00444 {
00445 #ifndef PASN_LEANANDMEAN
00446 PCLASSINFO(H4501_H225InformationElement, PASN_OctetString);
00447 #endif
00448 public:
00449 H4501_H225InformationElement(unsigned tag = UniversalOctetString, TagClass tagClass = UniversalTagClass);
00450
00451 H4501_H225InformationElement(const char * v);
00452 H4501_H225InformationElement(const PString & v);
00453 H4501_H225InformationElement(const PBYTEArray & v);
00454
00455 H4501_H225InformationElement & operator=(const char * v);
00456 H4501_H225InformationElement & operator=(const PString & v);
00457 H4501_H225InformationElement & operator=(const PBYTEArray & v);
00458 PObject * Clone() const;
00459 };
00460
00461
00462
00463
00464
00465
00466 class H4501_Extension : public PASN_Sequence
00467 {
00468 #ifndef PASN_LEANANDMEAN
00469 PCLASSINFO(H4501_Extension, PASN_Sequence);
00470 #endif
00471 public:
00472 H4501_Extension(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00473
00474 X880_Code m_extensionId;
00475 PASN_OctetString m_extensionArgument;
00476
00477 PINDEX GetDataLength() const;
00478 BOOL Decode(PASN_Stream & strm);
00479 void Encode(PASN_Stream & strm) const;
00480 #ifndef PASN_NOPRINTON
00481 void PrintOn(ostream & strm) const;
00482 #endif
00483 Comparison Compare(const PObject & obj) const;
00484 PObject * Clone() const;
00485 };
00486
00487
00488
00489
00490
00491
00492 class X880_ROS;
00493
00494 class H4501_ArrayOf_ROS : public PASN_Array
00495 {
00496 #ifndef PASN_LEANANDMEAN
00497 PCLASSINFO(H4501_ArrayOf_ROS, PASN_Array);
00498 #endif
00499 public:
00500 H4501_ArrayOf_ROS(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00501
00502 PASN_Object * CreateObject() const;
00503 X880_ROS & operator[](PINDEX i) const;
00504 PObject * Clone() const;
00505 };
00506
00507
00508
00509
00510
00511
00512 class H225_AliasAddress;
00513
00514 class H4501_ArrayOf_AliasAddress : public PASN_Array
00515 {
00516 #ifndef PASN_LEANANDMEAN
00517 PCLASSINFO(H4501_ArrayOf_AliasAddress, PASN_Array);
00518 #endif
00519 public:
00520 H4501_ArrayOf_AliasAddress(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00521
00522 PASN_Object * CreateObject() const;
00523 H225_AliasAddress & operator[](PINDEX i) const;
00524 PObject * Clone() const;
00525 };
00526
00527
00528
00529
00530
00531
00532 class H4501_NetworkFacilityExtension : public PASN_Sequence
00533 {
00534 #ifndef PASN_LEANANDMEAN
00535 PCLASSINFO(H4501_NetworkFacilityExtension, PASN_Sequence);
00536 #endif
00537 public:
00538 H4501_NetworkFacilityExtension(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00539
00540 enum OptionalFields {
00541 e_sourceEntityAddress,
00542 e_destinationEntityAddress
00543 };
00544
00545 H4501_EntityType m_sourceEntity;
00546 H4501_AddressInformation m_sourceEntityAddress;
00547 H4501_EntityType m_destinationEntity;
00548 H4501_AddressInformation m_destinationEntityAddress;
00549
00550 PINDEX GetDataLength() const;
00551 BOOL Decode(PASN_Stream & strm);
00552 void Encode(PASN_Stream & strm) const;
00553 #ifndef PASN_NOPRINTON
00554 void PrintOn(ostream & strm) const;
00555 #endif
00556 Comparison Compare(const PObject & obj) const;
00557 PObject * Clone() const;
00558 };
00559
00560
00561
00562
00563
00564
00565 class H4501_AddressScreened : public PASN_Sequence
00566 {
00567 #ifndef PASN_LEANANDMEAN
00568 PCLASSINFO(H4501_AddressScreened, PASN_Sequence);
00569 #endif
00570 public:
00571 H4501_AddressScreened(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00572
00573 enum OptionalFields {
00574 e_partySubaddress
00575 };
00576
00577 H225_PartyNumber m_partyNumber;
00578 H4501_ScreeningIndicator m_screeningIndicator;
00579 H4501_PartySubaddress m_partySubaddress;
00580
00581 PINDEX GetDataLength() const;
00582 BOOL Decode(PASN_Stream & strm);
00583 void Encode(PASN_Stream & strm) const;
00584 #ifndef PASN_NOPRINTON
00585 void PrintOn(ostream & strm) const;
00586 #endif
00587 Comparison Compare(const PObject & obj) const;
00588 PObject * Clone() const;
00589 };
00590
00591
00592
00593
00594
00595
00596 class H4501_NumberScreened : public PASN_Sequence
00597 {
00598 #ifndef PASN_LEANANDMEAN
00599 PCLASSINFO(H4501_NumberScreened, PASN_Sequence);
00600 #endif
00601 public:
00602 H4501_NumberScreened(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00603
00604 H225_PartyNumber m_partyNumber;
00605 H4501_ScreeningIndicator m_screeningIndicator;
00606
00607 PINDEX GetDataLength() const;
00608 BOOL Decode(PASN_Stream & strm);
00609 void Encode(PASN_Stream & strm) const;
00610 #ifndef PASN_NOPRINTON
00611 void PrintOn(ostream & strm) const;
00612 #endif
00613 Comparison Compare(const PObject & obj) const;
00614 PObject * Clone() const;
00615 };
00616
00617
00618
00619
00620
00621
00622 class H4501_Address : public PASN_Sequence
00623 {
00624 #ifndef PASN_LEANANDMEAN
00625 PCLASSINFO(H4501_Address, PASN_Sequence);
00626 #endif
00627 public:
00628 H4501_Address(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00629
00630 enum OptionalFields {
00631 e_partySubaddress
00632 };
00633
00634 H225_PartyNumber m_partyNumber;
00635 H4501_PartySubaddress m_partySubaddress;
00636
00637 PINDEX GetDataLength() const;
00638 BOOL Decode(PASN_Stream & strm);
00639 void Encode(PASN_Stream & strm) const;
00640 #ifndef PASN_NOPRINTON
00641 void PrintOn(ostream & strm) const;
00642 #endif
00643 Comparison Compare(const PObject & obj) const;
00644 PObject * Clone() const;
00645 };
00646
00647
00648
00649
00650
00651
00652 class H4501_EndpointAddress : public PASN_Sequence
00653 {
00654 #ifndef PASN_LEANANDMEAN
00655 PCLASSINFO(H4501_EndpointAddress, PASN_Sequence);
00656 #endif
00657 public:
00658 H4501_EndpointAddress(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00659
00660 enum OptionalFields {
00661 e_remoteExtensionAddress
00662 };
00663
00664 H4501_ArrayOf_AliasAddress m_destinationAddress;
00665 H225_AliasAddress m_remoteExtensionAddress;
00666
00667 PINDEX GetDataLength() const;
00668 BOOL Decode(PASN_Stream & strm);
00669 void Encode(PASN_Stream & strm) const;
00670 #ifndef PASN_NOPRINTON
00671 void PrintOn(ostream & strm) const;
00672 #endif
00673 Comparison Compare(const PObject & obj) const;
00674 PObject * Clone() const;
00675 };
00676
00677
00678
00679
00680
00681
00682 class H4501_UserSpecifiedSubaddress : public PASN_Sequence
00683 {
00684 #ifndef PASN_LEANANDMEAN
00685 PCLASSINFO(H4501_UserSpecifiedSubaddress, PASN_Sequence);
00686 #endif
00687 public:
00688 H4501_UserSpecifiedSubaddress(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00689
00690 enum OptionalFields {
00691 e_oddCountIndicator
00692 };
00693
00694 H4501_SubaddressInformation m_subaddressInformation;
00695 PASN_Boolean m_oddCountIndicator;
00696
00697 PINDEX GetDataLength() const;
00698 BOOL Decode(PASN_Stream & strm);
00699 void Encode(PASN_Stream & strm) const;
00700 #ifndef PASN_NOPRINTON
00701 void PrintOn(ostream & strm) const;
00702 #endif
00703 Comparison Compare(const PObject & obj) const;
00704 PObject * Clone() const;
00705 };
00706
00707
00708
00709
00710
00711
00712 class H4501_SupplementaryService : public PASN_Sequence
00713 {
00714 #ifndef PASN_LEANANDMEAN
00715 PCLASSINFO(H4501_SupplementaryService, PASN_Sequence);
00716 #endif
00717 public:
00718 H4501_SupplementaryService(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00719
00720 enum OptionalFields {
00721 e_networkFacilityExtension,
00722 e_interpretationApdu
00723 };
00724
00725 H4501_NetworkFacilityExtension m_networkFacilityExtension;
00726 H4501_InterpretationApdu m_interpretationApdu;
00727 H4501_ServiceApdus m_serviceApdu;
00728
00729 PINDEX GetDataLength() const;
00730 BOOL Decode(PASN_Stream & strm);
00731 void Encode(PASN_Stream & strm) const;
00732 #ifndef PASN_NOPRINTON
00733 void PrintOn(ostream & strm) const;
00734 #endif
00735 Comparison Compare(const PObject & obj) const;
00736 PObject * Clone() const;
00737 };
00738
00739
00740 #endif // __H4501_H
00741
00742 #endif // if ! H323_DISABLE_H4501
00743
00744
00745