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