aboutsummaryrefslogtreecommitdiffstats
path: root/addons/ooh323c/src/h323
diff options
context:
space:
mode:
Diffstat (limited to 'addons/ooh323c/src/h323')
-rw-r--r--addons/ooh323c/src/h323/H235-SECURITY-MESSAGES.h690
-rw-r--r--addons/ooh323c/src/h323/H235-SECURITY-MESSAGESDec.c1782
-rw-r--r--addons/ooh323c/src/h323/H235-SECURITY-MESSAGESEnc.c1269
-rw-r--r--addons/ooh323c/src/h323/H323-MESSAGES.c112
-rw-r--r--addons/ooh323c/src/h323/H323-MESSAGES.h6510
-rw-r--r--addons/ooh323c/src/h323/H323-MESSAGESDec.c27199
-rw-r--r--addons/ooh323c/src/h323/H323-MESSAGESEnc.c22596
-rw-r--r--addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROL.c40
-rw-r--r--addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROL.h10937
-rw-r--r--addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLDec.c42170
-rw-r--r--addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c26599
11 files changed, 139904 insertions, 0 deletions
diff --git a/addons/ooh323c/src/h323/H235-SECURITY-MESSAGES.h b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGES.h
new file mode 100644
index 000000000..2f401b39a
--- /dev/null
+++ b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGES.h
@@ -0,0 +1,690 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#ifndef H235_SECURITY_MESSAGES_H
+#define H235_SECURITY_MESSAGES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "ooasn1.h"
+
+/**************************************************************/
+/* */
+/* ChallengeString */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ChallengeString {
+ ASN1UINT numocts;
+ ASN1OCTET data[128];
+} H235ChallengeString;
+
+EXTERN int asn1PE_H235ChallengeString (OOCTXT* pctxt, H235ChallengeString* pvalue);
+
+EXTERN int asn1PD_H235ChallengeString (OOCTXT* pctxt, H235ChallengeString* pvalue);
+
+/**************************************************************/
+/* */
+/* TimeStamp */
+/* */
+/**************************************************************/
+
+typedef ASN1UINT H235TimeStamp;
+
+EXTERN int asn1PE_H235TimeStamp (OOCTXT* pctxt, H235TimeStamp value);
+
+EXTERN int asn1PD_H235TimeStamp (OOCTXT* pctxt, H235TimeStamp* pvalue);
+
+/**************************************************************/
+/* */
+/* RandomVal */
+/* */
+/**************************************************************/
+
+typedef ASN1INT H235RandomVal;
+
+EXTERN int asn1PE_H235RandomVal (OOCTXT* pctxt, H235RandomVal value);
+
+EXTERN int asn1PD_H235RandomVal (OOCTXT* pctxt, H235RandomVal* pvalue);
+
+/**************************************************************/
+/* */
+/* Password */
+/* */
+/**************************************************************/
+
+typedef ASN1BMPString H235Password;
+
+EXTERN int asn1PE_H235Password (OOCTXT* pctxt, H235Password value);
+
+EXTERN int asn1PD_H235Password (OOCTXT* pctxt, H235Password* pvalue);
+
+/**************************************************************/
+/* */
+/* EncodedPwdCertToken */
+/* */
+/**************************************************************/
+
+typedef ASN1OpenType H235EncodedPwdCertToken;
+
+EXTERN int asn1PE_H235EncodedPwdCertToken (OOCTXT* pctxt, H235EncodedPwdCertToken value);
+
+EXTERN int asn1PD_H235EncodedPwdCertToken (OOCTXT* pctxt, H235EncodedPwdCertToken* pvalue);
+
+/**************************************************************/
+/* */
+/* NonStandardParameter */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235NonStandardParameter {
+ ASN1OBJID nonStandardIdentifier;
+ ASN1DynOctStr data;
+} H235NonStandardParameter;
+
+EXTERN int asn1PE_H235NonStandardParameter (OOCTXT* pctxt, H235NonStandardParameter* pvalue);
+
+EXTERN int asn1PD_H235NonStandardParameter (OOCTXT* pctxt, H235NonStandardParameter* pvalue);
+
+/**************************************************************/
+/* */
+/* AuthenticationBES */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H235AuthenticationBES_default_ 1
+#define T_H235AuthenticationBES_radius 2
+#define T_H235AuthenticationBES_extElem1 3
+
+typedef struct EXTERN H235AuthenticationBES {
+ int t;
+} H235AuthenticationBES;
+
+EXTERN int asn1PE_H235AuthenticationBES (OOCTXT* pctxt, H235AuthenticationBES* pvalue);
+
+EXTERN int asn1PD_H235AuthenticationBES (OOCTXT* pctxt, H235AuthenticationBES* pvalue);
+
+/**************************************************************/
+/* */
+/* AuthenticationMechanism */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H235AuthenticationMechanism_dhExch 1
+#define T_H235AuthenticationMechanism_pwdSymEnc 2
+#define T_H235AuthenticationMechanism_pwdHash 3
+#define T_H235AuthenticationMechanism_certSign 4
+#define T_H235AuthenticationMechanism_ipsec 5
+#define T_H235AuthenticationMechanism_tls 6
+#define T_H235AuthenticationMechanism_nonStandard 7
+#define T_H235AuthenticationMechanism_authenticationBES 8
+#define T_H235AuthenticationMechanism_extElem1 9
+
+typedef struct EXTERN H235AuthenticationMechanism {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ H235NonStandardParameter *nonStandard;
+ /* t = 8 */
+ H235AuthenticationBES *authenticationBES;
+ /* t = 9 */
+ } u;
+} H235AuthenticationMechanism;
+
+EXTERN int asn1PE_H235AuthenticationMechanism (OOCTXT* pctxt, H235AuthenticationMechanism* pvalue);
+
+EXTERN int asn1PD_H235AuthenticationMechanism (OOCTXT* pctxt, H235AuthenticationMechanism* pvalue);
+
+/**************************************************************/
+/* */
+/* DHset_halfkey */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235DHset_halfkey {
+ ASN1UINT numbits;
+ ASN1OCTET data[256];
+} H235DHset_halfkey;
+
+EXTERN int asn1PE_H235DHset_halfkey (OOCTXT* pctxt, H235DHset_halfkey* pvalue);
+
+EXTERN int asn1PD_H235DHset_halfkey (OOCTXT* pctxt, H235DHset_halfkey* pvalue);
+
+/**************************************************************/
+/* */
+/* DHset_modSize */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235DHset_modSize {
+ ASN1UINT numbits;
+ ASN1OCTET data[256];
+} H235DHset_modSize;
+
+EXTERN int asn1PE_H235DHset_modSize (OOCTXT* pctxt, H235DHset_modSize* pvalue);
+
+EXTERN int asn1PD_H235DHset_modSize (OOCTXT* pctxt, H235DHset_modSize* pvalue);
+
+/**************************************************************/
+/* */
+/* DHset_generator */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235DHset_generator {
+ ASN1UINT numbits;
+ ASN1OCTET data[256];
+} H235DHset_generator;
+
+EXTERN int asn1PE_H235DHset_generator (OOCTXT* pctxt, H235DHset_generator* pvalue);
+
+EXTERN int asn1PD_H235DHset_generator (OOCTXT* pctxt, H235DHset_generator* pvalue);
+
+/**************************************************************/
+/* */
+/* DHset */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235DHset {
+ H235DHset_halfkey halfkey;
+ H235DHset_modSize modSize;
+ H235DHset_generator generator;
+} H235DHset;
+
+EXTERN int asn1PE_H235DHset (OOCTXT* pctxt, H235DHset* pvalue);
+
+EXTERN int asn1PD_H235DHset (OOCTXT* pctxt, H235DHset* pvalue);
+
+/**************************************************************/
+/* */
+/* TypedCertificate */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235TypedCertificate {
+ ASN1OBJID type;
+ ASN1DynOctStr certificate;
+} H235TypedCertificate;
+
+EXTERN int asn1PE_H235TypedCertificate (OOCTXT* pctxt, H235TypedCertificate* pvalue);
+
+EXTERN int asn1PD_H235TypedCertificate (OOCTXT* pctxt, H235TypedCertificate* pvalue);
+
+/**************************************************************/
+/* */
+/* Identifier */
+/* */
+/**************************************************************/
+
+typedef ASN1BMPString H235Identifier;
+
+EXTERN int asn1PE_H235Identifier (OOCTXT* pctxt, H235Identifier value);
+
+EXTERN int asn1PD_H235Identifier (OOCTXT* pctxt, H235Identifier* pvalue);
+
+/**************************************************************/
+/* */
+/* ECpoint_x */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECpoint_x {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECpoint_x;
+
+EXTERN int asn1PE_H235ECpoint_x (OOCTXT* pctxt, H235ECpoint_x* pvalue);
+
+EXTERN int asn1PD_H235ECpoint_x (OOCTXT* pctxt, H235ECpoint_x* pvalue);
+
+/**************************************************************/
+/* */
+/* ECpoint_y */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECpoint_y {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECpoint_y;
+
+EXTERN int asn1PE_H235ECpoint_y (OOCTXT* pctxt, H235ECpoint_y* pvalue);
+
+EXTERN int asn1PD_H235ECpoint_y (OOCTXT* pctxt, H235ECpoint_y* pvalue);
+
+/**************************************************************/
+/* */
+/* ECpoint */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECpoint {
+ struct {
+ unsigned xPresent : 1;
+ unsigned yPresent : 1;
+ } m;
+ H235ECpoint_x x;
+ H235ECpoint_y y;
+} H235ECpoint;
+
+EXTERN int asn1PE_H235ECpoint (OOCTXT* pctxt, H235ECpoint* pvalue);
+
+EXTERN int asn1PD_H235ECpoint (OOCTXT* pctxt, H235ECpoint* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_modulus */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdhp_modulus {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECKASDH_eckasdhp_modulus;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp_modulus (OOCTXT* pctxt, H235ECKASDH_eckasdhp_modulus* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp_modulus (OOCTXT* pctxt, H235ECKASDH_eckasdhp_modulus* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_weierstrassA */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdhp_weierstrassA {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECKASDH_eckasdhp_weierstrassA;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassA* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassA* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_weierstrassB */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdhp_weierstrassB {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECKASDH_eckasdhp_weierstrassB;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassB* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassB* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdhp {
+ H235ECpoint public_key;
+ H235ECKASDH_eckasdhp_modulus modulus;
+ H235ECpoint base;
+ H235ECKASDH_eckasdhp_weierstrassA weierstrassA;
+ H235ECKASDH_eckasdhp_weierstrassB weierstrassB;
+} H235ECKASDH_eckasdhp;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp (OOCTXT* pctxt, H235ECKASDH_eckasdhp* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp (OOCTXT* pctxt, H235ECKASDH_eckasdhp* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_fieldSize */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdh2_fieldSize {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECKASDH_eckasdh2_fieldSize;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2_fieldSize (OOCTXT* pctxt, H235ECKASDH_eckasdh2_fieldSize* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2_fieldSize (OOCTXT* pctxt, H235ECKASDH_eckasdh2_fieldSize* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_weierstrassA */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdh2_weierstrassA {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECKASDH_eckasdh2_weierstrassA;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassA* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassA* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_weierstrassB */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdh2_weierstrassB {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECKASDH_eckasdh2_weierstrassB;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassB* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassB* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdh2 {
+ H235ECpoint public_key;
+ H235ECKASDH_eckasdh2_fieldSize fieldSize;
+ H235ECpoint base;
+ H235ECKASDH_eckasdh2_weierstrassA weierstrassA;
+ H235ECKASDH_eckasdh2_weierstrassB weierstrassB;
+} H235ECKASDH_eckasdh2;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2 (OOCTXT* pctxt, H235ECKASDH_eckasdh2* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2 (OOCTXT* pctxt, H235ECKASDH_eckasdh2* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H235ECKASDH_eckasdhp 1
+#define T_H235ECKASDH_eckasdh2 2
+#define T_H235ECKASDH_extElem1 3
+
+typedef struct EXTERN H235ECKASDH {
+ int t;
+ union {
+ /* t = 1 */
+ H235ECKASDH_eckasdhp *eckasdhp;
+ /* t = 2 */
+ H235ECKASDH_eckasdh2 *eckasdh2;
+ /* t = 3 */
+ } u;
+} H235ECKASDH;
+
+EXTERN int asn1PE_H235ECKASDH (OOCTXT* pctxt, H235ECKASDH* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH (OOCTXT* pctxt, H235ECKASDH* pvalue);
+
+/**************************************************************/
+/* */
+/* ClearToken */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ClearToken {
+ struct {
+ unsigned timeStampPresent : 1;
+ unsigned passwordPresent : 1;
+ unsigned dhkeyPresent : 1;
+ unsigned challengePresent : 1;
+ unsigned randomPresent : 1;
+ unsigned certificatePresent : 1;
+ unsigned generalIDPresent : 1;
+ unsigned nonStandardPresent : 1;
+ unsigned eckasdhkeyPresent : 1;
+ unsigned sendersIDPresent : 1;
+ } m;
+ ASN1OBJID tokenOID;
+ H235TimeStamp timeStamp;
+ H235Password password;
+ H235DHset dhkey;
+ H235ChallengeString challenge;
+ H235RandomVal random;
+ H235TypedCertificate certificate;
+ H235Identifier generalID;
+ H235NonStandardParameter nonStandard;
+ H235ECKASDH eckasdhkey;
+ H235Identifier sendersID;
+} H235ClearToken;
+
+EXTERN int asn1PE_H235ClearToken (OOCTXT* pctxt, H235ClearToken* pvalue);
+
+EXTERN int asn1PD_H235ClearToken (OOCTXT* pctxt, H235ClearToken* pvalue);
+
+/**************************************************************/
+/* */
+/* IV8 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235IV8 {
+ ASN1UINT numocts;
+ ASN1OCTET data[8];
+} H235IV8;
+
+EXTERN int asn1PE_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue);
+
+EXTERN int asn1PD_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue);
+
+/**************************************************************/
+/* */
+/* IV16 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235IV16 {
+ ASN1UINT numocts;
+ ASN1OCTET data[16];
+} H235IV16;
+
+EXTERN int asn1PE_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue);
+
+EXTERN int asn1PD_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue);
+
+/**************************************************************/
+/* */
+/* Params */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235Params {
+ struct {
+ unsigned ranIntPresent : 1;
+ unsigned iv8Present : 1;
+ unsigned iv16Present : 1;
+ } m;
+ ASN1INT ranInt;
+ H235IV8 iv8;
+ H235IV16 iv16;
+} H235Params;
+
+EXTERN int asn1PE_H235Params (OOCTXT* pctxt, H235Params* pvalue);
+
+EXTERN int asn1PD_H235Params (OOCTXT* pctxt, H235Params* pvalue);
+
+/**************************************************************/
+/* */
+/* ENCRYPTED */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ENCRYPTED {
+ ASN1OBJID algorithmOID;
+ H235Params paramS;
+ ASN1DynOctStr encryptedData;
+} H235ENCRYPTED;
+
+EXTERN int asn1PE_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue);
+
+EXTERN int asn1PD_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoEncryptedToken */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235CryptoToken_cryptoEncryptedToken {
+ ASN1OBJID tokenOID;
+ H235ENCRYPTED token;
+} H235CryptoToken_cryptoEncryptedToken;
+
+EXTERN int asn1PE_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue);
+
+EXTERN int asn1PD_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue);
+
+/**************************************************************/
+/* */
+/* EncodedGeneralToken */
+/* */
+/**************************************************************/
+
+typedef ASN1OpenType H235EncodedGeneralToken;
+
+EXTERN int asn1PE_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken value);
+
+EXTERN int asn1PD_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoSignedToken_token */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235CryptoToken_cryptoSignedToken_token {
+ H235EncodedGeneralToken toBeSigned;
+ ASN1OBJID algorithmOID;
+ H235Params paramS;
+ ASN1DynBitStr signature;
+} H235CryptoToken_cryptoSignedToken_token;
+
+EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue);
+
+EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoSignedToken */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235CryptoToken_cryptoSignedToken {
+ ASN1OBJID tokenOID;
+ H235CryptoToken_cryptoSignedToken_token token;
+} H235CryptoToken_cryptoSignedToken;
+
+EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue);
+
+EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue);
+
+/**************************************************************/
+/* */
+/* HASHED */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235HASHED {
+ ASN1OBJID algorithmOID;
+ H235Params paramS;
+ ASN1DynBitStr hash;
+} H235HASHED;
+
+EXTERN int asn1PE_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue);
+
+EXTERN int asn1PD_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoHashedToken */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235CryptoToken_cryptoHashedToken {
+ ASN1OBJID tokenOID;
+ H235ClearToken hashedVals;
+ H235HASHED token;
+} H235CryptoToken_cryptoHashedToken;
+
+EXTERN int asn1PE_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue);
+
+EXTERN int asn1PD_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoToken */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H235CryptoToken_cryptoEncryptedToken 1
+#define T_H235CryptoToken_cryptoSignedToken 2
+#define T_H235CryptoToken_cryptoHashedToken 3
+#define T_H235CryptoToken_cryptoPwdEncr 4
+#define T_H235CryptoToken_extElem1 5
+
+typedef struct EXTERN H235CryptoToken {
+ int t;
+ union {
+ /* t = 1 */
+ H235CryptoToken_cryptoEncryptedToken *cryptoEncryptedToken;
+ /* t = 2 */
+ H235CryptoToken_cryptoSignedToken *cryptoSignedToken;
+ /* t = 3 */
+ H235CryptoToken_cryptoHashedToken *cryptoHashedToken;
+ /* t = 4 */
+ H235ENCRYPTED *cryptoPwdEncr;
+ /* t = 5 */
+ } u;
+} H235CryptoToken;
+
+EXTERN int asn1PE_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue);
+
+EXTERN int asn1PD_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESDec.c b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESDec.c
new file mode 100644
index 000000000..897bf0eec
--- /dev/null
+++ b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESDec.c
@@ -0,0 +1,1782 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#include "ooasn1.h"
+#include "H235-SECURITY-MESSAGES.h"
+#include "eventHandler.h"
+
+/**************************************************************/
+/* */
+/* ChallengeString */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ChallengeString (OOCTXT* pctxt, H235ChallengeString* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 8, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TimeStamp */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235TimeStamp (OOCTXT* pctxt, H235TimeStamp* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUnsigned (pctxt, pvalue, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RandomVal */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235RandomVal (OOCTXT* pctxt, H235RandomVal* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeUnconsInteger (pctxt, pvalue);
+ if (stat != ASN_OK) return stat;
+ invokeIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Password */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235Password (OOCTXT* pctxt, H235Password* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBMPString (pctxt, pvalue, 0);
+ if (stat != ASN_OK) return stat;
+ invokeCharStr16BitValue (pctxt, pvalue->nchars, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncodedPwdCertToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235EncodedPwdCertToken (OOCTXT* pctxt, H235EncodedPwdCertToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeOpenType (pctxt, &pvalue->data, &pvalue->numocts);
+ if (stat != ASN_OK) return stat;
+ invokeOpenTypeValue
+ (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235NonStandardParameter (OOCTXT* pctxt, H235NonStandardParameter* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode nonStandardIdentifier */
+
+ invokeStartElement (pctxt, "nonStandardIdentifier", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->nonStandardIdentifier);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->nonStandardIdentifier.numids, pvalue->nonStandardIdentifier.subid);
+
+ invokeEndElement (pctxt, "nonStandardIdentifier", -1);
+
+ /* decode data */
+
+ invokeStartElement (pctxt, "data", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->data);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->data.numocts, pvalue->data.data);
+
+ invokeEndElement (pctxt, "data", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AuthenticationBES */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235AuthenticationBES (OOCTXT* pctxt, H235AuthenticationBES* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* default_ */
+ case 0:
+ invokeStartElement (pctxt, "default_", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "default_", -1);
+
+ break;
+
+ /* radius */
+ case 1:
+ invokeStartElement (pctxt, "radius", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "radius", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AuthenticationMechanism */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235AuthenticationMechanism (OOCTXT* pctxt, H235AuthenticationMechanism* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 6);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* dhExch */
+ case 0:
+ invokeStartElement (pctxt, "dhExch", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "dhExch", -1);
+
+ break;
+
+ /* pwdSymEnc */
+ case 1:
+ invokeStartElement (pctxt, "pwdSymEnc", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "pwdSymEnc", -1);
+
+ break;
+
+ /* pwdHash */
+ case 2:
+ invokeStartElement (pctxt, "pwdHash", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "pwdHash", -1);
+
+ break;
+
+ /* certSign */
+ case 3:
+ invokeStartElement (pctxt, "certSign", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "certSign", -1);
+
+ break;
+
+ /* ipsec */
+ case 4:
+ invokeStartElement (pctxt, "ipsec", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "ipsec", -1);
+
+ break;
+
+ /* tls */
+ case 5:
+ invokeStartElement (pctxt, "tls", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "tls", -1);
+
+ break;
+
+ /* nonStandard */
+ case 6:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H235NonStandardParameter);
+
+ stat = asn1PD_H235NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 8;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* authenticationBES */
+ case 8:
+ invokeStartElement (pctxt, "authenticationBES", -1);
+
+ pvalue->u.authenticationBES = ALLOC_ASN1ELEM (pctxt, H235AuthenticationBES);
+
+ stat = asn1PD_H235AuthenticationBES (pctxt, pvalue->u.authenticationBES);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "authenticationBES", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset_halfkey */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235DHset_halfkey (OOCTXT* pctxt, H235DHset_halfkey* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset_modSize */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235DHset_modSize (OOCTXT* pctxt, H235DHset_modSize* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset_generator */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235DHset_generator (OOCTXT* pctxt, H235DHset_generator* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235DHset (OOCTXT* pctxt, H235DHset* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode halfkey */
+
+ invokeStartElement (pctxt, "halfkey", -1);
+
+ stat = asn1PD_H235DHset_halfkey (pctxt, &pvalue->halfkey);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "halfkey", -1);
+
+ /* decode modSize */
+
+ invokeStartElement (pctxt, "modSize", -1);
+
+ stat = asn1PD_H235DHset_modSize (pctxt, &pvalue->modSize);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "modSize", -1);
+
+ /* decode generator */
+
+ invokeStartElement (pctxt, "generator", -1);
+
+ stat = asn1PD_H235DHset_generator (pctxt, &pvalue->generator);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "generator", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TypedCertificate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235TypedCertificate (OOCTXT* pctxt, H235TypedCertificate* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode type */
+
+ invokeStartElement (pctxt, "type", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->type.numids, pvalue->type.subid);
+
+ invokeEndElement (pctxt, "type", -1);
+
+ /* decode certificate */
+
+ invokeStartElement (pctxt, "certificate", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->certificate);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->certificate.numocts, pvalue->certificate.data);
+
+ invokeEndElement (pctxt, "certificate", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Identifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235Identifier (OOCTXT* pctxt, H235Identifier* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBMPString (pctxt, pvalue, 0);
+ if (stat != ASN_OK) return stat;
+ invokeCharStr16BitValue (pctxt, pvalue->nchars, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECpoint_x */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECpoint_x (OOCTXT* pctxt, H235ECpoint_x* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECpoint_y */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECpoint_y (OOCTXT* pctxt, H235ECpoint_y* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECpoint */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECpoint (OOCTXT* pctxt, H235ECpoint* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.xPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.yPresent = optbit;
+
+ /* decode x */
+
+ if (pvalue->m.xPresent) {
+ invokeStartElement (pctxt, "x", -1);
+
+ stat = asn1PD_H235ECpoint_x (pctxt, &pvalue->x);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "x", -1);
+ }
+
+ /* decode y */
+
+ if (pvalue->m.yPresent) {
+ invokeStartElement (pctxt, "y", -1);
+
+ stat = asn1PD_H235ECpoint_y (pctxt, &pvalue->y);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "y", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_modulus */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp_modulus (OOCTXT* pctxt, H235ECKASDH_eckasdhp_modulus* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_weierstrassA */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassA* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_weierstrassB */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassB* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp (OOCTXT* pctxt, H235ECKASDH_eckasdhp* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode public_key */
+
+ invokeStartElement (pctxt, "public_key", -1);
+
+ stat = asn1PD_H235ECpoint (pctxt, &pvalue->public_key);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "public_key", -1);
+
+ /* decode modulus */
+
+ invokeStartElement (pctxt, "modulus", -1);
+
+ stat = asn1PD_H235ECKASDH_eckasdhp_modulus (pctxt, &pvalue->modulus);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "modulus", -1);
+
+ /* decode base */
+
+ invokeStartElement (pctxt, "base", -1);
+
+ stat = asn1PD_H235ECpoint (pctxt, &pvalue->base);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "base", -1);
+
+ /* decode weierstrassA */
+
+ invokeStartElement (pctxt, "weierstrassA", -1);
+
+ stat = asn1PD_H235ECKASDH_eckasdhp_weierstrassA (pctxt, &pvalue->weierstrassA);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "weierstrassA", -1);
+
+ /* decode weierstrassB */
+
+ invokeStartElement (pctxt, "weierstrassB", -1);
+
+ stat = asn1PD_H235ECKASDH_eckasdhp_weierstrassB (pctxt, &pvalue->weierstrassB);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "weierstrassB", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_fieldSize */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2_fieldSize (OOCTXT* pctxt, H235ECKASDH_eckasdh2_fieldSize* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_weierstrassA */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassA* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_weierstrassB */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassB* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2 (OOCTXT* pctxt, H235ECKASDH_eckasdh2* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode public_key */
+
+ invokeStartElement (pctxt, "public_key", -1);
+
+ stat = asn1PD_H235ECpoint (pctxt, &pvalue->public_key);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "public_key", -1);
+
+ /* decode fieldSize */
+
+ invokeStartElement (pctxt, "fieldSize", -1);
+
+ stat = asn1PD_H235ECKASDH_eckasdh2_fieldSize (pctxt, &pvalue->fieldSize);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "fieldSize", -1);
+
+ /* decode base */
+
+ invokeStartElement (pctxt, "base", -1);
+
+ stat = asn1PD_H235ECpoint (pctxt, &pvalue->base);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "base", -1);
+
+ /* decode weierstrassA */
+
+ invokeStartElement (pctxt, "weierstrassA", -1);
+
+ stat = asn1PD_H235ECKASDH_eckasdh2_weierstrassA (pctxt, &pvalue->weierstrassA);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "weierstrassA", -1);
+
+ /* decode weierstrassB */
+
+ invokeStartElement (pctxt, "weierstrassB", -1);
+
+ stat = asn1PD_H235ECKASDH_eckasdh2_weierstrassB (pctxt, &pvalue->weierstrassB);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "weierstrassB", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH (OOCTXT* pctxt, H235ECKASDH* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* eckasdhp */
+ case 0:
+ invokeStartElement (pctxt, "eckasdhp", -1);
+
+ pvalue->u.eckasdhp = ALLOC_ASN1ELEM (pctxt, H235ECKASDH_eckasdhp);
+
+ stat = asn1PD_H235ECKASDH_eckasdhp (pctxt, pvalue->u.eckasdhp);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "eckasdhp", -1);
+
+ break;
+
+ /* eckasdh2 */
+ case 1:
+ invokeStartElement (pctxt, "eckasdh2", -1);
+
+ pvalue->u.eckasdh2 = ALLOC_ASN1ELEM (pctxt, H235ECKASDH_eckasdh2);
+
+ stat = asn1PD_H235ECKASDH_eckasdh2 (pctxt, pvalue->u.eckasdh2);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "eckasdh2", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ClearToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ClearToken (OOCTXT* pctxt, H235ClearToken* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.timeStampPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.passwordPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.dhkeyPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.challengePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.randomPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.certificatePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.generalIDPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardPresent = optbit;
+
+ /* decode tokenOID */
+
+ invokeStartElement (pctxt, "tokenOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid);
+
+ invokeEndElement (pctxt, "tokenOID", -1);
+
+ /* decode timeStamp */
+
+ if (pvalue->m.timeStampPresent) {
+ invokeStartElement (pctxt, "timeStamp", -1);
+
+ stat = asn1PD_H235TimeStamp (pctxt, &pvalue->timeStamp);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "timeStamp", -1);
+ }
+
+ /* decode password */
+
+ if (pvalue->m.passwordPresent) {
+ invokeStartElement (pctxt, "password", -1);
+
+ stat = asn1PD_H235Password (pctxt, &pvalue->password);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "password", -1);
+ }
+
+ /* decode dhkey */
+
+ if (pvalue->m.dhkeyPresent) {
+ invokeStartElement (pctxt, "dhkey", -1);
+
+ stat = asn1PD_H235DHset (pctxt, &pvalue->dhkey);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dhkey", -1);
+ }
+
+ /* decode challenge */
+
+ if (pvalue->m.challengePresent) {
+ invokeStartElement (pctxt, "challenge", -1);
+
+ stat = asn1PD_H235ChallengeString (pctxt, &pvalue->challenge);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "challenge", -1);
+ }
+
+ /* decode random */
+
+ if (pvalue->m.randomPresent) {
+ invokeStartElement (pctxt, "random", -1);
+
+ stat = asn1PD_H235RandomVal (pctxt, &pvalue->random);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "random", -1);
+ }
+
+ /* decode certificate */
+
+ if (pvalue->m.certificatePresent) {
+ invokeStartElement (pctxt, "certificate", -1);
+
+ stat = asn1PD_H235TypedCertificate (pctxt, &pvalue->certificate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "certificate", -1);
+ }
+
+ /* decode generalID */
+
+ if (pvalue->m.generalIDPresent) {
+ invokeStartElement (pctxt, "generalID", -1);
+
+ stat = asn1PD_H235Identifier (pctxt, &pvalue->generalID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "generalID", -1);
+ }
+
+ /* decode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ stat = asn1PD_H235NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.eckasdhkeyPresent = 1;
+
+ invokeStartElement (pctxt, "eckasdhkey", -1);
+
+ stat = asn1PD_H235ECKASDH (pctxt, &pvalue->eckasdhkey);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "eckasdhkey", -1);
+ break;
+
+ case 1:
+ pvalue->m.sendersIDPresent = 1;
+
+ invokeStartElement (pctxt, "sendersID", -1);
+
+ stat = asn1PD_H235Identifier (pctxt, &pvalue->sendersID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sendersID", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IV8 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 8, 8, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IV16 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Params */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235Params (OOCTXT* pctxt, H235Params* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.ranIntPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.iv8Present = optbit;
+
+ /* decode ranInt */
+
+ if (pvalue->m.ranIntPresent) {
+ invokeStartElement (pctxt, "ranInt", -1);
+
+ stat = decodeUnconsInteger (pctxt, &pvalue->ranInt);
+ if (stat != ASN_OK) return stat;
+ invokeIntValue (pctxt, pvalue->ranInt);
+
+ invokeEndElement (pctxt, "ranInt", -1);
+ }
+
+ /* decode iv8 */
+
+ if (pvalue->m.iv8Present) {
+ invokeStartElement (pctxt, "iv8", -1);
+
+ stat = asn1PD_H235IV8 (pctxt, &pvalue->iv8);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "iv8", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.iv16Present = 1;
+
+ invokeStartElement (pctxt, "iv16", -1);
+
+ stat = asn1PD_H235IV16 (pctxt, &pvalue->iv16);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "iv16", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ENCRYPTED */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode algorithmOID */
+
+ invokeStartElement (pctxt, "algorithmOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid);
+
+ invokeEndElement (pctxt, "algorithmOID", -1);
+
+ /* decode paramS */
+
+ invokeStartElement (pctxt, "paramS", -1);
+
+ stat = asn1PD_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "paramS", -1);
+
+ /* decode encryptedData */
+
+ invokeStartElement (pctxt, "encryptedData", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->encryptedData);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->encryptedData.numocts, pvalue->encryptedData.data);
+
+ invokeEndElement (pctxt, "encryptedData", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoEncryptedToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode tokenOID */
+
+ invokeStartElement (pctxt, "tokenOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid);
+
+ invokeEndElement (pctxt, "tokenOID", -1);
+
+ /* decode token */
+
+ invokeStartElement (pctxt, "token", -1);
+
+ stat = asn1PD_H235ENCRYPTED (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "token", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncodedGeneralToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeOpenType (pctxt, &pvalue->data, &pvalue->numocts);
+ if (stat != ASN_OK) return stat;
+ invokeOpenTypeValue
+ (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoSignedToken_token */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode toBeSigned */
+
+ invokeStartElement (pctxt, "toBeSigned", -1);
+
+ stat = asn1PD_H235EncodedGeneralToken (pctxt, &pvalue->toBeSigned);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "toBeSigned", -1);
+
+ /* decode algorithmOID */
+
+ invokeStartElement (pctxt, "algorithmOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid);
+
+ invokeEndElement (pctxt, "algorithmOID", -1);
+
+ /* decode paramS */
+
+ invokeStartElement (pctxt, "paramS", -1);
+
+ stat = asn1PD_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "paramS", -1);
+
+ /* decode signature */
+
+ invokeStartElement (pctxt, "signature", -1);
+
+ stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->signature);
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->signature.numbits, pvalue->signature.data);
+
+ invokeEndElement (pctxt, "signature", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoSignedToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode tokenOID */
+
+ invokeStartElement (pctxt, "tokenOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid);
+
+ invokeEndElement (pctxt, "tokenOID", -1);
+
+ /* decode token */
+
+ invokeStartElement (pctxt, "token", -1);
+
+ stat = asn1PD_H235CryptoToken_cryptoSignedToken_token (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "token", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* HASHED */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode algorithmOID */
+
+ invokeStartElement (pctxt, "algorithmOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid);
+
+ invokeEndElement (pctxt, "algorithmOID", -1);
+
+ /* decode paramS */
+
+ invokeStartElement (pctxt, "paramS", -1);
+
+ stat = asn1PD_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "paramS", -1);
+
+ /* decode hash */
+
+ invokeStartElement (pctxt, "hash", -1);
+
+ stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->hash);
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->hash.numbits, pvalue->hash.data);
+
+ invokeEndElement (pctxt, "hash", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoHashedToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode tokenOID */
+
+ invokeStartElement (pctxt, "tokenOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid);
+
+ invokeEndElement (pctxt, "tokenOID", -1);
+
+ /* decode hashedVals */
+
+ invokeStartElement (pctxt, "hashedVals", -1);
+
+ stat = asn1PD_H235ClearToken (pctxt, &pvalue->hashedVals);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "hashedVals", -1);
+
+ /* decode token */
+
+ invokeStartElement (pctxt, "token", -1);
+
+ stat = asn1PD_H235HASHED (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "token", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* cryptoEncryptedToken */
+ case 0:
+ invokeStartElement (pctxt, "cryptoEncryptedToken", -1);
+
+ pvalue->u.cryptoEncryptedToken = ALLOC_ASN1ELEM (pctxt, H235CryptoToken_cryptoEncryptedToken);
+
+ stat = asn1PD_H235CryptoToken_cryptoEncryptedToken (pctxt, pvalue->u.cryptoEncryptedToken);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoEncryptedToken", -1);
+
+ break;
+
+ /* cryptoSignedToken */
+ case 1:
+ invokeStartElement (pctxt, "cryptoSignedToken", -1);
+
+ pvalue->u.cryptoSignedToken = ALLOC_ASN1ELEM (pctxt, H235CryptoToken_cryptoSignedToken);
+
+ stat = asn1PD_H235CryptoToken_cryptoSignedToken (pctxt, pvalue->u.cryptoSignedToken);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoSignedToken", -1);
+
+ break;
+
+ /* cryptoHashedToken */
+ case 2:
+ invokeStartElement (pctxt, "cryptoHashedToken", -1);
+
+ pvalue->u.cryptoHashedToken = ALLOC_ASN1ELEM (pctxt, H235CryptoToken_cryptoHashedToken);
+
+ stat = asn1PD_H235CryptoToken_cryptoHashedToken (pctxt, pvalue->u.cryptoHashedToken);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoHashedToken", -1);
+
+ break;
+
+ /* cryptoPwdEncr */
+ case 3:
+ invokeStartElement (pctxt, "cryptoPwdEncr", -1);
+
+ pvalue->u.cryptoPwdEncr = ALLOC_ASN1ELEM (pctxt, H235ENCRYPTED);
+
+ stat = asn1PD_H235ENCRYPTED (pctxt, pvalue->u.cryptoPwdEncr);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoPwdEncr", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
diff --git a/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESEnc.c b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESEnc.c
new file mode 100644
index 000000000..8530c5198
--- /dev/null
+++ b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESEnc.c
@@ -0,0 +1,1269 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#include "ooasn1.h"
+#include "H235-SECURITY-MESSAGES.h"
+
+/**************************************************************/
+/* */
+/* ChallengeString */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ChallengeString (OOCTXT* pctxt, H235ChallengeString* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 8, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TimeStamp */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235TimeStamp (OOCTXT* pctxt, H235TimeStamp value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConsUnsigned (pctxt, value, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RandomVal */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235RandomVal (OOCTXT* pctxt, H235RandomVal value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeUnconsInteger (pctxt, value);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Password */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235Password (OOCTXT* pctxt, H235Password value)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBMPString (pctxt, value, 0);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncodedPwdCertToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235EncodedPwdCertToken (OOCTXT* pctxt, H235EncodedPwdCertToken value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeOpenType (pctxt, value.numocts, value.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235NonStandardParameter (OOCTXT* pctxt, H235NonStandardParameter* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode nonStandardIdentifier */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->nonStandardIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode data */
+
+ stat = encodeOctetString (pctxt, pvalue->data.numocts, pvalue->data.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AuthenticationBES */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235AuthenticationBES (OOCTXT* pctxt, H235AuthenticationBES* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* default_ */
+ case 1:
+ /* NULL */
+ break;
+
+ /* radius */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AuthenticationMechanism */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235AuthenticationMechanism (OOCTXT* pctxt, H235AuthenticationMechanism* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 7);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* dhExch */
+ case 1:
+ /* NULL */
+ break;
+
+ /* pwdSymEnc */
+ case 2:
+ /* NULL */
+ break;
+
+ /* pwdHash */
+ case 3:
+ /* NULL */
+ break;
+
+ /* certSign */
+ case 4:
+ /* NULL */
+ break;
+
+ /* ipsec */
+ case 5:
+ /* NULL */
+ break;
+
+ /* tls */
+ case 6:
+ /* NULL */
+ break;
+
+ /* nonStandard */
+ case 7:
+ stat = asn1PE_H235NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 8);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* authenticationBES */
+ case 8:
+ stat = asn1PE_H235AuthenticationBES (&lctxt, pvalue->u.authenticationBES);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset_halfkey */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235DHset_halfkey (OOCTXT* pctxt, H235DHset_halfkey* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset_modSize */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235DHset_modSize (OOCTXT* pctxt, H235DHset_modSize* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset_generator */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235DHset_generator (OOCTXT* pctxt, H235DHset_generator* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235DHset (OOCTXT* pctxt, H235DHset* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode halfkey */
+
+ stat = asn1PE_H235DHset_halfkey (pctxt, &pvalue->halfkey);
+ if (stat != ASN_OK) return stat;
+
+ /* encode modSize */
+
+ stat = asn1PE_H235DHset_modSize (pctxt, &pvalue->modSize);
+ if (stat != ASN_OK) return stat;
+
+ /* encode generator */
+
+ stat = asn1PE_H235DHset_generator (pctxt, &pvalue->generator);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TypedCertificate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235TypedCertificate (OOCTXT* pctxt, H235TypedCertificate* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode type */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ /* encode certificate */
+
+ stat = encodeOctetString (pctxt, pvalue->certificate.numocts, pvalue->certificate.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Identifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235Identifier (OOCTXT* pctxt, H235Identifier value)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBMPString (pctxt, value, 0);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECpoint_x */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECpoint_x (OOCTXT* pctxt, H235ECpoint_x* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECpoint_y */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECpoint_y (OOCTXT* pctxt, H235ECpoint_y* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECpoint */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECpoint (OOCTXT* pctxt, H235ECpoint* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.xPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.yPresent);
+
+ /* encode x */
+
+ if (pvalue->m.xPresent) {
+ stat = asn1PE_H235ECpoint_x (pctxt, &pvalue->x);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode y */
+
+ if (pvalue->m.yPresent) {
+ stat = asn1PE_H235ECpoint_y (pctxt, &pvalue->y);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_modulus */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp_modulus (OOCTXT* pctxt, H235ECKASDH_eckasdhp_modulus* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_weierstrassA */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassA* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_weierstrassB */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassB* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp (OOCTXT* pctxt, H235ECKASDH_eckasdhp* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode public_key */
+
+ stat = asn1PE_H235ECpoint (pctxt, &pvalue->public_key);
+ if (stat != ASN_OK) return stat;
+
+ /* encode modulus */
+
+ stat = asn1PE_H235ECKASDH_eckasdhp_modulus (pctxt, &pvalue->modulus);
+ if (stat != ASN_OK) return stat;
+
+ /* encode base */
+
+ stat = asn1PE_H235ECpoint (pctxt, &pvalue->base);
+ if (stat != ASN_OK) return stat;
+
+ /* encode weierstrassA */
+
+ stat = asn1PE_H235ECKASDH_eckasdhp_weierstrassA (pctxt, &pvalue->weierstrassA);
+ if (stat != ASN_OK) return stat;
+
+ /* encode weierstrassB */
+
+ stat = asn1PE_H235ECKASDH_eckasdhp_weierstrassB (pctxt, &pvalue->weierstrassB);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_fieldSize */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2_fieldSize (OOCTXT* pctxt, H235ECKASDH_eckasdh2_fieldSize* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_weierstrassA */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassA* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_weierstrassB */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassB* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2 (OOCTXT* pctxt, H235ECKASDH_eckasdh2* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode public_key */
+
+ stat = asn1PE_H235ECpoint (pctxt, &pvalue->public_key);
+ if (stat != ASN_OK) return stat;
+
+ /* encode fieldSize */
+
+ stat = asn1PE_H235ECKASDH_eckasdh2_fieldSize (pctxt, &pvalue->fieldSize);
+ if (stat != ASN_OK) return stat;
+
+ /* encode base */
+
+ stat = asn1PE_H235ECpoint (pctxt, &pvalue->base);
+ if (stat != ASN_OK) return stat;
+
+ /* encode weierstrassA */
+
+ stat = asn1PE_H235ECKASDH_eckasdh2_weierstrassA (pctxt, &pvalue->weierstrassA);
+ if (stat != ASN_OK) return stat;
+
+ /* encode weierstrassB */
+
+ stat = asn1PE_H235ECKASDH_eckasdh2_weierstrassB (pctxt, &pvalue->weierstrassB);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH (OOCTXT* pctxt, H235ECKASDH* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* eckasdhp */
+ case 1:
+ stat = asn1PE_H235ECKASDH_eckasdhp (pctxt, pvalue->u.eckasdhp);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* eckasdh2 */
+ case 2:
+ stat = asn1PE_H235ECKASDH_eckasdh2 (pctxt, pvalue->u.eckasdh2);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ClearToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ClearToken (OOCTXT* pctxt, H235ClearToken* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.eckasdhkeyPresent ||
+ pvalue->m.sendersIDPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.timeStampPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.passwordPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dhkeyPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.challengePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.randomPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.certificatePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.generalIDPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent);
+
+ /* encode tokenOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode timeStamp */
+
+ if (pvalue->m.timeStampPresent) {
+ stat = asn1PE_H235TimeStamp (pctxt, pvalue->timeStamp);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode password */
+
+ if (pvalue->m.passwordPresent) {
+ stat = asn1PE_H235Password (pctxt, pvalue->password);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode dhkey */
+
+ if (pvalue->m.dhkeyPresent) {
+ stat = asn1PE_H235DHset (pctxt, &pvalue->dhkey);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode challenge */
+
+ if (pvalue->m.challengePresent) {
+ stat = asn1PE_H235ChallengeString (pctxt, &pvalue->challenge);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode random */
+
+ if (pvalue->m.randomPresent) {
+ stat = asn1PE_H235RandomVal (pctxt, pvalue->random);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode certificate */
+
+ if (pvalue->m.certificatePresent) {
+ stat = asn1PE_H235TypedCertificate (pctxt, &pvalue->certificate);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode generalID */
+
+ if (pvalue->m.generalIDPresent) {
+ stat = asn1PE_H235Identifier (pctxt, pvalue->generalID);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ stat = asn1PE_H235NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.eckasdhkeyPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sendersIDPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.eckasdhkeyPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H235ECKASDH (&lctxt, &pvalue->eckasdhkey);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.sendersIDPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H235Identifier (&lctxt, pvalue->sendersID);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IV8 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 8, 8, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IV16 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Params */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235Params (OOCTXT* pctxt, H235Params* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.iv16Present);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.ranIntPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.iv8Present);
+
+ /* encode ranInt */
+
+ if (pvalue->m.ranIntPresent) {
+ stat = encodeUnconsInteger (pctxt, pvalue->ranInt);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode iv8 */
+
+ if (pvalue->m.iv8Present) {
+ stat = asn1PE_H235IV8 (pctxt, &pvalue->iv8);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.iv16Present);
+ /* encode extension elements */
+
+ if (pvalue->m.iv16Present) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H235IV16 (&lctxt, &pvalue->iv16);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ENCRYPTED */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode algorithmOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode paramS */
+
+ stat = asn1PE_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ /* encode encryptedData */
+
+ stat = encodeOctetString (pctxt, pvalue->encryptedData.numocts, pvalue->encryptedData.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoEncryptedToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode tokenOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode token */
+
+ stat = asn1PE_H235ENCRYPTED (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncodedGeneralToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeOpenType (pctxt, value.numocts, value.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoSignedToken_token */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode toBeSigned */
+
+ stat = asn1PE_H235EncodedGeneralToken (pctxt, pvalue->toBeSigned);
+ if (stat != ASN_OK) return stat;
+
+ /* encode algorithmOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode paramS */
+
+ stat = asn1PE_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ /* encode signature */
+
+ stat = encodeBitString (pctxt, pvalue->signature.numbits, pvalue->signature.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoSignedToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode tokenOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode token */
+
+ stat = asn1PE_H235CryptoToken_cryptoSignedToken_token (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* HASHED */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode algorithmOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode paramS */
+
+ stat = asn1PE_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ /* encode hash */
+
+ stat = encodeBitString (pctxt, pvalue->hash.numbits, pvalue->hash.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoHashedToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode tokenOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode hashedVals */
+
+ stat = asn1PE_H235ClearToken (pctxt, &pvalue->hashedVals);
+ if (stat != ASN_OK) return stat;
+
+ /* encode token */
+
+ stat = asn1PE_H235HASHED (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* cryptoEncryptedToken */
+ case 1:
+ stat = asn1PE_H235CryptoToken_cryptoEncryptedToken (pctxt, pvalue->u.cryptoEncryptedToken);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cryptoSignedToken */
+ case 2:
+ stat = asn1PE_H235CryptoToken_cryptoSignedToken (pctxt, pvalue->u.cryptoSignedToken);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cryptoHashedToken */
+ case 3:
+ stat = asn1PE_H235CryptoToken_cryptoHashedToken (pctxt, pvalue->u.cryptoHashedToken);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cryptoPwdEncr */
+ case 4:
+ stat = asn1PE_H235ENCRYPTED (pctxt, pvalue->u.cryptoPwdEncr);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
diff --git a/addons/ooh323c/src/h323/H323-MESSAGES.c b/addons/ooh323c/src/h323/H323-MESSAGES.c
new file mode 100644
index 000000000..2c27f3b93
--- /dev/null
+++ b/addons/ooh323c/src/h323/H323-MESSAGES.c
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#include "ooasn1.h"
+#include "H323-MESSAGES.h"
+
+/**************************************************************/
+/* */
+/* NumberDigits */
+/* */
+/**************************************************************/
+
+EXTERN const char* gs_H323_MESSAGES_NumberDigits_CharSet =
+"#*,0123456789";
+
+/**************************************************************/
+/* */
+/* TBCD_STRING */
+/* */
+/**************************************************************/
+
+EXTERN const char* gs_H323_MESSAGES_TBCD_STRING_CharSet =
+"#*0123456789abc";
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_system_id */
+/* */
+/**************************************************************/
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_system_id_sid_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_system_id_mid_CharSet =
+"#*0123456789abc";
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM */
+/* */
+/**************************************************************/
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_imsi_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_min_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_mdn_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_msisdn_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_esn_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_mscid_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_sesn_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_soc_CharSet =
+"#*0123456789abc";
+
+/**************************************************************/
+/* */
+/* GSM_UIM */
+/* */
+/**************************************************************/
+
+EXTERN const char* gs_H323_MESSAGES_GSM_UIM_imsi_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_GSM_UIM_msisdn_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_GSM_UIM_imei_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_GSM_UIM_hplmn_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_GSM_UIM_vplmn_CharSet =
+"#*0123456789abc";
+
+/**************************************************************/
+/* */
+/* AliasAddress */
+/* */
+/**************************************************************/
+
+EXTERN const char* gs_H323_MESSAGES_AliasAddress_dialedDigits_CharSet =
+"#*,0123456789";
+
diff --git a/addons/ooh323c/src/h323/H323-MESSAGES.h b/addons/ooh323c/src/h323/H323-MESSAGES.h
new file mode 100644
index 000000000..fbd87b336
--- /dev/null
+++ b/addons/ooh323c/src/h323/H323-MESSAGES.h
@@ -0,0 +1,6510 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#ifndef H323_MESSAGES_H
+#define H323_MESSAGES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "ooasn1.h"
+#include "H235-SECURITY-MESSAGES.h"
+#include "MULTIMEDIA-SYSTEM-CONTROL.h"
+
+/**************************************************************/
+/* */
+/* ScreeningIndicator */
+/* */
+/**************************************************************/
+
+typedef enum {
+ userProvidedNotScreened = 0,
+ userProvidedVerifiedAndPassed = 1,
+ userProvidedVerifiedAndFailed = 2,
+ networkProvided = 3
+} H225ScreeningIndicator_Root;
+
+typedef ASN1UINT H225ScreeningIndicator;
+
+EXTERN int asn1PE_H225ScreeningIndicator (OOCTXT* pctxt, H225ScreeningIndicator value);
+
+EXTERN int asn1PD_H225ScreeningIndicator (OOCTXT* pctxt, H225ScreeningIndicator* pvalue);
+
+/**************************************************************/
+/* */
+/* NumberDigits */
+/* */
+/**************************************************************/
+
+typedef ASN1IA5String H225NumberDigits;
+
+EXTERN int asn1PE_H225NumberDigits (OOCTXT* pctxt, H225NumberDigits value);
+
+EXTERN int asn1PD_H225NumberDigits (OOCTXT* pctxt, H225NumberDigits* pvalue);
+
+/**************************************************************/
+/* */
+/* TBCD_STRING */
+/* */
+/**************************************************************/
+
+typedef ASN1IA5String H225TBCD_STRING;
+
+EXTERN int asn1PE_H225TBCD_STRING (OOCTXT* pctxt, H225TBCD_STRING value);
+
+EXTERN int asn1PD_H225TBCD_STRING (OOCTXT* pctxt, H225TBCD_STRING* pvalue);
+
+/**************************************************************/
+/* */
+/* GloballyUniqueID */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GloballyUniqueID {
+ ASN1UINT numocts;
+ ASN1OCTET data[16];
+} H225GloballyUniqueID;
+
+EXTERN int asn1PE_H225GloballyUniqueID (OOCTXT* pctxt, H225GloballyUniqueID* pvalue);
+
+EXTERN int asn1PD_H225GloballyUniqueID (OOCTXT* pctxt, H225GloballyUniqueID* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceIdentifier */
+/* */
+/**************************************************************/
+
+typedef H225GloballyUniqueID H225ConferenceIdentifier;
+
+EXTERN int asn1PE_H225ConferenceIdentifier (OOCTXT* pctxt, H225ConferenceIdentifier* pvalue);
+
+EXTERN int asn1PD_H225ConferenceIdentifier (OOCTXT* pctxt, H225ConferenceIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestSeqNum */
+/* */
+/**************************************************************/
+
+typedef ASN1USINT H225RequestSeqNum;
+
+EXTERN int asn1PE_H225RequestSeqNum (OOCTXT* pctxt, H225RequestSeqNum value);
+
+EXTERN int asn1PD_H225RequestSeqNum (OOCTXT* pctxt, H225RequestSeqNum* pvalue);
+
+/**************************************************************/
+/* */
+/* GatekeeperIdentifier */
+/* */
+/**************************************************************/
+
+typedef ASN1BMPString H225GatekeeperIdentifier;
+
+EXTERN int asn1PE_H225GatekeeperIdentifier (OOCTXT* pctxt, H225GatekeeperIdentifier value);
+
+EXTERN int asn1PD_H225GatekeeperIdentifier (OOCTXT* pctxt, H225GatekeeperIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* BandWidth */
+/* */
+/**************************************************************/
+
+typedef ASN1UINT H225BandWidth;
+
+EXTERN int asn1PE_H225BandWidth (OOCTXT* pctxt, H225BandWidth value);
+
+EXTERN int asn1PD_H225BandWidth (OOCTXT* pctxt, H225BandWidth* pvalue);
+
+/**************************************************************/
+/* */
+/* CallReferenceValue */
+/* */
+/**************************************************************/
+
+typedef ASN1USINT H225CallReferenceValue;
+
+EXTERN int asn1PE_H225CallReferenceValue (OOCTXT* pctxt, H225CallReferenceValue value);
+
+EXTERN int asn1PD_H225CallReferenceValue (OOCTXT* pctxt, H225CallReferenceValue* pvalue);
+
+/**************************************************************/
+/* */
+/* EndpointIdentifier */
+/* */
+/**************************************************************/
+
+typedef ASN1BMPString H225EndpointIdentifier;
+
+EXTERN int asn1PE_H225EndpointIdentifier (OOCTXT* pctxt, H225EndpointIdentifier value);
+
+EXTERN int asn1PD_H225EndpointIdentifier (OOCTXT* pctxt, H225EndpointIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* ProtocolIdentifier */
+/* */
+/**************************************************************/
+
+typedef ASN1OBJID H225ProtocolIdentifier;
+
+EXTERN int asn1PE_H225ProtocolIdentifier (OOCTXT* pctxt, H225ProtocolIdentifier value);
+
+EXTERN int asn1PD_H225ProtocolIdentifier (OOCTXT* pctxt, H225ProtocolIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* TimeToLive */
+/* */
+/**************************************************************/
+
+typedef ASN1UINT H225TimeToLive;
+
+EXTERN int asn1PE_H225TimeToLive (OOCTXT* pctxt, H225TimeToLive value);
+
+EXTERN int asn1PD_H225TimeToLive (OOCTXT* pctxt, H225TimeToLive* pvalue);
+
+/**************************************************************/
+/* */
+/* H248PackagesDescriptor */
+/* */
+/**************************************************************/
+
+typedef ASN1DynOctStr H225H248PackagesDescriptor;
+
+EXTERN int asn1PE_H225H248PackagesDescriptor (OOCTXT* pctxt, H225H248PackagesDescriptor value);
+
+EXTERN int asn1PD_H225H248PackagesDescriptor (OOCTXT* pctxt, H225H248PackagesDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* H248SignalsDescriptor */
+/* */
+/**************************************************************/
+
+typedef ASN1DynOctStr H225H248SignalsDescriptor;
+
+EXTERN int asn1PE_H225H248SignalsDescriptor (OOCTXT* pctxt, H225H248SignalsDescriptor value);
+
+EXTERN int asn1PD_H225H248SignalsDescriptor (OOCTXT* pctxt, H225H248SignalsDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* GenericIdentifier */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225GenericIdentifier_standard 1
+#define T_H225GenericIdentifier_oid 2
+#define T_H225GenericIdentifier_nonStandard 3
+#define T_H225GenericIdentifier_extElem1 4
+
+typedef struct EXTERN H225GenericIdentifier {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1INT standard;
+ /* t = 2 */
+ ASN1OBJID *oid;
+ /* t = 3 */
+ H225GloballyUniqueID *nonStandard;
+ /* t = 4 */
+ } u;
+} H225GenericIdentifier;
+
+EXTERN int asn1PE_H225GenericIdentifier (OOCTXT* pctxt, H225GenericIdentifier* pvalue);
+
+EXTERN int asn1PD_H225GenericIdentifier (OOCTXT* pctxt, H225GenericIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipAddress_ip */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipAddress_ip {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H225TransportAddress_ipAddress_ip;
+
+EXTERN int asn1PE_H225TransportAddress_ipAddress_ip (OOCTXT* pctxt, H225TransportAddress_ipAddress_ip* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipAddress_ip (OOCTXT* pctxt, H225TransportAddress_ipAddress_ip* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipAddress */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipAddress {
+ H225TransportAddress_ipAddress_ip ip;
+ ASN1USINT port;
+} H225TransportAddress_ipAddress;
+
+EXTERN int asn1PE_H225TransportAddress_ipAddress (OOCTXT* pctxt, H225TransportAddress_ipAddress* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipAddress (OOCTXT* pctxt, H225TransportAddress_ipAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_ip */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipSourceRoute_ip {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H225TransportAddress_ipSourceRoute_ip;
+
+EXTERN int asn1PE_H225TransportAddress_ipSourceRoute_ip (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_ip* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_ip (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_ip* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_route_element */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipSourceRoute_route_element {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H225TransportAddress_ipSourceRoute_route_element;
+
+EXTERN int asn1PE_H225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_route_element* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_route_element* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TransportAddress_ipSourceRoute_route_element */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225_SeqOfH225TransportAddress_ipSourceRoute_route_element {
+ ASN1UINT n;
+ H225TransportAddress_ipSourceRoute_route_element *elem;
+} H225_SeqOfH225TransportAddress_ipSourceRoute_route_element;
+
+EXTERN int asn1PE_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225_SeqOfH225TransportAddress_ipSourceRoute_route_element* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225_SeqOfH225TransportAddress_ipSourceRoute_route_element* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_routing */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225TransportAddress_ipSourceRoute_routing_strict 1
+#define T_H225TransportAddress_ipSourceRoute_routing_loose 2
+#define T_H225TransportAddress_ipSourceRoute_routing_extElem1 3
+
+typedef struct EXTERN H225TransportAddress_ipSourceRoute_routing {
+ int t;
+} H225TransportAddress_ipSourceRoute_routing;
+
+EXTERN int asn1PE_H225TransportAddress_ipSourceRoute_routing (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_routing* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_routing (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_routing* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipSourceRoute {
+ H225TransportAddress_ipSourceRoute_ip ip;
+ ASN1USINT port;
+ H225_SeqOfH225TransportAddress_ipSourceRoute_route_element route;
+ H225TransportAddress_ipSourceRoute_routing routing;
+} H225TransportAddress_ipSourceRoute;
+
+EXTERN int asn1PE_H225TransportAddress_ipSourceRoute (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_node */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipxAddress_node {
+ ASN1UINT numocts;
+ ASN1OCTET data[6];
+} H225TransportAddress_ipxAddress_node;
+
+EXTERN int asn1PE_H225TransportAddress_ipxAddress_node (OOCTXT* pctxt, H225TransportAddress_ipxAddress_node* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress_node (OOCTXT* pctxt, H225TransportAddress_ipxAddress_node* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_netnum */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipxAddress_netnum {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H225TransportAddress_ipxAddress_netnum;
+
+EXTERN int asn1PE_H225TransportAddress_ipxAddress_netnum (OOCTXT* pctxt, H225TransportAddress_ipxAddress_netnum* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress_netnum (OOCTXT* pctxt, H225TransportAddress_ipxAddress_netnum* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_port */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipxAddress_port {
+ ASN1UINT numocts;
+ ASN1OCTET data[2];
+} H225TransportAddress_ipxAddress_port;
+
+EXTERN int asn1PE_H225TransportAddress_ipxAddress_port (OOCTXT* pctxt, H225TransportAddress_ipxAddress_port* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress_port (OOCTXT* pctxt, H225TransportAddress_ipxAddress_port* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipxAddress {
+ H225TransportAddress_ipxAddress_node node;
+ H225TransportAddress_ipxAddress_netnum netnum;
+ H225TransportAddress_ipxAddress_port port;
+} H225TransportAddress_ipxAddress;
+
+EXTERN int asn1PE_H225TransportAddress_ipxAddress (OOCTXT* pctxt, H225TransportAddress_ipxAddress* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress (OOCTXT* pctxt, H225TransportAddress_ipxAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ip6Address_ip */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ip6Address_ip {
+ ASN1UINT numocts;
+ ASN1OCTET data[16];
+} H225TransportAddress_ip6Address_ip;
+
+EXTERN int asn1PE_H225TransportAddress_ip6Address_ip (OOCTXT* pctxt, H225TransportAddress_ip6Address_ip* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ip6Address_ip (OOCTXT* pctxt, H225TransportAddress_ip6Address_ip* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ip6Address */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ip6Address {
+ H225TransportAddress_ip6Address_ip ip;
+ ASN1USINT port;
+} H225TransportAddress_ip6Address;
+
+EXTERN int asn1PE_H225TransportAddress_ip6Address (OOCTXT* pctxt, H225TransportAddress_ip6Address* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ip6Address (OOCTXT* pctxt, H225TransportAddress_ip6Address* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_netBios */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_netBios {
+ ASN1UINT numocts;
+ ASN1OCTET data[16];
+} H225TransportAddress_netBios;
+
+EXTERN int asn1PE_H225TransportAddress_netBios (OOCTXT* pctxt, H225TransportAddress_netBios* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_netBios (OOCTXT* pctxt, H225TransportAddress_netBios* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_nsap */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_nsap {
+ ASN1UINT numocts;
+ ASN1OCTET data[20];
+} H225TransportAddress_nsap;
+
+EXTERN int asn1PE_H225TransportAddress_nsap (OOCTXT* pctxt, H225TransportAddress_nsap* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_nsap (OOCTXT* pctxt, H225TransportAddress_nsap* pvalue);
+
+/**************************************************************/
+/* */
+/* H221NonStandard */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H221NonStandard {
+ ASN1UINT8 t35CountryCode;
+ ASN1UINT8 t35Extension;
+ ASN1USINT manufacturerCode;
+} H225H221NonStandard;
+
+EXTERN int asn1PE_H225H221NonStandard (OOCTXT* pctxt, H225H221NonStandard* pvalue);
+
+EXTERN int asn1PD_H225H221NonStandard (OOCTXT* pctxt, H225H221NonStandard* pvalue);
+
+/**************************************************************/
+/* */
+/* NonStandardIdentifier */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225NonStandardIdentifier_object 1
+#define T_H225NonStandardIdentifier_h221NonStandard 2
+#define T_H225NonStandardIdentifier_extElem1 3
+
+typedef struct EXTERN H225NonStandardIdentifier {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1OBJID *object;
+ /* t = 2 */
+ H225H221NonStandard *h221NonStandard;
+ /* t = 3 */
+ } u;
+} H225NonStandardIdentifier;
+
+EXTERN int asn1PE_H225NonStandardIdentifier (OOCTXT* pctxt, H225NonStandardIdentifier* pvalue);
+
+EXTERN int asn1PD_H225NonStandardIdentifier (OOCTXT* pctxt, H225NonStandardIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* NonStandardParameter */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225NonStandardParameter {
+ H225NonStandardIdentifier nonStandardIdentifier;
+ ASN1DynOctStr data;
+} H225NonStandardParameter;
+
+EXTERN int asn1PE_H225NonStandardParameter (OOCTXT* pctxt, H225NonStandardParameter* pvalue);
+
+EXTERN int asn1PD_H225NonStandardParameter (OOCTXT* pctxt, H225NonStandardParameter* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225TransportAddress_ipAddress 1
+#define T_H225TransportAddress_ipSourceRoute 2
+#define T_H225TransportAddress_ipxAddress 3
+#define T_H225TransportAddress_ip6Address 4
+#define T_H225TransportAddress_netBios 5
+#define T_H225TransportAddress_nsap 6
+#define T_H225TransportAddress_nonStandardAddress 7
+#define T_H225TransportAddress_extElem1 8
+
+typedef struct EXTERN H225TransportAddress {
+ int t;
+ union {
+ /* t = 1 */
+ H225TransportAddress_ipAddress *ipAddress;
+ /* t = 2 */
+ H225TransportAddress_ipSourceRoute *ipSourceRoute;
+ /* t = 3 */
+ H225TransportAddress_ipxAddress *ipxAddress;
+ /* t = 4 */
+ H225TransportAddress_ip6Address *ip6Address;
+ /* t = 5 */
+ H225TransportAddress_netBios *netBios;
+ /* t = 6 */
+ H225TransportAddress_nsap *nsap;
+ /* t = 7 */
+ H225NonStandardParameter *nonStandardAddress;
+ /* t = 8 */
+ } u;
+} H225TransportAddress;
+
+EXTERN int asn1PE_H225TransportAddress (OOCTXT* pctxt, H225TransportAddress* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress (OOCTXT* pctxt, H225TransportAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* PublicTypeOfNumber */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225PublicTypeOfNumber_unknown 1
+#define T_H225PublicTypeOfNumber_internationalNumber 2
+#define T_H225PublicTypeOfNumber_nationalNumber 3
+#define T_H225PublicTypeOfNumber_networkSpecificNumber 4
+#define T_H225PublicTypeOfNumber_subscriberNumber 5
+#define T_H225PublicTypeOfNumber_abbreviatedNumber 6
+#define T_H225PublicTypeOfNumber_extElem1 7
+
+typedef struct EXTERN H225PublicTypeOfNumber {
+ int t;
+} H225PublicTypeOfNumber;
+
+EXTERN int asn1PE_H225PublicTypeOfNumber (OOCTXT* pctxt, H225PublicTypeOfNumber* pvalue);
+
+EXTERN int asn1PD_H225PublicTypeOfNumber (OOCTXT* pctxt, H225PublicTypeOfNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* PublicPartyNumber */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225PublicPartyNumber {
+ H225PublicTypeOfNumber publicTypeOfNumber;
+ H225NumberDigits publicNumberDigits;
+} H225PublicPartyNumber;
+
+EXTERN int asn1PE_H225PublicPartyNumber (OOCTXT* pctxt, H225PublicPartyNumber* pvalue);
+
+EXTERN int asn1PD_H225PublicPartyNumber (OOCTXT* pctxt, H225PublicPartyNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* PrivateTypeOfNumber */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225PrivateTypeOfNumber_unknown 1
+#define T_H225PrivateTypeOfNumber_level2RegionalNumber 2
+#define T_H225PrivateTypeOfNumber_level1RegionalNumber 3
+#define T_H225PrivateTypeOfNumber_pISNSpecificNumber 4
+#define T_H225PrivateTypeOfNumber_localNumber 5
+#define T_H225PrivateTypeOfNumber_abbreviatedNumber 6
+#define T_H225PrivateTypeOfNumber_extElem1 7
+
+typedef struct EXTERN H225PrivateTypeOfNumber {
+ int t;
+} H225PrivateTypeOfNumber;
+
+EXTERN int asn1PE_H225PrivateTypeOfNumber (OOCTXT* pctxt, H225PrivateTypeOfNumber* pvalue);
+
+EXTERN int asn1PD_H225PrivateTypeOfNumber (OOCTXT* pctxt, H225PrivateTypeOfNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* PrivatePartyNumber */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225PrivatePartyNumber {
+ H225PrivateTypeOfNumber privateTypeOfNumber;
+ H225NumberDigits privateNumberDigits;
+} H225PrivatePartyNumber;
+
+EXTERN int asn1PE_H225PrivatePartyNumber (OOCTXT* pctxt, H225PrivatePartyNumber* pvalue);
+
+EXTERN int asn1PD_H225PrivatePartyNumber (OOCTXT* pctxt, H225PrivatePartyNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* PartyNumber */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225PartyNumber_e164Number 1
+#define T_H225PartyNumber_dataPartyNumber 2
+#define T_H225PartyNumber_telexPartyNumber 3
+#define T_H225PartyNumber_privateNumber 4
+#define T_H225PartyNumber_nationalStandardPartyNumber 5
+#define T_H225PartyNumber_extElem1 6
+
+typedef struct EXTERN H225PartyNumber {
+ int t;
+ union {
+ /* t = 1 */
+ H225PublicPartyNumber *e164Number;
+ /* t = 2 */
+ H225NumberDigits dataPartyNumber;
+ /* t = 3 */
+ H225NumberDigits telexPartyNumber;
+ /* t = 4 */
+ H225PrivatePartyNumber *privateNumber;
+ /* t = 5 */
+ H225NumberDigits nationalStandardPartyNumber;
+ /* t = 6 */
+ } u;
+} H225PartyNumber;
+
+EXTERN int asn1PE_H225PartyNumber (OOCTXT* pctxt, H225PartyNumber* pvalue);
+
+EXTERN int asn1PD_H225PartyNumber (OOCTXT* pctxt, H225PartyNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_system_id */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225ANSI_41_UIM_system_id_sid 1
+#define T_H225ANSI_41_UIM_system_id_mid 2
+#define T_H225ANSI_41_UIM_system_id_extElem1 3
+
+typedef struct EXTERN H225ANSI_41_UIM_system_id {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1IA5String sid;
+ /* t = 2 */
+ ASN1IA5String mid;
+ /* t = 3 */
+ } u;
+} H225ANSI_41_UIM_system_id;
+
+EXTERN int asn1PE_H225ANSI_41_UIM_system_id (OOCTXT* pctxt, H225ANSI_41_UIM_system_id* pvalue);
+
+EXTERN int asn1PD_H225ANSI_41_UIM_system_id (OOCTXT* pctxt, H225ANSI_41_UIM_system_id* pvalue);
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_systemMyTypeCode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ANSI_41_UIM_systemMyTypeCode {
+ ASN1UINT numocts;
+ ASN1OCTET data[1];
+} H225ANSI_41_UIM_systemMyTypeCode;
+
+EXTERN int asn1PE_H225ANSI_41_UIM_systemMyTypeCode (OOCTXT* pctxt, H225ANSI_41_UIM_systemMyTypeCode* pvalue);
+
+EXTERN int asn1PD_H225ANSI_41_UIM_systemMyTypeCode (OOCTXT* pctxt, H225ANSI_41_UIM_systemMyTypeCode* pvalue);
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_systemAccessType */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ANSI_41_UIM_systemAccessType {
+ ASN1UINT numocts;
+ ASN1OCTET data[1];
+} H225ANSI_41_UIM_systemAccessType;
+
+EXTERN int asn1PE_H225ANSI_41_UIM_systemAccessType (OOCTXT* pctxt, H225ANSI_41_UIM_systemAccessType* pvalue);
+
+EXTERN int asn1PD_H225ANSI_41_UIM_systemAccessType (OOCTXT* pctxt, H225ANSI_41_UIM_systemAccessType* pvalue);
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_qualificationInformationCode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ANSI_41_UIM_qualificationInformationCode {
+ ASN1UINT numocts;
+ ASN1OCTET data[1];
+} H225ANSI_41_UIM_qualificationInformationCode;
+
+EXTERN int asn1PE_H225ANSI_41_UIM_qualificationInformationCode (OOCTXT* pctxt, H225ANSI_41_UIM_qualificationInformationCode* pvalue);
+
+EXTERN int asn1PD_H225ANSI_41_UIM_qualificationInformationCode (OOCTXT* pctxt, H225ANSI_41_UIM_qualificationInformationCode* pvalue);
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ANSI_41_UIM {
+ struct {
+ unsigned imsiPresent : 1;
+ unsigned minPresent : 1;
+ unsigned mdnPresent : 1;
+ unsigned msisdnPresent : 1;
+ unsigned esnPresent : 1;
+ unsigned mscidPresent : 1;
+ unsigned systemMyTypeCodePresent : 1;
+ unsigned systemAccessTypePresent : 1;
+ unsigned qualificationInformationCodePresent : 1;
+ unsigned sesnPresent : 1;
+ unsigned socPresent : 1;
+ } m;
+ ASN1IA5String imsi;
+ ASN1IA5String min;
+ ASN1IA5String mdn;
+ ASN1IA5String msisdn;
+ ASN1IA5String esn;
+ ASN1IA5String mscid;
+ H225ANSI_41_UIM_system_id system_id;
+ H225ANSI_41_UIM_systemMyTypeCode systemMyTypeCode;
+ H225ANSI_41_UIM_systemAccessType systemAccessType;
+ H225ANSI_41_UIM_qualificationInformationCode qualificationInformationCode;
+ ASN1IA5String sesn;
+ ASN1IA5String soc;
+} H225ANSI_41_UIM;
+
+EXTERN int asn1PE_H225ANSI_41_UIM (OOCTXT* pctxt, H225ANSI_41_UIM* pvalue);
+
+EXTERN int asn1PD_H225ANSI_41_UIM (OOCTXT* pctxt, H225ANSI_41_UIM* pvalue);
+
+/**************************************************************/
+/* */
+/* GSM_UIM_tmsi */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GSM_UIM_tmsi {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H225GSM_UIM_tmsi;
+
+EXTERN int asn1PE_H225GSM_UIM_tmsi (OOCTXT* pctxt, H225GSM_UIM_tmsi* pvalue);
+
+EXTERN int asn1PD_H225GSM_UIM_tmsi (OOCTXT* pctxt, H225GSM_UIM_tmsi* pvalue);
+
+/**************************************************************/
+/* */
+/* GSM_UIM */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GSM_UIM {
+ struct {
+ unsigned imsiPresent : 1;
+ unsigned tmsiPresent : 1;
+ unsigned msisdnPresent : 1;
+ unsigned imeiPresent : 1;
+ unsigned hplmnPresent : 1;
+ unsigned vplmnPresent : 1;
+ } m;
+ ASN1IA5String imsi;
+ H225GSM_UIM_tmsi tmsi;
+ ASN1IA5String msisdn;
+ ASN1IA5String imei;
+ ASN1IA5String hplmn;
+ ASN1IA5String vplmn;
+} H225GSM_UIM;
+
+EXTERN int asn1PE_H225GSM_UIM (OOCTXT* pctxt, H225GSM_UIM* pvalue);
+
+EXTERN int asn1PD_H225GSM_UIM (OOCTXT* pctxt, H225GSM_UIM* pvalue);
+
+/**************************************************************/
+/* */
+/* MobileUIM */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225MobileUIM_ansi_41_uim 1
+#define T_H225MobileUIM_gsm_uim 2
+#define T_H225MobileUIM_extElem1 3
+
+typedef struct EXTERN H225MobileUIM {
+ int t;
+ union {
+ /* t = 1 */
+ H225ANSI_41_UIM *ansi_41_uim;
+ /* t = 2 */
+ H225GSM_UIM *gsm_uim;
+ /* t = 3 */
+ } u;
+} H225MobileUIM;
+
+EXTERN int asn1PE_H225MobileUIM (OOCTXT* pctxt, H225MobileUIM* pvalue);
+
+EXTERN int asn1PD_H225MobileUIM (OOCTXT* pctxt, H225MobileUIM* pvalue);
+
+/**************************************************************/
+/* */
+/* AliasAddress */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225AliasAddress_dialedDigits 1
+#define T_H225AliasAddress_h323_ID 2
+#define T_H225AliasAddress_url_ID 3
+#define T_H225AliasAddress_transportID 4
+#define T_H225AliasAddress_email_ID 5
+#define T_H225AliasAddress_partyNumber 6
+#define T_H225AliasAddress_mobileUIM 7
+#define T_H225AliasAddress_extElem1 8
+
+typedef struct EXTERN H225AliasAddress {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1IA5String dialedDigits;
+ /* t = 2 */
+ ASN1BMPString h323_ID;
+ /* t = 3 */
+ ASN1IA5String url_ID;
+ /* t = 4 */
+ H225TransportAddress *transportID;
+ /* t = 5 */
+ ASN1IA5String email_ID;
+ /* t = 6 */
+ H225PartyNumber *partyNumber;
+ /* t = 7 */
+ H225MobileUIM *mobileUIM;
+ /* t = 8 */
+ } u;
+} H225AliasAddress;
+
+EXTERN int asn1PE_H225AliasAddress (OOCTXT* pctxt, H225AliasAddress* pvalue);
+
+EXTERN int asn1PD_H225AliasAddress (OOCTXT* pctxt, H225AliasAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* Content_compound */
+/* */
+/**************************************************************/
+
+/* List of H225EnumeratedParameter */
+typedef DList H225Content_compound;
+
+EXTERN int asn1PE_H225Content_compound (OOCTXT* pctxt, H225Content_compound* pvalue);
+
+EXTERN int asn1PD_H225Content_compound (OOCTXT* pctxt, H225Content_compound* pvalue);
+
+/**************************************************************/
+/* */
+/* Content_nested */
+/* */
+/**************************************************************/
+
+/* List of H225GenericData */
+typedef DList H225Content_nested;
+
+EXTERN int asn1PE_H225Content_nested (OOCTXT* pctxt, H225Content_nested* pvalue);
+
+EXTERN int asn1PD_H225Content_nested (OOCTXT* pctxt, H225Content_nested* pvalue);
+
+/**************************************************************/
+/* */
+/* Content */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225Content_raw 1
+#define T_H225Content_text 2
+#define T_H225Content_unicode 3
+#define T_H225Content_bool_ 4
+#define T_H225Content_number8 5
+#define T_H225Content_number16 6
+#define T_H225Content_number32 7
+#define T_H225Content_id 8
+#define T_H225Content_alias 9
+#define T_H225Content_transport 10
+#define T_H225Content_compound 11
+#define T_H225Content_nested 12
+#define T_H225Content_extElem1 13
+
+typedef struct EXTERN H225Content {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1DynOctStr *raw;
+ /* t = 2 */
+ ASN1IA5String text;
+ /* t = 3 */
+ ASN1BMPString unicode;
+ /* t = 4 */
+ ASN1BOOL bool_;
+ /* t = 5 */
+ ASN1UINT8 number8;
+ /* t = 6 */
+ ASN1USINT number16;
+ /* t = 7 */
+ ASN1UINT number32;
+ /* t = 8 */
+ H225GenericIdentifier *id;
+ /* t = 9 */
+ H225AliasAddress *alias;
+ /* t = 10 */
+ H225TransportAddress *transport;
+ /* t = 11 */
+ H225Content_compound *compound;
+ /* t = 12 */
+ H225Content_nested *nested;
+ /* t = 13 */
+ } u;
+} H225Content;
+
+EXTERN int asn1PE_H225Content (OOCTXT* pctxt, H225Content* pvalue);
+
+EXTERN int asn1PD_H225Content (OOCTXT* pctxt, H225Content* pvalue);
+
+/**************************************************************/
+/* */
+/* EnumeratedParameter */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225EnumeratedParameter {
+ struct {
+ unsigned contentPresent : 1;
+ } m;
+ H225GenericIdentifier id;
+ H225Content content;
+} H225EnumeratedParameter;
+
+EXTERN int asn1PE_H225EnumeratedParameter (OOCTXT* pctxt, H225EnumeratedParameter* pvalue);
+
+EXTERN int asn1PD_H225EnumeratedParameter (OOCTXT* pctxt, H225EnumeratedParameter* pvalue);
+
+/**************************************************************/
+/* */
+/* GenericData_parameters */
+/* */
+/**************************************************************/
+
+/* List of H225EnumeratedParameter */
+typedef DList H225GenericData_parameters;
+
+EXTERN int asn1PE_H225GenericData_parameters (OOCTXT* pctxt, H225GenericData_parameters* pvalue);
+
+EXTERN int asn1PD_H225GenericData_parameters (OOCTXT* pctxt, H225GenericData_parameters* pvalue);
+
+/**************************************************************/
+/* */
+/* GenericData */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GenericData {
+ struct {
+ unsigned parametersPresent : 1;
+ } m;
+ H225GenericIdentifier id;
+ H225GenericData_parameters parameters;
+} H225GenericData;
+
+EXTERN int asn1PE_H225GenericData (OOCTXT* pctxt, H225GenericData* pvalue);
+
+EXTERN int asn1PD_H225GenericData (OOCTXT* pctxt, H225GenericData* pvalue);
+
+/**************************************************************/
+/* */
+/* FeatureDescriptor */
+/* */
+/**************************************************************/
+
+typedef H225GenericData H225FeatureDescriptor;
+
+EXTERN int asn1PE_H225FeatureDescriptor (OOCTXT* pctxt, H225FeatureDescriptor* pvalue);
+
+EXTERN int asn1PD_H225FeatureDescriptor (OOCTXT* pctxt, H225FeatureDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* FastStartToken */
+/* */
+/**************************************************************/
+
+typedef H235ClearToken H225FastStartToken;
+
+EXTERN int asn1PE_H225FastStartToken (OOCTXT* pctxt, H225FastStartToken* pvalue);
+
+EXTERN int asn1PD_H225FastStartToken (OOCTXT* pctxt, H225FastStartToken* pvalue);
+
+/**************************************************************/
+/* */
+/* EncodedFastStartToken */
+/* */
+/**************************************************************/
+
+typedef ASN1OpenType H225EncodedFastStartToken;
+
+EXTERN int asn1PE_H225EncodedFastStartToken (OOCTXT* pctxt, H225EncodedFastStartToken value);
+
+EXTERN int asn1PD_H225EncodedFastStartToken (OOCTXT* pctxt, H225EncodedFastStartToken* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UserInformation_user_data_user_information */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UserInformation_user_data_user_information {
+ ASN1UINT numocts;
+ ASN1OCTET data[131];
+} H225H323_UserInformation_user_data_user_information;
+
+EXTERN int asn1PE_H225H323_UserInformation_user_data_user_information (OOCTXT* pctxt, H225H323_UserInformation_user_data_user_information* pvalue);
+
+EXTERN int asn1PD_H225H323_UserInformation_user_data_user_information (OOCTXT* pctxt, H225H323_UserInformation_user_data_user_information* pvalue);
+
+/**************************************************************/
+/* */
+/* EndpointType_set */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225EndpointType_set {
+ ASN1UINT numbits;
+ ASN1OCTET data[4];
+} H225EndpointType_set;
+
+EXTERN int asn1PE_H225EndpointType_set (OOCTXT* pctxt, H225EndpointType_set* pvalue);
+
+EXTERN int asn1PD_H225EndpointType_set (OOCTXT* pctxt, H225EndpointType_set* pvalue);
+
+/**************************************************************/
+/* */
+/* VendorIdentifier_productId */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225VendorIdentifier_productId {
+ ASN1UINT numocts;
+ ASN1OCTET data[256];
+} H225VendorIdentifier_productId;
+
+EXTERN int asn1PE_H225VendorIdentifier_productId (OOCTXT* pctxt, H225VendorIdentifier_productId* pvalue);
+
+EXTERN int asn1PD_H225VendorIdentifier_productId (OOCTXT* pctxt, H225VendorIdentifier_productId* pvalue);
+
+/**************************************************************/
+/* */
+/* VendorIdentifier_versionId */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225VendorIdentifier_versionId {
+ ASN1UINT numocts;
+ ASN1OCTET data[256];
+} H225VendorIdentifier_versionId;
+
+EXTERN int asn1PE_H225VendorIdentifier_versionId (OOCTXT* pctxt, H225VendorIdentifier_versionId* pvalue);
+
+EXTERN int asn1PD_H225VendorIdentifier_versionId (OOCTXT* pctxt, H225VendorIdentifier_versionId* pvalue);
+
+/**************************************************************/
+/* */
+/* CicInfo_cic_element */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CicInfo_cic_element {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H225CicInfo_cic_element;
+
+EXTERN int asn1PE_H225CicInfo_cic_element (OOCTXT* pctxt, H225CicInfo_cic_element* pvalue);
+
+EXTERN int asn1PD_H225CicInfo_cic_element (OOCTXT* pctxt, H225CicInfo_cic_element* pvalue);
+
+/**************************************************************/
+/* */
+/* CicInfo_pointCode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CicInfo_pointCode {
+ ASN1UINT numocts;
+ ASN1OCTET data[5];
+} H225CicInfo_pointCode;
+
+EXTERN int asn1PE_H225CicInfo_pointCode (OOCTXT* pctxt, H225CicInfo_pointCode* pvalue);
+
+EXTERN int asn1PD_H225CicInfo_pointCode (OOCTXT* pctxt, H225CicInfo_pointCode* pvalue);
+
+/**************************************************************/
+/* */
+/* CarrierInfo_carrierIdentificationCode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CarrierInfo_carrierIdentificationCode {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H225CarrierInfo_carrierIdentificationCode;
+
+EXTERN int asn1PE_H225CarrierInfo_carrierIdentificationCode (OOCTXT* pctxt, H225CarrierInfo_carrierIdentificationCode* pvalue);
+
+EXTERN int asn1PD_H225CarrierInfo_carrierIdentificationCode (OOCTXT* pctxt, H225CarrierInfo_carrierIdentificationCode* pvalue);
+
+/**************************************************************/
+/* */
+/* CallTerminationCause_releaseCompleteCauseIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallTerminationCause_releaseCompleteCauseIE {
+ ASN1UINT numocts;
+ ASN1OCTET data[32];
+} H225CallTerminationCause_releaseCompleteCauseIE;
+
+EXTERN int asn1PE_H225CallTerminationCause_releaseCompleteCauseIE (OOCTXT* pctxt, H225CallTerminationCause_releaseCompleteCauseIE* pvalue);
+
+EXTERN int asn1PD_H225CallTerminationCause_releaseCompleteCauseIE (OOCTXT* pctxt, H225CallTerminationCause_releaseCompleteCauseIE* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AliasAddress */
+/* */
+/**************************************************************/
+
+/* List of H225AliasAddress */
+typedef DList H225_SeqOfH225AliasAddress;
+
+EXTERN int asn1PE_H225_SeqOfH225AliasAddress (OOCTXT* pctxt, H225_SeqOfH225AliasAddress* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225AliasAddress (OOCTXT* pctxt, H225_SeqOfH225AliasAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* VendorIdentifier */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225VendorIdentifier {
+ struct {
+ unsigned productIdPresent : 1;
+ unsigned versionIdPresent : 1;
+ unsigned enterpriseNumberPresent : 1;
+ } m;
+ H225H221NonStandard vendor;
+ H225VendorIdentifier_productId productId;
+ H225VendorIdentifier_versionId versionId;
+ ASN1OBJID enterpriseNumber;
+} H225VendorIdentifier;
+
+EXTERN int asn1PE_H225VendorIdentifier (OOCTXT* pctxt, H225VendorIdentifier* pvalue);
+
+EXTERN int asn1PD_H225VendorIdentifier (OOCTXT* pctxt, H225VendorIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* GatekeeperInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GatekeeperInfo {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+} H225GatekeeperInfo;
+
+EXTERN int asn1PE_H225GatekeeperInfo (OOCTXT* pctxt, H225GatekeeperInfo* pvalue);
+
+EXTERN int asn1PD_H225GatekeeperInfo (OOCTXT* pctxt, H225GatekeeperInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* DataRate */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225DataRate {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned channelMultiplierPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225BandWidth channelRate;
+ ASN1USINT channelMultiplier;
+} H225DataRate;
+
+EXTERN int asn1PE_H225DataRate (OOCTXT* pctxt, H225DataRate* pvalue);
+
+EXTERN int asn1PD_H225DataRate (OOCTXT* pctxt, H225DataRate* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225DataRate */
+/* */
+/**************************************************************/
+
+/* List of H225DataRate */
+typedef DList H225_SeqOfH225DataRate;
+
+EXTERN int asn1PE_H225_SeqOfH225DataRate (OOCTXT* pctxt, H225_SeqOfH225DataRate* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225DataRate (OOCTXT* pctxt, H225_SeqOfH225DataRate* pvalue);
+
+/**************************************************************/
+/* */
+/* SupportedPrefix */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225SupportedPrefix {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225AliasAddress prefix;
+} H225SupportedPrefix;
+
+EXTERN int asn1PE_H225SupportedPrefix (OOCTXT* pctxt, H225SupportedPrefix* pvalue);
+
+EXTERN int asn1PD_H225SupportedPrefix (OOCTXT* pctxt, H225SupportedPrefix* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225SupportedPrefix */
+/* */
+/**************************************************************/
+
+/* List of H225SupportedPrefix */
+typedef DList H225_SeqOfH225SupportedPrefix;
+
+EXTERN int asn1PE_H225_SeqOfH225SupportedPrefix (OOCTXT* pctxt, H225_SeqOfH225SupportedPrefix* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225SupportedPrefix (OOCTXT* pctxt, H225_SeqOfH225SupportedPrefix* pvalue);
+
+/**************************************************************/
+/* */
+/* H310Caps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H310Caps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225H310Caps;
+
+EXTERN int asn1PE_H225H310Caps (OOCTXT* pctxt, H225H310Caps* pvalue);
+
+EXTERN int asn1PD_H225H310Caps (OOCTXT* pctxt, H225H310Caps* pvalue);
+
+/**************************************************************/
+/* */
+/* H320Caps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H320Caps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225H320Caps;
+
+EXTERN int asn1PE_H225H320Caps (OOCTXT* pctxt, H225H320Caps* pvalue);
+
+EXTERN int asn1PD_H225H320Caps (OOCTXT* pctxt, H225H320Caps* pvalue);
+
+/**************************************************************/
+/* */
+/* H321Caps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H321Caps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225H321Caps;
+
+EXTERN int asn1PE_H225H321Caps (OOCTXT* pctxt, H225H321Caps* pvalue);
+
+EXTERN int asn1PD_H225H321Caps (OOCTXT* pctxt, H225H321Caps* pvalue);
+
+/**************************************************************/
+/* */
+/* H322Caps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H322Caps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225H322Caps;
+
+EXTERN int asn1PE_H225H322Caps (OOCTXT* pctxt, H225H322Caps* pvalue);
+
+EXTERN int asn1PD_H225H322Caps (OOCTXT* pctxt, H225H322Caps* pvalue);
+
+/**************************************************************/
+/* */
+/* H323Caps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323Caps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225H323Caps;
+
+EXTERN int asn1PE_H225H323Caps (OOCTXT* pctxt, H225H323Caps* pvalue);
+
+EXTERN int asn1PD_H225H323Caps (OOCTXT* pctxt, H225H323Caps* pvalue);
+
+/**************************************************************/
+/* */
+/* H324Caps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H324Caps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225H324Caps;
+
+EXTERN int asn1PE_H225H324Caps (OOCTXT* pctxt, H225H324Caps* pvalue);
+
+EXTERN int asn1PD_H225H324Caps (OOCTXT* pctxt, H225H324Caps* pvalue);
+
+/**************************************************************/
+/* */
+/* VoiceCaps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225VoiceCaps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225VoiceCaps;
+
+EXTERN int asn1PE_H225VoiceCaps (OOCTXT* pctxt, H225VoiceCaps* pvalue);
+
+EXTERN int asn1PD_H225VoiceCaps (OOCTXT* pctxt, H225VoiceCaps* pvalue);
+
+/**************************************************************/
+/* */
+/* T120OnlyCaps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225T120OnlyCaps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225T120OnlyCaps;
+
+EXTERN int asn1PE_H225T120OnlyCaps (OOCTXT* pctxt, H225T120OnlyCaps* pvalue);
+
+EXTERN int asn1PD_H225T120OnlyCaps (OOCTXT* pctxt, H225T120OnlyCaps* pvalue);
+
+/**************************************************************/
+/* */
+/* NonStandardProtocol */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225NonStandardProtocol {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225NonStandardProtocol;
+
+EXTERN int asn1PE_H225NonStandardProtocol (OOCTXT* pctxt, H225NonStandardProtocol* pvalue);
+
+EXTERN int asn1PD_H225NonStandardProtocol (OOCTXT* pctxt, H225NonStandardProtocol* pvalue);
+
+/**************************************************************/
+/* */
+/* T38FaxAnnexbOnlyCaps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225T38FaxAnnexbOnlyCaps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+ H245DataProtocolCapability t38FaxProtocol;
+ H245T38FaxProfile t38FaxProfile;
+} H225T38FaxAnnexbOnlyCaps;
+
+EXTERN int asn1PE_H225T38FaxAnnexbOnlyCaps (OOCTXT* pctxt, H225T38FaxAnnexbOnlyCaps* pvalue);
+
+EXTERN int asn1PD_H225T38FaxAnnexbOnlyCaps (OOCTXT* pctxt, H225T38FaxAnnexbOnlyCaps* pvalue);
+
+/**************************************************************/
+/* */
+/* SIPCaps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225SIPCaps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225SIPCaps;
+
+EXTERN int asn1PE_H225SIPCaps (OOCTXT* pctxt, H225SIPCaps* pvalue);
+
+EXTERN int asn1PD_H225SIPCaps (OOCTXT* pctxt, H225SIPCaps* pvalue);
+
+/**************************************************************/
+/* */
+/* SupportedProtocols */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225SupportedProtocols_nonStandardData 1
+#define T_H225SupportedProtocols_h310 2
+#define T_H225SupportedProtocols_h320 3
+#define T_H225SupportedProtocols_h321 4
+#define T_H225SupportedProtocols_h322 5
+#define T_H225SupportedProtocols_h323 6
+#define T_H225SupportedProtocols_h324 7
+#define T_H225SupportedProtocols_voice 8
+#define T_H225SupportedProtocols_t120_only 9
+#define T_H225SupportedProtocols_nonStandardProtocol 10
+#define T_H225SupportedProtocols_t38FaxAnnexbOnly 11
+#define T_H225SupportedProtocols_sip 12
+#define T_H225SupportedProtocols_extElem1 13
+
+typedef struct EXTERN H225SupportedProtocols {
+ int t;
+ union {
+ /* t = 1 */
+ H225NonStandardParameter *nonStandardData;
+ /* t = 2 */
+ H225H310Caps *h310;
+ /* t = 3 */
+ H225H320Caps *h320;
+ /* t = 4 */
+ H225H321Caps *h321;
+ /* t = 5 */
+ H225H322Caps *h322;
+ /* t = 6 */
+ H225H323Caps *h323;
+ /* t = 7 */
+ H225H324Caps *h324;
+ /* t = 8 */
+ H225VoiceCaps *voice;
+ /* t = 9 */
+ H225T120OnlyCaps *t120_only;
+ /* t = 10 */
+ H225NonStandardProtocol *nonStandardProtocol;
+ /* t = 11 */
+ H225T38FaxAnnexbOnlyCaps *t38FaxAnnexbOnly;
+ /* t = 12 */
+ H225SIPCaps *sip;
+ /* t = 13 */
+ } u;
+} H225SupportedProtocols;
+
+EXTERN int asn1PE_H225SupportedProtocols (OOCTXT* pctxt, H225SupportedProtocols* pvalue);
+
+EXTERN int asn1PD_H225SupportedProtocols (OOCTXT* pctxt, H225SupportedProtocols* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225SupportedProtocols */
+/* */
+/**************************************************************/
+
+/* List of H225SupportedProtocols */
+typedef DList H225_SeqOfH225SupportedProtocols;
+
+EXTERN int asn1PE_H225_SeqOfH225SupportedProtocols (OOCTXT* pctxt, H225_SeqOfH225SupportedProtocols* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225SupportedProtocols (OOCTXT* pctxt, H225_SeqOfH225SupportedProtocols* pvalue);
+
+/**************************************************************/
+/* */
+/* GatewayInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GatewayInfo {
+ struct {
+ unsigned protocolPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ } m;
+ H225_SeqOfH225SupportedProtocols protocol;
+ H225NonStandardParameter nonStandardData;
+} H225GatewayInfo;
+
+EXTERN int asn1PE_H225GatewayInfo (OOCTXT* pctxt, H225GatewayInfo* pvalue);
+
+EXTERN int asn1PD_H225GatewayInfo (OOCTXT* pctxt, H225GatewayInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* McuInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225McuInfo {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned protocolPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225SupportedProtocols protocol;
+} H225McuInfo;
+
+EXTERN int asn1PE_H225McuInfo (OOCTXT* pctxt, H225McuInfo* pvalue);
+
+EXTERN int asn1PD_H225McuInfo (OOCTXT* pctxt, H225McuInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TerminalInfo {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+} H225TerminalInfo;
+
+EXTERN int asn1PE_H225TerminalInfo (OOCTXT* pctxt, H225TerminalInfo* pvalue);
+
+EXTERN int asn1PD_H225TerminalInfo (OOCTXT* pctxt, H225TerminalInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* TunnelledProtocolAlternateIdentifier */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TunnelledProtocolAlternateIdentifier {
+ struct {
+ unsigned protocolVariantPresent : 1;
+ } m;
+ ASN1IA5String protocolType;
+ ASN1IA5String protocolVariant;
+} H225TunnelledProtocolAlternateIdentifier;
+
+EXTERN int asn1PE_H225TunnelledProtocolAlternateIdentifier (OOCTXT* pctxt, H225TunnelledProtocolAlternateIdentifier* pvalue);
+
+EXTERN int asn1PD_H225TunnelledProtocolAlternateIdentifier (OOCTXT* pctxt, H225TunnelledProtocolAlternateIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* TunnelledProtocol_id */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225TunnelledProtocol_id_tunnelledProtocolObjectID 1
+#define T_H225TunnelledProtocol_id_tunnelledProtocolAlternateID 2
+#define T_H225TunnelledProtocol_id_extElem1 3
+
+typedef struct EXTERN H225TunnelledProtocol_id {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1OBJID *tunnelledProtocolObjectID;
+ /* t = 2 */
+ H225TunnelledProtocolAlternateIdentifier *tunnelledProtocolAlternateID;
+ /* t = 3 */
+ } u;
+} H225TunnelledProtocol_id;
+
+EXTERN int asn1PE_H225TunnelledProtocol_id (OOCTXT* pctxt, H225TunnelledProtocol_id* pvalue);
+
+EXTERN int asn1PD_H225TunnelledProtocol_id (OOCTXT* pctxt, H225TunnelledProtocol_id* pvalue);
+
+/**************************************************************/
+/* */
+/* TunnelledProtocol */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TunnelledProtocol {
+ struct {
+ unsigned subIdentifierPresent : 1;
+ } m;
+ H225TunnelledProtocol_id id;
+ ASN1IA5String subIdentifier;
+} H225TunnelledProtocol;
+
+EXTERN int asn1PE_H225TunnelledProtocol (OOCTXT* pctxt, H225TunnelledProtocol* pvalue);
+
+EXTERN int asn1PD_H225TunnelledProtocol (OOCTXT* pctxt, H225TunnelledProtocol* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TunnelledProtocol */
+/* */
+/**************************************************************/
+
+/* List of H225TunnelledProtocol */
+typedef DList H225_SeqOfH225TunnelledProtocol;
+
+EXTERN int asn1PE_H225_SeqOfH225TunnelledProtocol (OOCTXT* pctxt, H225_SeqOfH225TunnelledProtocol* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225TunnelledProtocol (OOCTXT* pctxt, H225_SeqOfH225TunnelledProtocol* pvalue);
+
+/**************************************************************/
+/* */
+/* EndpointType */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225EndpointType {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned vendorPresent : 1;
+ unsigned gatekeeperPresent : 1;
+ unsigned gatewayPresent : 1;
+ unsigned mcuPresent : 1;
+ unsigned terminalPresent : 1;
+ unsigned setPresent : 1;
+ unsigned supportedTunnelledProtocolsPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225VendorIdentifier vendor;
+ H225GatekeeperInfo gatekeeper;
+ H225GatewayInfo gateway;
+ H225McuInfo mcu;
+ H225TerminalInfo terminal;
+ ASN1BOOL mc;
+ ASN1BOOL undefinedNode;
+ H225EndpointType_set set;
+ H225_SeqOfH225TunnelledProtocol supportedTunnelledProtocols;
+} H225EndpointType;
+
+EXTERN int asn1PE_H225EndpointType (OOCTXT* pctxt, H225EndpointType* pvalue);
+
+EXTERN int asn1PD_H225EndpointType (OOCTXT* pctxt, H225EndpointType* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CallReferenceValue */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225_SeqOfH225CallReferenceValue {
+ ASN1UINT n;
+ H225CallReferenceValue *elem;
+} H225_SeqOfH225CallReferenceValue;
+
+EXTERN int asn1PE_H225_SeqOfH225CallReferenceValue (OOCTXT* pctxt, H225_SeqOfH225CallReferenceValue* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225CallReferenceValue (OOCTXT* pctxt, H225_SeqOfH225CallReferenceValue* pvalue);
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_conferenceGoal */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225Setup_UUIE_conferenceGoal_create 1
+#define T_H225Setup_UUIE_conferenceGoal_join 2
+#define T_H225Setup_UUIE_conferenceGoal_invite 3
+#define T_H225Setup_UUIE_conferenceGoal_capability_negotiation 4
+#define T_H225Setup_UUIE_conferenceGoal_callIndependentSupplementaryService 5
+#define T_H225Setup_UUIE_conferenceGoal_extElem1 6
+
+typedef struct EXTERN H225Setup_UUIE_conferenceGoal {
+ int t;
+} H225Setup_UUIE_conferenceGoal;
+
+EXTERN int asn1PE_H225Setup_UUIE_conferenceGoal (OOCTXT* pctxt, H225Setup_UUIE_conferenceGoal* pvalue);
+
+EXTERN int asn1PD_H225Setup_UUIE_conferenceGoal (OOCTXT* pctxt, H225Setup_UUIE_conferenceGoal* pvalue);
+
+/**************************************************************/
+/* */
+/* Q954Details */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Q954Details {
+ ASN1BOOL conferenceCalling;
+ ASN1BOOL threePartyService;
+} H225Q954Details;
+
+EXTERN int asn1PE_H225Q954Details (OOCTXT* pctxt, H225Q954Details* pvalue);
+
+EXTERN int asn1PD_H225Q954Details (OOCTXT* pctxt, H225Q954Details* pvalue);
+
+/**************************************************************/
+/* */
+/* QseriesOptions */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225QseriesOptions {
+ ASN1BOOL q932Full;
+ ASN1BOOL q951Full;
+ ASN1BOOL q952Full;
+ ASN1BOOL q953Full;
+ ASN1BOOL q955Full;
+ ASN1BOOL q956Full;
+ ASN1BOOL q957Full;
+ H225Q954Details q954Info;
+} H225QseriesOptions;
+
+EXTERN int asn1PE_H225QseriesOptions (OOCTXT* pctxt, H225QseriesOptions* pvalue);
+
+EXTERN int asn1PD_H225QseriesOptions (OOCTXT* pctxt, H225QseriesOptions* pvalue);
+
+/**************************************************************/
+/* */
+/* CallType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225CallType_pointToPoint 1
+#define T_H225CallType_oneToN 2
+#define T_H225CallType_nToOne 3
+#define T_H225CallType_nToN 4
+#define T_H225CallType_extElem1 5
+
+typedef struct EXTERN H225CallType {
+ int t;
+} H225CallType;
+
+EXTERN int asn1PE_H225CallType (OOCTXT* pctxt, H225CallType* pvalue);
+
+EXTERN int asn1PD_H225CallType (OOCTXT* pctxt, H225CallType* pvalue);
+
+/**************************************************************/
+/* */
+/* CallIdentifier */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallIdentifier {
+ H225GloballyUniqueID guid;
+} H225CallIdentifier;
+
+EXTERN int asn1PE_H225CallIdentifier (OOCTXT* pctxt, H225CallIdentifier* pvalue);
+
+EXTERN int asn1PD_H225CallIdentifier (OOCTXT* pctxt, H225CallIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* SecurityServiceMode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225SecurityServiceMode_nonStandard 1
+#define T_H225SecurityServiceMode_none 2
+#define T_H225SecurityServiceMode_default_ 3
+#define T_H225SecurityServiceMode_extElem1 4
+
+typedef struct EXTERN H225SecurityServiceMode {
+ int t;
+ union {
+ /* t = 1 */
+ H225NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ } u;
+} H225SecurityServiceMode;
+
+EXTERN int asn1PE_H225SecurityServiceMode (OOCTXT* pctxt, H225SecurityServiceMode* pvalue);
+
+EXTERN int asn1PD_H225SecurityServiceMode (OOCTXT* pctxt, H225SecurityServiceMode* pvalue);
+
+/**************************************************************/
+/* */
+/* SecurityCapabilities */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225SecurityCapabilities {
+ struct {
+ unsigned nonStandardPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandard;
+ H225SecurityServiceMode encryption;
+ H225SecurityServiceMode authenticaton;
+ H225SecurityServiceMode integrity;
+} H225SecurityCapabilities;
+
+EXTERN int asn1PE_H225SecurityCapabilities (OOCTXT* pctxt, H225SecurityCapabilities* pvalue);
+
+EXTERN int asn1PD_H225SecurityCapabilities (OOCTXT* pctxt, H225SecurityCapabilities* pvalue);
+
+/**************************************************************/
+/* */
+/* H245Security */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225H245Security_nonStandard 1
+#define T_H225H245Security_noSecurity 2
+#define T_H225H245Security_tls 3
+#define T_H225H245Security_ipsec 4
+#define T_H225H245Security_extElem1 5
+
+typedef struct EXTERN H225H245Security {
+ int t;
+ union {
+ /* t = 1 */
+ H225NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ H225SecurityCapabilities *tls;
+ /* t = 4 */
+ H225SecurityCapabilities *ipsec;
+ /* t = 5 */
+ } u;
+} H225H245Security;
+
+EXTERN int asn1PE_H225H245Security (OOCTXT* pctxt, H225H245Security* pvalue);
+
+EXTERN int asn1PD_H225H245Security (OOCTXT* pctxt, H225H245Security* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225H245Security */
+/* */
+/**************************************************************/
+
+/* List of H225H245Security */
+typedef DList H225_SeqOfH225H245Security;
+
+EXTERN int asn1PE_H225_SeqOfH225H245Security (OOCTXT* pctxt, H225_SeqOfH225H245Security* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225H245Security (OOCTXT* pctxt, H225_SeqOfH225H245Security* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ClearToken */
+/* */
+/**************************************************************/
+
+/* List of H235ClearToken */
+typedef DList H225_SeqOfH225ClearToken;
+
+EXTERN int asn1PE_H225_SeqOfH225ClearToken (OOCTXT* pctxt, H225_SeqOfH225ClearToken* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225ClearToken (OOCTXT* pctxt, H225_SeqOfH225ClearToken* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoEPPwdHash */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CryptoH323Token_cryptoEPPwdHash {
+ H225AliasAddress alias;
+ H235TimeStamp timeStamp;
+ H235HASHED token;
+} H225CryptoH323Token_cryptoEPPwdHash;
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoEPPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPPwdHash* pvalue);
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoEPPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPPwdHash* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoGKPwdHash */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CryptoH323Token_cryptoGKPwdHash {
+ H225GatekeeperIdentifier gatekeeperId;
+ H235TimeStamp timeStamp;
+ H235HASHED token;
+} H225CryptoH323Token_cryptoGKPwdHash;
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoGKPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKPwdHash* pvalue);
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoGKPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKPwdHash* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoEPCert */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CryptoH323Token_cryptoEPCert {
+ H235EncodedPwdCertToken toBeSigned;
+ ASN1OBJID algorithmOID;
+ H235Params paramS;
+ ASN1DynBitStr signature;
+} H225CryptoH323Token_cryptoEPCert;
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoEPCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPCert* pvalue);
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoEPCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPCert* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoGKCert */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CryptoH323Token_cryptoGKCert {
+ H235EncodedPwdCertToken toBeSigned;
+ ASN1OBJID algorithmOID;
+ H235Params paramS;
+ ASN1DynBitStr signature;
+} H225CryptoH323Token_cryptoGKCert;
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoGKCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKCert* pvalue);
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoGKCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKCert* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoFastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CryptoH323Token_cryptoFastStart {
+ H225EncodedFastStartToken toBeSigned;
+ ASN1OBJID algorithmOID;
+ H235Params paramS;
+ ASN1DynBitStr signature;
+} H225CryptoH323Token_cryptoFastStart;
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoFastStart (OOCTXT* pctxt, H225CryptoH323Token_cryptoFastStart* pvalue);
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoFastStart (OOCTXT* pctxt, H225CryptoH323Token_cryptoFastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoH323Token */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225CryptoH323Token_cryptoEPPwdHash 1
+#define T_H225CryptoH323Token_cryptoGKPwdHash 2
+#define T_H225CryptoH323Token_cryptoEPPwdEncr 3
+#define T_H225CryptoH323Token_cryptoGKPwdEncr 4
+#define T_H225CryptoH323Token_cryptoEPCert 5
+#define T_H225CryptoH323Token_cryptoGKCert 6
+#define T_H225CryptoH323Token_cryptoFastStart 7
+#define T_H225CryptoH323Token_nestedcryptoToken 8
+#define T_H225CryptoH323Token_extElem1 9
+
+typedef struct EXTERN H225CryptoH323Token {
+ int t;
+ union {
+ /* t = 1 */
+ H225CryptoH323Token_cryptoEPPwdHash *cryptoEPPwdHash;
+ /* t = 2 */
+ H225CryptoH323Token_cryptoGKPwdHash *cryptoGKPwdHash;
+ /* t = 3 */
+ H235ENCRYPTED *cryptoEPPwdEncr;
+ /* t = 4 */
+ H235ENCRYPTED *cryptoGKPwdEncr;
+ /* t = 5 */
+ H225CryptoH323Token_cryptoEPCert *cryptoEPCert;
+ /* t = 6 */
+ H225CryptoH323Token_cryptoGKCert *cryptoGKCert;
+ /* t = 7 */
+ H225CryptoH323Token_cryptoFastStart *cryptoFastStart;
+ /* t = 8 */
+ H235CryptoToken *nestedcryptoToken;
+ /* t = 9 */
+ } u;
+} H225CryptoH323Token;
+
+EXTERN int asn1PE_H225CryptoH323Token (OOCTXT* pctxt, H225CryptoH323Token* pvalue);
+
+EXTERN int asn1PD_H225CryptoH323Token (OOCTXT* pctxt, H225CryptoH323Token* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CryptoH323Token */
+/* */
+/**************************************************************/
+
+/* List of H225CryptoH323Token */
+typedef DList H225_SeqOfH225CryptoH323Token;
+
+EXTERN int asn1PE_H225_SeqOfH225CryptoH323Token (OOCTXT* pctxt, H225_SeqOfH225CryptoH323Token* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225CryptoH323Token (OOCTXT* pctxt, H225_SeqOfH225CryptoH323Token* pvalue);
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Setup_UUIE_fastStart {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225Setup_UUIE_fastStart;
+
+EXTERN int asn1PE_H225Setup_UUIE_fastStart (OOCTXT* pctxt, H225Setup_UUIE_fastStart* pvalue);
+
+EXTERN int asn1PD_H225Setup_UUIE_fastStart (OOCTXT* pctxt, H225Setup_UUIE_fastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* ScnConnectionType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225ScnConnectionType_unknown 1
+#define T_H225ScnConnectionType_bChannel 2
+#define T_H225ScnConnectionType_hybrid2x64 3
+#define T_H225ScnConnectionType_hybrid384 4
+#define T_H225ScnConnectionType_hybrid1536 5
+#define T_H225ScnConnectionType_hybrid1920 6
+#define T_H225ScnConnectionType_multirate 7
+#define T_H225ScnConnectionType_extElem1 8
+
+typedef struct EXTERN H225ScnConnectionType {
+ int t;
+} H225ScnConnectionType;
+
+EXTERN int asn1PE_H225ScnConnectionType (OOCTXT* pctxt, H225ScnConnectionType* pvalue);
+
+EXTERN int asn1PD_H225ScnConnectionType (OOCTXT* pctxt, H225ScnConnectionType* pvalue);
+
+/**************************************************************/
+/* */
+/* ScnConnectionAggregation */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225ScnConnectionAggregation_auto_ 1
+#define T_H225ScnConnectionAggregation_none 2
+#define T_H225ScnConnectionAggregation_h221 3
+#define T_H225ScnConnectionAggregation_bonded_mode1 4
+#define T_H225ScnConnectionAggregation_bonded_mode2 5
+#define T_H225ScnConnectionAggregation_bonded_mode3 6
+#define T_H225ScnConnectionAggregation_extElem1 7
+
+typedef struct EXTERN H225ScnConnectionAggregation {
+ int t;
+} H225ScnConnectionAggregation;
+
+EXTERN int asn1PE_H225ScnConnectionAggregation (OOCTXT* pctxt, H225ScnConnectionAggregation* pvalue);
+
+EXTERN int asn1PD_H225ScnConnectionAggregation (OOCTXT* pctxt, H225ScnConnectionAggregation* pvalue);
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_connectionParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Setup_UUIE_connectionParameters {
+ H225ScnConnectionType connectionType;
+ ASN1USINT numberOfScnConnections;
+ H225ScnConnectionAggregation connectionAggregation;
+} H225Setup_UUIE_connectionParameters;
+
+EXTERN int asn1PE_H225Setup_UUIE_connectionParameters (OOCTXT* pctxt, H225Setup_UUIE_connectionParameters* pvalue);
+
+EXTERN int asn1PD_H225Setup_UUIE_connectionParameters (OOCTXT* pctxt, H225Setup_UUIE_connectionParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_language */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Setup_UUIE_language {
+ ASN1UINT n;
+ ASN1IA5String *elem;
+} H225Setup_UUIE_language;
+
+EXTERN int asn1PE_H225Setup_UUIE_language (OOCTXT* pctxt, H225Setup_UUIE_language* pvalue);
+
+EXTERN int asn1PD_H225Setup_UUIE_language (OOCTXT* pctxt, H225Setup_UUIE_language* pvalue);
+
+/**************************************************************/
+/* */
+/* PresentationIndicator */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225PresentationIndicator_presentationAllowed 1
+#define T_H225PresentationIndicator_presentationRestricted 2
+#define T_H225PresentationIndicator_addressNotAvailable 3
+#define T_H225PresentationIndicator_extElem1 4
+
+typedef struct EXTERN H225PresentationIndicator {
+ int t;
+} H225PresentationIndicator;
+
+EXTERN int asn1PE_H225PresentationIndicator (OOCTXT* pctxt, H225PresentationIndicator* pvalue);
+
+EXTERN int asn1PD_H225PresentationIndicator (OOCTXT* pctxt, H225PresentationIndicator* pvalue);
+
+/**************************************************************/
+/* */
+/* CallCreditServiceControl_billingMode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225CallCreditServiceControl_billingMode_credit 1
+#define T_H225CallCreditServiceControl_billingMode_debit 2
+#define T_H225CallCreditServiceControl_billingMode_extElem1 3
+
+typedef struct EXTERN H225CallCreditServiceControl_billingMode {
+ int t;
+} H225CallCreditServiceControl_billingMode;
+
+EXTERN int asn1PE_H225CallCreditServiceControl_billingMode (OOCTXT* pctxt, H225CallCreditServiceControl_billingMode* pvalue);
+
+EXTERN int asn1PD_H225CallCreditServiceControl_billingMode (OOCTXT* pctxt, H225CallCreditServiceControl_billingMode* pvalue);
+
+/**************************************************************/
+/* */
+/* CallCreditServiceControl_callStartingPoint */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225CallCreditServiceControl_callStartingPoint_alerting 1
+#define T_H225CallCreditServiceControl_callStartingPoint_connect 2
+#define T_H225CallCreditServiceControl_callStartingPoint_extElem1 3
+
+typedef struct EXTERN H225CallCreditServiceControl_callStartingPoint {
+ int t;
+} H225CallCreditServiceControl_callStartingPoint;
+
+EXTERN int asn1PE_H225CallCreditServiceControl_callStartingPoint (OOCTXT* pctxt, H225CallCreditServiceControl_callStartingPoint* pvalue);
+
+EXTERN int asn1PD_H225CallCreditServiceControl_callStartingPoint (OOCTXT* pctxt, H225CallCreditServiceControl_callStartingPoint* pvalue);
+
+/**************************************************************/
+/* */
+/* CallCreditServiceControl */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallCreditServiceControl {
+ struct {
+ unsigned amountStringPresent : 1;
+ unsigned billingModePresent : 1;
+ unsigned callDurationLimitPresent : 1;
+ unsigned enforceCallDurationLimitPresent : 1;
+ unsigned callStartingPointPresent : 1;
+ } m;
+ ASN1BMPString amountString;
+ H225CallCreditServiceControl_billingMode billingMode;
+ ASN1UINT callDurationLimit;
+ ASN1BOOL enforceCallDurationLimit;
+ H225CallCreditServiceControl_callStartingPoint callStartingPoint;
+} H225CallCreditServiceControl;
+
+EXTERN int asn1PE_H225CallCreditServiceControl (OOCTXT* pctxt, H225CallCreditServiceControl* pvalue);
+
+EXTERN int asn1PD_H225CallCreditServiceControl (OOCTXT* pctxt, H225CallCreditServiceControl* pvalue);
+
+/**************************************************************/
+/* */
+/* ServiceControlDescriptor */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225ServiceControlDescriptor_url 1
+#define T_H225ServiceControlDescriptor_signal 2
+#define T_H225ServiceControlDescriptor_nonStandard 3
+#define T_H225ServiceControlDescriptor_callCreditServiceControl 4
+#define T_H225ServiceControlDescriptor_extElem1 5
+
+typedef struct EXTERN H225ServiceControlDescriptor {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1IA5String url;
+ /* t = 2 */
+ H225H248SignalsDescriptor *signal;
+ /* t = 3 */
+ H225NonStandardParameter *nonStandard;
+ /* t = 4 */
+ H225CallCreditServiceControl *callCreditServiceControl;
+ /* t = 5 */
+ } u;
+} H225ServiceControlDescriptor;
+
+EXTERN int asn1PE_H225ServiceControlDescriptor (OOCTXT* pctxt, H225ServiceControlDescriptor* pvalue);
+
+EXTERN int asn1PD_H225ServiceControlDescriptor (OOCTXT* pctxt, H225ServiceControlDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* ServiceControlSession_reason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225ServiceControlSession_reason_open 1
+#define T_H225ServiceControlSession_reason_refresh 2
+#define T_H225ServiceControlSession_reason_close 3
+#define T_H225ServiceControlSession_reason_extElem1 4
+
+typedef struct EXTERN H225ServiceControlSession_reason {
+ int t;
+} H225ServiceControlSession_reason;
+
+EXTERN int asn1PE_H225ServiceControlSession_reason (OOCTXT* pctxt, H225ServiceControlSession_reason* pvalue);
+
+EXTERN int asn1PD_H225ServiceControlSession_reason (OOCTXT* pctxt, H225ServiceControlSession_reason* pvalue);
+
+/**************************************************************/
+/* */
+/* ServiceControlSession */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ServiceControlSession {
+ struct {
+ unsigned contentsPresent : 1;
+ } m;
+ ASN1UINT8 sessionId;
+ H225ServiceControlDescriptor contents;
+ H225ServiceControlSession_reason reason;
+} H225ServiceControlSession;
+
+EXTERN int asn1PE_H225ServiceControlSession (OOCTXT* pctxt, H225ServiceControlSession* pvalue);
+
+EXTERN int asn1PD_H225ServiceControlSession (OOCTXT* pctxt, H225ServiceControlSession* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ServiceControlSession */
+/* */
+/**************************************************************/
+
+/* List of H225ServiceControlSession */
+typedef DList H225_SeqOfH225ServiceControlSession;
+
+EXTERN int asn1PE_H225_SeqOfH225ServiceControlSession (OOCTXT* pctxt, H225_SeqOfH225ServiceControlSession* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225ServiceControlSession (OOCTXT* pctxt, H225_SeqOfH225ServiceControlSession* pvalue);
+
+/**************************************************************/
+/* */
+/* CarrierInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CarrierInfo {
+ struct {
+ unsigned carrierIdentificationCodePresent : 1;
+ unsigned carrierNamePresent : 1;
+ } m;
+ H225CarrierInfo_carrierIdentificationCode carrierIdentificationCode;
+ ASN1IA5String carrierName;
+} H225CarrierInfo;
+
+EXTERN int asn1PE_H225CarrierInfo (OOCTXT* pctxt, H225CarrierInfo* pvalue);
+
+EXTERN int asn1PD_H225CarrierInfo (OOCTXT* pctxt, H225CarrierInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* CallsAvailable */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallsAvailable {
+ struct {
+ unsigned groupPresent : 1;
+ unsigned carrierPresent : 1;
+ } m;
+ ASN1UINT calls;
+ ASN1IA5String group;
+ H225CarrierInfo carrier;
+} H225CallsAvailable;
+
+EXTERN int asn1PE_H225CallsAvailable (OOCTXT* pctxt, H225CallsAvailable* pvalue);
+
+EXTERN int asn1PD_H225CallsAvailable (OOCTXT* pctxt, H225CallsAvailable* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CallsAvailable */
+/* */
+/**************************************************************/
+
+/* List of H225CallsAvailable */
+typedef DList H225_SeqOfH225CallsAvailable;
+
+EXTERN int asn1PE_H225_SeqOfH225CallsAvailable (OOCTXT* pctxt, H225_SeqOfH225CallsAvailable* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225CallsAvailable (OOCTXT* pctxt, H225_SeqOfH225CallsAvailable* pvalue);
+
+/**************************************************************/
+/* */
+/* CallCapacityInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallCapacityInfo {
+ struct {
+ unsigned voiceGwCallsAvailablePresent : 1;
+ unsigned h310GwCallsAvailablePresent : 1;
+ unsigned h320GwCallsAvailablePresent : 1;
+ unsigned h321GwCallsAvailablePresent : 1;
+ unsigned h322GwCallsAvailablePresent : 1;
+ unsigned h323GwCallsAvailablePresent : 1;
+ unsigned h324GwCallsAvailablePresent : 1;
+ unsigned t120OnlyGwCallsAvailablePresent : 1;
+ unsigned t38FaxAnnexbOnlyGwCallsAvailablePresent : 1;
+ unsigned terminalCallsAvailablePresent : 1;
+ unsigned mcuCallsAvailablePresent : 1;
+ unsigned sipGwCallsAvailablePresent : 1;
+ } m;
+ H225_SeqOfH225CallsAvailable voiceGwCallsAvailable;
+ H225_SeqOfH225CallsAvailable h310GwCallsAvailable;
+ H225_SeqOfH225CallsAvailable h320GwCallsAvailable;
+ H225_SeqOfH225CallsAvailable h321GwCallsAvailable;
+ H225_SeqOfH225CallsAvailable h322GwCallsAvailable;
+ H225_SeqOfH225CallsAvailable h323GwCallsAvailable;
+ H225_SeqOfH225CallsAvailable h324GwCallsAvailable;
+ H225_SeqOfH225CallsAvailable t120OnlyGwCallsAvailable;
+ H225_SeqOfH225CallsAvailable t38FaxAnnexbOnlyGwCallsAvailable;
+ H225_SeqOfH225CallsAvailable terminalCallsAvailable;
+ H225_SeqOfH225CallsAvailable mcuCallsAvailable;
+ H225_SeqOfH225CallsAvailable sipGwCallsAvailable;
+} H225CallCapacityInfo;
+
+EXTERN int asn1PE_H225CallCapacityInfo (OOCTXT* pctxt, H225CallCapacityInfo* pvalue);
+
+EXTERN int asn1PD_H225CallCapacityInfo (OOCTXT* pctxt, H225CallCapacityInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* CallCapacity */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallCapacity {
+ struct {
+ unsigned maximumCallCapacityPresent : 1;
+ unsigned currentCallCapacityPresent : 1;
+ } m;
+ H225CallCapacityInfo maximumCallCapacity;
+ H225CallCapacityInfo currentCallCapacity;
+} H225CallCapacity;
+
+EXTERN int asn1PE_H225CallCapacity (OOCTXT* pctxt, H225CallCapacity* pvalue);
+
+EXTERN int asn1PD_H225CallCapacity (OOCTXT* pctxt, H225CallCapacity* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CicInfo_cic_element */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225_SeqOfH225CicInfo_cic_element {
+ ASN1UINT n;
+ H225CicInfo_cic_element *elem;
+} H225_SeqOfH225CicInfo_cic_element;
+
+EXTERN int asn1PE_H225_SeqOfH225CicInfo_cic_element (OOCTXT* pctxt, H225_SeqOfH225CicInfo_cic_element* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225CicInfo_cic_element (OOCTXT* pctxt, H225_SeqOfH225CicInfo_cic_element* pvalue);
+
+/**************************************************************/
+/* */
+/* CicInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CicInfo {
+ H225_SeqOfH225CicInfo_cic_element cic;
+ H225CicInfo_pointCode pointCode;
+} H225CicInfo;
+
+EXTERN int asn1PE_H225CicInfo (OOCTXT* pctxt, H225CicInfo* pvalue);
+
+EXTERN int asn1PD_H225CicInfo (OOCTXT* pctxt, H225CicInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* GroupID_member */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GroupID_member {
+ ASN1UINT n;
+ ASN1USINT *elem;
+} H225GroupID_member;
+
+EXTERN int asn1PE_H225GroupID_member (OOCTXT* pctxt, H225GroupID_member* pvalue);
+
+EXTERN int asn1PD_H225GroupID_member (OOCTXT* pctxt, H225GroupID_member* pvalue);
+
+/**************************************************************/
+/* */
+/* GroupID */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GroupID {
+ struct {
+ unsigned memberPresent : 1;
+ } m;
+ H225GroupID_member member;
+ ASN1IA5String group;
+} H225GroupID;
+
+EXTERN int asn1PE_H225GroupID (OOCTXT* pctxt, H225GroupID* pvalue);
+
+EXTERN int asn1PD_H225GroupID (OOCTXT* pctxt, H225GroupID* pvalue);
+
+/**************************************************************/
+/* */
+/* CircuitIdentifier */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CircuitIdentifier {
+ struct {
+ unsigned cicPresent : 1;
+ unsigned groupPresent : 1;
+ unsigned carrierPresent : 1;
+ } m;
+ H225CicInfo cic;
+ H225GroupID group;
+ H225CarrierInfo carrier;
+} H225CircuitIdentifier;
+
+EXTERN int asn1PE_H225CircuitIdentifier (OOCTXT* pctxt, H225CircuitIdentifier* pvalue);
+
+EXTERN int asn1PD_H225CircuitIdentifier (OOCTXT* pctxt, H225CircuitIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225GenericData */
+/* */
+/**************************************************************/
+
+/* List of H225GenericData */
+typedef DList H225_SeqOfH225GenericData;
+
+EXTERN int asn1PE_H225_SeqOfH225GenericData (OOCTXT* pctxt, H225_SeqOfH225GenericData* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225GenericData (OOCTXT* pctxt, H225_SeqOfH225GenericData* pvalue);
+
+/**************************************************************/
+/* */
+/* CircuitInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CircuitInfo {
+ struct {
+ unsigned sourceCircuitIDPresent : 1;
+ unsigned destinationCircuitIDPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225CircuitIdentifier sourceCircuitID;
+ H225CircuitIdentifier destinationCircuitID;
+ H225_SeqOfH225GenericData genericData;
+} H225CircuitInfo;
+
+EXTERN int asn1PE_H225CircuitInfo (OOCTXT* pctxt, H225CircuitInfo* pvalue);
+
+EXTERN int asn1PD_H225CircuitInfo (OOCTXT* pctxt, H225CircuitInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225FeatureDescriptor */
+/* */
+/**************************************************************/
+
+/* List of H225FeatureDescriptor */
+typedef DList H225_SeqOfH225FeatureDescriptor;
+
+EXTERN int asn1PE_H225_SeqOfH225FeatureDescriptor (OOCTXT* pctxt, H225_SeqOfH225FeatureDescriptor* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225FeatureDescriptor (OOCTXT* pctxt, H225_SeqOfH225FeatureDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_parallelH245Control */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Setup_UUIE_parallelH245Control {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225Setup_UUIE_parallelH245Control;
+
+EXTERN int asn1PE_H225Setup_UUIE_parallelH245Control (OOCTXT* pctxt, H225Setup_UUIE_parallelH245Control* pvalue);
+
+EXTERN int asn1PD_H225Setup_UUIE_parallelH245Control (OOCTXT* pctxt, H225Setup_UUIE_parallelH245Control* pvalue);
+
+/**************************************************************/
+/* */
+/* ExtendedAliasAddress */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ExtendedAliasAddress {
+ struct {
+ unsigned presentationIndicatorPresent : 1;
+ unsigned screeningIndicatorPresent : 1;
+ } m;
+ H225AliasAddress address;
+ H225PresentationIndicator presentationIndicator;
+ H225ScreeningIndicator screeningIndicator;
+} H225ExtendedAliasAddress;
+
+EXTERN int asn1PE_H225ExtendedAliasAddress (OOCTXT* pctxt, H225ExtendedAliasAddress* pvalue);
+
+EXTERN int asn1PD_H225ExtendedAliasAddress (OOCTXT* pctxt, H225ExtendedAliasAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ExtendedAliasAddress */
+/* */
+/**************************************************************/
+
+/* List of H225ExtendedAliasAddress */
+typedef DList H225_SeqOfH225ExtendedAliasAddress;
+
+EXTERN int asn1PE_H225_SeqOfH225ExtendedAliasAddress (OOCTXT* pctxt, H225_SeqOfH225ExtendedAliasAddress* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225ExtendedAliasAddress (OOCTXT* pctxt, H225_SeqOfH225ExtendedAliasAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* Setup_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Setup_UUIE {
+ struct {
+ unsigned h245AddressPresent : 1;
+ unsigned sourceAddressPresent : 1;
+ unsigned destinationAddressPresent : 1;
+ unsigned destCallSignalAddressPresent : 1;
+ unsigned destExtraCallInfoPresent : 1;
+ unsigned destExtraCRVPresent : 1;
+ unsigned callServicesPresent : 1;
+ unsigned sourceCallSignalAddressPresent : 1;
+ unsigned remoteExtensionAddressPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned h245SecurityCapabilityPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned fastStartPresent : 1;
+ unsigned mediaWaitForConnectPresent : 1;
+ unsigned canOverlapSendPresent : 1;
+ unsigned endpointIdentifierPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned connectionParametersPresent : 1;
+ unsigned languagePresent : 1;
+ unsigned presentationIndicatorPresent : 1;
+ unsigned screeningIndicatorPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned symmetricOperationRequiredPresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned desiredProtocolsPresent : 1;
+ unsigned neededFeaturesPresent : 1;
+ unsigned desiredFeaturesPresent : 1;
+ unsigned supportedFeaturesPresent : 1;
+ unsigned parallelH245ControlPresent : 1;
+ unsigned additionalSourceAddressesPresent : 1;
+ unsigned hopCountPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225TransportAddress h245Address;
+ H225_SeqOfH225AliasAddress sourceAddress;
+ H225EndpointType sourceInfo;
+ H225_SeqOfH225AliasAddress destinationAddress;
+ H225TransportAddress destCallSignalAddress;
+ H225_SeqOfH225AliasAddress destExtraCallInfo;
+ H225_SeqOfH225CallReferenceValue destExtraCRV;
+ ASN1BOOL activeMC;
+ H225ConferenceIdentifier conferenceID;
+ H225Setup_UUIE_conferenceGoal conferenceGoal;
+ H225QseriesOptions callServices;
+ H225CallType callType;
+ H225TransportAddress sourceCallSignalAddress;
+ H225AliasAddress remoteExtensionAddress;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225H245Security h245SecurityCapability;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225Setup_UUIE_fastStart fastStart;
+ ASN1BOOL mediaWaitForConnect;
+ ASN1BOOL canOverlapSend;
+ H225EndpointIdentifier endpointIdentifier;
+ ASN1BOOL multipleCalls;
+ ASN1BOOL maintainConnection;
+ H225Setup_UUIE_connectionParameters connectionParameters;
+ H225Setup_UUIE_language language;
+ H225PresentationIndicator presentationIndicator;
+ H225ScreeningIndicator screeningIndicator;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225CallCapacity capacity;
+ H225CircuitInfo circuitInfo;
+ H225_SeqOfH225SupportedProtocols desiredProtocols;
+ H225_SeqOfH225FeatureDescriptor neededFeatures;
+ H225_SeqOfH225FeatureDescriptor desiredFeatures;
+ H225_SeqOfH225FeatureDescriptor supportedFeatures;
+ H225Setup_UUIE_parallelH245Control parallelH245Control;
+ H225_SeqOfH225ExtendedAliasAddress additionalSourceAddresses;
+ ASN1UINT8 hopCount;
+} H225Setup_UUIE;
+
+EXTERN int asn1PE_H225Setup_UUIE (OOCTXT* pctxt, H225Setup_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Setup_UUIE (OOCTXT* pctxt, H225Setup_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* CallProceeding_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallProceeding_UUIE_fastStart {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225CallProceeding_UUIE_fastStart;
+
+EXTERN int asn1PE_H225CallProceeding_UUIE_fastStart (OOCTXT* pctxt, H225CallProceeding_UUIE_fastStart* pvalue);
+
+EXTERN int asn1PD_H225CallProceeding_UUIE_fastStart (OOCTXT* pctxt, H225CallProceeding_UUIE_fastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* FeatureSet */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225FeatureSet {
+ struct {
+ unsigned neededFeaturesPresent : 1;
+ unsigned desiredFeaturesPresent : 1;
+ unsigned supportedFeaturesPresent : 1;
+ } m;
+ ASN1BOOL replacementFeatureSet;
+ H225_SeqOfH225FeatureDescriptor neededFeatures;
+ H225_SeqOfH225FeatureDescriptor desiredFeatures;
+ H225_SeqOfH225FeatureDescriptor supportedFeatures;
+} H225FeatureSet;
+
+EXTERN int asn1PE_H225FeatureSet (OOCTXT* pctxt, H225FeatureSet* pvalue);
+
+EXTERN int asn1PD_H225FeatureSet (OOCTXT* pctxt, H225FeatureSet* pvalue);
+
+/**************************************************************/
+/* */
+/* CallProceeding_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallProceeding_UUIE {
+ struct {
+ unsigned h245AddressPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned h245SecurityModePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned fastStartPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned fastConnectRefusedPresent : 1;
+ unsigned featureSetPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225EndpointType destinationInfo;
+ H225TransportAddress h245Address;
+ H225CallIdentifier callIdentifier;
+ H225H245Security h245SecurityMode;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225CallProceeding_UUIE_fastStart fastStart;
+ ASN1BOOL multipleCalls;
+ ASN1BOOL maintainConnection;
+ H225FeatureSet featureSet;
+} H225CallProceeding_UUIE;
+
+EXTERN int asn1PE_H225CallProceeding_UUIE (OOCTXT* pctxt, H225CallProceeding_UUIE* pvalue);
+
+EXTERN int asn1PD_H225CallProceeding_UUIE (OOCTXT* pctxt, H225CallProceeding_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* Connect_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Connect_UUIE_fastStart {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225Connect_UUIE_fastStart;
+
+EXTERN int asn1PE_H225Connect_UUIE_fastStart (OOCTXT* pctxt, H225Connect_UUIE_fastStart* pvalue);
+
+EXTERN int asn1PD_H225Connect_UUIE_fastStart (OOCTXT* pctxt, H225Connect_UUIE_fastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* Connect_UUIE_language */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Connect_UUIE_language {
+ ASN1UINT n;
+ ASN1IA5String *elem;
+} H225Connect_UUIE_language;
+
+EXTERN int asn1PE_H225Connect_UUIE_language (OOCTXT* pctxt, H225Connect_UUIE_language* pvalue);
+
+EXTERN int asn1PD_H225Connect_UUIE_language (OOCTXT* pctxt, H225Connect_UUIE_language* pvalue);
+
+/**************************************************************/
+/* */
+/* Connect_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Connect_UUIE {
+ struct {
+ unsigned h245AddressPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned h245SecurityModePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned fastStartPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned languagePresent : 1;
+ unsigned connectedAddressPresent : 1;
+ unsigned presentationIndicatorPresent : 1;
+ unsigned screeningIndicatorPresent : 1;
+ unsigned fastConnectRefusedPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned featureSetPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225TransportAddress h245Address;
+ H225EndpointType destinationInfo;
+ H225ConferenceIdentifier conferenceID;
+ H225CallIdentifier callIdentifier;
+ H225H245Security h245SecurityMode;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225Connect_UUIE_fastStart fastStart;
+ ASN1BOOL multipleCalls;
+ ASN1BOOL maintainConnection;
+ H225Connect_UUIE_language language;
+ H225_SeqOfH225AliasAddress connectedAddress;
+ H225PresentationIndicator presentationIndicator;
+ H225ScreeningIndicator screeningIndicator;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225CallCapacity capacity;
+ H225FeatureSet featureSet;
+} H225Connect_UUIE;
+
+EXTERN int asn1PE_H225Connect_UUIE (OOCTXT* pctxt, H225Connect_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Connect_UUIE (OOCTXT* pctxt, H225Connect_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* Alerting_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Alerting_UUIE_fastStart {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225Alerting_UUIE_fastStart;
+
+EXTERN int asn1PE_H225Alerting_UUIE_fastStart (OOCTXT* pctxt, H225Alerting_UUIE_fastStart* pvalue);
+
+EXTERN int asn1PD_H225Alerting_UUIE_fastStart (OOCTXT* pctxt, H225Alerting_UUIE_fastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* Alerting_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Alerting_UUIE {
+ struct {
+ unsigned h245AddressPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned h245SecurityModePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned fastStartPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned alertingAddressPresent : 1;
+ unsigned presentationIndicatorPresent : 1;
+ unsigned screeningIndicatorPresent : 1;
+ unsigned fastConnectRefusedPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned featureSetPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225EndpointType destinationInfo;
+ H225TransportAddress h245Address;
+ H225CallIdentifier callIdentifier;
+ H225H245Security h245SecurityMode;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225Alerting_UUIE_fastStart fastStart;
+ ASN1BOOL multipleCalls;
+ ASN1BOOL maintainConnection;
+ H225_SeqOfH225AliasAddress alertingAddress;
+ H225PresentationIndicator presentationIndicator;
+ H225ScreeningIndicator screeningIndicator;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225CallCapacity capacity;
+ H225FeatureSet featureSet;
+} H225Alerting_UUIE;
+
+EXTERN int asn1PE_H225Alerting_UUIE (OOCTXT* pctxt, H225Alerting_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Alerting_UUIE (OOCTXT* pctxt, H225Alerting_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* Information_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Information_UUIE_fastStart {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225Information_UUIE_fastStart;
+
+EXTERN int asn1PE_H225Information_UUIE_fastStart (OOCTXT* pctxt, H225Information_UUIE_fastStart* pvalue);
+
+EXTERN int asn1PD_H225Information_UUIE_fastStart (OOCTXT* pctxt, H225Information_UUIE_fastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* Information_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Information_UUIE {
+ struct {
+ unsigned callIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned fastStartPresent : 1;
+ unsigned fastConnectRefusedPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225Information_UUIE_fastStart fastStart;
+ H225CircuitInfo circuitInfo;
+} H225Information_UUIE;
+
+EXTERN int asn1PE_H225Information_UUIE (OOCTXT* pctxt, H225Information_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Information_UUIE (OOCTXT* pctxt, H225Information_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* SecurityErrors */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225SecurityErrors_securityWrongSyncTime 1
+#define T_H225SecurityErrors_securityReplay 2
+#define T_H225SecurityErrors_securityWrongGeneralID 3
+#define T_H225SecurityErrors_securityWrongSendersID 4
+#define T_H225SecurityErrors_securityIntegrityFailed 5
+#define T_H225SecurityErrors_securityWrongOID 6
+#define T_H225SecurityErrors_securityDHmismatch 7
+#define T_H225SecurityErrors_securityCertificateExpired 8
+#define T_H225SecurityErrors_securityCertificateDateInvalid 9
+#define T_H225SecurityErrors_securityCertificateRevoked 10
+#define T_H225SecurityErrors_securityCertificateNotReadable 11
+#define T_H225SecurityErrors_securityCertificateSignatureInvalid 12
+#define T_H225SecurityErrors_securityCertificateMissing 13
+#define T_H225SecurityErrors_securityCertificateIncomplete 14
+#define T_H225SecurityErrors_securityUnsupportedCertificateAlgOID 15
+#define T_H225SecurityErrors_securityUnknownCA 16
+#define T_H225SecurityErrors_extElem1 17
+
+typedef struct EXTERN H225SecurityErrors {
+ int t;
+} H225SecurityErrors;
+
+EXTERN int asn1PE_H225SecurityErrors (OOCTXT* pctxt, H225SecurityErrors* pvalue);
+
+EXTERN int asn1PD_H225SecurityErrors (OOCTXT* pctxt, H225SecurityErrors* pvalue);
+
+/**************************************************************/
+/* */
+/* ReleaseCompleteReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225ReleaseCompleteReason_noBandwidth 1
+#define T_H225ReleaseCompleteReason_gatekeeperResources 2
+#define T_H225ReleaseCompleteReason_unreachableDestination 3
+#define T_H225ReleaseCompleteReason_destinationRejection 4
+#define T_H225ReleaseCompleteReason_invalidRevision 5
+#define T_H225ReleaseCompleteReason_noPermission 6
+#define T_H225ReleaseCompleteReason_unreachableGatekeeper 7
+#define T_H225ReleaseCompleteReason_gatewayResources 8
+#define T_H225ReleaseCompleteReason_badFormatAddress 9
+#define T_H225ReleaseCompleteReason_adaptiveBusy 10
+#define T_H225ReleaseCompleteReason_inConf 11
+#define T_H225ReleaseCompleteReason_undefinedReason 12
+#define T_H225ReleaseCompleteReason_facilityCallDeflection 13
+#define T_H225ReleaseCompleteReason_securityDenied 14
+#define T_H225ReleaseCompleteReason_calledPartyNotRegistered 15
+#define T_H225ReleaseCompleteReason_callerNotRegistered 16
+#define T_H225ReleaseCompleteReason_newConnectionNeeded 17
+#define T_H225ReleaseCompleteReason_nonStandardReason 18
+#define T_H225ReleaseCompleteReason_replaceWithConferenceInvite 19
+#define T_H225ReleaseCompleteReason_genericDataReason 20
+#define T_H225ReleaseCompleteReason_neededFeatureNotSupported 21
+#define T_H225ReleaseCompleteReason_tunnelledSignallingRejected 22
+#define T_H225ReleaseCompleteReason_invalidCID 23
+#define T_H225ReleaseCompleteReason_securityError 24
+#define T_H225ReleaseCompleteReason_hopCountExceeded 25
+#define T_H225ReleaseCompleteReason_extElem1 26
+
+typedef struct EXTERN H225ReleaseCompleteReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ /* t = 9 */
+ /* t = 10 */
+ /* t = 11 */
+ /* t = 12 */
+ /* t = 13 */
+ /* t = 14 */
+ /* t = 15 */
+ /* t = 16 */
+ /* t = 17 */
+ /* t = 18 */
+ H225NonStandardParameter *nonStandardReason;
+ /* t = 19 */
+ H225ConferenceIdentifier *replaceWithConferenceInvite;
+ /* t = 20 */
+ /* t = 21 */
+ /* t = 22 */
+ /* t = 23 */
+ /* t = 24 */
+ H225SecurityErrors *securityError;
+ /* t = 25 */
+ /* t = 26 */
+ } u;
+} H225ReleaseCompleteReason;
+
+EXTERN int asn1PE_H225ReleaseCompleteReason (OOCTXT* pctxt, H225ReleaseCompleteReason* pvalue);
+
+EXTERN int asn1PD_H225ReleaseCompleteReason (OOCTXT* pctxt, H225ReleaseCompleteReason* pvalue);
+
+/**************************************************************/
+/* */
+/* ReleaseComplete_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ReleaseComplete_UUIE {
+ struct {
+ unsigned reasonPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned busyAddressPresent : 1;
+ unsigned presentationIndicatorPresent : 1;
+ unsigned screeningIndicatorPresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned featureSetPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225ReleaseCompleteReason reason;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225_SeqOfH225AliasAddress busyAddress;
+ H225PresentationIndicator presentationIndicator;
+ H225ScreeningIndicator screeningIndicator;
+ H225CallCapacity capacity;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225FeatureSet featureSet;
+} H225ReleaseComplete_UUIE;
+
+EXTERN int asn1PE_H225ReleaseComplete_UUIE (OOCTXT* pctxt, H225ReleaseComplete_UUIE* pvalue);
+
+EXTERN int asn1PD_H225ReleaseComplete_UUIE (OOCTXT* pctxt, H225ReleaseComplete_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* FacilityReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225FacilityReason_routeCallToGatekeeper 1
+#define T_H225FacilityReason_callForwarded 2
+#define T_H225FacilityReason_routeCallToMC 3
+#define T_H225FacilityReason_undefinedReason 4
+#define T_H225FacilityReason_conferenceListChoice 5
+#define T_H225FacilityReason_startH245 6
+#define T_H225FacilityReason_noH245 7
+#define T_H225FacilityReason_newTokens 8
+#define T_H225FacilityReason_featureSetUpdate 9
+#define T_H225FacilityReason_forwardedElements 10
+#define T_H225FacilityReason_transportedInformation 11
+#define T_H225FacilityReason_extElem1 12
+
+typedef struct EXTERN H225FacilityReason {
+ int t;
+} H225FacilityReason;
+
+EXTERN int asn1PE_H225FacilityReason (OOCTXT* pctxt, H225FacilityReason* pvalue);
+
+EXTERN int asn1PD_H225FacilityReason (OOCTXT* pctxt, H225FacilityReason* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceList */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ConferenceList {
+ struct {
+ unsigned conferenceIDPresent : 1;
+ unsigned conferenceAliasPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ } m;
+ H225ConferenceIdentifier conferenceID;
+ H225AliasAddress conferenceAlias;
+ H225NonStandardParameter nonStandardData;
+} H225ConferenceList;
+
+EXTERN int asn1PE_H225ConferenceList (OOCTXT* pctxt, H225ConferenceList* pvalue);
+
+EXTERN int asn1PD_H225ConferenceList (OOCTXT* pctxt, H225ConferenceList* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ConferenceList */
+/* */
+/**************************************************************/
+
+/* List of H225ConferenceList */
+typedef DList H225_SeqOfH225ConferenceList;
+
+EXTERN int asn1PE_H225_SeqOfH225ConferenceList (OOCTXT* pctxt, H225_SeqOfH225ConferenceList* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225ConferenceList (OOCTXT* pctxt, H225_SeqOfH225ConferenceList* pvalue);
+
+/**************************************************************/
+/* */
+/* Facility_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Facility_UUIE_fastStart {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225Facility_UUIE_fastStart;
+
+EXTERN int asn1PE_H225Facility_UUIE_fastStart (OOCTXT* pctxt, H225Facility_UUIE_fastStart* pvalue);
+
+EXTERN int asn1PD_H225Facility_UUIE_fastStart (OOCTXT* pctxt, H225Facility_UUIE_fastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* Facility_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Facility_UUIE {
+ struct {
+ unsigned alternativeAddressPresent : 1;
+ unsigned alternativeAliasAddressPresent : 1;
+ unsigned conferenceIDPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned destExtraCallInfoPresent : 1;
+ unsigned remoteExtensionAddressPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned conferencesPresent : 1;
+ unsigned h245AddressPresent : 1;
+ unsigned fastStartPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned fastConnectRefusedPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned destinationInfoPresent : 1;
+ unsigned h245SecurityModePresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225TransportAddress alternativeAddress;
+ H225_SeqOfH225AliasAddress alternativeAliasAddress;
+ H225ConferenceIdentifier conferenceID;
+ H225FacilityReason reason;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225AliasAddress destExtraCallInfo;
+ H225AliasAddress remoteExtensionAddress;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225_SeqOfH225ConferenceList conferences;
+ H225TransportAddress h245Address;
+ H225Facility_UUIE_fastStart fastStart;
+ ASN1BOOL multipleCalls;
+ ASN1BOOL maintainConnection;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225CircuitInfo circuitInfo;
+ H225FeatureSet featureSet;
+ H225EndpointType destinationInfo;
+ H225H245Security h245SecurityMode;
+} H225Facility_UUIE;
+
+EXTERN int asn1PE_H225Facility_UUIE (OOCTXT* pctxt, H225Facility_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Facility_UUIE (OOCTXT* pctxt, H225Facility_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* Progress_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Progress_UUIE_fastStart {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225Progress_UUIE_fastStart;
+
+EXTERN int asn1PE_H225Progress_UUIE_fastStart (OOCTXT* pctxt, H225Progress_UUIE_fastStart* pvalue);
+
+EXTERN int asn1PD_H225Progress_UUIE_fastStart (OOCTXT* pctxt, H225Progress_UUIE_fastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* Progress_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Progress_UUIE {
+ struct {
+ unsigned h245AddressPresent : 1;
+ unsigned h245SecurityModePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned fastStartPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned fastConnectRefusedPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225EndpointType destinationInfo;
+ H225TransportAddress h245Address;
+ H225CallIdentifier callIdentifier;
+ H225H245Security h245SecurityMode;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225Progress_UUIE_fastStart fastStart;
+ ASN1BOOL multipleCalls;
+ ASN1BOOL maintainConnection;
+} H225Progress_UUIE;
+
+EXTERN int asn1PE_H225Progress_UUIE (OOCTXT* pctxt, H225Progress_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Progress_UUIE (OOCTXT* pctxt, H225Progress_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* Status_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Status_UUIE {
+ struct {
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+} H225Status_UUIE;
+
+EXTERN int asn1PE_H225Status_UUIE (OOCTXT* pctxt, H225Status_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Status_UUIE (OOCTXT* pctxt, H225Status_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* StatusInquiry_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225StatusInquiry_UUIE {
+ struct {
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+} H225StatusInquiry_UUIE;
+
+EXTERN int asn1PE_H225StatusInquiry_UUIE (OOCTXT* pctxt, H225StatusInquiry_UUIE* pvalue);
+
+EXTERN int asn1PD_H225StatusInquiry_UUIE (OOCTXT* pctxt, H225StatusInquiry_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* SetupAcknowledge_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225SetupAcknowledge_UUIE {
+ struct {
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+} H225SetupAcknowledge_UUIE;
+
+EXTERN int asn1PE_H225SetupAcknowledge_UUIE (OOCTXT* pctxt, H225SetupAcknowledge_UUIE* pvalue);
+
+EXTERN int asn1PD_H225SetupAcknowledge_UUIE (OOCTXT* pctxt, H225SetupAcknowledge_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* Notify_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Notify_UUIE {
+ struct {
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+} H225Notify_UUIE;
+
+EXTERN int asn1PE_H225Notify_UUIE (OOCTXT* pctxt, H225Notify_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Notify_UUIE (OOCTXT* pctxt, H225Notify_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_h323_message_body */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225H323_UU_PDU_h323_message_body_setup 1
+#define T_H225H323_UU_PDU_h323_message_body_callProceeding 2
+#define T_H225H323_UU_PDU_h323_message_body_connect 3
+#define T_H225H323_UU_PDU_h323_message_body_alerting 4
+#define T_H225H323_UU_PDU_h323_message_body_information 5
+#define T_H225H323_UU_PDU_h323_message_body_releaseComplete 6
+#define T_H225H323_UU_PDU_h323_message_body_facility 7
+#define T_H225H323_UU_PDU_h323_message_body_progress 8
+#define T_H225H323_UU_PDU_h323_message_body_empty 9
+#define T_H225H323_UU_PDU_h323_message_body_status 10
+#define T_H225H323_UU_PDU_h323_message_body_statusInquiry 11
+#define T_H225H323_UU_PDU_h323_message_body_setupAcknowledge 12
+#define T_H225H323_UU_PDU_h323_message_body_notify 13
+#define T_H225H323_UU_PDU_h323_message_body_extElem1 14
+
+typedef struct EXTERN H225H323_UU_PDU_h323_message_body {
+ int t;
+ union {
+ /* t = 1 */
+ H225Setup_UUIE *setup;
+ /* t = 2 */
+ H225CallProceeding_UUIE *callProceeding;
+ /* t = 3 */
+ H225Connect_UUIE *connect;
+ /* t = 4 */
+ H225Alerting_UUIE *alerting;
+ /* t = 5 */
+ H225Information_UUIE *information;
+ /* t = 6 */
+ H225ReleaseComplete_UUIE *releaseComplete;
+ /* t = 7 */
+ H225Facility_UUIE *facility;
+ /* t = 8 */
+ H225Progress_UUIE *progress;
+ /* t = 9 */
+ /* t = 10 */
+ H225Status_UUIE *status;
+ /* t = 11 */
+ H225StatusInquiry_UUIE *statusInquiry;
+ /* t = 12 */
+ H225SetupAcknowledge_UUIE *setupAcknowledge;
+ /* t = 13 */
+ H225Notify_UUIE *notify;
+ /* t = 14 */
+ } u;
+} H225H323_UU_PDU_h323_message_body;
+
+EXTERN int asn1PE_H225H323_UU_PDU_h323_message_body (OOCTXT* pctxt, H225H323_UU_PDU_h323_message_body* pvalue);
+
+EXTERN int asn1PD_H225H323_UU_PDU_h323_message_body (OOCTXT* pctxt, H225H323_UU_PDU_h323_message_body* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_h4501SupplementaryService */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UU_PDU_h4501SupplementaryService {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225H323_UU_PDU_h4501SupplementaryService;
+
+EXTERN int asn1PE_H225H323_UU_PDU_h4501SupplementaryService (OOCTXT* pctxt, H225H323_UU_PDU_h4501SupplementaryService* pvalue);
+
+EXTERN int asn1PD_H225H323_UU_PDU_h4501SupplementaryService (OOCTXT* pctxt, H225H323_UU_PDU_h4501SupplementaryService* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_h245Control */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UU_PDU_h245Control {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225H323_UU_PDU_h245Control;
+
+EXTERN int asn1PE_H225H323_UU_PDU_h245Control (OOCTXT* pctxt, H225H323_UU_PDU_h245Control* pvalue);
+
+EXTERN int asn1PD_H225H323_UU_PDU_h245Control (OOCTXT* pctxt, H225H323_UU_PDU_h245Control* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225NonStandardParameter */
+/* */
+/**************************************************************/
+
+/* List of H225NonStandardParameter */
+typedef DList H225_SeqOfH225NonStandardParameter;
+
+EXTERN int asn1PE_H225_SeqOfH225NonStandardParameter (OOCTXT* pctxt, H225_SeqOfH225NonStandardParameter* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225NonStandardParameter (OOCTXT* pctxt, H225_SeqOfH225NonStandardParameter* pvalue);
+
+/**************************************************************/
+/* */
+/* CallLinkage */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallLinkage {
+ struct {
+ unsigned globalCallIdPresent : 1;
+ unsigned threadIdPresent : 1;
+ } m;
+ H225GloballyUniqueID globalCallId;
+ H225GloballyUniqueID threadId;
+} H225CallLinkage;
+
+EXTERN int asn1PE_H225CallLinkage (OOCTXT* pctxt, H225CallLinkage* pvalue);
+
+EXTERN int asn1PD_H225CallLinkage (OOCTXT* pctxt, H225CallLinkage* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_tunnelledSignallingMessage_messageContent */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UU_PDU_tunnelledSignallingMessage_messageContent {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225H323_UU_PDU_tunnelledSignallingMessage_messageContent;
+
+EXTERN int asn1PE_H225H323_UU_PDU_tunnelledSignallingMessage_messageContent (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage_messageContent* pvalue);
+
+EXTERN int asn1PD_H225H323_UU_PDU_tunnelledSignallingMessage_messageContent (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage_messageContent* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_tunnelledSignallingMessage */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UU_PDU_tunnelledSignallingMessage {
+ struct {
+ unsigned tunnellingRequiredPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ } m;
+ H225TunnelledProtocol tunnelledProtocolID;
+ H225H323_UU_PDU_tunnelledSignallingMessage_messageContent messageContent;
+ H225NonStandardParameter nonStandardData;
+} H225H323_UU_PDU_tunnelledSignallingMessage;
+
+EXTERN int asn1PE_H225H323_UU_PDU_tunnelledSignallingMessage (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage* pvalue);
+
+EXTERN int asn1PD_H225H323_UU_PDU_tunnelledSignallingMessage (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage* pvalue);
+
+/**************************************************************/
+/* */
+/* StimulusControl */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225StimulusControl {
+ struct {
+ unsigned nonStandardPresent : 1;
+ unsigned isTextPresent : 1;
+ unsigned h248MessagePresent : 1;
+ } m;
+ H225NonStandardParameter nonStandard;
+ ASN1DynOctStr h248Message;
+} H225StimulusControl;
+
+EXTERN int asn1PE_H225StimulusControl (OOCTXT* pctxt, H225StimulusControl* pvalue);
+
+EXTERN int asn1PD_H225StimulusControl (OOCTXT* pctxt, H225StimulusControl* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UU_PDU {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned h4501SupplementaryServicePresent : 1;
+ unsigned h245TunnelingPresent : 1;
+ unsigned h245ControlPresent : 1;
+ unsigned nonStandardControlPresent : 1;
+ unsigned callLinkagePresent : 1;
+ unsigned tunnelledSignallingMessagePresent : 1;
+ unsigned provisionalRespToH245TunnelingPresent : 1;
+ unsigned stimulusControlPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225H323_UU_PDU_h323_message_body h323_message_body;
+ H225NonStandardParameter nonStandardData;
+ H225H323_UU_PDU_h4501SupplementaryService h4501SupplementaryService;
+ ASN1BOOL h245Tunneling;
+ H225H323_UU_PDU_h245Control h245Control;
+ H225_SeqOfH225NonStandardParameter nonStandardControl;
+ H225CallLinkage callLinkage;
+ H225H323_UU_PDU_tunnelledSignallingMessage tunnelledSignallingMessage;
+ H225StimulusControl stimulusControl;
+ H225_SeqOfH225GenericData genericData;
+} H225H323_UU_PDU;
+
+EXTERN int asn1PE_H225H323_UU_PDU (OOCTXT* pctxt, H225H323_UU_PDU* pvalue);
+
+EXTERN int asn1PD_H225H323_UU_PDU (OOCTXT* pctxt, H225H323_UU_PDU* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UserInformation_user_data */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UserInformation_user_data {
+ ASN1UINT8 protocol_discriminator;
+ H225H323_UserInformation_user_data_user_information user_information;
+} H225H323_UserInformation_user_data;
+
+EXTERN int asn1PE_H225H323_UserInformation_user_data (OOCTXT* pctxt, H225H323_UserInformation_user_data* pvalue);
+
+EXTERN int asn1PD_H225H323_UserInformation_user_data (OOCTXT* pctxt, H225H323_UserInformation_user_data* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UserInformation */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UserInformation {
+ struct {
+ unsigned user_dataPresent : 1;
+ } m;
+ H225H323_UU_PDU h323_uu_pdu;
+ H225H323_UserInformation_user_data user_data;
+} H225H323_UserInformation;
+
+EXTERN int asn1PE_H225H323_UserInformation (OOCTXT* pctxt, H225H323_UserInformation* pvalue);
+
+EXTERN int asn1PD_H225H323_UserInformation (OOCTXT* pctxt, H225H323_UserInformation* pvalue);
+
+/**************************************************************/
+/* */
+/* AddressPattern_range */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AddressPattern_range {
+ H225PartyNumber startOfRange;
+ H225PartyNumber endOfRange;
+} H225AddressPattern_range;
+
+EXTERN int asn1PE_H225AddressPattern_range (OOCTXT* pctxt, H225AddressPattern_range* pvalue);
+
+EXTERN int asn1PD_H225AddressPattern_range (OOCTXT* pctxt, H225AddressPattern_range* pvalue);
+
+/**************************************************************/
+/* */
+/* AddressPattern */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225AddressPattern_wildcard 1
+#define T_H225AddressPattern_range 2
+#define T_H225AddressPattern_extElem1 3
+
+typedef struct EXTERN H225AddressPattern {
+ int t;
+ union {
+ /* t = 1 */
+ H225AliasAddress *wildcard;
+ /* t = 2 */
+ H225AddressPattern_range *range;
+ /* t = 3 */
+ } u;
+} H225AddressPattern;
+
+EXTERN int asn1PE_H225AddressPattern (OOCTXT* pctxt, H225AddressPattern* pvalue);
+
+EXTERN int asn1PD_H225AddressPattern (OOCTXT* pctxt, H225AddressPattern* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TransportAddress */
+/* */
+/**************************************************************/
+
+/* List of H225TransportAddress */
+typedef DList H225_SeqOfH225TransportAddress;
+
+EXTERN int asn1PE_H225_SeqOfH225TransportAddress (OOCTXT* pctxt, H225_SeqOfH225TransportAddress* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225TransportAddress (OOCTXT* pctxt, H225_SeqOfH225TransportAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* AlternateTransportAddresses */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AlternateTransportAddresses {
+ struct {
+ unsigned annexEPresent : 1;
+ unsigned sctpPresent : 1;
+ } m;
+ H225_SeqOfH225TransportAddress annexE;
+ H225_SeqOfH225TransportAddress sctp;
+} H225AlternateTransportAddresses;
+
+EXTERN int asn1PE_H225AlternateTransportAddresses (OOCTXT* pctxt, H225AlternateTransportAddresses* pvalue);
+
+EXTERN int asn1PD_H225AlternateTransportAddresses (OOCTXT* pctxt, H225AlternateTransportAddresses* pvalue);
+
+/**************************************************************/
+/* */
+/* Endpoint */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Endpoint {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned aliasAddressPresent : 1;
+ unsigned callSignalAddressPresent : 1;
+ unsigned rasAddressPresent : 1;
+ unsigned endpointTypePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned priorityPresent : 1;
+ unsigned remoteExtensionAddressPresent : 1;
+ unsigned destExtraCallInfoPresent : 1;
+ unsigned alternateTransportAddressesPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned featureSetPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225AliasAddress aliasAddress;
+ H225_SeqOfH225TransportAddress callSignalAddress;
+ H225_SeqOfH225TransportAddress rasAddress;
+ H225EndpointType endpointType;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ ASN1UINT8 priority;
+ H225_SeqOfH225AliasAddress remoteExtensionAddress;
+ H225_SeqOfH225AliasAddress destExtraCallInfo;
+ H225AlternateTransportAddresses alternateTransportAddresses;
+ H225CircuitInfo circuitInfo;
+ H225FeatureSet featureSet;
+} H225Endpoint;
+
+EXTERN int asn1PE_H225Endpoint (OOCTXT* pctxt, H225Endpoint* pvalue);
+
+EXTERN int asn1PD_H225Endpoint (OOCTXT* pctxt, H225Endpoint* pvalue);
+
+/**************************************************************/
+/* */
+/* UseSpecifiedTransport */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225UseSpecifiedTransport_tcp 1
+#define T_H225UseSpecifiedTransport_annexE 2
+#define T_H225UseSpecifiedTransport_sctp 3
+#define T_H225UseSpecifiedTransport_extElem1 4
+
+typedef struct EXTERN H225UseSpecifiedTransport {
+ int t;
+} H225UseSpecifiedTransport;
+
+EXTERN int asn1PE_H225UseSpecifiedTransport (OOCTXT* pctxt, H225UseSpecifiedTransport* pvalue);
+
+EXTERN int asn1PD_H225UseSpecifiedTransport (OOCTXT* pctxt, H225UseSpecifiedTransport* pvalue);
+
+/**************************************************************/
+/* */
+/* AlternateGK */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AlternateGK {
+ struct {
+ unsigned gatekeeperIdentifierPresent : 1;
+ } m;
+ H225TransportAddress rasAddress;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ ASN1BOOL needToRegister;
+ ASN1UINT8 priority;
+} H225AlternateGK;
+
+EXTERN int asn1PE_H225AlternateGK (OOCTXT* pctxt, H225AlternateGK* pvalue);
+
+EXTERN int asn1PD_H225AlternateGK (OOCTXT* pctxt, H225AlternateGK* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AlternateGK */
+/* */
+/**************************************************************/
+
+/* List of H225AlternateGK */
+typedef DList H225_SeqOfH225AlternateGK;
+
+EXTERN int asn1PE_H225_SeqOfH225AlternateGK (OOCTXT* pctxt, H225_SeqOfH225AlternateGK* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225AlternateGK (OOCTXT* pctxt, H225_SeqOfH225AlternateGK* pvalue);
+
+/**************************************************************/
+/* */
+/* AltGKInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AltGKInfo {
+ H225_SeqOfH225AlternateGK alternateGatekeeper;
+ ASN1BOOL altGKisPermanent;
+} H225AltGKInfo;
+
+EXTERN int asn1PE_H225AltGKInfo (OOCTXT* pctxt, H225AltGKInfo* pvalue);
+
+EXTERN int asn1PD_H225AltGKInfo (OOCTXT* pctxt, H225AltGKInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* SecurityErrors2 */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225SecurityErrors2_securityWrongSyncTime 1
+#define T_H225SecurityErrors2_securityReplay 2
+#define T_H225SecurityErrors2_securityWrongGeneralID 3
+#define T_H225SecurityErrors2_securityWrongSendersID 4
+#define T_H225SecurityErrors2_securityIntegrityFailed 5
+#define T_H225SecurityErrors2_securityWrongOID 6
+#define T_H225SecurityErrors2_extElem1 7
+
+typedef struct EXTERN H225SecurityErrors2 {
+ int t;
+} H225SecurityErrors2;
+
+EXTERN int asn1PE_H225SecurityErrors2 (OOCTXT* pctxt, H225SecurityErrors2* pvalue);
+
+EXTERN int asn1PD_H225SecurityErrors2 (OOCTXT* pctxt, H225SecurityErrors2* pvalue);
+
+/**************************************************************/
+/* */
+/* EncryptIntAlg */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225EncryptIntAlg_nonStandard 1
+#define T_H225EncryptIntAlg_isoAlgorithm 2
+#define T_H225EncryptIntAlg_extElem1 3
+
+typedef struct EXTERN H225EncryptIntAlg {
+ int t;
+ union {
+ /* t = 1 */
+ H225NonStandardParameter *nonStandard;
+ /* t = 2 */
+ ASN1OBJID *isoAlgorithm;
+ /* t = 3 */
+ } u;
+} H225EncryptIntAlg;
+
+EXTERN int asn1PE_H225EncryptIntAlg (OOCTXT* pctxt, H225EncryptIntAlg* pvalue);
+
+EXTERN int asn1PD_H225EncryptIntAlg (OOCTXT* pctxt, H225EncryptIntAlg* pvalue);
+
+/**************************************************************/
+/* */
+/* NonIsoIntegrityMechanism */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225NonIsoIntegrityMechanism_hMAC_MD5 1
+#define T_H225NonIsoIntegrityMechanism_hMAC_iso10118_2_s 2
+#define T_H225NonIsoIntegrityMechanism_hMAC_iso10118_2_l 3
+#define T_H225NonIsoIntegrityMechanism_hMAC_iso10118_3 4
+#define T_H225NonIsoIntegrityMechanism_extElem1 5
+
+typedef struct EXTERN H225NonIsoIntegrityMechanism {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H225EncryptIntAlg *hMAC_iso10118_2_s;
+ /* t = 3 */
+ H225EncryptIntAlg *hMAC_iso10118_2_l;
+ /* t = 4 */
+ ASN1OBJID *hMAC_iso10118_3;
+ /* t = 5 */
+ } u;
+} H225NonIsoIntegrityMechanism;
+
+EXTERN int asn1PE_H225NonIsoIntegrityMechanism (OOCTXT* pctxt, H225NonIsoIntegrityMechanism* pvalue);
+
+EXTERN int asn1PD_H225NonIsoIntegrityMechanism (OOCTXT* pctxt, H225NonIsoIntegrityMechanism* pvalue);
+
+/**************************************************************/
+/* */
+/* IntegrityMechanism */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225IntegrityMechanism_nonStandard 1
+#define T_H225IntegrityMechanism_digSig 2
+#define T_H225IntegrityMechanism_iso9797 3
+#define T_H225IntegrityMechanism_nonIsoIM 4
+#define T_H225IntegrityMechanism_extElem1 5
+
+typedef struct EXTERN H225IntegrityMechanism {
+ int t;
+ union {
+ /* t = 1 */
+ H225NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ ASN1OBJID *iso9797;
+ /* t = 4 */
+ H225NonIsoIntegrityMechanism *nonIsoIM;
+ /* t = 5 */
+ } u;
+} H225IntegrityMechanism;
+
+EXTERN int asn1PE_H225IntegrityMechanism (OOCTXT* pctxt, H225IntegrityMechanism* pvalue);
+
+EXTERN int asn1PD_H225IntegrityMechanism (OOCTXT* pctxt, H225IntegrityMechanism* pvalue);
+
+/**************************************************************/
+/* */
+/* ICV */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ICV {
+ ASN1OBJID algorithmOID;
+ ASN1DynBitStr icv;
+} H225ICV;
+
+EXTERN int asn1PE_H225ICV (OOCTXT* pctxt, H225ICV* pvalue);
+
+EXTERN int asn1PD_H225ICV (OOCTXT* pctxt, H225ICV* pvalue);
+
+/**************************************************************/
+/* */
+/* CapacityReportingCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CapacityReportingCapability {
+ ASN1BOOL canReportCallCapacity;
+} H225CapacityReportingCapability;
+
+EXTERN int asn1PE_H225CapacityReportingCapability (OOCTXT* pctxt, H225CapacityReportingCapability* pvalue);
+
+EXTERN int asn1PD_H225CapacityReportingCapability (OOCTXT* pctxt, H225CapacityReportingCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* CapacityReportingSpecification_when */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CapacityReportingSpecification_when {
+ struct {
+ unsigned callStartPresent : 1;
+ unsigned callEndPresent : 1;
+ } m;
+ ASN1OCTET __dummy__;
+} H225CapacityReportingSpecification_when;
+
+EXTERN int asn1PE_H225CapacityReportingSpecification_when (OOCTXT* pctxt, H225CapacityReportingSpecification_when* pvalue);
+
+EXTERN int asn1PD_H225CapacityReportingSpecification_when (OOCTXT* pctxt, H225CapacityReportingSpecification_when* pvalue);
+
+/**************************************************************/
+/* */
+/* CapacityReportingSpecification */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CapacityReportingSpecification {
+ H225CapacityReportingSpecification_when when;
+} H225CapacityReportingSpecification;
+
+EXTERN int asn1PE_H225CapacityReportingSpecification (OOCTXT* pctxt, H225CapacityReportingSpecification* pvalue);
+
+EXTERN int asn1PD_H225CapacityReportingSpecification (OOCTXT* pctxt, H225CapacityReportingSpecification* pvalue);
+
+/**************************************************************/
+/* */
+/* RasUsageInfoTypes */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RasUsageInfoTypes {
+ struct {
+ unsigned startTimePresent : 1;
+ unsigned endTimePresent : 1;
+ unsigned terminationCausePresent : 1;
+ } m;
+ H225_SeqOfH225NonStandardParameter nonStandardUsageTypes;
+} H225RasUsageInfoTypes;
+
+EXTERN int asn1PE_H225RasUsageInfoTypes (OOCTXT* pctxt, H225RasUsageInfoTypes* pvalue);
+
+EXTERN int asn1PD_H225RasUsageInfoTypes (OOCTXT* pctxt, H225RasUsageInfoTypes* pvalue);
+
+/**************************************************************/
+/* */
+/* RasUsageSpecification_when */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RasUsageSpecification_when {
+ struct {
+ unsigned startPresent : 1;
+ unsigned endPresent : 1;
+ unsigned inIrrPresent : 1;
+ } m;
+ ASN1OCTET __dummy__;
+} H225RasUsageSpecification_when;
+
+EXTERN int asn1PE_H225RasUsageSpecification_when (OOCTXT* pctxt, H225RasUsageSpecification_when* pvalue);
+
+EXTERN int asn1PD_H225RasUsageSpecification_when (OOCTXT* pctxt, H225RasUsageSpecification_when* pvalue);
+
+/**************************************************************/
+/* */
+/* RasUsageSpecification_callStartingPoint */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RasUsageSpecification_callStartingPoint {
+ struct {
+ unsigned alertingPresent : 1;
+ unsigned connectPresent : 1;
+ } m;
+ ASN1OCTET __dummy__;
+} H225RasUsageSpecification_callStartingPoint;
+
+EXTERN int asn1PE_H225RasUsageSpecification_callStartingPoint (OOCTXT* pctxt, H225RasUsageSpecification_callStartingPoint* pvalue);
+
+EXTERN int asn1PD_H225RasUsageSpecification_callStartingPoint (OOCTXT* pctxt, H225RasUsageSpecification_callStartingPoint* pvalue);
+
+/**************************************************************/
+/* */
+/* RasUsageSpecification */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RasUsageSpecification {
+ struct {
+ unsigned callStartingPointPresent : 1;
+ } m;
+ H225RasUsageSpecification_when when;
+ H225RasUsageSpecification_callStartingPoint callStartingPoint;
+ H225RasUsageInfoTypes required;
+} H225RasUsageSpecification;
+
+EXTERN int asn1PE_H225RasUsageSpecification (OOCTXT* pctxt, H225RasUsageSpecification* pvalue);
+
+EXTERN int asn1PD_H225RasUsageSpecification (OOCTXT* pctxt, H225RasUsageSpecification* pvalue);
+
+/**************************************************************/
+/* */
+/* RasUsageInformation */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RasUsageInformation {
+ struct {
+ unsigned alertingTimePresent : 1;
+ unsigned connectTimePresent : 1;
+ unsigned endTimePresent : 1;
+ } m;
+ H225_SeqOfH225NonStandardParameter nonStandardUsageFields;
+ H235TimeStamp alertingTime;
+ H235TimeStamp connectTime;
+ H235TimeStamp endTime;
+} H225RasUsageInformation;
+
+EXTERN int asn1PE_H225RasUsageInformation (OOCTXT* pctxt, H225RasUsageInformation* pvalue);
+
+EXTERN int asn1PD_H225RasUsageInformation (OOCTXT* pctxt, H225RasUsageInformation* pvalue);
+
+/**************************************************************/
+/* */
+/* CallTerminationCause */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225CallTerminationCause_releaseCompleteReason 1
+#define T_H225CallTerminationCause_releaseCompleteCauseIE 2
+#define T_H225CallTerminationCause_extElem1 3
+
+typedef struct EXTERN H225CallTerminationCause {
+ int t;
+ union {
+ /* t = 1 */
+ H225ReleaseCompleteReason *releaseCompleteReason;
+ /* t = 2 */
+ H225CallTerminationCause_releaseCompleteCauseIE *releaseCompleteCauseIE;
+ /* t = 3 */
+ } u;
+} H225CallTerminationCause;
+
+EXTERN int asn1PE_H225CallTerminationCause (OOCTXT* pctxt, H225CallTerminationCause* pvalue);
+
+EXTERN int asn1PD_H225CallTerminationCause (OOCTXT* pctxt, H225CallTerminationCause* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportChannelInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportChannelInfo {
+ struct {
+ unsigned sendAddressPresent : 1;
+ unsigned recvAddressPresent : 1;
+ } m;
+ H225TransportAddress sendAddress;
+ H225TransportAddress recvAddress;
+} H225TransportChannelInfo;
+
+EXTERN int asn1PE_H225TransportChannelInfo (OOCTXT* pctxt, H225TransportChannelInfo* pvalue);
+
+EXTERN int asn1PD_H225TransportChannelInfo (OOCTXT* pctxt, H225TransportChannelInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* BandwidthDetails */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225BandwidthDetails {
+ ASN1BOOL sender;
+ ASN1BOOL multicast;
+ H225BandWidth bandwidth;
+ H225TransportChannelInfo rtcpAddresses;
+} H225BandwidthDetails;
+
+EXTERN int asn1PE_H225BandwidthDetails (OOCTXT* pctxt, H225BandwidthDetails* pvalue);
+
+EXTERN int asn1PD_H225BandwidthDetails (OOCTXT* pctxt, H225BandwidthDetails* pvalue);
+
+/**************************************************************/
+/* */
+/* CallCreditCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallCreditCapability {
+ struct {
+ unsigned canDisplayAmountStringPresent : 1;
+ unsigned canEnforceDurationLimitPresent : 1;
+ } m;
+ ASN1BOOL canDisplayAmountString;
+ ASN1BOOL canEnforceDurationLimit;
+} H225CallCreditCapability;
+
+EXTERN int asn1PE_H225CallCreditCapability (OOCTXT* pctxt, H225CallCreditCapability* pvalue);
+
+EXTERN int asn1PD_H225CallCreditCapability (OOCTXT* pctxt, H225CallCreditCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* RTPSession_associatedSessionIds */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RTPSession_associatedSessionIds {
+ ASN1UINT n;
+ ASN1UINT8 *elem;
+} H225RTPSession_associatedSessionIds;
+
+EXTERN int asn1PE_H225RTPSession_associatedSessionIds (OOCTXT* pctxt, H225RTPSession_associatedSessionIds* pvalue);
+
+EXTERN int asn1PD_H225RTPSession_associatedSessionIds (OOCTXT* pctxt, H225RTPSession_associatedSessionIds* pvalue);
+
+/**************************************************************/
+/* */
+/* RTPSession */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RTPSession {
+ struct {
+ unsigned multicastPresent : 1;
+ unsigned bandwidthPresent : 1;
+ } m;
+ H225TransportChannelInfo rtpAddress;
+ H225TransportChannelInfo rtcpAddress;
+ ASN1PrintableString cname;
+ ASN1UINT ssrc;
+ ASN1UINT8 sessionId;
+ H225RTPSession_associatedSessionIds associatedSessionIds;
+ H225BandWidth bandwidth;
+} H225RTPSession;
+
+EXTERN int asn1PE_H225RTPSession (OOCTXT* pctxt, H225RTPSession* pvalue);
+
+EXTERN int asn1PD_H225RTPSession (OOCTXT* pctxt, H225RTPSession* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225Endpoint */
+/* */
+/**************************************************************/
+
+/* List of H225Endpoint */
+typedef DList H225_SeqOfH225Endpoint;
+
+EXTERN int asn1PE_H225_SeqOfH225Endpoint (OOCTXT* pctxt, H225_SeqOfH225Endpoint* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225Endpoint (OOCTXT* pctxt, H225_SeqOfH225Endpoint* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AuthenticationMechanism */
+/* */
+/**************************************************************/
+
+/* List of H235AuthenticationMechanism */
+typedef DList H225_SeqOfH225AuthenticationMechanism;
+
+EXTERN int asn1PE_H225_SeqOfH225AuthenticationMechanism (OOCTXT* pctxt, H225_SeqOfH225AuthenticationMechanism* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225AuthenticationMechanism (OOCTXT* pctxt, H225_SeqOfH225AuthenticationMechanism* pvalue);
+
+/**************************************************************/
+/* */
+/* GatekeeperRequest_algorithmOIDs */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GatekeeperRequest_algorithmOIDs {
+ ASN1UINT n;
+ ASN1OBJID *elem;
+} H225GatekeeperRequest_algorithmOIDs;
+
+EXTERN int asn1PE_H225GatekeeperRequest_algorithmOIDs (OOCTXT* pctxt, H225GatekeeperRequest_algorithmOIDs* pvalue);
+
+EXTERN int asn1PD_H225GatekeeperRequest_algorithmOIDs (OOCTXT* pctxt, H225GatekeeperRequest_algorithmOIDs* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225IntegrityMechanism */
+/* */
+/**************************************************************/
+
+/* List of H225IntegrityMechanism */
+typedef DList H225_SeqOfH225IntegrityMechanism;
+
+EXTERN int asn1PE_H225_SeqOfH225IntegrityMechanism (OOCTXT* pctxt, H225_SeqOfH225IntegrityMechanism* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225IntegrityMechanism (OOCTXT* pctxt, H225_SeqOfH225IntegrityMechanism* pvalue);
+
+/**************************************************************/
+/* */
+/* GatekeeperRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GatekeeperRequest {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned callServicesPresent : 1;
+ unsigned endpointAliasPresent : 1;
+ unsigned alternateEndpointsPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned authenticationCapabilityPresent : 1;
+ unsigned algorithmOIDsPresent : 1;
+ unsigned integrityPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned supportsAltGKPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ H225TransportAddress rasAddress;
+ H225EndpointType endpointType;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225QseriesOptions callServices;
+ H225_SeqOfH225AliasAddress endpointAlias;
+ H225_SeqOfH225Endpoint alternateEndpoints;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225_SeqOfH225AuthenticationMechanism authenticationCapability;
+ H225GatekeeperRequest_algorithmOIDs algorithmOIDs;
+ H225_SeqOfH225IntegrityMechanism integrity;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225GatekeeperRequest;
+
+EXTERN int asn1PE_H225GatekeeperRequest (OOCTXT* pctxt, H225GatekeeperRequest* pvalue);
+
+EXTERN int asn1PD_H225GatekeeperRequest (OOCTXT* pctxt, H225GatekeeperRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* GatekeeperConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GatekeeperConfirm {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned alternateGatekeeperPresent : 1;
+ unsigned authenticationModePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned algorithmOIDPresent : 1;
+ unsigned integrityPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225TransportAddress rasAddress;
+ H225_SeqOfH225AlternateGK alternateGatekeeper;
+ H235AuthenticationMechanism authenticationMode;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ ASN1OBJID algorithmOID;
+ H225_SeqOfH225IntegrityMechanism integrity;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225GatekeeperConfirm;
+
+EXTERN int asn1PE_H225GatekeeperConfirm (OOCTXT* pctxt, H225GatekeeperConfirm* pvalue);
+
+EXTERN int asn1PD_H225GatekeeperConfirm (OOCTXT* pctxt, H225GatekeeperConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* GatekeeperRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225GatekeeperRejectReason_resourceUnavailable 1
+#define T_H225GatekeeperRejectReason_terminalExcluded 2
+#define T_H225GatekeeperRejectReason_invalidRevision 3
+#define T_H225GatekeeperRejectReason_undefinedReason 4
+#define T_H225GatekeeperRejectReason_securityDenial 5
+#define T_H225GatekeeperRejectReason_genericDataReason 6
+#define T_H225GatekeeperRejectReason_neededFeatureNotSupported 7
+#define T_H225GatekeeperRejectReason_securityError 8
+#define T_H225GatekeeperRejectReason_extElem1 9
+
+typedef struct EXTERN H225GatekeeperRejectReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ H225SecurityErrors *securityError;
+ /* t = 9 */
+ } u;
+} H225GatekeeperRejectReason;
+
+EXTERN int asn1PE_H225GatekeeperRejectReason (OOCTXT* pctxt, H225GatekeeperRejectReason* pvalue);
+
+EXTERN int asn1PD_H225GatekeeperRejectReason (OOCTXT* pctxt, H225GatekeeperRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* GatekeeperReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GatekeeperReject {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225GatekeeperRejectReason rejectReason;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225GatekeeperReject;
+
+EXTERN int asn1PE_H225GatekeeperReject (OOCTXT* pctxt, H225GatekeeperReject* pvalue);
+
+EXTERN int asn1PD_H225GatekeeperReject (OOCTXT* pctxt, H225GatekeeperReject* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AddressPattern */
+/* */
+/**************************************************************/
+
+/* List of H225AddressPattern */
+typedef DList H225_SeqOfH225AddressPattern;
+
+EXTERN int asn1PE_H225_SeqOfH225AddressPattern (OOCTXT* pctxt, H225_SeqOfH225AddressPattern* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225AddressPattern (OOCTXT* pctxt, H225_SeqOfH225AddressPattern* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225H248PackagesDescriptor */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225_SeqOfH225H248PackagesDescriptor {
+ ASN1UINT n;
+ H225H248PackagesDescriptor *elem;
+} H225_SeqOfH225H248PackagesDescriptor;
+
+EXTERN int asn1PE_H225_SeqOfH225H248PackagesDescriptor (OOCTXT* pctxt, H225_SeqOfH225H248PackagesDescriptor* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225H248PackagesDescriptor (OOCTXT* pctxt, H225_SeqOfH225H248PackagesDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* RegistrationRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RegistrationRequest {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned terminalAliasPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned alternateEndpointsPresent : 1;
+ unsigned timeToLivePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned keepAlivePresent : 1;
+ unsigned endpointIdentifierPresent : 1;
+ unsigned willSupplyUUIEsPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned alternateTransportAddressesPresent : 1;
+ unsigned additiveRegistrationPresent : 1;
+ unsigned terminalAliasPatternPresent : 1;
+ unsigned supportsAltGKPresent : 1;
+ unsigned usageReportingCapabilityPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned supportedH248PackagesPresent : 1;
+ unsigned callCreditCapabilityPresent : 1;
+ unsigned capacityReportingCapabilityPresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ unsigned restartPresent : 1;
+ unsigned supportsACFSequencesPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ ASN1BOOL discoveryComplete;
+ H225_SeqOfH225TransportAddress callSignalAddress;
+ H225_SeqOfH225TransportAddress rasAddress;
+ H225EndpointType terminalType;
+ H225_SeqOfH225AliasAddress terminalAlias;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225VendorIdentifier endpointVendor;
+ H225_SeqOfH225Endpoint alternateEndpoints;
+ H225TimeToLive timeToLive;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ ASN1BOOL keepAlive;
+ H225EndpointIdentifier endpointIdentifier;
+ ASN1BOOL willSupplyUUIEs;
+ ASN1BOOL maintainConnection;
+ H225AlternateTransportAddresses alternateTransportAddresses;
+ H225_SeqOfH225AddressPattern terminalAliasPattern;
+ H225RasUsageInfoTypes usageReportingCapability;
+ ASN1BOOL multipleCalls;
+ H225_SeqOfH225H248PackagesDescriptor supportedH248Packages;
+ H225CallCreditCapability callCreditCapability;
+ H225CapacityReportingCapability capacityReportingCapability;
+ H225CallCapacity capacity;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225RegistrationRequest;
+
+EXTERN int asn1PE_H225RegistrationRequest (OOCTXT* pctxt, H225RegistrationRequest* pvalue);
+
+EXTERN int asn1PD_H225RegistrationRequest (OOCTXT* pctxt, H225RegistrationRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* RegistrationConfirm_preGrantedARQ */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RegistrationConfirm_preGrantedARQ {
+ struct {
+ unsigned irrFrequencyInCallPresent : 1;
+ unsigned totalBandwidthRestrictionPresent : 1;
+ unsigned alternateTransportAddressesPresent : 1;
+ unsigned useSpecifiedTransportPresent : 1;
+ } m;
+ ASN1BOOL makeCall;
+ ASN1BOOL useGKCallSignalAddressToMakeCall;
+ ASN1BOOL answerCall;
+ ASN1BOOL useGKCallSignalAddressToAnswer;
+ ASN1USINT irrFrequencyInCall;
+ H225BandWidth totalBandwidthRestriction;
+ H225AlternateTransportAddresses alternateTransportAddresses;
+ H225UseSpecifiedTransport useSpecifiedTransport;
+} H225RegistrationConfirm_preGrantedARQ;
+
+EXTERN int asn1PE_H225RegistrationConfirm_preGrantedARQ (OOCTXT* pctxt, H225RegistrationConfirm_preGrantedARQ* pvalue);
+
+EXTERN int asn1PD_H225RegistrationConfirm_preGrantedARQ (OOCTXT* pctxt, H225RegistrationConfirm_preGrantedARQ* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225RasUsageSpecification */
+/* */
+/**************************************************************/
+
+/* List of H225RasUsageSpecification */
+typedef DList H225_SeqOfH225RasUsageSpecification;
+
+EXTERN int asn1PE_H225_SeqOfH225RasUsageSpecification (OOCTXT* pctxt, H225_SeqOfH225RasUsageSpecification* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225RasUsageSpecification (OOCTXT* pctxt, H225_SeqOfH225RasUsageSpecification* pvalue);
+
+/**************************************************************/
+/* */
+/* RegistrationConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RegistrationConfirm {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned terminalAliasPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned alternateGatekeeperPresent : 1;
+ unsigned timeToLivePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned willRespondToIRRPresent : 1;
+ unsigned preGrantedARQPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned supportsAdditiveRegistrationPresent : 1;
+ unsigned terminalAliasPatternPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ unsigned usageSpecPresent : 1;
+ unsigned featureServerAliasPresent : 1;
+ unsigned capacityReportingSpecPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225TransportAddress callSignalAddress;
+ H225_SeqOfH225AliasAddress terminalAlias;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225EndpointIdentifier endpointIdentifier;
+ H225_SeqOfH225AlternateGK alternateGatekeeper;
+ H225TimeToLive timeToLive;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ ASN1BOOL willRespondToIRR;
+ H225RegistrationConfirm_preGrantedARQ preGrantedARQ;
+ ASN1BOOL maintainConnection;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225_SeqOfH225AddressPattern terminalAliasPattern;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+ H225_SeqOfH225RasUsageSpecification usageSpec;
+ H225AliasAddress featureServerAlias;
+ H225CapacityReportingSpecification capacityReportingSpec;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225RegistrationConfirm;
+
+EXTERN int asn1PE_H225RegistrationConfirm (OOCTXT* pctxt, H225RegistrationConfirm* pvalue);
+
+EXTERN int asn1PD_H225RegistrationConfirm (OOCTXT* pctxt, H225RegistrationConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* RegistrationRejectReason_invalidTerminalAliases */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RegistrationRejectReason_invalidTerminalAliases {
+ struct {
+ unsigned terminalAliasPresent : 1;
+ unsigned terminalAliasPatternPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225_SeqOfH225AliasAddress terminalAlias;
+ H225_SeqOfH225AddressPattern terminalAliasPattern;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225RegistrationRejectReason_invalidTerminalAliases;
+
+EXTERN int asn1PE_H225RegistrationRejectReason_invalidTerminalAliases (OOCTXT* pctxt, H225RegistrationRejectReason_invalidTerminalAliases* pvalue);
+
+EXTERN int asn1PD_H225RegistrationRejectReason_invalidTerminalAliases (OOCTXT* pctxt, H225RegistrationRejectReason_invalidTerminalAliases* pvalue);
+
+/**************************************************************/
+/* */
+/* RegistrationRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225RegistrationRejectReason_discoveryRequired 1
+#define T_H225RegistrationRejectReason_invalidRevision 2
+#define T_H225RegistrationRejectReason_invalidCallSignalAddress 3
+#define T_H225RegistrationRejectReason_invalidRASAddress 4
+#define T_H225RegistrationRejectReason_duplicateAlias 5
+#define T_H225RegistrationRejectReason_invalidTerminalType 6
+#define T_H225RegistrationRejectReason_undefinedReason 7
+#define T_H225RegistrationRejectReason_transportNotSupported 8
+#define T_H225RegistrationRejectReason_transportQOSNotSupported 9
+#define T_H225RegistrationRejectReason_resourceUnavailable 10
+#define T_H225RegistrationRejectReason_invalidAlias 11
+#define T_H225RegistrationRejectReason_securityDenial 12
+#define T_H225RegistrationRejectReason_fullRegistrationRequired 13
+#define T_H225RegistrationRejectReason_additiveRegistrationNotSupported 14
+#define T_H225RegistrationRejectReason_invalidTerminalAliases 15
+#define T_H225RegistrationRejectReason_genericDataReason 16
+#define T_H225RegistrationRejectReason_neededFeatureNotSupported 17
+#define T_H225RegistrationRejectReason_securityError 18
+#define T_H225RegistrationRejectReason_extElem1 19
+
+typedef struct EXTERN H225RegistrationRejectReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ H225_SeqOfH225AliasAddress *duplicateAlias;
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ /* t = 9 */
+ /* t = 10 */
+ /* t = 11 */
+ /* t = 12 */
+ /* t = 13 */
+ /* t = 14 */
+ /* t = 15 */
+ H225RegistrationRejectReason_invalidTerminalAliases *invalidTerminalAliases;
+ /* t = 16 */
+ /* t = 17 */
+ /* t = 18 */
+ H225SecurityErrors *securityError;
+ /* t = 19 */
+ } u;
+} H225RegistrationRejectReason;
+
+EXTERN int asn1PE_H225RegistrationRejectReason (OOCTXT* pctxt, H225RegistrationRejectReason* pvalue);
+
+EXTERN int asn1PD_H225RegistrationRejectReason (OOCTXT* pctxt, H225RegistrationRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* RegistrationReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RegistrationReject {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ H225RegistrationRejectReason rejectReason;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225RegistrationReject;
+
+EXTERN int asn1PE_H225RegistrationReject (OOCTXT* pctxt, H225RegistrationReject* pvalue);
+
+EXTERN int asn1PD_H225RegistrationReject (OOCTXT* pctxt, H225RegistrationReject* pvalue);
+
+/**************************************************************/
+/* */
+/* UnregRequestReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225UnregRequestReason_reregistrationRequired 1
+#define T_H225UnregRequestReason_ttlExpired 2
+#define T_H225UnregRequestReason_securityDenial 3
+#define T_H225UnregRequestReason_undefinedReason 4
+#define T_H225UnregRequestReason_maintenance 5
+#define T_H225UnregRequestReason_securityError 6
+#define T_H225UnregRequestReason_extElem1 7
+
+typedef struct EXTERN H225UnregRequestReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ H225SecurityErrors2 *securityError;
+ /* t = 7 */
+ } u;
+} H225UnregRequestReason;
+
+EXTERN int asn1PE_H225UnregRequestReason (OOCTXT* pctxt, H225UnregRequestReason* pvalue);
+
+EXTERN int asn1PD_H225UnregRequestReason (OOCTXT* pctxt, H225UnregRequestReason* pvalue);
+
+/**************************************************************/
+/* */
+/* UnregistrationRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225UnregistrationRequest {
+ struct {
+ unsigned endpointAliasPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ unsigned endpointIdentifierPresent : 1;
+ unsigned alternateEndpointsPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned reasonPresent : 1;
+ unsigned endpointAliasPatternPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ unsigned alternateGatekeeperPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225_SeqOfH225TransportAddress callSignalAddress;
+ H225_SeqOfH225AliasAddress endpointAlias;
+ H225NonStandardParameter nonStandardData;
+ H225EndpointIdentifier endpointIdentifier;
+ H225_SeqOfH225Endpoint alternateEndpoints;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225UnregRequestReason reason;
+ H225_SeqOfH225AddressPattern endpointAliasPattern;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+ H225_SeqOfH225AlternateGK alternateGatekeeper;
+ H225_SeqOfH225GenericData genericData;
+} H225UnregistrationRequest;
+
+EXTERN int asn1PE_H225UnregistrationRequest (OOCTXT* pctxt, H225UnregistrationRequest* pvalue);
+
+EXTERN int asn1PD_H225UnregistrationRequest (OOCTXT* pctxt, H225UnregistrationRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* UnregistrationConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225UnregistrationConfirm {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225_SeqOfH225GenericData genericData;
+} H225UnregistrationConfirm;
+
+EXTERN int asn1PE_H225UnregistrationConfirm (OOCTXT* pctxt, H225UnregistrationConfirm* pvalue);
+
+EXTERN int asn1PD_H225UnregistrationConfirm (OOCTXT* pctxt, H225UnregistrationConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* UnregRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225UnregRejectReason_notCurrentlyRegistered 1
+#define T_H225UnregRejectReason_callInProgress 2
+#define T_H225UnregRejectReason_undefinedReason 3
+#define T_H225UnregRejectReason_permissionDenied 4
+#define T_H225UnregRejectReason_securityDenial 5
+#define T_H225UnregRejectReason_securityError 6
+#define T_H225UnregRejectReason_extElem1 7
+
+typedef struct EXTERN H225UnregRejectReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ H225SecurityErrors2 *securityError;
+ /* t = 7 */
+ } u;
+} H225UnregRejectReason;
+
+EXTERN int asn1PE_H225UnregRejectReason (OOCTXT* pctxt, H225UnregRejectReason* pvalue);
+
+EXTERN int asn1PD_H225UnregRejectReason (OOCTXT* pctxt, H225UnregRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* UnregistrationReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225UnregistrationReject {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225UnregRejectReason rejectReason;
+ H225NonStandardParameter nonStandardData;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225_SeqOfH225GenericData genericData;
+} H225UnregistrationReject;
+
+EXTERN int asn1PE_H225UnregistrationReject (OOCTXT* pctxt, H225UnregistrationReject* pvalue);
+
+EXTERN int asn1PD_H225UnregistrationReject (OOCTXT* pctxt, H225UnregistrationReject* pvalue);
+
+/**************************************************************/
+/* */
+/* CallModel */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225CallModel_direct 1
+#define T_H225CallModel_gatekeeperRouted 2
+#define T_H225CallModel_extElem1 3
+
+typedef struct EXTERN H225CallModel {
+ int t;
+} H225CallModel;
+
+EXTERN int asn1PE_H225CallModel (OOCTXT* pctxt, H225CallModel* pvalue);
+
+EXTERN int asn1PD_H225CallModel (OOCTXT* pctxt, H225CallModel* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportQOS */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225TransportQOS_endpointControlled 1
+#define T_H225TransportQOS_gatekeeperControlled 2
+#define T_H225TransportQOS_noControl 3
+#define T_H225TransportQOS_extElem1 4
+
+typedef struct EXTERN H225TransportQOS {
+ int t;
+} H225TransportQOS;
+
+EXTERN int asn1PE_H225TransportQOS (OOCTXT* pctxt, H225TransportQOS* pvalue);
+
+EXTERN int asn1PD_H225TransportQOS (OOCTXT* pctxt, H225TransportQOS* pvalue);
+
+/**************************************************************/
+/* */
+/* AdmissionRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AdmissionRequest {
+ struct {
+ unsigned callModelPresent : 1;
+ unsigned destinationInfoPresent : 1;
+ unsigned destCallSignalAddressPresent : 1;
+ unsigned destExtraCallInfoPresent : 1;
+ unsigned srcCallSignalAddressPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ unsigned callServicesPresent : 1;
+ unsigned canMapAliasPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned srcAlternativesPresent : 1;
+ unsigned destAlternativesPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned transportQOSPresent : 1;
+ unsigned willSupplyUUIEsPresent : 1;
+ unsigned callLinkagePresent : 1;
+ unsigned gatewayDataRatePresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned desiredProtocolsPresent : 1;
+ unsigned desiredTunnelledProtocolPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ unsigned canMapSrcAliasPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225CallType callType;
+ H225CallModel callModel;
+ H225EndpointIdentifier endpointIdentifier;
+ H225_SeqOfH225AliasAddress destinationInfo;
+ H225TransportAddress destCallSignalAddress;
+ H225_SeqOfH225AliasAddress destExtraCallInfo;
+ H225_SeqOfH225AliasAddress srcInfo;
+ H225TransportAddress srcCallSignalAddress;
+ H225BandWidth bandWidth;
+ H225CallReferenceValue callReferenceValue;
+ H225NonStandardParameter nonStandardData;
+ H225QseriesOptions callServices;
+ H225ConferenceIdentifier conferenceID;
+ ASN1BOOL activeMC;
+ ASN1BOOL answerCall;
+ ASN1BOOL canMapAlias;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225Endpoint srcAlternatives;
+ H225_SeqOfH225Endpoint destAlternatives;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225TransportQOS transportQOS;
+ ASN1BOOL willSupplyUUIEs;
+ H225CallLinkage callLinkage;
+ H225DataRate gatewayDataRate;
+ H225CallCapacity capacity;
+ H225CircuitInfo circuitInfo;
+ H225_SeqOfH225SupportedProtocols desiredProtocols;
+ H225TunnelledProtocol desiredTunnelledProtocol;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+ ASN1BOOL canMapSrcAlias;
+} H225AdmissionRequest;
+
+EXTERN int asn1PE_H225AdmissionRequest (OOCTXT* pctxt, H225AdmissionRequest* pvalue);
+
+EXTERN int asn1PD_H225AdmissionRequest (OOCTXT* pctxt, H225AdmissionRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* UUIEsRequested */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225UUIEsRequested {
+ struct {
+ unsigned statusPresent : 1;
+ unsigned statusInquiryPresent : 1;
+ unsigned setupAcknowledgePresent : 1;
+ unsigned notifyPresent : 1;
+ } m;
+ ASN1BOOL setup;
+ ASN1BOOL callProceeding;
+ ASN1BOOL connect;
+ ASN1BOOL alerting;
+ ASN1BOOL information;
+ ASN1BOOL releaseComplete;
+ ASN1BOOL facility;
+ ASN1BOOL progress;
+ ASN1BOOL empty;
+ ASN1BOOL status;
+ ASN1BOOL statusInquiry;
+ ASN1BOOL setupAcknowledge;
+ ASN1BOOL notify;
+} H225UUIEsRequested;
+
+EXTERN int asn1PE_H225UUIEsRequested (OOCTXT* pctxt, H225UUIEsRequested* pvalue);
+
+EXTERN int asn1PD_H225UUIEsRequested (OOCTXT* pctxt, H225UUIEsRequested* pvalue);
+
+/**************************************************************/
+/* */
+/* AdmissionConfirm_language */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AdmissionConfirm_language {
+ ASN1UINT n;
+ ASN1IA5String *elem;
+} H225AdmissionConfirm_language;
+
+EXTERN int asn1PE_H225AdmissionConfirm_language (OOCTXT* pctxt, H225AdmissionConfirm_language* pvalue);
+
+EXTERN int asn1PD_H225AdmissionConfirm_language (OOCTXT* pctxt, H225AdmissionConfirm_language* pvalue);
+
+/**************************************************************/
+/* */
+/* AdmissionConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AdmissionConfirm {
+ struct {
+ unsigned irrFrequencyPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ unsigned destinationInfoPresent : 1;
+ unsigned destExtraCallInfoPresent : 1;
+ unsigned destinationTypePresent : 1;
+ unsigned remoteExtensionAddressPresent : 1;
+ unsigned alternateEndpointsPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned transportQOSPresent : 1;
+ unsigned willRespondToIRRPresent : 1;
+ unsigned uuiesRequestedPresent : 1;
+ unsigned languagePresent : 1;
+ unsigned alternateTransportAddressesPresent : 1;
+ unsigned useSpecifiedTransportPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned usageSpecPresent : 1;
+ unsigned supportedProtocolsPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ unsigned modifiedSrcInfoPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225BandWidth bandWidth;
+ H225CallModel callModel;
+ H225TransportAddress destCallSignalAddress;
+ ASN1USINT irrFrequency;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225AliasAddress destinationInfo;
+ H225_SeqOfH225AliasAddress destExtraCallInfo;
+ H225EndpointType destinationType;
+ H225_SeqOfH225AliasAddress remoteExtensionAddress;
+ H225_SeqOfH225Endpoint alternateEndpoints;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225TransportQOS transportQOS;
+ ASN1BOOL willRespondToIRR;
+ H225UUIEsRequested uuiesRequested;
+ H225AdmissionConfirm_language language;
+ H225AlternateTransportAddresses alternateTransportAddresses;
+ H225UseSpecifiedTransport useSpecifiedTransport;
+ H225CircuitInfo circuitInfo;
+ H225_SeqOfH225RasUsageSpecification usageSpec;
+ H225_SeqOfH225SupportedProtocols supportedProtocols;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ ASN1BOOL multipleCalls;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+ H225_SeqOfH225AliasAddress modifiedSrcInfo;
+} H225AdmissionConfirm;
+
+EXTERN int asn1PE_H225AdmissionConfirm (OOCTXT* pctxt, H225AdmissionConfirm* pvalue);
+
+EXTERN int asn1PD_H225AdmissionConfirm (OOCTXT* pctxt, H225AdmissionConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225PartyNumber */
+/* */
+/**************************************************************/
+
+/* List of H225PartyNumber */
+typedef DList H225_SeqOfH225PartyNumber;
+
+EXTERN int asn1PE_H225_SeqOfH225PartyNumber (OOCTXT* pctxt, H225_SeqOfH225PartyNumber* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225PartyNumber (OOCTXT* pctxt, H225_SeqOfH225PartyNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* AdmissionRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225AdmissionRejectReason_calledPartyNotRegistered 1
+#define T_H225AdmissionRejectReason_invalidPermission 2
+#define T_H225AdmissionRejectReason_requestDenied 3
+#define T_H225AdmissionRejectReason_undefinedReason 4
+#define T_H225AdmissionRejectReason_callerNotRegistered 5
+#define T_H225AdmissionRejectReason_routeCallToGatekeeper 6
+#define T_H225AdmissionRejectReason_invalidEndpointIdentifier 7
+#define T_H225AdmissionRejectReason_resourceUnavailable 8
+#define T_H225AdmissionRejectReason_securityDenial 9
+#define T_H225AdmissionRejectReason_qosControlNotSupported 10
+#define T_H225AdmissionRejectReason_incompleteAddress 11
+#define T_H225AdmissionRejectReason_aliasesInconsistent 12
+#define T_H225AdmissionRejectReason_routeCallToSCN 13
+#define T_H225AdmissionRejectReason_exceedsCallCapacity 14
+#define T_H225AdmissionRejectReason_collectDestination 15
+#define T_H225AdmissionRejectReason_collectPIN 16
+#define T_H225AdmissionRejectReason_genericDataReason 17
+#define T_H225AdmissionRejectReason_neededFeatureNotSupported 18
+#define T_H225AdmissionRejectReason_securityErrors 19
+#define T_H225AdmissionRejectReason_securityDHmismatch 20
+#define T_H225AdmissionRejectReason_noRouteToDestination 21
+#define T_H225AdmissionRejectReason_unallocatedNumber 22
+#define T_H225AdmissionRejectReason_extElem1 23
+
+typedef struct EXTERN H225AdmissionRejectReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ /* t = 9 */
+ /* t = 10 */
+ /* t = 11 */
+ /* t = 12 */
+ /* t = 13 */
+ H225_SeqOfH225PartyNumber *routeCallToSCN;
+ /* t = 14 */
+ /* t = 15 */
+ /* t = 16 */
+ /* t = 17 */
+ /* t = 18 */
+ /* t = 19 */
+ H225SecurityErrors2 *securityErrors;
+ /* t = 20 */
+ /* t = 21 */
+ /* t = 22 */
+ /* t = 23 */
+ } u;
+} H225AdmissionRejectReason;
+
+EXTERN int asn1PE_H225AdmissionRejectReason (OOCTXT* pctxt, H225AdmissionRejectReason* pvalue);
+
+EXTERN int asn1PD_H225AdmissionRejectReason (OOCTXT* pctxt, H225AdmissionRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* AdmissionReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AdmissionReject {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned callSignalAddressPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225AdmissionRejectReason rejectReason;
+ H225NonStandardParameter nonStandardData;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225_SeqOfH225TransportAddress callSignalAddress;
+ H225ICV integrityCheckValue;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225AdmissionReject;
+
+EXTERN int asn1PE_H225AdmissionReject (OOCTXT* pctxt, H225AdmissionReject* pvalue);
+
+EXTERN int asn1PD_H225AdmissionReject (OOCTXT* pctxt, H225AdmissionReject* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225BandwidthDetails */
+/* */
+/**************************************************************/
+
+/* List of H225BandwidthDetails */
+typedef DList H225_SeqOfH225BandwidthDetails;
+
+EXTERN int asn1PE_H225_SeqOfH225BandwidthDetails (OOCTXT* pctxt, H225_SeqOfH225BandwidthDetails* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225BandwidthDetails (OOCTXT* pctxt, H225_SeqOfH225BandwidthDetails* pvalue);
+
+/**************************************************************/
+/* */
+/* BandwidthRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225BandwidthRequest {
+ struct {
+ unsigned callTypePresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned answeredCallPresent : 1;
+ unsigned callLinkagePresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned usageInformationPresent : 1;
+ unsigned bandwidthDetailsPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225EndpointIdentifier endpointIdentifier;
+ H225ConferenceIdentifier conferenceID;
+ H225CallReferenceValue callReferenceValue;
+ H225CallType callType;
+ H225BandWidth bandWidth;
+ H225NonStandardParameter nonStandardData;
+ H225CallIdentifier callIdentifier;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ ASN1BOOL answeredCall;
+ H225CallLinkage callLinkage;
+ H225CallCapacity capacity;
+ H225RasUsageInformation usageInformation;
+ H225_SeqOfH225BandwidthDetails bandwidthDetails;
+ H225_SeqOfH225GenericData genericData;
+} H225BandwidthRequest;
+
+EXTERN int asn1PE_H225BandwidthRequest (OOCTXT* pctxt, H225BandwidthRequest* pvalue);
+
+EXTERN int asn1PD_H225BandwidthRequest (OOCTXT* pctxt, H225BandwidthRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* BandwidthConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225BandwidthConfirm {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225BandWidth bandWidth;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225CallCapacity capacity;
+ H225_SeqOfH225GenericData genericData;
+} H225BandwidthConfirm;
+
+EXTERN int asn1PE_H225BandwidthConfirm (OOCTXT* pctxt, H225BandwidthConfirm* pvalue);
+
+EXTERN int asn1PD_H225BandwidthConfirm (OOCTXT* pctxt, H225BandwidthConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* BandRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225BandRejectReason_notBound 1
+#define T_H225BandRejectReason_invalidConferenceID 2
+#define T_H225BandRejectReason_invalidPermission 3
+#define T_H225BandRejectReason_insufficientResources 4
+#define T_H225BandRejectReason_invalidRevision 5
+#define T_H225BandRejectReason_undefinedReason 6
+#define T_H225BandRejectReason_securityDenial 7
+#define T_H225BandRejectReason_securityError 8
+#define T_H225BandRejectReason_extElem1 9
+
+typedef struct EXTERN H225BandRejectReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ H225SecurityErrors2 *securityError;
+ /* t = 9 */
+ } u;
+} H225BandRejectReason;
+
+EXTERN int asn1PE_H225BandRejectReason (OOCTXT* pctxt, H225BandRejectReason* pvalue);
+
+EXTERN int asn1PD_H225BandRejectReason (OOCTXT* pctxt, H225BandRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* BandwidthReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225BandwidthReject {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225BandRejectReason rejectReason;
+ H225BandWidth allowedBandWidth;
+ H225NonStandardParameter nonStandardData;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225_SeqOfH225GenericData genericData;
+} H225BandwidthReject;
+
+EXTERN int asn1PE_H225BandwidthReject (OOCTXT* pctxt, H225BandwidthReject* pvalue);
+
+EXTERN int asn1PD_H225BandwidthReject (OOCTXT* pctxt, H225BandwidthReject* pvalue);
+
+/**************************************************************/
+/* */
+/* DisengageReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225DisengageReason_forcedDrop 1
+#define T_H225DisengageReason_normalDrop 2
+#define T_H225DisengageReason_undefinedReason 3
+#define T_H225DisengageReason_extElem1 4
+
+typedef struct EXTERN H225DisengageReason {
+ int t;
+} H225DisengageReason;
+
+EXTERN int asn1PE_H225DisengageReason (OOCTXT* pctxt, H225DisengageReason* pvalue);
+
+EXTERN int asn1PD_H225DisengageReason (OOCTXT* pctxt, H225DisengageReason* pvalue);
+
+/**************************************************************/
+/* */
+/* DisengageRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225DisengageRequest {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned answeredCallPresent : 1;
+ unsigned callLinkagePresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned usageInformationPresent : 1;
+ unsigned terminationCausePresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225EndpointIdentifier endpointIdentifier;
+ H225ConferenceIdentifier conferenceID;
+ H225CallReferenceValue callReferenceValue;
+ H225DisengageReason disengageReason;
+ H225NonStandardParameter nonStandardData;
+ H225CallIdentifier callIdentifier;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ ASN1BOOL answeredCall;
+ H225CallLinkage callLinkage;
+ H225CallCapacity capacity;
+ H225CircuitInfo circuitInfo;
+ H225RasUsageInformation usageInformation;
+ H225CallTerminationCause terminationCause;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225_SeqOfH225GenericData genericData;
+} H225DisengageRequest;
+
+EXTERN int asn1PE_H225DisengageRequest (OOCTXT* pctxt, H225DisengageRequest* pvalue);
+
+EXTERN int asn1PD_H225DisengageRequest (OOCTXT* pctxt, H225DisengageRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* DisengageConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225DisengageConfirm {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned usageInformationPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225CallCapacity capacity;
+ H225CircuitInfo circuitInfo;
+ H225RasUsageInformation usageInformation;
+ H225_SeqOfH225GenericData genericData;
+} H225DisengageConfirm;
+
+EXTERN int asn1PE_H225DisengageConfirm (OOCTXT* pctxt, H225DisengageConfirm* pvalue);
+
+EXTERN int asn1PD_H225DisengageConfirm (OOCTXT* pctxt, H225DisengageConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* DisengageRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225DisengageRejectReason_notRegistered 1
+#define T_H225DisengageRejectReason_requestToDropOther 2
+#define T_H225DisengageRejectReason_securityDenial 3
+#define T_H225DisengageRejectReason_securityError 4
+#define T_H225DisengageRejectReason_extElem1 5
+
+typedef struct EXTERN H225DisengageRejectReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ H225SecurityErrors2 *securityError;
+ /* t = 5 */
+ } u;
+} H225DisengageRejectReason;
+
+EXTERN int asn1PE_H225DisengageRejectReason (OOCTXT* pctxt, H225DisengageRejectReason* pvalue);
+
+EXTERN int asn1PD_H225DisengageRejectReason (OOCTXT* pctxt, H225DisengageRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* DisengageReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225DisengageReject {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225DisengageRejectReason rejectReason;
+ H225NonStandardParameter nonStandardData;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225_SeqOfH225GenericData genericData;
+} H225DisengageReject;
+
+EXTERN int asn1PE_H225DisengageReject (OOCTXT* pctxt, H225DisengageReject* pvalue);
+
+EXTERN int asn1PD_H225DisengageReject (OOCTXT* pctxt, H225DisengageReject* pvalue);
+
+/**************************************************************/
+/* */
+/* LocationRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225LocationRequest {
+ struct {
+ unsigned endpointIdentifierPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ unsigned sourceInfoPresent : 1;
+ unsigned canMapAliasPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned desiredProtocolsPresent : 1;
+ unsigned desiredTunnelledProtocolPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ unsigned hopCountPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned bandWidthPresent : 1;
+ unsigned sourceEndpointInfoPresent : 1;
+ unsigned canMapSrcAliasPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225EndpointIdentifier endpointIdentifier;
+ H225_SeqOfH225AliasAddress destinationInfo;
+ H225NonStandardParameter nonStandardData;
+ H225TransportAddress replyAddress;
+ H225_SeqOfH225AliasAddress sourceInfo;
+ ASN1BOOL canMapAlias;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225_SeqOfH225SupportedProtocols desiredProtocols;
+ H225TunnelledProtocol desiredTunnelledProtocol;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+ ASN1UINT8 hopCount;
+ H225CircuitInfo circuitInfo;
+ H225CallIdentifier callIdentifier;
+ H225BandWidth bandWidth;
+ H225_SeqOfH225AliasAddress sourceEndpointInfo;
+ ASN1BOOL canMapSrcAlias;
+} H225LocationRequest;
+
+EXTERN int asn1PE_H225LocationRequest (OOCTXT* pctxt, H225LocationRequest* pvalue);
+
+EXTERN int asn1PD_H225LocationRequest (OOCTXT* pctxt, H225LocationRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* LocationConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225LocationConfirm {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned destinationInfoPresent : 1;
+ unsigned destExtraCallInfoPresent : 1;
+ unsigned destinationTypePresent : 1;
+ unsigned remoteExtensionAddressPresent : 1;
+ unsigned alternateEndpointsPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned alternateTransportAddressesPresent : 1;
+ unsigned supportedProtocolsPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned modifiedSrcInfoPresent : 1;
+ unsigned bandWidthPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225TransportAddress callSignalAddress;
+ H225TransportAddress rasAddress;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225AliasAddress destinationInfo;
+ H225_SeqOfH225AliasAddress destExtraCallInfo;
+ H225EndpointType destinationType;
+ H225_SeqOfH225AliasAddress remoteExtensionAddress;
+ H225_SeqOfH225Endpoint alternateEndpoints;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225AlternateTransportAddresses alternateTransportAddresses;
+ H225_SeqOfH225SupportedProtocols supportedProtocols;
+ ASN1BOOL multipleCalls;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+ H225CircuitInfo circuitInfo;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225_SeqOfH225AliasAddress modifiedSrcInfo;
+ H225BandWidth bandWidth;
+} H225LocationConfirm;
+
+EXTERN int asn1PE_H225LocationConfirm (OOCTXT* pctxt, H225LocationConfirm* pvalue);
+
+EXTERN int asn1PD_H225LocationConfirm (OOCTXT* pctxt, H225LocationConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* LocationRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225LocationRejectReason_notRegistered 1
+#define T_H225LocationRejectReason_invalidPermission 2
+#define T_H225LocationRejectReason_requestDenied 3
+#define T_H225LocationRejectReason_undefinedReason 4
+#define T_H225LocationRejectReason_securityDenial 5
+#define T_H225LocationRejectReason_aliasesInconsistent 6
+#define T_H225LocationRejectReason_routeCalltoSCN 7
+#define T_H225LocationRejectReason_resourceUnavailable 8
+#define T_H225LocationRejectReason_genericDataReason 9
+#define T_H225LocationRejectReason_neededFeatureNotSupported 10
+#define T_H225LocationRejectReason_hopCountExceeded 11
+#define T_H225LocationRejectReason_incompleteAddress 12
+#define T_H225LocationRejectReason_securityError 13
+#define T_H225LocationRejectReason_securityDHmismatch 14
+#define T_H225LocationRejectReason_noRouteToDestination 15
+#define T_H225LocationRejectReason_unallocatedNumber 16
+#define T_H225LocationRejectReason_extElem1 17
+
+typedef struct EXTERN H225LocationRejectReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ H225_SeqOfH225PartyNumber *routeCalltoSCN;
+ /* t = 8 */
+ /* t = 9 */
+ /* t = 10 */
+ /* t = 11 */
+ /* t = 12 */
+ /* t = 13 */
+ H225SecurityErrors2 *securityError;
+ /* t = 14 */
+ /* t = 15 */
+ /* t = 16 */
+ /* t = 17 */
+ } u;
+} H225LocationRejectReason;
+
+EXTERN int asn1PE_H225LocationRejectReason (OOCTXT* pctxt, H225LocationRejectReason* pvalue);
+
+EXTERN int asn1PD_H225LocationRejectReason (OOCTXT* pctxt, H225LocationRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* LocationReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225LocationReject {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ unsigned serviceControlPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225LocationRejectReason rejectReason;
+ H225NonStandardParameter nonStandardData;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+} H225LocationReject;
+
+EXTERN int asn1PE_H225LocationReject (OOCTXT* pctxt, H225LocationReject* pvalue);
+
+EXTERN int asn1PD_H225LocationReject (OOCTXT* pctxt, H225LocationReject* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225InfoRequest {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned replyAddressPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned uuiesRequestedPresent : 1;
+ unsigned callLinkagePresent : 1;
+ unsigned usageInfoRequestedPresent : 1;
+ unsigned segmentedResponseSupportedPresent : 1;
+ unsigned nextSegmentRequestedPresent : 1;
+ unsigned capacityInfoRequestedPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225CallReferenceValue callReferenceValue;
+ H225NonStandardParameter nonStandardData;
+ H225TransportAddress replyAddress;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225UUIEsRequested uuiesRequested;
+ H225CallLinkage callLinkage;
+ H225RasUsageInfoTypes usageInfoRequested;
+ ASN1USINT nextSegmentRequested;
+ H225_SeqOfH225GenericData genericData;
+} H225InfoRequest;
+
+EXTERN int asn1PE_H225InfoRequest (OOCTXT* pctxt, H225InfoRequest* pvalue);
+
+EXTERN int asn1PD_H225InfoRequest (OOCTXT* pctxt, H225InfoRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225RTPSession */
+/* */
+/**************************************************************/
+
+/* List of H225RTPSession */
+typedef DList H225_SeqOfH225RTPSession;
+
+EXTERN int asn1PE_H225_SeqOfH225RTPSession (OOCTXT* pctxt, H225_SeqOfH225RTPSession* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225RTPSession (OOCTXT* pctxt, H225_SeqOfH225RTPSession* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TransportChannelInfo */
+/* */
+/**************************************************************/
+
+/* List of H225TransportChannelInfo */
+typedef DList H225_SeqOfH225TransportChannelInfo;
+
+EXTERN int asn1PE_H225_SeqOfH225TransportChannelInfo (OOCTXT* pctxt, H225_SeqOfH225TransportChannelInfo* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225TransportChannelInfo (OOCTXT* pctxt, H225_SeqOfH225TransportChannelInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ConferenceIdentifier */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225_SeqOfH225ConferenceIdentifier {
+ ASN1UINT n;
+ H225ConferenceIdentifier *elem;
+} H225_SeqOfH225ConferenceIdentifier;
+
+EXTERN int asn1PE_H225_SeqOfH225ConferenceIdentifier (OOCTXT* pctxt, H225_SeqOfH225ConferenceIdentifier* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225ConferenceIdentifier (OOCTXT* pctxt, H225_SeqOfH225ConferenceIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequestResponse_perCallInfo_element_pdu_element */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225InfoRequestResponse_perCallInfo_element_pdu_element {
+ H225H323_UU_PDU h323pdu;
+ ASN1BOOL sent;
+} H225InfoRequestResponse_perCallInfo_element_pdu_element;
+
+EXTERN int asn1PE_H225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue);
+
+EXTERN int asn1PD_H225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_el */
+/* */
+/**************************************************************/
+
+/* List of H225InfoRequestResponse_perCallInfo_element_pdu_element */
+typedef DList H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element;
+
+EXTERN int asn1PE_H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequestResponse_perCallInfo_element */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225InfoRequestResponse_perCallInfo_element {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned originatorPresent : 1;
+ unsigned audioPresent : 1;
+ unsigned videoPresent : 1;
+ unsigned dataPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned substituteConfIDsPresent : 1;
+ unsigned pduPresent : 1;
+ unsigned callLinkagePresent : 1;
+ unsigned usageInformationPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225CallReferenceValue callReferenceValue;
+ H225ConferenceIdentifier conferenceID;
+ ASN1BOOL originator;
+ H225_SeqOfH225RTPSession audio;
+ H225_SeqOfH225RTPSession video;
+ H225_SeqOfH225TransportChannelInfo data;
+ H225TransportChannelInfo h245;
+ H225TransportChannelInfo callSignaling;
+ H225CallType callType;
+ H225BandWidth bandWidth;
+ H225CallModel callModel;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225_SeqOfH225ConferenceIdentifier substituteConfIDs;
+ H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element pdu;
+ H225CallLinkage callLinkage;
+ H225RasUsageInformation usageInformation;
+ H225CircuitInfo circuitInfo;
+} H225InfoRequestResponse_perCallInfo_element;
+
+EXTERN int asn1PE_H225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element* pvalue);
+
+EXTERN int asn1PD_H225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225InfoRequestResponse_perCallInfo_element */
+/* */
+/**************************************************************/
+
+/* List of H225InfoRequestResponse_perCallInfo_element */
+typedef DList H225_SeqOfH225InfoRequestResponse_perCallInfo_element;
+
+EXTERN int asn1PE_H225_SeqOfH225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequestResponseStatus */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225InfoRequestResponseStatus_complete 1
+#define T_H225InfoRequestResponseStatus_incomplete 2
+#define T_H225InfoRequestResponseStatus_segment 3
+#define T_H225InfoRequestResponseStatus_invalidCall 4
+#define T_H225InfoRequestResponseStatus_extElem1 5
+
+typedef struct EXTERN H225InfoRequestResponseStatus {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ ASN1USINT segment;
+ /* t = 4 */
+ /* t = 5 */
+ } u;
+} H225InfoRequestResponseStatus;
+
+EXTERN int asn1PE_H225InfoRequestResponseStatus (OOCTXT* pctxt, H225InfoRequestResponseStatus* pvalue);
+
+EXTERN int asn1PD_H225InfoRequestResponseStatus (OOCTXT* pctxt, H225InfoRequestResponseStatus* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequestResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225InfoRequestResponse {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned endpointAliasPresent : 1;
+ unsigned perCallInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned needResponsePresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned irrStatusPresent : 1;
+ unsigned unsolicitedPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225RequestSeqNum requestSeqNum;
+ H225EndpointType endpointType;
+ H225EndpointIdentifier endpointIdentifier;
+ H225TransportAddress rasAddress;
+ H225_SeqOfH225TransportAddress callSignalAddress;
+ H225_SeqOfH225AliasAddress endpointAlias;
+ H225_SeqOfH225InfoRequestResponse_perCallInfo_element perCallInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ ASN1BOOL needResponse;
+ H225CallCapacity capacity;
+ H225InfoRequestResponseStatus irrStatus;
+ ASN1BOOL unsolicited;
+ H225_SeqOfH225GenericData genericData;
+} H225InfoRequestResponse;
+
+EXTERN int asn1PE_H225InfoRequestResponse (OOCTXT* pctxt, H225InfoRequestResponse* pvalue);
+
+EXTERN int asn1PD_H225InfoRequestResponse (OOCTXT* pctxt, H225InfoRequestResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* NonStandardMessage */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225NonStandardMessage {
+ struct {
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225NonStandardMessage;
+
+EXTERN int asn1PE_H225NonStandardMessage (OOCTXT* pctxt, H225NonStandardMessage* pvalue);
+
+EXTERN int asn1PD_H225NonStandardMessage (OOCTXT* pctxt, H225NonStandardMessage* pvalue);
+
+/**************************************************************/
+/* */
+/* UnknownMessageResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225UnknownMessageResponse {
+ struct {
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned messageNotUnderstoodPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ ASN1DynOctStr messageNotUnderstood;
+} H225UnknownMessageResponse;
+
+EXTERN int asn1PE_H225UnknownMessageResponse (OOCTXT* pctxt, H225UnknownMessageResponse* pvalue);
+
+EXTERN int asn1PD_H225UnknownMessageResponse (OOCTXT* pctxt, H225UnknownMessageResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestInProgress */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RequestInProgress {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ ASN1USINT delay;
+} H225RequestInProgress;
+
+EXTERN int asn1PE_H225RequestInProgress (OOCTXT* pctxt, H225RequestInProgress* pvalue);
+
+EXTERN int asn1PD_H225RequestInProgress (OOCTXT* pctxt, H225RequestInProgress* pvalue);
+
+/**************************************************************/
+/* */
+/* ResourcesAvailableIndicate */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ResourcesAvailableIndicate {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ H225EndpointIdentifier endpointIdentifier;
+ H225_SeqOfH225SupportedProtocols protocols;
+ ASN1BOOL almostOutOfResources;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225CallCapacity capacity;
+ H225_SeqOfH225GenericData genericData;
+} H225ResourcesAvailableIndicate;
+
+EXTERN int asn1PE_H225ResourcesAvailableIndicate (OOCTXT* pctxt, H225ResourcesAvailableIndicate* pvalue);
+
+EXTERN int asn1PD_H225ResourcesAvailableIndicate (OOCTXT* pctxt, H225ResourcesAvailableIndicate* pvalue);
+
+/**************************************************************/
+/* */
+/* ResourcesAvailableConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ResourcesAvailableConfirm {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225_SeqOfH225GenericData genericData;
+} H225ResourcesAvailableConfirm;
+
+EXTERN int asn1PE_H225ResourcesAvailableConfirm (OOCTXT* pctxt, H225ResourcesAvailableConfirm* pvalue);
+
+EXTERN int asn1PD_H225ResourcesAvailableConfirm (OOCTXT* pctxt, H225ResourcesAvailableConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequestAck */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225InfoRequestAck {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+} H225InfoRequestAck;
+
+EXTERN int asn1PE_H225InfoRequestAck (OOCTXT* pctxt, H225InfoRequestAck* pvalue);
+
+EXTERN int asn1PD_H225InfoRequestAck (OOCTXT* pctxt, H225InfoRequestAck* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequestNakReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225InfoRequestNakReason_notRegistered 1
+#define T_H225InfoRequestNakReason_securityDenial 2
+#define T_H225InfoRequestNakReason_undefinedReason 3
+#define T_H225InfoRequestNakReason_securityError 4
+#define T_H225InfoRequestNakReason_extElem1 5
+
+typedef struct EXTERN H225InfoRequestNakReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ H225SecurityErrors2 *securityError;
+ /* t = 5 */
+ } u;
+} H225InfoRequestNakReason;
+
+EXTERN int asn1PE_H225InfoRequestNakReason (OOCTXT* pctxt, H225InfoRequestNakReason* pvalue);
+
+EXTERN int asn1PD_H225InfoRequestNakReason (OOCTXT* pctxt, H225InfoRequestNakReason* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequestNak */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225InfoRequestNak {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225NonStandardParameter nonStandardData;
+ H225InfoRequestNakReason nakReason;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+} H225InfoRequestNak;
+
+EXTERN int asn1PE_H225InfoRequestNak (OOCTXT* pctxt, H225InfoRequestNak* pvalue);
+
+EXTERN int asn1PD_H225InfoRequestNak (OOCTXT* pctxt, H225InfoRequestNak* pvalue);
+
+/**************************************************************/
+/* */
+/* ServiceControlIndication_callSpecific */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ServiceControlIndication_callSpecific {
+ H225CallIdentifier callIdentifier;
+ H225ConferenceIdentifier conferenceID;
+ ASN1BOOL answeredCall;
+} H225ServiceControlIndication_callSpecific;
+
+EXTERN int asn1PE_H225ServiceControlIndication_callSpecific (OOCTXT* pctxt, H225ServiceControlIndication_callSpecific* pvalue);
+
+EXTERN int asn1PD_H225ServiceControlIndication_callSpecific (OOCTXT* pctxt, H225ServiceControlIndication_callSpecific* pvalue);
+
+/**************************************************************/
+/* */
+/* ServiceControlIndication */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ServiceControlIndication {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned endpointIdentifierPresent : 1;
+ unsigned callSpecificPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225EndpointIdentifier endpointIdentifier;
+ H225ServiceControlIndication_callSpecific callSpecific;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225ServiceControlIndication;
+
+EXTERN int asn1PE_H225ServiceControlIndication (OOCTXT* pctxt, H225ServiceControlIndication* pvalue);
+
+EXTERN int asn1PD_H225ServiceControlIndication (OOCTXT* pctxt, H225ServiceControlIndication* pvalue);
+
+/**************************************************************/
+/* */
+/* ServiceControlResponse_result */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225ServiceControlResponse_result_started 1
+#define T_H225ServiceControlResponse_result_failed 2
+#define T_H225ServiceControlResponse_result_stopped 3
+#define T_H225ServiceControlResponse_result_notAvailable 4
+#define T_H225ServiceControlResponse_result_neededFeatureNotSupported 5
+#define T_H225ServiceControlResponse_result_extElem1 6
+
+typedef struct EXTERN H225ServiceControlResponse_result {
+ int t;
+} H225ServiceControlResponse_result;
+
+EXTERN int asn1PE_H225ServiceControlResponse_result (OOCTXT* pctxt, H225ServiceControlResponse_result* pvalue);
+
+EXTERN int asn1PD_H225ServiceControlResponse_result (OOCTXT* pctxt, H225ServiceControlResponse_result* pvalue);
+
+/**************************************************************/
+/* */
+/* ServiceControlResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ServiceControlResponse {
+ struct {
+ unsigned resultPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ServiceControlResponse_result result;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225ServiceControlResponse;
+
+EXTERN int asn1PE_H225ServiceControlResponse (OOCTXT* pctxt, H225ServiceControlResponse* pvalue);
+
+EXTERN int asn1PD_H225ServiceControlResponse (OOCTXT* pctxt, H225ServiceControlResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AdmissionConfirm */
+/* */
+/**************************************************************/
+
+/* List of H225AdmissionConfirm */
+typedef DList H225_SeqOfH225AdmissionConfirm;
+
+EXTERN int asn1PE_H225_SeqOfH225AdmissionConfirm (OOCTXT* pctxt, H225_SeqOfH225AdmissionConfirm* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225AdmissionConfirm (OOCTXT* pctxt, H225_SeqOfH225AdmissionConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* RasMessage */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225RasMessage_gatekeeperRequest 1
+#define T_H225RasMessage_gatekeeperConfirm 2
+#define T_H225RasMessage_gatekeeperReject 3
+#define T_H225RasMessage_registrationRequest 4
+#define T_H225RasMessage_registrationConfirm 5
+#define T_H225RasMessage_registrationReject 6
+#define T_H225RasMessage_unregistrationRequest 7
+#define T_H225RasMessage_unregistrationConfirm 8
+#define T_H225RasMessage_unregistrationReject 9
+#define T_H225RasMessage_admissionRequest 10
+#define T_H225RasMessage_admissionConfirm 11
+#define T_H225RasMessage_admissionReject 12
+#define T_H225RasMessage_bandwidthRequest 13
+#define T_H225RasMessage_bandwidthConfirm 14
+#define T_H225RasMessage_bandwidthReject 15
+#define T_H225RasMessage_disengageRequest 16
+#define T_H225RasMessage_disengageConfirm 17
+#define T_H225RasMessage_disengageReject 18
+#define T_H225RasMessage_locationRequest 19
+#define T_H225RasMessage_locationConfirm 20
+#define T_H225RasMessage_locationReject 21
+#define T_H225RasMessage_infoRequest 22
+#define T_H225RasMessage_infoRequestResponse 23
+#define T_H225RasMessage_nonStandardMessage 24
+#define T_H225RasMessage_unknownMessageResponse 25
+#define T_H225RasMessage_requestInProgress 26
+#define T_H225RasMessage_resourcesAvailableIndicate 27
+#define T_H225RasMessage_resourcesAvailableConfirm 28
+#define T_H225RasMessage_infoRequestAck 29
+#define T_H225RasMessage_infoRequestNak 30
+#define T_H225RasMessage_serviceControlIndication 31
+#define T_H225RasMessage_serviceControlResponse 32
+#define T_H225RasMessage_admissionConfirmSequence 33
+#define T_H225RasMessage_extElem1 34
+
+typedef struct EXTERN H225RasMessage {
+ int t;
+ union {
+ /* t = 1 */
+ H225GatekeeperRequest *gatekeeperRequest;
+ /* t = 2 */
+ H225GatekeeperConfirm *gatekeeperConfirm;
+ /* t = 3 */
+ H225GatekeeperReject *gatekeeperReject;
+ /* t = 4 */
+ H225RegistrationRequest *registrationRequest;
+ /* t = 5 */
+ H225RegistrationConfirm *registrationConfirm;
+ /* t = 6 */
+ H225RegistrationReject *registrationReject;
+ /* t = 7 */
+ H225UnregistrationRequest *unregistrationRequest;
+ /* t = 8 */
+ H225UnregistrationConfirm *unregistrationConfirm;
+ /* t = 9 */
+ H225UnregistrationReject *unregistrationReject;
+ /* t = 10 */
+ H225AdmissionRequest *admissionRequest;
+ /* t = 11 */
+ H225AdmissionConfirm *admissionConfirm;
+ /* t = 12 */
+ H225AdmissionReject *admissionReject;
+ /* t = 13 */
+ H225BandwidthRequest *bandwidthRequest;
+ /* t = 14 */
+ H225BandwidthConfirm *bandwidthConfirm;
+ /* t = 15 */
+ H225BandwidthReject *bandwidthReject;
+ /* t = 16 */
+ H225DisengageRequest *disengageRequest;
+ /* t = 17 */
+ H225DisengageConfirm *disengageConfirm;
+ /* t = 18 */
+ H225DisengageReject *disengageReject;
+ /* t = 19 */
+ H225LocationRequest *locationRequest;
+ /* t = 20 */
+ H225LocationConfirm *locationConfirm;
+ /* t = 21 */
+ H225LocationReject *locationReject;
+ /* t = 22 */
+ H225InfoRequest *infoRequest;
+ /* t = 23 */
+ H225InfoRequestResponse *infoRequestResponse;
+ /* t = 24 */
+ H225NonStandardMessage *nonStandardMessage;
+ /* t = 25 */
+ H225UnknownMessageResponse *unknownMessageResponse;
+ /* t = 26 */
+ H225RequestInProgress *requestInProgress;
+ /* t = 27 */
+ H225ResourcesAvailableIndicate *resourcesAvailableIndicate;
+ /* t = 28 */
+ H225ResourcesAvailableConfirm *resourcesAvailableConfirm;
+ /* t = 29 */
+ H225InfoRequestAck *infoRequestAck;
+ /* t = 30 */
+ H225InfoRequestNak *infoRequestNak;
+ /* t = 31 */
+ H225ServiceControlIndication *serviceControlIndication;
+ /* t = 32 */
+ H225ServiceControlResponse *serviceControlResponse;
+ /* t = 33 */
+ H225_SeqOfH225AdmissionConfirm *admissionConfirmSequence;
+ /* t = 34 */
+ } u;
+} H225RasMessage;
+
+EXTERN int asn1PE_H225RasMessage (OOCTXT* pctxt, H225RasMessage* pvalue);
+
+EXTERN int asn1PD_H225RasMessage (OOCTXT* pctxt, H225RasMessage* pvalue);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/addons/ooh323c/src/h323/H323-MESSAGESDec.c b/addons/ooh323c/src/h323/H323-MESSAGESDec.c
new file mode 100644
index 000000000..2f8700b66
--- /dev/null
+++ b/addons/ooh323c/src/h323/H323-MESSAGESDec.c
@@ -0,0 +1,27199 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+
+#include "ooasn1.h"
+#include "H323-MESSAGES.h"
+#include "eventHandler.h"
+
+/**************************************************************/
+/* */
+/* ScreeningIndicator */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ScreeningIndicator (OOCTXT* pctxt, H225ScreeningIndicator* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (extbit) {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+
+ *pvalue = ui;
+ }
+ else {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ switch (ui) {
+ case 0: *pvalue = userProvidedNotScreened; break;
+ case 1: *pvalue = userProvidedVerifiedAndPassed; break;
+ case 2: *pvalue = userProvidedVerifiedAndFailed; break;
+ case 3: *pvalue = networkProvided; break;
+ default: return ASN_E_INVENUM;
+ }
+ }
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NumberDigits */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_NumberDigits_CharSet;
+
+EXTERN int asn1PD_H225NumberDigits (OOCTXT* pctxt, H225NumberDigits* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, pvalue, gs_H323_MESSAGES_NumberDigits_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TBCD_STRING */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_TBCD_STRING_CharSet;
+
+EXTERN int asn1PD_H225TBCD_STRING (OOCTXT* pctxt, H225TBCD_STRING* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConstrainedStringEx (pctxt, pvalue, gs_H323_MESSAGES_TBCD_STRING_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GloballyUniqueID */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GloballyUniqueID (OOCTXT* pctxt, H225GloballyUniqueID* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ConferenceIdentifier (OOCTXT* pctxt, H225ConferenceIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = asn1PD_H225GloballyUniqueID (pctxt, pvalue);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestSeqNum */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RequestSeqNum (OOCTXT* pctxt, H225RequestSeqNum* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUInt16 (pctxt, pvalue, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GatekeeperIdentifier (OOCTXT* pctxt, H225GatekeeperIdentifier* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBMPString (pctxt, pvalue, 0);
+ if (stat != ASN_OK) return stat;
+ invokeCharStr16BitValue (pctxt, pvalue->nchars, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BandWidth */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225BandWidth (OOCTXT* pctxt, H225BandWidth* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUnsigned (pctxt, pvalue, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallReferenceValue */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallReferenceValue (OOCTXT* pctxt, H225CallReferenceValue* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUInt16 (pctxt, pvalue, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EndpointIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225EndpointIdentifier (OOCTXT* pctxt, H225EndpointIdentifier* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBMPString (pctxt, pvalue, 0);
+ if (stat != ASN_OK) return stat;
+ invokeCharStr16BitValue (pctxt, pvalue->nchars, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ProtocolIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ProtocolIdentifier (OOCTXT* pctxt, H225ProtocolIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeObjectIdentifier (pctxt, pvalue);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->numids, pvalue->subid);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TimeToLive */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TimeToLive (OOCTXT* pctxt, H225TimeToLive* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUnsigned (pctxt, pvalue, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H248PackagesDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H248PackagesDescriptor (OOCTXT* pctxt, H225H248PackagesDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)pvalue);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H248SignalsDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H248SignalsDescriptor (OOCTXT* pctxt, H225H248SignalsDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)pvalue);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GenericIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GenericIdentifier (OOCTXT* pctxt, H225GenericIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* standard */
+ case 0:
+ invokeStartElement (pctxt, "standard", -1);
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (extbit == 0) {
+ stat = decodeConsInteger (pctxt, &pvalue->u.standard, 0, 16383);
+ if (stat != ASN_OK) return stat;
+ }
+ else {
+ stat = decodeUnconsInteger (pctxt, &pvalue->u.standard);
+ if (stat != ASN_OK) return stat;
+ }
+ invokeIntValue (pctxt, pvalue->u.standard);
+
+ invokeEndElement (pctxt, "standard", -1);
+
+ break;
+
+ /* oid */
+ case 1:
+ invokeStartElement (pctxt, "oid", -1);
+
+ pvalue->u.oid = ALLOC_ASN1ELEM (pctxt, ASN1OBJID);
+
+ stat = decodeObjectIdentifier (pctxt, pvalue->u.oid);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->u.oid->numids, pvalue->u.oid->subid);
+
+ invokeEndElement (pctxt, "oid", -1);
+
+ break;
+
+ /* nonStandard */
+ case 2:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H225GloballyUniqueID);
+
+ stat = asn1PD_H225GloballyUniqueID (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipAddress_ip */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipAddress_ip (OOCTXT* pctxt, H225TransportAddress_ipAddress_ip* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipAddress (OOCTXT* pctxt, H225TransportAddress_ipAddress* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode ip */
+
+ invokeStartElement (pctxt, "ip", -1);
+
+ stat = asn1PD_H225TransportAddress_ipAddress_ip (pctxt, &pvalue->ip);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ip", -1);
+
+ /* decode port */
+
+ invokeStartElement (pctxt, "port", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->port, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->port);
+
+ invokeEndElement (pctxt, "port", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_ip */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_ip (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_ip* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_route_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_route_element* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TransportAddress_ipSourceRoute_route_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225_SeqOfH225TransportAddress_ipSourceRoute_route_element* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, H225TransportAddress_ipSourceRoute_route_element);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H225TransportAddress_ipSourceRoute_route_element (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_routing */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_routing (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_routing* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* strict */
+ case 0:
+ invokeStartElement (pctxt, "strict", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "strict", -1);
+
+ break;
+
+ /* loose */
+ case 1:
+ invokeStartElement (pctxt, "loose", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "loose", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode ip */
+
+ invokeStartElement (pctxt, "ip", -1);
+
+ stat = asn1PD_H225TransportAddress_ipSourceRoute_ip (pctxt, &pvalue->ip);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ip", -1);
+
+ /* decode port */
+
+ invokeStartElement (pctxt, "port", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->port, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->port);
+
+ invokeEndElement (pctxt, "port", -1);
+
+ /* decode route */
+
+ invokeStartElement (pctxt, "route", -1);
+
+ stat = asn1PD_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (pctxt, &pvalue->route);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "route", -1);
+
+ /* decode routing */
+
+ invokeStartElement (pctxt, "routing", -1);
+
+ stat = asn1PD_H225TransportAddress_ipSourceRoute_routing (pctxt, &pvalue->routing);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "routing", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_node */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress_node (OOCTXT* pctxt, H225TransportAddress_ipxAddress_node* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 6, 6, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_netnum */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress_netnum (OOCTXT* pctxt, H225TransportAddress_ipxAddress_netnum* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_port */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress_port (OOCTXT* pctxt, H225TransportAddress_ipxAddress_port* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 2, 2, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress (OOCTXT* pctxt, H225TransportAddress_ipxAddress* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode node */
+
+ invokeStartElement (pctxt, "node", -1);
+
+ stat = asn1PD_H225TransportAddress_ipxAddress_node (pctxt, &pvalue->node);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "node", -1);
+
+ /* decode netnum */
+
+ invokeStartElement (pctxt, "netnum", -1);
+
+ stat = asn1PD_H225TransportAddress_ipxAddress_netnum (pctxt, &pvalue->netnum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "netnum", -1);
+
+ /* decode port */
+
+ invokeStartElement (pctxt, "port", -1);
+
+ stat = asn1PD_H225TransportAddress_ipxAddress_port (pctxt, &pvalue->port);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "port", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ip6Address_ip */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ip6Address_ip (OOCTXT* pctxt, H225TransportAddress_ip6Address_ip* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ip6Address */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ip6Address (OOCTXT* pctxt, H225TransportAddress_ip6Address* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode ip */
+
+ invokeStartElement (pctxt, "ip", -1);
+
+ stat = asn1PD_H225TransportAddress_ip6Address_ip (pctxt, &pvalue->ip);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ip", -1);
+
+ /* decode port */
+
+ invokeStartElement (pctxt, "port", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->port, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->port);
+
+ invokeEndElement (pctxt, "port", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_netBios */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_netBios (OOCTXT* pctxt, H225TransportAddress_netBios* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_nsap */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_nsap (OOCTXT* pctxt, H225TransportAddress_nsap* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H221NonStandard */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H221NonStandard (OOCTXT* pctxt, H225H221NonStandard* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode t35CountryCode */
+
+ invokeStartElement (pctxt, "t35CountryCode", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->t35CountryCode, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->t35CountryCode);
+
+ invokeEndElement (pctxt, "t35CountryCode", -1);
+
+ /* decode t35Extension */
+
+ invokeStartElement (pctxt, "t35Extension", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->t35Extension, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->t35Extension);
+
+ invokeEndElement (pctxt, "t35Extension", -1);
+
+ /* decode manufacturerCode */
+
+ invokeStartElement (pctxt, "manufacturerCode", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->manufacturerCode, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->manufacturerCode);
+
+ invokeEndElement (pctxt, "manufacturerCode", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225NonStandardIdentifier (OOCTXT* pctxt, H225NonStandardIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* object */
+ case 0:
+ invokeStartElement (pctxt, "object", -1);
+
+ pvalue->u.object = ALLOC_ASN1ELEM (pctxt, ASN1OBJID);
+
+ stat = decodeObjectIdentifier (pctxt, pvalue->u.object);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->u.object->numids, pvalue->u.object->subid);
+
+ invokeEndElement (pctxt, "object", -1);
+
+ break;
+
+ /* h221NonStandard */
+ case 1:
+ invokeStartElement (pctxt, "h221NonStandard", -1);
+
+ pvalue->u.h221NonStandard = ALLOC_ASN1ELEM (pctxt, H225H221NonStandard);
+
+ stat = asn1PD_H225H221NonStandard (pctxt, pvalue->u.h221NonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h221NonStandard", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225NonStandardParameter (OOCTXT* pctxt, H225NonStandardParameter* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode nonStandardIdentifier */
+
+ invokeStartElement (pctxt, "nonStandardIdentifier", -1);
+
+ stat = asn1PD_H225NonStandardIdentifier (pctxt, &pvalue->nonStandardIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardIdentifier", -1);
+
+ /* decode data */
+
+ invokeStartElement (pctxt, "data", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->data);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->data.numocts, pvalue->data.data);
+
+ invokeEndElement (pctxt, "data", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress (OOCTXT* pctxt, H225TransportAddress* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 6);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* ipAddress */
+ case 0:
+ invokeStartElement (pctxt, "ipAddress", -1);
+
+ pvalue->u.ipAddress = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ipAddress);
+
+ stat = asn1PD_H225TransportAddress_ipAddress (pctxt, pvalue->u.ipAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ipAddress", -1);
+
+ break;
+
+ /* ipSourceRoute */
+ case 1:
+ invokeStartElement (pctxt, "ipSourceRoute", -1);
+
+ pvalue->u.ipSourceRoute = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ipSourceRoute);
+
+ stat = asn1PD_H225TransportAddress_ipSourceRoute (pctxt, pvalue->u.ipSourceRoute);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ipSourceRoute", -1);
+
+ break;
+
+ /* ipxAddress */
+ case 2:
+ invokeStartElement (pctxt, "ipxAddress", -1);
+
+ pvalue->u.ipxAddress = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ipxAddress);
+
+ stat = asn1PD_H225TransportAddress_ipxAddress (pctxt, pvalue->u.ipxAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ipxAddress", -1);
+
+ break;
+
+ /* ip6Address */
+ case 3:
+ invokeStartElement (pctxt, "ip6Address", -1);
+
+ pvalue->u.ip6Address = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ip6Address);
+
+ stat = asn1PD_H225TransportAddress_ip6Address (pctxt, pvalue->u.ip6Address);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ip6Address", -1);
+
+ break;
+
+ /* netBios */
+ case 4:
+ invokeStartElement (pctxt, "netBios", -1);
+
+ pvalue->u.netBios = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_netBios);
+
+ stat = asn1PD_H225TransportAddress_netBios (pctxt, pvalue->u.netBios);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "netBios", -1);
+
+ break;
+
+ /* nsap */
+ case 5:
+ invokeStartElement (pctxt, "nsap", -1);
+
+ pvalue->u.nsap = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_nsap);
+
+ stat = asn1PD_H225TransportAddress_nsap (pctxt, pvalue->u.nsap);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nsap", -1);
+
+ break;
+
+ /* nonStandardAddress */
+ case 6:
+ invokeStartElement (pctxt, "nonStandardAddress", -1);
+
+ pvalue->u.nonStandardAddress = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandardAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardAddress", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 8;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PublicTypeOfNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225PublicTypeOfNumber (OOCTXT* pctxt, H225PublicTypeOfNumber* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 5);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unknown */
+ case 0:
+ invokeStartElement (pctxt, "unknown", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unknown", -1);
+
+ break;
+
+ /* internationalNumber */
+ case 1:
+ invokeStartElement (pctxt, "internationalNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "internationalNumber", -1);
+
+ break;
+
+ /* nationalNumber */
+ case 2:
+ invokeStartElement (pctxt, "nationalNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "nationalNumber", -1);
+
+ break;
+
+ /* networkSpecificNumber */
+ case 3:
+ invokeStartElement (pctxt, "networkSpecificNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "networkSpecificNumber", -1);
+
+ break;
+
+ /* subscriberNumber */
+ case 4:
+ invokeStartElement (pctxt, "subscriberNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "subscriberNumber", -1);
+
+ break;
+
+ /* abbreviatedNumber */
+ case 5:
+ invokeStartElement (pctxt, "abbreviatedNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "abbreviatedNumber", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 7;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PublicPartyNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225PublicPartyNumber (OOCTXT* pctxt, H225PublicPartyNumber* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode publicTypeOfNumber */
+
+ invokeStartElement (pctxt, "publicTypeOfNumber", -1);
+
+ stat = asn1PD_H225PublicTypeOfNumber (pctxt, &pvalue->publicTypeOfNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "publicTypeOfNumber", -1);
+
+ /* decode publicNumberDigits */
+
+ invokeStartElement (pctxt, "publicNumberDigits", -1);
+
+ stat = asn1PD_H225NumberDigits (pctxt, &pvalue->publicNumberDigits);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "publicNumberDigits", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PrivateTypeOfNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225PrivateTypeOfNumber (OOCTXT* pctxt, H225PrivateTypeOfNumber* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 5);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unknown */
+ case 0:
+ invokeStartElement (pctxt, "unknown", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unknown", -1);
+
+ break;
+
+ /* level2RegionalNumber */
+ case 1:
+ invokeStartElement (pctxt, "level2RegionalNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "level2RegionalNumber", -1);
+
+ break;
+
+ /* level1RegionalNumber */
+ case 2:
+ invokeStartElement (pctxt, "level1RegionalNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "level1RegionalNumber", -1);
+
+ break;
+
+ /* pISNSpecificNumber */
+ case 3:
+ invokeStartElement (pctxt, "pISNSpecificNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "pISNSpecificNumber", -1);
+
+ break;
+
+ /* localNumber */
+ case 4:
+ invokeStartElement (pctxt, "localNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "localNumber", -1);
+
+ break;
+
+ /* abbreviatedNumber */
+ case 5:
+ invokeStartElement (pctxt, "abbreviatedNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "abbreviatedNumber", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 7;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PrivatePartyNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225PrivatePartyNumber (OOCTXT* pctxt, H225PrivatePartyNumber* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode privateTypeOfNumber */
+
+ invokeStartElement (pctxt, "privateTypeOfNumber", -1);
+
+ stat = asn1PD_H225PrivateTypeOfNumber (pctxt, &pvalue->privateTypeOfNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "privateTypeOfNumber", -1);
+
+ /* decode privateNumberDigits */
+
+ invokeStartElement (pctxt, "privateNumberDigits", -1);
+
+ stat = asn1PD_H225NumberDigits (pctxt, &pvalue->privateNumberDigits);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "privateNumberDigits", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PartyNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225PartyNumber (OOCTXT* pctxt, H225PartyNumber* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 4);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* e164Number */
+ case 0:
+ invokeStartElement (pctxt, "e164Number", -1);
+
+ pvalue->u.e164Number = ALLOC_ASN1ELEM (pctxt, H225PublicPartyNumber);
+
+ stat = asn1PD_H225PublicPartyNumber (pctxt, pvalue->u.e164Number);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "e164Number", -1);
+
+ break;
+
+ /* dataPartyNumber */
+ case 1:
+ invokeStartElement (pctxt, "dataPartyNumber", -1);
+
+ stat = asn1PD_H225NumberDigits (pctxt, &pvalue->u.dataPartyNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataPartyNumber", -1);
+
+ break;
+
+ /* telexPartyNumber */
+ case 2:
+ invokeStartElement (pctxt, "telexPartyNumber", -1);
+
+ stat = asn1PD_H225NumberDigits (pctxt, &pvalue->u.telexPartyNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "telexPartyNumber", -1);
+
+ break;
+
+ /* privateNumber */
+ case 3:
+ invokeStartElement (pctxt, "privateNumber", -1);
+
+ pvalue->u.privateNumber = ALLOC_ASN1ELEM (pctxt, H225PrivatePartyNumber);
+
+ stat = asn1PD_H225PrivatePartyNumber (pctxt, pvalue->u.privateNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "privateNumber", -1);
+
+ break;
+
+ /* nationalStandardPartyNumber */
+ case 4:
+ invokeStartElement (pctxt, "nationalStandardPartyNumber", -1);
+
+ stat = asn1PD_H225NumberDigits (pctxt, &pvalue->u.nationalStandardPartyNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nationalStandardPartyNumber", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 6;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_system_id */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_system_id_sid_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_system_id_mid_CharSet;
+
+EXTERN int asn1PD_H225ANSI_41_UIM_system_id (OOCTXT* pctxt, H225ANSI_41_UIM_system_id* pvalue)
+{
+ static Asn1SizeCnst sid_lsize1 = { 0, 1, 4, 0 };
+ static Asn1SizeCnst mid_lsize1 = { 0, 1, 4, 0 };
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* sid */
+ case 0:
+ invokeStartElement (pctxt, "sid", -1);
+
+ addSizeConstraint (pctxt, &sid_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.sid, gs_H323_MESSAGES_ANSI_41_UIM_system_id_sid_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.sid);
+
+ invokeEndElement (pctxt, "sid", -1);
+
+ break;
+
+ /* mid */
+ case 1:
+ invokeStartElement (pctxt, "mid", -1);
+
+ addSizeConstraint (pctxt, &mid_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.mid, gs_H323_MESSAGES_ANSI_41_UIM_system_id_mid_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.mid);
+
+ invokeEndElement (pctxt, "mid", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_systemMyTypeCode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ANSI_41_UIM_systemMyTypeCode (OOCTXT* pctxt, H225ANSI_41_UIM_systemMyTypeCode* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 1, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_systemAccessType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ANSI_41_UIM_systemAccessType (OOCTXT* pctxt, H225ANSI_41_UIM_systemAccessType* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 1, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_qualificationInformationCode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ANSI_41_UIM_qualificationInformationCode (OOCTXT* pctxt, H225ANSI_41_UIM_qualificationInformationCode* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 1, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_imsi_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_min_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_mdn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_msisdn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_esn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_mscid_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_sesn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_soc_CharSet;
+
+EXTERN int asn1PD_H225ANSI_41_UIM (OOCTXT* pctxt, H225ANSI_41_UIM* pvalue)
+{
+ static Asn1SizeCnst imsi_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst min_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst mdn_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst msisdn_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst esn_lsize1 = { 0, 16, 16, 0 };
+ static Asn1SizeCnst mscid_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst sesn_lsize1 = { 0, 16, 16, 0 };
+ static Asn1SizeCnst soc_lsize1 = { 0, 3, 16, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.imsiPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.minPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mdnPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.msisdnPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.esnPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mscidPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.systemMyTypeCodePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.systemAccessTypePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.qualificationInformationCodePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.sesnPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.socPresent = optbit;
+
+ /* decode imsi */
+
+ if (pvalue->m.imsiPresent) {
+ invokeStartElement (pctxt, "imsi", -1);
+
+ addSizeConstraint (pctxt, &imsi_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->imsi, gs_H323_MESSAGES_ANSI_41_UIM_imsi_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->imsi);
+
+ invokeEndElement (pctxt, "imsi", -1);
+ }
+
+ /* decode min */
+
+ if (pvalue->m.minPresent) {
+ invokeStartElement (pctxt, "min", -1);
+
+ addSizeConstraint (pctxt, &min_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->min, gs_H323_MESSAGES_ANSI_41_UIM_min_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->min);
+
+ invokeEndElement (pctxt, "min", -1);
+ }
+
+ /* decode mdn */
+
+ if (pvalue->m.mdnPresent) {
+ invokeStartElement (pctxt, "mdn", -1);
+
+ addSizeConstraint (pctxt, &mdn_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->mdn, gs_H323_MESSAGES_ANSI_41_UIM_mdn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->mdn);
+
+ invokeEndElement (pctxt, "mdn", -1);
+ }
+
+ /* decode msisdn */
+
+ if (pvalue->m.msisdnPresent) {
+ invokeStartElement (pctxt, "msisdn", -1);
+
+ addSizeConstraint (pctxt, &msisdn_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->msisdn, gs_H323_MESSAGES_ANSI_41_UIM_msisdn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->msisdn);
+
+ invokeEndElement (pctxt, "msisdn", -1);
+ }
+
+ /* decode esn */
+
+ if (pvalue->m.esnPresent) {
+ invokeStartElement (pctxt, "esn", -1);
+
+ addSizeConstraint (pctxt, &esn_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->esn, gs_H323_MESSAGES_ANSI_41_UIM_esn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->esn);
+
+ invokeEndElement (pctxt, "esn", -1);
+ }
+
+ /* decode mscid */
+
+ if (pvalue->m.mscidPresent) {
+ invokeStartElement (pctxt, "mscid", -1);
+
+ addSizeConstraint (pctxt, &mscid_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->mscid, gs_H323_MESSAGES_ANSI_41_UIM_mscid_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->mscid);
+
+ invokeEndElement (pctxt, "mscid", -1);
+ }
+
+ /* decode system_id */
+
+ invokeStartElement (pctxt, "system_id", -1);
+
+ stat = asn1PD_H225ANSI_41_UIM_system_id (pctxt, &pvalue->system_id);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "system_id", -1);
+
+ /* decode systemMyTypeCode */
+
+ if (pvalue->m.systemMyTypeCodePresent) {
+ invokeStartElement (pctxt, "systemMyTypeCode", -1);
+
+ stat = asn1PD_H225ANSI_41_UIM_systemMyTypeCode (pctxt, &pvalue->systemMyTypeCode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "systemMyTypeCode", -1);
+ }
+
+ /* decode systemAccessType */
+
+ if (pvalue->m.systemAccessTypePresent) {
+ invokeStartElement (pctxt, "systemAccessType", -1);
+
+ stat = asn1PD_H225ANSI_41_UIM_systemAccessType (pctxt, &pvalue->systemAccessType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "systemAccessType", -1);
+ }
+
+ /* decode qualificationInformationCode */
+
+ if (pvalue->m.qualificationInformationCodePresent) {
+ invokeStartElement (pctxt, "qualificationInformationCode", -1);
+
+ stat = asn1PD_H225ANSI_41_UIM_qualificationInformationCode (pctxt, &pvalue->qualificationInformationCode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "qualificationInformationCode", -1);
+ }
+
+ /* decode sesn */
+
+ if (pvalue->m.sesnPresent) {
+ invokeStartElement (pctxt, "sesn", -1);
+
+ addSizeConstraint (pctxt, &sesn_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->sesn, gs_H323_MESSAGES_ANSI_41_UIM_sesn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->sesn);
+
+ invokeEndElement (pctxt, "sesn", -1);
+ }
+
+ /* decode soc */
+
+ if (pvalue->m.socPresent) {
+ invokeStartElement (pctxt, "soc", -1);
+
+ addSizeConstraint (pctxt, &soc_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->soc, gs_H323_MESSAGES_ANSI_41_UIM_soc_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->soc);
+
+ invokeEndElement (pctxt, "soc", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GSM_UIM_tmsi */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GSM_UIM_tmsi (OOCTXT* pctxt, H225GSM_UIM_tmsi* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GSM_UIM */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_imsi_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_msisdn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_imei_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_hplmn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_vplmn_CharSet;
+
+EXTERN int asn1PD_H225GSM_UIM (OOCTXT* pctxt, H225GSM_UIM* pvalue)
+{
+ static Asn1SizeCnst imsi_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst msisdn_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst imei_lsize1 = { 0, 15, 16, 0 };
+ static Asn1SizeCnst hplmn_lsize1 = { 0, 1, 4, 0 };
+ static Asn1SizeCnst vplmn_lsize1 = { 0, 1, 4, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.imsiPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tmsiPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.msisdnPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.imeiPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.hplmnPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.vplmnPresent = optbit;
+
+ /* decode imsi */
+
+ if (pvalue->m.imsiPresent) {
+ invokeStartElement (pctxt, "imsi", -1);
+
+ addSizeConstraint (pctxt, &imsi_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->imsi, gs_H323_MESSAGES_GSM_UIM_imsi_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->imsi);
+
+ invokeEndElement (pctxt, "imsi", -1);
+ }
+
+ /* decode tmsi */
+
+ if (pvalue->m.tmsiPresent) {
+ invokeStartElement (pctxt, "tmsi", -1);
+
+ stat = asn1PD_H225GSM_UIM_tmsi (pctxt, &pvalue->tmsi);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tmsi", -1);
+ }
+
+ /* decode msisdn */
+
+ if (pvalue->m.msisdnPresent) {
+ invokeStartElement (pctxt, "msisdn", -1);
+
+ addSizeConstraint (pctxt, &msisdn_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->msisdn, gs_H323_MESSAGES_GSM_UIM_msisdn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->msisdn);
+
+ invokeEndElement (pctxt, "msisdn", -1);
+ }
+
+ /* decode imei */
+
+ if (pvalue->m.imeiPresent) {
+ invokeStartElement (pctxt, "imei", -1);
+
+ addSizeConstraint (pctxt, &imei_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->imei, gs_H323_MESSAGES_GSM_UIM_imei_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->imei);
+
+ invokeEndElement (pctxt, "imei", -1);
+ }
+
+ /* decode hplmn */
+
+ if (pvalue->m.hplmnPresent) {
+ invokeStartElement (pctxt, "hplmn", -1);
+
+ addSizeConstraint (pctxt, &hplmn_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->hplmn, gs_H323_MESSAGES_GSM_UIM_hplmn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->hplmn);
+
+ invokeEndElement (pctxt, "hplmn", -1);
+ }
+
+ /* decode vplmn */
+
+ if (pvalue->m.vplmnPresent) {
+ invokeStartElement (pctxt, "vplmn", -1);
+
+ addSizeConstraint (pctxt, &vplmn_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->vplmn, gs_H323_MESSAGES_GSM_UIM_vplmn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->vplmn);
+
+ invokeEndElement (pctxt, "vplmn", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MobileUIM */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225MobileUIM (OOCTXT* pctxt, H225MobileUIM* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* ansi_41_uim */
+ case 0:
+ invokeStartElement (pctxt, "ansi_41_uim", -1);
+
+ pvalue->u.ansi_41_uim = ALLOC_ASN1ELEM (pctxt, H225ANSI_41_UIM);
+
+ stat = asn1PD_H225ANSI_41_UIM (pctxt, pvalue->u.ansi_41_uim);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ansi_41_uim", -1);
+
+ break;
+
+ /* gsm_uim */
+ case 1:
+ invokeStartElement (pctxt, "gsm_uim", -1);
+
+ pvalue->u.gsm_uim = ALLOC_ASN1ELEM (pctxt, H225GSM_UIM);
+
+ stat = asn1PD_H225GSM_UIM (pctxt, pvalue->u.gsm_uim);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gsm_uim", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AliasAddress */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_AliasAddress_dialedDigits_CharSet;
+
+EXTERN int asn1PD_H225AliasAddress (OOCTXT* pctxt, H225AliasAddress* pvalue)
+{
+ static Asn1SizeCnst dialedDigits_lsize1 = { 0, 1, 128, 0 };
+ static Asn1SizeCnst h323_ID_lsize1 = { 0, 1, 256, 0 };
+ static Asn1SizeCnst url_ID_lsize1 = { 0, 1, 512, 0 };
+ static Asn1SizeCnst email_ID_lsize1 = { 0, 1, 512, 0 };
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* dialedDigits */
+ case 0:
+ invokeStartElement (pctxt, "dialedDigits", -1);
+
+ addSizeConstraint (pctxt, &dialedDigits_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.dialedDigits, gs_H323_MESSAGES_AliasAddress_dialedDigits_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.dialedDigits);
+
+ invokeEndElement (pctxt, "dialedDigits", -1);
+
+ break;
+
+ /* h323_ID */
+ case 1:
+ invokeStartElement (pctxt, "h323_ID", -1);
+
+ addSizeConstraint (pctxt, &h323_ID_lsize1);
+
+ stat = decodeBMPString (pctxt, &pvalue->u.h323_ID, 0);
+ if (stat != ASN_OK) return stat;
+ invokeCharStr16BitValue (pctxt, pvalue->u.h323_ID.nchars, pvalue->u.h323_ID.data);
+
+ invokeEndElement (pctxt, "h323_ID", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* url_ID */
+ case 3:
+ invokeStartElement (pctxt, "url_ID", -1);
+
+ addSizeConstraint (pctxt, &url_ID_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.url_ID, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.url_ID);
+
+ invokeEndElement (pctxt, "url_ID", -1);
+
+ break;
+
+ /* transportID */
+ case 4:
+ invokeStartElement (pctxt, "transportID", -1);
+
+ pvalue->u.transportID = ALLOC_ASN1ELEM (pctxt, H225TransportAddress);
+
+ stat = asn1PD_H225TransportAddress (pctxt, pvalue->u.transportID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transportID", -1);
+
+ break;
+
+ /* email_ID */
+ case 5:
+ invokeStartElement (pctxt, "email_ID", -1);
+
+ addSizeConstraint (pctxt, &email_ID_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.email_ID, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.email_ID);
+
+ invokeEndElement (pctxt, "email_ID", -1);
+
+ break;
+
+ /* partyNumber */
+ case 6:
+ invokeStartElement (pctxt, "partyNumber", -1);
+
+ pvalue->u.partyNumber = ALLOC_ASN1ELEM (pctxt, H225PartyNumber);
+
+ stat = asn1PD_H225PartyNumber (pctxt, pvalue->u.partyNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "partyNumber", -1);
+
+ break;
+
+ /* mobileUIM */
+ case 7:
+ invokeStartElement (pctxt, "mobileUIM", -1);
+
+ pvalue->u.mobileUIM = ALLOC_ASN1ELEM (pctxt, H225MobileUIM);
+
+ stat = asn1PD_H225MobileUIM (pctxt, pvalue->u.mobileUIM);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mobileUIM", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Content_compound */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Content_compound (OOCTXT* pctxt, H225Content_compound* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 512, 0 };
+ int stat = ASN_OK;
+ H225EnumeratedParameter* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225EnumeratedParameter);
+
+ stat = asn1PD_H225EnumeratedParameter (pctxt, (H225EnumeratedParameter*)pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Content_nested */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Content_nested (OOCTXT* pctxt, H225Content_nested* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ H225GenericData* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225GenericData);
+
+ stat = asn1PD_H225GenericData (pctxt, (H225GenericData*)pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Content */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Content (OOCTXT* pctxt, H225Content* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 11);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* raw */
+ case 0:
+ invokeStartElement (pctxt, "raw", -1);
+
+ pvalue->u.raw = ALLOC_ASN1ELEM (pctxt, ASN1DynOctStr);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)pvalue->u.raw);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->u.raw->numocts, pvalue->u.raw->data);
+
+ invokeEndElement (pctxt, "raw", -1);
+
+ break;
+
+ /* text */
+ case 1:
+ invokeStartElement (pctxt, "text", -1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.text, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.text);
+
+ invokeEndElement (pctxt, "text", -1);
+
+ break;
+
+ /* unicode */
+ case 2:
+ invokeStartElement (pctxt, "unicode", -1);
+
+ stat = decodeBMPString (pctxt, &pvalue->u.unicode, 0);
+ if (stat != ASN_OK) return stat;
+ invokeCharStr16BitValue (pctxt, pvalue->u.unicode.nchars, pvalue->u.unicode.data);
+
+ invokeEndElement (pctxt, "unicode", -1);
+
+ break;
+
+ /* bool_ */
+ case 3:
+ invokeStartElement (pctxt, "bool_", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->u.bool_);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->u.bool_);
+
+ invokeEndElement (pctxt, "bool_", -1);
+
+ break;
+
+ /* number8 */
+ case 4:
+ invokeStartElement (pctxt, "number8", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->u.number8, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.number8);
+
+ invokeEndElement (pctxt, "number8", -1);
+
+ break;
+
+ /* number16 */
+ case 5:
+ invokeStartElement (pctxt, "number16", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.number16, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.number16);
+
+ invokeEndElement (pctxt, "number16", -1);
+
+ break;
+
+ /* number32 */
+ case 6:
+ invokeStartElement (pctxt, "number32", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->u.number32, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.number32);
+
+ invokeEndElement (pctxt, "number32", -1);
+
+ break;
+
+ /* id */
+ case 7:
+ invokeStartElement (pctxt, "id", -1);
+
+ pvalue->u.id = ALLOC_ASN1ELEM (pctxt, H225GenericIdentifier);
+
+ stat = asn1PD_H225GenericIdentifier (pctxt, pvalue->u.id);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "id", -1);
+
+ break;
+
+ /* alias */
+ case 8:
+ invokeStartElement (pctxt, "alias", -1);
+
+ pvalue->u.alias = ALLOC_ASN1ELEM (pctxt, H225AliasAddress);
+
+ stat = asn1PD_H225AliasAddress (pctxt, pvalue->u.alias);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alias", -1);
+
+ break;
+
+ /* transport */
+ case 9:
+ invokeStartElement (pctxt, "transport", -1);
+
+ pvalue->u.transport = ALLOC_ASN1ELEM (pctxt, H225TransportAddress);
+
+ stat = asn1PD_H225TransportAddress (pctxt, pvalue->u.transport);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transport", -1);
+
+ break;
+
+ /* compound */
+ case 10:
+ invokeStartElement (pctxt, "compound", -1);
+
+ pvalue->u.compound = ALLOC_ASN1ELEM (pctxt, H225Content_compound);
+
+ stat = asn1PD_H225Content_compound (pctxt, pvalue->u.compound);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "compound", -1);
+
+ break;
+
+ /* nested */
+ case 11:
+ invokeStartElement (pctxt, "nested", -1);
+
+ pvalue->u.nested = ALLOC_ASN1ELEM (pctxt, H225Content_nested);
+
+ stat = asn1PD_H225Content_nested (pctxt, pvalue->u.nested);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nested", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 13;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EnumeratedParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225EnumeratedParameter (OOCTXT* pctxt, H225EnumeratedParameter* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.contentPresent = optbit;
+
+ /* decode id */
+
+ invokeStartElement (pctxt, "id", -1);
+
+ stat = asn1PD_H225GenericIdentifier (pctxt, &pvalue->id);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "id", -1);
+
+ /* decode content */
+
+ if (pvalue->m.contentPresent) {
+ invokeStartElement (pctxt, "content", -1);
+
+ stat = asn1PD_H225Content (pctxt, &pvalue->content);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "content", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GenericData_parameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GenericData_parameters (OOCTXT* pctxt, H225GenericData_parameters* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 512, 0 };
+ int stat = ASN_OK;
+ H225EnumeratedParameter* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225EnumeratedParameter);
+
+ stat = asn1PD_H225EnumeratedParameter (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GenericData */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GenericData (OOCTXT* pctxt, H225GenericData* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.parametersPresent = optbit;
+
+ /* decode id */
+
+ invokeStartElement (pctxt, "id", -1);
+
+ stat = asn1PD_H225GenericIdentifier (pctxt, &pvalue->id);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "id", -1);
+
+ /* decode parameters */
+
+ if (pvalue->m.parametersPresent) {
+ invokeStartElement (pctxt, "parameters", -1);
+
+ stat = asn1PD_H225GenericData_parameters (pctxt, &pvalue->parameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "parameters", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FeatureDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225FeatureDescriptor (OOCTXT* pctxt, H225FeatureDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = asn1PD_H225GenericData (pctxt, pvalue);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FastStartToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225FastStartToken (OOCTXT* pctxt, H225FastStartToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = asn1PD_H235ClearToken (pctxt, pvalue);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncodedFastStartToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225EncodedFastStartToken (OOCTXT* pctxt, H225EncodedFastStartToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeOpenType (pctxt, &pvalue->data, &pvalue->numocts);
+ if (stat != ASN_OK) return stat;
+ invokeOpenTypeValue
+ (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UserInformation_user_data_user_information */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H323_UserInformation_user_data_user_information (OOCTXT* pctxt, H225H323_UserInformation_user_data_user_information* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 131, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EndpointType_set */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225EndpointType_set (OOCTXT* pctxt, H225EndpointType_set* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 32, 32, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VendorIdentifier_productId */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225VendorIdentifier_productId (OOCTXT* pctxt, H225VendorIdentifier_productId* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VendorIdentifier_versionId */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225VendorIdentifier_versionId (OOCTXT* pctxt, H225VendorIdentifier_versionId* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CicInfo_cic_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CicInfo_cic_element (OOCTXT* pctxt, H225CicInfo_cic_element* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 2, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CicInfo_pointCode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CicInfo_pointCode (OOCTXT* pctxt, H225CicInfo_pointCode* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 2, 5, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CarrierInfo_carrierIdentificationCode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CarrierInfo_carrierIdentificationCode (OOCTXT* pctxt, H225CarrierInfo_carrierIdentificationCode* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 3, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallTerminationCause_releaseCompleteCauseIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallTerminationCause_releaseCompleteCauseIE (OOCTXT* pctxt, H225CallTerminationCause_releaseCompleteCauseIE* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 2, 32, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AliasAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225AliasAddress (OOCTXT* pctxt, H225_SeqOfH225AliasAddress* pvalue)
+{
+ int stat = ASN_OK;
+ H225AliasAddress* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225AliasAddress);
+
+ stat = asn1PD_H225AliasAddress (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VendorIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225VendorIdentifier (OOCTXT* pctxt, H225VendorIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.productIdPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.versionIdPresent = optbit;
+
+ /* decode vendor */
+
+ invokeStartElement (pctxt, "vendor", -1);
+
+ stat = asn1PD_H225H221NonStandard (pctxt, &pvalue->vendor);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "vendor", -1);
+
+ /* decode productId */
+
+ if (pvalue->m.productIdPresent) {
+ invokeStartElement (pctxt, "productId", -1);
+
+ stat = asn1PD_H225VendorIdentifier_productId (pctxt, &pvalue->productId);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "productId", -1);
+ }
+
+ /* decode versionId */
+
+ if (pvalue->m.versionIdPresent) {
+ invokeStartElement (pctxt, "versionId", -1);
+
+ stat = asn1PD_H225VendorIdentifier_versionId (pctxt, &pvalue->versionId);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "versionId", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.enterpriseNumberPresent = 1;
+
+ invokeStartElement (pctxt, "enterpriseNumber", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->enterpriseNumber);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->enterpriseNumber.numids, pvalue->enterpriseNumber.subid);
+
+ invokeEndElement (pctxt, "enterpriseNumber", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GatekeeperInfo (OOCTXT* pctxt, H225GatekeeperInfo* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataRate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225DataRate (OOCTXT* pctxt, H225DataRate* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.channelMultiplierPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode channelRate */
+
+ invokeStartElement (pctxt, "channelRate", -1);
+
+ stat = asn1PD_H225BandWidth (pctxt, &pvalue->channelRate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "channelRate", -1);
+
+ /* decode channelMultiplier */
+
+ if (pvalue->m.channelMultiplierPresent) {
+ invokeStartElement (pctxt, "channelMultiplier", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->channelMultiplier, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->channelMultiplier);
+
+ invokeEndElement (pctxt, "channelMultiplier", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225DataRate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225DataRate (OOCTXT* pctxt, H225_SeqOfH225DataRate* pvalue)
+{
+ int stat = ASN_OK;
+ H225DataRate* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225DataRate);
+
+ stat = asn1PD_H225DataRate (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SupportedPrefix */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225SupportedPrefix (OOCTXT* pctxt, H225SupportedPrefix* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode prefix */
+
+ invokeStartElement (pctxt, "prefix", -1);
+
+ stat = asn1PD_H225AliasAddress (pctxt, &pvalue->prefix);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "prefix", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225SupportedPrefix */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225SupportedPrefix (OOCTXT* pctxt, H225_SeqOfH225SupportedPrefix* pvalue)
+{
+ int stat = ASN_OK;
+ H225SupportedPrefix* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225SupportedPrefix);
+
+ stat = asn1PD_H225SupportedPrefix (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H310Caps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H310Caps (OOCTXT* pctxt, H225H310Caps* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.dataRatesSupportedPresent = 1;
+
+ invokeStartElement (pctxt, "dataRatesSupported", -1);
+
+ stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataRatesSupported", -1);
+ break;
+
+ case 1:
+ pvalue->m.supportedPrefixesPresent = 1;
+
+ invokeStartElement (pctxt, "supportedPrefixes", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedPrefixes", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H320Caps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H320Caps (OOCTXT* pctxt, H225H320Caps* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.dataRatesSupportedPresent = 1;
+
+ invokeStartElement (pctxt, "dataRatesSupported", -1);
+
+ stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataRatesSupported", -1);
+ break;
+
+ case 1:
+ pvalue->m.supportedPrefixesPresent = 1;
+
+ invokeStartElement (pctxt, "supportedPrefixes", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedPrefixes", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H321Caps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H321Caps (OOCTXT* pctxt, H225H321Caps* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.dataRatesSupportedPresent = 1;
+
+ invokeStartElement (pctxt, "dataRatesSupported", -1);
+
+ stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataRatesSupported", -1);
+ break;
+
+ case 1:
+ pvalue->m.supportedPrefixesPresent = 1;
+
+ invokeStartElement (pctxt, "supportedPrefixes", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedPrefixes", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H322Caps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H322Caps (OOCTXT* pctxt, H225H322Caps* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.dataRatesSupportedPresent = 1;
+
+ invokeStartElement (pctxt, "dataRatesSupported", -1);
+
+ stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataRatesSupported", -1);
+ break;
+
+ case 1:
+ pvalue->m.supportedPrefixesPresent = 1;
+
+ invokeStartElement (pctxt, "supportedPrefixes", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedPrefixes", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323Caps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H323Caps (OOCTXT* pctxt, H225H323Caps* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.dataRatesSupportedPresent = 1;
+
+ invokeStartElement (pctxt, "dataRatesSupported", -1);
+
+ stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataRatesSupported", -1);
+ break;
+
+ case 1:
+ pvalue->m.supportedPrefixesPresent = 1;
+
+ invokeStartElement (pctxt, "supportedPrefixes", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedPrefixes", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H324Caps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H324Caps (OOCTXT* pctxt, H225H324Caps* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.dataRatesSupportedPresent = 1;
+
+ invokeStartElement (pctxt, "dataRatesSupported", -1);
+
+ stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataRatesSupported", -1);
+ break;
+
+ case 1:
+ pvalue->m.supportedPrefixesPresent = 1;
+
+ invokeStartElement (pctxt, "supportedPrefixes", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedPrefixes", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VoiceCaps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225VoiceCaps (OOCTXT* pctxt, H225VoiceCaps* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.dataRatesSupportedPresent = 1;
+
+ invokeStartElement (pctxt, "dataRatesSupported", -1);
+
+ stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataRatesSupported", -1);
+ break;
+
+ case 1:
+ pvalue->m.supportedPrefixesPresent = 1;
+
+ invokeStartElement (pctxt, "supportedPrefixes", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedPrefixes", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T120OnlyCaps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225T120OnlyCaps (OOCTXT* pctxt, H225T120OnlyCaps* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.dataRatesSupportedPresent = 1;
+
+ invokeStartElement (pctxt, "dataRatesSupported", -1);
+
+ stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataRatesSupported", -1);
+ break;
+
+ case 1:
+ pvalue->m.supportedPrefixesPresent = 1;
+
+ invokeStartElement (pctxt, "supportedPrefixes", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedPrefixes", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardProtocol */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225NonStandardProtocol (OOCTXT* pctxt, H225NonStandardProtocol* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.dataRatesSupportedPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode dataRatesSupported */
+
+ if (pvalue->m.dataRatesSupportedPresent) {
+ invokeStartElement (pctxt, "dataRatesSupported", -1);
+
+ stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataRatesSupported", -1);
+ }
+
+ /* decode supportedPrefixes */
+
+ invokeStartElement (pctxt, "supportedPrefixes", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedPrefixes", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T38FaxAnnexbOnlyCaps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225T38FaxAnnexbOnlyCaps (OOCTXT* pctxt, H225T38FaxAnnexbOnlyCaps* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.dataRatesSupportedPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode dataRatesSupported */
+
+ if (pvalue->m.dataRatesSupportedPresent) {
+ invokeStartElement (pctxt, "dataRatesSupported", -1);
+
+ stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataRatesSupported", -1);
+ }
+
+ /* decode supportedPrefixes */
+
+ invokeStartElement (pctxt, "supportedPrefixes", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedPrefixes", -1);
+
+ /* decode t38FaxProtocol */
+
+ invokeStartElement (pctxt, "t38FaxProtocol", -1);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, &pvalue->t38FaxProtocol);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t38FaxProtocol", -1);
+
+ /* decode t38FaxProfile */
+
+ invokeStartElement (pctxt, "t38FaxProfile", -1);
+
+ stat = asn1PD_H245T38FaxProfile (pctxt, &pvalue->t38FaxProfile);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t38FaxProfile", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SIPCaps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225SIPCaps (OOCTXT* pctxt, H225SIPCaps* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.dataRatesSupportedPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.supportedPrefixesPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode dataRatesSupported */
+
+ if (pvalue->m.dataRatesSupportedPresent) {
+ invokeStartElement (pctxt, "dataRatesSupported", -1);
+
+ stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataRatesSupported", -1);
+ }
+
+ /* decode supportedPrefixes */
+
+ if (pvalue->m.supportedPrefixesPresent) {
+ invokeStartElement (pctxt, "supportedPrefixes", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedPrefixes", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SupportedProtocols */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225SupportedProtocols (OOCTXT* pctxt, H225SupportedProtocols* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 8);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandardData */
+ case 0:
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ pvalue->u.nonStandardData = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+
+ break;
+
+ /* h310 */
+ case 1:
+ invokeStartElement (pctxt, "h310", -1);
+
+ pvalue->u.h310 = ALLOC_ASN1ELEM (pctxt, H225H310Caps);
+
+ stat = asn1PD_H225H310Caps (pctxt, pvalue->u.h310);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h310", -1);
+
+ break;
+
+ /* h320 */
+ case 2:
+ invokeStartElement (pctxt, "h320", -1);
+
+ pvalue->u.h320 = ALLOC_ASN1ELEM (pctxt, H225H320Caps);
+
+ stat = asn1PD_H225H320Caps (pctxt, pvalue->u.h320);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h320", -1);
+
+ break;
+
+ /* h321 */
+ case 3:
+ invokeStartElement (pctxt, "h321", -1);
+
+ pvalue->u.h321 = ALLOC_ASN1ELEM (pctxt, H225H321Caps);
+
+ stat = asn1PD_H225H321Caps (pctxt, pvalue->u.h321);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h321", -1);
+
+ break;
+
+ /* h322 */
+ case 4:
+ invokeStartElement (pctxt, "h322", -1);
+
+ pvalue->u.h322 = ALLOC_ASN1ELEM (pctxt, H225H322Caps);
+
+ stat = asn1PD_H225H322Caps (pctxt, pvalue->u.h322);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h322", -1);
+
+ break;
+
+ /* h323 */
+ case 5:
+ invokeStartElement (pctxt, "h323", -1);
+
+ pvalue->u.h323 = ALLOC_ASN1ELEM (pctxt, H225H323Caps);
+
+ stat = asn1PD_H225H323Caps (pctxt, pvalue->u.h323);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h323", -1);
+
+ break;
+
+ /* h324 */
+ case 6:
+ invokeStartElement (pctxt, "h324", -1);
+
+ pvalue->u.h324 = ALLOC_ASN1ELEM (pctxt, H225H324Caps);
+
+ stat = asn1PD_H225H324Caps (pctxt, pvalue->u.h324);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h324", -1);
+
+ break;
+
+ /* voice */
+ case 7:
+ invokeStartElement (pctxt, "voice", -1);
+
+ pvalue->u.voice = ALLOC_ASN1ELEM (pctxt, H225VoiceCaps);
+
+ stat = asn1PD_H225VoiceCaps (pctxt, pvalue->u.voice);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "voice", -1);
+
+ break;
+
+ /* t120_only */
+ case 8:
+ invokeStartElement (pctxt, "t120_only", -1);
+
+ pvalue->u.t120_only = ALLOC_ASN1ELEM (pctxt, H225T120OnlyCaps);
+
+ stat = asn1PD_H225T120OnlyCaps (pctxt, pvalue->u.t120_only);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t120_only", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 10;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* nonStandardProtocol */
+ case 10:
+ invokeStartElement (pctxt, "nonStandardProtocol", -1);
+
+ pvalue->u.nonStandardProtocol = ALLOC_ASN1ELEM (pctxt, H225NonStandardProtocol);
+
+ stat = asn1PD_H225NonStandardProtocol (pctxt, pvalue->u.nonStandardProtocol);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardProtocol", -1);
+
+ break;
+
+ /* t38FaxAnnexbOnly */
+ case 11:
+ invokeStartElement (pctxt, "t38FaxAnnexbOnly", -1);
+
+ pvalue->u.t38FaxAnnexbOnly = ALLOC_ASN1ELEM (pctxt, H225T38FaxAnnexbOnlyCaps);
+
+ stat = asn1PD_H225T38FaxAnnexbOnlyCaps (pctxt, pvalue->u.t38FaxAnnexbOnly);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t38FaxAnnexbOnly", -1);
+
+ break;
+
+ /* sip */
+ case 12:
+ invokeStartElement (pctxt, "sip", -1);
+
+ pvalue->u.sip = ALLOC_ASN1ELEM (pctxt, H225SIPCaps);
+
+ stat = asn1PD_H225SIPCaps (pctxt, pvalue->u.sip);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sip", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225SupportedProtocols */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225SupportedProtocols (OOCTXT* pctxt, H225_SeqOfH225SupportedProtocols* pvalue)
+{
+ int stat = ASN_OK;
+ H225SupportedProtocols* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225SupportedProtocols);
+
+ stat = asn1PD_H225SupportedProtocols (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatewayInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GatewayInfo (OOCTXT* pctxt, H225GatewayInfo* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.protocolPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode protocol */
+
+ if (pvalue->m.protocolPresent) {
+ invokeStartElement (pctxt, "protocol", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedProtocols (pctxt, &pvalue->protocol);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocol", -1);
+ }
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* McuInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225McuInfo (OOCTXT* pctxt, H225McuInfo* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.protocolPresent = 1;
+
+ invokeStartElement (pctxt, "protocol", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedProtocols (pctxt, &pvalue->protocol);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocol", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TerminalInfo (OOCTXT* pctxt, H225TerminalInfo* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TunnelledProtocolAlternateIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TunnelledProtocolAlternateIdentifier (OOCTXT* pctxt, H225TunnelledProtocolAlternateIdentifier* pvalue)
+{
+ static Asn1SizeCnst protocolType_lsize1 = { 0, 1, 64, 0 };
+ static Asn1SizeCnst protocolVariant_lsize1 = { 0, 1, 64, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.protocolVariantPresent = optbit;
+
+ /* decode protocolType */
+
+ invokeStartElement (pctxt, "protocolType", -1);
+
+ addSizeConstraint (pctxt, &protocolType_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->protocolType, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->protocolType);
+
+ invokeEndElement (pctxt, "protocolType", -1);
+
+ /* decode protocolVariant */
+
+ if (pvalue->m.protocolVariantPresent) {
+ invokeStartElement (pctxt, "protocolVariant", -1);
+
+ addSizeConstraint (pctxt, &protocolVariant_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->protocolVariant, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->protocolVariant);
+
+ invokeEndElement (pctxt, "protocolVariant", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TunnelledProtocol_id */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TunnelledProtocol_id (OOCTXT* pctxt, H225TunnelledProtocol_id* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* tunnelledProtocolObjectID */
+ case 0:
+ invokeStartElement (pctxt, "tunnelledProtocolObjectID", -1);
+
+ pvalue->u.tunnelledProtocolObjectID = ALLOC_ASN1ELEM (pctxt, ASN1OBJID);
+
+ stat = decodeObjectIdentifier (pctxt, pvalue->u.tunnelledProtocolObjectID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->u.tunnelledProtocolObjectID->numids, pvalue->u.tunnelledProtocolObjectID->subid);
+
+ invokeEndElement (pctxt, "tunnelledProtocolObjectID", -1);
+
+ break;
+
+ /* tunnelledProtocolAlternateID */
+ case 1:
+ invokeStartElement (pctxt, "tunnelledProtocolAlternateID", -1);
+
+ pvalue->u.tunnelledProtocolAlternateID = ALLOC_ASN1ELEM (pctxt, H225TunnelledProtocolAlternateIdentifier);
+
+ stat = asn1PD_H225TunnelledProtocolAlternateIdentifier (pctxt, pvalue->u.tunnelledProtocolAlternateID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tunnelledProtocolAlternateID", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TunnelledProtocol */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TunnelledProtocol (OOCTXT* pctxt, H225TunnelledProtocol* pvalue)
+{
+ static Asn1SizeCnst subIdentifier_lsize1 = { 0, 1, 64, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.subIdentifierPresent = optbit;
+
+ /* decode id */
+
+ invokeStartElement (pctxt, "id", -1);
+
+ stat = asn1PD_H225TunnelledProtocol_id (pctxt, &pvalue->id);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "id", -1);
+
+ /* decode subIdentifier */
+
+ if (pvalue->m.subIdentifierPresent) {
+ invokeStartElement (pctxt, "subIdentifier", -1);
+
+ addSizeConstraint (pctxt, &subIdentifier_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->subIdentifier, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->subIdentifier);
+
+ invokeEndElement (pctxt, "subIdentifier", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TunnelledProtocol */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225TunnelledProtocol (OOCTXT* pctxt, H225_SeqOfH225TunnelledProtocol* pvalue)
+{
+ int stat = ASN_OK;
+ H225TunnelledProtocol* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225TunnelledProtocol);
+
+ stat = asn1PD_H225TunnelledProtocol (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EndpointType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225EndpointType (OOCTXT* pctxt, H225EndpointType* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.vendorPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.gatekeeperPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.gatewayPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mcuPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.terminalPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode vendor */
+
+ if (pvalue->m.vendorPresent) {
+ invokeStartElement (pctxt, "vendor", -1);
+
+ stat = asn1PD_H225VendorIdentifier (pctxt, &pvalue->vendor);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "vendor", -1);
+ }
+
+ /* decode gatekeeper */
+
+ if (pvalue->m.gatekeeperPresent) {
+ invokeStartElement (pctxt, "gatekeeper", -1);
+
+ stat = asn1PD_H225GatekeeperInfo (pctxt, &pvalue->gatekeeper);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeper", -1);
+ }
+
+ /* decode gateway */
+
+ if (pvalue->m.gatewayPresent) {
+ invokeStartElement (pctxt, "gateway", -1);
+
+ stat = asn1PD_H225GatewayInfo (pctxt, &pvalue->gateway);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gateway", -1);
+ }
+
+ /* decode mcu */
+
+ if (pvalue->m.mcuPresent) {
+ invokeStartElement (pctxt, "mcu", -1);
+
+ stat = asn1PD_H225McuInfo (pctxt, &pvalue->mcu);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mcu", -1);
+ }
+
+ /* decode terminal */
+
+ if (pvalue->m.terminalPresent) {
+ invokeStartElement (pctxt, "terminal", -1);
+
+ stat = asn1PD_H225TerminalInfo (pctxt, &pvalue->terminal);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminal", -1);
+ }
+
+ /* decode mc */
+
+ invokeStartElement (pctxt, "mc", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->mc);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->mc);
+
+ invokeEndElement (pctxt, "mc", -1);
+
+ /* decode undefinedNode */
+
+ invokeStartElement (pctxt, "undefinedNode", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->undefinedNode);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->undefinedNode);
+
+ invokeEndElement (pctxt, "undefinedNode", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.setPresent = 1;
+
+ invokeStartElement (pctxt, "set", -1);
+
+ stat = asn1PD_H225EndpointType_set (pctxt, &pvalue->set);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "set", -1);
+ break;
+
+ case 1:
+ pvalue->m.supportedTunnelledProtocolsPresent = 1;
+
+ invokeStartElement (pctxt, "supportedTunnelledProtocols", -1);
+
+ stat = asn1PD_H225_SeqOfH225TunnelledProtocol (pctxt, &pvalue->supportedTunnelledProtocols);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedTunnelledProtocols", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CallReferenceValue */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225CallReferenceValue (OOCTXT* pctxt, H225_SeqOfH225CallReferenceValue* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, H225CallReferenceValue);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H225CallReferenceValue (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_conferenceGoal */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Setup_UUIE_conferenceGoal (OOCTXT* pctxt, H225Setup_UUIE_conferenceGoal* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* create */
+ case 0:
+ invokeStartElement (pctxt, "create", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "create", -1);
+
+ break;
+
+ /* join */
+ case 1:
+ invokeStartElement (pctxt, "join", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "join", -1);
+
+ break;
+
+ /* invite */
+ case 2:
+ invokeStartElement (pctxt, "invite", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invite", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* capability_negotiation */
+ case 4:
+ invokeStartElement (pctxt, "capability_negotiation", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "capability_negotiation", -1);
+
+ break;
+
+ /* callIndependentSupplementaryService */
+ case 5:
+ invokeStartElement (pctxt, "callIndependentSupplementaryService", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "callIndependentSupplementaryService", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Q954Details */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Q954Details (OOCTXT* pctxt, H225Q954Details* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode conferenceCalling */
+
+ invokeStartElement (pctxt, "conferenceCalling", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->conferenceCalling);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->conferenceCalling);
+
+ invokeEndElement (pctxt, "conferenceCalling", -1);
+
+ /* decode threePartyService */
+
+ invokeStartElement (pctxt, "threePartyService", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->threePartyService);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->threePartyService);
+
+ invokeEndElement (pctxt, "threePartyService", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* QseriesOptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225QseriesOptions (OOCTXT* pctxt, H225QseriesOptions* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode q932Full */
+
+ invokeStartElement (pctxt, "q932Full", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->q932Full);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->q932Full);
+
+ invokeEndElement (pctxt, "q932Full", -1);
+
+ /* decode q951Full */
+
+ invokeStartElement (pctxt, "q951Full", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->q951Full);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->q951Full);
+
+ invokeEndElement (pctxt, "q951Full", -1);
+
+ /* decode q952Full */
+
+ invokeStartElement (pctxt, "q952Full", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->q952Full);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->q952Full);
+
+ invokeEndElement (pctxt, "q952Full", -1);
+
+ /* decode q953Full */
+
+ invokeStartElement (pctxt, "q953Full", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->q953Full);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->q953Full);
+
+ invokeEndElement (pctxt, "q953Full", -1);
+
+ /* decode q955Full */
+
+ invokeStartElement (pctxt, "q955Full", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->q955Full);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->q955Full);
+
+ invokeEndElement (pctxt, "q955Full", -1);
+
+ /* decode q956Full */
+
+ invokeStartElement (pctxt, "q956Full", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->q956Full);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->q956Full);
+
+ invokeEndElement (pctxt, "q956Full", -1);
+
+ /* decode q957Full */
+
+ invokeStartElement (pctxt, "q957Full", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->q957Full);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->q957Full);
+
+ invokeEndElement (pctxt, "q957Full", -1);
+
+ /* decode q954Info */
+
+ invokeStartElement (pctxt, "q954Info", -1);
+
+ stat = asn1PD_H225Q954Details (pctxt, &pvalue->q954Info);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "q954Info", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallType (OOCTXT* pctxt, H225CallType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* pointToPoint */
+ case 0:
+ invokeStartElement (pctxt, "pointToPoint", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "pointToPoint", -1);
+
+ break;
+
+ /* oneToN */
+ case 1:
+ invokeStartElement (pctxt, "oneToN", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "oneToN", -1);
+
+ break;
+
+ /* nToOne */
+ case 2:
+ invokeStartElement (pctxt, "nToOne", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "nToOne", -1);
+
+ break;
+
+ /* nToN */
+ case 3:
+ invokeStartElement (pctxt, "nToN", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "nToN", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallIdentifier (OOCTXT* pctxt, H225CallIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode guid */
+
+ invokeStartElement (pctxt, "guid", -1);
+
+ stat = asn1PD_H225GloballyUniqueID (pctxt, &pvalue->guid);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "guid", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SecurityServiceMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225SecurityServiceMode (OOCTXT* pctxt, H225SecurityServiceMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* none */
+ case 1:
+ invokeStartElement (pctxt, "none", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "none", -1);
+
+ break;
+
+ /* default_ */
+ case 2:
+ invokeStartElement (pctxt, "default_", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "default_", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SecurityCapabilities */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225SecurityCapabilities (OOCTXT* pctxt, H225SecurityCapabilities* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardPresent = optbit;
+
+ /* decode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+ }
+
+ /* decode encryption */
+
+ invokeStartElement (pctxt, "encryption", -1);
+
+ stat = asn1PD_H225SecurityServiceMode (pctxt, &pvalue->encryption);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "encryption", -1);
+
+ /* decode authenticaton */
+
+ invokeStartElement (pctxt, "authenticaton", -1);
+
+ stat = asn1PD_H225SecurityServiceMode (pctxt, &pvalue->authenticaton);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "authenticaton", -1);
+
+ /* decode integrity */
+
+ invokeStartElement (pctxt, "integrity", -1);
+
+ stat = asn1PD_H225SecurityServiceMode (pctxt, &pvalue->integrity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrity", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H245Security */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H245Security (OOCTXT* pctxt, H225H245Security* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* noSecurity */
+ case 1:
+ invokeStartElement (pctxt, "noSecurity", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noSecurity", -1);
+
+ break;
+
+ /* tls */
+ case 2:
+ invokeStartElement (pctxt, "tls", -1);
+
+ pvalue->u.tls = ALLOC_ASN1ELEM (pctxt, H225SecurityCapabilities);
+
+ stat = asn1PD_H225SecurityCapabilities (pctxt, pvalue->u.tls);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tls", -1);
+
+ break;
+
+ /* ipsec */
+ case 3:
+ invokeStartElement (pctxt, "ipsec", -1);
+
+ pvalue->u.ipsec = ALLOC_ASN1ELEM (pctxt, H225SecurityCapabilities);
+
+ stat = asn1PD_H225SecurityCapabilities (pctxt, pvalue->u.ipsec);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ipsec", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225H245Security */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225H245Security (OOCTXT* pctxt, H225_SeqOfH225H245Security* pvalue)
+{
+ int stat = ASN_OK;
+ H225H245Security* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225H245Security);
+
+ stat = asn1PD_H225H245Security (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ClearToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225ClearToken (OOCTXT* pctxt, H225_SeqOfH225ClearToken* pvalue)
+{
+ int stat = ASN_OK;
+ H235ClearToken* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H235ClearToken);
+
+ stat = asn1PD_H235ClearToken (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoEPPwdHash */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoEPPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPPwdHash* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode alias */
+
+ invokeStartElement (pctxt, "alias", -1);
+
+ stat = asn1PD_H225AliasAddress (pctxt, &pvalue->alias);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alias", -1);
+
+ /* decode timeStamp */
+
+ invokeStartElement (pctxt, "timeStamp", -1);
+
+ stat = asn1PD_H235TimeStamp (pctxt, &pvalue->timeStamp);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "timeStamp", -1);
+
+ /* decode token */
+
+ invokeStartElement (pctxt, "token", -1);
+
+ stat = asn1PD_H235HASHED (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "token", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoGKPwdHash */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoGKPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKPwdHash* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode gatekeeperId */
+
+ invokeStartElement (pctxt, "gatekeeperId", -1);
+
+ stat = asn1PD_H225GatekeeperIdentifier (pctxt, &pvalue->gatekeeperId);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperId", -1);
+
+ /* decode timeStamp */
+
+ invokeStartElement (pctxt, "timeStamp", -1);
+
+ stat = asn1PD_H235TimeStamp (pctxt, &pvalue->timeStamp);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "timeStamp", -1);
+
+ /* decode token */
+
+ invokeStartElement (pctxt, "token", -1);
+
+ stat = asn1PD_H235HASHED (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "token", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoEPCert */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoEPCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPCert* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode toBeSigned */
+
+ invokeStartElement (pctxt, "toBeSigned", -1);
+
+ stat = asn1PD_H235EncodedPwdCertToken (pctxt, &pvalue->toBeSigned);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "toBeSigned", -1);
+
+ /* decode algorithmOID */
+
+ invokeStartElement (pctxt, "algorithmOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid);
+
+ invokeEndElement (pctxt, "algorithmOID", -1);
+
+ /* decode paramS */
+
+ invokeStartElement (pctxt, "paramS", -1);
+
+ stat = asn1PD_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "paramS", -1);
+
+ /* decode signature */
+
+ invokeStartElement (pctxt, "signature", -1);
+
+ stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->signature);
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->signature.numbits, pvalue->signature.data);
+
+ invokeEndElement (pctxt, "signature", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoGKCert */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoGKCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKCert* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode toBeSigned */
+
+ invokeStartElement (pctxt, "toBeSigned", -1);
+
+ stat = asn1PD_H235EncodedPwdCertToken (pctxt, &pvalue->toBeSigned);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "toBeSigned", -1);
+
+ /* decode algorithmOID */
+
+ invokeStartElement (pctxt, "algorithmOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid);
+
+ invokeEndElement (pctxt, "algorithmOID", -1);
+
+ /* decode paramS */
+
+ invokeStartElement (pctxt, "paramS", -1);
+
+ stat = asn1PD_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "paramS", -1);
+
+ /* decode signature */
+
+ invokeStartElement (pctxt, "signature", -1);
+
+ stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->signature);
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->signature.numbits, pvalue->signature.data);
+
+ invokeEndElement (pctxt, "signature", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoFastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoFastStart (OOCTXT* pctxt, H225CryptoH323Token_cryptoFastStart* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode toBeSigned */
+
+ invokeStartElement (pctxt, "toBeSigned", -1);
+
+ stat = asn1PD_H225EncodedFastStartToken (pctxt, &pvalue->toBeSigned);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "toBeSigned", -1);
+
+ /* decode algorithmOID */
+
+ invokeStartElement (pctxt, "algorithmOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid);
+
+ invokeEndElement (pctxt, "algorithmOID", -1);
+
+ /* decode paramS */
+
+ invokeStartElement (pctxt, "paramS", -1);
+
+ stat = asn1PD_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "paramS", -1);
+
+ /* decode signature */
+
+ invokeStartElement (pctxt, "signature", -1);
+
+ stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->signature);
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->signature.numbits, pvalue->signature.data);
+
+ invokeEndElement (pctxt, "signature", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoH323Token */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CryptoH323Token (OOCTXT* pctxt, H225CryptoH323Token* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 7);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* cryptoEPPwdHash */
+ case 0:
+ invokeStartElement (pctxt, "cryptoEPPwdHash", -1);
+
+ pvalue->u.cryptoEPPwdHash = ALLOC_ASN1ELEM (pctxt, H225CryptoH323Token_cryptoEPPwdHash);
+
+ stat = asn1PD_H225CryptoH323Token_cryptoEPPwdHash (pctxt, pvalue->u.cryptoEPPwdHash);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoEPPwdHash", -1);
+
+ break;
+
+ /* cryptoGKPwdHash */
+ case 1:
+ invokeStartElement (pctxt, "cryptoGKPwdHash", -1);
+
+ pvalue->u.cryptoGKPwdHash = ALLOC_ASN1ELEM (pctxt, H225CryptoH323Token_cryptoGKPwdHash);
+
+ stat = asn1PD_H225CryptoH323Token_cryptoGKPwdHash (pctxt, pvalue->u.cryptoGKPwdHash);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoGKPwdHash", -1);
+
+ break;
+
+ /* cryptoEPPwdEncr */
+ case 2:
+ invokeStartElement (pctxt, "cryptoEPPwdEncr", -1);
+
+ pvalue->u.cryptoEPPwdEncr = ALLOC_ASN1ELEM (pctxt, H235ENCRYPTED);
+
+ stat = asn1PD_H235ENCRYPTED (pctxt, pvalue->u.cryptoEPPwdEncr);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoEPPwdEncr", -1);
+
+ break;
+
+ /* cryptoGKPwdEncr */
+ case 3:
+ invokeStartElement (pctxt, "cryptoGKPwdEncr", -1);
+
+ pvalue->u.cryptoGKPwdEncr = ALLOC_ASN1ELEM (pctxt, H235ENCRYPTED);
+
+ stat = asn1PD_H235ENCRYPTED (pctxt, pvalue->u.cryptoGKPwdEncr);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoGKPwdEncr", -1);
+
+ break;
+
+ /* cryptoEPCert */
+ case 4:
+ invokeStartElement (pctxt, "cryptoEPCert", -1);
+
+ pvalue->u.cryptoEPCert = ALLOC_ASN1ELEM (pctxt, H225CryptoH323Token_cryptoEPCert);
+
+ stat = asn1PD_H225CryptoH323Token_cryptoEPCert (pctxt, pvalue->u.cryptoEPCert);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoEPCert", -1);
+
+ break;
+
+ /* cryptoGKCert */
+ case 5:
+ invokeStartElement (pctxt, "cryptoGKCert", -1);
+
+ pvalue->u.cryptoGKCert = ALLOC_ASN1ELEM (pctxt, H225CryptoH323Token_cryptoGKCert);
+
+ stat = asn1PD_H225CryptoH323Token_cryptoGKCert (pctxt, pvalue->u.cryptoGKCert);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoGKCert", -1);
+
+ break;
+
+ /* cryptoFastStart */
+ case 6:
+ invokeStartElement (pctxt, "cryptoFastStart", -1);
+
+ pvalue->u.cryptoFastStart = ALLOC_ASN1ELEM (pctxt, H225CryptoH323Token_cryptoFastStart);
+
+ stat = asn1PD_H225CryptoH323Token_cryptoFastStart (pctxt, pvalue->u.cryptoFastStart);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoFastStart", -1);
+
+ break;
+
+ /* nestedcryptoToken */
+ case 7:
+ invokeStartElement (pctxt, "nestedcryptoToken", -1);
+
+ pvalue->u.nestedcryptoToken = ALLOC_ASN1ELEM (pctxt, H235CryptoToken);
+
+ stat = asn1PD_H235CryptoToken (pctxt, pvalue->u.nestedcryptoToken);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nestedcryptoToken", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 9;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CryptoH323Token */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225CryptoH323Token (OOCTXT* pctxt, H225_SeqOfH225CryptoH323Token* pvalue)
+{
+ int stat = ASN_OK;
+ H225CryptoH323Token* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225CryptoH323Token);
+
+ stat = asn1PD_H225CryptoH323Token (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Setup_UUIE_fastStart (OOCTXT* pctxt, H225Setup_UUIE_fastStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1DynOctStr);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ScnConnectionType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ScnConnectionType (OOCTXT* pctxt, H225ScnConnectionType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 6);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unknown */
+ case 0:
+ invokeStartElement (pctxt, "unknown", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unknown", -1);
+
+ break;
+
+ /* bChannel */
+ case 1:
+ invokeStartElement (pctxt, "bChannel", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "bChannel", -1);
+
+ break;
+
+ /* hybrid2x64 */
+ case 2:
+ invokeStartElement (pctxt, "hybrid2x64", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "hybrid2x64", -1);
+
+ break;
+
+ /* hybrid384 */
+ case 3:
+ invokeStartElement (pctxt, "hybrid384", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "hybrid384", -1);
+
+ break;
+
+ /* hybrid1536 */
+ case 4:
+ invokeStartElement (pctxt, "hybrid1536", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "hybrid1536", -1);
+
+ break;
+
+ /* hybrid1920 */
+ case 5:
+ invokeStartElement (pctxt, "hybrid1920", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "hybrid1920", -1);
+
+ break;
+
+ /* multirate */
+ case 6:
+ invokeStartElement (pctxt, "multirate", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "multirate", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 8;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ScnConnectionAggregation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ScnConnectionAggregation (OOCTXT* pctxt, H225ScnConnectionAggregation* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 5);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* auto_ */
+ case 0:
+ invokeStartElement (pctxt, "auto_", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "auto_", -1);
+
+ break;
+
+ /* none */
+ case 1:
+ invokeStartElement (pctxt, "none", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "none", -1);
+
+ break;
+
+ /* h221 */
+ case 2:
+ invokeStartElement (pctxt, "h221", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "h221", -1);
+
+ break;
+
+ /* bonded_mode1 */
+ case 3:
+ invokeStartElement (pctxt, "bonded_mode1", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "bonded_mode1", -1);
+
+ break;
+
+ /* bonded_mode2 */
+ case 4:
+ invokeStartElement (pctxt, "bonded_mode2", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "bonded_mode2", -1);
+
+ break;
+
+ /* bonded_mode3 */
+ case 5:
+ invokeStartElement (pctxt, "bonded_mode3", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "bonded_mode3", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 7;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_connectionParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Setup_UUIE_connectionParameters (OOCTXT* pctxt, H225Setup_UUIE_connectionParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode connectionType */
+
+ invokeStartElement (pctxt, "connectionType", -1);
+
+ stat = asn1PD_H225ScnConnectionType (pctxt, &pvalue->connectionType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "connectionType", -1);
+
+ /* decode numberOfScnConnections */
+
+ invokeStartElement (pctxt, "numberOfScnConnections", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->numberOfScnConnections, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->numberOfScnConnections);
+
+ invokeEndElement (pctxt, "numberOfScnConnections", -1);
+
+ /* decode connectionAggregation */
+
+ invokeStartElement (pctxt, "connectionAggregation", -1);
+
+ stat = asn1PD_H225ScnConnectionAggregation (pctxt, &pvalue->connectionAggregation);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "connectionAggregation", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_language */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Setup_UUIE_language (OOCTXT* pctxt, H225Setup_UUIE_language* pvalue)
+{
+ static Asn1SizeCnst element_lsize1 = { 0, 1, 32, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1IA5String);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ addSizeConstraint (pctxt, &element_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->elem[xx1], 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->elem[xx1]);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PresentationIndicator */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225PresentationIndicator (OOCTXT* pctxt, H225PresentationIndicator* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* presentationAllowed */
+ case 0:
+ invokeStartElement (pctxt, "presentationAllowed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "presentationAllowed", -1);
+
+ break;
+
+ /* presentationRestricted */
+ case 1:
+ invokeStartElement (pctxt, "presentationRestricted", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "presentationRestricted", -1);
+
+ break;
+
+ /* addressNotAvailable */
+ case 2:
+ invokeStartElement (pctxt, "addressNotAvailable", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "addressNotAvailable", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallCreditServiceControl_billingMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallCreditServiceControl_billingMode (OOCTXT* pctxt, H225CallCreditServiceControl_billingMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* credit */
+ case 0:
+ invokeStartElement (pctxt, "credit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "credit", -1);
+
+ break;
+
+ /* debit */
+ case 1:
+ invokeStartElement (pctxt, "debit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "debit", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallCreditServiceControl_callStartingPoint */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallCreditServiceControl_callStartingPoint (OOCTXT* pctxt, H225CallCreditServiceControl_callStartingPoint* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* alerting */
+ case 0:
+ invokeStartElement (pctxt, "alerting", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "alerting", -1);
+
+ break;
+
+ /* connect */
+ case 1:
+ invokeStartElement (pctxt, "connect", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "connect", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallCreditServiceControl */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallCreditServiceControl (OOCTXT* pctxt, H225CallCreditServiceControl* pvalue)
+{
+ static Asn1SizeCnst amountString_lsize1 = { 0, 1, 512, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.amountStringPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.billingModePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.callDurationLimitPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.enforceCallDurationLimitPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.callStartingPointPresent = optbit;
+
+ /* decode amountString */
+
+ if (pvalue->m.amountStringPresent) {
+ invokeStartElement (pctxt, "amountString", -1);
+
+ addSizeConstraint (pctxt, &amountString_lsize1);
+
+ stat = decodeBMPString (pctxt, &pvalue->amountString, 0);
+ if (stat != ASN_OK) return stat;
+ invokeCharStr16BitValue (pctxt, pvalue->amountString.nchars, pvalue->amountString.data);
+
+ invokeEndElement (pctxt, "amountString", -1);
+ }
+
+ /* decode billingMode */
+
+ if (pvalue->m.billingModePresent) {
+ invokeStartElement (pctxt, "billingMode", -1);
+
+ stat = asn1PD_H225CallCreditServiceControl_billingMode (pctxt, &pvalue->billingMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "billingMode", -1);
+ }
+
+ /* decode callDurationLimit */
+
+ if (pvalue->m.callDurationLimitPresent) {
+ invokeStartElement (pctxt, "callDurationLimit", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->callDurationLimit, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->callDurationLimit);
+
+ invokeEndElement (pctxt, "callDurationLimit", -1);
+ }
+
+ /* decode enforceCallDurationLimit */
+
+ if (pvalue->m.enforceCallDurationLimitPresent) {
+ invokeStartElement (pctxt, "enforceCallDurationLimit", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->enforceCallDurationLimit);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->enforceCallDurationLimit);
+
+ invokeEndElement (pctxt, "enforceCallDurationLimit", -1);
+ }
+
+ /* decode callStartingPoint */
+
+ if (pvalue->m.callStartingPointPresent) {
+ invokeStartElement (pctxt, "callStartingPoint", -1);
+
+ stat = asn1PD_H225CallCreditServiceControl_callStartingPoint (pctxt, &pvalue->callStartingPoint);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callStartingPoint", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ServiceControlDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ServiceControlDescriptor (OOCTXT* pctxt, H225ServiceControlDescriptor* pvalue)
+{
+ static Asn1SizeCnst url_lsize1 = { 0, 0, 512, 0 };
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* url */
+ case 0:
+ invokeStartElement (pctxt, "url", -1);
+
+ addSizeConstraint (pctxt, &url_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.url, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.url);
+
+ invokeEndElement (pctxt, "url", -1);
+
+ break;
+
+ /* signal */
+ case 1:
+ invokeStartElement (pctxt, "signal", -1);
+
+ pvalue->u.signal = ALLOC_ASN1ELEM (pctxt, H225H248SignalsDescriptor);
+
+ stat = asn1PD_H225H248SignalsDescriptor (pctxt, pvalue->u.signal);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "signal", -1);
+
+ break;
+
+ /* nonStandard */
+ case 2:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* callCreditServiceControl */
+ case 3:
+ invokeStartElement (pctxt, "callCreditServiceControl", -1);
+
+ pvalue->u.callCreditServiceControl = ALLOC_ASN1ELEM (pctxt, H225CallCreditServiceControl);
+
+ stat = asn1PD_H225CallCreditServiceControl (pctxt, pvalue->u.callCreditServiceControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callCreditServiceControl", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ServiceControlSession_reason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ServiceControlSession_reason (OOCTXT* pctxt, H225ServiceControlSession_reason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* open */
+ case 0:
+ invokeStartElement (pctxt, "open", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "open", -1);
+
+ break;
+
+ /* refresh */
+ case 1:
+ invokeStartElement (pctxt, "refresh", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "refresh", -1);
+
+ break;
+
+ /* close */
+ case 2:
+ invokeStartElement (pctxt, "close", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "close", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ServiceControlSession */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ServiceControlSession (OOCTXT* pctxt, H225ServiceControlSession* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.contentsPresent = optbit;
+
+ /* decode sessionId */
+
+ invokeStartElement (pctxt, "sessionId", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->sessionId, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sessionId);
+
+ invokeEndElement (pctxt, "sessionId", -1);
+
+ /* decode contents */
+
+ if (pvalue->m.contentsPresent) {
+ invokeStartElement (pctxt, "contents", -1);
+
+ stat = asn1PD_H225ServiceControlDescriptor (pctxt, &pvalue->contents);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "contents", -1);
+ }
+
+ /* decode reason */
+
+ invokeStartElement (pctxt, "reason", -1);
+
+ stat = asn1PD_H225ServiceControlSession_reason (pctxt, &pvalue->reason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "reason", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ServiceControlSession */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225ServiceControlSession (OOCTXT* pctxt, H225_SeqOfH225ServiceControlSession* pvalue)
+{
+ int stat = ASN_OK;
+ H225ServiceControlSession* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225ServiceControlSession);
+
+ stat = asn1PD_H225ServiceControlSession (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CarrierInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CarrierInfo (OOCTXT* pctxt, H225CarrierInfo* pvalue)
+{
+ static Asn1SizeCnst carrierName_lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.carrierIdentificationCodePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.carrierNamePresent = optbit;
+
+ /* decode carrierIdentificationCode */
+
+ if (pvalue->m.carrierIdentificationCodePresent) {
+ invokeStartElement (pctxt, "carrierIdentificationCode", -1);
+
+ stat = asn1PD_H225CarrierInfo_carrierIdentificationCode (pctxt, &pvalue->carrierIdentificationCode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "carrierIdentificationCode", -1);
+ }
+
+ /* decode carrierName */
+
+ if (pvalue->m.carrierNamePresent) {
+ invokeStartElement (pctxt, "carrierName", -1);
+
+ addSizeConstraint (pctxt, &carrierName_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->carrierName, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->carrierName);
+
+ invokeEndElement (pctxt, "carrierName", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallsAvailable */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallsAvailable (OOCTXT* pctxt, H225CallsAvailable* pvalue)
+{
+ static Asn1SizeCnst group_lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.groupPresent = optbit;
+
+ /* decode calls */
+
+ invokeStartElement (pctxt, "calls", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->calls, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->calls);
+
+ invokeEndElement (pctxt, "calls", -1);
+
+ /* decode group */
+
+ if (pvalue->m.groupPresent) {
+ invokeStartElement (pctxt, "group", -1);
+
+ addSizeConstraint (pctxt, &group_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->group, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->group);
+
+ invokeEndElement (pctxt, "group", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.carrierPresent = 1;
+
+ invokeStartElement (pctxt, "carrier", -1);
+
+ stat = asn1PD_H225CarrierInfo (pctxt, &pvalue->carrier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "carrier", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CallsAvailable */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225CallsAvailable (OOCTXT* pctxt, H225_SeqOfH225CallsAvailable* pvalue)
+{
+ int stat = ASN_OK;
+ H225CallsAvailable* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225CallsAvailable);
+
+ stat = asn1PD_H225CallsAvailable (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallCapacityInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallCapacityInfo (OOCTXT* pctxt, H225CallCapacityInfo* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.voiceGwCallsAvailablePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h310GwCallsAvailablePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h320GwCallsAvailablePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h321GwCallsAvailablePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h322GwCallsAvailablePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h323GwCallsAvailablePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h324GwCallsAvailablePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.t120OnlyGwCallsAvailablePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.t38FaxAnnexbOnlyGwCallsAvailablePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.terminalCallsAvailablePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mcuCallsAvailablePresent = optbit;
+
+ /* decode voiceGwCallsAvailable */
+
+ if (pvalue->m.voiceGwCallsAvailablePresent) {
+ invokeStartElement (pctxt, "voiceGwCallsAvailable", -1);
+
+ stat = asn1PD_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->voiceGwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "voiceGwCallsAvailable", -1);
+ }
+
+ /* decode h310GwCallsAvailable */
+
+ if (pvalue->m.h310GwCallsAvailablePresent) {
+ invokeStartElement (pctxt, "h310GwCallsAvailable", -1);
+
+ stat = asn1PD_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h310GwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h310GwCallsAvailable", -1);
+ }
+
+ /* decode h320GwCallsAvailable */
+
+ if (pvalue->m.h320GwCallsAvailablePresent) {
+ invokeStartElement (pctxt, "h320GwCallsAvailable", -1);
+
+ stat = asn1PD_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h320GwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h320GwCallsAvailable", -1);
+ }
+
+ /* decode h321GwCallsAvailable */
+
+ if (pvalue->m.h321GwCallsAvailablePresent) {
+ invokeStartElement (pctxt, "h321GwCallsAvailable", -1);
+
+ stat = asn1PD_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h321GwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h321GwCallsAvailable", -1);
+ }
+
+ /* decode h322GwCallsAvailable */
+
+ if (pvalue->m.h322GwCallsAvailablePresent) {
+ invokeStartElement (pctxt, "h322GwCallsAvailable", -1);
+
+ stat = asn1PD_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h322GwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h322GwCallsAvailable", -1);
+ }
+
+ /* decode h323GwCallsAvailable */
+
+ if (pvalue->m.h323GwCallsAvailablePresent) {
+ invokeStartElement (pctxt, "h323GwCallsAvailable", -1);
+
+ stat = asn1PD_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h323GwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h323GwCallsAvailable", -1);
+ }
+
+ /* decode h324GwCallsAvailable */
+
+ if (pvalue->m.h324GwCallsAvailablePresent) {
+ invokeStartElement (pctxt, "h324GwCallsAvailable", -1);
+
+ stat = asn1PD_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h324GwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h324GwCallsAvailable", -1);
+ }
+
+ /* decode t120OnlyGwCallsAvailable */
+
+ if (pvalue->m.t120OnlyGwCallsAvailablePresent) {
+ invokeStartElement (pctxt, "t120OnlyGwCallsAvailable", -1);
+
+ stat = asn1PD_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->t120OnlyGwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t120OnlyGwCallsAvailable", -1);
+ }
+
+ /* decode t38FaxAnnexbOnlyGwCallsAvailable */
+
+ if (pvalue->m.t38FaxAnnexbOnlyGwCallsAvailablePresent) {
+ invokeStartElement (pctxt, "t38FaxAnnexbOnlyGwCallsAvailable", -1);
+
+ stat = asn1PD_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->t38FaxAnnexbOnlyGwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t38FaxAnnexbOnlyGwCallsAvailable", -1);
+ }
+
+ /* decode terminalCallsAvailable */
+
+ if (pvalue->m.terminalCallsAvailablePresent) {
+ invokeStartElement (pctxt, "terminalCallsAvailable", -1);
+
+ stat = asn1PD_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->terminalCallsAvailable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalCallsAvailable", -1);
+ }
+
+ /* decode mcuCallsAvailable */
+
+ if (pvalue->m.mcuCallsAvailablePresent) {
+ invokeStartElement (pctxt, "mcuCallsAvailable", -1);
+
+ stat = asn1PD_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->mcuCallsAvailable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mcuCallsAvailable", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.sipGwCallsAvailablePresent = 1;
+
+ invokeStartElement (pctxt, "sipGwCallsAvailable", -1);
+
+ stat = asn1PD_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->sipGwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sipGwCallsAvailable", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallCapacity */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallCapacity (OOCTXT* pctxt, H225CallCapacity* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.maximumCallCapacityPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.currentCallCapacityPresent = optbit;
+
+ /* decode maximumCallCapacity */
+
+ if (pvalue->m.maximumCallCapacityPresent) {
+ invokeStartElement (pctxt, "maximumCallCapacity", -1);
+
+ stat = asn1PD_H225CallCapacityInfo (pctxt, &pvalue->maximumCallCapacity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "maximumCallCapacity", -1);
+ }
+
+ /* decode currentCallCapacity */
+
+ if (pvalue->m.currentCallCapacityPresent) {
+ invokeStartElement (pctxt, "currentCallCapacity", -1);
+
+ stat = asn1PD_H225CallCapacityInfo (pctxt, &pvalue->currentCallCapacity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "currentCallCapacity", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CicInfo_cic_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225CicInfo_cic_element (OOCTXT* pctxt, H225_SeqOfH225CicInfo_cic_element* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, H225CicInfo_cic_element);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H225CicInfo_cic_element (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CicInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CicInfo (OOCTXT* pctxt, H225CicInfo* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode cic */
+
+ invokeStartElement (pctxt, "cic", -1);
+
+ stat = asn1PD_H225_SeqOfH225CicInfo_cic_element (pctxt, &pvalue->cic);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cic", -1);
+
+ /* decode pointCode */
+
+ invokeStartElement (pctxt, "pointCode", -1);
+
+ stat = asn1PD_H225CicInfo_pointCode (pctxt, &pvalue->pointCode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "pointCode", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GroupID_member */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GroupID_member (OOCTXT* pctxt, H225GroupID_member* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1USINT);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->elem[xx1], 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->elem[xx1]);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GroupID */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GroupID (OOCTXT* pctxt, H225GroupID* pvalue)
+{
+ static Asn1SizeCnst group_lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.memberPresent = optbit;
+
+ /* decode member */
+
+ if (pvalue->m.memberPresent) {
+ invokeStartElement (pctxt, "member", -1);
+
+ stat = asn1PD_H225GroupID_member (pctxt, &pvalue->member);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "member", -1);
+ }
+
+ /* decode group */
+
+ invokeStartElement (pctxt, "group", -1);
+
+ addSizeConstraint (pctxt, &group_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->group, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->group);
+
+ invokeEndElement (pctxt, "group", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CircuitIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CircuitIdentifier (OOCTXT* pctxt, H225CircuitIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cicPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.groupPresent = optbit;
+
+ /* decode cic */
+
+ if (pvalue->m.cicPresent) {
+ invokeStartElement (pctxt, "cic", -1);
+
+ stat = asn1PD_H225CicInfo (pctxt, &pvalue->cic);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cic", -1);
+ }
+
+ /* decode group */
+
+ if (pvalue->m.groupPresent) {
+ invokeStartElement (pctxt, "group", -1);
+
+ stat = asn1PD_H225GroupID (pctxt, &pvalue->group);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "group", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.carrierPresent = 1;
+
+ invokeStartElement (pctxt, "carrier", -1);
+
+ stat = asn1PD_H225CarrierInfo (pctxt, &pvalue->carrier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "carrier", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225GenericData */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225GenericData (OOCTXT* pctxt, H225_SeqOfH225GenericData* pvalue)
+{
+ int stat = ASN_OK;
+ H225GenericData* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225GenericData);
+
+ stat = asn1PD_H225GenericData (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CircuitInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CircuitInfo (OOCTXT* pctxt, H225CircuitInfo* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.sourceCircuitIDPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.destinationCircuitIDPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.genericDataPresent = optbit;
+
+ /* decode sourceCircuitID */
+
+ if (pvalue->m.sourceCircuitIDPresent) {
+ invokeStartElement (pctxt, "sourceCircuitID", -1);
+
+ stat = asn1PD_H225CircuitIdentifier (pctxt, &pvalue->sourceCircuitID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sourceCircuitID", -1);
+ }
+
+ /* decode destinationCircuitID */
+
+ if (pvalue->m.destinationCircuitIDPresent) {
+ invokeStartElement (pctxt, "destinationCircuitID", -1);
+
+ stat = asn1PD_H225CircuitIdentifier (pctxt, &pvalue->destinationCircuitID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destinationCircuitID", -1);
+ }
+
+ /* decode genericData */
+
+ if (pvalue->m.genericDataPresent) {
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225FeatureDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225FeatureDescriptor (OOCTXT* pctxt, H225_SeqOfH225FeatureDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+ H225FeatureDescriptor* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225FeatureDescriptor);
+
+ stat = asn1PD_H225FeatureDescriptor (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_parallelH245Control */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Setup_UUIE_parallelH245Control (OOCTXT* pctxt, H225Setup_UUIE_parallelH245Control* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1DynOctStr);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ExtendedAliasAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ExtendedAliasAddress (OOCTXT* pctxt, H225ExtendedAliasAddress* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.presentationIndicatorPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.screeningIndicatorPresent = optbit;
+
+ /* decode address */
+
+ invokeStartElement (pctxt, "address", -1);
+
+ stat = asn1PD_H225AliasAddress (pctxt, &pvalue->address);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "address", -1);
+
+ /* decode presentationIndicator */
+
+ if (pvalue->m.presentationIndicatorPresent) {
+ invokeStartElement (pctxt, "presentationIndicator", -1);
+
+ stat = asn1PD_H225PresentationIndicator (pctxt, &pvalue->presentationIndicator);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "presentationIndicator", -1);
+ }
+
+ /* decode screeningIndicator */
+
+ if (pvalue->m.screeningIndicatorPresent) {
+ invokeStartElement (pctxt, "screeningIndicator", -1);
+
+ stat = asn1PD_H225ScreeningIndicator (pctxt, &pvalue->screeningIndicator);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "screeningIndicator", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ExtendedAliasAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225ExtendedAliasAddress (OOCTXT* pctxt, H225_SeqOfH225ExtendedAliasAddress* pvalue)
+{
+ int stat = ASN_OK;
+ H225ExtendedAliasAddress* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225ExtendedAliasAddress);
+
+ stat = asn1PD_H225ExtendedAliasAddress (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Setup_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Setup_UUIE (OOCTXT* pctxt, H225Setup_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h245AddressPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.sourceAddressPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.destinationAddressPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.destCallSignalAddressPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.destExtraCallInfoPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.destExtraCRVPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.callServicesPresent = optbit;
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode h245Address */
+
+ if (pvalue->m.h245AddressPresent) {
+ invokeStartElement (pctxt, "h245Address", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->h245Address);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h245Address", -1);
+ }
+
+ /* decode sourceAddress */
+
+ if (pvalue->m.sourceAddressPresent) {
+ invokeStartElement (pctxt, "sourceAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->sourceAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sourceAddress", -1);
+ }
+
+ /* decode sourceInfo */
+
+ invokeStartElement (pctxt, "sourceInfo", -1);
+
+ stat = asn1PD_H225EndpointType (pctxt, &pvalue->sourceInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sourceInfo", -1);
+
+ /* decode destinationAddress */
+
+ if (pvalue->m.destinationAddressPresent) {
+ invokeStartElement (pctxt, "destinationAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destinationAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destinationAddress", -1);
+ }
+
+ /* decode destCallSignalAddress */
+
+ if (pvalue->m.destCallSignalAddressPresent) {
+ invokeStartElement (pctxt, "destCallSignalAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->destCallSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destCallSignalAddress", -1);
+ }
+
+ /* decode destExtraCallInfo */
+
+ if (pvalue->m.destExtraCallInfoPresent) {
+ invokeStartElement (pctxt, "destExtraCallInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destExtraCallInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destExtraCallInfo", -1);
+ }
+
+ /* decode destExtraCRV */
+
+ if (pvalue->m.destExtraCRVPresent) {
+ invokeStartElement (pctxt, "destExtraCRV", -1);
+
+ stat = asn1PD_H225_SeqOfH225CallReferenceValue (pctxt, &pvalue->destExtraCRV);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destExtraCRV", -1);
+ }
+
+ /* decode activeMC */
+
+ invokeStartElement (pctxt, "activeMC", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->activeMC);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->activeMC);
+
+ invokeEndElement (pctxt, "activeMC", -1);
+
+ /* decode conferenceID */
+
+ invokeStartElement (pctxt, "conferenceID", -1);
+
+ stat = asn1PD_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceID", -1);
+
+ /* decode conferenceGoal */
+
+ invokeStartElement (pctxt, "conferenceGoal", -1);
+
+ stat = asn1PD_H225Setup_UUIE_conferenceGoal (pctxt, &pvalue->conferenceGoal);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceGoal", -1);
+
+ /* decode callServices */
+
+ if (pvalue->m.callServicesPresent) {
+ invokeStartElement (pctxt, "callServices", -1);
+
+ stat = asn1PD_H225QseriesOptions (pctxt, &pvalue->callServices);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callServices", -1);
+ }
+
+ /* decode callType */
+
+ invokeStartElement (pctxt, "callType", -1);
+
+ stat = asn1PD_H225CallType (pctxt, &pvalue->callType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callType", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 27 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.sourceCallSignalAddressPresent = 1;
+
+ invokeStartElement (pctxt, "sourceCallSignalAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->sourceCallSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sourceCallSignalAddress", -1);
+ break;
+
+ case 1:
+ pvalue->m.remoteExtensionAddressPresent = 1;
+
+ invokeStartElement (pctxt, "remoteExtensionAddress", -1);
+
+ stat = asn1PD_H225AliasAddress (pctxt, &pvalue->remoteExtensionAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "remoteExtensionAddress", -1);
+ break;
+
+ case 2:
+ pvalue->m.callIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+ break;
+
+ case 3:
+ pvalue->m.h245SecurityCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "h245SecurityCapability", -1);
+
+ stat = asn1PD_H225_SeqOfH225H245Security (pctxt, &pvalue->h245SecurityCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h245SecurityCapability", -1);
+ break;
+
+ case 4:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 5:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 6:
+ pvalue->m.fastStartPresent = 1;
+
+ invokeStartElement (pctxt, "fastStart", -1);
+
+ stat = asn1PD_H225Setup_UUIE_fastStart (pctxt, &pvalue->fastStart);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "fastStart", -1);
+ break;
+
+ case 7:
+ pvalue->m.mediaWaitForConnectPresent = 1;
+
+ invokeStartElement (pctxt, "mediaWaitForConnect", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->mediaWaitForConnect);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->mediaWaitForConnect);
+
+ invokeEndElement (pctxt, "mediaWaitForConnect", -1);
+ break;
+
+ case 8:
+ pvalue->m.canOverlapSendPresent = 1;
+
+ invokeStartElement (pctxt, "canOverlapSend", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->canOverlapSend);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->canOverlapSend);
+
+ invokeEndElement (pctxt, "canOverlapSend", -1);
+ break;
+
+ case 9:
+ pvalue->m.endpointIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "endpointIdentifier", -1);
+
+ stat = asn1PD_H225EndpointIdentifier (pctxt, &pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointIdentifier", -1);
+ break;
+
+ case 10:
+ pvalue->m.multipleCallsPresent = 1;
+
+ invokeStartElement (pctxt, "multipleCalls", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multipleCalls);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multipleCalls);
+
+ invokeEndElement (pctxt, "multipleCalls", -1);
+ break;
+
+ case 11:
+ pvalue->m.maintainConnectionPresent = 1;
+
+ invokeStartElement (pctxt, "maintainConnection", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->maintainConnection);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->maintainConnection);
+
+ invokeEndElement (pctxt, "maintainConnection", -1);
+ break;
+
+ case 12:
+ pvalue->m.connectionParametersPresent = 1;
+
+ invokeStartElement (pctxt, "connectionParameters", -1);
+
+ stat = asn1PD_H225Setup_UUIE_connectionParameters (pctxt, &pvalue->connectionParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "connectionParameters", -1);
+ break;
+
+ case 13:
+ pvalue->m.languagePresent = 1;
+
+ invokeStartElement (pctxt, "language", -1);
+
+ stat = asn1PD_H225Setup_UUIE_language (pctxt, &pvalue->language);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "language", -1);
+ break;
+
+ case 14:
+ pvalue->m.presentationIndicatorPresent = 1;
+
+ invokeStartElement (pctxt, "presentationIndicator", -1);
+
+ stat = asn1PD_H225PresentationIndicator (pctxt, &pvalue->presentationIndicator);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "presentationIndicator", -1);
+ break;
+
+ case 15:
+ pvalue->m.screeningIndicatorPresent = 1;
+
+ invokeStartElement (pctxt, "screeningIndicator", -1);
+
+ stat = asn1PD_H225ScreeningIndicator (pctxt, &pvalue->screeningIndicator);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "screeningIndicator", -1);
+ break;
+
+ case 16:
+ pvalue->m.serviceControlPresent = 1;
+
+ invokeStartElement (pctxt, "serviceControl", -1);
+
+ stat = asn1PD_H225_SeqOfH225ServiceControlSession (pctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "serviceControl", -1);
+ break;
+
+ case 17:
+ pvalue->m.symmetricOperationRequiredPresent = 1;
+
+ invokeStartElement (pctxt, "symmetricOperationRequired", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "symmetricOperationRequired", -1);
+ break;
+
+ case 18:
+ pvalue->m.capacityPresent = 1;
+
+ invokeStartElement (pctxt, "capacity", -1);
+
+ stat = asn1PD_H225CallCapacity (pctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capacity", -1);
+ break;
+
+ case 19:
+ pvalue->m.circuitInfoPresent = 1;
+
+ invokeStartElement (pctxt, "circuitInfo", -1);
+
+ stat = asn1PD_H225CircuitInfo (pctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "circuitInfo", -1);
+ break;
+
+ case 20:
+ pvalue->m.desiredProtocolsPresent = 1;
+
+ invokeStartElement (pctxt, "desiredProtocols", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedProtocols (pctxt, &pvalue->desiredProtocols);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "desiredProtocols", -1);
+ break;
+
+ case 21:
+ pvalue->m.neededFeaturesPresent = 1;
+
+ invokeStartElement (pctxt, "neededFeatures", -1);
+
+ stat = asn1PD_H225_SeqOfH225FeatureDescriptor (pctxt, &pvalue->neededFeatures);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "neededFeatures", -1);
+ break;
+
+ case 22:
+ pvalue->m.desiredFeaturesPresent = 1;
+
+ invokeStartElement (pctxt, "desiredFeatures", -1);
+
+ stat = asn1PD_H225_SeqOfH225FeatureDescriptor (pctxt, &pvalue->desiredFeatures);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "desiredFeatures", -1);
+ break;
+
+ case 23:
+ pvalue->m.supportedFeaturesPresent = 1;
+
+ invokeStartElement (pctxt, "supportedFeatures", -1);
+
+ stat = asn1PD_H225_SeqOfH225FeatureDescriptor (pctxt, &pvalue->supportedFeatures);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedFeatures", -1);
+ break;
+
+ case 24:
+ pvalue->m.parallelH245ControlPresent = 1;
+
+ invokeStartElement (pctxt, "parallelH245Control", -1);
+
+ stat = asn1PD_H225Setup_UUIE_parallelH245Control (pctxt, &pvalue->parallelH245Control);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "parallelH245Control", -1);
+ break;
+
+ case 25:
+ pvalue->m.additionalSourceAddressesPresent = 1;
+
+ invokeStartElement (pctxt, "additionalSourceAddresses", -1);
+
+ stat = asn1PD_H225_SeqOfH225ExtendedAliasAddress (pctxt, &pvalue->additionalSourceAddresses);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "additionalSourceAddresses", -1);
+ break;
+
+ case 26:
+ pvalue->m.hopCountPresent = 1;
+
+ invokeStartElement (pctxt, "hopCount", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->hopCount, 1U, 31U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->hopCount);
+
+ invokeEndElement (pctxt, "hopCount", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallProceeding_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallProceeding_UUIE_fastStart (OOCTXT* pctxt, H225CallProceeding_UUIE_fastStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1DynOctStr);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FeatureSet */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225FeatureSet (OOCTXT* pctxt, H225FeatureSet* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.neededFeaturesPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.desiredFeaturesPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.supportedFeaturesPresent = optbit;
+
+ /* decode replacementFeatureSet */
+
+ invokeStartElement (pctxt, "replacementFeatureSet", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->replacementFeatureSet);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->replacementFeatureSet);
+
+ invokeEndElement (pctxt, "replacementFeatureSet", -1);
+
+ /* decode neededFeatures */
+
+ if (pvalue->m.neededFeaturesPresent) {
+ invokeStartElement (pctxt, "neededFeatures", -1);
+
+ stat = asn1PD_H225_SeqOfH225FeatureDescriptor (pctxt, &pvalue->neededFeatures);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "neededFeatures", -1);
+ }
+
+ /* decode desiredFeatures */
+
+ if (pvalue->m.desiredFeaturesPresent) {
+ invokeStartElement (pctxt, "desiredFeatures", -1);
+
+ stat = asn1PD_H225_SeqOfH225FeatureDescriptor (pctxt, &pvalue->desiredFeatures);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "desiredFeatures", -1);
+ }
+
+ /* decode supportedFeatures */
+
+ if (pvalue->m.supportedFeaturesPresent) {
+ invokeStartElement (pctxt, "supportedFeatures", -1);
+
+ stat = asn1PD_H225_SeqOfH225FeatureDescriptor (pctxt, &pvalue->supportedFeatures);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedFeatures", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallProceeding_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallProceeding_UUIE (OOCTXT* pctxt, H225CallProceeding_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h245AddressPresent = optbit;
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode destinationInfo */
+
+ invokeStartElement (pctxt, "destinationInfo", -1);
+
+ stat = asn1PD_H225EndpointType (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destinationInfo", -1);
+
+ /* decode h245Address */
+
+ if (pvalue->m.h245AddressPresent) {
+ invokeStartElement (pctxt, "h245Address", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->h245Address);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h245Address", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 9 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.callIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+ break;
+
+ case 1:
+ pvalue->m.h245SecurityModePresent = 1;
+
+ invokeStartElement (pctxt, "h245SecurityMode", -1);
+
+ stat = asn1PD_H225H245Security (pctxt, &pvalue->h245SecurityMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h245SecurityMode", -1);
+ break;
+
+ case 2:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 4:
+ pvalue->m.fastStartPresent = 1;
+
+ invokeStartElement (pctxt, "fastStart", -1);
+
+ stat = asn1PD_H225CallProceeding_UUIE_fastStart (pctxt, &pvalue->fastStart);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "fastStart", -1);
+ break;
+
+ case 5:
+ pvalue->m.multipleCallsPresent = 1;
+
+ invokeStartElement (pctxt, "multipleCalls", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multipleCalls);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multipleCalls);
+
+ invokeEndElement (pctxt, "multipleCalls", -1);
+ break;
+
+ case 6:
+ pvalue->m.maintainConnectionPresent = 1;
+
+ invokeStartElement (pctxt, "maintainConnection", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->maintainConnection);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->maintainConnection);
+
+ invokeEndElement (pctxt, "maintainConnection", -1);
+ break;
+
+ case 7:
+ pvalue->m.fastConnectRefusedPresent = 1;
+
+ invokeStartElement (pctxt, "fastConnectRefused", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "fastConnectRefused", -1);
+ break;
+
+ case 8:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Connect_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Connect_UUIE_fastStart (OOCTXT* pctxt, H225Connect_UUIE_fastStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1DynOctStr);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Connect_UUIE_language */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Connect_UUIE_language (OOCTXT* pctxt, H225Connect_UUIE_language* pvalue)
+{
+ static Asn1SizeCnst element_lsize1 = { 0, 1, 32, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1IA5String);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ addSizeConstraint (pctxt, &element_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->elem[xx1], 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->elem[xx1]);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Connect_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Connect_UUIE (OOCTXT* pctxt, H225Connect_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h245AddressPresent = optbit;
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode h245Address */
+
+ if (pvalue->m.h245AddressPresent) {
+ invokeStartElement (pctxt, "h245Address", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->h245Address);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h245Address", -1);
+ }
+
+ /* decode destinationInfo */
+
+ invokeStartElement (pctxt, "destinationInfo", -1);
+
+ stat = asn1PD_H225EndpointType (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destinationInfo", -1);
+
+ /* decode conferenceID */
+
+ invokeStartElement (pctxt, "conferenceID", -1);
+
+ stat = asn1PD_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceID", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 15 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.callIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+ break;
+
+ case 1:
+ pvalue->m.h245SecurityModePresent = 1;
+
+ invokeStartElement (pctxt, "h245SecurityMode", -1);
+
+ stat = asn1PD_H225H245Security (pctxt, &pvalue->h245SecurityMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h245SecurityMode", -1);
+ break;
+
+ case 2:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 4:
+ pvalue->m.fastStartPresent = 1;
+
+ invokeStartElement (pctxt, "fastStart", -1);
+
+ stat = asn1PD_H225Connect_UUIE_fastStart (pctxt, &pvalue->fastStart);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "fastStart", -1);
+ break;
+
+ case 5:
+ pvalue->m.multipleCallsPresent = 1;
+
+ invokeStartElement (pctxt, "multipleCalls", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multipleCalls);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multipleCalls);
+
+ invokeEndElement (pctxt, "multipleCalls", -1);
+ break;
+
+ case 6:
+ pvalue->m.maintainConnectionPresent = 1;
+
+ invokeStartElement (pctxt, "maintainConnection", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->maintainConnection);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->maintainConnection);
+
+ invokeEndElement (pctxt, "maintainConnection", -1);
+ break;
+
+ case 7:
+ pvalue->m.languagePresent = 1;
+
+ invokeStartElement (pctxt, "language", -1);
+
+ stat = asn1PD_H225Connect_UUIE_language (pctxt, &pvalue->language);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "language", -1);
+ break;
+
+ case 8:
+ pvalue->m.connectedAddressPresent = 1;
+
+ invokeStartElement (pctxt, "connectedAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->connectedAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "connectedAddress", -1);
+ break;
+
+ case 9:
+ pvalue->m.presentationIndicatorPresent = 1;
+
+ invokeStartElement (pctxt, "presentationIndicator", -1);
+
+ stat = asn1PD_H225PresentationIndicator (pctxt, &pvalue->presentationIndicator);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "presentationIndicator", -1);
+ break;
+
+ case 10:
+ pvalue->m.screeningIndicatorPresent = 1;
+
+ invokeStartElement (pctxt, "screeningIndicator", -1);
+
+ stat = asn1PD_H225ScreeningIndicator (pctxt, &pvalue->screeningIndicator);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "screeningIndicator", -1);
+ break;
+
+ case 11:
+ pvalue->m.fastConnectRefusedPresent = 1;
+
+ invokeStartElement (pctxt, "fastConnectRefused", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "fastConnectRefused", -1);
+ break;
+
+ case 12:
+ pvalue->m.serviceControlPresent = 1;
+
+ invokeStartElement (pctxt, "serviceControl", -1);
+
+ stat = asn1PD_H225_SeqOfH225ServiceControlSession (pctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "serviceControl", -1);
+ break;
+
+ case 13:
+ pvalue->m.capacityPresent = 1;
+
+ invokeStartElement (pctxt, "capacity", -1);
+
+ stat = asn1PD_H225CallCapacity (pctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capacity", -1);
+ break;
+
+ case 14:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Alerting_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Alerting_UUIE_fastStart (OOCTXT* pctxt, H225Alerting_UUIE_fastStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1DynOctStr);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Alerting_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Alerting_UUIE (OOCTXT* pctxt, H225Alerting_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h245AddressPresent = optbit;
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode destinationInfo */
+
+ invokeStartElement (pctxt, "destinationInfo", -1);
+
+ stat = asn1PD_H225EndpointType (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destinationInfo", -1);
+
+ /* decode h245Address */
+
+ if (pvalue->m.h245AddressPresent) {
+ invokeStartElement (pctxt, "h245Address", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->h245Address);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h245Address", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 14 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.callIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+ break;
+
+ case 1:
+ pvalue->m.h245SecurityModePresent = 1;
+
+ invokeStartElement (pctxt, "h245SecurityMode", -1);
+
+ stat = asn1PD_H225H245Security (pctxt, &pvalue->h245SecurityMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h245SecurityMode", -1);
+ break;
+
+ case 2:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 4:
+ pvalue->m.fastStartPresent = 1;
+
+ invokeStartElement (pctxt, "fastStart", -1);
+
+ stat = asn1PD_H225Alerting_UUIE_fastStart (pctxt, &pvalue->fastStart);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "fastStart", -1);
+ break;
+
+ case 5:
+ pvalue->m.multipleCallsPresent = 1;
+
+ invokeStartElement (pctxt, "multipleCalls", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multipleCalls);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multipleCalls);
+
+ invokeEndElement (pctxt, "multipleCalls", -1);
+ break;
+
+ case 6:
+ pvalue->m.maintainConnectionPresent = 1;
+
+ invokeStartElement (pctxt, "maintainConnection", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->maintainConnection);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->maintainConnection);
+
+ invokeEndElement (pctxt, "maintainConnection", -1);
+ break;
+
+ case 7:
+ pvalue->m.alertingAddressPresent = 1;
+
+ invokeStartElement (pctxt, "alertingAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->alertingAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alertingAddress", -1);
+ break;
+
+ case 8:
+ pvalue->m.presentationIndicatorPresent = 1;
+
+ invokeStartElement (pctxt, "presentationIndicator", -1);
+
+ stat = asn1PD_H225PresentationIndicator (pctxt, &pvalue->presentationIndicator);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "presentationIndicator", -1);
+ break;
+
+ case 9:
+ pvalue->m.screeningIndicatorPresent = 1;
+
+ invokeStartElement (pctxt, "screeningIndicator", -1);
+
+ stat = asn1PD_H225ScreeningIndicator (pctxt, &pvalue->screeningIndicator);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "screeningIndicator", -1);
+ break;
+
+ case 10:
+ pvalue->m.fastConnectRefusedPresent = 1;
+
+ invokeStartElement (pctxt, "fastConnectRefused", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "fastConnectRefused", -1);
+ break;
+
+ case 11:
+ pvalue->m.serviceControlPresent = 1;
+
+ invokeStartElement (pctxt, "serviceControl", -1);
+
+ stat = asn1PD_H225_SeqOfH225ServiceControlSession (pctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "serviceControl", -1);
+ break;
+
+ case 12:
+ pvalue->m.capacityPresent = 1;
+
+ invokeStartElement (pctxt, "capacity", -1);
+
+ stat = asn1PD_H225CallCapacity (pctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capacity", -1);
+ break;
+
+ case 13:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Information_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Information_UUIE_fastStart (OOCTXT* pctxt, H225Information_UUIE_fastStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1DynOctStr);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Information_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Information_UUIE (OOCTXT* pctxt, H225Information_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 6 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.callIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+ break;
+
+ case 1:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.fastStartPresent = 1;
+
+ invokeStartElement (pctxt, "fastStart", -1);
+
+ stat = asn1PD_H225Information_UUIE_fastStart (pctxt, &pvalue->fastStart);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "fastStart", -1);
+ break;
+
+ case 4:
+ pvalue->m.fastConnectRefusedPresent = 1;
+
+ invokeStartElement (pctxt, "fastConnectRefused", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "fastConnectRefused", -1);
+ break;
+
+ case 5:
+ pvalue->m.circuitInfoPresent = 1;
+
+ invokeStartElement (pctxt, "circuitInfo", -1);
+
+ stat = asn1PD_H225CircuitInfo (pctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "circuitInfo", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SecurityErrors */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225SecurityErrors (OOCTXT* pctxt, H225SecurityErrors* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 15);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* securityWrongSyncTime */
+ case 0:
+ invokeStartElement (pctxt, "securityWrongSyncTime", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityWrongSyncTime", -1);
+
+ break;
+
+ /* securityReplay */
+ case 1:
+ invokeStartElement (pctxt, "securityReplay", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityReplay", -1);
+
+ break;
+
+ /* securityWrongGeneralID */
+ case 2:
+ invokeStartElement (pctxt, "securityWrongGeneralID", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityWrongGeneralID", -1);
+
+ break;
+
+ /* securityWrongSendersID */
+ case 3:
+ invokeStartElement (pctxt, "securityWrongSendersID", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityWrongSendersID", -1);
+
+ break;
+
+ /* securityIntegrityFailed */
+ case 4:
+ invokeStartElement (pctxt, "securityIntegrityFailed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityIntegrityFailed", -1);
+
+ break;
+
+ /* securityWrongOID */
+ case 5:
+ invokeStartElement (pctxt, "securityWrongOID", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityWrongOID", -1);
+
+ break;
+
+ /* securityDHmismatch */
+ case 6:
+ invokeStartElement (pctxt, "securityDHmismatch", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityDHmismatch", -1);
+
+ break;
+
+ /* securityCertificateExpired */
+ case 7:
+ invokeStartElement (pctxt, "securityCertificateExpired", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityCertificateExpired", -1);
+
+ break;
+
+ /* securityCertificateDateInvalid */
+ case 8:
+ invokeStartElement (pctxt, "securityCertificateDateInvalid", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityCertificateDateInvalid", -1);
+
+ break;
+
+ /* securityCertificateRevoked */
+ case 9:
+ invokeStartElement (pctxt, "securityCertificateRevoked", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityCertificateRevoked", -1);
+
+ break;
+
+ /* securityCertificateNotReadable */
+ case 10:
+ invokeStartElement (pctxt, "securityCertificateNotReadable", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityCertificateNotReadable", -1);
+
+ break;
+
+ /* securityCertificateSignatureInvalid */
+ case 11:
+ invokeStartElement (pctxt, "securityCertificateSignatureInvalid", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityCertificateSignatureInvalid", -1);
+
+ break;
+
+ /* securityCertificateMissing */
+ case 12:
+ invokeStartElement (pctxt, "securityCertificateMissing", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityCertificateMissing", -1);
+
+ break;
+
+ /* securityCertificateIncomplete */
+ case 13:
+ invokeStartElement (pctxt, "securityCertificateIncomplete", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityCertificateIncomplete", -1);
+
+ break;
+
+ /* securityUnsupportedCertificateAlgOID */
+ case 14:
+ invokeStartElement (pctxt, "securityUnsupportedCertificateAlgOID", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityUnsupportedCertificateAlgOID", -1);
+
+ break;
+
+ /* securityUnknownCA */
+ case 15:
+ invokeStartElement (pctxt, "securityUnknownCA", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityUnknownCA", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 17;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ReleaseCompleteReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ReleaseCompleteReason (OOCTXT* pctxt, H225ReleaseCompleteReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 11);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* noBandwidth */
+ case 0:
+ invokeStartElement (pctxt, "noBandwidth", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noBandwidth", -1);
+
+ break;
+
+ /* gatekeeperResources */
+ case 1:
+ invokeStartElement (pctxt, "gatekeeperResources", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "gatekeeperResources", -1);
+
+ break;
+
+ /* unreachableDestination */
+ case 2:
+ invokeStartElement (pctxt, "unreachableDestination", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unreachableDestination", -1);
+
+ break;
+
+ /* destinationRejection */
+ case 3:
+ invokeStartElement (pctxt, "destinationRejection", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "destinationRejection", -1);
+
+ break;
+
+ /* invalidRevision */
+ case 4:
+ invokeStartElement (pctxt, "invalidRevision", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidRevision", -1);
+
+ break;
+
+ /* noPermission */
+ case 5:
+ invokeStartElement (pctxt, "noPermission", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noPermission", -1);
+
+ break;
+
+ /* unreachableGatekeeper */
+ case 6:
+ invokeStartElement (pctxt, "unreachableGatekeeper", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unreachableGatekeeper", -1);
+
+ break;
+
+ /* gatewayResources */
+ case 7:
+ invokeStartElement (pctxt, "gatewayResources", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "gatewayResources", -1);
+
+ break;
+
+ /* badFormatAddress */
+ case 8:
+ invokeStartElement (pctxt, "badFormatAddress", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "badFormatAddress", -1);
+
+ break;
+
+ /* adaptiveBusy */
+ case 9:
+ invokeStartElement (pctxt, "adaptiveBusy", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "adaptiveBusy", -1);
+
+ break;
+
+ /* inConf */
+ case 10:
+ invokeStartElement (pctxt, "inConf", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "inConf", -1);
+
+ break;
+
+ /* undefinedReason */
+ case 11:
+ invokeStartElement (pctxt, "undefinedReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "undefinedReason", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 13;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* facilityCallDeflection */
+ case 13:
+ invokeStartElement (pctxt, "facilityCallDeflection", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "facilityCallDeflection", -1);
+
+ break;
+
+ /* securityDenied */
+ case 14:
+ invokeStartElement (pctxt, "securityDenied", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityDenied", -1);
+
+ break;
+
+ /* calledPartyNotRegistered */
+ case 15:
+ invokeStartElement (pctxt, "calledPartyNotRegistered", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "calledPartyNotRegistered", -1);
+
+ break;
+
+ /* callerNotRegistered */
+ case 16:
+ invokeStartElement (pctxt, "callerNotRegistered", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "callerNotRegistered", -1);
+
+ break;
+
+ /* newConnectionNeeded */
+ case 17:
+ invokeStartElement (pctxt, "newConnectionNeeded", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "newConnectionNeeded", -1);
+
+ break;
+
+ /* nonStandardReason */
+ case 18:
+ invokeStartElement (pctxt, "nonStandardReason", -1);
+
+ pvalue->u.nonStandardReason = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandardReason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardReason", -1);
+
+ break;
+
+ /* replaceWithConferenceInvite */
+ case 19:
+ invokeStartElement (pctxt, "replaceWithConferenceInvite", -1);
+
+ pvalue->u.replaceWithConferenceInvite = ALLOC_ASN1ELEM (pctxt, H225ConferenceIdentifier);
+
+ stat = asn1PD_H225ConferenceIdentifier (pctxt, pvalue->u.replaceWithConferenceInvite);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "replaceWithConferenceInvite", -1);
+
+ break;
+
+ /* genericDataReason */
+ case 20:
+ invokeStartElement (pctxt, "genericDataReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "genericDataReason", -1);
+
+ break;
+
+ /* neededFeatureNotSupported */
+ case 21:
+ invokeStartElement (pctxt, "neededFeatureNotSupported", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "neededFeatureNotSupported", -1);
+
+ break;
+
+ /* tunnelledSignallingRejected */
+ case 22:
+ invokeStartElement (pctxt, "tunnelledSignallingRejected", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "tunnelledSignallingRejected", -1);
+
+ break;
+
+ /* invalidCID */
+ case 23:
+ invokeStartElement (pctxt, "invalidCID", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidCID", -1);
+
+ break;
+
+ /* securityError */
+ case 24:
+ invokeStartElement (pctxt, "securityError", -1);
+
+ pvalue->u.securityError = ALLOC_ASN1ELEM (pctxt, H225SecurityErrors);
+
+ stat = asn1PD_H225SecurityErrors (pctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "securityError", -1);
+
+ break;
+
+ /* hopCountExceeded */
+ case 25:
+ invokeStartElement (pctxt, "hopCountExceeded", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "hopCountExceeded", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ReleaseComplete_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ReleaseComplete_UUIE (OOCTXT* pctxt, H225ReleaseComplete_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.reasonPresent = optbit;
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode reason */
+
+ if (pvalue->m.reasonPresent) {
+ invokeStartElement (pctxt, "reason", -1);
+
+ stat = asn1PD_H225ReleaseCompleteReason (pctxt, &pvalue->reason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "reason", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 9 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.callIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+ break;
+
+ case 1:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.busyAddressPresent = 1;
+
+ invokeStartElement (pctxt, "busyAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->busyAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "busyAddress", -1);
+ break;
+
+ case 4:
+ pvalue->m.presentationIndicatorPresent = 1;
+
+ invokeStartElement (pctxt, "presentationIndicator", -1);
+
+ stat = asn1PD_H225PresentationIndicator (pctxt, &pvalue->presentationIndicator);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "presentationIndicator", -1);
+ break;
+
+ case 5:
+ pvalue->m.screeningIndicatorPresent = 1;
+
+ invokeStartElement (pctxt, "screeningIndicator", -1);
+
+ stat = asn1PD_H225ScreeningIndicator (pctxt, &pvalue->screeningIndicator);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "screeningIndicator", -1);
+ break;
+
+ case 6:
+ pvalue->m.capacityPresent = 1;
+
+ invokeStartElement (pctxt, "capacity", -1);
+
+ stat = asn1PD_H225CallCapacity (pctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capacity", -1);
+ break;
+
+ case 7:
+ pvalue->m.serviceControlPresent = 1;
+
+ invokeStartElement (pctxt, "serviceControl", -1);
+
+ stat = asn1PD_H225_SeqOfH225ServiceControlSession (pctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "serviceControl", -1);
+ break;
+
+ case 8:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FacilityReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225FacilityReason (OOCTXT* pctxt, H225FacilityReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* routeCallToGatekeeper */
+ case 0:
+ invokeStartElement (pctxt, "routeCallToGatekeeper", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "routeCallToGatekeeper", -1);
+
+ break;
+
+ /* callForwarded */
+ case 1:
+ invokeStartElement (pctxt, "callForwarded", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "callForwarded", -1);
+
+ break;
+
+ /* routeCallToMC */
+ case 2:
+ invokeStartElement (pctxt, "routeCallToMC", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "routeCallToMC", -1);
+
+ break;
+
+ /* undefinedReason */
+ case 3:
+ invokeStartElement (pctxt, "undefinedReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "undefinedReason", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* conferenceListChoice */
+ case 5:
+ invokeStartElement (pctxt, "conferenceListChoice", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "conferenceListChoice", -1);
+
+ break;
+
+ /* startH245 */
+ case 6:
+ invokeStartElement (pctxt, "startH245", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "startH245", -1);
+
+ break;
+
+ /* noH245 */
+ case 7:
+ invokeStartElement (pctxt, "noH245", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noH245", -1);
+
+ break;
+
+ /* newTokens */
+ case 8:
+ invokeStartElement (pctxt, "newTokens", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "newTokens", -1);
+
+ break;
+
+ /* featureSetUpdate */
+ case 9:
+ invokeStartElement (pctxt, "featureSetUpdate", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "featureSetUpdate", -1);
+
+ break;
+
+ /* forwardedElements */
+ case 10:
+ invokeStartElement (pctxt, "forwardedElements", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "forwardedElements", -1);
+
+ break;
+
+ /* transportedInformation */
+ case 11:
+ invokeStartElement (pctxt, "transportedInformation", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "transportedInformation", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceList */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ConferenceList (OOCTXT* pctxt, H225ConferenceList* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.conferenceIDPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.conferenceAliasPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode conferenceID */
+
+ if (pvalue->m.conferenceIDPresent) {
+ invokeStartElement (pctxt, "conferenceID", -1);
+
+ stat = asn1PD_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceID", -1);
+ }
+
+ /* decode conferenceAlias */
+
+ if (pvalue->m.conferenceAliasPresent) {
+ invokeStartElement (pctxt, "conferenceAlias", -1);
+
+ stat = asn1PD_H225AliasAddress (pctxt, &pvalue->conferenceAlias);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceAlias", -1);
+ }
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ConferenceList */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225ConferenceList (OOCTXT* pctxt, H225_SeqOfH225ConferenceList* pvalue)
+{
+ int stat = ASN_OK;
+ H225ConferenceList* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225ConferenceList);
+
+ stat = asn1PD_H225ConferenceList (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Facility_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Facility_UUIE_fastStart (OOCTXT* pctxt, H225Facility_UUIE_fastStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1DynOctStr);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Facility_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Facility_UUIE (OOCTXT* pctxt, H225Facility_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.alternativeAddressPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.alternativeAliasAddressPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.conferenceIDPresent = optbit;
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode alternativeAddress */
+
+ if (pvalue->m.alternativeAddressPresent) {
+ invokeStartElement (pctxt, "alternativeAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->alternativeAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternativeAddress", -1);
+ }
+
+ /* decode alternativeAliasAddress */
+
+ if (pvalue->m.alternativeAliasAddressPresent) {
+ invokeStartElement (pctxt, "alternativeAliasAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->alternativeAliasAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternativeAliasAddress", -1);
+ }
+
+ /* decode conferenceID */
+
+ if (pvalue->m.conferenceIDPresent) {
+ invokeStartElement (pctxt, "conferenceID", -1);
+
+ stat = asn1PD_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceID", -1);
+ }
+
+ /* decode reason */
+
+ invokeStartElement (pctxt, "reason", -1);
+
+ stat = asn1PD_H225FacilityReason (pctxt, &pvalue->reason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "reason", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 16 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.callIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+ break;
+
+ case 1:
+ pvalue->m.destExtraCallInfoPresent = 1;
+
+ invokeStartElement (pctxt, "destExtraCallInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destExtraCallInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destExtraCallInfo", -1);
+ break;
+
+ case 2:
+ pvalue->m.remoteExtensionAddressPresent = 1;
+
+ invokeStartElement (pctxt, "remoteExtensionAddress", -1);
+
+ stat = asn1PD_H225AliasAddress (pctxt, &pvalue->remoteExtensionAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "remoteExtensionAddress", -1);
+ break;
+
+ case 3:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 4:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 5:
+ pvalue->m.conferencesPresent = 1;
+
+ invokeStartElement (pctxt, "conferences", -1);
+
+ stat = asn1PD_H225_SeqOfH225ConferenceList (pctxt, &pvalue->conferences);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferences", -1);
+ break;
+
+ case 6:
+ pvalue->m.h245AddressPresent = 1;
+
+ invokeStartElement (pctxt, "h245Address", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->h245Address);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h245Address", -1);
+ break;
+
+ case 7:
+ pvalue->m.fastStartPresent = 1;
+
+ invokeStartElement (pctxt, "fastStart", -1);
+
+ stat = asn1PD_H225Facility_UUIE_fastStart (pctxt, &pvalue->fastStart);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "fastStart", -1);
+ break;
+
+ case 8:
+ pvalue->m.multipleCallsPresent = 1;
+
+ invokeStartElement (pctxt, "multipleCalls", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multipleCalls);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multipleCalls);
+
+ invokeEndElement (pctxt, "multipleCalls", -1);
+ break;
+
+ case 9:
+ pvalue->m.maintainConnectionPresent = 1;
+
+ invokeStartElement (pctxt, "maintainConnection", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->maintainConnection);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->maintainConnection);
+
+ invokeEndElement (pctxt, "maintainConnection", -1);
+ break;
+
+ case 10:
+ pvalue->m.fastConnectRefusedPresent = 1;
+
+ invokeStartElement (pctxt, "fastConnectRefused", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "fastConnectRefused", -1);
+ break;
+
+ case 11:
+ pvalue->m.serviceControlPresent = 1;
+
+ invokeStartElement (pctxt, "serviceControl", -1);
+
+ stat = asn1PD_H225_SeqOfH225ServiceControlSession (pctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "serviceControl", -1);
+ break;
+
+ case 12:
+ pvalue->m.circuitInfoPresent = 1;
+
+ invokeStartElement (pctxt, "circuitInfo", -1);
+
+ stat = asn1PD_H225CircuitInfo (pctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "circuitInfo", -1);
+ break;
+
+ case 13:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ case 14:
+ pvalue->m.destinationInfoPresent = 1;
+
+ invokeStartElement (pctxt, "destinationInfo", -1);
+
+ stat = asn1PD_H225EndpointType (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destinationInfo", -1);
+ break;
+
+ case 15:
+ pvalue->m.h245SecurityModePresent = 1;
+
+ invokeStartElement (pctxt, "h245SecurityMode", -1);
+
+ stat = asn1PD_H225H245Security (pctxt, &pvalue->h245SecurityMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h245SecurityMode", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Progress_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Progress_UUIE_fastStart (OOCTXT* pctxt, H225Progress_UUIE_fastStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1DynOctStr);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Progress_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Progress_UUIE (OOCTXT* pctxt, H225Progress_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h245AddressPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h245SecurityModePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cryptoTokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.fastStartPresent = optbit;
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode destinationInfo */
+
+ invokeStartElement (pctxt, "destinationInfo", -1);
+
+ stat = asn1PD_H225EndpointType (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destinationInfo", -1);
+
+ /* decode h245Address */
+
+ if (pvalue->m.h245AddressPresent) {
+ invokeStartElement (pctxt, "h245Address", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->h245Address);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h245Address", -1);
+ }
+
+ /* decode callIdentifier */
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+
+ /* decode h245SecurityMode */
+
+ if (pvalue->m.h245SecurityModePresent) {
+ invokeStartElement (pctxt, "h245SecurityMode", -1);
+
+ stat = asn1PD_H225H245Security (pctxt, &pvalue->h245SecurityMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h245SecurityMode", -1);
+ }
+
+ /* decode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ }
+
+ /* decode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ }
+
+ /* decode fastStart */
+
+ if (pvalue->m.fastStartPresent) {
+ invokeStartElement (pctxt, "fastStart", -1);
+
+ stat = asn1PD_H225Progress_UUIE_fastStart (pctxt, &pvalue->fastStart);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "fastStart", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 3 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.multipleCallsPresent = 1;
+
+ invokeStartElement (pctxt, "multipleCalls", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multipleCalls);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multipleCalls);
+
+ invokeEndElement (pctxt, "multipleCalls", -1);
+ break;
+
+ case 1:
+ pvalue->m.maintainConnectionPresent = 1;
+
+ invokeStartElement (pctxt, "maintainConnection", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->maintainConnection);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->maintainConnection);
+
+ invokeEndElement (pctxt, "maintainConnection", -1);
+ break;
+
+ case 2:
+ pvalue->m.fastConnectRefusedPresent = 1;
+
+ invokeStartElement (pctxt, "fastConnectRefused", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "fastConnectRefused", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Status_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Status_UUIE (OOCTXT* pctxt, H225Status_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cryptoTokensPresent = optbit;
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode callIdentifier */
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+
+ /* decode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ }
+
+ /* decode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* StatusInquiry_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225StatusInquiry_UUIE (OOCTXT* pctxt, H225StatusInquiry_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cryptoTokensPresent = optbit;
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode callIdentifier */
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+
+ /* decode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ }
+
+ /* decode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SetupAcknowledge_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225SetupAcknowledge_UUIE (OOCTXT* pctxt, H225SetupAcknowledge_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cryptoTokensPresent = optbit;
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode callIdentifier */
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+
+ /* decode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ }
+
+ /* decode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Notify_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Notify_UUIE (OOCTXT* pctxt, H225Notify_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cryptoTokensPresent = optbit;
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode callIdentifier */
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+
+ /* decode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ }
+
+ /* decode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_h323_message_body */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H323_UU_PDU_h323_message_body (OOCTXT* pctxt, H225H323_UU_PDU_h323_message_body* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 6);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* setup */
+ case 0:
+ invokeStartElement (pctxt, "setup", -1);
+
+ pvalue->u.setup = ALLOC_ASN1ELEM (pctxt, H225Setup_UUIE);
+
+ stat = asn1PD_H225Setup_UUIE (pctxt, pvalue->u.setup);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "setup", -1);
+
+ break;
+
+ /* callProceeding */
+ case 1:
+ invokeStartElement (pctxt, "callProceeding", -1);
+
+ pvalue->u.callProceeding = ALLOC_ASN1ELEM (pctxt, H225CallProceeding_UUIE);
+
+ stat = asn1PD_H225CallProceeding_UUIE (pctxt, pvalue->u.callProceeding);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callProceeding", -1);
+
+ break;
+
+ /* connect */
+ case 2:
+ invokeStartElement (pctxt, "connect", -1);
+
+ pvalue->u.connect = ALLOC_ASN1ELEM (pctxt, H225Connect_UUIE);
+
+ stat = asn1PD_H225Connect_UUIE (pctxt, pvalue->u.connect);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "connect", -1);
+
+ break;
+
+ /* alerting */
+ case 3:
+ invokeStartElement (pctxt, "alerting", -1);
+
+ pvalue->u.alerting = ALLOC_ASN1ELEM (pctxt, H225Alerting_UUIE);
+
+ stat = asn1PD_H225Alerting_UUIE (pctxt, pvalue->u.alerting);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alerting", -1);
+
+ break;
+
+ /* information */
+ case 4:
+ invokeStartElement (pctxt, "information", -1);
+
+ pvalue->u.information = ALLOC_ASN1ELEM (pctxt, H225Information_UUIE);
+
+ stat = asn1PD_H225Information_UUIE (pctxt, pvalue->u.information);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "information", -1);
+
+ break;
+
+ /* releaseComplete */
+ case 5:
+ invokeStartElement (pctxt, "releaseComplete", -1);
+
+ pvalue->u.releaseComplete = ALLOC_ASN1ELEM (pctxt, H225ReleaseComplete_UUIE);
+
+ stat = asn1PD_H225ReleaseComplete_UUIE (pctxt, pvalue->u.releaseComplete);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "releaseComplete", -1);
+
+ break;
+
+ /* facility */
+ case 6:
+ invokeStartElement (pctxt, "facility", -1);
+
+ pvalue->u.facility = ALLOC_ASN1ELEM (pctxt, H225Facility_UUIE);
+
+ stat = asn1PD_H225Facility_UUIE (pctxt, pvalue->u.facility);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "facility", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 8;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* progress */
+ case 8:
+ invokeStartElement (pctxt, "progress", -1);
+
+ pvalue->u.progress = ALLOC_ASN1ELEM (pctxt, H225Progress_UUIE);
+
+ stat = asn1PD_H225Progress_UUIE (pctxt, pvalue->u.progress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "progress", -1);
+
+ break;
+
+ /* empty */
+ case 9:
+ invokeStartElement (pctxt, "empty", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "empty", -1);
+
+ break;
+
+ /* status */
+ case 10:
+ invokeStartElement (pctxt, "status", -1);
+
+ pvalue->u.status = ALLOC_ASN1ELEM (pctxt, H225Status_UUIE);
+
+ stat = asn1PD_H225Status_UUIE (pctxt, pvalue->u.status);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "status", -1);
+
+ break;
+
+ /* statusInquiry */
+ case 11:
+ invokeStartElement (pctxt, "statusInquiry", -1);
+
+ pvalue->u.statusInquiry = ALLOC_ASN1ELEM (pctxt, H225StatusInquiry_UUIE);
+
+ stat = asn1PD_H225StatusInquiry_UUIE (pctxt, pvalue->u.statusInquiry);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "statusInquiry", -1);
+
+ break;
+
+ /* setupAcknowledge */
+ case 12:
+ invokeStartElement (pctxt, "setupAcknowledge", -1);
+
+ pvalue->u.setupAcknowledge = ALLOC_ASN1ELEM (pctxt, H225SetupAcknowledge_UUIE);
+
+ stat = asn1PD_H225SetupAcknowledge_UUIE (pctxt, pvalue->u.setupAcknowledge);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "setupAcknowledge", -1);
+
+ break;
+
+ /* notify */
+ case 13:
+ invokeStartElement (pctxt, "notify", -1);
+
+ pvalue->u.notify = ALLOC_ASN1ELEM (pctxt, H225Notify_UUIE);
+
+ stat = asn1PD_H225Notify_UUIE (pctxt, pvalue->u.notify);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "notify", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_h4501SupplementaryService */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H323_UU_PDU_h4501SupplementaryService (OOCTXT* pctxt, H225H323_UU_PDU_h4501SupplementaryService* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1DynOctStr);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_h245Control */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H323_UU_PDU_h245Control (OOCTXT* pctxt, H225H323_UU_PDU_h245Control* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1DynOctStr);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225NonStandardParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225NonStandardParameter (OOCTXT* pctxt, H225_SeqOfH225NonStandardParameter* pvalue)
+{
+ int stat = ASN_OK;
+ H225NonStandardParameter* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225NonStandardParameter);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallLinkage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallLinkage (OOCTXT* pctxt, H225CallLinkage* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.globalCallIdPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.threadIdPresent = optbit;
+
+ /* decode globalCallId */
+
+ if (pvalue->m.globalCallIdPresent) {
+ invokeStartElement (pctxt, "globalCallId", -1);
+
+ stat = asn1PD_H225GloballyUniqueID (pctxt, &pvalue->globalCallId);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "globalCallId", -1);
+ }
+
+ /* decode threadId */
+
+ if (pvalue->m.threadIdPresent) {
+ invokeStartElement (pctxt, "threadId", -1);
+
+ stat = asn1PD_H225GloballyUniqueID (pctxt, &pvalue->threadId);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "threadId", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_tunnelledSignallingMessage_messageContent */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H323_UU_PDU_tunnelledSignallingMessage_messageContent (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage_messageContent* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1DynOctStr);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_tunnelledSignallingMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H323_UU_PDU_tunnelledSignallingMessage (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tunnellingRequiredPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode tunnelledProtocolID */
+
+ invokeStartElement (pctxt, "tunnelledProtocolID", -1);
+
+ stat = asn1PD_H225TunnelledProtocol (pctxt, &pvalue->tunnelledProtocolID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tunnelledProtocolID", -1);
+
+ /* decode messageContent */
+
+ invokeStartElement (pctxt, "messageContent", -1);
+
+ stat = asn1PD_H225H323_UU_PDU_tunnelledSignallingMessage_messageContent (pctxt, &pvalue->messageContent);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "messageContent", -1);
+
+ /* decode tunnellingRequired */
+
+ if (pvalue->m.tunnellingRequiredPresent) {
+ invokeStartElement (pctxt, "tunnellingRequired", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "tunnellingRequired", -1);
+ }
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* StimulusControl */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225StimulusControl (OOCTXT* pctxt, H225StimulusControl* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.isTextPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h248MessagePresent = optbit;
+
+ /* decode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+ }
+
+ /* decode isText */
+
+ if (pvalue->m.isTextPresent) {
+ invokeStartElement (pctxt, "isText", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "isText", -1);
+ }
+
+ /* decode h248Message */
+
+ if (pvalue->m.h248MessagePresent) {
+ invokeStartElement (pctxt, "h248Message", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->h248Message);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->h248Message.numocts, pvalue->h248Message.data);
+
+ invokeEndElement (pctxt, "h248Message", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H323_UU_PDU (OOCTXT* pctxt, H225H323_UU_PDU* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode h323_message_body */
+
+ invokeStartElement (pctxt, "h323_message_body", -1);
+
+ stat = asn1PD_H225H323_UU_PDU_h323_message_body (pctxt, &pvalue->h323_message_body);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h323_message_body", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 9 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.h4501SupplementaryServicePresent = 1;
+
+ invokeStartElement (pctxt, "h4501SupplementaryService", -1);
+
+ stat = asn1PD_H225H323_UU_PDU_h4501SupplementaryService (pctxt, &pvalue->h4501SupplementaryService);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h4501SupplementaryService", -1);
+ break;
+
+ case 1:
+ pvalue->m.h245TunnelingPresent = 1;
+
+ invokeStartElement (pctxt, "h245Tunneling", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->h245Tunneling);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->h245Tunneling);
+
+ invokeEndElement (pctxt, "h245Tunneling", -1);
+ break;
+
+ case 2:
+ pvalue->m.h245ControlPresent = 1;
+
+ invokeStartElement (pctxt, "h245Control", -1);
+
+ stat = asn1PD_H225H323_UU_PDU_h245Control (pctxt, &pvalue->h245Control);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h245Control", -1);
+ break;
+
+ case 3:
+ pvalue->m.nonStandardControlPresent = 1;
+
+ invokeStartElement (pctxt, "nonStandardControl", -1);
+
+ stat = asn1PD_H225_SeqOfH225NonStandardParameter (pctxt, &pvalue->nonStandardControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardControl", -1);
+ break;
+
+ case 4:
+ pvalue->m.callLinkagePresent = 1;
+
+ invokeStartElement (pctxt, "callLinkage", -1);
+
+ stat = asn1PD_H225CallLinkage (pctxt, &pvalue->callLinkage);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callLinkage", -1);
+ break;
+
+ case 5:
+ pvalue->m.tunnelledSignallingMessagePresent = 1;
+
+ invokeStartElement (pctxt, "tunnelledSignallingMessage", -1);
+
+ stat = asn1PD_H225H323_UU_PDU_tunnelledSignallingMessage (pctxt, &pvalue->tunnelledSignallingMessage);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tunnelledSignallingMessage", -1);
+ break;
+
+ case 6:
+ pvalue->m.provisionalRespToH245TunnelingPresent = 1;
+
+ invokeStartElement (pctxt, "provisionalRespToH245Tunneling", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "provisionalRespToH245Tunneling", -1);
+ break;
+
+ case 7:
+ pvalue->m.stimulusControlPresent = 1;
+
+ invokeStartElement (pctxt, "stimulusControl", -1);
+
+ stat = asn1PD_H225StimulusControl (pctxt, &pvalue->stimulusControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "stimulusControl", -1);
+ break;
+
+ case 8:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UserInformation_user_data */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H323_UserInformation_user_data (OOCTXT* pctxt, H225H323_UserInformation_user_data* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode protocol_discriminator */
+
+ invokeStartElement (pctxt, "protocol_discriminator", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->protocol_discriminator, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->protocol_discriminator);
+
+ invokeEndElement (pctxt, "protocol_discriminator", -1);
+
+ /* decode user_information */
+
+ invokeStartElement (pctxt, "user_information", -1);
+
+ stat = asn1PD_H225H323_UserInformation_user_data_user_information (pctxt, &pvalue->user_information);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "user_information", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UserInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H323_UserInformation (OOCTXT* pctxt, H225H323_UserInformation* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.user_dataPresent = optbit;
+
+ /* decode h323_uu_pdu */
+
+ invokeStartElement (pctxt, "h323_uu_pdu", -1);
+
+ stat = asn1PD_H225H323_UU_PDU (pctxt, &pvalue->h323_uu_pdu);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h323_uu_pdu", -1);
+
+ /* decode user_data */
+
+ if (pvalue->m.user_dataPresent) {
+ invokeStartElement (pctxt, "user_data", -1);
+
+ stat = asn1PD_H225H323_UserInformation_user_data (pctxt, &pvalue->user_data);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "user_data", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AddressPattern_range */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225AddressPattern_range (OOCTXT* pctxt, H225AddressPattern_range* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode startOfRange */
+
+ invokeStartElement (pctxt, "startOfRange", -1);
+
+ stat = asn1PD_H225PartyNumber (pctxt, &pvalue->startOfRange);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "startOfRange", -1);
+
+ /* decode endOfRange */
+
+ invokeStartElement (pctxt, "endOfRange", -1);
+
+ stat = asn1PD_H225PartyNumber (pctxt, &pvalue->endOfRange);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endOfRange", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AddressPattern */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225AddressPattern (OOCTXT* pctxt, H225AddressPattern* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* wildcard */
+ case 0:
+ invokeStartElement (pctxt, "wildcard", -1);
+
+ pvalue->u.wildcard = ALLOC_ASN1ELEM (pctxt, H225AliasAddress);
+
+ stat = asn1PD_H225AliasAddress (pctxt, pvalue->u.wildcard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "wildcard", -1);
+
+ break;
+
+ /* range */
+ case 1:
+ invokeStartElement (pctxt, "range", -1);
+
+ pvalue->u.range = ALLOC_ASN1ELEM (pctxt, H225AddressPattern_range);
+
+ stat = asn1PD_H225AddressPattern_range (pctxt, pvalue->u.range);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "range", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TransportAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225TransportAddress (OOCTXT* pctxt, H225_SeqOfH225TransportAddress* pvalue)
+{
+ int stat = ASN_OK;
+ H225TransportAddress* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225TransportAddress);
+
+ stat = asn1PD_H225TransportAddress (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AlternateTransportAddresses */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225AlternateTransportAddresses (OOCTXT* pctxt, H225AlternateTransportAddresses* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.annexEPresent = optbit;
+
+ /* decode annexE */
+
+ if (pvalue->m.annexEPresent) {
+ invokeStartElement (pctxt, "annexE", -1);
+
+ stat = asn1PD_H225_SeqOfH225TransportAddress (pctxt, &pvalue->annexE);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "annexE", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.sctpPresent = 1;
+
+ invokeStartElement (pctxt, "sctp", -1);
+
+ stat = asn1PD_H225_SeqOfH225TransportAddress (pctxt, &pvalue->sctp);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sctp", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Endpoint */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Endpoint (OOCTXT* pctxt, H225Endpoint* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.aliasAddressPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.callSignalAddressPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.rasAddressPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.endpointTypePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cryptoTokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.priorityPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.remoteExtensionAddressPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.destExtraCallInfoPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode aliasAddress */
+
+ if (pvalue->m.aliasAddressPresent) {
+ invokeStartElement (pctxt, "aliasAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->aliasAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "aliasAddress", -1);
+ }
+
+ /* decode callSignalAddress */
+
+ if (pvalue->m.callSignalAddressPresent) {
+ invokeStartElement (pctxt, "callSignalAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callSignalAddress", -1);
+ }
+
+ /* decode rasAddress */
+
+ if (pvalue->m.rasAddressPresent) {
+ invokeStartElement (pctxt, "rasAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225TransportAddress (pctxt, &pvalue->rasAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rasAddress", -1);
+ }
+
+ /* decode endpointType */
+
+ if (pvalue->m.endpointTypePresent) {
+ invokeStartElement (pctxt, "endpointType", -1);
+
+ stat = asn1PD_H225EndpointType (pctxt, &pvalue->endpointType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointType", -1);
+ }
+
+ /* decode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ }
+
+ /* decode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ }
+
+ /* decode priority */
+
+ if (pvalue->m.priorityPresent) {
+ invokeStartElement (pctxt, "priority", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->priority, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->priority);
+
+ invokeEndElement (pctxt, "priority", -1);
+ }
+
+ /* decode remoteExtensionAddress */
+
+ if (pvalue->m.remoteExtensionAddressPresent) {
+ invokeStartElement (pctxt, "remoteExtensionAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->remoteExtensionAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "remoteExtensionAddress", -1);
+ }
+
+ /* decode destExtraCallInfo */
+
+ if (pvalue->m.destExtraCallInfoPresent) {
+ invokeStartElement (pctxt, "destExtraCallInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destExtraCallInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destExtraCallInfo", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 3 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.alternateTransportAddressesPresent = 1;
+
+ invokeStartElement (pctxt, "alternateTransportAddresses", -1);
+
+ stat = asn1PD_H225AlternateTransportAddresses (pctxt, &pvalue->alternateTransportAddresses);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternateTransportAddresses", -1);
+ break;
+
+ case 1:
+ pvalue->m.circuitInfoPresent = 1;
+
+ invokeStartElement (pctxt, "circuitInfo", -1);
+
+ stat = asn1PD_H225CircuitInfo (pctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "circuitInfo", -1);
+ break;
+
+ case 2:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UseSpecifiedTransport */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225UseSpecifiedTransport (OOCTXT* pctxt, H225UseSpecifiedTransport* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* tcp */
+ case 0:
+ invokeStartElement (pctxt, "tcp", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "tcp", -1);
+
+ break;
+
+ /* annexE */
+ case 1:
+ invokeStartElement (pctxt, "annexE", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "annexE", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* sctp */
+ case 3:
+ invokeStartElement (pctxt, "sctp", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "sctp", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AlternateGK */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225AlternateGK (OOCTXT* pctxt, H225AlternateGK* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.gatekeeperIdentifierPresent = optbit;
+
+ /* decode rasAddress */
+
+ invokeStartElement (pctxt, "rasAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->rasAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rasAddress", -1);
+
+ /* decode gatekeeperIdentifier */
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ invokeStartElement (pctxt, "gatekeeperIdentifier", -1);
+
+ stat = asn1PD_H225GatekeeperIdentifier (pctxt, &pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperIdentifier", -1);
+ }
+
+ /* decode needToRegister */
+
+ invokeStartElement (pctxt, "needToRegister", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->needToRegister);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->needToRegister);
+
+ invokeEndElement (pctxt, "needToRegister", -1);
+
+ /* decode priority */
+
+ invokeStartElement (pctxt, "priority", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->priority, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->priority);
+
+ invokeEndElement (pctxt, "priority", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AlternateGK */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225AlternateGK (OOCTXT* pctxt, H225_SeqOfH225AlternateGK* pvalue)
+{
+ int stat = ASN_OK;
+ H225AlternateGK* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225AlternateGK);
+
+ stat = asn1PD_H225AlternateGK (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AltGKInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225AltGKInfo (OOCTXT* pctxt, H225AltGKInfo* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode alternateGatekeeper */
+
+ invokeStartElement (pctxt, "alternateGatekeeper", -1);
+
+ stat = asn1PD_H225_SeqOfH225AlternateGK (pctxt, &pvalue->alternateGatekeeper);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternateGatekeeper", -1);
+
+ /* decode altGKisPermanent */
+
+ invokeStartElement (pctxt, "altGKisPermanent", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->altGKisPermanent);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->altGKisPermanent);
+
+ invokeEndElement (pctxt, "altGKisPermanent", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SecurityErrors2 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225SecurityErrors2 (OOCTXT* pctxt, H225SecurityErrors2* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 5);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* securityWrongSyncTime */
+ case 0:
+ invokeStartElement (pctxt, "securityWrongSyncTime", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityWrongSyncTime", -1);
+
+ break;
+
+ /* securityReplay */
+ case 1:
+ invokeStartElement (pctxt, "securityReplay", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityReplay", -1);
+
+ break;
+
+ /* securityWrongGeneralID */
+ case 2:
+ invokeStartElement (pctxt, "securityWrongGeneralID", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityWrongGeneralID", -1);
+
+ break;
+
+ /* securityWrongSendersID */
+ case 3:
+ invokeStartElement (pctxt, "securityWrongSendersID", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityWrongSendersID", -1);
+
+ break;
+
+ /* securityIntegrityFailed */
+ case 4:
+ invokeStartElement (pctxt, "securityIntegrityFailed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityIntegrityFailed", -1);
+
+ break;
+
+ /* securityWrongOID */
+ case 5:
+ invokeStartElement (pctxt, "securityWrongOID", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityWrongOID", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 7;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptIntAlg */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225EncryptIntAlg (OOCTXT* pctxt, H225EncryptIntAlg* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* isoAlgorithm */
+ case 1:
+ invokeStartElement (pctxt, "isoAlgorithm", -1);
+
+ pvalue->u.isoAlgorithm = ALLOC_ASN1ELEM (pctxt, ASN1OBJID);
+
+ stat = decodeObjectIdentifier (pctxt, pvalue->u.isoAlgorithm);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->u.isoAlgorithm->numids, pvalue->u.isoAlgorithm->subid);
+
+ invokeEndElement (pctxt, "isoAlgorithm", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonIsoIntegrityMechanism */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225NonIsoIntegrityMechanism (OOCTXT* pctxt, H225NonIsoIntegrityMechanism* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* hMAC_MD5 */
+ case 0:
+ invokeStartElement (pctxt, "hMAC_MD5", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "hMAC_MD5", -1);
+
+ break;
+
+ /* hMAC_iso10118_2_s */
+ case 1:
+ invokeStartElement (pctxt, "hMAC_iso10118_2_s", -1);
+
+ pvalue->u.hMAC_iso10118_2_s = ALLOC_ASN1ELEM (pctxt, H225EncryptIntAlg);
+
+ stat = asn1PD_H225EncryptIntAlg (pctxt, pvalue->u.hMAC_iso10118_2_s);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "hMAC_iso10118_2_s", -1);
+
+ break;
+
+ /* hMAC_iso10118_2_l */
+ case 2:
+ invokeStartElement (pctxt, "hMAC_iso10118_2_l", -1);
+
+ pvalue->u.hMAC_iso10118_2_l = ALLOC_ASN1ELEM (pctxt, H225EncryptIntAlg);
+
+ stat = asn1PD_H225EncryptIntAlg (pctxt, pvalue->u.hMAC_iso10118_2_l);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "hMAC_iso10118_2_l", -1);
+
+ break;
+
+ /* hMAC_iso10118_3 */
+ case 3:
+ invokeStartElement (pctxt, "hMAC_iso10118_3", -1);
+
+ pvalue->u.hMAC_iso10118_3 = ALLOC_ASN1ELEM (pctxt, ASN1OBJID);
+
+ stat = decodeObjectIdentifier (pctxt, pvalue->u.hMAC_iso10118_3);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->u.hMAC_iso10118_3->numids, pvalue->u.hMAC_iso10118_3->subid);
+
+ invokeEndElement (pctxt, "hMAC_iso10118_3", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IntegrityMechanism */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225IntegrityMechanism (OOCTXT* pctxt, H225IntegrityMechanism* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* digSig */
+ case 1:
+ invokeStartElement (pctxt, "digSig", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "digSig", -1);
+
+ break;
+
+ /* iso9797 */
+ case 2:
+ invokeStartElement (pctxt, "iso9797", -1);
+
+ pvalue->u.iso9797 = ALLOC_ASN1ELEM (pctxt, ASN1OBJID);
+
+ stat = decodeObjectIdentifier (pctxt, pvalue->u.iso9797);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->u.iso9797->numids, pvalue->u.iso9797->subid);
+
+ invokeEndElement (pctxt, "iso9797", -1);
+
+ break;
+
+ /* nonIsoIM */
+ case 3:
+ invokeStartElement (pctxt, "nonIsoIM", -1);
+
+ pvalue->u.nonIsoIM = ALLOC_ASN1ELEM (pctxt, H225NonIsoIntegrityMechanism);
+
+ stat = asn1PD_H225NonIsoIntegrityMechanism (pctxt, pvalue->u.nonIsoIM);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonIsoIM", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ICV */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ICV (OOCTXT* pctxt, H225ICV* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode algorithmOID */
+
+ invokeStartElement (pctxt, "algorithmOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid);
+
+ invokeEndElement (pctxt, "algorithmOID", -1);
+
+ /* decode icv */
+
+ invokeStartElement (pctxt, "icv", -1);
+
+ stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->icv);
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->icv.numbits, pvalue->icv.data);
+
+ invokeEndElement (pctxt, "icv", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapacityReportingCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CapacityReportingCapability (OOCTXT* pctxt, H225CapacityReportingCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode canReportCallCapacity */
+
+ invokeStartElement (pctxt, "canReportCallCapacity", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->canReportCallCapacity);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->canReportCallCapacity);
+
+ invokeEndElement (pctxt, "canReportCallCapacity", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapacityReportingSpecification_when */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CapacityReportingSpecification_when (OOCTXT* pctxt, H225CapacityReportingSpecification_when* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.callStartPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.callEndPresent = optbit;
+
+ /* decode callStart */
+
+ if (pvalue->m.callStartPresent) {
+ invokeStartElement (pctxt, "callStart", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "callStart", -1);
+ }
+
+ /* decode callEnd */
+
+ if (pvalue->m.callEndPresent) {
+ invokeStartElement (pctxt, "callEnd", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "callEnd", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapacityReportingSpecification */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CapacityReportingSpecification (OOCTXT* pctxt, H225CapacityReportingSpecification* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode when */
+
+ invokeStartElement (pctxt, "when", -1);
+
+ stat = asn1PD_H225CapacityReportingSpecification_when (pctxt, &pvalue->when);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "when", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RasUsageInfoTypes */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RasUsageInfoTypes (OOCTXT* pctxt, H225RasUsageInfoTypes* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.startTimePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.endTimePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.terminationCausePresent = optbit;
+
+ /* decode nonStandardUsageTypes */
+
+ invokeStartElement (pctxt, "nonStandardUsageTypes", -1);
+
+ stat = asn1PD_H225_SeqOfH225NonStandardParameter (pctxt, &pvalue->nonStandardUsageTypes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardUsageTypes", -1);
+
+ /* decode startTime */
+
+ if (pvalue->m.startTimePresent) {
+ invokeStartElement (pctxt, "startTime", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "startTime", -1);
+ }
+
+ /* decode endTime */
+
+ if (pvalue->m.endTimePresent) {
+ invokeStartElement (pctxt, "endTime", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "endTime", -1);
+ }
+
+ /* decode terminationCause */
+
+ if (pvalue->m.terminationCausePresent) {
+ invokeStartElement (pctxt, "terminationCause", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "terminationCause", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RasUsageSpecification_when */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RasUsageSpecification_when (OOCTXT* pctxt, H225RasUsageSpecification_when* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.startPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.endPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.inIrrPresent = optbit;
+
+ /* decode start */
+
+ if (pvalue->m.startPresent) {
+ invokeStartElement (pctxt, "start", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "start", -1);
+ }
+
+ /* decode end */
+
+ if (pvalue->m.endPresent) {
+ invokeStartElement (pctxt, "end", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "end", -1);
+ }
+
+ /* decode inIrr */
+
+ if (pvalue->m.inIrrPresent) {
+ invokeStartElement (pctxt, "inIrr", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "inIrr", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RasUsageSpecification_callStartingPoint */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RasUsageSpecification_callStartingPoint (OOCTXT* pctxt, H225RasUsageSpecification_callStartingPoint* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.alertingPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.connectPresent = optbit;
+
+ /* decode alerting */
+
+ if (pvalue->m.alertingPresent) {
+ invokeStartElement (pctxt, "alerting", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "alerting", -1);
+ }
+
+ /* decode connect */
+
+ if (pvalue->m.connectPresent) {
+ invokeStartElement (pctxt, "connect", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "connect", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RasUsageSpecification */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RasUsageSpecification (OOCTXT* pctxt, H225RasUsageSpecification* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.callStartingPointPresent = optbit;
+
+ /* decode when */
+
+ invokeStartElement (pctxt, "when", -1);
+
+ stat = asn1PD_H225RasUsageSpecification_when (pctxt, &pvalue->when);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "when", -1);
+
+ /* decode callStartingPoint */
+
+ if (pvalue->m.callStartingPointPresent) {
+ invokeStartElement (pctxt, "callStartingPoint", -1);
+
+ stat = asn1PD_H225RasUsageSpecification_callStartingPoint (pctxt, &pvalue->callStartingPoint);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callStartingPoint", -1);
+ }
+
+ /* decode required */
+
+ invokeStartElement (pctxt, "required", -1);
+
+ stat = asn1PD_H225RasUsageInfoTypes (pctxt, &pvalue->required);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "required", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RasUsageInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RasUsageInformation (OOCTXT* pctxt, H225RasUsageInformation* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.alertingTimePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.connectTimePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.endTimePresent = optbit;
+
+ /* decode nonStandardUsageFields */
+
+ invokeStartElement (pctxt, "nonStandardUsageFields", -1);
+
+ stat = asn1PD_H225_SeqOfH225NonStandardParameter (pctxt, &pvalue->nonStandardUsageFields);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardUsageFields", -1);
+
+ /* decode alertingTime */
+
+ if (pvalue->m.alertingTimePresent) {
+ invokeStartElement (pctxt, "alertingTime", -1);
+
+ stat = asn1PD_H235TimeStamp (pctxt, &pvalue->alertingTime);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alertingTime", -1);
+ }
+
+ /* decode connectTime */
+
+ if (pvalue->m.connectTimePresent) {
+ invokeStartElement (pctxt, "connectTime", -1);
+
+ stat = asn1PD_H235TimeStamp (pctxt, &pvalue->connectTime);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "connectTime", -1);
+ }
+
+ /* decode endTime */
+
+ if (pvalue->m.endTimePresent) {
+ invokeStartElement (pctxt, "endTime", -1);
+
+ stat = asn1PD_H235TimeStamp (pctxt, &pvalue->endTime);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endTime", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallTerminationCause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallTerminationCause (OOCTXT* pctxt, H225CallTerminationCause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* releaseCompleteReason */
+ case 0:
+ invokeStartElement (pctxt, "releaseCompleteReason", -1);
+
+ pvalue->u.releaseCompleteReason = ALLOC_ASN1ELEM (pctxt, H225ReleaseCompleteReason);
+
+ stat = asn1PD_H225ReleaseCompleteReason (pctxt, pvalue->u.releaseCompleteReason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "releaseCompleteReason", -1);
+
+ break;
+
+ /* releaseCompleteCauseIE */
+ case 1:
+ invokeStartElement (pctxt, "releaseCompleteCauseIE", -1);
+
+ pvalue->u.releaseCompleteCauseIE = ALLOC_ASN1ELEM (pctxt, H225CallTerminationCause_releaseCompleteCauseIE);
+
+ stat = asn1PD_H225CallTerminationCause_releaseCompleteCauseIE (pctxt, pvalue->u.releaseCompleteCauseIE);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "releaseCompleteCauseIE", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportChannelInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportChannelInfo (OOCTXT* pctxt, H225TransportChannelInfo* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.sendAddressPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.recvAddressPresent = optbit;
+
+ /* decode sendAddress */
+
+ if (pvalue->m.sendAddressPresent) {
+ invokeStartElement (pctxt, "sendAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->sendAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sendAddress", -1);
+ }
+
+ /* decode recvAddress */
+
+ if (pvalue->m.recvAddressPresent) {
+ invokeStartElement (pctxt, "recvAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->recvAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "recvAddress", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BandwidthDetails */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225BandwidthDetails (OOCTXT* pctxt, H225BandwidthDetails* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sender */
+
+ invokeStartElement (pctxt, "sender", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->sender);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->sender);
+
+ invokeEndElement (pctxt, "sender", -1);
+
+ /* decode multicast */
+
+ invokeStartElement (pctxt, "multicast", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multicast);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multicast);
+
+ invokeEndElement (pctxt, "multicast", -1);
+
+ /* decode bandwidth */
+
+ invokeStartElement (pctxt, "bandwidth", -1);
+
+ stat = asn1PD_H225BandWidth (pctxt, &pvalue->bandwidth);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "bandwidth", -1);
+
+ /* decode rtcpAddresses */
+
+ invokeStartElement (pctxt, "rtcpAddresses", -1);
+
+ stat = asn1PD_H225TransportChannelInfo (pctxt, &pvalue->rtcpAddresses);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rtcpAddresses", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallCreditCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallCreditCapability (OOCTXT* pctxt, H225CallCreditCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.canDisplayAmountStringPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.canEnforceDurationLimitPresent = optbit;
+
+ /* decode canDisplayAmountString */
+
+ if (pvalue->m.canDisplayAmountStringPresent) {
+ invokeStartElement (pctxt, "canDisplayAmountString", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->canDisplayAmountString);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->canDisplayAmountString);
+
+ invokeEndElement (pctxt, "canDisplayAmountString", -1);
+ }
+
+ /* decode canEnforceDurationLimit */
+
+ if (pvalue->m.canEnforceDurationLimitPresent) {
+ invokeStartElement (pctxt, "canEnforceDurationLimit", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->canEnforceDurationLimit);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->canEnforceDurationLimit);
+
+ invokeEndElement (pctxt, "canEnforceDurationLimit", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPSession_associatedSessionIds */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RTPSession_associatedSessionIds (OOCTXT* pctxt, H225RTPSession_associatedSessionIds* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1UINT8);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->elem[xx1], 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->elem[xx1]);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPSession */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RTPSession (OOCTXT* pctxt, H225RTPSession* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode rtpAddress */
+
+ invokeStartElement (pctxt, "rtpAddress", -1);
+
+ stat = asn1PD_H225TransportChannelInfo (pctxt, &pvalue->rtpAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rtpAddress", -1);
+
+ /* decode rtcpAddress */
+
+ invokeStartElement (pctxt, "rtcpAddress", -1);
+
+ stat = asn1PD_H225TransportChannelInfo (pctxt, &pvalue->rtcpAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rtcpAddress", -1);
+
+ /* decode cname */
+
+ invokeStartElement (pctxt, "cname", -1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->cname, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->cname);
+
+ invokeEndElement (pctxt, "cname", -1);
+
+ /* decode ssrc */
+
+ invokeStartElement (pctxt, "ssrc", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->ssrc, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->ssrc);
+
+ invokeEndElement (pctxt, "ssrc", -1);
+
+ /* decode sessionId */
+
+ invokeStartElement (pctxt, "sessionId", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->sessionId, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sessionId);
+
+ invokeEndElement (pctxt, "sessionId", -1);
+
+ /* decode associatedSessionIds */
+
+ invokeStartElement (pctxt, "associatedSessionIds", -1);
+
+ stat = asn1PD_H225RTPSession_associatedSessionIds (pctxt, &pvalue->associatedSessionIds);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "associatedSessionIds", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.multicastPresent = 1;
+
+ invokeStartElement (pctxt, "multicast", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "multicast", -1);
+ break;
+
+ case 1:
+ pvalue->m.bandwidthPresent = 1;
+
+ invokeStartElement (pctxt, "bandwidth", -1);
+
+ stat = asn1PD_H225BandWidth (pctxt, &pvalue->bandwidth);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "bandwidth", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225Endpoint */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225Endpoint (OOCTXT* pctxt, H225_SeqOfH225Endpoint* pvalue)
+{
+ int stat = ASN_OK;
+ H225Endpoint* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225Endpoint);
+
+ stat = asn1PD_H225Endpoint (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AuthenticationMechanism */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225AuthenticationMechanism (OOCTXT* pctxt, H225_SeqOfH225AuthenticationMechanism* pvalue)
+{
+ int stat = ASN_OK;
+ H235AuthenticationMechanism* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H235AuthenticationMechanism);
+
+ stat = asn1PD_H235AuthenticationMechanism (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperRequest_algorithmOIDs */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GatekeeperRequest_algorithmOIDs (OOCTXT* pctxt, H225GatekeeperRequest_algorithmOIDs* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1OBJID);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->elem[xx1].numids, pvalue->elem[xx1].subid);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225IntegrityMechanism */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225IntegrityMechanism (OOCTXT* pctxt, H225_SeqOfH225IntegrityMechanism* pvalue)
+{
+ int stat = ASN_OK;
+ H225IntegrityMechanism* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225IntegrityMechanism);
+
+ stat = asn1PD_H225IntegrityMechanism (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GatekeeperRequest (OOCTXT* pctxt, H225GatekeeperRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.gatekeeperIdentifierPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.callServicesPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.endpointAliasPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode rasAddress */
+
+ invokeStartElement (pctxt, "rasAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->rasAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rasAddress", -1);
+
+ /* decode endpointType */
+
+ invokeStartElement (pctxt, "endpointType", -1);
+
+ stat = asn1PD_H225EndpointType (pctxt, &pvalue->endpointType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointType", -1);
+
+ /* decode gatekeeperIdentifier */
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ invokeStartElement (pctxt, "gatekeeperIdentifier", -1);
+
+ stat = asn1PD_H225GatekeeperIdentifier (pctxt, &pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperIdentifier", -1);
+ }
+
+ /* decode callServices */
+
+ if (pvalue->m.callServicesPresent) {
+ invokeStartElement (pctxt, "callServices", -1);
+
+ stat = asn1PD_H225QseriesOptions (pctxt, &pvalue->callServices);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callServices", -1);
+ }
+
+ /* decode endpointAlias */
+
+ if (pvalue->m.endpointAliasPresent) {
+ invokeStartElement (pctxt, "endpointAlias", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->endpointAlias);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointAlias", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 10 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.alternateEndpointsPresent = 1;
+
+ invokeStartElement (pctxt, "alternateEndpoints", -1);
+
+ stat = asn1PD_H225_SeqOfH225Endpoint (pctxt, &pvalue->alternateEndpoints);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternateEndpoints", -1);
+ break;
+
+ case 1:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.authenticationCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "authenticationCapability", -1);
+
+ stat = asn1PD_H225_SeqOfH225AuthenticationMechanism (pctxt, &pvalue->authenticationCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "authenticationCapability", -1);
+ break;
+
+ case 4:
+ pvalue->m.algorithmOIDsPresent = 1;
+
+ invokeStartElement (pctxt, "algorithmOIDs", -1);
+
+ stat = asn1PD_H225GatekeeperRequest_algorithmOIDs (pctxt, &pvalue->algorithmOIDs);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "algorithmOIDs", -1);
+ break;
+
+ case 5:
+ pvalue->m.integrityPresent = 1;
+
+ invokeStartElement (pctxt, "integrity", -1);
+
+ stat = asn1PD_H225_SeqOfH225IntegrityMechanism (pctxt, &pvalue->integrity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrity", -1);
+ break;
+
+ case 6:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 7:
+ pvalue->m.supportsAltGKPresent = 1;
+
+ invokeStartElement (pctxt, "supportsAltGK", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "supportsAltGK", -1);
+ break;
+
+ case 8:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ case 9:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GatekeeperConfirm (OOCTXT* pctxt, H225GatekeeperConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.gatekeeperIdentifierPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode gatekeeperIdentifier */
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ invokeStartElement (pctxt, "gatekeeperIdentifier", -1);
+
+ stat = asn1PD_H225GatekeeperIdentifier (pctxt, &pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperIdentifier", -1);
+ }
+
+ /* decode rasAddress */
+
+ invokeStartElement (pctxt, "rasAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->rasAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rasAddress", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 9 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.alternateGatekeeperPresent = 1;
+
+ invokeStartElement (pctxt, "alternateGatekeeper", -1);
+
+ stat = asn1PD_H225_SeqOfH225AlternateGK (pctxt, &pvalue->alternateGatekeeper);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternateGatekeeper", -1);
+ break;
+
+ case 1:
+ pvalue->m.authenticationModePresent = 1;
+
+ invokeStartElement (pctxt, "authenticationMode", -1);
+
+ stat = asn1PD_H235AuthenticationMechanism (pctxt, &pvalue->authenticationMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "authenticationMode", -1);
+ break;
+
+ case 2:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 4:
+ pvalue->m.algorithmOIDPresent = 1;
+
+ invokeStartElement (pctxt, "algorithmOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid);
+
+ invokeEndElement (pctxt, "algorithmOID", -1);
+ break;
+
+ case 5:
+ pvalue->m.integrityPresent = 1;
+
+ invokeStartElement (pctxt, "integrity", -1);
+
+ stat = asn1PD_H225_SeqOfH225IntegrityMechanism (pctxt, &pvalue->integrity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrity", -1);
+ break;
+
+ case 6:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 7:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ case 8:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GatekeeperRejectReason (OOCTXT* pctxt, H225GatekeeperRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* resourceUnavailable */
+ case 0:
+ invokeStartElement (pctxt, "resourceUnavailable", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "resourceUnavailable", -1);
+
+ break;
+
+ /* terminalExcluded */
+ case 1:
+ invokeStartElement (pctxt, "terminalExcluded", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "terminalExcluded", -1);
+
+ break;
+
+ /* invalidRevision */
+ case 2:
+ invokeStartElement (pctxt, "invalidRevision", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidRevision", -1);
+
+ break;
+
+ /* undefinedReason */
+ case 3:
+ invokeStartElement (pctxt, "undefinedReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "undefinedReason", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* securityDenial */
+ case 5:
+ invokeStartElement (pctxt, "securityDenial", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityDenial", -1);
+
+ break;
+
+ /* genericDataReason */
+ case 6:
+ invokeStartElement (pctxt, "genericDataReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "genericDataReason", -1);
+
+ break;
+
+ /* neededFeatureNotSupported */
+ case 7:
+ invokeStartElement (pctxt, "neededFeatureNotSupported", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "neededFeatureNotSupported", -1);
+
+ break;
+
+ /* securityError */
+ case 8:
+ invokeStartElement (pctxt, "securityError", -1);
+
+ pvalue->u.securityError = ALLOC_ASN1ELEM (pctxt, H225SecurityErrors);
+
+ stat = asn1PD_H225SecurityErrors (pctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "securityError", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GatekeeperReject (OOCTXT* pctxt, H225GatekeeperReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.gatekeeperIdentifierPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode gatekeeperIdentifier */
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ invokeStartElement (pctxt, "gatekeeperIdentifier", -1);
+
+ stat = asn1PD_H225GatekeeperIdentifier (pctxt, &pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperIdentifier", -1);
+ }
+
+ /* decode rejectReason */
+
+ invokeStartElement (pctxt, "rejectReason", -1);
+
+ stat = asn1PD_H225GatekeeperRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rejectReason", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 6 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.altGKInfoPresent = 1;
+
+ invokeStartElement (pctxt, "altGKInfo", -1);
+
+ stat = asn1PD_H225AltGKInfo (pctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "altGKInfo", -1);
+ break;
+
+ case 1:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 4:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ case 5:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AddressPattern */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225AddressPattern (OOCTXT* pctxt, H225_SeqOfH225AddressPattern* pvalue)
+{
+ int stat = ASN_OK;
+ H225AddressPattern* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225AddressPattern);
+
+ stat = asn1PD_H225AddressPattern (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225H248PackagesDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225H248PackagesDescriptor (OOCTXT* pctxt, H225_SeqOfH225H248PackagesDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, H225H248PackagesDescriptor);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H225H248PackagesDescriptor (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RegistrationRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RegistrationRequest (OOCTXT* pctxt, H225RegistrationRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.terminalAliasPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.gatekeeperIdentifierPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode discoveryComplete */
+
+ invokeStartElement (pctxt, "discoveryComplete", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->discoveryComplete);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->discoveryComplete);
+
+ invokeEndElement (pctxt, "discoveryComplete", -1);
+
+ /* decode callSignalAddress */
+
+ invokeStartElement (pctxt, "callSignalAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callSignalAddress", -1);
+
+ /* decode rasAddress */
+
+ invokeStartElement (pctxt, "rasAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225TransportAddress (pctxt, &pvalue->rasAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rasAddress", -1);
+
+ /* decode terminalType */
+
+ invokeStartElement (pctxt, "terminalType", -1);
+
+ stat = asn1PD_H225EndpointType (pctxt, &pvalue->terminalType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalType", -1);
+
+ /* decode terminalAlias */
+
+ if (pvalue->m.terminalAliasPresent) {
+ invokeStartElement (pctxt, "terminalAlias", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->terminalAlias);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalAlias", -1);
+ }
+
+ /* decode gatekeeperIdentifier */
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ invokeStartElement (pctxt, "gatekeeperIdentifier", -1);
+
+ stat = asn1PD_H225GatekeeperIdentifier (pctxt, &pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperIdentifier", -1);
+ }
+
+ /* decode endpointVendor */
+
+ invokeStartElement (pctxt, "endpointVendor", -1);
+
+ stat = asn1PD_H225VendorIdentifier (pctxt, &pvalue->endpointVendor);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointVendor", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 23 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.alternateEndpointsPresent = 1;
+
+ invokeStartElement (pctxt, "alternateEndpoints", -1);
+
+ stat = asn1PD_H225_SeqOfH225Endpoint (pctxt, &pvalue->alternateEndpoints);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternateEndpoints", -1);
+ break;
+
+ case 1:
+ pvalue->m.timeToLivePresent = 1;
+
+ invokeStartElement (pctxt, "timeToLive", -1);
+
+ stat = asn1PD_H225TimeToLive (pctxt, &pvalue->timeToLive);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "timeToLive", -1);
+ break;
+
+ case 2:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 4:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 5:
+ pvalue->m.keepAlivePresent = 1;
+
+ invokeStartElement (pctxt, "keepAlive", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->keepAlive);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->keepAlive);
+
+ invokeEndElement (pctxt, "keepAlive", -1);
+ break;
+
+ case 6:
+ pvalue->m.endpointIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "endpointIdentifier", -1);
+
+ stat = asn1PD_H225EndpointIdentifier (pctxt, &pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointIdentifier", -1);
+ break;
+
+ case 7:
+ pvalue->m.willSupplyUUIEsPresent = 1;
+
+ invokeStartElement (pctxt, "willSupplyUUIEs", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->willSupplyUUIEs);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->willSupplyUUIEs);
+
+ invokeEndElement (pctxt, "willSupplyUUIEs", -1);
+ break;
+
+ case 8:
+ pvalue->m.maintainConnectionPresent = 1;
+
+ invokeStartElement (pctxt, "maintainConnection", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->maintainConnection);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->maintainConnection);
+
+ invokeEndElement (pctxt, "maintainConnection", -1);
+ break;
+
+ case 9:
+ pvalue->m.alternateTransportAddressesPresent = 1;
+
+ invokeStartElement (pctxt, "alternateTransportAddresses", -1);
+
+ stat = asn1PD_H225AlternateTransportAddresses (pctxt, &pvalue->alternateTransportAddresses);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternateTransportAddresses", -1);
+ break;
+
+ case 10:
+ pvalue->m.additiveRegistrationPresent = 1;
+
+ invokeStartElement (pctxt, "additiveRegistration", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "additiveRegistration", -1);
+ break;
+
+ case 11:
+ pvalue->m.terminalAliasPatternPresent = 1;
+
+ invokeStartElement (pctxt, "terminalAliasPattern", -1);
+
+ stat = asn1PD_H225_SeqOfH225AddressPattern (pctxt, &pvalue->terminalAliasPattern);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalAliasPattern", -1);
+ break;
+
+ case 12:
+ pvalue->m.supportsAltGKPresent = 1;
+
+ invokeStartElement (pctxt, "supportsAltGK", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "supportsAltGK", -1);
+ break;
+
+ case 13:
+ pvalue->m.usageReportingCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "usageReportingCapability", -1);
+
+ stat = asn1PD_H225RasUsageInfoTypes (pctxt, &pvalue->usageReportingCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "usageReportingCapability", -1);
+ break;
+
+ case 14:
+ pvalue->m.multipleCallsPresent = 1;
+
+ invokeStartElement (pctxt, "multipleCalls", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multipleCalls);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multipleCalls);
+
+ invokeEndElement (pctxt, "multipleCalls", -1);
+ break;
+
+ case 15:
+ pvalue->m.supportedH248PackagesPresent = 1;
+
+ invokeStartElement (pctxt, "supportedH248Packages", -1);
+
+ stat = asn1PD_H225_SeqOfH225H248PackagesDescriptor (pctxt, &pvalue->supportedH248Packages);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedH248Packages", -1);
+ break;
+
+ case 16:
+ pvalue->m.callCreditCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "callCreditCapability", -1);
+
+ stat = asn1PD_H225CallCreditCapability (pctxt, &pvalue->callCreditCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callCreditCapability", -1);
+ break;
+
+ case 17:
+ pvalue->m.capacityReportingCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "capacityReportingCapability", -1);
+
+ stat = asn1PD_H225CapacityReportingCapability (pctxt, &pvalue->capacityReportingCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capacityReportingCapability", -1);
+ break;
+
+ case 18:
+ pvalue->m.capacityPresent = 1;
+
+ invokeStartElement (pctxt, "capacity", -1);
+
+ stat = asn1PD_H225CallCapacity (pctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capacity", -1);
+ break;
+
+ case 19:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ case 20:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ case 21:
+ pvalue->m.restartPresent = 1;
+
+ invokeStartElement (pctxt, "restart", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "restart", -1);
+ break;
+
+ case 22:
+ pvalue->m.supportsACFSequencesPresent = 1;
+
+ invokeStartElement (pctxt, "supportsACFSequences", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "supportsACFSequences", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RegistrationConfirm_preGrantedARQ */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RegistrationConfirm_preGrantedARQ (OOCTXT* pctxt, H225RegistrationConfirm_preGrantedARQ* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode makeCall */
+
+ invokeStartElement (pctxt, "makeCall", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->makeCall);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->makeCall);
+
+ invokeEndElement (pctxt, "makeCall", -1);
+
+ /* decode useGKCallSignalAddressToMakeCall */
+
+ invokeStartElement (pctxt, "useGKCallSignalAddressToMakeCall", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->useGKCallSignalAddressToMakeCall);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->useGKCallSignalAddressToMakeCall);
+
+ invokeEndElement (pctxt, "useGKCallSignalAddressToMakeCall", -1);
+
+ /* decode answerCall */
+
+ invokeStartElement (pctxt, "answerCall", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->answerCall);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->answerCall);
+
+ invokeEndElement (pctxt, "answerCall", -1);
+
+ /* decode useGKCallSignalAddressToAnswer */
+
+ invokeStartElement (pctxt, "useGKCallSignalAddressToAnswer", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->useGKCallSignalAddressToAnswer);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->useGKCallSignalAddressToAnswer);
+
+ invokeEndElement (pctxt, "useGKCallSignalAddressToAnswer", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 4 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.irrFrequencyInCallPresent = 1;
+
+ invokeStartElement (pctxt, "irrFrequencyInCall", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->irrFrequencyInCall, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->irrFrequencyInCall);
+
+ invokeEndElement (pctxt, "irrFrequencyInCall", -1);
+ break;
+
+ case 1:
+ pvalue->m.totalBandwidthRestrictionPresent = 1;
+
+ invokeStartElement (pctxt, "totalBandwidthRestriction", -1);
+
+ stat = asn1PD_H225BandWidth (pctxt, &pvalue->totalBandwidthRestriction);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "totalBandwidthRestriction", -1);
+ break;
+
+ case 2:
+ pvalue->m.alternateTransportAddressesPresent = 1;
+
+ invokeStartElement (pctxt, "alternateTransportAddresses", -1);
+
+ stat = asn1PD_H225AlternateTransportAddresses (pctxt, &pvalue->alternateTransportAddresses);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternateTransportAddresses", -1);
+ break;
+
+ case 3:
+ pvalue->m.useSpecifiedTransportPresent = 1;
+
+ invokeStartElement (pctxt, "useSpecifiedTransport", -1);
+
+ stat = asn1PD_H225UseSpecifiedTransport (pctxt, &pvalue->useSpecifiedTransport);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "useSpecifiedTransport", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225RasUsageSpecification */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225RasUsageSpecification (OOCTXT* pctxt, H225_SeqOfH225RasUsageSpecification* pvalue)
+{
+ int stat = ASN_OK;
+ H225RasUsageSpecification* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225RasUsageSpecification);
+
+ stat = asn1PD_H225RasUsageSpecification (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RegistrationConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RegistrationConfirm (OOCTXT* pctxt, H225RegistrationConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.terminalAliasPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.gatekeeperIdentifierPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode callSignalAddress */
+
+ invokeStartElement (pctxt, "callSignalAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callSignalAddress", -1);
+
+ /* decode terminalAlias */
+
+ if (pvalue->m.terminalAliasPresent) {
+ invokeStartElement (pctxt, "terminalAlias", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->terminalAlias);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalAlias", -1);
+ }
+
+ /* decode gatekeeperIdentifier */
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ invokeStartElement (pctxt, "gatekeeperIdentifier", -1);
+
+ stat = asn1PD_H225GatekeeperIdentifier (pctxt, &pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperIdentifier", -1);
+ }
+
+ /* decode endpointIdentifier */
+
+ invokeStartElement (pctxt, "endpointIdentifier", -1);
+
+ stat = asn1PD_H225EndpointIdentifier (pctxt, &pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointIdentifier", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 17 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.alternateGatekeeperPresent = 1;
+
+ invokeStartElement (pctxt, "alternateGatekeeper", -1);
+
+ stat = asn1PD_H225_SeqOfH225AlternateGK (pctxt, &pvalue->alternateGatekeeper);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternateGatekeeper", -1);
+ break;
+
+ case 1:
+ pvalue->m.timeToLivePresent = 1;
+
+ invokeStartElement (pctxt, "timeToLive", -1);
+
+ stat = asn1PD_H225TimeToLive (pctxt, &pvalue->timeToLive);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "timeToLive", -1);
+ break;
+
+ case 2:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 4:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 5:
+ pvalue->m.willRespondToIRRPresent = 1;
+
+ invokeStartElement (pctxt, "willRespondToIRR", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->willRespondToIRR);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->willRespondToIRR);
+
+ invokeEndElement (pctxt, "willRespondToIRR", -1);
+ break;
+
+ case 6:
+ pvalue->m.preGrantedARQPresent = 1;
+
+ invokeStartElement (pctxt, "preGrantedARQ", -1);
+
+ stat = asn1PD_H225RegistrationConfirm_preGrantedARQ (pctxt, &pvalue->preGrantedARQ);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "preGrantedARQ", -1);
+ break;
+
+ case 7:
+ pvalue->m.maintainConnectionPresent = 1;
+
+ invokeStartElement (pctxt, "maintainConnection", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->maintainConnection);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->maintainConnection);
+
+ invokeEndElement (pctxt, "maintainConnection", -1);
+ break;
+
+ case 8:
+ pvalue->m.serviceControlPresent = 1;
+
+ invokeStartElement (pctxt, "serviceControl", -1);
+
+ stat = asn1PD_H225_SeqOfH225ServiceControlSession (pctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "serviceControl", -1);
+ break;
+
+ case 9:
+ pvalue->m.supportsAdditiveRegistrationPresent = 1;
+
+ invokeStartElement (pctxt, "supportsAdditiveRegistration", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "supportsAdditiveRegistration", -1);
+ break;
+
+ case 10:
+ pvalue->m.terminalAliasPatternPresent = 1;
+
+ invokeStartElement (pctxt, "terminalAliasPattern", -1);
+
+ stat = asn1PD_H225_SeqOfH225AddressPattern (pctxt, &pvalue->terminalAliasPattern);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalAliasPattern", -1);
+ break;
+
+ case 11:
+ pvalue->m.supportedPrefixesPresent = 1;
+
+ invokeStartElement (pctxt, "supportedPrefixes", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedPrefixes", -1);
+ break;
+
+ case 12:
+ pvalue->m.usageSpecPresent = 1;
+
+ invokeStartElement (pctxt, "usageSpec", -1);
+
+ stat = asn1PD_H225_SeqOfH225RasUsageSpecification (pctxt, &pvalue->usageSpec);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "usageSpec", -1);
+ break;
+
+ case 13:
+ pvalue->m.featureServerAliasPresent = 1;
+
+ invokeStartElement (pctxt, "featureServerAlias", -1);
+
+ stat = asn1PD_H225AliasAddress (pctxt, &pvalue->featureServerAlias);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureServerAlias", -1);
+ break;
+
+ case 14:
+ pvalue->m.capacityReportingSpecPresent = 1;
+
+ invokeStartElement (pctxt, "capacityReportingSpec", -1);
+
+ stat = asn1PD_H225CapacityReportingSpecification (pctxt, &pvalue->capacityReportingSpec);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capacityReportingSpec", -1);
+ break;
+
+ case 15:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ case 16:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RegistrationRejectReason_invalidTerminalAliases */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RegistrationRejectReason_invalidTerminalAliases (OOCTXT* pctxt, H225RegistrationRejectReason_invalidTerminalAliases* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.terminalAliasPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.terminalAliasPatternPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.supportedPrefixesPresent = optbit;
+
+ /* decode terminalAlias */
+
+ if (pvalue->m.terminalAliasPresent) {
+ invokeStartElement (pctxt, "terminalAlias", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->terminalAlias);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalAlias", -1);
+ }
+
+ /* decode terminalAliasPattern */
+
+ if (pvalue->m.terminalAliasPatternPresent) {
+ invokeStartElement (pctxt, "terminalAliasPattern", -1);
+
+ stat = asn1PD_H225_SeqOfH225AddressPattern (pctxt, &pvalue->terminalAliasPattern);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalAliasPattern", -1);
+ }
+
+ /* decode supportedPrefixes */
+
+ if (pvalue->m.supportedPrefixesPresent) {
+ invokeStartElement (pctxt, "supportedPrefixes", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedPrefixes", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RegistrationRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RegistrationRejectReason (OOCTXT* pctxt, H225RegistrationRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 7);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* discoveryRequired */
+ case 0:
+ invokeStartElement (pctxt, "discoveryRequired", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "discoveryRequired", -1);
+
+ break;
+
+ /* invalidRevision */
+ case 1:
+ invokeStartElement (pctxt, "invalidRevision", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidRevision", -1);
+
+ break;
+
+ /* invalidCallSignalAddress */
+ case 2:
+ invokeStartElement (pctxt, "invalidCallSignalAddress", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidCallSignalAddress", -1);
+
+ break;
+
+ /* invalidRASAddress */
+ case 3:
+ invokeStartElement (pctxt, "invalidRASAddress", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidRASAddress", -1);
+
+ break;
+
+ /* duplicateAlias */
+ case 4:
+ invokeStartElement (pctxt, "duplicateAlias", -1);
+
+ pvalue->u.duplicateAlias = ALLOC_ASN1ELEM (pctxt, H225_SeqOfH225AliasAddress);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, pvalue->u.duplicateAlias);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "duplicateAlias", -1);
+
+ break;
+
+ /* invalidTerminalType */
+ case 5:
+ invokeStartElement (pctxt, "invalidTerminalType", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidTerminalType", -1);
+
+ break;
+
+ /* undefinedReason */
+ case 6:
+ invokeStartElement (pctxt, "undefinedReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "undefinedReason", -1);
+
+ break;
+
+ /* transportNotSupported */
+ case 7:
+ invokeStartElement (pctxt, "transportNotSupported", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "transportNotSupported", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 9;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* transportQOSNotSupported */
+ case 9:
+ invokeStartElement (pctxt, "transportQOSNotSupported", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "transportQOSNotSupported", -1);
+
+ break;
+
+ /* resourceUnavailable */
+ case 10:
+ invokeStartElement (pctxt, "resourceUnavailable", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "resourceUnavailable", -1);
+
+ break;
+
+ /* invalidAlias */
+ case 11:
+ invokeStartElement (pctxt, "invalidAlias", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidAlias", -1);
+
+ break;
+
+ /* securityDenial */
+ case 12:
+ invokeStartElement (pctxt, "securityDenial", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityDenial", -1);
+
+ break;
+
+ /* fullRegistrationRequired */
+ case 13:
+ invokeStartElement (pctxt, "fullRegistrationRequired", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "fullRegistrationRequired", -1);
+
+ break;
+
+ /* additiveRegistrationNotSupported */
+ case 14:
+ invokeStartElement (pctxt, "additiveRegistrationNotSupported", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "additiveRegistrationNotSupported", -1);
+
+ break;
+
+ /* invalidTerminalAliases */
+ case 15:
+ invokeStartElement (pctxt, "invalidTerminalAliases", -1);
+
+ pvalue->u.invalidTerminalAliases = ALLOC_ASN1ELEM (pctxt, H225RegistrationRejectReason_invalidTerminalAliases);
+
+ stat = asn1PD_H225RegistrationRejectReason_invalidTerminalAliases (pctxt, pvalue->u.invalidTerminalAliases);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "invalidTerminalAliases", -1);
+
+ break;
+
+ /* genericDataReason */
+ case 16:
+ invokeStartElement (pctxt, "genericDataReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "genericDataReason", -1);
+
+ break;
+
+ /* neededFeatureNotSupported */
+ case 17:
+ invokeStartElement (pctxt, "neededFeatureNotSupported", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "neededFeatureNotSupported", -1);
+
+ break;
+
+ /* securityError */
+ case 18:
+ invokeStartElement (pctxt, "securityError", -1);
+
+ pvalue->u.securityError = ALLOC_ASN1ELEM (pctxt, H225SecurityErrors);
+
+ stat = asn1PD_H225SecurityErrors (pctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "securityError", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RegistrationReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RegistrationReject (OOCTXT* pctxt, H225RegistrationReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.gatekeeperIdentifierPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode rejectReason */
+
+ invokeStartElement (pctxt, "rejectReason", -1);
+
+ stat = asn1PD_H225RegistrationRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rejectReason", -1);
+
+ /* decode gatekeeperIdentifier */
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ invokeStartElement (pctxt, "gatekeeperIdentifier", -1);
+
+ stat = asn1PD_H225GatekeeperIdentifier (pctxt, &pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperIdentifier", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 6 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.altGKInfoPresent = 1;
+
+ invokeStartElement (pctxt, "altGKInfo", -1);
+
+ stat = asn1PD_H225AltGKInfo (pctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "altGKInfo", -1);
+ break;
+
+ case 1:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 4:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ case 5:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnregRequestReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225UnregRequestReason (OOCTXT* pctxt, H225UnregRequestReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* reregistrationRequired */
+ case 0:
+ invokeStartElement (pctxt, "reregistrationRequired", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "reregistrationRequired", -1);
+
+ break;
+
+ /* ttlExpired */
+ case 1:
+ invokeStartElement (pctxt, "ttlExpired", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "ttlExpired", -1);
+
+ break;
+
+ /* securityDenial */
+ case 2:
+ invokeStartElement (pctxt, "securityDenial", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityDenial", -1);
+
+ break;
+
+ /* undefinedReason */
+ case 3:
+ invokeStartElement (pctxt, "undefinedReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "undefinedReason", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* maintenance */
+ case 5:
+ invokeStartElement (pctxt, "maintenance", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "maintenance", -1);
+
+ break;
+
+ /* securityError */
+ case 6:
+ invokeStartElement (pctxt, "securityError", -1);
+
+ pvalue->u.securityError = ALLOC_ASN1ELEM (pctxt, H225SecurityErrors2);
+
+ stat = asn1PD_H225SecurityErrors2 (pctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "securityError", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnregistrationRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225UnregistrationRequest (OOCTXT* pctxt, H225UnregistrationRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.endpointAliasPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.endpointIdentifierPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode callSignalAddress */
+
+ invokeStartElement (pctxt, "callSignalAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callSignalAddress", -1);
+
+ /* decode endpointAlias */
+
+ if (pvalue->m.endpointAliasPresent) {
+ invokeStartElement (pctxt, "endpointAlias", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->endpointAlias);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointAlias", -1);
+ }
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode endpointIdentifier */
+
+ if (pvalue->m.endpointIdentifierPresent) {
+ invokeStartElement (pctxt, "endpointIdentifier", -1);
+
+ stat = asn1PD_H225EndpointIdentifier (pctxt, &pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointIdentifier", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 10 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.alternateEndpointsPresent = 1;
+
+ invokeStartElement (pctxt, "alternateEndpoints", -1);
+
+ stat = asn1PD_H225_SeqOfH225Endpoint (pctxt, &pvalue->alternateEndpoints);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternateEndpoints", -1);
+ break;
+
+ case 1:
+ pvalue->m.gatekeeperIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "gatekeeperIdentifier", -1);
+
+ stat = asn1PD_H225GatekeeperIdentifier (pctxt, &pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperIdentifier", -1);
+ break;
+
+ case 2:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 4:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 5:
+ pvalue->m.reasonPresent = 1;
+
+ invokeStartElement (pctxt, "reason", -1);
+
+ stat = asn1PD_H225UnregRequestReason (pctxt, &pvalue->reason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "reason", -1);
+ break;
+
+ case 6:
+ pvalue->m.endpointAliasPatternPresent = 1;
+
+ invokeStartElement (pctxt, "endpointAliasPattern", -1);
+
+ stat = asn1PD_H225_SeqOfH225AddressPattern (pctxt, &pvalue->endpointAliasPattern);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointAliasPattern", -1);
+ break;
+
+ case 7:
+ pvalue->m.supportedPrefixesPresent = 1;
+
+ invokeStartElement (pctxt, "supportedPrefixes", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedPrefixes", -1);
+ break;
+
+ case 8:
+ pvalue->m.alternateGatekeeperPresent = 1;
+
+ invokeStartElement (pctxt, "alternateGatekeeper", -1);
+
+ stat = asn1PD_H225_SeqOfH225AlternateGK (pctxt, &pvalue->alternateGatekeeper);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternateGatekeeper", -1);
+ break;
+
+ case 9:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnregistrationConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225UnregistrationConfirm (OOCTXT* pctxt, H225UnregistrationConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 4 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 1:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 3:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnregRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225UnregRejectReason (OOCTXT* pctxt, H225UnregRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* notCurrentlyRegistered */
+ case 0:
+ invokeStartElement (pctxt, "notCurrentlyRegistered", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "notCurrentlyRegistered", -1);
+
+ break;
+
+ /* callInProgress */
+ case 1:
+ invokeStartElement (pctxt, "callInProgress", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "callInProgress", -1);
+
+ break;
+
+ /* undefinedReason */
+ case 2:
+ invokeStartElement (pctxt, "undefinedReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "undefinedReason", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* permissionDenied */
+ case 4:
+ invokeStartElement (pctxt, "permissionDenied", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "permissionDenied", -1);
+
+ break;
+
+ /* securityDenial */
+ case 5:
+ invokeStartElement (pctxt, "securityDenial", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityDenial", -1);
+
+ break;
+
+ /* securityError */
+ case 6:
+ invokeStartElement (pctxt, "securityError", -1);
+
+ pvalue->u.securityError = ALLOC_ASN1ELEM (pctxt, H225SecurityErrors2);
+
+ stat = asn1PD_H225SecurityErrors2 (pctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "securityError", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnregistrationReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225UnregistrationReject (OOCTXT* pctxt, H225UnregistrationReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode rejectReason */
+
+ invokeStartElement (pctxt, "rejectReason", -1);
+
+ stat = asn1PD_H225UnregRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rejectReason", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 5 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.altGKInfoPresent = 1;
+
+ invokeStartElement (pctxt, "altGKInfo", -1);
+
+ stat = asn1PD_H225AltGKInfo (pctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "altGKInfo", -1);
+ break;
+
+ case 1:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 4:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallModel */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallModel (OOCTXT* pctxt, H225CallModel* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* direct */
+ case 0:
+ invokeStartElement (pctxt, "direct", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "direct", -1);
+
+ break;
+
+ /* gatekeeperRouted */
+ case 1:
+ invokeStartElement (pctxt, "gatekeeperRouted", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "gatekeeperRouted", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportQOS */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportQOS (OOCTXT* pctxt, H225TransportQOS* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* endpointControlled */
+ case 0:
+ invokeStartElement (pctxt, "endpointControlled", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "endpointControlled", -1);
+
+ break;
+
+ /* gatekeeperControlled */
+ case 1:
+ invokeStartElement (pctxt, "gatekeeperControlled", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "gatekeeperControlled", -1);
+
+ break;
+
+ /* noControl */
+ case 2:
+ invokeStartElement (pctxt, "noControl", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noControl", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AdmissionRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225AdmissionRequest (OOCTXT* pctxt, H225AdmissionRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.callModelPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.destinationInfoPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.destCallSignalAddressPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.destExtraCallInfoPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.srcCallSignalAddressPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.callServicesPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode callType */
+
+ invokeStartElement (pctxt, "callType", -1);
+
+ stat = asn1PD_H225CallType (pctxt, &pvalue->callType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callType", -1);
+
+ /* decode callModel */
+
+ if (pvalue->m.callModelPresent) {
+ invokeStartElement (pctxt, "callModel", -1);
+
+ stat = asn1PD_H225CallModel (pctxt, &pvalue->callModel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callModel", -1);
+ }
+
+ /* decode endpointIdentifier */
+
+ invokeStartElement (pctxt, "endpointIdentifier", -1);
+
+ stat = asn1PD_H225EndpointIdentifier (pctxt, &pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointIdentifier", -1);
+
+ /* decode destinationInfo */
+
+ if (pvalue->m.destinationInfoPresent) {
+ invokeStartElement (pctxt, "destinationInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destinationInfo", -1);
+ }
+
+ /* decode destCallSignalAddress */
+
+ if (pvalue->m.destCallSignalAddressPresent) {
+ invokeStartElement (pctxt, "destCallSignalAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->destCallSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destCallSignalAddress", -1);
+ }
+
+ /* decode destExtraCallInfo */
+
+ if (pvalue->m.destExtraCallInfoPresent) {
+ invokeStartElement (pctxt, "destExtraCallInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destExtraCallInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destExtraCallInfo", -1);
+ }
+
+ /* decode srcInfo */
+
+ invokeStartElement (pctxt, "srcInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->srcInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "srcInfo", -1);
+
+ /* decode srcCallSignalAddress */
+
+ if (pvalue->m.srcCallSignalAddressPresent) {
+ invokeStartElement (pctxt, "srcCallSignalAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->srcCallSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "srcCallSignalAddress", -1);
+ }
+
+ /* decode bandWidth */
+
+ invokeStartElement (pctxt, "bandWidth", -1);
+
+ stat = asn1PD_H225BandWidth (pctxt, &pvalue->bandWidth);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "bandWidth", -1);
+
+ /* decode callReferenceValue */
+
+ invokeStartElement (pctxt, "callReferenceValue", -1);
+
+ stat = asn1PD_H225CallReferenceValue (pctxt, &pvalue->callReferenceValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callReferenceValue", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode callServices */
+
+ if (pvalue->m.callServicesPresent) {
+ invokeStartElement (pctxt, "callServices", -1);
+
+ stat = asn1PD_H225QseriesOptions (pctxt, &pvalue->callServices);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callServices", -1);
+ }
+
+ /* decode conferenceID */
+
+ invokeStartElement (pctxt, "conferenceID", -1);
+
+ stat = asn1PD_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceID", -1);
+
+ /* decode activeMC */
+
+ invokeStartElement (pctxt, "activeMC", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->activeMC);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->activeMC);
+
+ invokeEndElement (pctxt, "activeMC", -1);
+
+ /* decode answerCall */
+
+ invokeStartElement (pctxt, "answerCall", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->answerCall);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->answerCall);
+
+ invokeEndElement (pctxt, "answerCall", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 19 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.canMapAliasPresent = 1;
+
+ invokeStartElement (pctxt, "canMapAlias", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->canMapAlias);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->canMapAlias);
+
+ invokeEndElement (pctxt, "canMapAlias", -1);
+ break;
+
+ case 1:
+ pvalue->m.callIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+ break;
+
+ case 2:
+ pvalue->m.srcAlternativesPresent = 1;
+
+ invokeStartElement (pctxt, "srcAlternatives", -1);
+
+ stat = asn1PD_H225_SeqOfH225Endpoint (pctxt, &pvalue->srcAlternatives);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "srcAlternatives", -1);
+ break;
+
+ case 3:
+ pvalue->m.destAlternativesPresent = 1;
+
+ invokeStartElement (pctxt, "destAlternatives", -1);
+
+ stat = asn1PD_H225_SeqOfH225Endpoint (pctxt, &pvalue->destAlternatives);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destAlternatives", -1);
+ break;
+
+ case 4:
+ pvalue->m.gatekeeperIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "gatekeeperIdentifier", -1);
+
+ stat = asn1PD_H225GatekeeperIdentifier (pctxt, &pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperIdentifier", -1);
+ break;
+
+ case 5:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 6:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 7:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 8:
+ pvalue->m.transportQOSPresent = 1;
+
+ invokeStartElement (pctxt, "transportQOS", -1);
+
+ stat = asn1PD_H225TransportQOS (pctxt, &pvalue->transportQOS);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transportQOS", -1);
+ break;
+
+ case 9:
+ pvalue->m.willSupplyUUIEsPresent = 1;
+
+ invokeStartElement (pctxt, "willSupplyUUIEs", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->willSupplyUUIEs);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->willSupplyUUIEs);
+
+ invokeEndElement (pctxt, "willSupplyUUIEs", -1);
+ break;
+
+ case 10:
+ pvalue->m.callLinkagePresent = 1;
+
+ invokeStartElement (pctxt, "callLinkage", -1);
+
+ stat = asn1PD_H225CallLinkage (pctxt, &pvalue->callLinkage);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callLinkage", -1);
+ break;
+
+ case 11:
+ pvalue->m.gatewayDataRatePresent = 1;
+
+ invokeStartElement (pctxt, "gatewayDataRate", -1);
+
+ stat = asn1PD_H225DataRate (pctxt, &pvalue->gatewayDataRate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatewayDataRate", -1);
+ break;
+
+ case 12:
+ pvalue->m.capacityPresent = 1;
+
+ invokeStartElement (pctxt, "capacity", -1);
+
+ stat = asn1PD_H225CallCapacity (pctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capacity", -1);
+ break;
+
+ case 13:
+ pvalue->m.circuitInfoPresent = 1;
+
+ invokeStartElement (pctxt, "circuitInfo", -1);
+
+ stat = asn1PD_H225CircuitInfo (pctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "circuitInfo", -1);
+ break;
+
+ case 14:
+ pvalue->m.desiredProtocolsPresent = 1;
+
+ invokeStartElement (pctxt, "desiredProtocols", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedProtocols (pctxt, &pvalue->desiredProtocols);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "desiredProtocols", -1);
+ break;
+
+ case 15:
+ pvalue->m.desiredTunnelledProtocolPresent = 1;
+
+ invokeStartElement (pctxt, "desiredTunnelledProtocol", -1);
+
+ stat = asn1PD_H225TunnelledProtocol (pctxt, &pvalue->desiredTunnelledProtocol);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "desiredTunnelledProtocol", -1);
+ break;
+
+ case 16:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ case 17:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ case 18:
+ pvalue->m.canMapSrcAliasPresent = 1;
+
+ invokeStartElement (pctxt, "canMapSrcAlias", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->canMapSrcAlias);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->canMapSrcAlias);
+
+ invokeEndElement (pctxt, "canMapSrcAlias", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UUIEsRequested */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225UUIEsRequested (OOCTXT* pctxt, H225UUIEsRequested* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode setup */
+
+ invokeStartElement (pctxt, "setup", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->setup);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->setup);
+
+ invokeEndElement (pctxt, "setup", -1);
+
+ /* decode callProceeding */
+
+ invokeStartElement (pctxt, "callProceeding", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->callProceeding);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->callProceeding);
+
+ invokeEndElement (pctxt, "callProceeding", -1);
+
+ /* decode connect */
+
+ invokeStartElement (pctxt, "connect", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->connect);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->connect);
+
+ invokeEndElement (pctxt, "connect", -1);
+
+ /* decode alerting */
+
+ invokeStartElement (pctxt, "alerting", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->alerting);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->alerting);
+
+ invokeEndElement (pctxt, "alerting", -1);
+
+ /* decode information */
+
+ invokeStartElement (pctxt, "information", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->information);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->information);
+
+ invokeEndElement (pctxt, "information", -1);
+
+ /* decode releaseComplete */
+
+ invokeStartElement (pctxt, "releaseComplete", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->releaseComplete);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->releaseComplete);
+
+ invokeEndElement (pctxt, "releaseComplete", -1);
+
+ /* decode facility */
+
+ invokeStartElement (pctxt, "facility", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->facility);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->facility);
+
+ invokeEndElement (pctxt, "facility", -1);
+
+ /* decode progress */
+
+ invokeStartElement (pctxt, "progress", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->progress);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->progress);
+
+ invokeEndElement (pctxt, "progress", -1);
+
+ /* decode empty */
+
+ invokeStartElement (pctxt, "empty", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->empty);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->empty);
+
+ invokeEndElement (pctxt, "empty", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 4 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.statusPresent = 1;
+
+ invokeStartElement (pctxt, "status", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->status);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->status);
+
+ invokeEndElement (pctxt, "status", -1);
+ break;
+
+ case 1:
+ pvalue->m.statusInquiryPresent = 1;
+
+ invokeStartElement (pctxt, "statusInquiry", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->statusInquiry);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->statusInquiry);
+
+ invokeEndElement (pctxt, "statusInquiry", -1);
+ break;
+
+ case 2:
+ pvalue->m.setupAcknowledgePresent = 1;
+
+ invokeStartElement (pctxt, "setupAcknowledge", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->setupAcknowledge);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->setupAcknowledge);
+
+ invokeEndElement (pctxt, "setupAcknowledge", -1);
+ break;
+
+ case 3:
+ pvalue->m.notifyPresent = 1;
+
+ invokeStartElement (pctxt, "notify", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->notify);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->notify);
+
+ invokeEndElement (pctxt, "notify", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AdmissionConfirm_language */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225AdmissionConfirm_language (OOCTXT* pctxt, H225AdmissionConfirm_language* pvalue)
+{
+ static Asn1SizeCnst element_lsize1 = { 0, 1, 32, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1IA5String);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ addSizeConstraint (pctxt, &element_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->elem[xx1], 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->elem[xx1]);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AdmissionConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225AdmissionConfirm (OOCTXT* pctxt, H225AdmissionConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.irrFrequencyPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode bandWidth */
+
+ invokeStartElement (pctxt, "bandWidth", -1);
+
+ stat = asn1PD_H225BandWidth (pctxt, &pvalue->bandWidth);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "bandWidth", -1);
+
+ /* decode callModel */
+
+ invokeStartElement (pctxt, "callModel", -1);
+
+ stat = asn1PD_H225CallModel (pctxt, &pvalue->callModel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callModel", -1);
+
+ /* decode destCallSignalAddress */
+
+ invokeStartElement (pctxt, "destCallSignalAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->destCallSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destCallSignalAddress", -1);
+
+ /* decode irrFrequency */
+
+ if (pvalue->m.irrFrequencyPresent) {
+ invokeStartElement (pctxt, "irrFrequency", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->irrFrequency, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->irrFrequency);
+
+ invokeEndElement (pctxt, "irrFrequency", -1);
+ }
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 22 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.destinationInfoPresent = 1;
+
+ invokeStartElement (pctxt, "destinationInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destinationInfo", -1);
+ break;
+
+ case 1:
+ pvalue->m.destExtraCallInfoPresent = 1;
+
+ invokeStartElement (pctxt, "destExtraCallInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destExtraCallInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destExtraCallInfo", -1);
+ break;
+
+ case 2:
+ pvalue->m.destinationTypePresent = 1;
+
+ invokeStartElement (pctxt, "destinationType", -1);
+
+ stat = asn1PD_H225EndpointType (pctxt, &pvalue->destinationType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destinationType", -1);
+ break;
+
+ case 3:
+ pvalue->m.remoteExtensionAddressPresent = 1;
+
+ invokeStartElement (pctxt, "remoteExtensionAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->remoteExtensionAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "remoteExtensionAddress", -1);
+ break;
+
+ case 4:
+ pvalue->m.alternateEndpointsPresent = 1;
+
+ invokeStartElement (pctxt, "alternateEndpoints", -1);
+
+ stat = asn1PD_H225_SeqOfH225Endpoint (pctxt, &pvalue->alternateEndpoints);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternateEndpoints", -1);
+ break;
+
+ case 5:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 6:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 7:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 8:
+ pvalue->m.transportQOSPresent = 1;
+
+ invokeStartElement (pctxt, "transportQOS", -1);
+
+ stat = asn1PD_H225TransportQOS (pctxt, &pvalue->transportQOS);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transportQOS", -1);
+ break;
+
+ case 9:
+ pvalue->m.willRespondToIRRPresent = 1;
+
+ invokeStartElement (pctxt, "willRespondToIRR", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->willRespondToIRR);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->willRespondToIRR);
+
+ invokeEndElement (pctxt, "willRespondToIRR", -1);
+ break;
+
+ case 10:
+ pvalue->m.uuiesRequestedPresent = 1;
+
+ invokeStartElement (pctxt, "uuiesRequested", -1);
+
+ stat = asn1PD_H225UUIEsRequested (pctxt, &pvalue->uuiesRequested);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "uuiesRequested", -1);
+ break;
+
+ case 11:
+ pvalue->m.languagePresent = 1;
+
+ invokeStartElement (pctxt, "language", -1);
+
+ stat = asn1PD_H225AdmissionConfirm_language (pctxt, &pvalue->language);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "language", -1);
+ break;
+
+ case 12:
+ pvalue->m.alternateTransportAddressesPresent = 1;
+
+ invokeStartElement (pctxt, "alternateTransportAddresses", -1);
+
+ stat = asn1PD_H225AlternateTransportAddresses (pctxt, &pvalue->alternateTransportAddresses);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternateTransportAddresses", -1);
+ break;
+
+ case 13:
+ pvalue->m.useSpecifiedTransportPresent = 1;
+
+ invokeStartElement (pctxt, "useSpecifiedTransport", -1);
+
+ stat = asn1PD_H225UseSpecifiedTransport (pctxt, &pvalue->useSpecifiedTransport);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "useSpecifiedTransport", -1);
+ break;
+
+ case 14:
+ pvalue->m.circuitInfoPresent = 1;
+
+ invokeStartElement (pctxt, "circuitInfo", -1);
+
+ stat = asn1PD_H225CircuitInfo (pctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "circuitInfo", -1);
+ break;
+
+ case 15:
+ pvalue->m.usageSpecPresent = 1;
+
+ invokeStartElement (pctxt, "usageSpec", -1);
+
+ stat = asn1PD_H225_SeqOfH225RasUsageSpecification (pctxt, &pvalue->usageSpec);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "usageSpec", -1);
+ break;
+
+ case 16:
+ pvalue->m.supportedProtocolsPresent = 1;
+
+ invokeStartElement (pctxt, "supportedProtocols", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedProtocols (pctxt, &pvalue->supportedProtocols);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedProtocols", -1);
+ break;
+
+ case 17:
+ pvalue->m.serviceControlPresent = 1;
+
+ invokeStartElement (pctxt, "serviceControl", -1);
+
+ stat = asn1PD_H225_SeqOfH225ServiceControlSession (pctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "serviceControl", -1);
+ break;
+
+ case 18:
+ pvalue->m.multipleCallsPresent = 1;
+
+ invokeStartElement (pctxt, "multipleCalls", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multipleCalls);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multipleCalls);
+
+ invokeEndElement (pctxt, "multipleCalls", -1);
+ break;
+
+ case 19:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ case 20:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ case 21:
+ pvalue->m.modifiedSrcInfoPresent = 1;
+
+ invokeStartElement (pctxt, "modifiedSrcInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->modifiedSrcInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "modifiedSrcInfo", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225PartyNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225PartyNumber (OOCTXT* pctxt, H225_SeqOfH225PartyNumber* pvalue)
+{
+ int stat = ASN_OK;
+ H225PartyNumber* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225PartyNumber);
+
+ stat = asn1PD_H225PartyNumber (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AdmissionRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225AdmissionRejectReason (OOCTXT* pctxt, H225AdmissionRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 7);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* calledPartyNotRegistered */
+ case 0:
+ invokeStartElement (pctxt, "calledPartyNotRegistered", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "calledPartyNotRegistered", -1);
+
+ break;
+
+ /* invalidPermission */
+ case 1:
+ invokeStartElement (pctxt, "invalidPermission", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidPermission", -1);
+
+ break;
+
+ /* requestDenied */
+ case 2:
+ invokeStartElement (pctxt, "requestDenied", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "requestDenied", -1);
+
+ break;
+
+ /* undefinedReason */
+ case 3:
+ invokeStartElement (pctxt, "undefinedReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "undefinedReason", -1);
+
+ break;
+
+ /* callerNotRegistered */
+ case 4:
+ invokeStartElement (pctxt, "callerNotRegistered", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "callerNotRegistered", -1);
+
+ break;
+
+ /* routeCallToGatekeeper */
+ case 5:
+ invokeStartElement (pctxt, "routeCallToGatekeeper", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "routeCallToGatekeeper", -1);
+
+ break;
+
+ /* invalidEndpointIdentifier */
+ case 6:
+ invokeStartElement (pctxt, "invalidEndpointIdentifier", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidEndpointIdentifier", -1);
+
+ break;
+
+ /* resourceUnavailable */
+ case 7:
+ invokeStartElement (pctxt, "resourceUnavailable", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "resourceUnavailable", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 9;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* securityDenial */
+ case 9:
+ invokeStartElement (pctxt, "securityDenial", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityDenial", -1);
+
+ break;
+
+ /* qosControlNotSupported */
+ case 10:
+ invokeStartElement (pctxt, "qosControlNotSupported", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "qosControlNotSupported", -1);
+
+ break;
+
+ /* incompleteAddress */
+ case 11:
+ invokeStartElement (pctxt, "incompleteAddress", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "incompleteAddress", -1);
+
+ break;
+
+ /* aliasesInconsistent */
+ case 12:
+ invokeStartElement (pctxt, "aliasesInconsistent", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "aliasesInconsistent", -1);
+
+ break;
+
+ /* routeCallToSCN */
+ case 13:
+ invokeStartElement (pctxt, "routeCallToSCN", -1);
+
+ pvalue->u.routeCallToSCN = ALLOC_ASN1ELEM (pctxt, H225_SeqOfH225PartyNumber);
+
+ stat = asn1PD_H225_SeqOfH225PartyNumber (pctxt, pvalue->u.routeCallToSCN);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "routeCallToSCN", -1);
+
+ break;
+
+ /* exceedsCallCapacity */
+ case 14:
+ invokeStartElement (pctxt, "exceedsCallCapacity", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "exceedsCallCapacity", -1);
+
+ break;
+
+ /* collectDestination */
+ case 15:
+ invokeStartElement (pctxt, "collectDestination", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "collectDestination", -1);
+
+ break;
+
+ /* collectPIN */
+ case 16:
+ invokeStartElement (pctxt, "collectPIN", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "collectPIN", -1);
+
+ break;
+
+ /* genericDataReason */
+ case 17:
+ invokeStartElement (pctxt, "genericDataReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "genericDataReason", -1);
+
+ break;
+
+ /* neededFeatureNotSupported */
+ case 18:
+ invokeStartElement (pctxt, "neededFeatureNotSupported", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "neededFeatureNotSupported", -1);
+
+ break;
+
+ /* securityErrors */
+ case 19:
+ invokeStartElement (pctxt, "securityErrors", -1);
+
+ pvalue->u.securityErrors = ALLOC_ASN1ELEM (pctxt, H225SecurityErrors2);
+
+ stat = asn1PD_H225SecurityErrors2 (pctxt, pvalue->u.securityErrors);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "securityErrors", -1);
+
+ break;
+
+ /* securityDHmismatch */
+ case 20:
+ invokeStartElement (pctxt, "securityDHmismatch", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityDHmismatch", -1);
+
+ break;
+
+ /* noRouteToDestination */
+ case 21:
+ invokeStartElement (pctxt, "noRouteToDestination", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noRouteToDestination", -1);
+
+ break;
+
+ /* unallocatedNumber */
+ case 22:
+ invokeStartElement (pctxt, "unallocatedNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unallocatedNumber", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AdmissionReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225AdmissionReject (OOCTXT* pctxt, H225AdmissionReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode rejectReason */
+
+ invokeStartElement (pctxt, "rejectReason", -1);
+
+ stat = asn1PD_H225AdmissionRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rejectReason", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 8 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.altGKInfoPresent = 1;
+
+ invokeStartElement (pctxt, "altGKInfo", -1);
+
+ stat = asn1PD_H225AltGKInfo (pctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "altGKInfo", -1);
+ break;
+
+ case 1:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.callSignalAddressPresent = 1;
+
+ invokeStartElement (pctxt, "callSignalAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callSignalAddress", -1);
+ break;
+
+ case 4:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 5:
+ pvalue->m.serviceControlPresent = 1;
+
+ invokeStartElement (pctxt, "serviceControl", -1);
+
+ stat = asn1PD_H225_SeqOfH225ServiceControlSession (pctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "serviceControl", -1);
+ break;
+
+ case 6:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ case 7:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225BandwidthDetails */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225BandwidthDetails (OOCTXT* pctxt, H225_SeqOfH225BandwidthDetails* pvalue)
+{
+ int stat = ASN_OK;
+ H225BandwidthDetails* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225BandwidthDetails);
+
+ stat = asn1PD_H225BandwidthDetails (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BandwidthRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225BandwidthRequest (OOCTXT* pctxt, H225BandwidthRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.callTypePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode endpointIdentifier */
+
+ invokeStartElement (pctxt, "endpointIdentifier", -1);
+
+ stat = asn1PD_H225EndpointIdentifier (pctxt, &pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointIdentifier", -1);
+
+ /* decode conferenceID */
+
+ invokeStartElement (pctxt, "conferenceID", -1);
+
+ stat = asn1PD_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceID", -1);
+
+ /* decode callReferenceValue */
+
+ invokeStartElement (pctxt, "callReferenceValue", -1);
+
+ stat = asn1PD_H225CallReferenceValue (pctxt, &pvalue->callReferenceValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callReferenceValue", -1);
+
+ /* decode callType */
+
+ if (pvalue->m.callTypePresent) {
+ invokeStartElement (pctxt, "callType", -1);
+
+ stat = asn1PD_H225CallType (pctxt, &pvalue->callType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callType", -1);
+ }
+
+ /* decode bandWidth */
+
+ invokeStartElement (pctxt, "bandWidth", -1);
+
+ stat = asn1PD_H225BandWidth (pctxt, &pvalue->bandWidth);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "bandWidth", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 11 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.callIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+ break;
+
+ case 1:
+ pvalue->m.gatekeeperIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "gatekeeperIdentifier", -1);
+
+ stat = asn1PD_H225GatekeeperIdentifier (pctxt, &pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperIdentifier", -1);
+ break;
+
+ case 2:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 4:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 5:
+ pvalue->m.answeredCallPresent = 1;
+
+ invokeStartElement (pctxt, "answeredCall", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->answeredCall);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->answeredCall);
+
+ invokeEndElement (pctxt, "answeredCall", -1);
+ break;
+
+ case 6:
+ pvalue->m.callLinkagePresent = 1;
+
+ invokeStartElement (pctxt, "callLinkage", -1);
+
+ stat = asn1PD_H225CallLinkage (pctxt, &pvalue->callLinkage);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callLinkage", -1);
+ break;
+
+ case 7:
+ pvalue->m.capacityPresent = 1;
+
+ invokeStartElement (pctxt, "capacity", -1);
+
+ stat = asn1PD_H225CallCapacity (pctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capacity", -1);
+ break;
+
+ case 8:
+ pvalue->m.usageInformationPresent = 1;
+
+ invokeStartElement (pctxt, "usageInformation", -1);
+
+ stat = asn1PD_H225RasUsageInformation (pctxt, &pvalue->usageInformation);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "usageInformation", -1);
+ break;
+
+ case 9:
+ pvalue->m.bandwidthDetailsPresent = 1;
+
+ invokeStartElement (pctxt, "bandwidthDetails", -1);
+
+ stat = asn1PD_H225_SeqOfH225BandwidthDetails (pctxt, &pvalue->bandwidthDetails);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "bandwidthDetails", -1);
+ break;
+
+ case 10:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BandwidthConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225BandwidthConfirm (OOCTXT* pctxt, H225BandwidthConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode bandWidth */
+
+ invokeStartElement (pctxt, "bandWidth", -1);
+
+ stat = asn1PD_H225BandWidth (pctxt, &pvalue->bandWidth);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "bandWidth", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 5 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 1:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 3:
+ pvalue->m.capacityPresent = 1;
+
+ invokeStartElement (pctxt, "capacity", -1);
+
+ stat = asn1PD_H225CallCapacity (pctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capacity", -1);
+ break;
+
+ case 4:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BandRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225BandRejectReason (OOCTXT* pctxt, H225BandRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 5);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* notBound */
+ case 0:
+ invokeStartElement (pctxt, "notBound", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "notBound", -1);
+
+ break;
+
+ /* invalidConferenceID */
+ case 1:
+ invokeStartElement (pctxt, "invalidConferenceID", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidConferenceID", -1);
+
+ break;
+
+ /* invalidPermission */
+ case 2:
+ invokeStartElement (pctxt, "invalidPermission", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidPermission", -1);
+
+ break;
+
+ /* insufficientResources */
+ case 3:
+ invokeStartElement (pctxt, "insufficientResources", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "insufficientResources", -1);
+
+ break;
+
+ /* invalidRevision */
+ case 4:
+ invokeStartElement (pctxt, "invalidRevision", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidRevision", -1);
+
+ break;
+
+ /* undefinedReason */
+ case 5:
+ invokeStartElement (pctxt, "undefinedReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "undefinedReason", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 7;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* securityDenial */
+ case 7:
+ invokeStartElement (pctxt, "securityDenial", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityDenial", -1);
+
+ break;
+
+ /* securityError */
+ case 8:
+ invokeStartElement (pctxt, "securityError", -1);
+
+ pvalue->u.securityError = ALLOC_ASN1ELEM (pctxt, H225SecurityErrors2);
+
+ stat = asn1PD_H225SecurityErrors2 (pctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "securityError", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BandwidthReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225BandwidthReject (OOCTXT* pctxt, H225BandwidthReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode rejectReason */
+
+ invokeStartElement (pctxt, "rejectReason", -1);
+
+ stat = asn1PD_H225BandRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rejectReason", -1);
+
+ /* decode allowedBandWidth */
+
+ invokeStartElement (pctxt, "allowedBandWidth", -1);
+
+ stat = asn1PD_H225BandWidth (pctxt, &pvalue->allowedBandWidth);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "allowedBandWidth", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 5 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.altGKInfoPresent = 1;
+
+ invokeStartElement (pctxt, "altGKInfo", -1);
+
+ stat = asn1PD_H225AltGKInfo (pctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "altGKInfo", -1);
+ break;
+
+ case 1:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 4:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DisengageReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225DisengageReason (OOCTXT* pctxt, H225DisengageReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* forcedDrop */
+ case 0:
+ invokeStartElement (pctxt, "forcedDrop", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "forcedDrop", -1);
+
+ break;
+
+ /* normalDrop */
+ case 1:
+ invokeStartElement (pctxt, "normalDrop", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "normalDrop", -1);
+
+ break;
+
+ /* undefinedReason */
+ case 2:
+ invokeStartElement (pctxt, "undefinedReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "undefinedReason", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DisengageRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225DisengageRequest (OOCTXT* pctxt, H225DisengageRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode endpointIdentifier */
+
+ invokeStartElement (pctxt, "endpointIdentifier", -1);
+
+ stat = asn1PD_H225EndpointIdentifier (pctxt, &pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointIdentifier", -1);
+
+ /* decode conferenceID */
+
+ invokeStartElement (pctxt, "conferenceID", -1);
+
+ stat = asn1PD_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceID", -1);
+
+ /* decode callReferenceValue */
+
+ invokeStartElement (pctxt, "callReferenceValue", -1);
+
+ stat = asn1PD_H225CallReferenceValue (pctxt, &pvalue->callReferenceValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callReferenceValue", -1);
+
+ /* decode disengageReason */
+
+ invokeStartElement (pctxt, "disengageReason", -1);
+
+ stat = asn1PD_H225DisengageReason (pctxt, &pvalue->disengageReason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "disengageReason", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 13 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.callIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+ break;
+
+ case 1:
+ pvalue->m.gatekeeperIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "gatekeeperIdentifier", -1);
+
+ stat = asn1PD_H225GatekeeperIdentifier (pctxt, &pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperIdentifier", -1);
+ break;
+
+ case 2:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 4:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 5:
+ pvalue->m.answeredCallPresent = 1;
+
+ invokeStartElement (pctxt, "answeredCall", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->answeredCall);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->answeredCall);
+
+ invokeEndElement (pctxt, "answeredCall", -1);
+ break;
+
+ case 6:
+ pvalue->m.callLinkagePresent = 1;
+
+ invokeStartElement (pctxt, "callLinkage", -1);
+
+ stat = asn1PD_H225CallLinkage (pctxt, &pvalue->callLinkage);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callLinkage", -1);
+ break;
+
+ case 7:
+ pvalue->m.capacityPresent = 1;
+
+ invokeStartElement (pctxt, "capacity", -1);
+
+ stat = asn1PD_H225CallCapacity (pctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capacity", -1);
+ break;
+
+ case 8:
+ pvalue->m.circuitInfoPresent = 1;
+
+ invokeStartElement (pctxt, "circuitInfo", -1);
+
+ stat = asn1PD_H225CircuitInfo (pctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "circuitInfo", -1);
+ break;
+
+ case 9:
+ pvalue->m.usageInformationPresent = 1;
+
+ invokeStartElement (pctxt, "usageInformation", -1);
+
+ stat = asn1PD_H225RasUsageInformation (pctxt, &pvalue->usageInformation);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "usageInformation", -1);
+ break;
+
+ case 10:
+ pvalue->m.terminationCausePresent = 1;
+
+ invokeStartElement (pctxt, "terminationCause", -1);
+
+ stat = asn1PD_H225CallTerminationCause (pctxt, &pvalue->terminationCause);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminationCause", -1);
+ break;
+
+ case 11:
+ pvalue->m.serviceControlPresent = 1;
+
+ invokeStartElement (pctxt, "serviceControl", -1);
+
+ stat = asn1PD_H225_SeqOfH225ServiceControlSession (pctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "serviceControl", -1);
+ break;
+
+ case 12:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DisengageConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225DisengageConfirm (OOCTXT* pctxt, H225DisengageConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 7 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 1:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 3:
+ pvalue->m.capacityPresent = 1;
+
+ invokeStartElement (pctxt, "capacity", -1);
+
+ stat = asn1PD_H225CallCapacity (pctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capacity", -1);
+ break;
+
+ case 4:
+ pvalue->m.circuitInfoPresent = 1;
+
+ invokeStartElement (pctxt, "circuitInfo", -1);
+
+ stat = asn1PD_H225CircuitInfo (pctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "circuitInfo", -1);
+ break;
+
+ case 5:
+ pvalue->m.usageInformationPresent = 1;
+
+ invokeStartElement (pctxt, "usageInformation", -1);
+
+ stat = asn1PD_H225RasUsageInformation (pctxt, &pvalue->usageInformation);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "usageInformation", -1);
+ break;
+
+ case 6:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DisengageRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225DisengageRejectReason (OOCTXT* pctxt, H225DisengageRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* notRegistered */
+ case 0:
+ invokeStartElement (pctxt, "notRegistered", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "notRegistered", -1);
+
+ break;
+
+ /* requestToDropOther */
+ case 1:
+ invokeStartElement (pctxt, "requestToDropOther", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "requestToDropOther", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* securityDenial */
+ case 3:
+ invokeStartElement (pctxt, "securityDenial", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityDenial", -1);
+
+ break;
+
+ /* securityError */
+ case 4:
+ invokeStartElement (pctxt, "securityError", -1);
+
+ pvalue->u.securityError = ALLOC_ASN1ELEM (pctxt, H225SecurityErrors2);
+
+ stat = asn1PD_H225SecurityErrors2 (pctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "securityError", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DisengageReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225DisengageReject (OOCTXT* pctxt, H225DisengageReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode rejectReason */
+
+ invokeStartElement (pctxt, "rejectReason", -1);
+
+ stat = asn1PD_H225DisengageRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rejectReason", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 5 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.altGKInfoPresent = 1;
+
+ invokeStartElement (pctxt, "altGKInfo", -1);
+
+ stat = asn1PD_H225AltGKInfo (pctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "altGKInfo", -1);
+ break;
+
+ case 1:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 4:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LocationRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225LocationRequest (OOCTXT* pctxt, H225LocationRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.endpointIdentifierPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode endpointIdentifier */
+
+ if (pvalue->m.endpointIdentifierPresent) {
+ invokeStartElement (pctxt, "endpointIdentifier", -1);
+
+ stat = asn1PD_H225EndpointIdentifier (pctxt, &pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointIdentifier", -1);
+ }
+
+ /* decode destinationInfo */
+
+ invokeStartElement (pctxt, "destinationInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destinationInfo", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode replyAddress */
+
+ invokeStartElement (pctxt, "replyAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->replyAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "replyAddress", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 16 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.sourceInfoPresent = 1;
+
+ invokeStartElement (pctxt, "sourceInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->sourceInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sourceInfo", -1);
+ break;
+
+ case 1:
+ pvalue->m.canMapAliasPresent = 1;
+
+ invokeStartElement (pctxt, "canMapAlias", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->canMapAlias);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->canMapAlias);
+
+ invokeEndElement (pctxt, "canMapAlias", -1);
+ break;
+
+ case 2:
+ pvalue->m.gatekeeperIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "gatekeeperIdentifier", -1);
+
+ stat = asn1PD_H225GatekeeperIdentifier (pctxt, &pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperIdentifier", -1);
+ break;
+
+ case 3:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 4:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 5:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 6:
+ pvalue->m.desiredProtocolsPresent = 1;
+
+ invokeStartElement (pctxt, "desiredProtocols", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedProtocols (pctxt, &pvalue->desiredProtocols);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "desiredProtocols", -1);
+ break;
+
+ case 7:
+ pvalue->m.desiredTunnelledProtocolPresent = 1;
+
+ invokeStartElement (pctxt, "desiredTunnelledProtocol", -1);
+
+ stat = asn1PD_H225TunnelledProtocol (pctxt, &pvalue->desiredTunnelledProtocol);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "desiredTunnelledProtocol", -1);
+ break;
+
+ case 8:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ case 9:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ case 10:
+ pvalue->m.hopCountPresent = 1;
+
+ invokeStartElement (pctxt, "hopCount", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->hopCount, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->hopCount);
+
+ invokeEndElement (pctxt, "hopCount", -1);
+ break;
+
+ case 11:
+ pvalue->m.circuitInfoPresent = 1;
+
+ invokeStartElement (pctxt, "circuitInfo", -1);
+
+ stat = asn1PD_H225CircuitInfo (pctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "circuitInfo", -1);
+ break;
+
+ case 12:
+ pvalue->m.callIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+ break;
+
+ case 13:
+ pvalue->m.bandWidthPresent = 1;
+
+ invokeStartElement (pctxt, "bandWidth", -1);
+
+ stat = asn1PD_H225BandWidth (pctxt, &pvalue->bandWidth);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "bandWidth", -1);
+ break;
+
+ case 14:
+ pvalue->m.sourceEndpointInfoPresent = 1;
+
+ invokeStartElement (pctxt, "sourceEndpointInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->sourceEndpointInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sourceEndpointInfo", -1);
+ break;
+
+ case 15:
+ pvalue->m.canMapSrcAliasPresent = 1;
+
+ invokeStartElement (pctxt, "canMapSrcAlias", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->canMapSrcAlias);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->canMapSrcAlias);
+
+ invokeEndElement (pctxt, "canMapSrcAlias", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LocationConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225LocationConfirm (OOCTXT* pctxt, H225LocationConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode callSignalAddress */
+
+ invokeStartElement (pctxt, "callSignalAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->callSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callSignalAddress", -1);
+
+ /* decode rasAddress */
+
+ invokeStartElement (pctxt, "rasAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->rasAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rasAddress", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 17 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.destinationInfoPresent = 1;
+
+ invokeStartElement (pctxt, "destinationInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destinationInfo", -1);
+ break;
+
+ case 1:
+ pvalue->m.destExtraCallInfoPresent = 1;
+
+ invokeStartElement (pctxt, "destExtraCallInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destExtraCallInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destExtraCallInfo", -1);
+ break;
+
+ case 2:
+ pvalue->m.destinationTypePresent = 1;
+
+ invokeStartElement (pctxt, "destinationType", -1);
+
+ stat = asn1PD_H225EndpointType (pctxt, &pvalue->destinationType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destinationType", -1);
+ break;
+
+ case 3:
+ pvalue->m.remoteExtensionAddressPresent = 1;
+
+ invokeStartElement (pctxt, "remoteExtensionAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->remoteExtensionAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "remoteExtensionAddress", -1);
+ break;
+
+ case 4:
+ pvalue->m.alternateEndpointsPresent = 1;
+
+ invokeStartElement (pctxt, "alternateEndpoints", -1);
+
+ stat = asn1PD_H225_SeqOfH225Endpoint (pctxt, &pvalue->alternateEndpoints);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternateEndpoints", -1);
+ break;
+
+ case 5:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 6:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 7:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 8:
+ pvalue->m.alternateTransportAddressesPresent = 1;
+
+ invokeStartElement (pctxt, "alternateTransportAddresses", -1);
+
+ stat = asn1PD_H225AlternateTransportAddresses (pctxt, &pvalue->alternateTransportAddresses);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alternateTransportAddresses", -1);
+ break;
+
+ case 9:
+ pvalue->m.supportedProtocolsPresent = 1;
+
+ invokeStartElement (pctxt, "supportedProtocols", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedProtocols (pctxt, &pvalue->supportedProtocols);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supportedProtocols", -1);
+ break;
+
+ case 10:
+ pvalue->m.multipleCallsPresent = 1;
+
+ invokeStartElement (pctxt, "multipleCalls", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multipleCalls);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multipleCalls);
+
+ invokeEndElement (pctxt, "multipleCalls", -1);
+ break;
+
+ case 11:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ case 12:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ case 13:
+ pvalue->m.circuitInfoPresent = 1;
+
+ invokeStartElement (pctxt, "circuitInfo", -1);
+
+ stat = asn1PD_H225CircuitInfo (pctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "circuitInfo", -1);
+ break;
+
+ case 14:
+ pvalue->m.serviceControlPresent = 1;
+
+ invokeStartElement (pctxt, "serviceControl", -1);
+
+ stat = asn1PD_H225_SeqOfH225ServiceControlSession (pctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "serviceControl", -1);
+ break;
+
+ case 15:
+ pvalue->m.modifiedSrcInfoPresent = 1;
+
+ invokeStartElement (pctxt, "modifiedSrcInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->modifiedSrcInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "modifiedSrcInfo", -1);
+ break;
+
+ case 16:
+ pvalue->m.bandWidthPresent = 1;
+
+ invokeStartElement (pctxt, "bandWidth", -1);
+
+ stat = asn1PD_H225BandWidth (pctxt, &pvalue->bandWidth);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "bandWidth", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LocationRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225LocationRejectReason (OOCTXT* pctxt, H225LocationRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* notRegistered */
+ case 0:
+ invokeStartElement (pctxt, "notRegistered", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "notRegistered", -1);
+
+ break;
+
+ /* invalidPermission */
+ case 1:
+ invokeStartElement (pctxt, "invalidPermission", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidPermission", -1);
+
+ break;
+
+ /* requestDenied */
+ case 2:
+ invokeStartElement (pctxt, "requestDenied", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "requestDenied", -1);
+
+ break;
+
+ /* undefinedReason */
+ case 3:
+ invokeStartElement (pctxt, "undefinedReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "undefinedReason", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* securityDenial */
+ case 5:
+ invokeStartElement (pctxt, "securityDenial", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityDenial", -1);
+
+ break;
+
+ /* aliasesInconsistent */
+ case 6:
+ invokeStartElement (pctxt, "aliasesInconsistent", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "aliasesInconsistent", -1);
+
+ break;
+
+ /* routeCalltoSCN */
+ case 7:
+ invokeStartElement (pctxt, "routeCalltoSCN", -1);
+
+ pvalue->u.routeCalltoSCN = ALLOC_ASN1ELEM (pctxt, H225_SeqOfH225PartyNumber);
+
+ stat = asn1PD_H225_SeqOfH225PartyNumber (pctxt, pvalue->u.routeCalltoSCN);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "routeCalltoSCN", -1);
+
+ break;
+
+ /* resourceUnavailable */
+ case 8:
+ invokeStartElement (pctxt, "resourceUnavailable", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "resourceUnavailable", -1);
+
+ break;
+
+ /* genericDataReason */
+ case 9:
+ invokeStartElement (pctxt, "genericDataReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "genericDataReason", -1);
+
+ break;
+
+ /* neededFeatureNotSupported */
+ case 10:
+ invokeStartElement (pctxt, "neededFeatureNotSupported", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "neededFeatureNotSupported", -1);
+
+ break;
+
+ /* hopCountExceeded */
+ case 11:
+ invokeStartElement (pctxt, "hopCountExceeded", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "hopCountExceeded", -1);
+
+ break;
+
+ /* incompleteAddress */
+ case 12:
+ invokeStartElement (pctxt, "incompleteAddress", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "incompleteAddress", -1);
+
+ break;
+
+ /* securityError */
+ case 13:
+ invokeStartElement (pctxt, "securityError", -1);
+
+ pvalue->u.securityError = ALLOC_ASN1ELEM (pctxt, H225SecurityErrors2);
+
+ stat = asn1PD_H225SecurityErrors2 (pctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "securityError", -1);
+
+ break;
+
+ /* securityDHmismatch */
+ case 14:
+ invokeStartElement (pctxt, "securityDHmismatch", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityDHmismatch", -1);
+
+ break;
+
+ /* noRouteToDestination */
+ case 15:
+ invokeStartElement (pctxt, "noRouteToDestination", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noRouteToDestination", -1);
+
+ break;
+
+ /* unallocatedNumber */
+ case 16:
+ invokeStartElement (pctxt, "unallocatedNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unallocatedNumber", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LocationReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225LocationReject (OOCTXT* pctxt, H225LocationReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode rejectReason */
+
+ invokeStartElement (pctxt, "rejectReason", -1);
+
+ stat = asn1PD_H225LocationRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rejectReason", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 7 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.altGKInfoPresent = 1;
+
+ invokeStartElement (pctxt, "altGKInfo", -1);
+
+ stat = asn1PD_H225AltGKInfo (pctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "altGKInfo", -1);
+ break;
+
+ case 1:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 4:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ case 5:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ case 6:
+ pvalue->m.serviceControlPresent = 1;
+
+ invokeStartElement (pctxt, "serviceControl", -1);
+
+ stat = asn1PD_H225_SeqOfH225ServiceControlSession (pctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "serviceControl", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225InfoRequest (OOCTXT* pctxt, H225InfoRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.replyAddressPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode callReferenceValue */
+
+ invokeStartElement (pctxt, "callReferenceValue", -1);
+
+ stat = asn1PD_H225CallReferenceValue (pctxt, &pvalue->callReferenceValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callReferenceValue", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode replyAddress */
+
+ if (pvalue->m.replyAddressPresent) {
+ invokeStartElement (pctxt, "replyAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->replyAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "replyAddress", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 11 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.callIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+ break;
+
+ case 1:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 4:
+ pvalue->m.uuiesRequestedPresent = 1;
+
+ invokeStartElement (pctxt, "uuiesRequested", -1);
+
+ stat = asn1PD_H225UUIEsRequested (pctxt, &pvalue->uuiesRequested);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "uuiesRequested", -1);
+ break;
+
+ case 5:
+ pvalue->m.callLinkagePresent = 1;
+
+ invokeStartElement (pctxt, "callLinkage", -1);
+
+ stat = asn1PD_H225CallLinkage (pctxt, &pvalue->callLinkage);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callLinkage", -1);
+ break;
+
+ case 6:
+ pvalue->m.usageInfoRequestedPresent = 1;
+
+ invokeStartElement (pctxt, "usageInfoRequested", -1);
+
+ stat = asn1PD_H225RasUsageInfoTypes (pctxt, &pvalue->usageInfoRequested);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "usageInfoRequested", -1);
+ break;
+
+ case 7:
+ pvalue->m.segmentedResponseSupportedPresent = 1;
+
+ invokeStartElement (pctxt, "segmentedResponseSupported", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "segmentedResponseSupported", -1);
+ break;
+
+ case 8:
+ pvalue->m.nextSegmentRequestedPresent = 1;
+
+ invokeStartElement (pctxt, "nextSegmentRequested", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->nextSegmentRequested, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->nextSegmentRequested);
+
+ invokeEndElement (pctxt, "nextSegmentRequested", -1);
+ break;
+
+ case 9:
+ pvalue->m.capacityInfoRequestedPresent = 1;
+
+ invokeStartElement (pctxt, "capacityInfoRequested", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "capacityInfoRequested", -1);
+ break;
+
+ case 10:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225RTPSession */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225RTPSession (OOCTXT* pctxt, H225_SeqOfH225RTPSession* pvalue)
+{
+ int stat = ASN_OK;
+ H225RTPSession* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225RTPSession);
+
+ stat = asn1PD_H225RTPSession (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TransportChannelInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225TransportChannelInfo (OOCTXT* pctxt, H225_SeqOfH225TransportChannelInfo* pvalue)
+{
+ int stat = ASN_OK;
+ H225TransportChannelInfo* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225TransportChannelInfo);
+
+ stat = asn1PD_H225TransportChannelInfo (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ConferenceIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225ConferenceIdentifier (OOCTXT* pctxt, H225_SeqOfH225ConferenceIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, H225ConferenceIdentifier);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H225ConferenceIdentifier (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequestResponse_perCallInfo_element_pdu_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode h323pdu */
+
+ invokeStartElement (pctxt, "h323pdu", -1);
+
+ stat = asn1PD_H225H323_UU_PDU (pctxt, &pvalue->h323pdu);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h323pdu", -1);
+
+ /* decode sent */
+
+ invokeStartElement (pctxt, "sent", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->sent);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->sent);
+
+ invokeEndElement (pctxt, "sent", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_el */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue)
+{
+ int stat = ASN_OK;
+ H225InfoRequestResponse_perCallInfo_element_pdu_element* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225InfoRequestResponse_perCallInfo_element_pdu_element);
+
+ stat = asn1PD_H225InfoRequestResponse_perCallInfo_element_pdu_element (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequestResponse_perCallInfo_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.originatorPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.audioPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.videoPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.dataPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode callReferenceValue */
+
+ invokeStartElement (pctxt, "callReferenceValue", -1);
+
+ stat = asn1PD_H225CallReferenceValue (pctxt, &pvalue->callReferenceValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callReferenceValue", -1);
+
+ /* decode conferenceID */
+
+ invokeStartElement (pctxt, "conferenceID", -1);
+
+ stat = asn1PD_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceID", -1);
+
+ /* decode originator */
+
+ if (pvalue->m.originatorPresent) {
+ invokeStartElement (pctxt, "originator", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->originator);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->originator);
+
+ invokeEndElement (pctxt, "originator", -1);
+ }
+
+ /* decode audio */
+
+ if (pvalue->m.audioPresent) {
+ invokeStartElement (pctxt, "audio", -1);
+
+ stat = asn1PD_H225_SeqOfH225RTPSession (pctxt, &pvalue->audio);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "audio", -1);
+ }
+
+ /* decode video */
+
+ if (pvalue->m.videoPresent) {
+ invokeStartElement (pctxt, "video", -1);
+
+ stat = asn1PD_H225_SeqOfH225RTPSession (pctxt, &pvalue->video);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "video", -1);
+ }
+
+ /* decode data */
+
+ if (pvalue->m.dataPresent) {
+ invokeStartElement (pctxt, "data", -1);
+
+ stat = asn1PD_H225_SeqOfH225TransportChannelInfo (pctxt, &pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "data", -1);
+ }
+
+ /* decode h245 */
+
+ invokeStartElement (pctxt, "h245", -1);
+
+ stat = asn1PD_H225TransportChannelInfo (pctxt, &pvalue->h245);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h245", -1);
+
+ /* decode callSignaling */
+
+ invokeStartElement (pctxt, "callSignaling", -1);
+
+ stat = asn1PD_H225TransportChannelInfo (pctxt, &pvalue->callSignaling);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callSignaling", -1);
+
+ /* decode callType */
+
+ invokeStartElement (pctxt, "callType", -1);
+
+ stat = asn1PD_H225CallType (pctxt, &pvalue->callType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callType", -1);
+
+ /* decode bandWidth */
+
+ invokeStartElement (pctxt, "bandWidth", -1);
+
+ stat = asn1PD_H225BandWidth (pctxt, &pvalue->bandWidth);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "bandWidth", -1);
+
+ /* decode callModel */
+
+ invokeStartElement (pctxt, "callModel", -1);
+
+ stat = asn1PD_H225CallModel (pctxt, &pvalue->callModel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callModel", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 8 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.callIdentifierPresent = 1;
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+ break;
+
+ case 1:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 3:
+ pvalue->m.substituteConfIDsPresent = 1;
+
+ invokeStartElement (pctxt, "substituteConfIDs", -1);
+
+ stat = asn1PD_H225_SeqOfH225ConferenceIdentifier (pctxt, &pvalue->substituteConfIDs);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "substituteConfIDs", -1);
+ break;
+
+ case 4:
+ pvalue->m.pduPresent = 1;
+
+ invokeStartElement (pctxt, "pdu", -1);
+
+ stat = asn1PD_H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element (pctxt, &pvalue->pdu);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "pdu", -1);
+ break;
+
+ case 5:
+ pvalue->m.callLinkagePresent = 1;
+
+ invokeStartElement (pctxt, "callLinkage", -1);
+
+ stat = asn1PD_H225CallLinkage (pctxt, &pvalue->callLinkage);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callLinkage", -1);
+ break;
+
+ case 6:
+ pvalue->m.usageInformationPresent = 1;
+
+ invokeStartElement (pctxt, "usageInformation", -1);
+
+ stat = asn1PD_H225RasUsageInformation (pctxt, &pvalue->usageInformation);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "usageInformation", -1);
+ break;
+
+ case 7:
+ pvalue->m.circuitInfoPresent = 1;
+
+ invokeStartElement (pctxt, "circuitInfo", -1);
+
+ stat = asn1PD_H225CircuitInfo (pctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "circuitInfo", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225InfoRequestResponse_perCallInfo_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element* pvalue)
+{
+ int stat = ASN_OK;
+ H225InfoRequestResponse_perCallInfo_element* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225InfoRequestResponse_perCallInfo_element);
+
+ stat = asn1PD_H225InfoRequestResponse_perCallInfo_element (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequestResponseStatus */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225InfoRequestResponseStatus (OOCTXT* pctxt, H225InfoRequestResponseStatus* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* complete */
+ case 0:
+ invokeStartElement (pctxt, "complete", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "complete", -1);
+
+ break;
+
+ /* incomplete */
+ case 1:
+ invokeStartElement (pctxt, "incomplete", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "incomplete", -1);
+
+ break;
+
+ /* segment */
+ case 2:
+ invokeStartElement (pctxt, "segment", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.segment, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.segment);
+
+ invokeEndElement (pctxt, "segment", -1);
+
+ break;
+
+ /* invalidCall */
+ case 3:
+ invokeStartElement (pctxt, "invalidCall", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidCall", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequestResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225InfoRequestResponse (OOCTXT* pctxt, H225InfoRequestResponse* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.endpointAliasPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.perCallInfoPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode endpointType */
+
+ invokeStartElement (pctxt, "endpointType", -1);
+
+ stat = asn1PD_H225EndpointType (pctxt, &pvalue->endpointType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointType", -1);
+
+ /* decode endpointIdentifier */
+
+ invokeStartElement (pctxt, "endpointIdentifier", -1);
+
+ stat = asn1PD_H225EndpointIdentifier (pctxt, &pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointIdentifier", -1);
+
+ /* decode rasAddress */
+
+ invokeStartElement (pctxt, "rasAddress", -1);
+
+ stat = asn1PD_H225TransportAddress (pctxt, &pvalue->rasAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rasAddress", -1);
+
+ /* decode callSignalAddress */
+
+ invokeStartElement (pctxt, "callSignalAddress", -1);
+
+ stat = asn1PD_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callSignalAddress", -1);
+
+ /* decode endpointAlias */
+
+ if (pvalue->m.endpointAliasPresent) {
+ invokeStartElement (pctxt, "endpointAlias", -1);
+
+ stat = asn1PD_H225_SeqOfH225AliasAddress (pctxt, &pvalue->endpointAlias);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointAlias", -1);
+ }
+
+ /* decode perCallInfo */
+
+ if (pvalue->m.perCallInfoPresent) {
+ invokeStartElement (pctxt, "perCallInfo", -1);
+
+ stat = asn1PD_H225_SeqOfH225InfoRequestResponse_perCallInfo_element (pctxt, &pvalue->perCallInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "perCallInfo", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 8 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 1:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 3:
+ pvalue->m.needResponsePresent = 1;
+
+ invokeStartElement (pctxt, "needResponse", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->needResponse);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->needResponse);
+
+ invokeEndElement (pctxt, "needResponse", -1);
+ break;
+
+ case 4:
+ pvalue->m.capacityPresent = 1;
+
+ invokeStartElement (pctxt, "capacity", -1);
+
+ stat = asn1PD_H225CallCapacity (pctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capacity", -1);
+ break;
+
+ case 5:
+ pvalue->m.irrStatusPresent = 1;
+
+ invokeStartElement (pctxt, "irrStatus", -1);
+
+ stat = asn1PD_H225InfoRequestResponseStatus (pctxt, &pvalue->irrStatus);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "irrStatus", -1);
+ break;
+
+ case 6:
+ pvalue->m.unsolicitedPresent = 1;
+
+ invokeStartElement (pctxt, "unsolicited", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->unsolicited);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->unsolicited);
+
+ invokeEndElement (pctxt, "unsolicited", -1);
+ break;
+
+ case 7:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225NonStandardMessage (OOCTXT* pctxt, H225NonStandardMessage* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode nonStandardData */
+
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 5 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 1:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 3:
+ pvalue->m.featureSetPresent = 1;
+
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ break;
+
+ case 4:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnknownMessageResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225UnknownMessageResponse (OOCTXT* pctxt, H225UnknownMessageResponse* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 4 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.tokensPresent = 1;
+
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ break;
+
+ case 1:
+ pvalue->m.cryptoTokensPresent = 1;
+
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ break;
+
+ case 2:
+ pvalue->m.integrityCheckValuePresent = 1;
+
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ break;
+
+ case 3:
+ pvalue->m.messageNotUnderstoodPresent = 1;
+
+ invokeStartElement (pctxt, "messageNotUnderstood", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->messageNotUnderstood);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->messageNotUnderstood.numocts, pvalue->messageNotUnderstood.data);
+
+ invokeEndElement (pctxt, "messageNotUnderstood", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestInProgress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RequestInProgress (OOCTXT* pctxt, H225RequestInProgress* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cryptoTokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.integrityCheckValuePresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ }
+
+ /* decode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ }
+
+ /* decode integrityCheckValue */
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ }
+
+ /* decode delay */
+
+ invokeStartElement (pctxt, "delay", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->delay, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->delay);
+
+ invokeEndElement (pctxt, "delay", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ResourcesAvailableIndicate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ResourcesAvailableIndicate (OOCTXT* pctxt, H225ResourcesAvailableIndicate* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cryptoTokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.integrityCheckValuePresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode endpointIdentifier */
+
+ invokeStartElement (pctxt, "endpointIdentifier", -1);
+
+ stat = asn1PD_H225EndpointIdentifier (pctxt, &pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointIdentifier", -1);
+
+ /* decode protocols */
+
+ invokeStartElement (pctxt, "protocols", -1);
+
+ stat = asn1PD_H225_SeqOfH225SupportedProtocols (pctxt, &pvalue->protocols);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocols", -1);
+
+ /* decode almostOutOfResources */
+
+ invokeStartElement (pctxt, "almostOutOfResources", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->almostOutOfResources);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->almostOutOfResources);
+
+ invokeEndElement (pctxt, "almostOutOfResources", -1);
+
+ /* decode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ }
+
+ /* decode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ }
+
+ /* decode integrityCheckValue */
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.capacityPresent = 1;
+
+ invokeStartElement (pctxt, "capacity", -1);
+
+ stat = asn1PD_H225CallCapacity (pctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capacity", -1);
+ break;
+
+ case 1:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ResourcesAvailableConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ResourcesAvailableConfirm (OOCTXT* pctxt, H225ResourcesAvailableConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cryptoTokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.integrityCheckValuePresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = asn1PD_H225ProtocolIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ }
+
+ /* decode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ }
+
+ /* decode integrityCheckValue */
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.genericDataPresent = 1;
+
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequestAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225InfoRequestAck (OOCTXT* pctxt, H225InfoRequestAck* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cryptoTokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.integrityCheckValuePresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ }
+
+ /* decode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ }
+
+ /* decode integrityCheckValue */
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequestNakReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225InfoRequestNakReason (OOCTXT* pctxt, H225InfoRequestNakReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* notRegistered */
+ case 0:
+ invokeStartElement (pctxt, "notRegistered", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "notRegistered", -1);
+
+ break;
+
+ /* securityDenial */
+ case 1:
+ invokeStartElement (pctxt, "securityDenial", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "securityDenial", -1);
+
+ break;
+
+ /* undefinedReason */
+ case 2:
+ invokeStartElement (pctxt, "undefinedReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "undefinedReason", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* securityError */
+ case 4:
+ invokeStartElement (pctxt, "securityError", -1);
+
+ pvalue->u.securityError = ALLOC_ASN1ELEM (pctxt, H225SecurityErrors2);
+
+ stat = asn1PD_H225SecurityErrors2 (pctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "securityError", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequestNak */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225InfoRequestNak (OOCTXT* pctxt, H225InfoRequestNak* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.altGKInfoPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cryptoTokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.integrityCheckValuePresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode nakReason */
+
+ invokeStartElement (pctxt, "nakReason", -1);
+
+ stat = asn1PD_H225InfoRequestNakReason (pctxt, &pvalue->nakReason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nakReason", -1);
+
+ /* decode altGKInfo */
+
+ if (pvalue->m.altGKInfoPresent) {
+ invokeStartElement (pctxt, "altGKInfo", -1);
+
+ stat = asn1PD_H225AltGKInfo (pctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "altGKInfo", -1);
+ }
+
+ /* decode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ }
+
+ /* decode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ }
+
+ /* decode integrityCheckValue */
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ServiceControlIndication_callSpecific */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ServiceControlIndication_callSpecific (OOCTXT* pctxt, H225ServiceControlIndication_callSpecific* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode callIdentifier */
+
+ invokeStartElement (pctxt, "callIdentifier", -1);
+
+ stat = asn1PD_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callIdentifier", -1);
+
+ /* decode conferenceID */
+
+ invokeStartElement (pctxt, "conferenceID", -1);
+
+ stat = asn1PD_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceID", -1);
+
+ /* decode answeredCall */
+
+ invokeStartElement (pctxt, "answeredCall", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->answeredCall);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->answeredCall);
+
+ invokeEndElement (pctxt, "answeredCall", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ServiceControlIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ServiceControlIndication (OOCTXT* pctxt, H225ServiceControlIndication* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.endpointIdentifierPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.callSpecificPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cryptoTokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.integrityCheckValuePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.featureSetPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.genericDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode serviceControl */
+
+ invokeStartElement (pctxt, "serviceControl", -1);
+
+ stat = asn1PD_H225_SeqOfH225ServiceControlSession (pctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "serviceControl", -1);
+
+ /* decode endpointIdentifier */
+
+ if (pvalue->m.endpointIdentifierPresent) {
+ invokeStartElement (pctxt, "endpointIdentifier", -1);
+
+ stat = asn1PD_H225EndpointIdentifier (pctxt, &pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endpointIdentifier", -1);
+ }
+
+ /* decode callSpecific */
+
+ if (pvalue->m.callSpecificPresent) {
+ invokeStartElement (pctxt, "callSpecific", -1);
+
+ stat = asn1PD_H225ServiceControlIndication_callSpecific (pctxt, &pvalue->callSpecific);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callSpecific", -1);
+ }
+
+ /* decode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ }
+
+ /* decode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ }
+
+ /* decode integrityCheckValue */
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ }
+
+ /* decode featureSet */
+
+ if (pvalue->m.featureSetPresent) {
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ }
+
+ /* decode genericData */
+
+ if (pvalue->m.genericDataPresent) {
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ServiceControlResponse_result */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ServiceControlResponse_result (OOCTXT* pctxt, H225ServiceControlResponse_result* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 4);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* started */
+ case 0:
+ invokeStartElement (pctxt, "started", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "started", -1);
+
+ break;
+
+ /* failed */
+ case 1:
+ invokeStartElement (pctxt, "failed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "failed", -1);
+
+ break;
+
+ /* stopped */
+ case 2:
+ invokeStartElement (pctxt, "stopped", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "stopped", -1);
+
+ break;
+
+ /* notAvailable */
+ case 3:
+ invokeStartElement (pctxt, "notAvailable", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "notAvailable", -1);
+
+ break;
+
+ /* neededFeatureNotSupported */
+ case 4:
+ invokeStartElement (pctxt, "neededFeatureNotSupported", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "neededFeatureNotSupported", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 6;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ServiceControlResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ServiceControlResponse (OOCTXT* pctxt, H225ServiceControlResponse* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.resultPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cryptoTokensPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.integrityCheckValuePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.featureSetPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.genericDataPresent = optbit;
+
+ /* decode requestSeqNum */
+
+ invokeStartElement (pctxt, "requestSeqNum", -1);
+
+ stat = asn1PD_H225RequestSeqNum (pctxt, &pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestSeqNum", -1);
+
+ /* decode result */
+
+ if (pvalue->m.resultPresent) {
+ invokeStartElement (pctxt, "result", -1);
+
+ stat = asn1PD_H225ServiceControlResponse_result (pctxt, &pvalue->result);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "result", -1);
+ }
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ invokeStartElement (pctxt, "tokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tokens", -1);
+ }
+
+ /* decode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ invokeStartElement (pctxt, "cryptoTokens", -1);
+
+ stat = asn1PD_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoTokens", -1);
+ }
+
+ /* decode integrityCheckValue */
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ invokeStartElement (pctxt, "integrityCheckValue", -1);
+
+ stat = asn1PD_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCheckValue", -1);
+ }
+
+ /* decode featureSet */
+
+ if (pvalue->m.featureSetPresent) {
+ invokeStartElement (pctxt, "featureSet", -1);
+
+ stat = asn1PD_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "featureSet", -1);
+ }
+
+ /* decode genericData */
+
+ if (pvalue->m.genericDataPresent) {
+ invokeStartElement (pctxt, "genericData", -1);
+
+ stat = asn1PD_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AdmissionConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225AdmissionConfirm (OOCTXT* pctxt, H225_SeqOfH225AdmissionConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ H225AdmissionConfirm* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225AdmissionConfirm);
+
+ stat = asn1PD_H225AdmissionConfirm (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RasMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RasMessage (OOCTXT* pctxt, H225RasMessage* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 24);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* gatekeeperRequest */
+ case 0:
+ invokeStartElement (pctxt, "gatekeeperRequest", -1);
+
+ pvalue->u.gatekeeperRequest = ALLOC_ASN1ELEM (pctxt, H225GatekeeperRequest);
+
+ stat = asn1PD_H225GatekeeperRequest (pctxt, pvalue->u.gatekeeperRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperRequest", -1);
+
+ break;
+
+ /* gatekeeperConfirm */
+ case 1:
+ invokeStartElement (pctxt, "gatekeeperConfirm", -1);
+
+ pvalue->u.gatekeeperConfirm = ALLOC_ASN1ELEM (pctxt, H225GatekeeperConfirm);
+
+ stat = asn1PD_H225GatekeeperConfirm (pctxt, pvalue->u.gatekeeperConfirm);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperConfirm", -1);
+
+ break;
+
+ /* gatekeeperReject */
+ case 2:
+ invokeStartElement (pctxt, "gatekeeperReject", -1);
+
+ pvalue->u.gatekeeperReject = ALLOC_ASN1ELEM (pctxt, H225GatekeeperReject);
+
+ stat = asn1PD_H225GatekeeperReject (pctxt, pvalue->u.gatekeeperReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatekeeperReject", -1);
+
+ break;
+
+ /* registrationRequest */
+ case 3:
+ invokeStartElement (pctxt, "registrationRequest", -1);
+
+ pvalue->u.registrationRequest = ALLOC_ASN1ELEM (pctxt, H225RegistrationRequest);
+
+ stat = asn1PD_H225RegistrationRequest (pctxt, pvalue->u.registrationRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "registrationRequest", -1);
+
+ break;
+
+ /* registrationConfirm */
+ case 4:
+ invokeStartElement (pctxt, "registrationConfirm", -1);
+
+ pvalue->u.registrationConfirm = ALLOC_ASN1ELEM (pctxt, H225RegistrationConfirm);
+
+ stat = asn1PD_H225RegistrationConfirm (pctxt, pvalue->u.registrationConfirm);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "registrationConfirm", -1);
+
+ break;
+
+ /* registrationReject */
+ case 5:
+ invokeStartElement (pctxt, "registrationReject", -1);
+
+ pvalue->u.registrationReject = ALLOC_ASN1ELEM (pctxt, H225RegistrationReject);
+
+ stat = asn1PD_H225RegistrationReject (pctxt, pvalue->u.registrationReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "registrationReject", -1);
+
+ break;
+
+ /* unregistrationRequest */
+ case 6:
+ invokeStartElement (pctxt, "unregistrationRequest", -1);
+
+ pvalue->u.unregistrationRequest = ALLOC_ASN1ELEM (pctxt, H225UnregistrationRequest);
+
+ stat = asn1PD_H225UnregistrationRequest (pctxt, pvalue->u.unregistrationRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "unregistrationRequest", -1);
+
+ break;
+
+ /* unregistrationConfirm */
+ case 7:
+ invokeStartElement (pctxt, "unregistrationConfirm", -1);
+
+ pvalue->u.unregistrationConfirm = ALLOC_ASN1ELEM (pctxt, H225UnregistrationConfirm);
+
+ stat = asn1PD_H225UnregistrationConfirm (pctxt, pvalue->u.unregistrationConfirm);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "unregistrationConfirm", -1);
+
+ break;
+
+ /* unregistrationReject */
+ case 8:
+ invokeStartElement (pctxt, "unregistrationReject", -1);
+
+ pvalue->u.unregistrationReject = ALLOC_ASN1ELEM (pctxt, H225UnregistrationReject);
+
+ stat = asn1PD_H225UnregistrationReject (pctxt, pvalue->u.unregistrationReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "unregistrationReject", -1);
+
+ break;
+
+ /* admissionRequest */
+ case 9:
+ invokeStartElement (pctxt, "admissionRequest", -1);
+
+ pvalue->u.admissionRequest = ALLOC_ASN1ELEM (pctxt, H225AdmissionRequest);
+
+ stat = asn1PD_H225AdmissionRequest (pctxt, pvalue->u.admissionRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "admissionRequest", -1);
+
+ break;
+
+ /* admissionConfirm */
+ case 10:
+ invokeStartElement (pctxt, "admissionConfirm", -1);
+
+ pvalue->u.admissionConfirm = ALLOC_ASN1ELEM (pctxt, H225AdmissionConfirm);
+
+ stat = asn1PD_H225AdmissionConfirm (pctxt, pvalue->u.admissionConfirm);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "admissionConfirm", -1);
+
+ break;
+
+ /* admissionReject */
+ case 11:
+ invokeStartElement (pctxt, "admissionReject", -1);
+
+ pvalue->u.admissionReject = ALLOC_ASN1ELEM (pctxt, H225AdmissionReject);
+
+ stat = asn1PD_H225AdmissionReject (pctxt, pvalue->u.admissionReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "admissionReject", -1);
+
+ break;
+
+ /* bandwidthRequest */
+ case 12:
+ invokeStartElement (pctxt, "bandwidthRequest", -1);
+
+ pvalue->u.bandwidthRequest = ALLOC_ASN1ELEM (pctxt, H225BandwidthRequest);
+
+ stat = asn1PD_H225BandwidthRequest (pctxt, pvalue->u.bandwidthRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "bandwidthRequest", -1);
+
+ break;
+
+ /* bandwidthConfirm */
+ case 13:
+ invokeStartElement (pctxt, "bandwidthConfirm", -1);
+
+ pvalue->u.bandwidthConfirm = ALLOC_ASN1ELEM (pctxt, H225BandwidthConfirm);
+
+ stat = asn1PD_H225BandwidthConfirm (pctxt, pvalue->u.bandwidthConfirm);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "bandwidthConfirm", -1);
+
+ break;
+
+ /* bandwidthReject */
+ case 14:
+ invokeStartElement (pctxt, "bandwidthReject", -1);
+
+ pvalue->u.bandwidthReject = ALLOC_ASN1ELEM (pctxt, H225BandwidthReject);
+
+ stat = asn1PD_H225BandwidthReject (pctxt, pvalue->u.bandwidthReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "bandwidthReject", -1);
+
+ break;
+
+ /* disengageRequest */
+ case 15:
+ invokeStartElement (pctxt, "disengageRequest", -1);
+
+ pvalue->u.disengageRequest = ALLOC_ASN1ELEM (pctxt, H225DisengageRequest);
+
+ stat = asn1PD_H225DisengageRequest (pctxt, pvalue->u.disengageRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "disengageRequest", -1);
+
+ break;
+
+ /* disengageConfirm */
+ case 16:
+ invokeStartElement (pctxt, "disengageConfirm", -1);
+
+ pvalue->u.disengageConfirm = ALLOC_ASN1ELEM (pctxt, H225DisengageConfirm);
+
+ stat = asn1PD_H225DisengageConfirm (pctxt, pvalue->u.disengageConfirm);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "disengageConfirm", -1);
+
+ break;
+
+ /* disengageReject */
+ case 17:
+ invokeStartElement (pctxt, "disengageReject", -1);
+
+ pvalue->u.disengageReject = ALLOC_ASN1ELEM (pctxt, H225DisengageReject);
+
+ stat = asn1PD_H225DisengageReject (pctxt, pvalue->u.disengageReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "disengageReject", -1);
+
+ break;
+
+ /* locationRequest */
+ case 18:
+ invokeStartElement (pctxt, "locationRequest", -1);
+
+ pvalue->u.locationRequest = ALLOC_ASN1ELEM (pctxt, H225LocationRequest);
+
+ stat = asn1PD_H225LocationRequest (pctxt, pvalue->u.locationRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "locationRequest", -1);
+
+ break;
+
+ /* locationConfirm */
+ case 19:
+ invokeStartElement (pctxt, "locationConfirm", -1);
+
+ pvalue->u.locationConfirm = ALLOC_ASN1ELEM (pctxt, H225LocationConfirm);
+
+ stat = asn1PD_H225LocationConfirm (pctxt, pvalue->u.locationConfirm);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "locationConfirm", -1);
+
+ break;
+
+ /* locationReject */
+ case 20:
+ invokeStartElement (pctxt, "locationReject", -1);
+
+ pvalue->u.locationReject = ALLOC_ASN1ELEM (pctxt, H225LocationReject);
+
+ stat = asn1PD_H225LocationReject (pctxt, pvalue->u.locationReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "locationReject", -1);
+
+ break;
+
+ /* infoRequest */
+ case 21:
+ invokeStartElement (pctxt, "infoRequest", -1);
+
+ pvalue->u.infoRequest = ALLOC_ASN1ELEM (pctxt, H225InfoRequest);
+
+ stat = asn1PD_H225InfoRequest (pctxt, pvalue->u.infoRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "infoRequest", -1);
+
+ break;
+
+ /* infoRequestResponse */
+ case 22:
+ invokeStartElement (pctxt, "infoRequestResponse", -1);
+
+ pvalue->u.infoRequestResponse = ALLOC_ASN1ELEM (pctxt, H225InfoRequestResponse);
+
+ stat = asn1PD_H225InfoRequestResponse (pctxt, pvalue->u.infoRequestResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "infoRequestResponse", -1);
+
+ break;
+
+ /* nonStandardMessage */
+ case 23:
+ invokeStartElement (pctxt, "nonStandardMessage", -1);
+
+ pvalue->u.nonStandardMessage = ALLOC_ASN1ELEM (pctxt, H225NonStandardMessage);
+
+ stat = asn1PD_H225NonStandardMessage (pctxt, pvalue->u.nonStandardMessage);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardMessage", -1);
+
+ break;
+
+ /* unknownMessageResponse */
+ case 24:
+ invokeStartElement (pctxt, "unknownMessageResponse", -1);
+
+ pvalue->u.unknownMessageResponse = ALLOC_ASN1ELEM (pctxt, H225UnknownMessageResponse);
+
+ stat = asn1PD_H225UnknownMessageResponse (pctxt, pvalue->u.unknownMessageResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "unknownMessageResponse", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 26;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* requestInProgress */
+ case 26:
+ invokeStartElement (pctxt, "requestInProgress", -1);
+
+ pvalue->u.requestInProgress = ALLOC_ASN1ELEM (pctxt, H225RequestInProgress);
+
+ stat = asn1PD_H225RequestInProgress (pctxt, pvalue->u.requestInProgress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestInProgress", -1);
+
+ break;
+
+ /* resourcesAvailableIndicate */
+ case 27:
+ invokeStartElement (pctxt, "resourcesAvailableIndicate", -1);
+
+ pvalue->u.resourcesAvailableIndicate = ALLOC_ASN1ELEM (pctxt, H225ResourcesAvailableIndicate);
+
+ stat = asn1PD_H225ResourcesAvailableIndicate (pctxt, pvalue->u.resourcesAvailableIndicate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "resourcesAvailableIndicate", -1);
+
+ break;
+
+ /* resourcesAvailableConfirm */
+ case 28:
+ invokeStartElement (pctxt, "resourcesAvailableConfirm", -1);
+
+ pvalue->u.resourcesAvailableConfirm = ALLOC_ASN1ELEM (pctxt, H225ResourcesAvailableConfirm);
+
+ stat = asn1PD_H225ResourcesAvailableConfirm (pctxt, pvalue->u.resourcesAvailableConfirm);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "resourcesAvailableConfirm", -1);
+
+ break;
+
+ /* infoRequestAck */
+ case 29:
+ invokeStartElement (pctxt, "infoRequestAck", -1);
+
+ pvalue->u.infoRequestAck = ALLOC_ASN1ELEM (pctxt, H225InfoRequestAck);
+
+ stat = asn1PD_H225InfoRequestAck (pctxt, pvalue->u.infoRequestAck);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "infoRequestAck", -1);
+
+ break;
+
+ /* infoRequestNak */
+ case 30:
+ invokeStartElement (pctxt, "infoRequestNak", -1);
+
+ pvalue->u.infoRequestNak = ALLOC_ASN1ELEM (pctxt, H225InfoRequestNak);
+
+ stat = asn1PD_H225InfoRequestNak (pctxt, pvalue->u.infoRequestNak);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "infoRequestNak", -1);
+
+ break;
+
+ /* serviceControlIndication */
+ case 31:
+ invokeStartElement (pctxt, "serviceControlIndication", -1);
+
+ pvalue->u.serviceControlIndication = ALLOC_ASN1ELEM (pctxt, H225ServiceControlIndication);
+
+ stat = asn1PD_H225ServiceControlIndication (pctxt, pvalue->u.serviceControlIndication);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "serviceControlIndication", -1);
+
+ break;
+
+ /* serviceControlResponse */
+ case 32:
+ invokeStartElement (pctxt, "serviceControlResponse", -1);
+
+ pvalue->u.serviceControlResponse = ALLOC_ASN1ELEM (pctxt, H225ServiceControlResponse);
+
+ stat = asn1PD_H225ServiceControlResponse (pctxt, pvalue->u.serviceControlResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "serviceControlResponse", -1);
+
+ break;
+
+ /* admissionConfirmSequence */
+ case 33:
+ invokeStartElement (pctxt, "admissionConfirmSequence", -1);
+
+ pvalue->u.admissionConfirmSequence = ALLOC_ASN1ELEM (pctxt, H225_SeqOfH225AdmissionConfirm);
+
+ stat = asn1PD_H225_SeqOfH225AdmissionConfirm (pctxt, pvalue->u.admissionConfirmSequence);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "admissionConfirmSequence", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
diff --git a/addons/ooh323c/src/h323/H323-MESSAGESEnc.c b/addons/ooh323c/src/h323/H323-MESSAGESEnc.c
new file mode 100644
index 000000000..62a2cd006
--- /dev/null
+++ b/addons/ooh323c/src/h323/H323-MESSAGESEnc.c
@@ -0,0 +1,22596 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#include "ooasn1.h"
+#include "H323-MESSAGES.h"
+
+/**************************************************************/
+/* */
+/* ScreeningIndicator */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ScreeningIndicator (OOCTXT* pctxt, H225ScreeningIndicator value)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1BOOL extbit;
+
+ extbit = 0;
+
+ switch (value) {
+ case userProvidedNotScreened: ui = 0; break;
+ case userProvidedVerifiedAndPassed: ui = 1; break;
+ case userProvidedVerifiedAndFailed: ui = 2; break;
+ case networkProvided: ui = 3; break;
+ default: ui = value; extbit = 1;
+ }
+
+ /* extension bit */
+
+ encodeBit (pctxt, extbit);
+
+ if (extbit) {
+ stat = encodeSmallNonNegWholeNumber (pctxt, ui);
+ }
+ else {
+ stat = encodeConsUnsigned (pctxt, ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NumberDigits */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_NumberDigits_CharSet;
+
+EXTERN int asn1PE_H225NumberDigits (OOCTXT* pctxt, H225NumberDigits value)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, value, gs_H323_MESSAGES_NumberDigits_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TBCD_STRING */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_TBCD_STRING_CharSet;
+
+EXTERN int asn1PE_H225TBCD_STRING (OOCTXT* pctxt, H225TBCD_STRING value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConstrainedStringEx (pctxt, value, gs_H323_MESSAGES_TBCD_STRING_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GloballyUniqueID */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GloballyUniqueID (OOCTXT* pctxt, H225GloballyUniqueID* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ConferenceIdentifier (OOCTXT* pctxt, H225ConferenceIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = asn1PE_H225GloballyUniqueID (pctxt, pvalue);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestSeqNum */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RequestSeqNum (OOCTXT* pctxt, H225RequestSeqNum value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConsUnsigned (pctxt, value, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GatekeeperIdentifier (OOCTXT* pctxt, H225GatekeeperIdentifier value)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBMPString (pctxt, value, 0);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BandWidth */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225BandWidth (OOCTXT* pctxt, H225BandWidth value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConsUnsigned (pctxt, value, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallReferenceValue */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallReferenceValue (OOCTXT* pctxt, H225CallReferenceValue value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConsUnsigned (pctxt, value, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EndpointIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225EndpointIdentifier (OOCTXT* pctxt, H225EndpointIdentifier value)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBMPString (pctxt, value, 0);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ProtocolIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ProtocolIdentifier (OOCTXT* pctxt, H225ProtocolIdentifier value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeObjectIdentifier (pctxt, &value);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TimeToLive */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TimeToLive (OOCTXT* pctxt, H225TimeToLive value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConsUnsigned (pctxt, value, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H248PackagesDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H248PackagesDescriptor (OOCTXT* pctxt, H225H248PackagesDescriptor value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeOctetString (pctxt, value.numocts, value.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H248SignalsDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H248SignalsDescriptor (OOCTXT* pctxt, H225H248SignalsDescriptor value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeOctetString (pctxt, value.numocts, value.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GenericIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GenericIdentifier (OOCTXT* pctxt, H225GenericIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* standard */
+ case 1:
+ if ( (pvalue->u.standard >= 0 && pvalue->u.standard <= 16383) ) {
+ extbit = 0;
+ }
+ else extbit = 1;
+
+ /* extension bit */
+
+ encodeBit (pctxt, extbit);
+
+ if (extbit) {
+ stat = encodeUnconsInteger (pctxt, pvalue->u.standard);
+ if (stat != ASN_OK) return stat;
+ }
+ else {
+ stat = encodeConsInteger (pctxt, pvalue->u.standard, 0, 16383);
+ if (stat != ASN_OK) return stat;
+ }
+ break;
+
+ /* oid */
+ case 2:
+ stat = encodeObjectIdentifier (pctxt, pvalue->u.oid);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* nonStandard */
+ case 3:
+ stat = asn1PE_H225GloballyUniqueID (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipAddress_ip */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress_ipAddress_ip (OOCTXT* pctxt, H225TransportAddress_ipAddress_ip* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress_ipAddress (OOCTXT* pctxt, H225TransportAddress_ipAddress* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode ip */
+
+ stat = asn1PE_H225TransportAddress_ipAddress_ip (pctxt, &pvalue->ip);
+ if (stat != ASN_OK) return stat;
+
+ /* encode port */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->port, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_ip */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress_ipSourceRoute_ip (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_ip* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_route_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_route_element* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TransportAddress_ipSourceRoute_route_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225_SeqOfH225TransportAddress_ipSourceRoute_route_element* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H225TransportAddress_ipSourceRoute_route_element (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_routing */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress_ipSourceRoute_routing (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_routing* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* strict */
+ case 1:
+ /* NULL */
+ break;
+
+ /* loose */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress_ipSourceRoute (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode ip */
+
+ stat = asn1PE_H225TransportAddress_ipSourceRoute_ip (pctxt, &pvalue->ip);
+ if (stat != ASN_OK) return stat;
+
+ /* encode port */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->port, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode route */
+
+ stat = asn1PE_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (pctxt, &pvalue->route);
+ if (stat != ASN_OK) return stat;
+
+ /* encode routing */
+
+ stat = asn1PE_H225TransportAddress_ipSourceRoute_routing (pctxt, &pvalue->routing);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_node */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress_ipxAddress_node (OOCTXT* pctxt, H225TransportAddress_ipxAddress_node* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 6, 6, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_netnum */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress_ipxAddress_netnum (OOCTXT* pctxt, H225TransportAddress_ipxAddress_netnum* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_port */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress_ipxAddress_port (OOCTXT* pctxt, H225TransportAddress_ipxAddress_port* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 2, 2, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress_ipxAddress (OOCTXT* pctxt, H225TransportAddress_ipxAddress* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode node */
+
+ stat = asn1PE_H225TransportAddress_ipxAddress_node (pctxt, &pvalue->node);
+ if (stat != ASN_OK) return stat;
+
+ /* encode netnum */
+
+ stat = asn1PE_H225TransportAddress_ipxAddress_netnum (pctxt, &pvalue->netnum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode port */
+
+ stat = asn1PE_H225TransportAddress_ipxAddress_port (pctxt, &pvalue->port);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ip6Address_ip */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress_ip6Address_ip (OOCTXT* pctxt, H225TransportAddress_ip6Address_ip* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ip6Address */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress_ip6Address (OOCTXT* pctxt, H225TransportAddress_ip6Address* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode ip */
+
+ stat = asn1PE_H225TransportAddress_ip6Address_ip (pctxt, &pvalue->ip);
+ if (stat != ASN_OK) return stat;
+
+ /* encode port */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->port, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_netBios */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress_netBios (OOCTXT* pctxt, H225TransportAddress_netBios* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_nsap */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress_nsap (OOCTXT* pctxt, H225TransportAddress_nsap* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H221NonStandard */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H221NonStandard (OOCTXT* pctxt, H225H221NonStandard* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode t35CountryCode */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t35CountryCode, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode t35Extension */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t35Extension, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode manufacturerCode */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->manufacturerCode, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225NonStandardIdentifier (OOCTXT* pctxt, H225NonStandardIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* object */
+ case 1:
+ stat = encodeObjectIdentifier (pctxt, pvalue->u.object);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h221NonStandard */
+ case 2:
+ stat = asn1PE_H225H221NonStandard (pctxt, pvalue->u.h221NonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225NonStandardParameter (OOCTXT* pctxt, H225NonStandardParameter* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode nonStandardIdentifier */
+
+ stat = asn1PE_H225NonStandardIdentifier (pctxt, &pvalue->nonStandardIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode data */
+
+ stat = encodeOctetString (pctxt, pvalue->data.numocts, pvalue->data.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportAddress (OOCTXT* pctxt, H225TransportAddress* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 7);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* ipAddress */
+ case 1:
+ stat = asn1PE_H225TransportAddress_ipAddress (pctxt, pvalue->u.ipAddress);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* ipSourceRoute */
+ case 2:
+ stat = asn1PE_H225TransportAddress_ipSourceRoute (pctxt, pvalue->u.ipSourceRoute);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* ipxAddress */
+ case 3:
+ stat = asn1PE_H225TransportAddress_ipxAddress (pctxt, pvalue->u.ipxAddress);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* ip6Address */
+ case 4:
+ stat = asn1PE_H225TransportAddress_ip6Address (pctxt, pvalue->u.ip6Address);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* netBios */
+ case 5:
+ stat = asn1PE_H225TransportAddress_netBios (pctxt, pvalue->u.netBios);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* nsap */
+ case 6:
+ stat = asn1PE_H225TransportAddress_nsap (pctxt, pvalue->u.nsap);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* nonStandardAddress */
+ case 7:
+ stat = asn1PE_H225NonStandardParameter (pctxt, pvalue->u.nonStandardAddress);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 8);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PublicTypeOfNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225PublicTypeOfNumber (OOCTXT* pctxt, H225PublicTypeOfNumber* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 6);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* unknown */
+ case 1:
+ /* NULL */
+ break;
+
+ /* internationalNumber */
+ case 2:
+ /* NULL */
+ break;
+
+ /* nationalNumber */
+ case 3:
+ /* NULL */
+ break;
+
+ /* networkSpecificNumber */
+ case 4:
+ /* NULL */
+ break;
+
+ /* subscriberNumber */
+ case 5:
+ /* NULL */
+ break;
+
+ /* abbreviatedNumber */
+ case 6:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PublicPartyNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225PublicPartyNumber (OOCTXT* pctxt, H225PublicPartyNumber* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode publicTypeOfNumber */
+
+ stat = asn1PE_H225PublicTypeOfNumber (pctxt, &pvalue->publicTypeOfNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode publicNumberDigits */
+
+ stat = asn1PE_H225NumberDigits (pctxt, pvalue->publicNumberDigits);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PrivateTypeOfNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225PrivateTypeOfNumber (OOCTXT* pctxt, H225PrivateTypeOfNumber* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 6);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* unknown */
+ case 1:
+ /* NULL */
+ break;
+
+ /* level2RegionalNumber */
+ case 2:
+ /* NULL */
+ break;
+
+ /* level1RegionalNumber */
+ case 3:
+ /* NULL */
+ break;
+
+ /* pISNSpecificNumber */
+ case 4:
+ /* NULL */
+ break;
+
+ /* localNumber */
+ case 5:
+ /* NULL */
+ break;
+
+ /* abbreviatedNumber */
+ case 6:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PrivatePartyNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225PrivatePartyNumber (OOCTXT* pctxt, H225PrivatePartyNumber* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode privateTypeOfNumber */
+
+ stat = asn1PE_H225PrivateTypeOfNumber (pctxt, &pvalue->privateTypeOfNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode privateNumberDigits */
+
+ stat = asn1PE_H225NumberDigits (pctxt, pvalue->privateNumberDigits);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PartyNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225PartyNumber (OOCTXT* pctxt, H225PartyNumber* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 5);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* e164Number */
+ case 1:
+ stat = asn1PE_H225PublicPartyNumber (pctxt, pvalue->u.e164Number);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* dataPartyNumber */
+ case 2:
+ stat = asn1PE_H225NumberDigits (pctxt, pvalue->u.dataPartyNumber);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* telexPartyNumber */
+ case 3:
+ stat = asn1PE_H225NumberDigits (pctxt, pvalue->u.telexPartyNumber);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* privateNumber */
+ case 4:
+ stat = asn1PE_H225PrivatePartyNumber (pctxt, pvalue->u.privateNumber);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* nationalStandardPartyNumber */
+ case 5:
+ stat = asn1PE_H225NumberDigits (pctxt, pvalue->u.nationalStandardPartyNumber);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_system_id */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_system_id_sid_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_system_id_mid_CharSet;
+
+EXTERN int asn1PE_H225ANSI_41_UIM_system_id (OOCTXT* pctxt, H225ANSI_41_UIM_system_id* pvalue)
+{
+ static Asn1SizeCnst sid_lsize1 = { 0, 1, 4, 0 };
+ static Asn1SizeCnst mid_lsize1 = { 0, 1, 4, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* sid */
+ case 1:
+ addSizeConstraint (pctxt, &sid_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->u.sid, gs_H323_MESSAGES_ANSI_41_UIM_system_id_sid_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* mid */
+ case 2:
+ addSizeConstraint (pctxt, &mid_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->u.mid, gs_H323_MESSAGES_ANSI_41_UIM_system_id_mid_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_systemMyTypeCode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ANSI_41_UIM_systemMyTypeCode (OOCTXT* pctxt, H225ANSI_41_UIM_systemMyTypeCode* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 1, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_systemAccessType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ANSI_41_UIM_systemAccessType (OOCTXT* pctxt, H225ANSI_41_UIM_systemAccessType* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 1, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_qualificationInformationCode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ANSI_41_UIM_qualificationInformationCode (OOCTXT* pctxt, H225ANSI_41_UIM_qualificationInformationCode* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 1, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_imsi_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_min_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_mdn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_msisdn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_esn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_mscid_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_sesn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_soc_CharSet;
+
+EXTERN int asn1PE_H225ANSI_41_UIM (OOCTXT* pctxt, H225ANSI_41_UIM* pvalue)
+{
+ static Asn1SizeCnst imsi_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst min_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst mdn_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst msisdn_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst esn_lsize1 = { 0, 16, 16, 0 };
+ static Asn1SizeCnst mscid_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst sesn_lsize1 = { 0, 16, 16, 0 };
+ static Asn1SizeCnst soc_lsize1 = { 0, 3, 16, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.imsiPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.minPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mdnPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.msisdnPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.esnPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mscidPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.systemMyTypeCodePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.systemAccessTypePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.qualificationInformationCodePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sesnPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.socPresent);
+
+ /* encode imsi */
+
+ if (pvalue->m.imsiPresent) {
+ addSizeConstraint (pctxt, &imsi_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->imsi, gs_H323_MESSAGES_ANSI_41_UIM_imsi_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode min */
+
+ if (pvalue->m.minPresent) {
+ addSizeConstraint (pctxt, &min_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->min, gs_H323_MESSAGES_ANSI_41_UIM_min_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode mdn */
+
+ if (pvalue->m.mdnPresent) {
+ addSizeConstraint (pctxt, &mdn_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->mdn, gs_H323_MESSAGES_ANSI_41_UIM_mdn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode msisdn */
+
+ if (pvalue->m.msisdnPresent) {
+ addSizeConstraint (pctxt, &msisdn_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->msisdn, gs_H323_MESSAGES_ANSI_41_UIM_msisdn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode esn */
+
+ if (pvalue->m.esnPresent) {
+ addSizeConstraint (pctxt, &esn_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->esn, gs_H323_MESSAGES_ANSI_41_UIM_esn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode mscid */
+
+ if (pvalue->m.mscidPresent) {
+ addSizeConstraint (pctxt, &mscid_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->mscid, gs_H323_MESSAGES_ANSI_41_UIM_mscid_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode system_id */
+
+ stat = asn1PE_H225ANSI_41_UIM_system_id (pctxt, &pvalue->system_id);
+ if (stat != ASN_OK) return stat;
+
+ /* encode systemMyTypeCode */
+
+ if (pvalue->m.systemMyTypeCodePresent) {
+ stat = asn1PE_H225ANSI_41_UIM_systemMyTypeCode (pctxt, &pvalue->systemMyTypeCode);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode systemAccessType */
+
+ if (pvalue->m.systemAccessTypePresent) {
+ stat = asn1PE_H225ANSI_41_UIM_systemAccessType (pctxt, &pvalue->systemAccessType);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode qualificationInformationCode */
+
+ if (pvalue->m.qualificationInformationCodePresent) {
+ stat = asn1PE_H225ANSI_41_UIM_qualificationInformationCode (pctxt, &pvalue->qualificationInformationCode);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode sesn */
+
+ if (pvalue->m.sesnPresent) {
+ addSizeConstraint (pctxt, &sesn_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->sesn, gs_H323_MESSAGES_ANSI_41_UIM_sesn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode soc */
+
+ if (pvalue->m.socPresent) {
+ addSizeConstraint (pctxt, &soc_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->soc, gs_H323_MESSAGES_ANSI_41_UIM_soc_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GSM_UIM_tmsi */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GSM_UIM_tmsi (OOCTXT* pctxt, H225GSM_UIM_tmsi* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GSM_UIM */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_imsi_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_msisdn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_imei_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_hplmn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_vplmn_CharSet;
+
+EXTERN int asn1PE_H225GSM_UIM (OOCTXT* pctxt, H225GSM_UIM* pvalue)
+{
+ static Asn1SizeCnst imsi_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst msisdn_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst imei_lsize1 = { 0, 15, 16, 0 };
+ static Asn1SizeCnst hplmn_lsize1 = { 0, 1, 4, 0 };
+ static Asn1SizeCnst vplmn_lsize1 = { 0, 1, 4, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.imsiPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tmsiPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.msisdnPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.imeiPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.hplmnPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.vplmnPresent);
+
+ /* encode imsi */
+
+ if (pvalue->m.imsiPresent) {
+ addSizeConstraint (pctxt, &imsi_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->imsi, gs_H323_MESSAGES_GSM_UIM_imsi_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode tmsi */
+
+ if (pvalue->m.tmsiPresent) {
+ stat = asn1PE_H225GSM_UIM_tmsi (pctxt, &pvalue->tmsi);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode msisdn */
+
+ if (pvalue->m.msisdnPresent) {
+ addSizeConstraint (pctxt, &msisdn_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->msisdn, gs_H323_MESSAGES_GSM_UIM_msisdn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode imei */
+
+ if (pvalue->m.imeiPresent) {
+ addSizeConstraint (pctxt, &imei_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->imei, gs_H323_MESSAGES_GSM_UIM_imei_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode hplmn */
+
+ if (pvalue->m.hplmnPresent) {
+ addSizeConstraint (pctxt, &hplmn_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->hplmn, gs_H323_MESSAGES_GSM_UIM_hplmn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode vplmn */
+
+ if (pvalue->m.vplmnPresent) {
+ addSizeConstraint (pctxt, &vplmn_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->vplmn, gs_H323_MESSAGES_GSM_UIM_vplmn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MobileUIM */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225MobileUIM (OOCTXT* pctxt, H225MobileUIM* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* ansi_41_uim */
+ case 1:
+ stat = asn1PE_H225ANSI_41_UIM (pctxt, pvalue->u.ansi_41_uim);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* gsm_uim */
+ case 2:
+ stat = asn1PE_H225GSM_UIM (pctxt, pvalue->u.gsm_uim);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AliasAddress */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_AliasAddress_dialedDigits_CharSet;
+
+EXTERN int asn1PE_H225AliasAddress (OOCTXT* pctxt, H225AliasAddress* pvalue)
+{
+ static Asn1SizeCnst dialedDigits_lsize1 = { 0, 1, 128, 0 };
+ static Asn1SizeCnst h323_ID_lsize1 = { 0, 1, 256, 0 };
+ static Asn1SizeCnst url_ID_lsize1 = { 0, 1, 512, 0 };
+ static Asn1SizeCnst email_ID_lsize1 = { 0, 1, 512, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* dialedDigits */
+ case 1:
+ addSizeConstraint (pctxt, &dialedDigits_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->u.dialedDigits, gs_H323_MESSAGES_AliasAddress_dialedDigits_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h323_ID */
+ case 2:
+ addSizeConstraint (pctxt, &h323_ID_lsize1);
+
+ stat = encodeBMPString (pctxt, pvalue->u.h323_ID, 0);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* url_ID */
+ case 3:
+ addSizeConstraint (&lctxt, &url_ID_lsize1);
+
+ stat = encodeConstrainedStringEx (&lctxt, pvalue->u.url_ID, 0, 8, 7, 7);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* transportID */
+ case 4:
+ stat = asn1PE_H225TransportAddress (&lctxt, pvalue->u.transportID);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* email_ID */
+ case 5:
+ addSizeConstraint (&lctxt, &email_ID_lsize1);
+
+ stat = encodeConstrainedStringEx (&lctxt, pvalue->u.email_ID, 0, 8, 7, 7);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* partyNumber */
+ case 6:
+ stat = asn1PE_H225PartyNumber (&lctxt, pvalue->u.partyNumber);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* mobileUIM */
+ case 7:
+ stat = asn1PE_H225MobileUIM (&lctxt, pvalue->u.mobileUIM);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Content_compound */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Content_compound (OOCTXT* pctxt, H225Content_compound* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 512, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H225EnumeratedParameter (pctxt, (H225EnumeratedParameter*)((H225EnumeratedParameter*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Content_nested */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Content_nested (OOCTXT* pctxt, H225Content_nested* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H225GenericData (pctxt, (H225GenericData*)((H225GenericData*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Content */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Content (OOCTXT* pctxt, H225Content* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 12);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 11);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* raw */
+ case 1:
+ stat = encodeOctetString (pctxt, pvalue->u.raw->numocts, pvalue->u.raw->data);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* text */
+ case 2:
+ stat = encodeConstrainedStringEx (pctxt, pvalue->u.text, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* unicode */
+ case 3:
+ stat = encodeBMPString (pctxt, pvalue->u.unicode, 0);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* bool_ */
+ case 4:
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->u.bool_);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* number8 */
+ case 5:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.number8, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* number16 */
+ case 6:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.number16, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* number32 */
+ case 7:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.number32, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* id */
+ case 8:
+ stat = asn1PE_H225GenericIdentifier (pctxt, pvalue->u.id);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* alias */
+ case 9:
+ stat = asn1PE_H225AliasAddress (pctxt, pvalue->u.alias);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* transport */
+ case 10:
+ stat = asn1PE_H225TransportAddress (pctxt, pvalue->u.transport);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* compound */
+ case 11:
+ stat = asn1PE_H225Content_compound (pctxt, pvalue->u.compound);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* nested */
+ case 12:
+ stat = asn1PE_H225Content_nested (pctxt, pvalue->u.nested);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 13);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EnumeratedParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225EnumeratedParameter (OOCTXT* pctxt, H225EnumeratedParameter* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.contentPresent);
+
+ /* encode id */
+
+ stat = asn1PE_H225GenericIdentifier (pctxt, &pvalue->id);
+ if (stat != ASN_OK) return stat;
+
+ /* encode content */
+
+ if (pvalue->m.contentPresent) {
+ stat = asn1PE_H225Content (pctxt, &pvalue->content);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GenericData_parameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GenericData_parameters (OOCTXT* pctxt, H225GenericData_parameters* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 512, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H225EnumeratedParameter (pctxt, ((H225EnumeratedParameter*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GenericData */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GenericData (OOCTXT* pctxt, H225GenericData* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.parametersPresent);
+
+ /* encode id */
+
+ stat = asn1PE_H225GenericIdentifier (pctxt, &pvalue->id);
+ if (stat != ASN_OK) return stat;
+
+ /* encode parameters */
+
+ if (pvalue->m.parametersPresent) {
+ stat = asn1PE_H225GenericData_parameters (pctxt, &pvalue->parameters);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FeatureDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225FeatureDescriptor (OOCTXT* pctxt, H225FeatureDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = asn1PE_H225GenericData (pctxt, pvalue);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FastStartToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225FastStartToken (OOCTXT* pctxt, H225FastStartToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = asn1PE_H235ClearToken (pctxt, pvalue);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncodedFastStartToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225EncodedFastStartToken (OOCTXT* pctxt, H225EncodedFastStartToken value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeOpenType (pctxt, value.numocts, value.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UserInformation_user_data_user_information */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H323_UserInformation_user_data_user_information (OOCTXT* pctxt, H225H323_UserInformation_user_data_user_information* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 131, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EndpointType_set */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225EndpointType_set (OOCTXT* pctxt, H225EndpointType_set* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 32, 32, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VendorIdentifier_productId */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225VendorIdentifier_productId (OOCTXT* pctxt, H225VendorIdentifier_productId* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VendorIdentifier_versionId */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225VendorIdentifier_versionId (OOCTXT* pctxt, H225VendorIdentifier_versionId* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CicInfo_cic_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CicInfo_cic_element (OOCTXT* pctxt, H225CicInfo_cic_element* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 2, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CicInfo_pointCode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CicInfo_pointCode (OOCTXT* pctxt, H225CicInfo_pointCode* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 2, 5, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CarrierInfo_carrierIdentificationCode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CarrierInfo_carrierIdentificationCode (OOCTXT* pctxt, H225CarrierInfo_carrierIdentificationCode* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 3, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallTerminationCause_releaseCompleteCauseIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallTerminationCause_releaseCompleteCauseIE (OOCTXT* pctxt, H225CallTerminationCause_releaseCompleteCauseIE* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 2, 32, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AliasAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225AliasAddress (OOCTXT* pctxt, H225_SeqOfH225AliasAddress* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225AliasAddress (pctxt, ((H225AliasAddress*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VendorIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225VendorIdentifier (OOCTXT* pctxt, H225VendorIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.enterpriseNumberPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.productIdPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.versionIdPresent);
+
+ /* encode vendor */
+
+ stat = asn1PE_H225H221NonStandard (pctxt, &pvalue->vendor);
+ if (stat != ASN_OK) return stat;
+
+ /* encode productId */
+
+ if (pvalue->m.productIdPresent) {
+ stat = asn1PE_H225VendorIdentifier_productId (pctxt, &pvalue->productId);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode versionId */
+
+ if (pvalue->m.versionIdPresent) {
+ stat = asn1PE_H225VendorIdentifier_versionId (pctxt, &pvalue->versionId);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.enterpriseNumberPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.enterpriseNumberPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeObjectIdentifier (&lctxt, &pvalue->enterpriseNumber);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GatekeeperInfo (OOCTXT* pctxt, H225GatekeeperInfo* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataRate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225DataRate (OOCTXT* pctxt, H225DataRate* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.channelMultiplierPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode channelRate */
+
+ stat = asn1PE_H225BandWidth (pctxt, pvalue->channelRate);
+ if (stat != ASN_OK) return stat;
+
+ /* encode channelMultiplier */
+
+ if (pvalue->m.channelMultiplierPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->channelMultiplier, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225DataRate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225DataRate (OOCTXT* pctxt, H225_SeqOfH225DataRate* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225DataRate (pctxt, ((H225DataRate*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SupportedPrefix */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225SupportedPrefix (OOCTXT* pctxt, H225SupportedPrefix* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode prefix */
+
+ stat = asn1PE_H225AliasAddress (pctxt, &pvalue->prefix);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225SupportedPrefix */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225SupportedPrefix (OOCTXT* pctxt, H225_SeqOfH225SupportedPrefix* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225SupportedPrefix (pctxt, ((H225SupportedPrefix*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H310Caps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H310Caps (OOCTXT* pctxt, H225H310Caps* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
+ pvalue->m.supportedPrefixesPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataRatesSupportedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.dataRatesSupportedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedPrefixesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H320Caps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H320Caps (OOCTXT* pctxt, H225H320Caps* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
+ pvalue->m.supportedPrefixesPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataRatesSupportedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.dataRatesSupportedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedPrefixesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H321Caps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H321Caps (OOCTXT* pctxt, H225H321Caps* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
+ pvalue->m.supportedPrefixesPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataRatesSupportedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.dataRatesSupportedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedPrefixesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H322Caps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H322Caps (OOCTXT* pctxt, H225H322Caps* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
+ pvalue->m.supportedPrefixesPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataRatesSupportedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.dataRatesSupportedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedPrefixesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323Caps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H323Caps (OOCTXT* pctxt, H225H323Caps* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
+ pvalue->m.supportedPrefixesPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataRatesSupportedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.dataRatesSupportedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedPrefixesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H324Caps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H324Caps (OOCTXT* pctxt, H225H324Caps* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
+ pvalue->m.supportedPrefixesPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataRatesSupportedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.dataRatesSupportedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedPrefixesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VoiceCaps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225VoiceCaps (OOCTXT* pctxt, H225VoiceCaps* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
+ pvalue->m.supportedPrefixesPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataRatesSupportedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.dataRatesSupportedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedPrefixesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T120OnlyCaps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225T120OnlyCaps (OOCTXT* pctxt, H225T120OnlyCaps* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
+ pvalue->m.supportedPrefixesPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataRatesSupportedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.dataRatesSupportedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedPrefixesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardProtocol */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225NonStandardProtocol (OOCTXT* pctxt, H225NonStandardProtocol* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataRatesSupportedPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode dataRatesSupported */
+
+ if (pvalue->m.dataRatesSupportedPresent) {
+ stat = asn1PE_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode supportedPrefixes */
+
+ stat = asn1PE_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T38FaxAnnexbOnlyCaps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225T38FaxAnnexbOnlyCaps (OOCTXT* pctxt, H225T38FaxAnnexbOnlyCaps* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataRatesSupportedPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode dataRatesSupported */
+
+ if (pvalue->m.dataRatesSupportedPresent) {
+ stat = asn1PE_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode supportedPrefixes */
+
+ stat = asn1PE_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+
+ /* encode t38FaxProtocol */
+
+ stat = asn1PE_H245DataProtocolCapability (pctxt, &pvalue->t38FaxProtocol);
+ if (stat != ASN_OK) return stat;
+
+ /* encode t38FaxProfile */
+
+ stat = asn1PE_H245T38FaxProfile (pctxt, &pvalue->t38FaxProfile);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SIPCaps */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225SIPCaps (OOCTXT* pctxt, H225SIPCaps* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataRatesSupportedPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode dataRatesSupported */
+
+ if (pvalue->m.dataRatesSupportedPresent) {
+ stat = asn1PE_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode supportedPrefixes */
+
+ if (pvalue->m.supportedPrefixesPresent) {
+ stat = asn1PE_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SupportedProtocols */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225SupportedProtocols (OOCTXT* pctxt, H225SupportedProtocols* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 9);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 8);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandardData */
+ case 1:
+ stat = asn1PE_H225NonStandardParameter (pctxt, pvalue->u.nonStandardData);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h310 */
+ case 2:
+ stat = asn1PE_H225H310Caps (pctxt, pvalue->u.h310);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h320 */
+ case 3:
+ stat = asn1PE_H225H320Caps (pctxt, pvalue->u.h320);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h321 */
+ case 4:
+ stat = asn1PE_H225H321Caps (pctxt, pvalue->u.h321);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h322 */
+ case 5:
+ stat = asn1PE_H225H322Caps (pctxt, pvalue->u.h322);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h323 */
+ case 6:
+ stat = asn1PE_H225H323Caps (pctxt, pvalue->u.h323);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h324 */
+ case 7:
+ stat = asn1PE_H225H324Caps (pctxt, pvalue->u.h324);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* voice */
+ case 8:
+ stat = asn1PE_H225VoiceCaps (pctxt, pvalue->u.voice);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* t120_only */
+ case 9:
+ stat = asn1PE_H225T120OnlyCaps (pctxt, pvalue->u.t120_only);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 10);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* nonStandardProtocol */
+ case 10:
+ stat = asn1PE_H225NonStandardProtocol (&lctxt, pvalue->u.nonStandardProtocol);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* t38FaxAnnexbOnly */
+ case 11:
+ stat = asn1PE_H225T38FaxAnnexbOnlyCaps (&lctxt, pvalue->u.t38FaxAnnexbOnly);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* sip */
+ case 12:
+ stat = asn1PE_H225SIPCaps (&lctxt, pvalue->u.sip);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225SupportedProtocols */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225SupportedProtocols (OOCTXT* pctxt, H225_SeqOfH225SupportedProtocols* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225SupportedProtocols (pctxt, ((H225SupportedProtocols*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatewayInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GatewayInfo (OOCTXT* pctxt, H225GatewayInfo* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.protocolPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode protocol */
+
+ if (pvalue->m.protocolPresent) {
+ stat = asn1PE_H225_SeqOfH225SupportedProtocols (pctxt, &pvalue->protocol);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* McuInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225McuInfo (OOCTXT* pctxt, H225McuInfo* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.protocolPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.protocolPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.protocolPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedProtocols (&lctxt, &pvalue->protocol);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TerminalInfo (OOCTXT* pctxt, H225TerminalInfo* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TunnelledProtocolAlternateIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TunnelledProtocolAlternateIdentifier (OOCTXT* pctxt, H225TunnelledProtocolAlternateIdentifier* pvalue)
+{
+ static Asn1SizeCnst protocolType_lsize1 = { 0, 1, 64, 0 };
+ static Asn1SizeCnst protocolVariant_lsize1 = { 0, 1, 64, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.protocolVariantPresent);
+
+ /* encode protocolType */
+
+ addSizeConstraint (pctxt, &protocolType_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->protocolType, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+
+ /* encode protocolVariant */
+
+ if (pvalue->m.protocolVariantPresent) {
+ addSizeConstraint (pctxt, &protocolVariant_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->protocolVariant, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TunnelledProtocol_id */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TunnelledProtocol_id (OOCTXT* pctxt, H225TunnelledProtocol_id* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* tunnelledProtocolObjectID */
+ case 1:
+ stat = encodeObjectIdentifier (pctxt, pvalue->u.tunnelledProtocolObjectID);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* tunnelledProtocolAlternateID */
+ case 2:
+ stat = asn1PE_H225TunnelledProtocolAlternateIdentifier (pctxt, pvalue->u.tunnelledProtocolAlternateID);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TunnelledProtocol */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TunnelledProtocol (OOCTXT* pctxt, H225TunnelledProtocol* pvalue)
+{
+ static Asn1SizeCnst subIdentifier_lsize1 = { 0, 1, 64, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.subIdentifierPresent);
+
+ /* encode id */
+
+ stat = asn1PE_H225TunnelledProtocol_id (pctxt, &pvalue->id);
+ if (stat != ASN_OK) return stat;
+
+ /* encode subIdentifier */
+
+ if (pvalue->m.subIdentifierPresent) {
+ addSizeConstraint (pctxt, &subIdentifier_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->subIdentifier, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TunnelledProtocol */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225TunnelledProtocol (OOCTXT* pctxt, H225_SeqOfH225TunnelledProtocol* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225TunnelledProtocol (pctxt, ((H225TunnelledProtocol*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EndpointType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225EndpointType (OOCTXT* pctxt, H225EndpointType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.setPresent ||
+ pvalue->m.supportedTunnelledProtocolsPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.vendorPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatewayPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mcuPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode vendor */
+
+ if (pvalue->m.vendorPresent) {
+ stat = asn1PE_H225VendorIdentifier (pctxt, &pvalue->vendor);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode gatekeeper */
+
+ if (pvalue->m.gatekeeperPresent) {
+ stat = asn1PE_H225GatekeeperInfo (pctxt, &pvalue->gatekeeper);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode gateway */
+
+ if (pvalue->m.gatewayPresent) {
+ stat = asn1PE_H225GatewayInfo (pctxt, &pvalue->gateway);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode mcu */
+
+ if (pvalue->m.mcuPresent) {
+ stat = asn1PE_H225McuInfo (pctxt, &pvalue->mcu);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode terminal */
+
+ if (pvalue->m.terminalPresent) {
+ stat = asn1PE_H225TerminalInfo (pctxt, &pvalue->terminal);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode mc */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->mc);
+ if (stat != ASN_OK) return stat;
+
+ /* encode undefinedNode */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->undefinedNode);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.setPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedTunnelledProtocolsPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.setPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225EndpointType_set (&lctxt, &pvalue->set);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedTunnelledProtocolsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225TunnelledProtocol (&lctxt, &pvalue->supportedTunnelledProtocols);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CallReferenceValue */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225CallReferenceValue (OOCTXT* pctxt, H225_SeqOfH225CallReferenceValue* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H225CallReferenceValue (pctxt, pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_conferenceGoal */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Setup_UUIE_conferenceGoal (OOCTXT* pctxt, H225Setup_UUIE_conferenceGoal* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* create */
+ case 1:
+ /* NULL */
+ break;
+
+ /* join */
+ case 2:
+ /* NULL */
+ break;
+
+ /* invite */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* capability_negotiation */
+ case 4:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* callIndependentSupplementaryService */
+ case 5:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Q954Details */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Q954Details (OOCTXT* pctxt, H225Q954Details* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode conferenceCalling */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->conferenceCalling);
+ if (stat != ASN_OK) return stat;
+
+ /* encode threePartyService */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->threePartyService);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* QseriesOptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225QseriesOptions (OOCTXT* pctxt, H225QseriesOptions* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode q932Full */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->q932Full);
+ if (stat != ASN_OK) return stat;
+
+ /* encode q951Full */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->q951Full);
+ if (stat != ASN_OK) return stat;
+
+ /* encode q952Full */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->q952Full);
+ if (stat != ASN_OK) return stat;
+
+ /* encode q953Full */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->q953Full);
+ if (stat != ASN_OK) return stat;
+
+ /* encode q955Full */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->q955Full);
+ if (stat != ASN_OK) return stat;
+
+ /* encode q956Full */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->q956Full);
+ if (stat != ASN_OK) return stat;
+
+ /* encode q957Full */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->q957Full);
+ if (stat != ASN_OK) return stat;
+
+ /* encode q954Info */
+
+ stat = asn1PE_H225Q954Details (pctxt, &pvalue->q954Info);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallType (OOCTXT* pctxt, H225CallType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* pointToPoint */
+ case 1:
+ /* NULL */
+ break;
+
+ /* oneToN */
+ case 2:
+ /* NULL */
+ break;
+
+ /* nToOne */
+ case 3:
+ /* NULL */
+ break;
+
+ /* nToN */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallIdentifier (OOCTXT* pctxt, H225CallIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode guid */
+
+ stat = asn1PE_H225GloballyUniqueID (pctxt, &pvalue->guid);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SecurityServiceMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225SecurityServiceMode (OOCTXT* pctxt, H225SecurityServiceMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* none */
+ case 2:
+ /* NULL */
+ break;
+
+ /* default_ */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SecurityCapabilities */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225SecurityCapabilities (OOCTXT* pctxt, H225SecurityCapabilities* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent);
+
+ /* encode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode encryption */
+
+ stat = asn1PE_H225SecurityServiceMode (pctxt, &pvalue->encryption);
+ if (stat != ASN_OK) return stat;
+
+ /* encode authenticaton */
+
+ stat = asn1PE_H225SecurityServiceMode (pctxt, &pvalue->authenticaton);
+ if (stat != ASN_OK) return stat;
+
+ /* encode integrity */
+
+ stat = asn1PE_H225SecurityServiceMode (pctxt, &pvalue->integrity);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H245Security */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H245Security (OOCTXT* pctxt, H225H245Security* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* noSecurity */
+ case 2:
+ /* NULL */
+ break;
+
+ /* tls */
+ case 3:
+ stat = asn1PE_H225SecurityCapabilities (pctxt, pvalue->u.tls);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* ipsec */
+ case 4:
+ stat = asn1PE_H225SecurityCapabilities (pctxt, pvalue->u.ipsec);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225H245Security */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225H245Security (OOCTXT* pctxt, H225_SeqOfH225H245Security* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225H245Security (pctxt, ((H225H245Security*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ClearToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225ClearToken (OOCTXT* pctxt, H225_SeqOfH225ClearToken* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H235ClearToken (pctxt, ((H235ClearToken*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoEPPwdHash */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoEPPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPPwdHash* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode alias */
+
+ stat = asn1PE_H225AliasAddress (pctxt, &pvalue->alias);
+ if (stat != ASN_OK) return stat;
+
+ /* encode timeStamp */
+
+ stat = asn1PE_H235TimeStamp (pctxt, pvalue->timeStamp);
+ if (stat != ASN_OK) return stat;
+
+ /* encode token */
+
+ stat = asn1PE_H235HASHED (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoGKPwdHash */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoGKPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKPwdHash* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode gatekeeperId */
+
+ stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperId);
+ if (stat != ASN_OK) return stat;
+
+ /* encode timeStamp */
+
+ stat = asn1PE_H235TimeStamp (pctxt, pvalue->timeStamp);
+ if (stat != ASN_OK) return stat;
+
+ /* encode token */
+
+ stat = asn1PE_H235HASHED (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoEPCert */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoEPCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPCert* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode toBeSigned */
+
+ stat = asn1PE_H235EncodedPwdCertToken (pctxt, pvalue->toBeSigned);
+ if (stat != ASN_OK) return stat;
+
+ /* encode algorithmOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode paramS */
+
+ stat = asn1PE_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ /* encode signature */
+
+ stat = encodeBitString (pctxt, pvalue->signature.numbits, pvalue->signature.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoGKCert */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoGKCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKCert* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode toBeSigned */
+
+ stat = asn1PE_H235EncodedPwdCertToken (pctxt, pvalue->toBeSigned);
+ if (stat != ASN_OK) return stat;
+
+ /* encode algorithmOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode paramS */
+
+ stat = asn1PE_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ /* encode signature */
+
+ stat = encodeBitString (pctxt, pvalue->signature.numbits, pvalue->signature.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoFastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoFastStart (OOCTXT* pctxt, H225CryptoH323Token_cryptoFastStart* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode toBeSigned */
+
+ stat = asn1PE_H225EncodedFastStartToken (pctxt, pvalue->toBeSigned);
+ if (stat != ASN_OK) return stat;
+
+ /* encode algorithmOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode paramS */
+
+ stat = asn1PE_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ /* encode signature */
+
+ stat = encodeBitString (pctxt, pvalue->signature.numbits, pvalue->signature.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoH323Token */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CryptoH323Token (OOCTXT* pctxt, H225CryptoH323Token* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 8);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* cryptoEPPwdHash */
+ case 1:
+ stat = asn1PE_H225CryptoH323Token_cryptoEPPwdHash (pctxt, pvalue->u.cryptoEPPwdHash);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cryptoGKPwdHash */
+ case 2:
+ stat = asn1PE_H225CryptoH323Token_cryptoGKPwdHash (pctxt, pvalue->u.cryptoGKPwdHash);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cryptoEPPwdEncr */
+ case 3:
+ stat = asn1PE_H235ENCRYPTED (pctxt, pvalue->u.cryptoEPPwdEncr);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cryptoGKPwdEncr */
+ case 4:
+ stat = asn1PE_H235ENCRYPTED (pctxt, pvalue->u.cryptoGKPwdEncr);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cryptoEPCert */
+ case 5:
+ stat = asn1PE_H225CryptoH323Token_cryptoEPCert (pctxt, pvalue->u.cryptoEPCert);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cryptoGKCert */
+ case 6:
+ stat = asn1PE_H225CryptoH323Token_cryptoGKCert (pctxt, pvalue->u.cryptoGKCert);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cryptoFastStart */
+ case 7:
+ stat = asn1PE_H225CryptoH323Token_cryptoFastStart (pctxt, pvalue->u.cryptoFastStart);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* nestedcryptoToken */
+ case 8:
+ stat = asn1PE_H235CryptoToken (pctxt, pvalue->u.nestedcryptoToken);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 9);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CryptoH323Token */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225CryptoH323Token (OOCTXT* pctxt, H225_SeqOfH225CryptoH323Token* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225CryptoH323Token (pctxt, ((H225CryptoH323Token*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Setup_UUIE_fastStart (OOCTXT* pctxt, H225Setup_UUIE_fastStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ScnConnectionType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ScnConnectionType (OOCTXT* pctxt, H225ScnConnectionType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 7);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* unknown */
+ case 1:
+ /* NULL */
+ break;
+
+ /* bChannel */
+ case 2:
+ /* NULL */
+ break;
+
+ /* hybrid2x64 */
+ case 3:
+ /* NULL */
+ break;
+
+ /* hybrid384 */
+ case 4:
+ /* NULL */
+ break;
+
+ /* hybrid1536 */
+ case 5:
+ /* NULL */
+ break;
+
+ /* hybrid1920 */
+ case 6:
+ /* NULL */
+ break;
+
+ /* multirate */
+ case 7:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 8);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ScnConnectionAggregation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ScnConnectionAggregation (OOCTXT* pctxt, H225ScnConnectionAggregation* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 6);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* auto_ */
+ case 1:
+ /* NULL */
+ break;
+
+ /* none */
+ case 2:
+ /* NULL */
+ break;
+
+ /* h221 */
+ case 3:
+ /* NULL */
+ break;
+
+ /* bonded_mode1 */
+ case 4:
+ /* NULL */
+ break;
+
+ /* bonded_mode2 */
+ case 5:
+ /* NULL */
+ break;
+
+ /* bonded_mode3 */
+ case 6:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_connectionParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Setup_UUIE_connectionParameters (OOCTXT* pctxt, H225Setup_UUIE_connectionParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode connectionType */
+
+ stat = asn1PE_H225ScnConnectionType (pctxt, &pvalue->connectionType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode numberOfScnConnections */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->numberOfScnConnections, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode connectionAggregation */
+
+ stat = asn1PE_H225ScnConnectionAggregation (pctxt, &pvalue->connectionAggregation);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_language */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Setup_UUIE_language (OOCTXT* pctxt, H225Setup_UUIE_language* pvalue)
+{
+ static Asn1SizeCnst element_lsize1 = { 0, 1, 32, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ addSizeConstraint (pctxt, &element_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->elem[xx1], 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PresentationIndicator */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225PresentationIndicator (OOCTXT* pctxt, H225PresentationIndicator* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* presentationAllowed */
+ case 1:
+ /* NULL */
+ break;
+
+ /* presentationRestricted */
+ case 2:
+ /* NULL */
+ break;
+
+ /* addressNotAvailable */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallCreditServiceControl_billingMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallCreditServiceControl_billingMode (OOCTXT* pctxt, H225CallCreditServiceControl_billingMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* credit */
+ case 1:
+ /* NULL */
+ break;
+
+ /* debit */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallCreditServiceControl_callStartingPoint */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallCreditServiceControl_callStartingPoint (OOCTXT* pctxt, H225CallCreditServiceControl_callStartingPoint* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* alerting */
+ case 1:
+ /* NULL */
+ break;
+
+ /* connect */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallCreditServiceControl */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallCreditServiceControl (OOCTXT* pctxt, H225CallCreditServiceControl* pvalue)
+{
+ static Asn1SizeCnst amountString_lsize1 = { 0, 1, 512, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.amountStringPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.billingModePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callDurationLimitPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.enforceCallDurationLimitPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callStartingPointPresent);
+
+ /* encode amountString */
+
+ if (pvalue->m.amountStringPresent) {
+ addSizeConstraint (pctxt, &amountString_lsize1);
+
+ stat = encodeBMPString (pctxt, pvalue->amountString, 0);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode billingMode */
+
+ if (pvalue->m.billingModePresent) {
+ stat = asn1PE_H225CallCreditServiceControl_billingMode (pctxt, &pvalue->billingMode);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode callDurationLimit */
+
+ if (pvalue->m.callDurationLimitPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->callDurationLimit, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode enforceCallDurationLimit */
+
+ if (pvalue->m.enforceCallDurationLimitPresent) {
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->enforceCallDurationLimit);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode callStartingPoint */
+
+ if (pvalue->m.callStartingPointPresent) {
+ stat = asn1PE_H225CallCreditServiceControl_callStartingPoint (pctxt, &pvalue->callStartingPoint);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ServiceControlDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ServiceControlDescriptor (OOCTXT* pctxt, H225ServiceControlDescriptor* pvalue)
+{
+ static Asn1SizeCnst url_lsize1 = { 0, 0, 512, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* url */
+ case 1:
+ addSizeConstraint (pctxt, &url_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->u.url, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* signal */
+ case 2:
+ stat = asn1PE_H225H248SignalsDescriptor (pctxt, *pvalue->u.signal);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* nonStandard */
+ case 3:
+ stat = asn1PE_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* callCreditServiceControl */
+ case 4:
+ stat = asn1PE_H225CallCreditServiceControl (pctxt, pvalue->u.callCreditServiceControl);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ServiceControlSession_reason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ServiceControlSession_reason (OOCTXT* pctxt, H225ServiceControlSession_reason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* open */
+ case 1:
+ /* NULL */
+ break;
+
+ /* refresh */
+ case 2:
+ /* NULL */
+ break;
+
+ /* close */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ServiceControlSession */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ServiceControlSession (OOCTXT* pctxt, H225ServiceControlSession* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.contentsPresent);
+
+ /* encode sessionId */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->sessionId, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode contents */
+
+ if (pvalue->m.contentsPresent) {
+ stat = asn1PE_H225ServiceControlDescriptor (pctxt, &pvalue->contents);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode reason */
+
+ stat = asn1PE_H225ServiceControlSession_reason (pctxt, &pvalue->reason);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ServiceControlSession */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225ServiceControlSession (OOCTXT* pctxt, H225_SeqOfH225ServiceControlSession* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225ServiceControlSession (pctxt, ((H225ServiceControlSession*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CarrierInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CarrierInfo (OOCTXT* pctxt, H225CarrierInfo* pvalue)
+{
+ static Asn1SizeCnst carrierName_lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.carrierIdentificationCodePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.carrierNamePresent);
+
+ /* encode carrierIdentificationCode */
+
+ if (pvalue->m.carrierIdentificationCodePresent) {
+ stat = asn1PE_H225CarrierInfo_carrierIdentificationCode (pctxt, &pvalue->carrierIdentificationCode);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode carrierName */
+
+ if (pvalue->m.carrierNamePresent) {
+ addSizeConstraint (pctxt, &carrierName_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->carrierName, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallsAvailable */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallsAvailable (OOCTXT* pctxt, H225CallsAvailable* pvalue)
+{
+ static Asn1SizeCnst group_lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.carrierPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.groupPresent);
+
+ /* encode calls */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->calls, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ /* encode group */
+
+ if (pvalue->m.groupPresent) {
+ addSizeConstraint (pctxt, &group_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->group, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.carrierPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.carrierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CarrierInfo (&lctxt, &pvalue->carrier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CallsAvailable */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225CallsAvailable (OOCTXT* pctxt, H225_SeqOfH225CallsAvailable* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225CallsAvailable (pctxt, ((H225CallsAvailable*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallCapacityInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallCapacityInfo (OOCTXT* pctxt, H225CallCapacityInfo* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.sipGwCallsAvailablePresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.voiceGwCallsAvailablePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h310GwCallsAvailablePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h320GwCallsAvailablePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h321GwCallsAvailablePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h322GwCallsAvailablePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h323GwCallsAvailablePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h324GwCallsAvailablePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.t120OnlyGwCallsAvailablePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.t38FaxAnnexbOnlyGwCallsAvailablePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalCallsAvailablePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mcuCallsAvailablePresent);
+
+ /* encode voiceGwCallsAvailable */
+
+ if (pvalue->m.voiceGwCallsAvailablePresent) {
+ stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->voiceGwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode h310GwCallsAvailable */
+
+ if (pvalue->m.h310GwCallsAvailablePresent) {
+ stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h310GwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode h320GwCallsAvailable */
+
+ if (pvalue->m.h320GwCallsAvailablePresent) {
+ stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h320GwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode h321GwCallsAvailable */
+
+ if (pvalue->m.h321GwCallsAvailablePresent) {
+ stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h321GwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode h322GwCallsAvailable */
+
+ if (pvalue->m.h322GwCallsAvailablePresent) {
+ stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h322GwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode h323GwCallsAvailable */
+
+ if (pvalue->m.h323GwCallsAvailablePresent) {
+ stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h323GwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode h324GwCallsAvailable */
+
+ if (pvalue->m.h324GwCallsAvailablePresent) {
+ stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h324GwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode t120OnlyGwCallsAvailable */
+
+ if (pvalue->m.t120OnlyGwCallsAvailablePresent) {
+ stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->t120OnlyGwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode t38FaxAnnexbOnlyGwCallsAvailable */
+
+ if (pvalue->m.t38FaxAnnexbOnlyGwCallsAvailablePresent) {
+ stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->t38FaxAnnexbOnlyGwCallsAvailable);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode terminalCallsAvailable */
+
+ if (pvalue->m.terminalCallsAvailablePresent) {
+ stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->terminalCallsAvailable);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode mcuCallsAvailable */
+
+ if (pvalue->m.mcuCallsAvailablePresent) {
+ stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->mcuCallsAvailable);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sipGwCallsAvailablePresent);
+ /* encode extension elements */
+
+ if (pvalue->m.sipGwCallsAvailablePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CallsAvailable (&lctxt, &pvalue->sipGwCallsAvailable);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallCapacity */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallCapacity (OOCTXT* pctxt, H225CallCapacity* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.maximumCallCapacityPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.currentCallCapacityPresent);
+
+ /* encode maximumCallCapacity */
+
+ if (pvalue->m.maximumCallCapacityPresent) {
+ stat = asn1PE_H225CallCapacityInfo (pctxt, &pvalue->maximumCallCapacity);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode currentCallCapacity */
+
+ if (pvalue->m.currentCallCapacityPresent) {
+ stat = asn1PE_H225CallCapacityInfo (pctxt, &pvalue->currentCallCapacity);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CicInfo_cic_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225CicInfo_cic_element (OOCTXT* pctxt, H225_SeqOfH225CicInfo_cic_element* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H225CicInfo_cic_element (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CicInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CicInfo (OOCTXT* pctxt, H225CicInfo* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode cic */
+
+ stat = asn1PE_H225_SeqOfH225CicInfo_cic_element (pctxt, &pvalue->cic);
+ if (stat != ASN_OK) return stat;
+
+ /* encode pointCode */
+
+ stat = asn1PE_H225CicInfo_pointCode (pctxt, &pvalue->pointCode);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GroupID_member */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GroupID_member (OOCTXT* pctxt, H225GroupID_member* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeConsUnsigned (pctxt, pvalue->elem[xx1], 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GroupID */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GroupID (OOCTXT* pctxt, H225GroupID* pvalue)
+{
+ static Asn1SizeCnst group_lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.memberPresent);
+
+ /* encode member */
+
+ if (pvalue->m.memberPresent) {
+ stat = asn1PE_H225GroupID_member (pctxt, &pvalue->member);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode group */
+
+ addSizeConstraint (pctxt, &group_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->group, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CircuitIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CircuitIdentifier (OOCTXT* pctxt, H225CircuitIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.carrierPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cicPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.groupPresent);
+
+ /* encode cic */
+
+ if (pvalue->m.cicPresent) {
+ stat = asn1PE_H225CicInfo (pctxt, &pvalue->cic);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode group */
+
+ if (pvalue->m.groupPresent) {
+ stat = asn1PE_H225GroupID (pctxt, &pvalue->group);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.carrierPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.carrierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CarrierInfo (&lctxt, &pvalue->carrier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225GenericData */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225GenericData (OOCTXT* pctxt, H225_SeqOfH225GenericData* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225GenericData (pctxt, ((H225GenericData*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CircuitInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CircuitInfo (OOCTXT* pctxt, H225CircuitInfo* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sourceCircuitIDPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationCircuitIDPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+
+ /* encode sourceCircuitID */
+
+ if (pvalue->m.sourceCircuitIDPresent) {
+ stat = asn1PE_H225CircuitIdentifier (pctxt, &pvalue->sourceCircuitID);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode destinationCircuitID */
+
+ if (pvalue->m.destinationCircuitIDPresent) {
+ stat = asn1PE_H225CircuitIdentifier (pctxt, &pvalue->destinationCircuitID);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode genericData */
+
+ if (pvalue->m.genericDataPresent) {
+ stat = asn1PE_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225FeatureDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225FeatureDescriptor (OOCTXT* pctxt, H225_SeqOfH225FeatureDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225FeatureDescriptor (pctxt, ((H225FeatureDescriptor*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_parallelH245Control */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Setup_UUIE_parallelH245Control (OOCTXT* pctxt, H225Setup_UUIE_parallelH245Control* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ExtendedAliasAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ExtendedAliasAddress (OOCTXT* pctxt, H225ExtendedAliasAddress* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.presentationIndicatorPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.screeningIndicatorPresent);
+
+ /* encode address */
+
+ stat = asn1PE_H225AliasAddress (pctxt, &pvalue->address);
+ if (stat != ASN_OK) return stat;
+
+ /* encode presentationIndicator */
+
+ if (pvalue->m.presentationIndicatorPresent) {
+ stat = asn1PE_H225PresentationIndicator (pctxt, &pvalue->presentationIndicator);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode screeningIndicator */
+
+ if (pvalue->m.screeningIndicatorPresent) {
+ stat = asn1PE_H225ScreeningIndicator (pctxt, pvalue->screeningIndicator);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ExtendedAliasAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225ExtendedAliasAddress (OOCTXT* pctxt, H225_SeqOfH225ExtendedAliasAddress* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225ExtendedAliasAddress (pctxt, ((H225ExtendedAliasAddress*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Setup_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Setup_UUIE (OOCTXT* pctxt, H225Setup_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.sourceCallSignalAddressPresent ||
+ pvalue->m.remoteExtensionAddressPresent ||
+ pvalue->m.callIdentifierPresent ||
+ pvalue->m.h245SecurityCapabilityPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.fastStartPresent ||
+ pvalue->m.mediaWaitForConnectPresent ||
+ pvalue->m.canOverlapSendPresent ||
+ pvalue->m.endpointIdentifierPresent ||
+ pvalue->m.multipleCallsPresent ||
+ pvalue->m.maintainConnectionPresent ||
+ pvalue->m.connectionParametersPresent ||
+ pvalue->m.languagePresent ||
+ pvalue->m.presentationIndicatorPresent ||
+ pvalue->m.screeningIndicatorPresent ||
+ pvalue->m.serviceControlPresent ||
+ pvalue->m.symmetricOperationRequiredPresent ||
+ pvalue->m.capacityPresent ||
+ pvalue->m.circuitInfoPresent ||
+ pvalue->m.desiredProtocolsPresent ||
+ pvalue->m.neededFeaturesPresent ||
+ pvalue->m.desiredFeaturesPresent ||
+ pvalue->m.supportedFeaturesPresent ||
+ pvalue->m.parallelH245ControlPresent ||
+ pvalue->m.additionalSourceAddressesPresent ||
+ pvalue->m.hopCountPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245AddressPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sourceAddressPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationAddressPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destCallSignalAddressPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destExtraCallInfoPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destExtraCRVPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callServicesPresent);
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h245Address */
+
+ if (pvalue->m.h245AddressPresent) {
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->h245Address);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode sourceAddress */
+
+ if (pvalue->m.sourceAddressPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->sourceAddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode sourceInfo */
+
+ stat = asn1PE_H225EndpointType (pctxt, &pvalue->sourceInfo);
+ if (stat != ASN_OK) return stat;
+
+ /* encode destinationAddress */
+
+ if (pvalue->m.destinationAddressPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destinationAddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode destCallSignalAddress */
+
+ if (pvalue->m.destCallSignalAddressPresent) {
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->destCallSignalAddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode destExtraCallInfo */
+
+ if (pvalue->m.destExtraCallInfoPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destExtraCallInfo);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode destExtraCRV */
+
+ if (pvalue->m.destExtraCRVPresent) {
+ stat = asn1PE_H225_SeqOfH225CallReferenceValue (pctxt, &pvalue->destExtraCRV);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode activeMC */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->activeMC);
+ if (stat != ASN_OK) return stat;
+
+ /* encode conferenceID */
+
+ stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode conferenceGoal */
+
+ stat = asn1PE_H225Setup_UUIE_conferenceGoal (pctxt, &pvalue->conferenceGoal);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callServices */
+
+ if (pvalue->m.callServicesPresent) {
+ stat = asn1PE_H225QseriesOptions (pctxt, &pvalue->callServices);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode callType */
+
+ stat = asn1PE_H225CallType (pctxt, &pvalue->callType);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 26);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sourceCallSignalAddressPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.remoteExtensionAddressPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245SecurityCapabilityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastStartPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaWaitForConnectPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.canOverlapSendPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.connectionParametersPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.languagePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.presentationIndicatorPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.screeningIndicatorPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.symmetricOperationRequiredPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.desiredProtocolsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.neededFeaturesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.desiredFeaturesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedFeaturesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.parallelH245ControlPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.additionalSourceAddressesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.hopCountPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.sourceCallSignalAddressPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225TransportAddress (&lctxt, &pvalue->sourceCallSignalAddress);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.remoteExtensionAddressPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AliasAddress (&lctxt, &pvalue->remoteExtensionAddress);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.callIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.h245SecurityCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225H245Security (&lctxt, &pvalue->h245SecurityCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.fastStartPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225Setup_UUIE_fastStart (&lctxt, &pvalue->fastStart);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.mediaWaitForConnectPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->mediaWaitForConnect);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.canOverlapSendPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->canOverlapSend);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.endpointIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225EndpointIdentifier (&lctxt, pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.multipleCallsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.maintainConnectionPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.connectionParametersPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225Setup_UUIE_connectionParameters (&lctxt, &pvalue->connectionParameters);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.languagePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225Setup_UUIE_language (&lctxt, &pvalue->language);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.presentationIndicatorPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225PresentationIndicator (&lctxt, &pvalue->presentationIndicator);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.screeningIndicatorPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ScreeningIndicator (&lctxt, pvalue->screeningIndicator);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.serviceControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.symmetricOperationRequiredPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.capacityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.circuitInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.desiredProtocolsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedProtocols (&lctxt, &pvalue->desiredProtocols);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.neededFeaturesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225FeatureDescriptor (&lctxt, &pvalue->neededFeatures);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.desiredFeaturesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225FeatureDescriptor (&lctxt, &pvalue->desiredFeatures);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedFeaturesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225FeatureDescriptor (&lctxt, &pvalue->supportedFeatures);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.parallelH245ControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225Setup_UUIE_parallelH245Control (&lctxt, &pvalue->parallelH245Control);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.additionalSourceAddressesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ExtendedAliasAddress (&lctxt, &pvalue->additionalSourceAddresses);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.hopCountPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->hopCount, 1U, 31U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallProceeding_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallProceeding_UUIE_fastStart (OOCTXT* pctxt, H225CallProceeding_UUIE_fastStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FeatureSet */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225FeatureSet (OOCTXT* pctxt, H225FeatureSet* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.neededFeaturesPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.desiredFeaturesPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedFeaturesPresent);
+
+ /* encode replacementFeatureSet */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->replacementFeatureSet);
+ if (stat != ASN_OK) return stat;
+
+ /* encode neededFeatures */
+
+ if (pvalue->m.neededFeaturesPresent) {
+ stat = asn1PE_H225_SeqOfH225FeatureDescriptor (pctxt, &pvalue->neededFeatures);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode desiredFeatures */
+
+ if (pvalue->m.desiredFeaturesPresent) {
+ stat = asn1PE_H225_SeqOfH225FeatureDescriptor (pctxt, &pvalue->desiredFeatures);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode supportedFeatures */
+
+ if (pvalue->m.supportedFeaturesPresent) {
+ stat = asn1PE_H225_SeqOfH225FeatureDescriptor (pctxt, &pvalue->supportedFeatures);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallProceeding_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallProceeding_UUIE (OOCTXT* pctxt, H225CallProceeding_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
+ pvalue->m.h245SecurityModePresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.fastStartPresent ||
+ pvalue->m.multipleCallsPresent ||
+ pvalue->m.maintainConnectionPresent ||
+ pvalue->m.fastConnectRefusedPresent ||
+ pvalue->m.featureSetPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245AddressPresent);
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode destinationInfo */
+
+ stat = asn1PE_H225EndpointType (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h245Address */
+
+ if (pvalue->m.h245AddressPresent) {
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->h245Address);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 8);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245SecurityModePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastStartPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastConnectRefusedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.callIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.h245SecurityModePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225H245Security (&lctxt, &pvalue->h245SecurityMode);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.fastStartPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallProceeding_UUIE_fastStart (&lctxt, &pvalue->fastStart);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.multipleCallsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.maintainConnectionPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.fastConnectRefusedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Connect_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Connect_UUIE_fastStart (OOCTXT* pctxt, H225Connect_UUIE_fastStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Connect_UUIE_language */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Connect_UUIE_language (OOCTXT* pctxt, H225Connect_UUIE_language* pvalue)
+{
+ static Asn1SizeCnst element_lsize1 = { 0, 1, 32, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ addSizeConstraint (pctxt, &element_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->elem[xx1], 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Connect_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Connect_UUIE (OOCTXT* pctxt, H225Connect_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
+ pvalue->m.h245SecurityModePresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.fastStartPresent ||
+ pvalue->m.multipleCallsPresent ||
+ pvalue->m.maintainConnectionPresent ||
+ pvalue->m.languagePresent ||
+ pvalue->m.connectedAddressPresent ||
+ pvalue->m.presentationIndicatorPresent ||
+ pvalue->m.screeningIndicatorPresent ||
+ pvalue->m.fastConnectRefusedPresent ||
+ pvalue->m.serviceControlPresent ||
+ pvalue->m.capacityPresent ||
+ pvalue->m.featureSetPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245AddressPresent);
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h245Address */
+
+ if (pvalue->m.h245AddressPresent) {
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->h245Address);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode destinationInfo */
+
+ stat = asn1PE_H225EndpointType (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+
+ /* encode conferenceID */
+
+ stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 14);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245SecurityModePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastStartPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.languagePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.connectedAddressPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.presentationIndicatorPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.screeningIndicatorPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastConnectRefusedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.callIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.h245SecurityModePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225H245Security (&lctxt, &pvalue->h245SecurityMode);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.fastStartPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225Connect_UUIE_fastStart (&lctxt, &pvalue->fastStart);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.multipleCallsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.maintainConnectionPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.languagePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225Connect_UUIE_language (&lctxt, &pvalue->language);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.connectedAddressPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->connectedAddress);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.presentationIndicatorPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225PresentationIndicator (&lctxt, &pvalue->presentationIndicator);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.screeningIndicatorPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ScreeningIndicator (&lctxt, pvalue->screeningIndicator);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.fastConnectRefusedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.serviceControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.capacityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Alerting_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Alerting_UUIE_fastStart (OOCTXT* pctxt, H225Alerting_UUIE_fastStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Alerting_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Alerting_UUIE (OOCTXT* pctxt, H225Alerting_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
+ pvalue->m.h245SecurityModePresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.fastStartPresent ||
+ pvalue->m.multipleCallsPresent ||
+ pvalue->m.maintainConnectionPresent ||
+ pvalue->m.alertingAddressPresent ||
+ pvalue->m.presentationIndicatorPresent ||
+ pvalue->m.screeningIndicatorPresent ||
+ pvalue->m.fastConnectRefusedPresent ||
+ pvalue->m.serviceControlPresent ||
+ pvalue->m.capacityPresent ||
+ pvalue->m.featureSetPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245AddressPresent);
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode destinationInfo */
+
+ stat = asn1PE_H225EndpointType (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h245Address */
+
+ if (pvalue->m.h245AddressPresent) {
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->h245Address);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 13);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245SecurityModePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastStartPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alertingAddressPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.presentationIndicatorPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.screeningIndicatorPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastConnectRefusedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.callIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.h245SecurityModePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225H245Security (&lctxt, &pvalue->h245SecurityMode);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.fastStartPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225Alerting_UUIE_fastStart (&lctxt, &pvalue->fastStart);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.multipleCallsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.maintainConnectionPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.alertingAddressPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->alertingAddress);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.presentationIndicatorPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225PresentationIndicator (&lctxt, &pvalue->presentationIndicator);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.screeningIndicatorPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ScreeningIndicator (&lctxt, pvalue->screeningIndicator);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.fastConnectRefusedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.serviceControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.capacityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Information_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Information_UUIE_fastStart (OOCTXT* pctxt, H225Information_UUIE_fastStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Information_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Information_UUIE (OOCTXT* pctxt, H225Information_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.fastStartPresent ||
+ pvalue->m.fastConnectRefusedPresent ||
+ pvalue->m.circuitInfoPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastStartPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastConnectRefusedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.callIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.fastStartPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225Information_UUIE_fastStart (&lctxt, &pvalue->fastStart);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.fastConnectRefusedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.circuitInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SecurityErrors */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225SecurityErrors (OOCTXT* pctxt, H225SecurityErrors* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 16);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 15);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* securityWrongSyncTime */
+ case 1:
+ /* NULL */
+ break;
+
+ /* securityReplay */
+ case 2:
+ /* NULL */
+ break;
+
+ /* securityWrongGeneralID */
+ case 3:
+ /* NULL */
+ break;
+
+ /* securityWrongSendersID */
+ case 4:
+ /* NULL */
+ break;
+
+ /* securityIntegrityFailed */
+ case 5:
+ /* NULL */
+ break;
+
+ /* securityWrongOID */
+ case 6:
+ /* NULL */
+ break;
+
+ /* securityDHmismatch */
+ case 7:
+ /* NULL */
+ break;
+
+ /* securityCertificateExpired */
+ case 8:
+ /* NULL */
+ break;
+
+ /* securityCertificateDateInvalid */
+ case 9:
+ /* NULL */
+ break;
+
+ /* securityCertificateRevoked */
+ case 10:
+ /* NULL */
+ break;
+
+ /* securityCertificateNotReadable */
+ case 11:
+ /* NULL */
+ break;
+
+ /* securityCertificateSignatureInvalid */
+ case 12:
+ /* NULL */
+ break;
+
+ /* securityCertificateMissing */
+ case 13:
+ /* NULL */
+ break;
+
+ /* securityCertificateIncomplete */
+ case 14:
+ /* NULL */
+ break;
+
+ /* securityUnsupportedCertificateAlgOID */
+ case 15:
+ /* NULL */
+ break;
+
+ /* securityUnknownCA */
+ case 16:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 17);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ReleaseCompleteReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ReleaseCompleteReason (OOCTXT* pctxt, H225ReleaseCompleteReason* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 12);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 11);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* noBandwidth */
+ case 1:
+ /* NULL */
+ break;
+
+ /* gatekeeperResources */
+ case 2:
+ /* NULL */
+ break;
+
+ /* unreachableDestination */
+ case 3:
+ /* NULL */
+ break;
+
+ /* destinationRejection */
+ case 4:
+ /* NULL */
+ break;
+
+ /* invalidRevision */
+ case 5:
+ /* NULL */
+ break;
+
+ /* noPermission */
+ case 6:
+ /* NULL */
+ break;
+
+ /* unreachableGatekeeper */
+ case 7:
+ /* NULL */
+ break;
+
+ /* gatewayResources */
+ case 8:
+ /* NULL */
+ break;
+
+ /* badFormatAddress */
+ case 9:
+ /* NULL */
+ break;
+
+ /* adaptiveBusy */
+ case 10:
+ /* NULL */
+ break;
+
+ /* inConf */
+ case 11:
+ /* NULL */
+ break;
+
+ /* undefinedReason */
+ case 12:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 13);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* facilityCallDeflection */
+ case 13:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* securityDenied */
+ case 14:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* calledPartyNotRegistered */
+ case 15:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* callerNotRegistered */
+ case 16:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* newConnectionNeeded */
+ case 17:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* nonStandardReason */
+ case 18:
+ stat = asn1PE_H225NonStandardParameter (&lctxt, pvalue->u.nonStandardReason);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* replaceWithConferenceInvite */
+ case 19:
+ stat = asn1PE_H225ConferenceIdentifier (&lctxt, pvalue->u.replaceWithConferenceInvite);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* genericDataReason */
+ case 20:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* neededFeatureNotSupported */
+ case 21:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* tunnelledSignallingRejected */
+ case 22:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* invalidCID */
+ case 23:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* securityError */
+ case 24:
+ stat = asn1PE_H225SecurityErrors (&lctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* hopCountExceeded */
+ case 25:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ReleaseComplete_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ReleaseComplete_UUIE (OOCTXT* pctxt, H225ReleaseComplete_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.busyAddressPresent ||
+ pvalue->m.presentationIndicatorPresent ||
+ pvalue->m.screeningIndicatorPresent ||
+ pvalue->m.capacityPresent ||
+ pvalue->m.serviceControlPresent ||
+ pvalue->m.featureSetPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.reasonPresent);
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode reason */
+
+ if (pvalue->m.reasonPresent) {
+ stat = asn1PE_H225ReleaseCompleteReason (pctxt, &pvalue->reason);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 8);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.busyAddressPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.presentationIndicatorPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.screeningIndicatorPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.callIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.busyAddressPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->busyAddress);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.presentationIndicatorPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225PresentationIndicator (&lctxt, &pvalue->presentationIndicator);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.screeningIndicatorPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ScreeningIndicator (&lctxt, pvalue->screeningIndicator);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.capacityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.serviceControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FacilityReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225FacilityReason (OOCTXT* pctxt, H225FacilityReason* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* routeCallToGatekeeper */
+ case 1:
+ /* NULL */
+ break;
+
+ /* callForwarded */
+ case 2:
+ /* NULL */
+ break;
+
+ /* routeCallToMC */
+ case 3:
+ /* NULL */
+ break;
+
+ /* undefinedReason */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* conferenceListChoice */
+ case 5:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* startH245 */
+ case 6:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* noH245 */
+ case 7:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* newTokens */
+ case 8:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* featureSetUpdate */
+ case 9:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* forwardedElements */
+ case 10:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* transportedInformation */
+ case 11:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceList */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ConferenceList (OOCTXT* pctxt, H225ConferenceList* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.conferenceIDPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.conferenceAliasPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode conferenceID */
+
+ if (pvalue->m.conferenceIDPresent) {
+ stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode conferenceAlias */
+
+ if (pvalue->m.conferenceAliasPresent) {
+ stat = asn1PE_H225AliasAddress (pctxt, &pvalue->conferenceAlias);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ConferenceList */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225ConferenceList (OOCTXT* pctxt, H225_SeqOfH225ConferenceList* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225ConferenceList (pctxt, ((H225ConferenceList*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Facility_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Facility_UUIE_fastStart (OOCTXT* pctxt, H225Facility_UUIE_fastStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Facility_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Facility_UUIE (OOCTXT* pctxt, H225Facility_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
+ pvalue->m.destExtraCallInfoPresent ||
+ pvalue->m.remoteExtensionAddressPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.conferencesPresent ||
+ pvalue->m.h245AddressPresent ||
+ pvalue->m.fastStartPresent ||
+ pvalue->m.multipleCallsPresent ||
+ pvalue->m.maintainConnectionPresent ||
+ pvalue->m.fastConnectRefusedPresent ||
+ pvalue->m.serviceControlPresent ||
+ pvalue->m.circuitInfoPresent ||
+ pvalue->m.featureSetPresent ||
+ pvalue->m.destinationInfoPresent ||
+ pvalue->m.h245SecurityModePresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternativeAddressPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternativeAliasAddressPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.conferenceIDPresent);
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode alternativeAddress */
+
+ if (pvalue->m.alternativeAddressPresent) {
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->alternativeAddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode alternativeAliasAddress */
+
+ if (pvalue->m.alternativeAliasAddressPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->alternativeAliasAddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode conferenceID */
+
+ if (pvalue->m.conferenceIDPresent) {
+ stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode reason */
+
+ stat = asn1PE_H225FacilityReason (pctxt, &pvalue->reason);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 15);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destExtraCallInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.remoteExtensionAddressPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.conferencesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245AddressPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastStartPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastConnectRefusedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245SecurityModePresent);
+ /* encode extension elements */
+
+ if (pvalue->m.callIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.destExtraCallInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->destExtraCallInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.remoteExtensionAddressPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AliasAddress (&lctxt, &pvalue->remoteExtensionAddress);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.conferencesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ConferenceList (&lctxt, &pvalue->conferences);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.h245AddressPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225TransportAddress (&lctxt, &pvalue->h245Address);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.fastStartPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225Facility_UUIE_fastStart (&lctxt, &pvalue->fastStart);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.multipleCallsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.maintainConnectionPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.fastConnectRefusedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.serviceControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.circuitInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.destinationInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225EndpointType (&lctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.h245SecurityModePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225H245Security (&lctxt, &pvalue->h245SecurityMode);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Progress_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Progress_UUIE_fastStart (OOCTXT* pctxt, H225Progress_UUIE_fastStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Progress_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Progress_UUIE (OOCTXT* pctxt, H225Progress_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.multipleCallsPresent ||
+ pvalue->m.maintainConnectionPresent ||
+ pvalue->m.fastConnectRefusedPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245AddressPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245SecurityModePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastStartPresent);
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode destinationInfo */
+
+ stat = asn1PE_H225EndpointType (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h245Address */
+
+ if (pvalue->m.h245AddressPresent) {
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->h245Address);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode callIdentifier */
+
+ stat = asn1PE_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h245SecurityMode */
+
+ if (pvalue->m.h245SecurityModePresent) {
+ stat = asn1PE_H225H245Security (pctxt, &pvalue->h245SecurityMode);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode fastStart */
+
+ if (pvalue->m.fastStartPresent) {
+ stat = asn1PE_H225Progress_UUIE_fastStart (pctxt, &pvalue->fastStart);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastConnectRefusedPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.multipleCallsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.maintainConnectionPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.fastConnectRefusedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Status_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Status_UUIE (OOCTXT* pctxt, H225Status_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callIdentifier */
+
+ stat = asn1PE_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* StatusInquiry_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225StatusInquiry_UUIE (OOCTXT* pctxt, H225StatusInquiry_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callIdentifier */
+
+ stat = asn1PE_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SetupAcknowledge_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225SetupAcknowledge_UUIE (OOCTXT* pctxt, H225SetupAcknowledge_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callIdentifier */
+
+ stat = asn1PE_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Notify_UUIE */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Notify_UUIE (OOCTXT* pctxt, H225Notify_UUIE* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callIdentifier */
+
+ stat = asn1PE_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_h323_message_body */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H323_UU_PDU_h323_message_body (OOCTXT* pctxt, H225H323_UU_PDU_h323_message_body* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 7);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* setup */
+ case 1:
+ stat = asn1PE_H225Setup_UUIE (pctxt, pvalue->u.setup);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* callProceeding */
+ case 2:
+ stat = asn1PE_H225CallProceeding_UUIE (pctxt, pvalue->u.callProceeding);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* connect */
+ case 3:
+ stat = asn1PE_H225Connect_UUIE (pctxt, pvalue->u.connect);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* alerting */
+ case 4:
+ stat = asn1PE_H225Alerting_UUIE (pctxt, pvalue->u.alerting);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* information */
+ case 5:
+ stat = asn1PE_H225Information_UUIE (pctxt, pvalue->u.information);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* releaseComplete */
+ case 6:
+ stat = asn1PE_H225ReleaseComplete_UUIE (pctxt, pvalue->u.releaseComplete);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* facility */
+ case 7:
+ stat = asn1PE_H225Facility_UUIE (pctxt, pvalue->u.facility);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 8);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* progress */
+ case 8:
+ stat = asn1PE_H225Progress_UUIE (&lctxt, pvalue->u.progress);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* empty */
+ case 9:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* status */
+ case 10:
+ stat = asn1PE_H225Status_UUIE (&lctxt, pvalue->u.status);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* statusInquiry */
+ case 11:
+ stat = asn1PE_H225StatusInquiry_UUIE (&lctxt, pvalue->u.statusInquiry);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* setupAcknowledge */
+ case 12:
+ stat = asn1PE_H225SetupAcknowledge_UUIE (&lctxt, pvalue->u.setupAcknowledge);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* notify */
+ case 13:
+ stat = asn1PE_H225Notify_UUIE (&lctxt, pvalue->u.notify);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_h4501SupplementaryService */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H323_UU_PDU_h4501SupplementaryService (OOCTXT* pctxt, H225H323_UU_PDU_h4501SupplementaryService* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_h245Control */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H323_UU_PDU_h245Control (OOCTXT* pctxt, H225H323_UU_PDU_h245Control* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225NonStandardParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225NonStandardParameter (OOCTXT* pctxt, H225_SeqOfH225NonStandardParameter* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, ((H225NonStandardParameter*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallLinkage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallLinkage (OOCTXT* pctxt, H225CallLinkage* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.globalCallIdPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.threadIdPresent);
+
+ /* encode globalCallId */
+
+ if (pvalue->m.globalCallIdPresent) {
+ stat = asn1PE_H225GloballyUniqueID (pctxt, &pvalue->globalCallId);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode threadId */
+
+ if (pvalue->m.threadIdPresent) {
+ stat = asn1PE_H225GloballyUniqueID (pctxt, &pvalue->threadId);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_tunnelledSignallingMessage_messageContent */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H323_UU_PDU_tunnelledSignallingMessage_messageContent (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage_messageContent* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_tunnelledSignallingMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H323_UU_PDU_tunnelledSignallingMessage (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tunnellingRequiredPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode tunnelledProtocolID */
+
+ stat = asn1PE_H225TunnelledProtocol (pctxt, &pvalue->tunnelledProtocolID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode messageContent */
+
+ stat = asn1PE_H225H323_UU_PDU_tunnelledSignallingMessage_messageContent (pctxt, &pvalue->messageContent);
+ if (stat != ASN_OK) return stat;
+
+ /* encode tunnellingRequired */
+
+ if (pvalue->m.tunnellingRequiredPresent) {
+ /* NULL */
+ }
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* StimulusControl */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225StimulusControl (OOCTXT* pctxt, H225StimulusControl* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.isTextPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h248MessagePresent);
+
+ /* encode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode isText */
+
+ if (pvalue->m.isTextPresent) {
+ /* NULL */
+ }
+
+ /* encode h248Message */
+
+ if (pvalue->m.h248MessagePresent) {
+ stat = encodeOctetString (pctxt, pvalue->h248Message.numocts, pvalue->h248Message.data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H323_UU_PDU (OOCTXT* pctxt, H225H323_UU_PDU* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.h4501SupplementaryServicePresent ||
+ pvalue->m.h245TunnelingPresent ||
+ pvalue->m.h245ControlPresent ||
+ pvalue->m.nonStandardControlPresent ||
+ pvalue->m.callLinkagePresent ||
+ pvalue->m.tunnelledSignallingMessagePresent ||
+ pvalue->m.provisionalRespToH245TunnelingPresent ||
+ pvalue->m.stimulusControlPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode h323_message_body */
+
+ stat = asn1PE_H225H323_UU_PDU_h323_message_body (pctxt, &pvalue->h323_message_body);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 8);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h4501SupplementaryServicePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245TunnelingPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245ControlPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardControlPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callLinkagePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tunnelledSignallingMessagePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.provisionalRespToH245TunnelingPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.stimulusControlPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.h4501SupplementaryServicePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225H323_UU_PDU_h4501SupplementaryService (&lctxt, &pvalue->h4501SupplementaryService);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.h245TunnelingPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->h245Tunneling);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.h245ControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225H323_UU_PDU_h245Control (&lctxt, &pvalue->h245Control);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.nonStandardControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225NonStandardParameter (&lctxt, &pvalue->nonStandardControl);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.callLinkagePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallLinkage (&lctxt, &pvalue->callLinkage);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tunnelledSignallingMessagePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225H323_UU_PDU_tunnelledSignallingMessage (&lctxt, &pvalue->tunnelledSignallingMessage);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.provisionalRespToH245TunnelingPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.stimulusControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225StimulusControl (&lctxt, &pvalue->stimulusControl);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UserInformation_user_data */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H323_UserInformation_user_data (OOCTXT* pctxt, H225H323_UserInformation_user_data* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode protocol_discriminator */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->protocol_discriminator, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode user_information */
+
+ stat = asn1PE_H225H323_UserInformation_user_data_user_information (pctxt, &pvalue->user_information);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UserInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225H323_UserInformation (OOCTXT* pctxt, H225H323_UserInformation* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.user_dataPresent);
+
+ /* encode h323_uu_pdu */
+
+ stat = asn1PE_H225H323_UU_PDU (pctxt, &pvalue->h323_uu_pdu);
+ if (stat != ASN_OK) return stat;
+
+ /* encode user_data */
+
+ if (pvalue->m.user_dataPresent) {
+ stat = asn1PE_H225H323_UserInformation_user_data (pctxt, &pvalue->user_data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AddressPattern_range */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225AddressPattern_range (OOCTXT* pctxt, H225AddressPattern_range* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode startOfRange */
+
+ stat = asn1PE_H225PartyNumber (pctxt, &pvalue->startOfRange);
+ if (stat != ASN_OK) return stat;
+
+ /* encode endOfRange */
+
+ stat = asn1PE_H225PartyNumber (pctxt, &pvalue->endOfRange);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AddressPattern */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225AddressPattern (OOCTXT* pctxt, H225AddressPattern* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* wildcard */
+ case 1:
+ stat = asn1PE_H225AliasAddress (pctxt, pvalue->u.wildcard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* range */
+ case 2:
+ stat = asn1PE_H225AddressPattern_range (pctxt, pvalue->u.range);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TransportAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225TransportAddress (OOCTXT* pctxt, H225_SeqOfH225TransportAddress* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225TransportAddress (pctxt, ((H225TransportAddress*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AlternateTransportAddresses */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225AlternateTransportAddresses (OOCTXT* pctxt, H225AlternateTransportAddresses* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.sctpPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.annexEPresent);
+
+ /* encode annexE */
+
+ if (pvalue->m.annexEPresent) {
+ stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->annexE);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sctpPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.sctpPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225TransportAddress (&lctxt, &pvalue->sctp);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Endpoint */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225Endpoint (OOCTXT* pctxt, H225Endpoint* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.alternateTransportAddressesPresent ||
+ pvalue->m.circuitInfoPresent ||
+ pvalue->m.featureSetPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.aliasAddressPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callSignalAddressPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.rasAddressPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointTypePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.priorityPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.remoteExtensionAddressPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destExtraCallInfoPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode aliasAddress */
+
+ if (pvalue->m.aliasAddressPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->aliasAddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode callSignalAddress */
+
+ if (pvalue->m.callSignalAddressPresent) {
+ stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode rasAddress */
+
+ if (pvalue->m.rasAddressPresent) {
+ stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->rasAddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode endpointType */
+
+ if (pvalue->m.endpointTypePresent) {
+ stat = asn1PE_H225EndpointType (pctxt, &pvalue->endpointType);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode priority */
+
+ if (pvalue->m.priorityPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->priority, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode remoteExtensionAddress */
+
+ if (pvalue->m.remoteExtensionAddressPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->remoteExtensionAddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode destExtraCallInfo */
+
+ if (pvalue->m.destExtraCallInfoPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destExtraCallInfo);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateTransportAddressesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.alternateTransportAddressesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AlternateTransportAddresses (&lctxt, &pvalue->alternateTransportAddresses);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.circuitInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UseSpecifiedTransport */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225UseSpecifiedTransport (OOCTXT* pctxt, H225UseSpecifiedTransport* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* tcp */
+ case 1:
+ /* NULL */
+ break;
+
+ /* annexE */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* sctp */
+ case 3:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AlternateGK */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225AlternateGK (OOCTXT* pctxt, H225AlternateGK* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
+
+ /* encode rasAddress */
+
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->rasAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode gatekeeperIdentifier */
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode needToRegister */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->needToRegister);
+ if (stat != ASN_OK) return stat;
+
+ /* encode priority */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->priority, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AlternateGK */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225AlternateGK (OOCTXT* pctxt, H225_SeqOfH225AlternateGK* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225AlternateGK (pctxt, ((H225AlternateGK*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AltGKInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225AltGKInfo (OOCTXT* pctxt, H225AltGKInfo* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode alternateGatekeeper */
+
+ stat = asn1PE_H225_SeqOfH225AlternateGK (pctxt, &pvalue->alternateGatekeeper);
+ if (stat != ASN_OK) return stat;
+
+ /* encode altGKisPermanent */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->altGKisPermanent);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SecurityErrors2 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225SecurityErrors2 (OOCTXT* pctxt, H225SecurityErrors2* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 6);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* securityWrongSyncTime */
+ case 1:
+ /* NULL */
+ break;
+
+ /* securityReplay */
+ case 2:
+ /* NULL */
+ break;
+
+ /* securityWrongGeneralID */
+ case 3:
+ /* NULL */
+ break;
+
+ /* securityWrongSendersID */
+ case 4:
+ /* NULL */
+ break;
+
+ /* securityIntegrityFailed */
+ case 5:
+ /* NULL */
+ break;
+
+ /* securityWrongOID */
+ case 6:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptIntAlg */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225EncryptIntAlg (OOCTXT* pctxt, H225EncryptIntAlg* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* isoAlgorithm */
+ case 2:
+ stat = encodeObjectIdentifier (pctxt, pvalue->u.isoAlgorithm);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonIsoIntegrityMechanism */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225NonIsoIntegrityMechanism (OOCTXT* pctxt, H225NonIsoIntegrityMechanism* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* hMAC_MD5 */
+ case 1:
+ /* NULL */
+ break;
+
+ /* hMAC_iso10118_2_s */
+ case 2:
+ stat = asn1PE_H225EncryptIntAlg (pctxt, pvalue->u.hMAC_iso10118_2_s);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* hMAC_iso10118_2_l */
+ case 3:
+ stat = asn1PE_H225EncryptIntAlg (pctxt, pvalue->u.hMAC_iso10118_2_l);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* hMAC_iso10118_3 */
+ case 4:
+ stat = encodeObjectIdentifier (pctxt, pvalue->u.hMAC_iso10118_3);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IntegrityMechanism */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225IntegrityMechanism (OOCTXT* pctxt, H225IntegrityMechanism* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* digSig */
+ case 2:
+ /* NULL */
+ break;
+
+ /* iso9797 */
+ case 3:
+ stat = encodeObjectIdentifier (pctxt, pvalue->u.iso9797);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* nonIsoIM */
+ case 4:
+ stat = asn1PE_H225NonIsoIntegrityMechanism (pctxt, pvalue->u.nonIsoIM);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ICV */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ICV (OOCTXT* pctxt, H225ICV* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode algorithmOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode icv */
+
+ stat = encodeBitString (pctxt, pvalue->icv.numbits, pvalue->icv.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapacityReportingCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CapacityReportingCapability (OOCTXT* pctxt, H225CapacityReportingCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode canReportCallCapacity */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->canReportCallCapacity);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapacityReportingSpecification_when */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CapacityReportingSpecification_when (OOCTXT* pctxt, H225CapacityReportingSpecification_when* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callStartPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callEndPresent);
+
+ /* encode callStart */
+
+ if (pvalue->m.callStartPresent) {
+ /* NULL */
+ }
+
+ /* encode callEnd */
+
+ if (pvalue->m.callEndPresent) {
+ /* NULL */
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapacityReportingSpecification */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CapacityReportingSpecification (OOCTXT* pctxt, H225CapacityReportingSpecification* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode when */
+
+ stat = asn1PE_H225CapacityReportingSpecification_when (pctxt, &pvalue->when);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RasUsageInfoTypes */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RasUsageInfoTypes (OOCTXT* pctxt, H225RasUsageInfoTypes* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.startTimePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.endTimePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminationCausePresent);
+
+ /* encode nonStandardUsageTypes */
+
+ stat = asn1PE_H225_SeqOfH225NonStandardParameter (pctxt, &pvalue->nonStandardUsageTypes);
+ if (stat != ASN_OK) return stat;
+
+ /* encode startTime */
+
+ if (pvalue->m.startTimePresent) {
+ /* NULL */
+ }
+
+ /* encode endTime */
+
+ if (pvalue->m.endTimePresent) {
+ /* NULL */
+ }
+
+ /* encode terminationCause */
+
+ if (pvalue->m.terminationCausePresent) {
+ /* NULL */
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RasUsageSpecification_when */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RasUsageSpecification_when (OOCTXT* pctxt, H225RasUsageSpecification_when* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.startPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.endPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.inIrrPresent);
+
+ /* encode start */
+
+ if (pvalue->m.startPresent) {
+ /* NULL */
+ }
+
+ /* encode end */
+
+ if (pvalue->m.endPresent) {
+ /* NULL */
+ }
+
+ /* encode inIrr */
+
+ if (pvalue->m.inIrrPresent) {
+ /* NULL */
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RasUsageSpecification_callStartingPoint */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RasUsageSpecification_callStartingPoint (OOCTXT* pctxt, H225RasUsageSpecification_callStartingPoint* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alertingPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.connectPresent);
+
+ /* encode alerting */
+
+ if (pvalue->m.alertingPresent) {
+ /* NULL */
+ }
+
+ /* encode connect */
+
+ if (pvalue->m.connectPresent) {
+ /* NULL */
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RasUsageSpecification */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RasUsageSpecification (OOCTXT* pctxt, H225RasUsageSpecification* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callStartingPointPresent);
+
+ /* encode when */
+
+ stat = asn1PE_H225RasUsageSpecification_when (pctxt, &pvalue->when);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callStartingPoint */
+
+ if (pvalue->m.callStartingPointPresent) {
+ stat = asn1PE_H225RasUsageSpecification_callStartingPoint (pctxt, &pvalue->callStartingPoint);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode required */
+
+ stat = asn1PE_H225RasUsageInfoTypes (pctxt, &pvalue->required);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RasUsageInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RasUsageInformation (OOCTXT* pctxt, H225RasUsageInformation* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alertingTimePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.connectTimePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.endTimePresent);
+
+ /* encode nonStandardUsageFields */
+
+ stat = asn1PE_H225_SeqOfH225NonStandardParameter (pctxt, &pvalue->nonStandardUsageFields);
+ if (stat != ASN_OK) return stat;
+
+ /* encode alertingTime */
+
+ if (pvalue->m.alertingTimePresent) {
+ stat = asn1PE_H235TimeStamp (pctxt, pvalue->alertingTime);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode connectTime */
+
+ if (pvalue->m.connectTimePresent) {
+ stat = asn1PE_H235TimeStamp (pctxt, pvalue->connectTime);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode endTime */
+
+ if (pvalue->m.endTimePresent) {
+ stat = asn1PE_H235TimeStamp (pctxt, pvalue->endTime);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallTerminationCause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallTerminationCause (OOCTXT* pctxt, H225CallTerminationCause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* releaseCompleteReason */
+ case 1:
+ stat = asn1PE_H225ReleaseCompleteReason (pctxt, pvalue->u.releaseCompleteReason);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* releaseCompleteCauseIE */
+ case 2:
+ stat = asn1PE_H225CallTerminationCause_releaseCompleteCauseIE (pctxt, pvalue->u.releaseCompleteCauseIE);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportChannelInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportChannelInfo (OOCTXT* pctxt, H225TransportChannelInfo* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sendAddressPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.recvAddressPresent);
+
+ /* encode sendAddress */
+
+ if (pvalue->m.sendAddressPresent) {
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->sendAddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode recvAddress */
+
+ if (pvalue->m.recvAddressPresent) {
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->recvAddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BandwidthDetails */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225BandwidthDetails (OOCTXT* pctxt, H225BandwidthDetails* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sender */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->sender);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multicast */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->multicast);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bandwidth */
+
+ stat = asn1PE_H225BandWidth (pctxt, pvalue->bandwidth);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rtcpAddresses */
+
+ stat = asn1PE_H225TransportChannelInfo (pctxt, &pvalue->rtcpAddresses);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallCreditCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallCreditCapability (OOCTXT* pctxt, H225CallCreditCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.canDisplayAmountStringPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.canEnforceDurationLimitPresent);
+
+ /* encode canDisplayAmountString */
+
+ if (pvalue->m.canDisplayAmountStringPresent) {
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->canDisplayAmountString);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode canEnforceDurationLimit */
+
+ if (pvalue->m.canEnforceDurationLimitPresent) {
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->canEnforceDurationLimit);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPSession_associatedSessionIds */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RTPSession_associatedSessionIds (OOCTXT* pctxt, H225RTPSession_associatedSessionIds* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeConsUnsigned (pctxt, pvalue->elem[xx1], 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPSession */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RTPSession (OOCTXT* pctxt, H225RTPSession* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.multicastPresent ||
+ pvalue->m.bandwidthPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode rtpAddress */
+
+ stat = asn1PE_H225TransportChannelInfo (pctxt, &pvalue->rtpAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rtcpAddress */
+
+ stat = asn1PE_H225TransportChannelInfo (pctxt, &pvalue->rtcpAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode cname */
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->cname, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+
+ /* encode ssrc */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->ssrc, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ /* encode sessionId */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->sessionId, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode associatedSessionIds */
+
+ stat = asn1PE_H225RTPSession_associatedSessionIds (pctxt, &pvalue->associatedSessionIds);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multicastPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.bandwidthPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.multicastPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.bandwidthPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225BandWidth (&lctxt, pvalue->bandwidth);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225Endpoint */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225Endpoint (OOCTXT* pctxt, H225_SeqOfH225Endpoint* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225Endpoint (pctxt, ((H225Endpoint*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AuthenticationMechanism */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225AuthenticationMechanism (OOCTXT* pctxt, H225_SeqOfH225AuthenticationMechanism* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H235AuthenticationMechanism (pctxt, ((H235AuthenticationMechanism*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperRequest_algorithmOIDs */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GatekeeperRequest_algorithmOIDs (OOCTXT* pctxt, H225GatekeeperRequest_algorithmOIDs* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeObjectIdentifier (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225IntegrityMechanism */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225IntegrityMechanism (OOCTXT* pctxt, H225_SeqOfH225IntegrityMechanism* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225IntegrityMechanism (pctxt, ((H225IntegrityMechanism*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GatekeeperRequest (OOCTXT* pctxt, H225GatekeeperRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.alternateEndpointsPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.authenticationCapabilityPresent ||
+ pvalue->m.algorithmOIDsPresent ||
+ pvalue->m.integrityPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.supportsAltGKPresent ||
+ pvalue->m.featureSetPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callServicesPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointAliasPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode rasAddress */
+
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->rasAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode endpointType */
+
+ stat = asn1PE_H225EndpointType (pctxt, &pvalue->endpointType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode gatekeeperIdentifier */
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode callServices */
+
+ if (pvalue->m.callServicesPresent) {
+ stat = asn1PE_H225QseriesOptions (pctxt, &pvalue->callServices);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode endpointAlias */
+
+ if (pvalue->m.endpointAliasPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->endpointAlias);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 9);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateEndpointsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.authenticationCapabilityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.algorithmOIDsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportsAltGKPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.alternateEndpointsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225Endpoint (&lctxt, &pvalue->alternateEndpoints);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.authenticationCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AuthenticationMechanism (&lctxt, &pvalue->authenticationCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.algorithmOIDsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225GatekeeperRequest_algorithmOIDs (&lctxt, &pvalue->algorithmOIDs);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225IntegrityMechanism (&lctxt, &pvalue->integrity);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportsAltGKPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GatekeeperConfirm (OOCTXT* pctxt, H225GatekeeperConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.alternateGatekeeperPresent ||
+ pvalue->m.authenticationModePresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.algorithmOIDPresent ||
+ pvalue->m.integrityPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.featureSetPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode gatekeeperIdentifier */
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode rasAddress */
+
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->rasAddress);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 8);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateGatekeeperPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.authenticationModePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.algorithmOIDPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.alternateGatekeeperPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AlternateGK (&lctxt, &pvalue->alternateGatekeeper);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.authenticationModePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H235AuthenticationMechanism (&lctxt, &pvalue->authenticationMode);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.algorithmOIDPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeObjectIdentifier (&lctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225IntegrityMechanism (&lctxt, &pvalue->integrity);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GatekeeperRejectReason (OOCTXT* pctxt, H225GatekeeperRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* resourceUnavailable */
+ case 1:
+ /* NULL */
+ break;
+
+ /* terminalExcluded */
+ case 2:
+ /* NULL */
+ break;
+
+ /* invalidRevision */
+ case 3:
+ /* NULL */
+ break;
+
+ /* undefinedReason */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* securityDenial */
+ case 5:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* genericDataReason */
+ case 6:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* neededFeatureNotSupported */
+ case 7:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* securityError */
+ case 8:
+ stat = asn1PE_H225SecurityErrors (&lctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225GatekeeperReject (OOCTXT* pctxt, H225GatekeeperReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.altGKInfoPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.featureSetPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode gatekeeperIdentifier */
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode rejectReason */
+
+ stat = asn1PE_H225GatekeeperRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.altGKInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AltGKInfo (&lctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AddressPattern */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225AddressPattern (OOCTXT* pctxt, H225_SeqOfH225AddressPattern* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225AddressPattern (pctxt, ((H225AddressPattern*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225H248PackagesDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225H248PackagesDescriptor (OOCTXT* pctxt, H225_SeqOfH225H248PackagesDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H225H248PackagesDescriptor (pctxt, pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RegistrationRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RegistrationRequest (OOCTXT* pctxt, H225RegistrationRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.alternateEndpointsPresent ||
+ pvalue->m.timeToLivePresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.keepAlivePresent ||
+ pvalue->m.endpointIdentifierPresent ||
+ pvalue->m.willSupplyUUIEsPresent ||
+ pvalue->m.maintainConnectionPresent ||
+ pvalue->m.alternateTransportAddressesPresent ||
+ pvalue->m.additiveRegistrationPresent ||
+ pvalue->m.terminalAliasPatternPresent ||
+ pvalue->m.supportsAltGKPresent ||
+ pvalue->m.usageReportingCapabilityPresent ||
+ pvalue->m.multipleCallsPresent ||
+ pvalue->m.supportedH248PackagesPresent ||
+ pvalue->m.callCreditCapabilityPresent ||
+ pvalue->m.capacityReportingCapabilityPresent ||
+ pvalue->m.capacityPresent ||
+ pvalue->m.featureSetPresent ||
+ pvalue->m.genericDataPresent ||
+ pvalue->m.restartPresent ||
+ pvalue->m.supportsACFSequencesPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalAliasPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode discoveryComplete */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->discoveryComplete);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callSignalAddress */
+
+ stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rasAddress */
+
+ stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->rasAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode terminalType */
+
+ stat = asn1PE_H225EndpointType (pctxt, &pvalue->terminalType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode terminalAlias */
+
+ if (pvalue->m.terminalAliasPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->terminalAlias);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode gatekeeperIdentifier */
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode endpointVendor */
+
+ stat = asn1PE_H225VendorIdentifier (pctxt, &pvalue->endpointVendor);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 22);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateEndpointsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.timeToLivePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.keepAlivePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.willSupplyUUIEsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateTransportAddressesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.additiveRegistrationPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalAliasPatternPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportsAltGKPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageReportingCapabilityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedH248PackagesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callCreditCapabilityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityReportingCapabilityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.restartPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportsACFSequencesPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.alternateEndpointsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225Endpoint (&lctxt, &pvalue->alternateEndpoints);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.timeToLivePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225TimeToLive (&lctxt, pvalue->timeToLive);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.keepAlivePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->keepAlive);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.endpointIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225EndpointIdentifier (&lctxt, pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.willSupplyUUIEsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->willSupplyUUIEs);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.maintainConnectionPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.alternateTransportAddressesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AlternateTransportAddresses (&lctxt, &pvalue->alternateTransportAddresses);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.additiveRegistrationPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.terminalAliasPatternPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AddressPattern (&lctxt, &pvalue->terminalAliasPattern);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportsAltGKPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.usageReportingCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225RasUsageInfoTypes (&lctxt, &pvalue->usageReportingCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.multipleCallsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedH248PackagesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225H248PackagesDescriptor (&lctxt, &pvalue->supportedH248Packages);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.callCreditCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallCreditCapability (&lctxt, &pvalue->callCreditCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.capacityReportingCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CapacityReportingCapability (&lctxt, &pvalue->capacityReportingCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.capacityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.restartPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportsACFSequencesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RegistrationConfirm_preGrantedARQ */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RegistrationConfirm_preGrantedARQ (OOCTXT* pctxt, H225RegistrationConfirm_preGrantedARQ* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.irrFrequencyInCallPresent ||
+ pvalue->m.totalBandwidthRestrictionPresent ||
+ pvalue->m.alternateTransportAddressesPresent ||
+ pvalue->m.useSpecifiedTransportPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode makeCall */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->makeCall);
+ if (stat != ASN_OK) return stat;
+
+ /* encode useGKCallSignalAddressToMakeCall */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->useGKCallSignalAddressToMakeCall);
+ if (stat != ASN_OK) return stat;
+
+ /* encode answerCall */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->answerCall);
+ if (stat != ASN_OK) return stat;
+
+ /* encode useGKCallSignalAddressToAnswer */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->useGKCallSignalAddressToAnswer);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.irrFrequencyInCallPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.totalBandwidthRestrictionPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateTransportAddressesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.useSpecifiedTransportPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.irrFrequencyInCallPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->irrFrequencyInCall, 1U, 65535U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.totalBandwidthRestrictionPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225BandWidth (&lctxt, pvalue->totalBandwidthRestriction);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.alternateTransportAddressesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AlternateTransportAddresses (&lctxt, &pvalue->alternateTransportAddresses);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.useSpecifiedTransportPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225UseSpecifiedTransport (&lctxt, &pvalue->useSpecifiedTransport);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225RasUsageSpecification */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225RasUsageSpecification (OOCTXT* pctxt, H225_SeqOfH225RasUsageSpecification* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225RasUsageSpecification (pctxt, ((H225RasUsageSpecification*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RegistrationConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RegistrationConfirm (OOCTXT* pctxt, H225RegistrationConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.alternateGatekeeperPresent ||
+ pvalue->m.timeToLivePresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.willRespondToIRRPresent ||
+ pvalue->m.preGrantedARQPresent ||
+ pvalue->m.maintainConnectionPresent ||
+ pvalue->m.serviceControlPresent ||
+ pvalue->m.supportsAdditiveRegistrationPresent ||
+ pvalue->m.terminalAliasPatternPresent ||
+ pvalue->m.supportedPrefixesPresent ||
+ pvalue->m.usageSpecPresent ||
+ pvalue->m.featureServerAliasPresent ||
+ pvalue->m.capacityReportingSpecPresent ||
+ pvalue->m.featureSetPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalAliasPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode callSignalAddress */
+
+ stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode terminalAlias */
+
+ if (pvalue->m.terminalAliasPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->terminalAlias);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode gatekeeperIdentifier */
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode endpointIdentifier */
+
+ stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 16);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateGatekeeperPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.timeToLivePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.willRespondToIRRPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.preGrantedARQPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportsAdditiveRegistrationPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalAliasPatternPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageSpecPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureServerAliasPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityReportingSpecPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.alternateGatekeeperPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AlternateGK (&lctxt, &pvalue->alternateGatekeeper);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.timeToLivePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225TimeToLive (&lctxt, pvalue->timeToLive);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.willRespondToIRRPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->willRespondToIRR);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.preGrantedARQPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225RegistrationConfirm_preGrantedARQ (&lctxt, &pvalue->preGrantedARQ);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.maintainConnectionPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.serviceControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportsAdditiveRegistrationPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.terminalAliasPatternPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AddressPattern (&lctxt, &pvalue->terminalAliasPattern);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedPrefixesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.usageSpecPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225RasUsageSpecification (&lctxt, &pvalue->usageSpec);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureServerAliasPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AliasAddress (&lctxt, &pvalue->featureServerAlias);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.capacityReportingSpecPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CapacityReportingSpecification (&lctxt, &pvalue->capacityReportingSpec);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RegistrationRejectReason_invalidTerminalAliases */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RegistrationRejectReason_invalidTerminalAliases (OOCTXT* pctxt, H225RegistrationRejectReason_invalidTerminalAliases* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalAliasPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalAliasPatternPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
+
+ /* encode terminalAlias */
+
+ if (pvalue->m.terminalAliasPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->terminalAlias);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode terminalAliasPattern */
+
+ if (pvalue->m.terminalAliasPatternPresent) {
+ stat = asn1PE_H225_SeqOfH225AddressPattern (pctxt, &pvalue->terminalAliasPattern);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode supportedPrefixes */
+
+ if (pvalue->m.supportedPrefixesPresent) {
+ stat = asn1PE_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RegistrationRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RegistrationRejectReason (OOCTXT* pctxt, H225RegistrationRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 8);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* discoveryRequired */
+ case 1:
+ /* NULL */
+ break;
+
+ /* invalidRevision */
+ case 2:
+ /* NULL */
+ break;
+
+ /* invalidCallSignalAddress */
+ case 3:
+ /* NULL */
+ break;
+
+ /* invalidRASAddress */
+ case 4:
+ /* NULL */
+ break;
+
+ /* duplicateAlias */
+ case 5:
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, pvalue->u.duplicateAlias);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* invalidTerminalType */
+ case 6:
+ /* NULL */
+ break;
+
+ /* undefinedReason */
+ case 7:
+ /* NULL */
+ break;
+
+ /* transportNotSupported */
+ case 8:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 9);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* transportQOSNotSupported */
+ case 9:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* resourceUnavailable */
+ case 10:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* invalidAlias */
+ case 11:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* securityDenial */
+ case 12:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* fullRegistrationRequired */
+ case 13:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* additiveRegistrationNotSupported */
+ case 14:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* invalidTerminalAliases */
+ case 15:
+ stat = asn1PE_H225RegistrationRejectReason_invalidTerminalAliases (&lctxt, pvalue->u.invalidTerminalAliases);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* genericDataReason */
+ case 16:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* neededFeatureNotSupported */
+ case 17:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* securityError */
+ case 18:
+ stat = asn1PE_H225SecurityErrors (&lctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RegistrationReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RegistrationReject (OOCTXT* pctxt, H225RegistrationReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.altGKInfoPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.featureSetPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode rejectReason */
+
+ stat = asn1PE_H225RegistrationRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ /* encode gatekeeperIdentifier */
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.altGKInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AltGKInfo (&lctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnregRequestReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225UnregRequestReason (OOCTXT* pctxt, H225UnregRequestReason* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* reregistrationRequired */
+ case 1:
+ /* NULL */
+ break;
+
+ /* ttlExpired */
+ case 2:
+ /* NULL */
+ break;
+
+ /* securityDenial */
+ case 3:
+ /* NULL */
+ break;
+
+ /* undefinedReason */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* maintenance */
+ case 5:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* securityError */
+ case 6:
+ stat = asn1PE_H225SecurityErrors2 (&lctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnregistrationRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225UnregistrationRequest (OOCTXT* pctxt, H225UnregistrationRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.alternateEndpointsPresent ||
+ pvalue->m.gatekeeperIdentifierPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.reasonPresent ||
+ pvalue->m.endpointAliasPatternPresent ||
+ pvalue->m.supportedPrefixesPresent ||
+ pvalue->m.alternateGatekeeperPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointAliasPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointIdentifierPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callSignalAddress */
+
+ stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode endpointAlias */
+
+ if (pvalue->m.endpointAliasPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->endpointAlias);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode endpointIdentifier */
+
+ if (pvalue->m.endpointIdentifierPresent) {
+ stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 9);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateEndpointsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.reasonPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointAliasPatternPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateGatekeeperPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.alternateEndpointsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225Endpoint (&lctxt, &pvalue->alternateEndpoints);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225GatekeeperIdentifier (&lctxt, pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.reasonPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225UnregRequestReason (&lctxt, &pvalue->reason);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.endpointAliasPatternPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AddressPattern (&lctxt, &pvalue->endpointAliasPattern);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedPrefixesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.alternateGatekeeperPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AlternateGK (&lctxt, &pvalue->alternateGatekeeper);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnregistrationConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225UnregistrationConfirm (OOCTXT* pctxt, H225UnregistrationConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnregRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225UnregRejectReason (OOCTXT* pctxt, H225UnregRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* notCurrentlyRegistered */
+ case 1:
+ /* NULL */
+ break;
+
+ /* callInProgress */
+ case 2:
+ /* NULL */
+ break;
+
+ /* undefinedReason */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* permissionDenied */
+ case 4:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* securityDenial */
+ case 5:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* securityError */
+ case 6:
+ stat = asn1PE_H225SecurityErrors2 (&lctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnregistrationReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225UnregistrationReject (OOCTXT* pctxt, H225UnregistrationReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.altGKInfoPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rejectReason */
+
+ stat = asn1PE_H225UnregRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.altGKInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AltGKInfo (&lctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallModel */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225CallModel (OOCTXT* pctxt, H225CallModel* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* direct */
+ case 1:
+ /* NULL */
+ break;
+
+ /* gatekeeperRouted */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportQOS */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225TransportQOS (OOCTXT* pctxt, H225TransportQOS* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* endpointControlled */
+ case 1:
+ /* NULL */
+ break;
+
+ /* gatekeeperControlled */
+ case 2:
+ /* NULL */
+ break;
+
+ /* noControl */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AdmissionRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225AdmissionRequest (OOCTXT* pctxt, H225AdmissionRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.canMapAliasPresent ||
+ pvalue->m.callIdentifierPresent ||
+ pvalue->m.srcAlternativesPresent ||
+ pvalue->m.destAlternativesPresent ||
+ pvalue->m.gatekeeperIdentifierPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.transportQOSPresent ||
+ pvalue->m.willSupplyUUIEsPresent ||
+ pvalue->m.callLinkagePresent ||
+ pvalue->m.gatewayDataRatePresent ||
+ pvalue->m.capacityPresent ||
+ pvalue->m.circuitInfoPresent ||
+ pvalue->m.desiredProtocolsPresent ||
+ pvalue->m.desiredTunnelledProtocolPresent ||
+ pvalue->m.featureSetPresent ||
+ pvalue->m.genericDataPresent ||
+ pvalue->m.canMapSrcAliasPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callModelPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationInfoPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destCallSignalAddressPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destExtraCallInfoPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.srcCallSignalAddressPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callServicesPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callType */
+
+ stat = asn1PE_H225CallType (pctxt, &pvalue->callType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callModel */
+
+ if (pvalue->m.callModelPresent) {
+ stat = asn1PE_H225CallModel (pctxt, &pvalue->callModel);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode endpointIdentifier */
+
+ stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode destinationInfo */
+
+ if (pvalue->m.destinationInfoPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode destCallSignalAddress */
+
+ if (pvalue->m.destCallSignalAddressPresent) {
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->destCallSignalAddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode destExtraCallInfo */
+
+ if (pvalue->m.destExtraCallInfoPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destExtraCallInfo);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode srcInfo */
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->srcInfo);
+ if (stat != ASN_OK) return stat;
+
+ /* encode srcCallSignalAddress */
+
+ if (pvalue->m.srcCallSignalAddressPresent) {
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->srcCallSignalAddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode bandWidth */
+
+ stat = asn1PE_H225BandWidth (pctxt, pvalue->bandWidth);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callReferenceValue */
+
+ stat = asn1PE_H225CallReferenceValue (pctxt, pvalue->callReferenceValue);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode callServices */
+
+ if (pvalue->m.callServicesPresent) {
+ stat = asn1PE_H225QseriesOptions (pctxt, &pvalue->callServices);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode conferenceID */
+
+ stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode activeMC */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->activeMC);
+ if (stat != ASN_OK) return stat;
+
+ /* encode answerCall */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->answerCall);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 18);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.canMapAliasPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.srcAlternativesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destAlternativesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.transportQOSPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.willSupplyUUIEsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callLinkagePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatewayDataRatePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.desiredProtocolsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.desiredTunnelledProtocolPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.canMapSrcAliasPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.canMapAliasPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->canMapAlias);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.callIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.srcAlternativesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225Endpoint (&lctxt, &pvalue->srcAlternatives);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.destAlternativesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225Endpoint (&lctxt, &pvalue->destAlternatives);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225GatekeeperIdentifier (&lctxt, pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.transportQOSPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225TransportQOS (&lctxt, &pvalue->transportQOS);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.willSupplyUUIEsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->willSupplyUUIEs);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.callLinkagePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallLinkage (&lctxt, &pvalue->callLinkage);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.gatewayDataRatePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225DataRate (&lctxt, &pvalue->gatewayDataRate);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.capacityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.circuitInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.desiredProtocolsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedProtocols (&lctxt, &pvalue->desiredProtocols);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.desiredTunnelledProtocolPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225TunnelledProtocol (&lctxt, &pvalue->desiredTunnelledProtocol);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.canMapSrcAliasPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->canMapSrcAlias);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UUIEsRequested */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225UUIEsRequested (OOCTXT* pctxt, H225UUIEsRequested* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.statusPresent ||
+ pvalue->m.statusInquiryPresent ||
+ pvalue->m.setupAcknowledgePresent ||
+ pvalue->m.notifyPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode setup */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->setup);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callProceeding */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->callProceeding);
+ if (stat != ASN_OK) return stat;
+
+ /* encode connect */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->connect);
+ if (stat != ASN_OK) return stat;
+
+ /* encode alerting */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alerting);
+ if (stat != ASN_OK) return stat;
+
+ /* encode information */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->information);
+ if (stat != ASN_OK) return stat;
+
+ /* encode releaseComplete */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->releaseComplete);
+ if (stat != ASN_OK) return stat;
+
+ /* encode facility */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->facility);
+ if (stat != ASN_OK) return stat;
+
+ /* encode progress */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->progress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode empty */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->empty);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.statusPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.statusInquiryPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.setupAcknowledgePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.notifyPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.statusPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->status);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.statusInquiryPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->statusInquiry);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.setupAcknowledgePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->setupAcknowledge);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.notifyPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->notify);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AdmissionConfirm_language */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225AdmissionConfirm_language (OOCTXT* pctxt, H225AdmissionConfirm_language* pvalue)
+{
+ static Asn1SizeCnst element_lsize1 = { 0, 1, 32, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ addSizeConstraint (pctxt, &element_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->elem[xx1], 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AdmissionConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225AdmissionConfirm (OOCTXT* pctxt, H225AdmissionConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.destinationInfoPresent ||
+ pvalue->m.destExtraCallInfoPresent ||
+ pvalue->m.destinationTypePresent ||
+ pvalue->m.remoteExtensionAddressPresent ||
+ pvalue->m.alternateEndpointsPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.transportQOSPresent ||
+ pvalue->m.willRespondToIRRPresent ||
+ pvalue->m.uuiesRequestedPresent ||
+ pvalue->m.languagePresent ||
+ pvalue->m.alternateTransportAddressesPresent ||
+ pvalue->m.useSpecifiedTransportPresent ||
+ pvalue->m.circuitInfoPresent ||
+ pvalue->m.usageSpecPresent ||
+ pvalue->m.supportedProtocolsPresent ||
+ pvalue->m.serviceControlPresent ||
+ pvalue->m.multipleCallsPresent ||
+ pvalue->m.featureSetPresent ||
+ pvalue->m.genericDataPresent ||
+ pvalue->m.modifiedSrcInfoPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.irrFrequencyPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bandWidth */
+
+ stat = asn1PE_H225BandWidth (pctxt, pvalue->bandWidth);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callModel */
+
+ stat = asn1PE_H225CallModel (pctxt, &pvalue->callModel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode destCallSignalAddress */
+
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->destCallSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode irrFrequency */
+
+ if (pvalue->m.irrFrequencyPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->irrFrequency, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 21);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destExtraCallInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationTypePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.remoteExtensionAddressPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateEndpointsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.transportQOSPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.willRespondToIRRPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.uuiesRequestedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.languagePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateTransportAddressesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.useSpecifiedTransportPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageSpecPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedProtocolsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.modifiedSrcInfoPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.destinationInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.destExtraCallInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->destExtraCallInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.destinationTypePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225EndpointType (&lctxt, &pvalue->destinationType);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.remoteExtensionAddressPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->remoteExtensionAddress);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.alternateEndpointsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225Endpoint (&lctxt, &pvalue->alternateEndpoints);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.transportQOSPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225TransportQOS (&lctxt, &pvalue->transportQOS);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.willRespondToIRRPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->willRespondToIRR);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.uuiesRequestedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225UUIEsRequested (&lctxt, &pvalue->uuiesRequested);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.languagePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AdmissionConfirm_language (&lctxt, &pvalue->language);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.alternateTransportAddressesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AlternateTransportAddresses (&lctxt, &pvalue->alternateTransportAddresses);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.useSpecifiedTransportPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225UseSpecifiedTransport (&lctxt, &pvalue->useSpecifiedTransport);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.circuitInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.usageSpecPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225RasUsageSpecification (&lctxt, &pvalue->usageSpec);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedProtocolsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedProtocols (&lctxt, &pvalue->supportedProtocols);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.serviceControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.multipleCallsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.modifiedSrcInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->modifiedSrcInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225PartyNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225PartyNumber (OOCTXT* pctxt, H225_SeqOfH225PartyNumber* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225PartyNumber (pctxt, ((H225PartyNumber*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AdmissionRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225AdmissionRejectReason (OOCTXT* pctxt, H225AdmissionRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 8);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* calledPartyNotRegistered */
+ case 1:
+ /* NULL */
+ break;
+
+ /* invalidPermission */
+ case 2:
+ /* NULL */
+ break;
+
+ /* requestDenied */
+ case 3:
+ /* NULL */
+ break;
+
+ /* undefinedReason */
+ case 4:
+ /* NULL */
+ break;
+
+ /* callerNotRegistered */
+ case 5:
+ /* NULL */
+ break;
+
+ /* routeCallToGatekeeper */
+ case 6:
+ /* NULL */
+ break;
+
+ /* invalidEndpointIdentifier */
+ case 7:
+ /* NULL */
+ break;
+
+ /* resourceUnavailable */
+ case 8:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 9);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* securityDenial */
+ case 9:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* qosControlNotSupported */
+ case 10:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* incompleteAddress */
+ case 11:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* aliasesInconsistent */
+ case 12:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* routeCallToSCN */
+ case 13:
+ stat = asn1PE_H225_SeqOfH225PartyNumber (&lctxt, pvalue->u.routeCallToSCN);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* exceedsCallCapacity */
+ case 14:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* collectDestination */
+ case 15:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* collectPIN */
+ case 16:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* genericDataReason */
+ case 17:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* neededFeatureNotSupported */
+ case 18:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* securityErrors */
+ case 19:
+ stat = asn1PE_H225SecurityErrors2 (&lctxt, pvalue->u.securityErrors);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* securityDHmismatch */
+ case 20:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* noRouteToDestination */
+ case 21:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* unallocatedNumber */
+ case 22:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AdmissionReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225AdmissionReject (OOCTXT* pctxt, H225AdmissionReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.altGKInfoPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.callSignalAddressPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.serviceControlPresent ||
+ pvalue->m.featureSetPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rejectReason */
+
+ stat = asn1PE_H225AdmissionRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 7);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callSignalAddressPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.altGKInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AltGKInfo (&lctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.callSignalAddressPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225TransportAddress (&lctxt, &pvalue->callSignalAddress);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.serviceControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225BandwidthDetails */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225BandwidthDetails (OOCTXT* pctxt, H225_SeqOfH225BandwidthDetails* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225BandwidthDetails (pctxt, ((H225BandwidthDetails*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BandwidthRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225BandwidthRequest (OOCTXT* pctxt, H225BandwidthRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
+ pvalue->m.gatekeeperIdentifierPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.answeredCallPresent ||
+ pvalue->m.callLinkagePresent ||
+ pvalue->m.capacityPresent ||
+ pvalue->m.usageInformationPresent ||
+ pvalue->m.bandwidthDetailsPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callTypePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode endpointIdentifier */
+
+ stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode conferenceID */
+
+ stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callReferenceValue */
+
+ stat = asn1PE_H225CallReferenceValue (pctxt, pvalue->callReferenceValue);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callType */
+
+ if (pvalue->m.callTypePresent) {
+ stat = asn1PE_H225CallType (pctxt, &pvalue->callType);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode bandWidth */
+
+ stat = asn1PE_H225BandWidth (pctxt, pvalue->bandWidth);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 10);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.answeredCallPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callLinkagePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageInformationPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.bandwidthDetailsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.callIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225GatekeeperIdentifier (&lctxt, pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.answeredCallPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->answeredCall);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.callLinkagePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallLinkage (&lctxt, &pvalue->callLinkage);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.capacityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.usageInformationPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225RasUsageInformation (&lctxt, &pvalue->usageInformation);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.bandwidthDetailsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225BandwidthDetails (&lctxt, &pvalue->bandwidthDetails);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BandwidthConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225BandwidthConfirm (OOCTXT* pctxt, H225BandwidthConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.capacityPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bandWidth */
+
+ stat = asn1PE_H225BandWidth (pctxt, pvalue->bandWidth);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.capacityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BandRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225BandRejectReason (OOCTXT* pctxt, H225BandRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 6);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* notBound */
+ case 1:
+ /* NULL */
+ break;
+
+ /* invalidConferenceID */
+ case 2:
+ /* NULL */
+ break;
+
+ /* invalidPermission */
+ case 3:
+ /* NULL */
+ break;
+
+ /* insufficientResources */
+ case 4:
+ /* NULL */
+ break;
+
+ /* invalidRevision */
+ case 5:
+ /* NULL */
+ break;
+
+ /* undefinedReason */
+ case 6:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* securityDenial */
+ case 7:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* securityError */
+ case 8:
+ stat = asn1PE_H225SecurityErrors2 (&lctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BandwidthReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225BandwidthReject (OOCTXT* pctxt, H225BandwidthReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.altGKInfoPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rejectReason */
+
+ stat = asn1PE_H225BandRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ /* encode allowedBandWidth */
+
+ stat = asn1PE_H225BandWidth (pctxt, pvalue->allowedBandWidth);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.altGKInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AltGKInfo (&lctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DisengageReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225DisengageReason (OOCTXT* pctxt, H225DisengageReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* forcedDrop */
+ case 1:
+ /* NULL */
+ break;
+
+ /* normalDrop */
+ case 2:
+ /* NULL */
+ break;
+
+ /* undefinedReason */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DisengageRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225DisengageRequest (OOCTXT* pctxt, H225DisengageRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
+ pvalue->m.gatekeeperIdentifierPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.answeredCallPresent ||
+ pvalue->m.callLinkagePresent ||
+ pvalue->m.capacityPresent ||
+ pvalue->m.circuitInfoPresent ||
+ pvalue->m.usageInformationPresent ||
+ pvalue->m.terminationCausePresent ||
+ pvalue->m.serviceControlPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode endpointIdentifier */
+
+ stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode conferenceID */
+
+ stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callReferenceValue */
+
+ stat = asn1PE_H225CallReferenceValue (pctxt, pvalue->callReferenceValue);
+ if (stat != ASN_OK) return stat;
+
+ /* encode disengageReason */
+
+ stat = asn1PE_H225DisengageReason (pctxt, &pvalue->disengageReason);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 12);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.answeredCallPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callLinkagePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageInformationPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminationCausePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.callIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225GatekeeperIdentifier (&lctxt, pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.answeredCallPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->answeredCall);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.callLinkagePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallLinkage (&lctxt, &pvalue->callLinkage);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.capacityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.circuitInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.usageInformationPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225RasUsageInformation (&lctxt, &pvalue->usageInformation);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.terminationCausePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallTerminationCause (&lctxt, &pvalue->terminationCause);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.serviceControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DisengageConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225DisengageConfirm (OOCTXT* pctxt, H225DisengageConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.capacityPresent ||
+ pvalue->m.circuitInfoPresent ||
+ pvalue->m.usageInformationPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 6);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageInformationPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.capacityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.circuitInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.usageInformationPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225RasUsageInformation (&lctxt, &pvalue->usageInformation);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DisengageRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225DisengageRejectReason (OOCTXT* pctxt, H225DisengageRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* notRegistered */
+ case 1:
+ /* NULL */
+ break;
+
+ /* requestToDropOther */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* securityDenial */
+ case 3:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* securityError */
+ case 4:
+ stat = asn1PE_H225SecurityErrors2 (&lctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DisengageReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225DisengageReject (OOCTXT* pctxt, H225DisengageReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.altGKInfoPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rejectReason */
+
+ stat = asn1PE_H225DisengageRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.altGKInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AltGKInfo (&lctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LocationRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225LocationRequest (OOCTXT* pctxt, H225LocationRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.sourceInfoPresent ||
+ pvalue->m.canMapAliasPresent ||
+ pvalue->m.gatekeeperIdentifierPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.desiredProtocolsPresent ||
+ pvalue->m.desiredTunnelledProtocolPresent ||
+ pvalue->m.featureSetPresent ||
+ pvalue->m.genericDataPresent ||
+ pvalue->m.hopCountPresent ||
+ pvalue->m.circuitInfoPresent ||
+ pvalue->m.callIdentifierPresent ||
+ pvalue->m.bandWidthPresent ||
+ pvalue->m.sourceEndpointInfoPresent ||
+ pvalue->m.canMapSrcAliasPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointIdentifierPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode endpointIdentifier */
+
+ if (pvalue->m.endpointIdentifierPresent) {
+ stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode destinationInfo */
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode replyAddress */
+
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->replyAddress);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 15);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sourceInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.canMapAliasPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.desiredProtocolsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.desiredTunnelledProtocolPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.hopCountPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.bandWidthPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sourceEndpointInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.canMapSrcAliasPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.sourceInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->sourceInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.canMapAliasPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->canMapAlias);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.gatekeeperIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225GatekeeperIdentifier (&lctxt, pvalue->gatekeeperIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.desiredProtocolsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedProtocols (&lctxt, &pvalue->desiredProtocols);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.desiredTunnelledProtocolPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225TunnelledProtocol (&lctxt, &pvalue->desiredTunnelledProtocol);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.hopCountPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->hopCount, 1U, 255U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.circuitInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.callIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.bandWidthPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225BandWidth (&lctxt, pvalue->bandWidth);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.sourceEndpointInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->sourceEndpointInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.canMapSrcAliasPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->canMapSrcAlias);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LocationConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225LocationConfirm (OOCTXT* pctxt, H225LocationConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.destinationInfoPresent ||
+ pvalue->m.destExtraCallInfoPresent ||
+ pvalue->m.destinationTypePresent ||
+ pvalue->m.remoteExtensionAddressPresent ||
+ pvalue->m.alternateEndpointsPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.alternateTransportAddressesPresent ||
+ pvalue->m.supportedProtocolsPresent ||
+ pvalue->m.multipleCallsPresent ||
+ pvalue->m.featureSetPresent ||
+ pvalue->m.genericDataPresent ||
+ pvalue->m.circuitInfoPresent ||
+ pvalue->m.serviceControlPresent ||
+ pvalue->m.modifiedSrcInfoPresent ||
+ pvalue->m.bandWidthPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callSignalAddress */
+
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->callSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rasAddress */
+
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->rasAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 16);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destExtraCallInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationTypePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.remoteExtensionAddressPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateEndpointsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateTransportAddressesPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedProtocolsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.modifiedSrcInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.bandWidthPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.destinationInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->destinationInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.destExtraCallInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->destExtraCallInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.destinationTypePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225EndpointType (&lctxt, &pvalue->destinationType);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.remoteExtensionAddressPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->remoteExtensionAddress);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.alternateEndpointsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225Endpoint (&lctxt, &pvalue->alternateEndpoints);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.alternateTransportAddressesPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AlternateTransportAddresses (&lctxt, &pvalue->alternateTransportAddresses);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.supportedProtocolsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225SupportedProtocols (&lctxt, &pvalue->supportedProtocols);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.multipleCallsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.circuitInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.serviceControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.modifiedSrcInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->modifiedSrcInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.bandWidthPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225BandWidth (&lctxt, pvalue->bandWidth);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LocationRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225LocationRejectReason (OOCTXT* pctxt, H225LocationRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* notRegistered */
+ case 1:
+ /* NULL */
+ break;
+
+ /* invalidPermission */
+ case 2:
+ /* NULL */
+ break;
+
+ /* requestDenied */
+ case 3:
+ /* NULL */
+ break;
+
+ /* undefinedReason */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* securityDenial */
+ case 5:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* aliasesInconsistent */
+ case 6:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* routeCalltoSCN */
+ case 7:
+ stat = asn1PE_H225_SeqOfH225PartyNumber (&lctxt, pvalue->u.routeCalltoSCN);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* resourceUnavailable */
+ case 8:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* genericDataReason */
+ case 9:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* neededFeatureNotSupported */
+ case 10:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* hopCountExceeded */
+ case 11:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* incompleteAddress */
+ case 12:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* securityError */
+ case 13:
+ stat = asn1PE_H225SecurityErrors2 (&lctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* securityDHmismatch */
+ case 14:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* noRouteToDestination */
+ case 15:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* unallocatedNumber */
+ case 16:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LocationReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225LocationReject (OOCTXT* pctxt, H225LocationReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.altGKInfoPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.featureSetPresent ||
+ pvalue->m.genericDataPresent ||
+ pvalue->m.serviceControlPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rejectReason */
+
+ stat = asn1PE_H225LocationRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 6);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.altGKInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225AltGKInfo (&lctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.serviceControlPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225InfoRequest (OOCTXT* pctxt, H225InfoRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.uuiesRequestedPresent ||
+ pvalue->m.callLinkagePresent ||
+ pvalue->m.usageInfoRequestedPresent ||
+ pvalue->m.segmentedResponseSupportedPresent ||
+ pvalue->m.nextSegmentRequestedPresent ||
+ pvalue->m.capacityInfoRequestedPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.replyAddressPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callReferenceValue */
+
+ stat = asn1PE_H225CallReferenceValue (pctxt, pvalue->callReferenceValue);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode replyAddress */
+
+ if (pvalue->m.replyAddressPresent) {
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->replyAddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 10);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.uuiesRequestedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callLinkagePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageInfoRequestedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.segmentedResponseSupportedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nextSegmentRequestedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityInfoRequestedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.callIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.uuiesRequestedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225UUIEsRequested (&lctxt, &pvalue->uuiesRequested);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.callLinkagePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallLinkage (&lctxt, &pvalue->callLinkage);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.usageInfoRequestedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225RasUsageInfoTypes (&lctxt, &pvalue->usageInfoRequested);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.segmentedResponseSupportedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.nextSegmentRequestedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->nextSegmentRequested, 0U, 65535U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.capacityInfoRequestedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225RTPSession */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225RTPSession (OOCTXT* pctxt, H225_SeqOfH225RTPSession* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225RTPSession (pctxt, ((H225RTPSession*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TransportChannelInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225TransportChannelInfo (OOCTXT* pctxt, H225_SeqOfH225TransportChannelInfo* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225TransportChannelInfo (pctxt, ((H225TransportChannelInfo*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ConferenceIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225ConferenceIdentifier (OOCTXT* pctxt, H225_SeqOfH225ConferenceIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequestResponse_perCallInfo_element_pdu_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode h323pdu */
+
+ stat = asn1PE_H225H323_UU_PDU (pctxt, &pvalue->h323pdu);
+ if (stat != ASN_OK) return stat;
+
+ /* encode sent */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->sent);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_el */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225InfoRequestResponse_perCallInfo_element_pdu_element (pctxt, ((H225InfoRequestResponse_perCallInfo_element_pdu_element*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequestResponse_perCallInfo_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
+ pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.substituteConfIDsPresent ||
+ pvalue->m.pduPresent ||
+ pvalue->m.callLinkagePresent ||
+ pvalue->m.usageInformationPresent ||
+ pvalue->m.circuitInfoPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.originatorPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.audioPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode callReferenceValue */
+
+ stat = asn1PE_H225CallReferenceValue (pctxt, pvalue->callReferenceValue);
+ if (stat != ASN_OK) return stat;
+
+ /* encode conferenceID */
+
+ stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode originator */
+
+ if (pvalue->m.originatorPresent) {
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->originator);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode audio */
+
+ if (pvalue->m.audioPresent) {
+ stat = asn1PE_H225_SeqOfH225RTPSession (pctxt, &pvalue->audio);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode video */
+
+ if (pvalue->m.videoPresent) {
+ stat = asn1PE_H225_SeqOfH225RTPSession (pctxt, &pvalue->video);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode data */
+
+ if (pvalue->m.dataPresent) {
+ stat = asn1PE_H225_SeqOfH225TransportChannelInfo (pctxt, &pvalue->data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode h245 */
+
+ stat = asn1PE_H225TransportChannelInfo (pctxt, &pvalue->h245);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callSignaling */
+
+ stat = asn1PE_H225TransportChannelInfo (pctxt, &pvalue->callSignaling);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callType */
+
+ stat = asn1PE_H225CallType (pctxt, &pvalue->callType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bandWidth */
+
+ stat = asn1PE_H225BandWidth (pctxt, pvalue->bandWidth);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callModel */
+
+ stat = asn1PE_H225CallModel (pctxt, &pvalue->callModel);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 7);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.substituteConfIDsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.pduPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callLinkagePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageInformationPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.callIdentifierPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.substituteConfIDsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ConferenceIdentifier (&lctxt, &pvalue->substituteConfIDs);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.pduPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element (&lctxt, &pvalue->pdu);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.callLinkagePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallLinkage (&lctxt, &pvalue->callLinkage);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.usageInformationPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225RasUsageInformation (&lctxt, &pvalue->usageInformation);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.circuitInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225InfoRequestResponse_perCallInfo_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225InfoRequestResponse_perCallInfo_element (pctxt, ((H225InfoRequestResponse_perCallInfo_element*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequestResponseStatus */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225InfoRequestResponseStatus (OOCTXT* pctxt, H225InfoRequestResponseStatus* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* complete */
+ case 1:
+ /* NULL */
+ break;
+
+ /* incomplete */
+ case 2:
+ /* NULL */
+ break;
+
+ /* segment */
+ case 3:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.segment, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* invalidCall */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequestResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225InfoRequestResponse (OOCTXT* pctxt, H225InfoRequestResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.needResponsePresent ||
+ pvalue->m.capacityPresent ||
+ pvalue->m.irrStatusPresent ||
+ pvalue->m.unsolicitedPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointAliasPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.perCallInfoPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode endpointType */
+
+ stat = asn1PE_H225EndpointType (pctxt, &pvalue->endpointType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode endpointIdentifier */
+
+ stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rasAddress */
+
+ stat = asn1PE_H225TransportAddress (pctxt, &pvalue->rasAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callSignalAddress */
+
+ stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode endpointAlias */
+
+ if (pvalue->m.endpointAliasPresent) {
+ stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->endpointAlias);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode perCallInfo */
+
+ if (pvalue->m.perCallInfoPresent) {
+ stat = asn1PE_H225_SeqOfH225InfoRequestResponse_perCallInfo_element (pctxt, &pvalue->perCallInfo);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 7);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.needResponsePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.irrStatusPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.unsolicitedPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.needResponsePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->needResponse);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.capacityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.irrStatusPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225InfoRequestResponseStatus (&lctxt, &pvalue->irrStatus);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.unsolicitedPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->unsolicited);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225NonStandardMessage (OOCTXT* pctxt, H225NonStandardMessage* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.featureSetPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.featureSetPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnknownMessageResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225UnknownMessageResponse (OOCTXT* pctxt, H225UnknownMessageResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.tokensPresent ||
+ pvalue->m.cryptoTokensPresent ||
+ pvalue->m.integrityCheckValuePresent ||
+ pvalue->m.messageNotUnderstoodPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.messageNotUnderstoodPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.tokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.cryptoTokensPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.messageNotUnderstoodPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOctetString (&lctxt, pvalue->messageNotUnderstood.numocts, pvalue->messageNotUnderstood.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestInProgress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RequestInProgress (OOCTXT* pctxt, H225RequestInProgress* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode integrityCheckValue */
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ stat = asn1PE_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode delay */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->delay, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ResourcesAvailableIndicate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ResourcesAvailableIndicate (OOCTXT* pctxt, H225ResourcesAvailableIndicate* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.capacityPresent ||
+ pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode endpointIdentifier */
+
+ stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode protocols */
+
+ stat = asn1PE_H225_SeqOfH225SupportedProtocols (pctxt, &pvalue->protocols);
+ if (stat != ASN_OK) return stat;
+
+ /* encode almostOutOfResources */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->almostOutOfResources);
+ if (stat != ASN_OK) return stat;
+
+ /* encode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode integrityCheckValue */
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ stat = asn1PE_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.capacityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ResourcesAvailableConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ResourcesAvailableConfirm (OOCTXT* pctxt, H225ResourcesAvailableConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.genericDataPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode protocolIdentifier */
+
+ stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode integrityCheckValue */
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ stat = asn1PE_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.genericDataPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequestAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225InfoRequestAck (OOCTXT* pctxt, H225InfoRequestAck* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode integrityCheckValue */
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ stat = asn1PE_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequestNakReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225InfoRequestNakReason (OOCTXT* pctxt, H225InfoRequestNakReason* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* notRegistered */
+ case 1:
+ /* NULL */
+ break;
+
+ /* securityDenial */
+ case 2:
+ /* NULL */
+ break;
+
+ /* undefinedReason */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* securityError */
+ case 4:
+ stat = asn1PE_H225SecurityErrors2 (&lctxt, pvalue->u.securityError);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* InfoRequestNak */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225InfoRequestNak (OOCTXT* pctxt, H225InfoRequestNak* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode nakReason */
+
+ stat = asn1PE_H225InfoRequestNakReason (pctxt, &pvalue->nakReason);
+ if (stat != ASN_OK) return stat;
+
+ /* encode altGKInfo */
+
+ if (pvalue->m.altGKInfoPresent) {
+ stat = asn1PE_H225AltGKInfo (pctxt, &pvalue->altGKInfo);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode integrityCheckValue */
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ stat = asn1PE_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ServiceControlIndication_callSpecific */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ServiceControlIndication_callSpecific (OOCTXT* pctxt, H225ServiceControlIndication_callSpecific* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode callIdentifier */
+
+ stat = asn1PE_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode conferenceID */
+
+ stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode answeredCall */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->answeredCall);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ServiceControlIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ServiceControlIndication (OOCTXT* pctxt, H225ServiceControlIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointIdentifierPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.callSpecificPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode serviceControl */
+
+ stat = asn1PE_H225_SeqOfH225ServiceControlSession (pctxt, &pvalue->serviceControl);
+ if (stat != ASN_OK) return stat;
+
+ /* encode endpointIdentifier */
+
+ if (pvalue->m.endpointIdentifierPresent) {
+ stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode callSpecific */
+
+ if (pvalue->m.callSpecificPresent) {
+ stat = asn1PE_H225ServiceControlIndication_callSpecific (pctxt, &pvalue->callSpecific);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode integrityCheckValue */
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ stat = asn1PE_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode featureSet */
+
+ if (pvalue->m.featureSetPresent) {
+ stat = asn1PE_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode genericData */
+
+ if (pvalue->m.genericDataPresent) {
+ stat = asn1PE_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ServiceControlResponse_result */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ServiceControlResponse_result (OOCTXT* pctxt, H225ServiceControlResponse_result* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 5);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* started */
+ case 1:
+ /* NULL */
+ break;
+
+ /* failed */
+ case 2:
+ /* NULL */
+ break;
+
+ /* stopped */
+ case 3:
+ /* NULL */
+ break;
+
+ /* notAvailable */
+ case 4:
+ /* NULL */
+ break;
+
+ /* neededFeatureNotSupported */
+ case 5:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ServiceControlResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225ServiceControlResponse (OOCTXT* pctxt, H225ServiceControlResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.resultPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
+
+ /* encode requestSeqNum */
+
+ stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode result */
+
+ if (pvalue->m.resultPresent) {
+ stat = asn1PE_H225ServiceControlResponse_result (pctxt, &pvalue->result);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode tokens */
+
+ if (pvalue->m.tokensPresent) {
+ stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode cryptoTokens */
+
+ if (pvalue->m.cryptoTokensPresent) {
+ stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode integrityCheckValue */
+
+ if (pvalue->m.integrityCheckValuePresent) {
+ stat = asn1PE_H225ICV (pctxt, &pvalue->integrityCheckValue);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode featureSet */
+
+ if (pvalue->m.featureSetPresent) {
+ stat = asn1PE_H225FeatureSet (pctxt, &pvalue->featureSet);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode genericData */
+
+ if (pvalue->m.genericDataPresent) {
+ stat = asn1PE_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AdmissionConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225_SeqOfH225AdmissionConfirm (OOCTXT* pctxt, H225_SeqOfH225AdmissionConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H225AdmissionConfirm (pctxt, ((H225AdmissionConfirm*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RasMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H225RasMessage (OOCTXT* pctxt, H225RasMessage* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 25);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 24);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* gatekeeperRequest */
+ case 1:
+ stat = asn1PE_H225GatekeeperRequest (pctxt, pvalue->u.gatekeeperRequest);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* gatekeeperConfirm */
+ case 2:
+ stat = asn1PE_H225GatekeeperConfirm (pctxt, pvalue->u.gatekeeperConfirm);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* gatekeeperReject */
+ case 3:
+ stat = asn1PE_H225GatekeeperReject (pctxt, pvalue->u.gatekeeperReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* registrationRequest */
+ case 4:
+ stat = asn1PE_H225RegistrationRequest (pctxt, pvalue->u.registrationRequest);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* registrationConfirm */
+ case 5:
+ stat = asn1PE_H225RegistrationConfirm (pctxt, pvalue->u.registrationConfirm);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* registrationReject */
+ case 6:
+ stat = asn1PE_H225RegistrationReject (pctxt, pvalue->u.registrationReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* unregistrationRequest */
+ case 7:
+ stat = asn1PE_H225UnregistrationRequest (pctxt, pvalue->u.unregistrationRequest);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* unregistrationConfirm */
+ case 8:
+ stat = asn1PE_H225UnregistrationConfirm (pctxt, pvalue->u.unregistrationConfirm);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* unregistrationReject */
+ case 9:
+ stat = asn1PE_H225UnregistrationReject (pctxt, pvalue->u.unregistrationReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* admissionRequest */
+ case 10:
+ stat = asn1PE_H225AdmissionRequest (pctxt, pvalue->u.admissionRequest);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* admissionConfirm */
+ case 11:
+ stat = asn1PE_H225AdmissionConfirm (pctxt, pvalue->u.admissionConfirm);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* admissionReject */
+ case 12:
+ stat = asn1PE_H225AdmissionReject (pctxt, pvalue->u.admissionReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* bandwidthRequest */
+ case 13:
+ stat = asn1PE_H225BandwidthRequest (pctxt, pvalue->u.bandwidthRequest);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* bandwidthConfirm */
+ case 14:
+ stat = asn1PE_H225BandwidthConfirm (pctxt, pvalue->u.bandwidthConfirm);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* bandwidthReject */
+ case 15:
+ stat = asn1PE_H225BandwidthReject (pctxt, pvalue->u.bandwidthReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* disengageRequest */
+ case 16:
+ stat = asn1PE_H225DisengageRequest (pctxt, pvalue->u.disengageRequest);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* disengageConfirm */
+ case 17:
+ stat = asn1PE_H225DisengageConfirm (pctxt, pvalue->u.disengageConfirm);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* disengageReject */
+ case 18:
+ stat = asn1PE_H225DisengageReject (pctxt, pvalue->u.disengageReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* locationRequest */
+ case 19:
+ stat = asn1PE_H225LocationRequest (pctxt, pvalue->u.locationRequest);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* locationConfirm */
+ case 20:
+ stat = asn1PE_H225LocationConfirm (pctxt, pvalue->u.locationConfirm);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* locationReject */
+ case 21:
+ stat = asn1PE_H225LocationReject (pctxt, pvalue->u.locationReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* infoRequest */
+ case 22:
+ stat = asn1PE_H225InfoRequest (pctxt, pvalue->u.infoRequest);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* infoRequestResponse */
+ case 23:
+ stat = asn1PE_H225InfoRequestResponse (pctxt, pvalue->u.infoRequestResponse);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* nonStandardMessage */
+ case 24:
+ stat = asn1PE_H225NonStandardMessage (pctxt, pvalue->u.nonStandardMessage);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* unknownMessageResponse */
+ case 25:
+ stat = asn1PE_H225UnknownMessageResponse (pctxt, pvalue->u.unknownMessageResponse);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 26);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* requestInProgress */
+ case 26:
+ stat = asn1PE_H225RequestInProgress (&lctxt, pvalue->u.requestInProgress);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* resourcesAvailableIndicate */
+ case 27:
+ stat = asn1PE_H225ResourcesAvailableIndicate (&lctxt, pvalue->u.resourcesAvailableIndicate);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* resourcesAvailableConfirm */
+ case 28:
+ stat = asn1PE_H225ResourcesAvailableConfirm (&lctxt, pvalue->u.resourcesAvailableConfirm);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* infoRequestAck */
+ case 29:
+ stat = asn1PE_H225InfoRequestAck (&lctxt, pvalue->u.infoRequestAck);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* infoRequestNak */
+ case 30:
+ stat = asn1PE_H225InfoRequestNak (&lctxt, pvalue->u.infoRequestNak);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* serviceControlIndication */
+ case 31:
+ stat = asn1PE_H225ServiceControlIndication (&lctxt, pvalue->u.serviceControlIndication);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* serviceControlResponse */
+ case 32:
+ stat = asn1PE_H225ServiceControlResponse (&lctxt, pvalue->u.serviceControlResponse);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* admissionConfirmSequence */
+ case 33:
+ stat = asn1PE_H225_SeqOfH225AdmissionConfirm (&lctxt, pvalue->u.admissionConfirmSequence);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
diff --git a/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROL.c b/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROL.c
new file mode 100644
index 000000000..ca69407a6
--- /dev/null
+++ b/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROL.c
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#include "ooasn1.h"
+#include "MULTIMEDIA-SYSTEM-CONTROL.h"
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters_networkAddress */
+/* */
+/**************************************************************/
+
+EXTERN const char* gs_MULTIMEDIA_SYSTEM_CONTROL_NetworkAccessParameters_networkAddress_e164Address_CharSet =
+"#*,0123456789";
+
+/**************************************************************/
+/* */
+/* UserInputIndication_signal */
+/* */
+/**************************************************************/
+
+EXTERN const char* gs_MULTIMEDIA_SYSTEM_CONTROL_UserInputIndication_signal_signalType_CharSet =
+"!#*0123456789ABCD";
+
diff --git a/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROL.h b/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROL.h
new file mode 100644
index 000000000..6923cba5a
--- /dev/null
+++ b/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROL.h
@@ -0,0 +1,10937 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#ifndef MULTIMEDIA_SYSTEM_CONTROL_H
+#define MULTIMEDIA_SYSTEM_CONTROL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "ooasn1.h"
+
+/**************************************************************/
+/* */
+/* NonStandardIdentifier_h221NonStandard */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NonStandardIdentifier_h221NonStandard {
+ ASN1UINT8 t35CountryCode;
+ ASN1UINT8 t35Extension;
+ ASN1USINT manufacturerCode;
+} H245NonStandardIdentifier_h221NonStandard;
+
+EXTERN int asn1PE_H245NonStandardIdentifier_h221NonStandard (OOCTXT* pctxt, H245NonStandardIdentifier_h221NonStandard* pvalue);
+
+EXTERN int asn1PD_H245NonStandardIdentifier_h221NonStandard (OOCTXT* pctxt, H245NonStandardIdentifier_h221NonStandard* pvalue);
+
+/**************************************************************/
+/* */
+/* NonStandardIdentifier */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245NonStandardIdentifier_object 1
+#define T_H245NonStandardIdentifier_h221NonStandard 2
+
+typedef struct EXTERN H245NonStandardIdentifier {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1OBJID *object;
+ /* t = 2 */
+ H245NonStandardIdentifier_h221NonStandard *h221NonStandard;
+ } u;
+} H245NonStandardIdentifier;
+
+EXTERN int asn1PE_H245NonStandardIdentifier (OOCTXT* pctxt, H245NonStandardIdentifier* pvalue);
+
+EXTERN int asn1PD_H245NonStandardIdentifier (OOCTXT* pctxt, H245NonStandardIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* NonStandardParameter */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NonStandardParameter {
+ H245NonStandardIdentifier nonStandardIdentifier;
+ ASN1DynOctStr data;
+} H245NonStandardParameter;
+
+EXTERN int asn1PE_H245NonStandardParameter (OOCTXT* pctxt, H245NonStandardParameter* pvalue);
+
+EXTERN int asn1PD_H245NonStandardParameter (OOCTXT* pctxt, H245NonStandardParameter* pvalue);
+
+/**************************************************************/
+/* */
+/* V42bis */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245V42bis {
+ ASN1UINT numberOfCodewords;
+ ASN1USINT maximumStringLength;
+} H245V42bis;
+
+EXTERN int asn1PE_H245V42bis (OOCTXT* pctxt, H245V42bis* pvalue);
+
+EXTERN int asn1PD_H245V42bis (OOCTXT* pctxt, H245V42bis* pvalue);
+
+/**************************************************************/
+/* */
+/* CompressionType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245CompressionType_v42bis 1
+#define T_H245CompressionType_extElem1 2
+
+typedef struct EXTERN H245CompressionType {
+ int t;
+ union {
+ /* t = 1 */
+ H245V42bis *v42bis;
+ /* t = 2 */
+ } u;
+} H245CompressionType;
+
+EXTERN int asn1PE_H245CompressionType (OOCTXT* pctxt, H245CompressionType* pvalue);
+
+EXTERN int asn1PD_H245CompressionType (OOCTXT* pctxt, H245CompressionType* pvalue);
+
+/**************************************************************/
+/* */
+/* DataProtocolCapability_v76wCompression */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245DataProtocolCapability_v76wCompression_transmitCompression 1
+#define T_H245DataProtocolCapability_v76wCompression_receiveCompression 2
+#define T_H245DataProtocolCapability_v76wCompression_transmitAndReceiveCompression 3
+#define T_H245DataProtocolCapability_v76wCompression_extElem1 4
+
+typedef struct EXTERN H245DataProtocolCapability_v76wCompression {
+ int t;
+ union {
+ /* t = 1 */
+ H245CompressionType *transmitCompression;
+ /* t = 2 */
+ H245CompressionType *receiveCompression;
+ /* t = 3 */
+ H245CompressionType *transmitAndReceiveCompression;
+ /* t = 4 */
+ } u;
+} H245DataProtocolCapability_v76wCompression;
+
+EXTERN int asn1PE_H245DataProtocolCapability_v76wCompression (OOCTXT* pctxt, H245DataProtocolCapability_v76wCompression* pvalue);
+
+EXTERN int asn1PD_H245DataProtocolCapability_v76wCompression (OOCTXT* pctxt, H245DataProtocolCapability_v76wCompression* pvalue);
+
+/**************************************************************/
+/* */
+/* DataProtocolCapability */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245DataProtocolCapability_nonStandard 1
+#define T_H245DataProtocolCapability_v14buffered 2
+#define T_H245DataProtocolCapability_v42lapm 3
+#define T_H245DataProtocolCapability_hdlcFrameTunnelling 4
+#define T_H245DataProtocolCapability_h310SeparateVCStack 5
+#define T_H245DataProtocolCapability_h310SingleVCStack 6
+#define T_H245DataProtocolCapability_transparent 7
+#define T_H245DataProtocolCapability_segmentationAndReassembly 8
+#define T_H245DataProtocolCapability_hdlcFrameTunnelingwSAR 9
+#define T_H245DataProtocolCapability_v120 10
+#define T_H245DataProtocolCapability_separateLANStack 11
+#define T_H245DataProtocolCapability_v76wCompression 12
+#define T_H245DataProtocolCapability_tcp 13
+#define T_H245DataProtocolCapability_udp 14
+#define T_H245DataProtocolCapability_extElem1 15
+
+typedef struct EXTERN H245DataProtocolCapability {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ /* t = 9 */
+ /* t = 10 */
+ /* t = 11 */
+ /* t = 12 */
+ H245DataProtocolCapability_v76wCompression *v76wCompression;
+ /* t = 13 */
+ /* t = 14 */
+ /* t = 15 */
+ } u;
+} H245DataProtocolCapability;
+
+EXTERN int asn1PE_H245DataProtocolCapability (OOCTXT* pctxt, H245DataProtocolCapability* pvalue);
+
+EXTERN int asn1PD_H245DataProtocolCapability (OOCTXT* pctxt, H245DataProtocolCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* T38FaxRateManagement */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245T38FaxRateManagement_localTCF 1
+#define T_H245T38FaxRateManagement_transferredTCF 2
+#define T_H245T38FaxRateManagement_extElem1 3
+
+typedef struct EXTERN H245T38FaxRateManagement {
+ int t;
+} H245T38FaxRateManagement;
+
+EXTERN int asn1PE_H245T38FaxRateManagement (OOCTXT* pctxt, H245T38FaxRateManagement* pvalue);
+
+EXTERN int asn1PD_H245T38FaxRateManagement (OOCTXT* pctxt, H245T38FaxRateManagement* pvalue);
+
+/**************************************************************/
+/* */
+/* T38FaxUdpOptions_t38FaxUdpEC */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245T38FaxUdpOptions_t38FaxUdpEC_t38UDPFEC 1
+#define T_H245T38FaxUdpOptions_t38FaxUdpEC_t38UDPRedundancy 2
+#define T_H245T38FaxUdpOptions_t38FaxUdpEC_extElem1 3
+
+typedef struct EXTERN H245T38FaxUdpOptions_t38FaxUdpEC {
+ int t;
+} H245T38FaxUdpOptions_t38FaxUdpEC;
+
+EXTERN int asn1PE_H245T38FaxUdpOptions_t38FaxUdpEC (OOCTXT* pctxt, H245T38FaxUdpOptions_t38FaxUdpEC* pvalue);
+
+EXTERN int asn1PD_H245T38FaxUdpOptions_t38FaxUdpEC (OOCTXT* pctxt, H245T38FaxUdpOptions_t38FaxUdpEC* pvalue);
+
+/**************************************************************/
+/* */
+/* T38FaxUdpOptions */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245T38FaxUdpOptions {
+ struct {
+ unsigned t38FaxMaxBufferPresent : 1;
+ unsigned t38FaxMaxDatagramPresent : 1;
+ } m;
+ ASN1INT t38FaxMaxBuffer;
+ ASN1INT t38FaxMaxDatagram;
+ H245T38FaxUdpOptions_t38FaxUdpEC t38FaxUdpEC;
+} H245T38FaxUdpOptions;
+
+EXTERN int asn1PE_H245T38FaxUdpOptions (OOCTXT* pctxt, H245T38FaxUdpOptions* pvalue);
+
+EXTERN int asn1PD_H245T38FaxUdpOptions (OOCTXT* pctxt, H245T38FaxUdpOptions* pvalue);
+
+/**************************************************************/
+/* */
+/* T38FaxTcpOptions */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245T38FaxTcpOptions {
+ ASN1BOOL t38TCPBidirectionalMode;
+} H245T38FaxTcpOptions;
+
+EXTERN int asn1PE_H245T38FaxTcpOptions (OOCTXT* pctxt, H245T38FaxTcpOptions* pvalue);
+
+EXTERN int asn1PD_H245T38FaxTcpOptions (OOCTXT* pctxt, H245T38FaxTcpOptions* pvalue);
+
+/**************************************************************/
+/* */
+/* T38FaxProfile */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245T38FaxProfile {
+ struct {
+ unsigned versionPresent : 1;
+ unsigned t38FaxRateManagementPresent : 1;
+ unsigned t38FaxUdpOptionsPresent : 1;
+ unsigned t38FaxTcpOptionsPresent : 1;
+ } m;
+ ASN1BOOL fillBitRemoval;
+ ASN1BOOL transcodingJBIG;
+ ASN1BOOL transcodingMMR;
+ ASN1UINT8 version;
+ H245T38FaxRateManagement t38FaxRateManagement;
+ H245T38FaxUdpOptions t38FaxUdpOptions;
+ H245T38FaxTcpOptions t38FaxTcpOptions;
+} H245T38FaxProfile;
+
+EXTERN int asn1PE_H245T38FaxProfile (OOCTXT* pctxt, H245T38FaxProfile* pvalue);
+
+EXTERN int asn1PD_H245T38FaxProfile (OOCTXT* pctxt, H245T38FaxProfile* pvalue);
+
+/**************************************************************/
+/* */
+/* NonStandardMessage */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NonStandardMessage {
+ H245NonStandardParameter nonStandardData;
+} H245NonStandardMessage;
+
+EXTERN int asn1PE_H245NonStandardMessage (OOCTXT* pctxt, H245NonStandardMessage* pvalue);
+
+EXTERN int asn1PD_H245NonStandardMessage (OOCTXT* pctxt, H245NonStandardMessage* pvalue);
+
+/**************************************************************/
+/* */
+/* MasterSlaveDetermination */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MasterSlaveDetermination {
+ ASN1UINT8 terminalType;
+ ASN1UINT statusDeterminationNumber;
+} H245MasterSlaveDetermination;
+
+EXTERN int asn1PE_H245MasterSlaveDetermination (OOCTXT* pctxt, H245MasterSlaveDetermination* pvalue);
+
+EXTERN int asn1PD_H245MasterSlaveDetermination (OOCTXT* pctxt, H245MasterSlaveDetermination* pvalue);
+
+/**************************************************************/
+/* */
+/* SequenceNumber */
+/* */
+/**************************************************************/
+
+typedef ASN1UINT8 H245SequenceNumber;
+
+EXTERN int asn1PE_H245SequenceNumber (OOCTXT* pctxt, H245SequenceNumber value);
+
+EXTERN int asn1PD_H245SequenceNumber (OOCTXT* pctxt, H245SequenceNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* VCCapability_aal1 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245VCCapability_aal1 {
+ ASN1BOOL nullClockRecovery;
+ ASN1BOOL srtsClockRecovery;
+ ASN1BOOL adaptiveClockRecovery;
+ ASN1BOOL nullErrorCorrection;
+ ASN1BOOL longInterleaver;
+ ASN1BOOL shortInterleaver;
+ ASN1BOOL errorCorrectionOnly;
+ ASN1BOOL structuredDataTransfer;
+ ASN1BOOL partiallyFilledCells;
+} H245VCCapability_aal1;
+
+EXTERN int asn1PE_H245VCCapability_aal1 (OOCTXT* pctxt, H245VCCapability_aal1* pvalue);
+
+EXTERN int asn1PD_H245VCCapability_aal1 (OOCTXT* pctxt, H245VCCapability_aal1* pvalue);
+
+/**************************************************************/
+/* */
+/* VCCapability_aal5 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245VCCapability_aal5 {
+ ASN1USINT forwardMaximumSDUSize;
+ ASN1USINT backwardMaximumSDUSize;
+} H245VCCapability_aal5;
+
+EXTERN int asn1PE_H245VCCapability_aal5 (OOCTXT* pctxt, H245VCCapability_aal5* pvalue);
+
+EXTERN int asn1PD_H245VCCapability_aal5 (OOCTXT* pctxt, H245VCCapability_aal5* pvalue);
+
+/**************************************************************/
+/* */
+/* VCCapability_availableBitRates_type_rangeOfBitRates */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245VCCapability_availableBitRates_type_rangeOfBitRates {
+ ASN1USINT lowerBitRate;
+ ASN1USINT higherBitRate;
+} H245VCCapability_availableBitRates_type_rangeOfBitRates;
+
+EXTERN int asn1PE_H245VCCapability_availableBitRates_type_rangeOfBitRates (OOCTXT* pctxt, H245VCCapability_availableBitRates_type_rangeOfBitRates* pvalue);
+
+EXTERN int asn1PD_H245VCCapability_availableBitRates_type_rangeOfBitRates (OOCTXT* pctxt, H245VCCapability_availableBitRates_type_rangeOfBitRates* pvalue);
+
+/**************************************************************/
+/* */
+/* VCCapability_availableBitRates_type */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245VCCapability_availableBitRates_type_singleBitRate 1
+#define T_H245VCCapability_availableBitRates_type_rangeOfBitRates 2
+
+typedef struct EXTERN H245VCCapability_availableBitRates_type {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1USINT singleBitRate;
+ /* t = 2 */
+ H245VCCapability_availableBitRates_type_rangeOfBitRates *rangeOfBitRates;
+ } u;
+} H245VCCapability_availableBitRates_type;
+
+EXTERN int asn1PE_H245VCCapability_availableBitRates_type (OOCTXT* pctxt, H245VCCapability_availableBitRates_type* pvalue);
+
+EXTERN int asn1PD_H245VCCapability_availableBitRates_type (OOCTXT* pctxt, H245VCCapability_availableBitRates_type* pvalue);
+
+/**************************************************************/
+/* */
+/* VCCapability_availableBitRates */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245VCCapability_availableBitRates {
+ H245VCCapability_availableBitRates_type type;
+} H245VCCapability_availableBitRates;
+
+EXTERN int asn1PE_H245VCCapability_availableBitRates (OOCTXT* pctxt, H245VCCapability_availableBitRates* pvalue);
+
+EXTERN int asn1PD_H245VCCapability_availableBitRates (OOCTXT* pctxt, H245VCCapability_availableBitRates* pvalue);
+
+/**************************************************************/
+/* */
+/* Q2931Address_address_nsapAddress */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245Q2931Address_address_nsapAddress {
+ ASN1UINT numocts;
+ ASN1OCTET data[20];
+} H245Q2931Address_address_nsapAddress;
+
+EXTERN int asn1PE_H245Q2931Address_address_nsapAddress (OOCTXT* pctxt, H245Q2931Address_address_nsapAddress* pvalue);
+
+EXTERN int asn1PD_H245Q2931Address_address_nsapAddress (OOCTXT* pctxt, H245Q2931Address_address_nsapAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* Q2931Address_address */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245Q2931Address_address_internationalNumber 1
+#define T_H245Q2931Address_address_nsapAddress 2
+#define T_H245Q2931Address_address_extElem1 3
+
+typedef struct EXTERN H245Q2931Address_address {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1NumericString internationalNumber;
+ /* t = 2 */
+ H245Q2931Address_address_nsapAddress *nsapAddress;
+ /* t = 3 */
+ } u;
+} H245Q2931Address_address;
+
+EXTERN int asn1PE_H245Q2931Address_address (OOCTXT* pctxt, H245Q2931Address_address* pvalue);
+
+EXTERN int asn1PD_H245Q2931Address_address (OOCTXT* pctxt, H245Q2931Address_address* pvalue);
+
+/**************************************************************/
+/* */
+/* Q2931Address_subaddress */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245Q2931Address_subaddress {
+ ASN1UINT numocts;
+ ASN1OCTET data[20];
+} H245Q2931Address_subaddress;
+
+EXTERN int asn1PE_H245Q2931Address_subaddress (OOCTXT* pctxt, H245Q2931Address_subaddress* pvalue);
+
+EXTERN int asn1PD_H245Q2931Address_subaddress (OOCTXT* pctxt, H245Q2931Address_subaddress* pvalue);
+
+/**************************************************************/
+/* */
+/* Q2931Address */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245Q2931Address {
+ struct {
+ unsigned subaddressPresent : 1;
+ } m;
+ H245Q2931Address_address address;
+ H245Q2931Address_subaddress subaddress;
+} H245Q2931Address;
+
+EXTERN int asn1PE_H245Q2931Address (OOCTXT* pctxt, H245Q2931Address* pvalue);
+
+EXTERN int asn1PD_H245Q2931Address (OOCTXT* pctxt, H245Q2931Address* pvalue);
+
+/**************************************************************/
+/* */
+/* VCCapability_aal1ViaGateway_gatewayAddress */
+/* */
+/**************************************************************/
+
+/* List of H245Q2931Address */
+typedef DList H245VCCapability_aal1ViaGateway_gatewayAddress;
+
+EXTERN int asn1PE_H245VCCapability_aal1ViaGateway_gatewayAddress (OOCTXT* pctxt, H245VCCapability_aal1ViaGateway_gatewayAddress* pvalue);
+
+EXTERN int asn1PD_H245VCCapability_aal1ViaGateway_gatewayAddress (OOCTXT* pctxt, H245VCCapability_aal1ViaGateway_gatewayAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* VCCapability_aal1ViaGateway */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245VCCapability_aal1ViaGateway {
+ H245VCCapability_aal1ViaGateway_gatewayAddress gatewayAddress;
+ ASN1BOOL nullClockRecovery;
+ ASN1BOOL srtsClockRecovery;
+ ASN1BOOL adaptiveClockRecovery;
+ ASN1BOOL nullErrorCorrection;
+ ASN1BOOL longInterleaver;
+ ASN1BOOL shortInterleaver;
+ ASN1BOOL errorCorrectionOnly;
+ ASN1BOOL structuredDataTransfer;
+ ASN1BOOL partiallyFilledCells;
+} H245VCCapability_aal1ViaGateway;
+
+EXTERN int asn1PE_H245VCCapability_aal1ViaGateway (OOCTXT* pctxt, H245VCCapability_aal1ViaGateway* pvalue);
+
+EXTERN int asn1PD_H245VCCapability_aal1ViaGateway (OOCTXT* pctxt, H245VCCapability_aal1ViaGateway* pvalue);
+
+/**************************************************************/
+/* */
+/* VCCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245VCCapability {
+ struct {
+ unsigned aal1Present : 1;
+ unsigned aal5Present : 1;
+ unsigned aal1ViaGatewayPresent : 1;
+ } m;
+ H245VCCapability_aal1 aal1;
+ H245VCCapability_aal5 aal5;
+ ASN1BOOL transportStream;
+ ASN1BOOL programStream;
+ H245VCCapability_availableBitRates availableBitRates;
+ H245VCCapability_aal1ViaGateway aal1ViaGateway;
+} H245VCCapability;
+
+EXTERN int asn1PE_H245VCCapability (OOCTXT* pctxt, H245VCCapability* pvalue);
+
+EXTERN int asn1PD_H245VCCapability (OOCTXT* pctxt, H245VCCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* _SetOfH245VCCapability */
+/* */
+/**************************************************************/
+
+/* List of H245VCCapability */
+typedef DList H245_SetOfH245VCCapability;
+
+EXTERN int asn1PE_H245_SetOfH245VCCapability (OOCTXT* pctxt, H245_SetOfH245VCCapability* pvalue);
+
+EXTERN int asn1PD_H245_SetOfH245VCCapability (OOCTXT* pctxt, H245_SetOfH245VCCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* H222Capability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H222Capability {
+ ASN1USINT numberOfVCs;
+ H245_SetOfH245VCCapability vcCapability;
+} H245H222Capability;
+
+EXTERN int asn1PE_H245H222Capability (OOCTXT* pctxt, H245H222Capability* pvalue);
+
+EXTERN int asn1PD_H245H222Capability (OOCTXT* pctxt, H245H222Capability* pvalue);
+
+/**************************************************************/
+/* */
+/* H223Capability_h223MultiplexTableCapability_enhanced */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H223Capability_h223MultiplexTableCapability_enhanced {
+ ASN1UINT8 maximumNestingDepth;
+ ASN1UINT8 maximumElementListSize;
+ ASN1UINT8 maximumSubElementListSize;
+} H245H223Capability_h223MultiplexTableCapability_enhanced;
+
+EXTERN int asn1PE_H245H223Capability_h223MultiplexTableCapability_enhanced (OOCTXT* pctxt, H245H223Capability_h223MultiplexTableCapability_enhanced* pvalue);
+
+EXTERN int asn1PD_H245H223Capability_h223MultiplexTableCapability_enhanced (OOCTXT* pctxt, H245H223Capability_h223MultiplexTableCapability_enhanced* pvalue);
+
+/**************************************************************/
+/* */
+/* H223Capability_h223MultiplexTableCapability */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223Capability_h223MultiplexTableCapability_basic 1
+#define T_H245H223Capability_h223MultiplexTableCapability_enhanced 2
+
+typedef struct EXTERN H245H223Capability_h223MultiplexTableCapability {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H245H223Capability_h223MultiplexTableCapability_enhanced *enhanced;
+ } u;
+} H245H223Capability_h223MultiplexTableCapability;
+
+EXTERN int asn1PE_H245H223Capability_h223MultiplexTableCapability (OOCTXT* pctxt, H245H223Capability_h223MultiplexTableCapability* pvalue);
+
+EXTERN int asn1PD_H245H223Capability_h223MultiplexTableCapability (OOCTXT* pctxt, H245H223Capability_h223MultiplexTableCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* H223Capability_mobileOperationTransmitCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H223Capability_mobileOperationTransmitCapability {
+ ASN1BOOL modeChangeCapability;
+ ASN1BOOL h223AnnexA;
+ ASN1BOOL h223AnnexADoubleFlag;
+ ASN1BOOL h223AnnexB;
+ ASN1BOOL h223AnnexBwithHeader;
+} H245H223Capability_mobileOperationTransmitCapability;
+
+EXTERN int asn1PE_H245H223Capability_mobileOperationTransmitCapability (OOCTXT* pctxt, H245H223Capability_mobileOperationTransmitCapability* pvalue);
+
+EXTERN int asn1PD_H245H223Capability_mobileOperationTransmitCapability (OOCTXT* pctxt, H245H223Capability_mobileOperationTransmitCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* H223AnnexCCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H223AnnexCCapability {
+ struct {
+ unsigned rsCodeCapabilityPresent : 1;
+ } m;
+ ASN1BOOL videoWithAL1M;
+ ASN1BOOL videoWithAL2M;
+ ASN1BOOL videoWithAL3M;
+ ASN1BOOL audioWithAL1M;
+ ASN1BOOL audioWithAL2M;
+ ASN1BOOL audioWithAL3M;
+ ASN1BOOL dataWithAL1M;
+ ASN1BOOL dataWithAL2M;
+ ASN1BOOL dataWithAL3M;
+ ASN1BOOL alpduInterleaving;
+ ASN1USINT maximumAL1MPDUSize;
+ ASN1USINT maximumAL2MSDUSize;
+ ASN1USINT maximumAL3MSDUSize;
+ ASN1BOOL rsCodeCapability;
+} H245H223AnnexCCapability;
+
+EXTERN int asn1PE_H245H223AnnexCCapability (OOCTXT* pctxt, H245H223AnnexCCapability* pvalue);
+
+EXTERN int asn1PD_H245H223AnnexCCapability (OOCTXT* pctxt, H245H223AnnexCCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* H223Capability_mobileMultilinkFrameCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H223Capability_mobileMultilinkFrameCapability {
+ ASN1UINT8 maximumSampleSize;
+ ASN1USINT maximumPayloadLength;
+} H245H223Capability_mobileMultilinkFrameCapability;
+
+EXTERN int asn1PE_H245H223Capability_mobileMultilinkFrameCapability (OOCTXT* pctxt, H245H223Capability_mobileMultilinkFrameCapability* pvalue);
+
+EXTERN int asn1PD_H245H223Capability_mobileMultilinkFrameCapability (OOCTXT* pctxt, H245H223Capability_mobileMultilinkFrameCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* H223Capability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H223Capability {
+ struct {
+ unsigned maxMUXPDUSizeCapabilityPresent : 1;
+ unsigned nsrpSupportPresent : 1;
+ unsigned mobileOperationTransmitCapabilityPresent : 1;
+ unsigned h223AnnexCCapabilityPresent : 1;
+ unsigned bitRatePresent : 1;
+ unsigned mobileMultilinkFrameCapabilityPresent : 1;
+ } m;
+ ASN1BOOL transportWithI_frames;
+ ASN1BOOL videoWithAL1;
+ ASN1BOOL videoWithAL2;
+ ASN1BOOL videoWithAL3;
+ ASN1BOOL audioWithAL1;
+ ASN1BOOL audioWithAL2;
+ ASN1BOOL audioWithAL3;
+ ASN1BOOL dataWithAL1;
+ ASN1BOOL dataWithAL2;
+ ASN1BOOL dataWithAL3;
+ ASN1USINT maximumAl2SDUSize;
+ ASN1USINT maximumAl3SDUSize;
+ ASN1USINT maximumDelayJitter;
+ H245H223Capability_h223MultiplexTableCapability h223MultiplexTableCapability;
+ ASN1BOOL maxMUXPDUSizeCapability;
+ ASN1BOOL nsrpSupport;
+ H245H223Capability_mobileOperationTransmitCapability mobileOperationTransmitCapability;
+ H245H223AnnexCCapability h223AnnexCCapability;
+ ASN1USINT bitRate;
+ H245H223Capability_mobileMultilinkFrameCapability mobileMultilinkFrameCapability;
+} H245H223Capability;
+
+EXTERN int asn1PE_H245H223Capability (OOCTXT* pctxt, H245H223Capability* pvalue);
+
+EXTERN int asn1PD_H245H223Capability (OOCTXT* pctxt, H245H223Capability* pvalue);
+
+/**************************************************************/
+/* */
+/* V75Capability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245V75Capability {
+ ASN1BOOL audioHeader;
+} H245V75Capability;
+
+EXTERN int asn1PE_H245V75Capability (OOCTXT* pctxt, H245V75Capability* pvalue);
+
+EXTERN int asn1PD_H245V75Capability (OOCTXT* pctxt, H245V75Capability* pvalue);
+
+/**************************************************************/
+/* */
+/* V76Capability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245V76Capability {
+ ASN1BOOL suspendResumeCapabilitywAddress;
+ ASN1BOOL suspendResumeCapabilitywoAddress;
+ ASN1BOOL rejCapability;
+ ASN1BOOL sREJCapability;
+ ASN1BOOL mREJCapability;
+ ASN1BOOL crc8bitCapability;
+ ASN1BOOL crc16bitCapability;
+ ASN1BOOL crc32bitCapability;
+ ASN1BOOL uihCapability;
+ ASN1USINT numOfDLCS;
+ ASN1BOOL twoOctetAddressFieldCapability;
+ ASN1BOOL loopBackTestCapability;
+ ASN1USINT n401Capability;
+ ASN1UINT8 maxWindowSizeCapability;
+ H245V75Capability v75Capability;
+} H245V76Capability;
+
+EXTERN int asn1PE_H245V76Capability (OOCTXT* pctxt, H245V76Capability* pvalue);
+
+EXTERN int asn1PD_H245V76Capability (OOCTXT* pctxt, H245V76Capability* pvalue);
+
+/**************************************************************/
+/* */
+/* T84Profile_t84Restricted */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245T84Profile_t84Restricted {
+ ASN1BOOL qcif;
+ ASN1BOOL cif;
+ ASN1BOOL ccir601Seq;
+ ASN1BOOL ccir601Prog;
+ ASN1BOOL hdtvSeq;
+ ASN1BOOL hdtvProg;
+ ASN1BOOL g3FacsMH200x100;
+ ASN1BOOL g3FacsMH200x200;
+ ASN1BOOL g4FacsMMR200x100;
+ ASN1BOOL g4FacsMMR200x200;
+ ASN1BOOL jbig200x200Seq;
+ ASN1BOOL jbig200x200Prog;
+ ASN1BOOL jbig300x300Seq;
+ ASN1BOOL jbig300x300Prog;
+ ASN1BOOL digPhotoLow;
+ ASN1BOOL digPhotoMedSeq;
+ ASN1BOOL digPhotoMedProg;
+ ASN1BOOL digPhotoHighSeq;
+ ASN1BOOL digPhotoHighProg;
+} H245T84Profile_t84Restricted;
+
+EXTERN int asn1PE_H245T84Profile_t84Restricted (OOCTXT* pctxt, H245T84Profile_t84Restricted* pvalue);
+
+EXTERN int asn1PD_H245T84Profile_t84Restricted (OOCTXT* pctxt, H245T84Profile_t84Restricted* pvalue);
+
+/**************************************************************/
+/* */
+/* T84Profile */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245T84Profile_t84Unrestricted 1
+#define T_H245T84Profile_t84Restricted 2
+
+typedef struct EXTERN H245T84Profile {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H245T84Profile_t84Restricted *t84Restricted;
+ } u;
+} H245T84Profile;
+
+EXTERN int asn1PE_H245T84Profile (OOCTXT* pctxt, H245T84Profile* pvalue);
+
+EXTERN int asn1PD_H245T84Profile (OOCTXT* pctxt, H245T84Profile* pvalue);
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability_application_t84 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245DataApplicationCapability_application_t84 {
+ H245DataProtocolCapability t84Protocol;
+ H245T84Profile t84Profile;
+} H245DataApplicationCapability_application_t84;
+
+EXTERN int asn1PE_H245DataApplicationCapability_application_t84 (OOCTXT* pctxt, H245DataApplicationCapability_application_t84* pvalue);
+
+EXTERN int asn1PD_H245DataApplicationCapability_application_t84 (OOCTXT* pctxt, H245DataApplicationCapability_application_t84* pvalue);
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability_application_nlpid */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245DataApplicationCapability_application_nlpid {
+ H245DataProtocolCapability nlpidProtocol;
+ ASN1DynOctStr nlpidData;
+} H245DataApplicationCapability_application_nlpid;
+
+EXTERN int asn1PE_H245DataApplicationCapability_application_nlpid (OOCTXT* pctxt, H245DataApplicationCapability_application_nlpid* pvalue);
+
+EXTERN int asn1PD_H245DataApplicationCapability_application_nlpid (OOCTXT* pctxt, H245DataApplicationCapability_application_nlpid* pvalue);
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability_application_t38fax */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245DataApplicationCapability_application_t38fax {
+ H245DataProtocolCapability t38FaxProtocol;
+ H245T38FaxProfile t38FaxProfile;
+} H245DataApplicationCapability_application_t38fax;
+
+EXTERN int asn1PE_H245DataApplicationCapability_application_t38fax (OOCTXT* pctxt, H245DataApplicationCapability_application_t38fax* pvalue);
+
+EXTERN int asn1PD_H245DataApplicationCapability_application_t38fax (OOCTXT* pctxt, H245DataApplicationCapability_application_t38fax* pvalue);
+
+/**************************************************************/
+/* */
+/* CapabilityIdentifier_uuid */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245CapabilityIdentifier_uuid {
+ ASN1UINT numocts;
+ ASN1OCTET data[16];
+} H245CapabilityIdentifier_uuid;
+
+EXTERN int asn1PE_H245CapabilityIdentifier_uuid (OOCTXT* pctxt, H245CapabilityIdentifier_uuid* pvalue);
+
+EXTERN int asn1PD_H245CapabilityIdentifier_uuid (OOCTXT* pctxt, H245CapabilityIdentifier_uuid* pvalue);
+
+/**************************************************************/
+/* */
+/* CapabilityIdentifier */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245CapabilityIdentifier_standard 1
+#define T_H245CapabilityIdentifier_h221NonStandard 2
+#define T_H245CapabilityIdentifier_uuid 3
+#define T_H245CapabilityIdentifier_domainBased 4
+#define T_H245CapabilityIdentifier_extElem1 5
+
+typedef struct EXTERN H245CapabilityIdentifier {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1OBJID *standard;
+ /* t = 2 */
+ H245NonStandardParameter *h221NonStandard;
+ /* t = 3 */
+ H245CapabilityIdentifier_uuid *uuid;
+ /* t = 4 */
+ ASN1IA5String domainBased;
+ /* t = 5 */
+ } u;
+} H245CapabilityIdentifier;
+
+EXTERN int asn1PE_H245CapabilityIdentifier (OOCTXT* pctxt, H245CapabilityIdentifier* pvalue);
+
+EXTERN int asn1PD_H245CapabilityIdentifier (OOCTXT* pctxt, H245CapabilityIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* ParameterIdentifier_uuid */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245ParameterIdentifier_uuid {
+ ASN1UINT numocts;
+ ASN1OCTET data[16];
+} H245ParameterIdentifier_uuid;
+
+EXTERN int asn1PE_H245ParameterIdentifier_uuid (OOCTXT* pctxt, H245ParameterIdentifier_uuid* pvalue);
+
+EXTERN int asn1PD_H245ParameterIdentifier_uuid (OOCTXT* pctxt, H245ParameterIdentifier_uuid* pvalue);
+
+/**************************************************************/
+/* */
+/* ParameterIdentifier */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245ParameterIdentifier_standard 1
+#define T_H245ParameterIdentifier_h221NonStandard 2
+#define T_H245ParameterIdentifier_uuid 3
+#define T_H245ParameterIdentifier_domainBased 4
+#define T_H245ParameterIdentifier_extElem1 5
+
+typedef struct EXTERN H245ParameterIdentifier {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1UINT8 standard;
+ /* t = 2 */
+ H245NonStandardParameter *h221NonStandard;
+ /* t = 3 */
+ H245ParameterIdentifier_uuid *uuid;
+ /* t = 4 */
+ ASN1IA5String domainBased;
+ /* t = 5 */
+ } u;
+} H245ParameterIdentifier;
+
+EXTERN int asn1PE_H245ParameterIdentifier (OOCTXT* pctxt, H245ParameterIdentifier* pvalue);
+
+EXTERN int asn1PD_H245ParameterIdentifier (OOCTXT* pctxt, H245ParameterIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* ParameterValue */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245ParameterValue_logical 1
+#define T_H245ParameterValue_booleanArray 2
+#define T_H245ParameterValue_unsignedMin 3
+#define T_H245ParameterValue_unsignedMax 4
+#define T_H245ParameterValue_unsigned32Min 5
+#define T_H245ParameterValue_unsigned32Max 6
+#define T_H245ParameterValue_octetString 7
+#define T_H245ParameterValue_genericParameter 8
+#define T_H245ParameterValue_extElem1 9
+
+typedef struct EXTERN H245ParameterValue {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ ASN1UINT8 booleanArray;
+ /* t = 3 */
+ ASN1USINT unsignedMin;
+ /* t = 4 */
+ ASN1USINT unsignedMax;
+ /* t = 5 */
+ ASN1UINT unsigned32Min;
+ /* t = 6 */
+ ASN1UINT unsigned32Max;
+ /* t = 7 */
+ ASN1DynOctStr *octetString;
+ /* t = 8 */
+ DList *genericParameter;
+ /* t = 9 */
+ } u;
+} H245ParameterValue;
+
+EXTERN int asn1PE_H245ParameterValue (OOCTXT* pctxt, H245ParameterValue* pvalue);
+
+EXTERN int asn1PD_H245ParameterValue (OOCTXT* pctxt, H245ParameterValue* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH245ParameterIdentifier */
+/* */
+/**************************************************************/
+
+/* List of H245ParameterIdentifier */
+typedef DList H245_SeqOfH245ParameterIdentifier;
+
+EXTERN int asn1PE_H245_SeqOfH245ParameterIdentifier (OOCTXT* pctxt, H245_SeqOfH245ParameterIdentifier* pvalue);
+
+EXTERN int asn1PD_H245_SeqOfH245ParameterIdentifier (OOCTXT* pctxt, H245_SeqOfH245ParameterIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* GenericParameter */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245GenericParameter {
+ struct {
+ unsigned supersedesPresent : 1;
+ } m;
+ H245ParameterIdentifier parameterIdentifier;
+ H245ParameterValue parameterValue;
+ H245_SeqOfH245ParameterIdentifier supersedes;
+} H245GenericParameter;
+
+EXTERN int asn1PE_H245GenericParameter (OOCTXT* pctxt, H245GenericParameter* pvalue);
+
+EXTERN int asn1PD_H245GenericParameter (OOCTXT* pctxt, H245GenericParameter* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH245GenericParameter */
+/* */
+/**************************************************************/
+
+/* List of H245GenericParameter */
+typedef DList H245_SeqOfH245GenericParameter;
+
+EXTERN int asn1PE_H245_SeqOfH245GenericParameter (OOCTXT* pctxt, H245_SeqOfH245GenericParameter* pvalue);
+
+EXTERN int asn1PD_H245_SeqOfH245GenericParameter (OOCTXT* pctxt, H245_SeqOfH245GenericParameter* pvalue);
+
+/**************************************************************/
+/* */
+/* GenericCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245GenericCapability {
+ struct {
+ unsigned maxBitRatePresent : 1;
+ unsigned collapsingPresent : 1;
+ unsigned nonCollapsingPresent : 1;
+ unsigned nonCollapsingRawPresent : 1;
+ unsigned transportPresent : 1;
+ } m;
+ H245CapabilityIdentifier capabilityIdentifier;
+ ASN1UINT maxBitRate;
+ H245_SeqOfH245GenericParameter collapsing;
+ H245_SeqOfH245GenericParameter nonCollapsing;
+ ASN1DynOctStr nonCollapsingRaw;
+ H245DataProtocolCapability transport;
+} H245GenericCapability;
+
+EXTERN int asn1PE_H245GenericCapability (OOCTXT* pctxt, H245GenericCapability* pvalue);
+
+EXTERN int asn1PD_H245GenericCapability (OOCTXT* pctxt, H245GenericCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability_application */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245DataApplicationCapability_application_nonStandard 1
+#define T_H245DataApplicationCapability_application_t120 2
+#define T_H245DataApplicationCapability_application_dsm_cc 3
+#define T_H245DataApplicationCapability_application_userData 4
+#define T_H245DataApplicationCapability_application_t84 5
+#define T_H245DataApplicationCapability_application_t434 6
+#define T_H245DataApplicationCapability_application_h224 7
+#define T_H245DataApplicationCapability_application_nlpid 8
+#define T_H245DataApplicationCapability_application_dsvdControl 9
+#define T_H245DataApplicationCapability_application_h222DataPartitioning 10
+#define T_H245DataApplicationCapability_application_t30fax 11
+#define T_H245DataApplicationCapability_application_t140 12
+#define T_H245DataApplicationCapability_application_t38fax 13
+#define T_H245DataApplicationCapability_application_genericDataCapability 14
+#define T_H245DataApplicationCapability_application_extElem1 15
+
+typedef struct EXTERN H245DataApplicationCapability_application {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ H245DataProtocolCapability *t120;
+ /* t = 3 */
+ H245DataProtocolCapability *dsm_cc;
+ /* t = 4 */
+ H245DataProtocolCapability *userData;
+ /* t = 5 */
+ H245DataApplicationCapability_application_t84 *t84;
+ /* t = 6 */
+ H245DataProtocolCapability *t434;
+ /* t = 7 */
+ H245DataProtocolCapability *h224;
+ /* t = 8 */
+ H245DataApplicationCapability_application_nlpid *nlpid;
+ /* t = 9 */
+ /* t = 10 */
+ H245DataProtocolCapability *h222DataPartitioning;
+ /* t = 11 */
+ H245DataProtocolCapability *t30fax;
+ /* t = 12 */
+ H245DataProtocolCapability *t140;
+ /* t = 13 */
+ H245DataApplicationCapability_application_t38fax *t38fax;
+ /* t = 14 */
+ H245GenericCapability *genericDataCapability;
+ /* t = 15 */
+ } u;
+} H245DataApplicationCapability_application;
+
+EXTERN int asn1PE_H245DataApplicationCapability_application (OOCTXT* pctxt, H245DataApplicationCapability_application* pvalue);
+
+EXTERN int asn1PD_H245DataApplicationCapability_application (OOCTXT* pctxt, H245DataApplicationCapability_application* pvalue);
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245DataApplicationCapability {
+ H245DataApplicationCapability_application application;
+ ASN1UINT maxBitRate;
+} H245DataApplicationCapability;
+
+EXTERN int asn1PE_H245DataApplicationCapability (OOCTXT* pctxt, H245DataApplicationCapability* pvalue);
+
+EXTERN int asn1PD_H245DataApplicationCapability (OOCTXT* pctxt, H245DataApplicationCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH245DataApplicationCapability */
+/* */
+/**************************************************************/
+
+/* List of H245DataApplicationCapability */
+typedef DList H245_SeqOfH245DataApplicationCapability;
+
+EXTERN int asn1PE_H245_SeqOfH245DataApplicationCapability (OOCTXT* pctxt, H245_SeqOfH245DataApplicationCapability* pvalue);
+
+EXTERN int asn1PD_H245_SeqOfH245DataApplicationCapability (OOCTXT* pctxt, H245_SeqOfH245DataApplicationCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* MediaDistributionCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MediaDistributionCapability {
+ struct {
+ unsigned centralizedDataPresent : 1;
+ unsigned distributedDataPresent : 1;
+ } m;
+ ASN1BOOL centralizedControl;
+ ASN1BOOL distributedControl;
+ ASN1BOOL centralizedAudio;
+ ASN1BOOL distributedAudio;
+ ASN1BOOL centralizedVideo;
+ ASN1BOOL distributedVideo;
+ H245_SeqOfH245DataApplicationCapability centralizedData;
+ H245_SeqOfH245DataApplicationCapability distributedData;
+} H245MediaDistributionCapability;
+
+EXTERN int asn1PE_H245MediaDistributionCapability (OOCTXT* pctxt, H245MediaDistributionCapability* pvalue);
+
+EXTERN int asn1PD_H245MediaDistributionCapability (OOCTXT* pctxt, H245MediaDistributionCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH245MediaDistributionCapability */
+/* */
+/**************************************************************/
+
+/* List of H245MediaDistributionCapability */
+typedef DList H245_SeqOfH245MediaDistributionCapability;
+
+EXTERN int asn1PE_H245_SeqOfH245MediaDistributionCapability (OOCTXT* pctxt, H245_SeqOfH245MediaDistributionCapability* pvalue);
+
+EXTERN int asn1PD_H245_SeqOfH245MediaDistributionCapability (OOCTXT* pctxt, H245_SeqOfH245MediaDistributionCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* MultipointCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultipointCapability {
+ ASN1BOOL multicastCapability;
+ ASN1BOOL multiUniCastConference;
+ H245_SeqOfH245MediaDistributionCapability mediaDistributionCapability;
+} H245MultipointCapability;
+
+EXTERN int asn1PE_H245MultipointCapability (OOCTXT* pctxt, H245MultipointCapability* pvalue);
+
+EXTERN int asn1PD_H245MultipointCapability (OOCTXT* pctxt, H245MultipointCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* H2250Capability_mcCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H2250Capability_mcCapability {
+ ASN1BOOL centralizedConferenceMC;
+ ASN1BOOL decentralizedConferenceMC;
+} H245H2250Capability_mcCapability;
+
+EXTERN int asn1PE_H245H2250Capability_mcCapability (OOCTXT* pctxt, H245H2250Capability_mcCapability* pvalue);
+
+EXTERN int asn1PD_H245H2250Capability_mcCapability (OOCTXT* pctxt, H245H2250Capability_mcCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* RTPPayloadType_payloadDescriptor */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RTPPayloadType_payloadDescriptor_nonStandardIdentifier 1
+#define T_H245RTPPayloadType_payloadDescriptor_rfc_number 2
+#define T_H245RTPPayloadType_payloadDescriptor_oid 3
+#define T_H245RTPPayloadType_payloadDescriptor_extElem1 4
+
+typedef struct EXTERN H245RTPPayloadType_payloadDescriptor {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandardIdentifier;
+ /* t = 2 */
+ ASN1INT rfc_number;
+ /* t = 3 */
+ ASN1OBJID *oid;
+ /* t = 4 */
+ } u;
+} H245RTPPayloadType_payloadDescriptor;
+
+EXTERN int asn1PE_H245RTPPayloadType_payloadDescriptor (OOCTXT* pctxt, H245RTPPayloadType_payloadDescriptor* pvalue);
+
+EXTERN int asn1PD_H245RTPPayloadType_payloadDescriptor (OOCTXT* pctxt, H245RTPPayloadType_payloadDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* RTPPayloadType */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RTPPayloadType {
+ struct {
+ unsigned payloadTypePresent : 1;
+ } m;
+ H245RTPPayloadType_payloadDescriptor payloadDescriptor;
+ ASN1UINT8 payloadType;
+} H245RTPPayloadType;
+
+EXTERN int asn1PE_H245RTPPayloadType (OOCTXT* pctxt, H245RTPPayloadType* pvalue);
+
+EXTERN int asn1PD_H245RTPPayloadType (OOCTXT* pctxt, H245RTPPayloadType* pvalue);
+
+/**************************************************************/
+/* */
+/* MediaPacketizationCapability_rtpPayloadType */
+/* */
+/**************************************************************/
+
+/* List of H245RTPPayloadType */
+typedef DList H245MediaPacketizationCapability_rtpPayloadType;
+
+EXTERN int asn1PE_H245MediaPacketizationCapability_rtpPayloadType (OOCTXT* pctxt, H245MediaPacketizationCapability_rtpPayloadType* pvalue);
+
+EXTERN int asn1PD_H245MediaPacketizationCapability_rtpPayloadType (OOCTXT* pctxt, H245MediaPacketizationCapability_rtpPayloadType* pvalue);
+
+/**************************************************************/
+/* */
+/* MediaPacketizationCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MediaPacketizationCapability {
+ struct {
+ unsigned rtpPayloadTypePresent : 1;
+ } m;
+ ASN1BOOL h261aVideoPacketization;
+ H245MediaPacketizationCapability_rtpPayloadType rtpPayloadType;
+} H245MediaPacketizationCapability;
+
+EXTERN int asn1PE_H245MediaPacketizationCapability (OOCTXT* pctxt, H245MediaPacketizationCapability* pvalue);
+
+EXTERN int asn1PD_H245MediaPacketizationCapability (OOCTXT* pctxt, H245MediaPacketizationCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* QOSMode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245QOSMode_guaranteedQOS 1
+#define T_H245QOSMode_controlledLoad 2
+#define T_H245QOSMode_extElem1 3
+
+typedef struct EXTERN H245QOSMode {
+ int t;
+} H245QOSMode;
+
+EXTERN int asn1PE_H245QOSMode (OOCTXT* pctxt, H245QOSMode* pvalue);
+
+EXTERN int asn1PD_H245QOSMode (OOCTXT* pctxt, H245QOSMode* pvalue);
+
+/**************************************************************/
+/* */
+/* RSVPParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RSVPParameters {
+ struct {
+ unsigned qosModePresent : 1;
+ unsigned tokenRatePresent : 1;
+ unsigned bucketSizePresent : 1;
+ unsigned peakRatePresent : 1;
+ unsigned minPolicedPresent : 1;
+ unsigned maxPktSizePresent : 1;
+ } m;
+ H245QOSMode qosMode;
+ ASN1UINT tokenRate;
+ ASN1UINT bucketSize;
+ ASN1UINT peakRate;
+ ASN1UINT minPoliced;
+ ASN1UINT maxPktSize;
+} H245RSVPParameters;
+
+EXTERN int asn1PE_H245RSVPParameters (OOCTXT* pctxt, H245RSVPParameters* pvalue);
+
+EXTERN int asn1PD_H245RSVPParameters (OOCTXT* pctxt, H245RSVPParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* ATMParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245ATMParameters {
+ ASN1USINT maxNTUSize;
+ ASN1BOOL atmUBR;
+ ASN1BOOL atmrtVBR;
+ ASN1BOOL atmnrtVBR;
+ ASN1BOOL atmABR;
+ ASN1BOOL atmCBR;
+} H245ATMParameters;
+
+EXTERN int asn1PE_H245ATMParameters (OOCTXT* pctxt, H245ATMParameters* pvalue);
+
+EXTERN int asn1PD_H245ATMParameters (OOCTXT* pctxt, H245ATMParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* QOSCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245QOSCapability {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned rsvpParametersPresent : 1;
+ unsigned atmParametersPresent : 1;
+ } m;
+ H245NonStandardParameter nonStandardData;
+ H245RSVPParameters rsvpParameters;
+ H245ATMParameters atmParameters;
+} H245QOSCapability;
+
+EXTERN int asn1PE_H245QOSCapability (OOCTXT* pctxt, H245QOSCapability* pvalue);
+
+EXTERN int asn1PD_H245QOSCapability (OOCTXT* pctxt, H245QOSCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportCapability_qOSCapabilities */
+/* */
+/**************************************************************/
+
+/* List of H245QOSCapability */
+typedef DList H245TransportCapability_qOSCapabilities;
+
+EXTERN int asn1PE_H245TransportCapability_qOSCapabilities (OOCTXT* pctxt, H245TransportCapability_qOSCapabilities* pvalue);
+
+EXTERN int asn1PD_H245TransportCapability_qOSCapabilities (OOCTXT* pctxt, H245TransportCapability_qOSCapabilities* pvalue);
+
+/**************************************************************/
+/* */
+/* MediaTransportType_atm_AAL5_compressed */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MediaTransportType_atm_AAL5_compressed {
+ ASN1BOOL variable_delta;
+} H245MediaTransportType_atm_AAL5_compressed;
+
+EXTERN int asn1PE_H245MediaTransportType_atm_AAL5_compressed (OOCTXT* pctxt, H245MediaTransportType_atm_AAL5_compressed* pvalue);
+
+EXTERN int asn1PD_H245MediaTransportType_atm_AAL5_compressed (OOCTXT* pctxt, H245MediaTransportType_atm_AAL5_compressed* pvalue);
+
+/**************************************************************/
+/* */
+/* MediaTransportType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MediaTransportType_ip_UDP 1
+#define T_H245MediaTransportType_ip_TCP 2
+#define T_H245MediaTransportType_atm_AAL5_UNIDIR 3
+#define T_H245MediaTransportType_atm_AAL5_BIDIR 4
+#define T_H245MediaTransportType_atm_AAL5_compressed 5
+#define T_H245MediaTransportType_extElem1 6
+
+typedef struct EXTERN H245MediaTransportType {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ H245MediaTransportType_atm_AAL5_compressed *atm_AAL5_compressed;
+ /* t = 6 */
+ } u;
+} H245MediaTransportType;
+
+EXTERN int asn1PE_H245MediaTransportType (OOCTXT* pctxt, H245MediaTransportType* pvalue);
+
+EXTERN int asn1PD_H245MediaTransportType (OOCTXT* pctxt, H245MediaTransportType* pvalue);
+
+/**************************************************************/
+/* */
+/* MediaChannelCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MediaChannelCapability {
+ struct {
+ unsigned mediaTransportPresent : 1;
+ } m;
+ H245MediaTransportType mediaTransport;
+} H245MediaChannelCapability;
+
+EXTERN int asn1PE_H245MediaChannelCapability (OOCTXT* pctxt, H245MediaChannelCapability* pvalue);
+
+EXTERN int asn1PD_H245MediaChannelCapability (OOCTXT* pctxt, H245MediaChannelCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportCapability_mediaChannelCapabilities */
+/* */
+/**************************************************************/
+
+/* List of H245MediaChannelCapability */
+typedef DList H245TransportCapability_mediaChannelCapabilities;
+
+EXTERN int asn1PE_H245TransportCapability_mediaChannelCapabilities (OOCTXT* pctxt, H245TransportCapability_mediaChannelCapabilities* pvalue);
+
+EXTERN int asn1PD_H245TransportCapability_mediaChannelCapabilities (OOCTXT* pctxt, H245TransportCapability_mediaChannelCapabilities* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245TransportCapability {
+ struct {
+ unsigned nonStandardPresent : 1;
+ unsigned qOSCapabilitiesPresent : 1;
+ unsigned mediaChannelCapabilitiesPresent : 1;
+ } m;
+ H245NonStandardParameter nonStandard;
+ H245TransportCapability_qOSCapabilities qOSCapabilities;
+ H245TransportCapability_mediaChannelCapabilities mediaChannelCapabilities;
+} H245TransportCapability;
+
+EXTERN int asn1PE_H245TransportCapability (OOCTXT* pctxt, H245TransportCapability* pvalue);
+
+EXTERN int asn1PD_H245TransportCapability (OOCTXT* pctxt, H245TransportCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyFrameMapping_frameSequence */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RTPH263VideoRedundancyFrameMapping_frameSequence {
+ ASN1UINT n;
+ ASN1UINT8 elem[256];
+} H245RTPH263VideoRedundancyFrameMapping_frameSequence;
+
+EXTERN int asn1PE_H245RTPH263VideoRedundancyFrameMapping_frameSequence (OOCTXT* pctxt, H245RTPH263VideoRedundancyFrameMapping_frameSequence* pvalue);
+
+EXTERN int asn1PD_H245RTPH263VideoRedundancyFrameMapping_frameSequence (OOCTXT* pctxt, H245RTPH263VideoRedundancyFrameMapping_frameSequence* pvalue);
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyFrameMapping */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RTPH263VideoRedundancyFrameMapping {
+ ASN1UINT8 threadNumber;
+ H245RTPH263VideoRedundancyFrameMapping_frameSequence frameSequence;
+} H245RTPH263VideoRedundancyFrameMapping;
+
+EXTERN int asn1PE_H245RTPH263VideoRedundancyFrameMapping (OOCTXT* pctxt, H245RTPH263VideoRedundancyFrameMapping* pvalue);
+
+EXTERN int asn1PD_H245RTPH263VideoRedundancyFrameMapping (OOCTXT* pctxt, H245RTPH263VideoRedundancyFrameMapping* pvalue);
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyEncoding_frameToThreadMapping_cust */
+/* */
+/**************************************************************/
+
+/* List of H245RTPH263VideoRedundancyFrameMapping */
+typedef DList H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom;
+
+EXTERN int asn1PE_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom* pvalue);
+
+EXTERN int asn1PD_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom* pvalue);
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyEncoding_frameToThreadMapping */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_roundrobin 1
+#define T_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom 2
+#define T_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_extElem1 3
+
+typedef struct EXTERN H245RTPH263VideoRedundancyEncoding_frameToThreadMapping {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom *custom;
+ /* t = 3 */
+ } u;
+} H245RTPH263VideoRedundancyEncoding_frameToThreadMapping;
+
+EXTERN int asn1PE_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_frameToThreadMapping* pvalue);
+
+EXTERN int asn1PD_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_frameToThreadMapping* pvalue);
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyEncoding_containedThreads */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RTPH263VideoRedundancyEncoding_containedThreads {
+ ASN1UINT n;
+ ASN1UINT8 elem[256];
+} H245RTPH263VideoRedundancyEncoding_containedThreads;
+
+EXTERN int asn1PE_H245RTPH263VideoRedundancyEncoding_containedThreads (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_containedThreads* pvalue);
+
+EXTERN int asn1PD_H245RTPH263VideoRedundancyEncoding_containedThreads (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_containedThreads* pvalue);
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyEncoding */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RTPH263VideoRedundancyEncoding {
+ struct {
+ unsigned containedThreadsPresent : 1;
+ } m;
+ ASN1UINT8 numberOfThreads;
+ ASN1USINT framesBetweenSyncPoints;
+ H245RTPH263VideoRedundancyEncoding_frameToThreadMapping frameToThreadMapping;
+ H245RTPH263VideoRedundancyEncoding_containedThreads containedThreads;
+} H245RTPH263VideoRedundancyEncoding;
+
+EXTERN int asn1PE_H245RTPH263VideoRedundancyEncoding (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding* pvalue);
+
+EXTERN int asn1PD_H245RTPH263VideoRedundancyEncoding (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding* pvalue);
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingMethod */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RedundancyEncodingMethod_nonStandard 1
+#define T_H245RedundancyEncodingMethod_rtpAudioRedundancyEncoding 2
+#define T_H245RedundancyEncodingMethod_rtpH263VideoRedundancyEncoding 3
+#define T_H245RedundancyEncodingMethod_extElem1 4
+
+typedef struct EXTERN H245RedundancyEncodingMethod {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ H245RTPH263VideoRedundancyEncoding *rtpH263VideoRedundancyEncoding;
+ /* t = 4 */
+ } u;
+} H245RedundancyEncodingMethod;
+
+EXTERN int asn1PE_H245RedundancyEncodingMethod (OOCTXT* pctxt, H245RedundancyEncodingMethod* pvalue);
+
+EXTERN int asn1PD_H245RedundancyEncodingMethod (OOCTXT* pctxt, H245RedundancyEncodingMethod* pvalue);
+
+/**************************************************************/
+/* */
+/* CapabilityTableEntryNumber */
+/* */
+/**************************************************************/
+
+typedef ASN1USINT H245CapabilityTableEntryNumber;
+
+EXTERN int asn1PE_H245CapabilityTableEntryNumber (OOCTXT* pctxt, H245CapabilityTableEntryNumber value);
+
+EXTERN int asn1PD_H245CapabilityTableEntryNumber (OOCTXT* pctxt, H245CapabilityTableEntryNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingCapability_secondaryEncoding */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RedundancyEncodingCapability_secondaryEncoding {
+ ASN1UINT n;
+ H245CapabilityTableEntryNumber elem[256];
+} H245RedundancyEncodingCapability_secondaryEncoding;
+
+EXTERN int asn1PE_H245RedundancyEncodingCapability_secondaryEncoding (OOCTXT* pctxt, H245RedundancyEncodingCapability_secondaryEncoding* pvalue);
+
+EXTERN int asn1PD_H245RedundancyEncodingCapability_secondaryEncoding (OOCTXT* pctxt, H245RedundancyEncodingCapability_secondaryEncoding* pvalue);
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RedundancyEncodingCapability {
+ struct {
+ unsigned secondaryEncodingPresent : 1;
+ } m;
+ H245RedundancyEncodingMethod redundancyEncodingMethod;
+ H245CapabilityTableEntryNumber primaryEncoding;
+ H245RedundancyEncodingCapability_secondaryEncoding secondaryEncoding;
+} H245RedundancyEncodingCapability;
+
+EXTERN int asn1PE_H245RedundancyEncodingCapability (OOCTXT* pctxt, H245RedundancyEncodingCapability* pvalue);
+
+EXTERN int asn1PD_H245RedundancyEncodingCapability (OOCTXT* pctxt, H245RedundancyEncodingCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* H2250Capability_redundancyEncodingCapability */
+/* */
+/**************************************************************/
+
+/* List of H245RedundancyEncodingCapability */
+typedef DList H245H2250Capability_redundancyEncodingCapability;
+
+EXTERN int asn1PE_H245H2250Capability_redundancyEncodingCapability (OOCTXT* pctxt, H245H2250Capability_redundancyEncodingCapability* pvalue);
+
+EXTERN int asn1PD_H245H2250Capability_redundancyEncodingCapability (OOCTXT* pctxt, H245H2250Capability_redundancyEncodingCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* H2250Capability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H2250Capability {
+ struct {
+ unsigned transportCapabilityPresent : 1;
+ unsigned redundancyEncodingCapabilityPresent : 1;
+ unsigned logicalChannelSwitchingCapabilityPresent : 1;
+ unsigned t120DynamicPortCapabilityPresent : 1;
+ } m;
+ ASN1USINT maximumAudioDelayJitter;
+ H245MultipointCapability receiveMultipointCapability;
+ H245MultipointCapability transmitMultipointCapability;
+ H245MultipointCapability receiveAndTransmitMultipointCapability;
+ H245H2250Capability_mcCapability mcCapability;
+ ASN1BOOL rtcpVideoControlCapability;
+ H245MediaPacketizationCapability mediaPacketizationCapability;
+ H245TransportCapability transportCapability;
+ H245H2250Capability_redundancyEncodingCapability redundancyEncodingCapability;
+ ASN1BOOL logicalChannelSwitchingCapability;
+ ASN1BOOL t120DynamicPortCapability;
+} H245H2250Capability;
+
+EXTERN int asn1PE_H245H2250Capability (OOCTXT* pctxt, H245H2250Capability* pvalue);
+
+EXTERN int asn1PD_H245H2250Capability (OOCTXT* pctxt, H245H2250Capability* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexCapability */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MultiplexCapability_nonStandard 1
+#define T_H245MultiplexCapability_h222Capability 2
+#define T_H245MultiplexCapability_h223Capability 3
+#define T_H245MultiplexCapability_v76Capability 4
+#define T_H245MultiplexCapability_h2250Capability 5
+#define T_H245MultiplexCapability_genericMultiplexCapability 6
+#define T_H245MultiplexCapability_extElem1 7
+
+typedef struct EXTERN H245MultiplexCapability {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ H245H222Capability *h222Capability;
+ /* t = 3 */
+ H245H223Capability *h223Capability;
+ /* t = 4 */
+ H245V76Capability *v76Capability;
+ /* t = 5 */
+ H245H2250Capability *h2250Capability;
+ /* t = 6 */
+ H245GenericCapability *genericMultiplexCapability;
+ /* t = 7 */
+ } u;
+} H245MultiplexCapability;
+
+EXTERN int asn1PE_H245MultiplexCapability (OOCTXT* pctxt, H245MultiplexCapability* pvalue);
+
+EXTERN int asn1PD_H245MultiplexCapability (OOCTXT* pctxt, H245MultiplexCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* H261VideoCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H261VideoCapability {
+ struct {
+ unsigned qcifMPIPresent : 1;
+ unsigned cifMPIPresent : 1;
+ unsigned videoBadMBsCapPresent : 1;
+ } m;
+ ASN1UINT8 qcifMPI;
+ ASN1UINT8 cifMPI;
+ ASN1BOOL temporalSpatialTradeOffCapability;
+ ASN1USINT maxBitRate;
+ ASN1BOOL stillImageTransmission;
+ ASN1BOOL videoBadMBsCap;
+} H245H261VideoCapability;
+
+EXTERN int asn1PE_H245H261VideoCapability (OOCTXT* pctxt, H245H261VideoCapability* pvalue);
+
+EXTERN int asn1PD_H245H261VideoCapability (OOCTXT* pctxt, H245H261VideoCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* H262VideoCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H262VideoCapability {
+ struct {
+ unsigned videoBitRatePresent : 1;
+ unsigned vbvBufferSizePresent : 1;
+ unsigned samplesPerLinePresent : 1;
+ unsigned linesPerFramePresent : 1;
+ unsigned framesPerSecondPresent : 1;
+ unsigned luminanceSampleRatePresent : 1;
+ unsigned videoBadMBsCapPresent : 1;
+ } m;
+ ASN1BOOL profileAndLevel_SPatML;
+ ASN1BOOL profileAndLevel_MPatLL;
+ ASN1BOOL profileAndLevel_MPatML;
+ ASN1BOOL profileAndLevel_MPatH_14;
+ ASN1BOOL profileAndLevel_MPatHL;
+ ASN1BOOL profileAndLevel_SNRatLL;
+ ASN1BOOL profileAndLevel_SNRatML;
+ ASN1BOOL profileAndLevel_SpatialatH_14;
+ ASN1BOOL profileAndLevel_HPatML;
+ ASN1BOOL profileAndLevel_HPatH_14;
+ ASN1BOOL profileAndLevel_HPatHL;
+ ASN1UINT videoBitRate;
+ ASN1UINT vbvBufferSize;
+ ASN1USINT samplesPerLine;
+ ASN1USINT linesPerFrame;
+ ASN1UINT8 framesPerSecond;
+ ASN1UINT luminanceSampleRate;
+ ASN1BOOL videoBadMBsCap;
+} H245H262VideoCapability;
+
+EXTERN int asn1PE_H245H262VideoCapability (OOCTXT* pctxt, H245H262VideoCapability* pvalue);
+
+EXTERN int asn1PD_H245H262VideoCapability (OOCTXT* pctxt, H245H262VideoCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* TransparencyParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245TransparencyParameters {
+ ASN1USINT presentationOrder;
+ ASN1INT offset_x;
+ ASN1INT offset_y;
+ ASN1UINT8 scale_x;
+ ASN1UINT8 scale_y;
+} H245TransparencyParameters;
+
+EXTERN int asn1PE_H245TransparencyParameters (OOCTXT* pctxt, H245TransparencyParameters* pvalue);
+
+EXTERN int asn1PD_H245TransparencyParameters (OOCTXT* pctxt, H245TransparencyParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* RefPictureSelection_additionalPictureMemory */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RefPictureSelection_additionalPictureMemory {
+ struct {
+ unsigned sqcifAdditionalPictureMemoryPresent : 1;
+ unsigned qcifAdditionalPictureMemoryPresent : 1;
+ unsigned cifAdditionalPictureMemoryPresent : 1;
+ unsigned cif4AdditionalPictureMemoryPresent : 1;
+ unsigned cif16AdditionalPictureMemoryPresent : 1;
+ unsigned bigCpfAdditionalPictureMemoryPresent : 1;
+ } m;
+ ASN1USINT sqcifAdditionalPictureMemory;
+ ASN1USINT qcifAdditionalPictureMemory;
+ ASN1USINT cifAdditionalPictureMemory;
+ ASN1USINT cif4AdditionalPictureMemory;
+ ASN1USINT cif16AdditionalPictureMemory;
+ ASN1USINT bigCpfAdditionalPictureMemory;
+} H245RefPictureSelection_additionalPictureMemory;
+
+EXTERN int asn1PE_H245RefPictureSelection_additionalPictureMemory (OOCTXT* pctxt, H245RefPictureSelection_additionalPictureMemory* pvalue);
+
+EXTERN int asn1PD_H245RefPictureSelection_additionalPictureMemory (OOCTXT* pctxt, H245RefPictureSelection_additionalPictureMemory* pvalue);
+
+/**************************************************************/
+/* */
+/* RefPictureSelection_videoBackChannelSend */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RefPictureSelection_videoBackChannelSend_none 1
+#define T_H245RefPictureSelection_videoBackChannelSend_ackMessageOnly 2
+#define T_H245RefPictureSelection_videoBackChannelSend_nackMessageOnly 3
+#define T_H245RefPictureSelection_videoBackChannelSend_ackOrNackMessageOnly 4
+#define T_H245RefPictureSelection_videoBackChannelSend_ackAndNackMessage 5
+#define T_H245RefPictureSelection_videoBackChannelSend_extElem1 6
+
+typedef struct EXTERN H245RefPictureSelection_videoBackChannelSend {
+ int t;
+} H245RefPictureSelection_videoBackChannelSend;
+
+EXTERN int asn1PE_H245RefPictureSelection_videoBackChannelSend (OOCTXT* pctxt, H245RefPictureSelection_videoBackChannelSend* pvalue);
+
+EXTERN int asn1PD_H245RefPictureSelection_videoBackChannelSend (OOCTXT* pctxt, H245RefPictureSelection_videoBackChannelSend* pvalue);
+
+/**************************************************************/
+/* */
+/* RefPictureSelection_enhancedReferencePicSelect_subPictur */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters {
+ ASN1UINT8 mpuHorizMBs;
+ ASN1UINT8 mpuVertMBs;
+ ASN1UINT mpuTotalNumber;
+} H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters;
+
+EXTERN int asn1PE_H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters (OOCTXT* pctxt, H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters* pvalue);
+
+EXTERN int asn1PD_H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters (OOCTXT* pctxt, H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* RefPictureSelection_enhancedReferencePicSelect */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RefPictureSelection_enhancedReferencePicSelect {
+ struct {
+ unsigned subPictureRemovalParametersPresent : 1;
+ } m;
+ H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters subPictureRemovalParameters;
+} H245RefPictureSelection_enhancedReferencePicSelect;
+
+EXTERN int asn1PE_H245RefPictureSelection_enhancedReferencePicSelect (OOCTXT* pctxt, H245RefPictureSelection_enhancedReferencePicSelect* pvalue);
+
+EXTERN int asn1PD_H245RefPictureSelection_enhancedReferencePicSelect (OOCTXT* pctxt, H245RefPictureSelection_enhancedReferencePicSelect* pvalue);
+
+/**************************************************************/
+/* */
+/* RefPictureSelection */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RefPictureSelection {
+ struct {
+ unsigned additionalPictureMemoryPresent : 1;
+ unsigned enhancedReferencePicSelectPresent : 1;
+ } m;
+ H245RefPictureSelection_additionalPictureMemory additionalPictureMemory;
+ ASN1BOOL videoMux;
+ H245RefPictureSelection_videoBackChannelSend videoBackChannelSend;
+ H245RefPictureSelection_enhancedReferencePicSelect enhancedReferencePicSelect;
+} H245RefPictureSelection;
+
+EXTERN int asn1PE_H245RefPictureSelection (OOCTXT* pctxt, H245RefPictureSelection* pvalue);
+
+EXTERN int asn1PD_H245RefPictureSelection (OOCTXT* pctxt, H245RefPictureSelection* pvalue);
+
+/**************************************************************/
+/* */
+/* CustomPictureClockFrequency */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245CustomPictureClockFrequency {
+ struct {
+ unsigned sqcifMPIPresent : 1;
+ unsigned qcifMPIPresent : 1;
+ unsigned cifMPIPresent : 1;
+ unsigned cif4MPIPresent : 1;
+ unsigned cif16MPIPresent : 1;
+ } m;
+ ASN1USINT clockConversionCode;
+ ASN1UINT8 clockDivisor;
+ ASN1USINT sqcifMPI;
+ ASN1USINT qcifMPI;
+ ASN1USINT cifMPI;
+ ASN1USINT cif4MPI;
+ ASN1USINT cif16MPI;
+} H245CustomPictureClockFrequency;
+
+EXTERN int asn1PE_H245CustomPictureClockFrequency (OOCTXT* pctxt, H245CustomPictureClockFrequency* pvalue);
+
+EXTERN int asn1PD_H245CustomPictureClockFrequency (OOCTXT* pctxt, H245CustomPictureClockFrequency* pvalue);
+
+/**************************************************************/
+/* */
+/* H263Options_customPictureClockFrequency */
+/* */
+/**************************************************************/
+
+/* List of H245CustomPictureClockFrequency */
+typedef DList H245H263Options_customPictureClockFrequency;
+
+EXTERN int asn1PE_H245H263Options_customPictureClockFrequency (OOCTXT* pctxt, H245H263Options_customPictureClockFrequency* pvalue);
+
+EXTERN int asn1PD_H245H263Options_customPictureClockFrequency (OOCTXT* pctxt, H245H263Options_customPictureClockFrequency* pvalue);
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_mPI_customPCF_element */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245CustomPictureFormat_mPI_customPCF_element {
+ ASN1USINT clockConversionCode;
+ ASN1UINT8 clockDivisor;
+ ASN1USINT customMPI;
+} H245CustomPictureFormat_mPI_customPCF_element;
+
+EXTERN int asn1PE_H245CustomPictureFormat_mPI_customPCF_element (OOCTXT* pctxt, H245CustomPictureFormat_mPI_customPCF_element* pvalue);
+
+EXTERN int asn1PD_H245CustomPictureFormat_mPI_customPCF_element (OOCTXT* pctxt, H245CustomPictureFormat_mPI_customPCF_element* pvalue);
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_mPI_customPCF */
+/* */
+/**************************************************************/
+
+/* List of H245CustomPictureFormat_mPI_customPCF_element */
+typedef DList H245CustomPictureFormat_mPI_customPCF;
+
+EXTERN int asn1PE_H245CustomPictureFormat_mPI_customPCF (OOCTXT* pctxt, H245CustomPictureFormat_mPI_customPCF* pvalue);
+
+EXTERN int asn1PD_H245CustomPictureFormat_mPI_customPCF (OOCTXT* pctxt, H245CustomPictureFormat_mPI_customPCF* pvalue);
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_mPI */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245CustomPictureFormat_mPI {
+ struct {
+ unsigned standardMPIPresent : 1;
+ unsigned customPCFPresent : 1;
+ } m;
+ ASN1UINT8 standardMPI;
+ H245CustomPictureFormat_mPI_customPCF customPCF;
+} H245CustomPictureFormat_mPI;
+
+EXTERN int asn1PE_H245CustomPictureFormat_mPI (OOCTXT* pctxt, H245CustomPictureFormat_mPI* pvalue);
+
+EXTERN int asn1PD_H245CustomPictureFormat_mPI (OOCTXT* pctxt, H245CustomPictureFormat_mPI* pvalue);
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_pixelAspectInformation_pixelAspectCo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode {
+ ASN1UINT n;
+ ASN1UINT8 elem[14];
+} H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode;
+
+EXTERN int asn1PE_H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode* pvalue);
+
+EXTERN int asn1PD_H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode* pvalue);
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_pixelAspectInformation_extendedPAR_e */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element {
+ ASN1UINT8 width;
+ ASN1UINT8 height;
+} H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element;
+
+EXTERN int asn1PE_H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element* pvalue);
+
+EXTERN int asn1PD_H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element* pvalue);
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_pixelAspectInformation_extendedPAR */
+/* */
+/**************************************************************/
+
+/* List of H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element */
+typedef DList H245CustomPictureFormat_pixelAspectInformation_extendedPAR;
+
+EXTERN int asn1PE_H245CustomPictureFormat_pixelAspectInformation_extendedPAR (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_extendedPAR* pvalue);
+
+EXTERN int asn1PD_H245CustomPictureFormat_pixelAspectInformation_extendedPAR (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_extendedPAR* pvalue);
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_pixelAspectInformation */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245CustomPictureFormat_pixelAspectInformation_anyPixelAspectRatio 1
+#define T_H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode 2
+#define T_H245CustomPictureFormat_pixelAspectInformation_extendedPAR 3
+#define T_H245CustomPictureFormat_pixelAspectInformation_extElem1 4
+
+typedef struct EXTERN H245CustomPictureFormat_pixelAspectInformation {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1BOOL anyPixelAspectRatio;
+ /* t = 2 */
+ H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode *pixelAspectCode;
+ /* t = 3 */
+ H245CustomPictureFormat_pixelAspectInformation_extendedPAR *extendedPAR;
+ /* t = 4 */
+ } u;
+} H245CustomPictureFormat_pixelAspectInformation;
+
+EXTERN int asn1PE_H245CustomPictureFormat_pixelAspectInformation (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation* pvalue);
+
+EXTERN int asn1PD_H245CustomPictureFormat_pixelAspectInformation (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation* pvalue);
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245CustomPictureFormat {
+ ASN1USINT maxCustomPictureWidth;
+ ASN1USINT maxCustomPictureHeight;
+ ASN1USINT minCustomPictureWidth;
+ ASN1USINT minCustomPictureHeight;
+ H245CustomPictureFormat_mPI mPI;
+ H245CustomPictureFormat_pixelAspectInformation pixelAspectInformation;
+} H245CustomPictureFormat;
+
+EXTERN int asn1PE_H245CustomPictureFormat (OOCTXT* pctxt, H245CustomPictureFormat* pvalue);
+
+EXTERN int asn1PD_H245CustomPictureFormat (OOCTXT* pctxt, H245CustomPictureFormat* pvalue);
+
+/**************************************************************/
+/* */
+/* H263Options_customPictureFormat */
+/* */
+/**************************************************************/
+
+/* List of H245CustomPictureFormat */
+typedef DList H245H263Options_customPictureFormat;
+
+EXTERN int asn1PE_H245H263Options_customPictureFormat (OOCTXT* pctxt, H245H263Options_customPictureFormat* pvalue);
+
+EXTERN int asn1PD_H245H263Options_customPictureFormat (OOCTXT* pctxt, H245H263Options_customPictureFormat* pvalue);
+
+/**************************************************************/
+/* */
+/* H263Version3Options */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H263Version3Options {
+ ASN1BOOL dataPartitionedSlices;
+ ASN1BOOL fixedPointIDCT0;
+ ASN1BOOL interlacedFields;
+ ASN1BOOL currentPictureHeaderRepetition;
+ ASN1BOOL previousPictureHeaderRepetition;
+ ASN1BOOL nextPictureHeaderRepetition;
+ ASN1BOOL pictureNumber;
+ ASN1BOOL spareReferencePictures;
+} H245H263Version3Options;
+
+EXTERN int asn1PE_H245H263Version3Options (OOCTXT* pctxt, H245H263Version3Options* pvalue);
+
+EXTERN int asn1PD_H245H263Version3Options (OOCTXT* pctxt, H245H263Version3Options* pvalue);
+
+/**************************************************************/
+/* */
+/* H263ModeComboFlags */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H263ModeComboFlags {
+ struct {
+ unsigned enhancedReferencePicSelectPresent : 1;
+ unsigned h263Version3OptionsPresent : 1;
+ } m;
+ ASN1BOOL unrestrictedVector;
+ ASN1BOOL arithmeticCoding;
+ ASN1BOOL advancedPrediction;
+ ASN1BOOL pbFrames;
+ ASN1BOOL advancedIntraCodingMode;
+ ASN1BOOL deblockingFilterMode;
+ ASN1BOOL unlimitedMotionVectors;
+ ASN1BOOL slicesInOrder_NonRect;
+ ASN1BOOL slicesInOrder_Rect;
+ ASN1BOOL slicesNoOrder_NonRect;
+ ASN1BOOL slicesNoOrder_Rect;
+ ASN1BOOL improvedPBFramesMode;
+ ASN1BOOL referencePicSelect;
+ ASN1BOOL dynamicPictureResizingByFour;
+ ASN1BOOL dynamicPictureResizingSixteenthPel;
+ ASN1BOOL dynamicWarpingHalfPel;
+ ASN1BOOL dynamicWarpingSixteenthPel;
+ ASN1BOOL reducedResolutionUpdate;
+ ASN1BOOL independentSegmentDecoding;
+ ASN1BOOL alternateInterVLCMode;
+ ASN1BOOL modifiedQuantizationMode;
+ ASN1BOOL enhancedReferencePicSelect;
+ H245H263Version3Options h263Version3Options;
+} H245H263ModeComboFlags;
+
+EXTERN int asn1PE_H245H263ModeComboFlags (OOCTXT* pctxt, H245H263ModeComboFlags* pvalue);
+
+EXTERN int asn1PD_H245H263ModeComboFlags (OOCTXT* pctxt, H245H263ModeComboFlags* pvalue);
+
+/**************************************************************/
+/* */
+/* H263VideoModeCombos_h263VideoCoupledModes */
+/* */
+/**************************************************************/
+
+/* List of H245H263ModeComboFlags */
+typedef DList H245H263VideoModeCombos_h263VideoCoupledModes;
+
+EXTERN int asn1PE_H245H263VideoModeCombos_h263VideoCoupledModes (OOCTXT* pctxt, H245H263VideoModeCombos_h263VideoCoupledModes* pvalue);
+
+EXTERN int asn1PD_H245H263VideoModeCombos_h263VideoCoupledModes (OOCTXT* pctxt, H245H263VideoModeCombos_h263VideoCoupledModes* pvalue);
+
+/**************************************************************/
+/* */
+/* H263VideoModeCombos */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H263VideoModeCombos {
+ H245H263ModeComboFlags h263VideoUncoupledModes;
+ H245H263VideoModeCombos_h263VideoCoupledModes h263VideoCoupledModes;
+} H245H263VideoModeCombos;
+
+EXTERN int asn1PE_H245H263VideoModeCombos (OOCTXT* pctxt, H245H263VideoModeCombos* pvalue);
+
+EXTERN int asn1PD_H245H263VideoModeCombos (OOCTXT* pctxt, H245H263VideoModeCombos* pvalue);
+
+/**************************************************************/
+/* */
+/* H263Options_modeCombos */
+/* */
+/**************************************************************/
+
+/* List of H245H263VideoModeCombos */
+typedef DList H245H263Options_modeCombos;
+
+EXTERN int asn1PE_H245H263Options_modeCombos (OOCTXT* pctxt, H245H263Options_modeCombos* pvalue);
+
+EXTERN int asn1PD_H245H263Options_modeCombos (OOCTXT* pctxt, H245H263Options_modeCombos* pvalue);
+
+/**************************************************************/
+/* */
+/* H263Options */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H263Options {
+ struct {
+ unsigned transparencyParametersPresent : 1;
+ unsigned refPictureSelectionPresent : 1;
+ unsigned customPictureClockFrequencyPresent : 1;
+ unsigned customPictureFormatPresent : 1;
+ unsigned modeCombosPresent : 1;
+ unsigned videoBadMBsCapPresent : 1;
+ unsigned h263Version3OptionsPresent : 1;
+ } m;
+ ASN1BOOL advancedIntraCodingMode;
+ ASN1BOOL deblockingFilterMode;
+ ASN1BOOL improvedPBFramesMode;
+ ASN1BOOL unlimitedMotionVectors;
+ ASN1BOOL fullPictureFreeze;
+ ASN1BOOL partialPictureFreezeAndRelease;
+ ASN1BOOL resizingPartPicFreezeAndRelease;
+ ASN1BOOL fullPictureSnapshot;
+ ASN1BOOL partialPictureSnapshot;
+ ASN1BOOL videoSegmentTagging;
+ ASN1BOOL progressiveRefinement;
+ ASN1BOOL dynamicPictureResizingByFour;
+ ASN1BOOL dynamicPictureResizingSixteenthPel;
+ ASN1BOOL dynamicWarpingHalfPel;
+ ASN1BOOL dynamicWarpingSixteenthPel;
+ ASN1BOOL independentSegmentDecoding;
+ ASN1BOOL slicesInOrder_NonRect;
+ ASN1BOOL slicesInOrder_Rect;
+ ASN1BOOL slicesNoOrder_NonRect;
+ ASN1BOOL slicesNoOrder_Rect;
+ ASN1BOOL alternateInterVLCMode;
+ ASN1BOOL modifiedQuantizationMode;
+ ASN1BOOL reducedResolutionUpdate;
+ H245TransparencyParameters transparencyParameters;
+ ASN1BOOL separateVideoBackChannel;
+ H245RefPictureSelection refPictureSelection;
+ H245H263Options_customPictureClockFrequency customPictureClockFrequency;
+ H245H263Options_customPictureFormat customPictureFormat;
+ H245H263Options_modeCombos modeCombos;
+ ASN1BOOL videoBadMBsCap;
+ H245H263Version3Options h263Version3Options;
+} H245H263Options;
+
+EXTERN int asn1PE_H245H263Options (OOCTXT* pctxt, H245H263Options* pvalue);
+
+EXTERN int asn1PD_H245H263Options (OOCTXT* pctxt, H245H263Options* pvalue);
+
+/**************************************************************/
+/* */
+/* EnhancementOptions */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245EnhancementOptions {
+ struct {
+ unsigned sqcifMPIPresent : 1;
+ unsigned qcifMPIPresent : 1;
+ unsigned cifMPIPresent : 1;
+ unsigned cif4MPIPresent : 1;
+ unsigned cif16MPIPresent : 1;
+ unsigned slowSqcifMPIPresent : 1;
+ unsigned slowQcifMPIPresent : 1;
+ unsigned slowCifMPIPresent : 1;
+ unsigned slowCif4MPIPresent : 1;
+ unsigned slowCif16MPIPresent : 1;
+ unsigned h263OptionsPresent : 1;
+ } m;
+ ASN1UINT8 sqcifMPI;
+ ASN1UINT8 qcifMPI;
+ ASN1UINT8 cifMPI;
+ ASN1UINT8 cif4MPI;
+ ASN1UINT8 cif16MPI;
+ ASN1UINT maxBitRate;
+ ASN1BOOL unrestrictedVector;
+ ASN1BOOL arithmeticCoding;
+ ASN1BOOL temporalSpatialTradeOffCapability;
+ ASN1USINT slowSqcifMPI;
+ ASN1USINT slowQcifMPI;
+ ASN1USINT slowCifMPI;
+ ASN1USINT slowCif4MPI;
+ ASN1USINT slowCif16MPI;
+ ASN1BOOL errorCompensation;
+ H245H263Options h263Options;
+} H245EnhancementOptions;
+
+EXTERN int asn1PE_H245EnhancementOptions (OOCTXT* pctxt, H245EnhancementOptions* pvalue);
+
+EXTERN int asn1PD_H245EnhancementOptions (OOCTXT* pctxt, H245EnhancementOptions* pvalue);
+
+/**************************************************************/
+/* */
+/* EnhancementLayerInfo_snrEnhancement */
+/* */
+/**************************************************************/
+
+/* List of H245EnhancementOptions */
+typedef DList H245EnhancementLayerInfo_snrEnhancement;
+
+EXTERN int asn1PE_H245EnhancementLayerInfo_snrEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_snrEnhancement* pvalue);
+
+EXTERN int asn1PD_H245EnhancementLayerInfo_snrEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_snrEnhancement* pvalue);
+
+/**************************************************************/
+/* */
+/* EnhancementLayerInfo_spatialEnhancement */
+/* */
+/**************************************************************/
+
+/* List of H245EnhancementOptions */
+typedef DList H245EnhancementLayerInfo_spatialEnhancement;
+
+EXTERN int asn1PE_H245EnhancementLayerInfo_spatialEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_spatialEnhancement* pvalue);
+
+EXTERN int asn1PD_H245EnhancementLayerInfo_spatialEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_spatialEnhancement* pvalue);
+
+/**************************************************************/
+/* */
+/* BEnhancementParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245BEnhancementParameters {
+ H245EnhancementOptions enhancementOptions;
+ ASN1UINT8 numberOfBPictures;
+} H245BEnhancementParameters;
+
+EXTERN int asn1PE_H245BEnhancementParameters (OOCTXT* pctxt, H245BEnhancementParameters* pvalue);
+
+EXTERN int asn1PD_H245BEnhancementParameters (OOCTXT* pctxt, H245BEnhancementParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* EnhancementLayerInfo_bPictureEnhancement */
+/* */
+/**************************************************************/
+
+/* List of H245BEnhancementParameters */
+typedef DList H245EnhancementLayerInfo_bPictureEnhancement;
+
+EXTERN int asn1PE_H245EnhancementLayerInfo_bPictureEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_bPictureEnhancement* pvalue);
+
+EXTERN int asn1PD_H245EnhancementLayerInfo_bPictureEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_bPictureEnhancement* pvalue);
+
+/**************************************************************/
+/* */
+/* EnhancementLayerInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245EnhancementLayerInfo {
+ struct {
+ unsigned snrEnhancementPresent : 1;
+ unsigned spatialEnhancementPresent : 1;
+ unsigned bPictureEnhancementPresent : 1;
+ } m;
+ ASN1BOOL baseBitRateConstrained;
+ H245EnhancementLayerInfo_snrEnhancement snrEnhancement;
+ H245EnhancementLayerInfo_spatialEnhancement spatialEnhancement;
+ H245EnhancementLayerInfo_bPictureEnhancement bPictureEnhancement;
+} H245EnhancementLayerInfo;
+
+EXTERN int asn1PE_H245EnhancementLayerInfo (OOCTXT* pctxt, H245EnhancementLayerInfo* pvalue);
+
+EXTERN int asn1PD_H245EnhancementLayerInfo (OOCTXT* pctxt, H245EnhancementLayerInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* H263VideoCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H263VideoCapability {
+ struct {
+ unsigned sqcifMPIPresent : 1;
+ unsigned qcifMPIPresent : 1;
+ unsigned cifMPIPresent : 1;
+ unsigned cif4MPIPresent : 1;
+ unsigned cif16MPIPresent : 1;
+ unsigned hrd_BPresent : 1;
+ unsigned bppMaxKbPresent : 1;
+ unsigned slowSqcifMPIPresent : 1;
+ unsigned slowQcifMPIPresent : 1;
+ unsigned slowCifMPIPresent : 1;
+ unsigned slowCif4MPIPresent : 1;
+ unsigned slowCif16MPIPresent : 1;
+ unsigned errorCompensationPresent : 1;
+ unsigned enhancementLayerInfoPresent : 1;
+ unsigned h263OptionsPresent : 1;
+ } m;
+ ASN1UINT8 sqcifMPI;
+ ASN1UINT8 qcifMPI;
+ ASN1UINT8 cifMPI;
+ ASN1UINT8 cif4MPI;
+ ASN1UINT8 cif16MPI;
+ ASN1UINT maxBitRate;
+ ASN1BOOL unrestrictedVector;
+ ASN1BOOL arithmeticCoding;
+ ASN1BOOL advancedPrediction;
+ ASN1BOOL pbFrames;
+ ASN1BOOL temporalSpatialTradeOffCapability;
+ ASN1UINT hrd_B;
+ ASN1USINT bppMaxKb;
+ ASN1USINT slowSqcifMPI;
+ ASN1USINT slowQcifMPI;
+ ASN1USINT slowCifMPI;
+ ASN1USINT slowCif4MPI;
+ ASN1USINT slowCif16MPI;
+ ASN1BOOL errorCompensation;
+ H245EnhancementLayerInfo enhancementLayerInfo;
+ H245H263Options h263Options;
+} H245H263VideoCapability;
+
+EXTERN int asn1PE_H245H263VideoCapability (OOCTXT* pctxt, H245H263VideoCapability* pvalue);
+
+EXTERN int asn1PD_H245H263VideoCapability (OOCTXT* pctxt, H245H263VideoCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* IS11172VideoCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245IS11172VideoCapability {
+ struct {
+ unsigned videoBitRatePresent : 1;
+ unsigned vbvBufferSizePresent : 1;
+ unsigned samplesPerLinePresent : 1;
+ unsigned linesPerFramePresent : 1;
+ unsigned pictureRatePresent : 1;
+ unsigned luminanceSampleRatePresent : 1;
+ unsigned videoBadMBsCapPresent : 1;
+ } m;
+ ASN1BOOL constrainedBitstream;
+ ASN1UINT videoBitRate;
+ ASN1UINT vbvBufferSize;
+ ASN1USINT samplesPerLine;
+ ASN1USINT linesPerFrame;
+ ASN1UINT8 pictureRate;
+ ASN1UINT luminanceSampleRate;
+ ASN1BOOL videoBadMBsCap;
+} H245IS11172VideoCapability;
+
+EXTERN int asn1PE_H245IS11172VideoCapability (OOCTXT* pctxt, H245IS11172VideoCapability* pvalue);
+
+EXTERN int asn1PD_H245IS11172VideoCapability (OOCTXT* pctxt, H245IS11172VideoCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* VideoCapability */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245VideoCapability_nonStandard 1
+#define T_H245VideoCapability_h261VideoCapability 2
+#define T_H245VideoCapability_h262VideoCapability 3
+#define T_H245VideoCapability_h263VideoCapability 4
+#define T_H245VideoCapability_is11172VideoCapability 5
+#define T_H245VideoCapability_genericVideoCapability 6
+#define T_H245VideoCapability_extElem1 7
+
+typedef struct EXTERN H245VideoCapability {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ H245H261VideoCapability *h261VideoCapability;
+ /* t = 3 */
+ H245H262VideoCapability *h262VideoCapability;
+ /* t = 4 */
+ H245H263VideoCapability *h263VideoCapability;
+ /* t = 5 */
+ H245IS11172VideoCapability *is11172VideoCapability;
+ /* t = 6 */
+ H245GenericCapability *genericVideoCapability;
+ /* t = 7 */
+ } u;
+} H245VideoCapability;
+
+EXTERN int asn1PE_H245VideoCapability (OOCTXT* pctxt, H245VideoCapability* pvalue);
+
+EXTERN int asn1PD_H245VideoCapability (OOCTXT* pctxt, H245VideoCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* AudioCapability_g7231 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245AudioCapability_g7231 {
+ ASN1USINT maxAl_sduAudioFrames;
+ ASN1BOOL silenceSuppression;
+} H245AudioCapability_g7231;
+
+EXTERN int asn1PE_H245AudioCapability_g7231 (OOCTXT* pctxt, H245AudioCapability_g7231* pvalue);
+
+EXTERN int asn1PD_H245AudioCapability_g7231 (OOCTXT* pctxt, H245AudioCapability_g7231* pvalue);
+
+/**************************************************************/
+/* */
+/* IS11172AudioCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245IS11172AudioCapability {
+ ASN1BOOL audioLayer1;
+ ASN1BOOL audioLayer2;
+ ASN1BOOL audioLayer3;
+ ASN1BOOL audioSampling32k;
+ ASN1BOOL audioSampling44k1;
+ ASN1BOOL audioSampling48k;
+ ASN1BOOL singleChannel;
+ ASN1BOOL twoChannels;
+ ASN1USINT bitRate;
+} H245IS11172AudioCapability;
+
+EXTERN int asn1PE_H245IS11172AudioCapability (OOCTXT* pctxt, H245IS11172AudioCapability* pvalue);
+
+EXTERN int asn1PD_H245IS11172AudioCapability (OOCTXT* pctxt, H245IS11172AudioCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* IS13818AudioCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245IS13818AudioCapability {
+ ASN1BOOL audioLayer1;
+ ASN1BOOL audioLayer2;
+ ASN1BOOL audioLayer3;
+ ASN1BOOL audioSampling16k;
+ ASN1BOOL audioSampling22k05;
+ ASN1BOOL audioSampling24k;
+ ASN1BOOL audioSampling32k;
+ ASN1BOOL audioSampling44k1;
+ ASN1BOOL audioSampling48k;
+ ASN1BOOL singleChannel;
+ ASN1BOOL twoChannels;
+ ASN1BOOL threeChannels2_1;
+ ASN1BOOL threeChannels3_0;
+ ASN1BOOL fourChannels2_0_2_0;
+ ASN1BOOL fourChannels2_2;
+ ASN1BOOL fourChannels3_1;
+ ASN1BOOL fiveChannels3_0_2_0;
+ ASN1BOOL fiveChannels3_2;
+ ASN1BOOL lowFrequencyEnhancement;
+ ASN1BOOL multilingual;
+ ASN1USINT bitRate;
+} H245IS13818AudioCapability;
+
+EXTERN int asn1PE_H245IS13818AudioCapability (OOCTXT* pctxt, H245IS13818AudioCapability* pvalue);
+
+EXTERN int asn1PD_H245IS13818AudioCapability (OOCTXT* pctxt, H245IS13818AudioCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* G7231AnnexCCapability_g723AnnexCAudioMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245G7231AnnexCCapability_g723AnnexCAudioMode {
+ ASN1UINT8 highRateMode0;
+ ASN1UINT8 highRateMode1;
+ ASN1UINT8 lowRateMode0;
+ ASN1UINT8 lowRateMode1;
+ ASN1UINT8 sidMode0;
+ ASN1UINT8 sidMode1;
+} H245G7231AnnexCCapability_g723AnnexCAudioMode;
+
+EXTERN int asn1PE_H245G7231AnnexCCapability_g723AnnexCAudioMode (OOCTXT* pctxt, H245G7231AnnexCCapability_g723AnnexCAudioMode* pvalue);
+
+EXTERN int asn1PD_H245G7231AnnexCCapability_g723AnnexCAudioMode (OOCTXT* pctxt, H245G7231AnnexCCapability_g723AnnexCAudioMode* pvalue);
+
+/**************************************************************/
+/* */
+/* G7231AnnexCCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245G7231AnnexCCapability {
+ struct {
+ unsigned g723AnnexCAudioModePresent : 1;
+ } m;
+ ASN1USINT maxAl_sduAudioFrames;
+ ASN1BOOL silenceSuppression;
+ H245G7231AnnexCCapability_g723AnnexCAudioMode g723AnnexCAudioMode;
+} H245G7231AnnexCCapability;
+
+EXTERN int asn1PE_H245G7231AnnexCCapability (OOCTXT* pctxt, H245G7231AnnexCCapability* pvalue);
+
+EXTERN int asn1PD_H245G7231AnnexCCapability (OOCTXT* pctxt, H245G7231AnnexCCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* GSMAudioCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245GSMAudioCapability {
+ ASN1USINT audioUnitSize;
+ ASN1BOOL comfortNoise;
+ ASN1BOOL scrambled;
+} H245GSMAudioCapability;
+
+EXTERN int asn1PE_H245GSMAudioCapability (OOCTXT* pctxt, H245GSMAudioCapability* pvalue);
+
+EXTERN int asn1PD_H245GSMAudioCapability (OOCTXT* pctxt, H245GSMAudioCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* G729Extensions */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245G729Extensions {
+ struct {
+ unsigned audioUnitPresent : 1;
+ } m;
+ ASN1USINT audioUnit;
+ ASN1BOOL annexA;
+ ASN1BOOL annexB;
+ ASN1BOOL annexD;
+ ASN1BOOL annexE;
+ ASN1BOOL annexF;
+ ASN1BOOL annexG;
+ ASN1BOOL annexH;
+} H245G729Extensions;
+
+EXTERN int asn1PE_H245G729Extensions (OOCTXT* pctxt, H245G729Extensions* pvalue);
+
+EXTERN int asn1PD_H245G729Extensions (OOCTXT* pctxt, H245G729Extensions* pvalue);
+
+/**************************************************************/
+/* */
+/* VBDCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245VBDCapability {
+ struct H245AudioCapability *type;
+} H245VBDCapability;
+
+EXTERN int asn1PE_H245VBDCapability (OOCTXT* pctxt, H245VBDCapability* pvalue);
+
+EXTERN int asn1PD_H245VBDCapability (OOCTXT* pctxt, H245VBDCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* NoPTAudioTelephonyEventCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NoPTAudioTelephonyEventCapability {
+ ASN1GeneralString audioTelephoneEvent;
+} H245NoPTAudioTelephonyEventCapability;
+
+EXTERN int asn1PE_H245NoPTAudioTelephonyEventCapability (OOCTXT* pctxt, H245NoPTAudioTelephonyEventCapability* pvalue);
+
+EXTERN int asn1PD_H245NoPTAudioTelephonyEventCapability (OOCTXT* pctxt, H245NoPTAudioTelephonyEventCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* NoPTAudioToneCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NoPTAudioToneCapability {
+ ASN1OCTET __dummy__;
+} H245NoPTAudioToneCapability;
+
+EXTERN int asn1PE_H245NoPTAudioToneCapability (OOCTXT* pctxt, H245NoPTAudioToneCapability* pvalue);
+
+EXTERN int asn1PD_H245NoPTAudioToneCapability (OOCTXT* pctxt, H245NoPTAudioToneCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* AudioCapability */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245AudioCapability_nonStandard 1
+#define T_H245AudioCapability_g711Alaw64k 2
+#define T_H245AudioCapability_g711Alaw56k 3
+#define T_H245AudioCapability_g711Ulaw64k 4
+#define T_H245AudioCapability_g711Ulaw56k 5
+#define T_H245AudioCapability_g722_64k 6
+#define T_H245AudioCapability_g722_56k 7
+#define T_H245AudioCapability_g722_48k 8
+#define T_H245AudioCapability_g7231 9
+#define T_H245AudioCapability_g728 10
+#define T_H245AudioCapability_g729 11
+#define T_H245AudioCapability_g729AnnexA 12
+#define T_H245AudioCapability_is11172AudioCapability 13
+#define T_H245AudioCapability_is13818AudioCapability 14
+#define T_H245AudioCapability_g729wAnnexB 15
+#define T_H245AudioCapability_g729AnnexAwAnnexB 16
+#define T_H245AudioCapability_g7231AnnexCCapability 17
+#define T_H245AudioCapability_gsmFullRate 18
+#define T_H245AudioCapability_gsmHalfRate 19
+#define T_H245AudioCapability_gsmEnhancedFullRate 20
+#define T_H245AudioCapability_genericAudioCapability 21
+#define T_H245AudioCapability_g729Extensions 22
+#define T_H245AudioCapability_vbd 23
+#define T_H245AudioCapability_audioTelephonyEvent 24
+#define T_H245AudioCapability_audioTone 25
+#define T_H245AudioCapability_extElem1 26
+
+typedef struct EXTERN H245AudioCapability {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ ASN1USINT g711Alaw64k;
+ /* t = 3 */
+ ASN1USINT g711Alaw56k;
+ /* t = 4 */
+ ASN1USINT g711Ulaw64k;
+ /* t = 5 */
+ ASN1USINT g711Ulaw56k;
+ /* t = 6 */
+ ASN1USINT g722_64k;
+ /* t = 7 */
+ ASN1USINT g722_56k;
+ /* t = 8 */
+ ASN1USINT g722_48k;
+ /* t = 9 */
+ H245AudioCapability_g7231 *g7231;
+ /* t = 10 */
+ ASN1USINT g728;
+ /* t = 11 */
+ ASN1USINT g729;
+ /* t = 12 */
+ ASN1USINT g729AnnexA;
+ /* t = 13 */
+ H245IS11172AudioCapability *is11172AudioCapability;
+ /* t = 14 */
+ H245IS13818AudioCapability *is13818AudioCapability;
+ /* t = 15 */
+ ASN1USINT g729wAnnexB;
+ /* t = 16 */
+ ASN1USINT g729AnnexAwAnnexB;
+ /* t = 17 */
+ H245G7231AnnexCCapability *g7231AnnexCCapability;
+ /* t = 18 */
+ H245GSMAudioCapability *gsmFullRate;
+ /* t = 19 */
+ H245GSMAudioCapability *gsmHalfRate;
+ /* t = 20 */
+ H245GSMAudioCapability *gsmEnhancedFullRate;
+ /* t = 21 */
+ H245GenericCapability *genericAudioCapability;
+ /* t = 22 */
+ H245G729Extensions *g729Extensions;
+ /* t = 23 */
+ H245VBDCapability *vbd;
+ /* t = 24 */
+ H245NoPTAudioTelephonyEventCapability *audioTelephonyEvent;
+ /* t = 25 */
+ H245NoPTAudioToneCapability *audioTone;
+ /* t = 26 */
+ } u;
+} H245AudioCapability;
+
+EXTERN int asn1PE_H245AudioCapability (OOCTXT* pctxt, H245AudioCapability* pvalue);
+
+EXTERN int asn1PD_H245AudioCapability (OOCTXT* pctxt, H245AudioCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* Capability_h233EncryptionReceiveCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245Capability_h233EncryptionReceiveCapability {
+ ASN1UINT8 h233IVResponseTime;
+} H245Capability_h233EncryptionReceiveCapability;
+
+EXTERN int asn1PE_H245Capability_h233EncryptionReceiveCapability (OOCTXT* pctxt, H245Capability_h233EncryptionReceiveCapability* pvalue);
+
+EXTERN int asn1PD_H245Capability_h233EncryptionReceiveCapability (OOCTXT* pctxt, H245Capability_h233EncryptionReceiveCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH245NonStandardParameter */
+/* */
+/**************************************************************/
+
+/* List of H245NonStandardParameter */
+typedef DList H245_SeqOfH245NonStandardParameter;
+
+EXTERN int asn1PE_H245_SeqOfH245NonStandardParameter (OOCTXT* pctxt, H245_SeqOfH245NonStandardParameter* pvalue);
+
+EXTERN int asn1PD_H245_SeqOfH245NonStandardParameter (OOCTXT* pctxt, H245_SeqOfH245NonStandardParameter* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245ConferenceCapability {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned videoIndicateMixingCapabilityPresent : 1;
+ unsigned multipointVisualizationCapabilityPresent : 1;
+ } m;
+ H245_SeqOfH245NonStandardParameter nonStandardData;
+ ASN1BOOL chairControlCapability;
+ ASN1BOOL videoIndicateMixingCapability;
+ ASN1BOOL multipointVisualizationCapability;
+} H245ConferenceCapability;
+
+EXTERN int asn1PE_H245ConferenceCapability (OOCTXT* pctxt, H245ConferenceCapability* pvalue);
+
+EXTERN int asn1PD_H245ConferenceCapability (OOCTXT* pctxt, H245ConferenceCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* MediaEncryptionAlgorithm */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MediaEncryptionAlgorithm_nonStandard 1
+#define T_H245MediaEncryptionAlgorithm_algorithm 2
+#define T_H245MediaEncryptionAlgorithm_extElem1 3
+
+typedef struct EXTERN H245MediaEncryptionAlgorithm {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ ASN1OBJID *algorithm;
+ /* t = 3 */
+ } u;
+} H245MediaEncryptionAlgorithm;
+
+EXTERN int asn1PE_H245MediaEncryptionAlgorithm (OOCTXT* pctxt, H245MediaEncryptionAlgorithm* pvalue);
+
+EXTERN int asn1PD_H245MediaEncryptionAlgorithm (OOCTXT* pctxt, H245MediaEncryptionAlgorithm* pvalue);
+
+/**************************************************************/
+/* */
+/* EncryptionCapability */
+/* */
+/**************************************************************/
+
+/* List of H245MediaEncryptionAlgorithm */
+typedef DList H245EncryptionCapability;
+
+EXTERN int asn1PE_H245EncryptionCapability (OOCTXT* pctxt, H245EncryptionCapability* pvalue);
+
+EXTERN int asn1PD_H245EncryptionCapability (OOCTXT* pctxt, H245EncryptionCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* AuthenticationCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245AuthenticationCapability {
+ struct {
+ unsigned nonStandardPresent : 1;
+ unsigned antiSpamAlgorithmPresent : 1;
+ } m;
+ H245NonStandardParameter nonStandard;
+ ASN1OBJID antiSpamAlgorithm;
+} H245AuthenticationCapability;
+
+EXTERN int asn1PE_H245AuthenticationCapability (OOCTXT* pctxt, H245AuthenticationCapability* pvalue);
+
+EXTERN int asn1PD_H245AuthenticationCapability (OOCTXT* pctxt, H245AuthenticationCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* IntegrityCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245IntegrityCapability {
+ struct {
+ unsigned nonStandardPresent : 1;
+ } m;
+ H245NonStandardParameter nonStandard;
+} H245IntegrityCapability;
+
+EXTERN int asn1PE_H245IntegrityCapability (OOCTXT* pctxt, H245IntegrityCapability* pvalue);
+
+EXTERN int asn1PD_H245IntegrityCapability (OOCTXT* pctxt, H245IntegrityCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* EncryptionAuthenticationAndIntegrity */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245EncryptionAuthenticationAndIntegrity {
+ struct {
+ unsigned encryptionCapabilityPresent : 1;
+ unsigned authenticationCapabilityPresent : 1;
+ unsigned integrityCapabilityPresent : 1;
+ } m;
+ H245EncryptionCapability encryptionCapability;
+ H245AuthenticationCapability authenticationCapability;
+ H245IntegrityCapability integrityCapability;
+} H245EncryptionAuthenticationAndIntegrity;
+
+EXTERN int asn1PE_H245EncryptionAuthenticationAndIntegrity (OOCTXT* pctxt, H245EncryptionAuthenticationAndIntegrity* pvalue);
+
+EXTERN int asn1PD_H245EncryptionAuthenticationAndIntegrity (OOCTXT* pctxt, H245EncryptionAuthenticationAndIntegrity* pvalue);
+
+/**************************************************************/
+/* */
+/* H235SecurityCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H235SecurityCapability {
+ H245EncryptionAuthenticationAndIntegrity encryptionAuthenticationAndIntegrity;
+ H245CapabilityTableEntryNumber mediaCapability;
+} H245H235SecurityCapability;
+
+EXTERN int asn1PE_H245H235SecurityCapability (OOCTXT* pctxt, H245H235SecurityCapability* pvalue);
+
+EXTERN int asn1PD_H245H235SecurityCapability (OOCTXT* pctxt, H245H235SecurityCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* UserInputCapability_nonStandard */
+/* */
+/**************************************************************/
+
+/* List of H245NonStandardParameter */
+typedef DList H245UserInputCapability_nonStandard;
+
+EXTERN int asn1PE_H245UserInputCapability_nonStandard (OOCTXT* pctxt, H245UserInputCapability_nonStandard* pvalue);
+
+EXTERN int asn1PD_H245UserInputCapability_nonStandard (OOCTXT* pctxt, H245UserInputCapability_nonStandard* pvalue);
+
+/**************************************************************/
+/* */
+/* UserInputCapability */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245UserInputCapability_nonStandard 1
+#define T_H245UserInputCapability_basicString 2
+#define T_H245UserInputCapability_iA5String 3
+#define T_H245UserInputCapability_generalString 4
+#define T_H245UserInputCapability_dtmf 5
+#define T_H245UserInputCapability_hookflash 6
+#define T_H245UserInputCapability_extendedAlphanumeric 7
+#define T_H245UserInputCapability_extElem1 8
+
+typedef struct EXTERN H245UserInputCapability {
+ int t;
+ union {
+ /* t = 1 */
+ H245UserInputCapability_nonStandard *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ } u;
+} H245UserInputCapability;
+
+EXTERN int asn1PE_H245UserInputCapability (OOCTXT* pctxt, H245UserInputCapability* pvalue);
+
+EXTERN int asn1PD_H245UserInputCapability (OOCTXT* pctxt, H245UserInputCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexFormat */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MultiplexFormat_nonStandard 1
+#define T_H245MultiplexFormat_h222Capability 2
+#define T_H245MultiplexFormat_h223Capability 3
+#define T_H245MultiplexFormat_extElem1 4
+
+typedef struct EXTERN H245MultiplexFormat {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ H245H222Capability *h222Capability;
+ /* t = 3 */
+ H245H223Capability *h223Capability;
+ /* t = 4 */
+ } u;
+} H245MultiplexFormat;
+
+EXTERN int asn1PE_H245MultiplexFormat (OOCTXT* pctxt, H245MultiplexFormat* pvalue);
+
+EXTERN int asn1PD_H245MultiplexFormat (OOCTXT* pctxt, H245MultiplexFormat* pvalue);
+
+/**************************************************************/
+/* */
+/* AlternativeCapabilitySet */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245AlternativeCapabilitySet {
+ ASN1UINT n;
+ H245CapabilityTableEntryNumber elem[256];
+} H245AlternativeCapabilitySet;
+
+EXTERN int asn1PE_H245AlternativeCapabilitySet (OOCTXT* pctxt, H245AlternativeCapabilitySet* pvalue);
+
+EXTERN int asn1PD_H245AlternativeCapabilitySet (OOCTXT* pctxt, H245AlternativeCapabilitySet* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexedStreamCapability_capabilityOnMuxStream */
+/* */
+/**************************************************************/
+
+/* List of H245AlternativeCapabilitySet */
+typedef DList H245MultiplexedStreamCapability_capabilityOnMuxStream;
+
+EXTERN int asn1PE_H245MultiplexedStreamCapability_capabilityOnMuxStream (OOCTXT* pctxt, H245MultiplexedStreamCapability_capabilityOnMuxStream* pvalue);
+
+EXTERN int asn1PD_H245MultiplexedStreamCapability_capabilityOnMuxStream (OOCTXT* pctxt, H245MultiplexedStreamCapability_capabilityOnMuxStream* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexedStreamCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplexedStreamCapability {
+ struct {
+ unsigned capabilityOnMuxStreamPresent : 1;
+ } m;
+ H245MultiplexFormat multiplexFormat;
+ ASN1BOOL controlOnMuxStream;
+ H245MultiplexedStreamCapability_capabilityOnMuxStream capabilityOnMuxStream;
+} H245MultiplexedStreamCapability;
+
+EXTERN int asn1PE_H245MultiplexedStreamCapability (OOCTXT* pctxt, H245MultiplexedStreamCapability* pvalue);
+
+EXTERN int asn1PD_H245MultiplexedStreamCapability (OOCTXT* pctxt, H245MultiplexedStreamCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* AudioTelephonyEventCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245AudioTelephonyEventCapability {
+ ASN1UINT8 dynamicRTPPayloadType;
+ ASN1GeneralString audioTelephoneEvent;
+} H245AudioTelephonyEventCapability;
+
+EXTERN int asn1PE_H245AudioTelephonyEventCapability (OOCTXT* pctxt, H245AudioTelephonyEventCapability* pvalue);
+
+EXTERN int asn1PD_H245AudioTelephonyEventCapability (OOCTXT* pctxt, H245AudioTelephonyEventCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* AudioToneCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245AudioToneCapability {
+ ASN1UINT8 dynamicRTPPayloadType;
+} H245AudioToneCapability;
+
+EXTERN int asn1PE_H245AudioToneCapability (OOCTXT* pctxt, H245AudioToneCapability* pvalue);
+
+EXTERN int asn1PD_H245AudioToneCapability (OOCTXT* pctxt, H245AudioToneCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* FECCapability_rfc2733_separateStream */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245FECCapability_rfc2733_separateStream {
+ ASN1BOOL separatePort;
+ ASN1BOOL samePort;
+} H245FECCapability_rfc2733_separateStream;
+
+EXTERN int asn1PE_H245FECCapability_rfc2733_separateStream (OOCTXT* pctxt, H245FECCapability_rfc2733_separateStream* pvalue);
+
+EXTERN int asn1PD_H245FECCapability_rfc2733_separateStream (OOCTXT* pctxt, H245FECCapability_rfc2733_separateStream* pvalue);
+
+/**************************************************************/
+/* */
+/* FECCapability_rfc2733 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245FECCapability_rfc2733 {
+ ASN1BOOL redundancyEncoding;
+ H245FECCapability_rfc2733_separateStream separateStream;
+} H245FECCapability_rfc2733;
+
+EXTERN int asn1PE_H245FECCapability_rfc2733 (OOCTXT* pctxt, H245FECCapability_rfc2733* pvalue);
+
+EXTERN int asn1PD_H245FECCapability_rfc2733 (OOCTXT* pctxt, H245FECCapability_rfc2733* pvalue);
+
+/**************************************************************/
+/* */
+/* FECCapability */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245FECCapability_rfc2733 1
+#define T_H245FECCapability_extElem1 2
+
+typedef struct EXTERN H245FECCapability {
+ int t;
+ union {
+ /* t = 1 */
+ H245FECCapability_rfc2733 *rfc2733;
+ /* t = 2 */
+ } u;
+} H245FECCapability;
+
+EXTERN int asn1PE_H245FECCapability (OOCTXT* pctxt, H245FECCapability* pvalue);
+
+EXTERN int asn1PD_H245FECCapability (OOCTXT* pctxt, H245FECCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamCapability_capabilities */
+/* */
+/**************************************************************/
+
+/* List of H245AlternativeCapabilitySet */
+typedef DList H245MultiplePayloadStreamCapability_capabilities;
+
+EXTERN int asn1PE_H245MultiplePayloadStreamCapability_capabilities (OOCTXT* pctxt, H245MultiplePayloadStreamCapability_capabilities* pvalue);
+
+EXTERN int asn1PD_H245MultiplePayloadStreamCapability_capabilities (OOCTXT* pctxt, H245MultiplePayloadStreamCapability_capabilities* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplePayloadStreamCapability {
+ H245MultiplePayloadStreamCapability_capabilities capabilities;
+} H245MultiplePayloadStreamCapability;
+
+EXTERN int asn1PE_H245MultiplePayloadStreamCapability (OOCTXT* pctxt, H245MultiplePayloadStreamCapability* pvalue);
+
+EXTERN int asn1PD_H245MultiplePayloadStreamCapability (OOCTXT* pctxt, H245MultiplePayloadStreamCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* Capability */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245Capability_nonStandard 1
+#define T_H245Capability_receiveVideoCapability 2
+#define T_H245Capability_transmitVideoCapability 3
+#define T_H245Capability_receiveAndTransmitVideoCapability 4
+#define T_H245Capability_receiveAudioCapability 5
+#define T_H245Capability_transmitAudioCapability 6
+#define T_H245Capability_receiveAndTransmitAudioCapability 7
+#define T_H245Capability_receiveDataApplicationCapability 8
+#define T_H245Capability_transmitDataApplicationCapability 9
+#define T_H245Capability_receiveAndTransmitDataApplicationCapability 10
+#define T_H245Capability_h233EncryptionTransmitCapability 11
+#define T_H245Capability_h233EncryptionReceiveCapability 12
+#define T_H245Capability_conferenceCapability 13
+#define T_H245Capability_h235SecurityCapability 14
+#define T_H245Capability_maxPendingReplacementFor 15
+#define T_H245Capability_receiveUserInputCapability 16
+#define T_H245Capability_transmitUserInputCapability 17
+#define T_H245Capability_receiveAndTransmitUserInputCapability 18
+#define T_H245Capability_genericControlCapability 19
+#define T_H245Capability_receiveMultiplexedStreamCapability 20
+#define T_H245Capability_transmitMultiplexedStreamCapability 21
+#define T_H245Capability_receiveAndTransmitMultiplexedStreamCapability 22
+#define T_H245Capability_receiveRTPAudioTelephonyEventCapability 23
+#define T_H245Capability_receiveRTPAudioToneCapability 24
+#define T_H245Capability_fecCapability 25
+#define T_H245Capability_multiplePayloadStreamCapability 26
+#define T_H245Capability_extElem1 27
+
+typedef struct EXTERN H245Capability {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ H245VideoCapability *receiveVideoCapability;
+ /* t = 3 */
+ H245VideoCapability *transmitVideoCapability;
+ /* t = 4 */
+ H245VideoCapability *receiveAndTransmitVideoCapability;
+ /* t = 5 */
+ H245AudioCapability *receiveAudioCapability;
+ /* t = 6 */
+ H245AudioCapability *transmitAudioCapability;
+ /* t = 7 */
+ H245AudioCapability *receiveAndTransmitAudioCapability;
+ /* t = 8 */
+ H245DataApplicationCapability *receiveDataApplicationCapability;
+ /* t = 9 */
+ H245DataApplicationCapability *transmitDataApplicationCapability;
+ /* t = 10 */
+ H245DataApplicationCapability *receiveAndTransmitDataApplicationCapability;
+ /* t = 11 */
+ ASN1BOOL h233EncryptionTransmitCapability;
+ /* t = 12 */
+ H245Capability_h233EncryptionReceiveCapability *h233EncryptionReceiveCapability;
+ /* t = 13 */
+ H245ConferenceCapability *conferenceCapability;
+ /* t = 14 */
+ H245H235SecurityCapability *h235SecurityCapability;
+ /* t = 15 */
+ ASN1UINT8 maxPendingReplacementFor;
+ /* t = 16 */
+ H245UserInputCapability *receiveUserInputCapability;
+ /* t = 17 */
+ H245UserInputCapability *transmitUserInputCapability;
+ /* t = 18 */
+ H245UserInputCapability *receiveAndTransmitUserInputCapability;
+ /* t = 19 */
+ H245GenericCapability *genericControlCapability;
+ /* t = 20 */
+ H245MultiplexedStreamCapability *receiveMultiplexedStreamCapability;
+ /* t = 21 */
+ H245MultiplexedStreamCapability *transmitMultiplexedStreamCapability;
+ /* t = 22 */
+ H245MultiplexedStreamCapability *receiveAndTransmitMultiplexedStreamCapability;
+ /* t = 23 */
+ H245AudioTelephonyEventCapability *receiveRTPAudioTelephonyEventCapability;
+ /* t = 24 */
+ H245AudioToneCapability *receiveRTPAudioToneCapability;
+ /* t = 25 */
+ H245FECCapability *fecCapability;
+ /* t = 26 */
+ H245MultiplePayloadStreamCapability *multiplePayloadStreamCapability;
+ /* t = 27 */
+ } u;
+} H245Capability;
+
+EXTERN int asn1PE_H245Capability (OOCTXT* pctxt, H245Capability* pvalue);
+
+EXTERN int asn1PD_H245Capability (OOCTXT* pctxt, H245Capability* pvalue);
+
+/**************************************************************/
+/* */
+/* CapabilityTableEntry */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245CapabilityTableEntry {
+ struct {
+ unsigned capabilityPresent : 1;
+ } m;
+ H245CapabilityTableEntryNumber capabilityTableEntryNumber;
+ H245Capability capability;
+} H245CapabilityTableEntry;
+
+EXTERN int asn1PE_H245CapabilityTableEntry (OOCTXT* pctxt, H245CapabilityTableEntry* pvalue);
+
+EXTERN int asn1PD_H245CapabilityTableEntry (OOCTXT* pctxt, H245CapabilityTableEntry* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySet_capabilityTable */
+/* */
+/**************************************************************/
+
+/* List of H245CapabilityTableEntry */
+typedef DList H245TerminalCapabilitySet_capabilityTable;
+
+EXTERN int asn1PE_H245TerminalCapabilitySet_capabilityTable (OOCTXT* pctxt, H245TerminalCapabilitySet_capabilityTable* pvalue);
+
+EXTERN int asn1PD_H245TerminalCapabilitySet_capabilityTable (OOCTXT* pctxt, H245TerminalCapabilitySet_capabilityTable* pvalue);
+
+/**************************************************************/
+/* */
+/* CapabilityDescriptorNumber */
+/* */
+/**************************************************************/
+
+typedef ASN1UINT8 H245CapabilityDescriptorNumber;
+
+EXTERN int asn1PE_H245CapabilityDescriptorNumber (OOCTXT* pctxt, H245CapabilityDescriptorNumber value);
+
+EXTERN int asn1PD_H245CapabilityDescriptorNumber (OOCTXT* pctxt, H245CapabilityDescriptorNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* CapabilityDescriptor_simultaneousCapabilities */
+/* */
+/**************************************************************/
+
+/* List of H245AlternativeCapabilitySet */
+typedef DList H245CapabilityDescriptor_simultaneousCapabilities;
+
+EXTERN int asn1PE_H245CapabilityDescriptor_simultaneousCapabilities (OOCTXT* pctxt, H245CapabilityDescriptor_simultaneousCapabilities* pvalue);
+
+EXTERN int asn1PD_H245CapabilityDescriptor_simultaneousCapabilities (OOCTXT* pctxt, H245CapabilityDescriptor_simultaneousCapabilities* pvalue);
+
+/**************************************************************/
+/* */
+/* CapabilityDescriptor */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245CapabilityDescriptor {
+ struct {
+ unsigned simultaneousCapabilitiesPresent : 1;
+ } m;
+ H245CapabilityDescriptorNumber capabilityDescriptorNumber;
+ H245CapabilityDescriptor_simultaneousCapabilities simultaneousCapabilities;
+} H245CapabilityDescriptor;
+
+EXTERN int asn1PE_H245CapabilityDescriptor (OOCTXT* pctxt, H245CapabilityDescriptor* pvalue);
+
+EXTERN int asn1PD_H245CapabilityDescriptor (OOCTXT* pctxt, H245CapabilityDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySet_capabilityDescriptors */
+/* */
+/**************************************************************/
+
+/* List of H245CapabilityDescriptor */
+typedef DList H245TerminalCapabilitySet_capabilityDescriptors;
+
+EXTERN int asn1PE_H245TerminalCapabilitySet_capabilityDescriptors (OOCTXT* pctxt, H245TerminalCapabilitySet_capabilityDescriptors* pvalue);
+
+EXTERN int asn1PD_H245TerminalCapabilitySet_capabilityDescriptors (OOCTXT* pctxt, H245TerminalCapabilitySet_capabilityDescriptors* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySet */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245TerminalCapabilitySet {
+ struct {
+ unsigned multiplexCapabilityPresent : 1;
+ unsigned capabilityTablePresent : 1;
+ unsigned capabilityDescriptorsPresent : 1;
+ } m;
+ H245SequenceNumber sequenceNumber;
+ ASN1OBJID protocolIdentifier;
+ H245MultiplexCapability multiplexCapability;
+ H245TerminalCapabilitySet_capabilityTable capabilityTable;
+ H245TerminalCapabilitySet_capabilityDescriptors capabilityDescriptors;
+} H245TerminalCapabilitySet;
+
+EXTERN int asn1PE_H245TerminalCapabilitySet (OOCTXT* pctxt, H245TerminalCapabilitySet* pvalue);
+
+EXTERN int asn1PD_H245TerminalCapabilitySet (OOCTXT* pctxt, H245TerminalCapabilitySet* pvalue);
+
+/**************************************************************/
+/* */
+/* LogicalChannelNumber */
+/* */
+/**************************************************************/
+
+typedef ASN1USINT H245LogicalChannelNumber;
+
+EXTERN int asn1PE_H245LogicalChannelNumber (OOCTXT* pctxt, H245LogicalChannelNumber value);
+
+EXTERN int asn1PD_H245LogicalChannelNumber (OOCTXT* pctxt, H245LogicalChannelNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* EncryptionMode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245EncryptionMode_nonStandard 1
+#define T_H245EncryptionMode_h233Encryption 2
+#define T_H245EncryptionMode_extElem1 3
+
+typedef struct EXTERN H245EncryptionMode {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ } u;
+} H245EncryptionMode;
+
+EXTERN int asn1PE_H245EncryptionMode (OOCTXT* pctxt, H245EncryptionMode* pvalue);
+
+EXTERN int asn1PD_H245EncryptionMode (OOCTXT* pctxt, H245EncryptionMode* pvalue);
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingElement */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RedundancyEncodingElement {
+ struct {
+ unsigned payloadTypePresent : 1;
+ } m;
+ struct H245DataType *dataType;
+ ASN1UINT8 payloadType;
+} H245RedundancyEncodingElement;
+
+EXTERN int asn1PE_H245RedundancyEncodingElement (OOCTXT* pctxt, H245RedundancyEncodingElement* pvalue);
+
+EXTERN int asn1PD_H245RedundancyEncodingElement (OOCTXT* pctxt, H245RedundancyEncodingElement* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH245RedundancyEncodingElement */
+/* */
+/**************************************************************/
+
+/* List of H245RedundancyEncodingElement */
+typedef DList H245_SeqOfH245RedundancyEncodingElement;
+
+EXTERN int asn1PE_H245_SeqOfH245RedundancyEncodingElement (OOCTXT* pctxt, H245_SeqOfH245RedundancyEncodingElement* pvalue);
+
+EXTERN int asn1PD_H245_SeqOfH245RedundancyEncodingElement (OOCTXT* pctxt, H245_SeqOfH245RedundancyEncodingElement* pvalue);
+
+/**************************************************************/
+/* */
+/* RedundancyEncoding_rtpRedundancyEncoding */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RedundancyEncoding_rtpRedundancyEncoding {
+ struct {
+ unsigned primaryPresent : 1;
+ unsigned secondaryPresent : 1;
+ } m;
+ H245RedundancyEncodingElement primary;
+ H245_SeqOfH245RedundancyEncodingElement secondary;
+} H245RedundancyEncoding_rtpRedundancyEncoding;
+
+EXTERN int asn1PE_H245RedundancyEncoding_rtpRedundancyEncoding (OOCTXT* pctxt, H245RedundancyEncoding_rtpRedundancyEncoding* pvalue);
+
+EXTERN int asn1PD_H245RedundancyEncoding_rtpRedundancyEncoding (OOCTXT* pctxt, H245RedundancyEncoding_rtpRedundancyEncoding* pvalue);
+
+/**************************************************************/
+/* */
+/* RedundancyEncoding */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RedundancyEncoding {
+ struct {
+ unsigned secondaryEncodingPresent : 1;
+ unsigned rtpRedundancyEncodingPresent : 1;
+ } m;
+ H245RedundancyEncodingMethod redundancyEncodingMethod;
+ struct H245DataType *secondaryEncoding;
+ H245RedundancyEncoding_rtpRedundancyEncoding rtpRedundancyEncoding;
+} H245RedundancyEncoding;
+
+EXTERN int asn1PE_H245RedundancyEncoding (OOCTXT* pctxt, H245RedundancyEncoding* pvalue);
+
+EXTERN int asn1PD_H245RedundancyEncoding (OOCTXT* pctxt, H245RedundancyEncoding* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamElement */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplePayloadStreamElement {
+ struct {
+ unsigned payloadTypePresent : 1;
+ } m;
+ struct H245DataType *dataType;
+ ASN1UINT8 payloadType;
+} H245MultiplePayloadStreamElement;
+
+EXTERN int asn1PE_H245MultiplePayloadStreamElement (OOCTXT* pctxt, H245MultiplePayloadStreamElement* pvalue);
+
+EXTERN int asn1PD_H245MultiplePayloadStreamElement (OOCTXT* pctxt, H245MultiplePayloadStreamElement* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH245MultiplePayloadStreamElement */
+/* */
+/**************************************************************/
+
+/* List of H245MultiplePayloadStreamElement */
+typedef DList H245_SeqOfH245MultiplePayloadStreamElement;
+
+EXTERN int asn1PE_H245_SeqOfH245MultiplePayloadStreamElement (OOCTXT* pctxt, H245_SeqOfH245MultiplePayloadStreamElement* pvalue);
+
+EXTERN int asn1PD_H245_SeqOfH245MultiplePayloadStreamElement (OOCTXT* pctxt, H245_SeqOfH245MultiplePayloadStreamElement* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStream */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplePayloadStream {
+ H245_SeqOfH245MultiplePayloadStreamElement elements;
+} H245MultiplePayloadStream;
+
+EXTERN int asn1PE_H245MultiplePayloadStream (OOCTXT* pctxt, H245MultiplePayloadStream* pvalue);
+
+EXTERN int asn1PD_H245MultiplePayloadStream (OOCTXT* pctxt, H245MultiplePayloadStream* pvalue);
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733_mode_separateStream_differentPort */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245FECData_rfc2733_mode_separateStream_differentPort {
+ struct {
+ unsigned protectedPayloadTypePresent : 1;
+ } m;
+ ASN1UINT8 protectedSessionID;
+ ASN1UINT8 protectedPayloadType;
+} H245FECData_rfc2733_mode_separateStream_differentPort;
+
+EXTERN int asn1PE_H245FECData_rfc2733_mode_separateStream_differentPort (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream_differentPort* pvalue);
+
+EXTERN int asn1PD_H245FECData_rfc2733_mode_separateStream_differentPort (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream_differentPort* pvalue);
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733_mode_separateStream_samePort */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245FECData_rfc2733_mode_separateStream_samePort {
+ ASN1UINT8 protectedPayloadType;
+} H245FECData_rfc2733_mode_separateStream_samePort;
+
+EXTERN int asn1PE_H245FECData_rfc2733_mode_separateStream_samePort (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream_samePort* pvalue);
+
+EXTERN int asn1PD_H245FECData_rfc2733_mode_separateStream_samePort (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream_samePort* pvalue);
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733_mode_separateStream */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245FECData_rfc2733_mode_separateStream_differentPort 1
+#define T_H245FECData_rfc2733_mode_separateStream_samePort 2
+#define T_H245FECData_rfc2733_mode_separateStream_extElem1 3
+
+typedef struct EXTERN H245FECData_rfc2733_mode_separateStream {
+ int t;
+ union {
+ /* t = 1 */
+ H245FECData_rfc2733_mode_separateStream_differentPort *differentPort;
+ /* t = 2 */
+ H245FECData_rfc2733_mode_separateStream_samePort *samePort;
+ /* t = 3 */
+ } u;
+} H245FECData_rfc2733_mode_separateStream;
+
+EXTERN int asn1PE_H245FECData_rfc2733_mode_separateStream (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream* pvalue);
+
+EXTERN int asn1PD_H245FECData_rfc2733_mode_separateStream (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream* pvalue);
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733_mode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245FECData_rfc2733_mode_redundancyEncoding 1
+#define T_H245FECData_rfc2733_mode_separateStream 2
+#define T_H245FECData_rfc2733_mode_extElem1 3
+
+typedef struct EXTERN H245FECData_rfc2733_mode {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H245FECData_rfc2733_mode_separateStream *separateStream;
+ /* t = 3 */
+ } u;
+} H245FECData_rfc2733_mode;
+
+EXTERN int asn1PE_H245FECData_rfc2733_mode (OOCTXT* pctxt, H245FECData_rfc2733_mode* pvalue);
+
+EXTERN int asn1PD_H245FECData_rfc2733_mode (OOCTXT* pctxt, H245FECData_rfc2733_mode* pvalue);
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245FECData_rfc2733 {
+ H245FECData_rfc2733_mode mode;
+} H245FECData_rfc2733;
+
+EXTERN int asn1PE_H245FECData_rfc2733 (OOCTXT* pctxt, H245FECData_rfc2733* pvalue);
+
+EXTERN int asn1PD_H245FECData_rfc2733 (OOCTXT* pctxt, H245FECData_rfc2733* pvalue);
+
+/**************************************************************/
+/* */
+/* FECData */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245FECData_rfc2733 1
+
+typedef struct EXTERN H245FECData {
+ int t;
+ union {
+ /* t = 1 */
+ H245FECData_rfc2733 *rfc2733;
+ } u;
+} H245FECData;
+
+EXTERN int asn1PE_H245FECData (OOCTXT* pctxt, H245FECData* pvalue);
+
+EXTERN int asn1PD_H245FECData (OOCTXT* pctxt, H245FECData* pvalue);
+
+/**************************************************************/
+/* */
+/* H235Media_mediaType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H235Media_mediaType_nonStandard 1
+#define T_H245H235Media_mediaType_videoData 2
+#define T_H245H235Media_mediaType_audioData 3
+#define T_H245H235Media_mediaType_data 4
+#define T_H245H235Media_mediaType_redundancyEncoding 5
+#define T_H245H235Media_mediaType_multiplePayloadStream 6
+#define T_H245H235Media_mediaType_fec 7
+#define T_H245H235Media_mediaType_extElem1 8
+
+typedef struct EXTERN H245H235Media_mediaType {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ H245VideoCapability *videoData;
+ /* t = 3 */
+ H245AudioCapability *audioData;
+ /* t = 4 */
+ H245DataApplicationCapability *data;
+ /* t = 5 */
+ H245RedundancyEncoding *redundancyEncoding;
+ /* t = 6 */
+ H245MultiplePayloadStream *multiplePayloadStream;
+ /* t = 7 */
+ H245FECData *fec;
+ /* t = 8 */
+ } u;
+} H245H235Media_mediaType;
+
+EXTERN int asn1PE_H245H235Media_mediaType (OOCTXT* pctxt, H245H235Media_mediaType* pvalue);
+
+EXTERN int asn1PD_H245H235Media_mediaType (OOCTXT* pctxt, H245H235Media_mediaType* pvalue);
+
+/**************************************************************/
+/* */
+/* H235Media */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H235Media {
+ H245EncryptionAuthenticationAndIntegrity encryptionAuthenticationAndIntegrity;
+ H245H235Media_mediaType mediaType;
+} H245H235Media;
+
+EXTERN int asn1PE_H245H235Media (OOCTXT* pctxt, H245H235Media* pvalue);
+
+EXTERN int asn1PD_H245H235Media (OOCTXT* pctxt, H245H235Media* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexedStreamParameter */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplexedStreamParameter {
+ H245MultiplexFormat multiplexFormat;
+ ASN1BOOL controlOnMuxStream;
+} H245MultiplexedStreamParameter;
+
+EXTERN int asn1PE_H245MultiplexedStreamParameter (OOCTXT* pctxt, H245MultiplexedStreamParameter* pvalue);
+
+EXTERN int asn1PD_H245MultiplexedStreamParameter (OOCTXT* pctxt, H245MultiplexedStreamParameter* pvalue);
+
+/**************************************************************/
+/* */
+/* DataType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245DataType_nonStandard 1
+#define T_H245DataType_nullData 2
+#define T_H245DataType_videoData 3
+#define T_H245DataType_audioData 4
+#define T_H245DataType_data 5
+#define T_H245DataType_encryptionData 6
+#define T_H245DataType_h235Control 7
+#define T_H245DataType_h235Media 8
+#define T_H245DataType_multiplexedStream 9
+#define T_H245DataType_redundancyEncoding 10
+#define T_H245DataType_multiplePayloadStream 11
+#define T_H245DataType_fec 12
+#define T_H245DataType_extElem1 13
+
+typedef struct EXTERN H245DataType {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ H245VideoCapability *videoData;
+ /* t = 4 */
+ H245AudioCapability *audioData;
+ /* t = 5 */
+ H245DataApplicationCapability *data;
+ /* t = 6 */
+ H245EncryptionMode *encryptionData;
+ /* t = 7 */
+ H245NonStandardParameter *h235Control;
+ /* t = 8 */
+ H245H235Media *h235Media;
+ /* t = 9 */
+ H245MultiplexedStreamParameter *multiplexedStream;
+ /* t = 10 */
+ H245RedundancyEncoding *redundancyEncoding;
+ /* t = 11 */
+ H245MultiplePayloadStream *multiplePayloadStream;
+ /* t = 12 */
+ H245FECData *fec;
+ /* t = 13 */
+ } u;
+} H245DataType;
+
+EXTERN int asn1PE_H245DataType (OOCTXT* pctxt, H245DataType* pvalue);
+
+EXTERN int asn1PD_H245DataType (OOCTXT* pctxt, H245DataType* pvalue);
+
+/**************************************************************/
+/* */
+/* H222LogicalChannelParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H222LogicalChannelParameters {
+ struct {
+ unsigned pcr_pidPresent : 1;
+ unsigned programDescriptorsPresent : 1;
+ unsigned streamDescriptorsPresent : 1;
+ } m;
+ ASN1USINT resourceID;
+ ASN1USINT subChannelID;
+ ASN1USINT pcr_pid;
+ ASN1DynOctStr programDescriptors;
+ ASN1DynOctStr streamDescriptors;
+} H245H222LogicalChannelParameters;
+
+EXTERN int asn1PE_H245H222LogicalChannelParameters (OOCTXT* pctxt, H245H222LogicalChannelParameters* pvalue);
+
+EXTERN int asn1PD_H245H222LogicalChannelParameters (OOCTXT* pctxt, H245H222LogicalChannelParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* H223LogicalChannelParameters_adaptationLayerType_al3 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H223LogicalChannelParameters_adaptationLayerType_al3 {
+ ASN1UINT8 controlFieldOctets;
+ ASN1UINT sendBufferSize;
+} H245H223LogicalChannelParameters_adaptationLayerType_al3;
+
+EXTERN int asn1PE_H245H223LogicalChannelParameters_adaptationLayerType_al3 (OOCTXT* pctxt, H245H223LogicalChannelParameters_adaptationLayerType_al3* pvalue);
+
+EXTERN int asn1PD_H245H223LogicalChannelParameters_adaptationLayerType_al3 (OOCTXT* pctxt, H245H223LogicalChannelParameters_adaptationLayerType_al3* pvalue);
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters_transferMode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223AL1MParameters_transferMode_framed 1
+#define T_H245H223AL1MParameters_transferMode_unframed 2
+#define T_H245H223AL1MParameters_transferMode_extElem1 3
+
+typedef struct EXTERN H245H223AL1MParameters_transferMode {
+ int t;
+} H245H223AL1MParameters_transferMode;
+
+EXTERN int asn1PE_H245H223AL1MParameters_transferMode (OOCTXT* pctxt, H245H223AL1MParameters_transferMode* pvalue);
+
+EXTERN int asn1PD_H245H223AL1MParameters_transferMode (OOCTXT* pctxt, H245H223AL1MParameters_transferMode* pvalue);
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters_headerFEC */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223AL1MParameters_headerFEC_sebch16_7 1
+#define T_H245H223AL1MParameters_headerFEC_golay24_12 2
+#define T_H245H223AL1MParameters_headerFEC_extElem1 3
+
+typedef struct EXTERN H245H223AL1MParameters_headerFEC {
+ int t;
+} H245H223AL1MParameters_headerFEC;
+
+EXTERN int asn1PE_H245H223AL1MParameters_headerFEC (OOCTXT* pctxt, H245H223AL1MParameters_headerFEC* pvalue);
+
+EXTERN int asn1PD_H245H223AL1MParameters_headerFEC (OOCTXT* pctxt, H245H223AL1MParameters_headerFEC* pvalue);
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters_crcLength */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223AL1MParameters_crcLength_crc4bit 1
+#define T_H245H223AL1MParameters_crcLength_crc12bit 2
+#define T_H245H223AL1MParameters_crcLength_crc20bit 3
+#define T_H245H223AL1MParameters_crcLength_crc28bit 4
+#define T_H245H223AL1MParameters_crcLength_crc8bit 5
+#define T_H245H223AL1MParameters_crcLength_crc16bit 6
+#define T_H245H223AL1MParameters_crcLength_crc32bit 7
+#define T_H245H223AL1MParameters_crcLength_crcNotUsed 8
+#define T_H245H223AL1MParameters_crcLength_extElem1 9
+
+typedef struct EXTERN H245H223AL1MParameters_crcLength {
+ int t;
+} H245H223AL1MParameters_crcLength;
+
+EXTERN int asn1PE_H245H223AL1MParameters_crcLength (OOCTXT* pctxt, H245H223AL1MParameters_crcLength* pvalue);
+
+EXTERN int asn1PD_H245H223AL1MParameters_crcLength (OOCTXT* pctxt, H245H223AL1MParameters_crcLength* pvalue);
+
+/**************************************************************/
+/* */
+/* H223AnnexCArqParameters_numberOfRetransmissions */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223AnnexCArqParameters_numberOfRetransmissions_finite 1
+#define T_H245H223AnnexCArqParameters_numberOfRetransmissions_infinite 2
+#define T_H245H223AnnexCArqParameters_numberOfRetransmissions_extElem1 3
+
+typedef struct EXTERN H245H223AnnexCArqParameters_numberOfRetransmissions {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1UINT8 finite;
+ /* t = 2 */
+ /* t = 3 */
+ } u;
+} H245H223AnnexCArqParameters_numberOfRetransmissions;
+
+EXTERN int asn1PE_H245H223AnnexCArqParameters_numberOfRetransmissions (OOCTXT* pctxt, H245H223AnnexCArqParameters_numberOfRetransmissions* pvalue);
+
+EXTERN int asn1PD_H245H223AnnexCArqParameters_numberOfRetransmissions (OOCTXT* pctxt, H245H223AnnexCArqParameters_numberOfRetransmissions* pvalue);
+
+/**************************************************************/
+/* */
+/* H223AnnexCArqParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H223AnnexCArqParameters {
+ H245H223AnnexCArqParameters_numberOfRetransmissions numberOfRetransmissions;
+ ASN1UINT sendBufferSize;
+} H245H223AnnexCArqParameters;
+
+EXTERN int asn1PE_H245H223AnnexCArqParameters (OOCTXT* pctxt, H245H223AnnexCArqParameters* pvalue);
+
+EXTERN int asn1PD_H245H223AnnexCArqParameters (OOCTXT* pctxt, H245H223AnnexCArqParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters_arqType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223AL1MParameters_arqType_noArq 1
+#define T_H245H223AL1MParameters_arqType_typeIArq 2
+#define T_H245H223AL1MParameters_arqType_typeIIArq 3
+#define T_H245H223AL1MParameters_arqType_extElem1 4
+
+typedef struct EXTERN H245H223AL1MParameters_arqType {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H245H223AnnexCArqParameters *typeIArq;
+ /* t = 3 */
+ H245H223AnnexCArqParameters *typeIIArq;
+ /* t = 4 */
+ } u;
+} H245H223AL1MParameters_arqType;
+
+EXTERN int asn1PE_H245H223AL1MParameters_arqType (OOCTXT* pctxt, H245H223AL1MParameters_arqType* pvalue);
+
+EXTERN int asn1PD_H245H223AL1MParameters_arqType (OOCTXT* pctxt, H245H223AL1MParameters_arqType* pvalue);
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H223AL1MParameters {
+ struct {
+ unsigned rsCodeCorrectionPresent : 1;
+ } m;
+ H245H223AL1MParameters_transferMode transferMode;
+ H245H223AL1MParameters_headerFEC headerFEC;
+ H245H223AL1MParameters_crcLength crcLength;
+ ASN1UINT8 rcpcCodeRate;
+ H245H223AL1MParameters_arqType arqType;
+ ASN1BOOL alpduInterleaving;
+ ASN1BOOL alsduSplitting;
+ ASN1UINT8 rsCodeCorrection;
+} H245H223AL1MParameters;
+
+EXTERN int asn1PE_H245H223AL1MParameters (OOCTXT* pctxt, H245H223AL1MParameters* pvalue);
+
+EXTERN int asn1PD_H245H223AL1MParameters (OOCTXT* pctxt, H245H223AL1MParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* H223AL2MParameters_headerFEC */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223AL2MParameters_headerFEC_sebch16_5 1
+#define T_H245H223AL2MParameters_headerFEC_golay24_12 2
+#define T_H245H223AL2MParameters_headerFEC_extElem1 3
+
+typedef struct EXTERN H245H223AL2MParameters_headerFEC {
+ int t;
+} H245H223AL2MParameters_headerFEC;
+
+EXTERN int asn1PE_H245H223AL2MParameters_headerFEC (OOCTXT* pctxt, H245H223AL2MParameters_headerFEC* pvalue);
+
+EXTERN int asn1PD_H245H223AL2MParameters_headerFEC (OOCTXT* pctxt, H245H223AL2MParameters_headerFEC* pvalue);
+
+/**************************************************************/
+/* */
+/* H223AL2MParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H223AL2MParameters {
+ H245H223AL2MParameters_headerFEC headerFEC;
+ ASN1BOOL alpduInterleaving;
+} H245H223AL2MParameters;
+
+EXTERN int asn1PE_H245H223AL2MParameters (OOCTXT* pctxt, H245H223AL2MParameters* pvalue);
+
+EXTERN int asn1PD_H245H223AL2MParameters (OOCTXT* pctxt, H245H223AL2MParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* H223AL3MParameters_headerFormat */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223AL3MParameters_headerFormat_sebch16_7 1
+#define T_H245H223AL3MParameters_headerFormat_golay24_12 2
+#define T_H245H223AL3MParameters_headerFormat_extElem1 3
+
+typedef struct EXTERN H245H223AL3MParameters_headerFormat {
+ int t;
+} H245H223AL3MParameters_headerFormat;
+
+EXTERN int asn1PE_H245H223AL3MParameters_headerFormat (OOCTXT* pctxt, H245H223AL3MParameters_headerFormat* pvalue);
+
+EXTERN int asn1PD_H245H223AL3MParameters_headerFormat (OOCTXT* pctxt, H245H223AL3MParameters_headerFormat* pvalue);
+
+/**************************************************************/
+/* */
+/* H223AL3MParameters_crcLength */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223AL3MParameters_crcLength_crc4bit 1
+#define T_H245H223AL3MParameters_crcLength_crc12bit 2
+#define T_H245H223AL3MParameters_crcLength_crc20bit 3
+#define T_H245H223AL3MParameters_crcLength_crc28bit 4
+#define T_H245H223AL3MParameters_crcLength_crc8bit 5
+#define T_H245H223AL3MParameters_crcLength_crc16bit 6
+#define T_H245H223AL3MParameters_crcLength_crc32bit 7
+#define T_H245H223AL3MParameters_crcLength_crcNotUsed 8
+#define T_H245H223AL3MParameters_crcLength_extElem1 9
+
+typedef struct EXTERN H245H223AL3MParameters_crcLength {
+ int t;
+} H245H223AL3MParameters_crcLength;
+
+EXTERN int asn1PE_H245H223AL3MParameters_crcLength (OOCTXT* pctxt, H245H223AL3MParameters_crcLength* pvalue);
+
+EXTERN int asn1PD_H245H223AL3MParameters_crcLength (OOCTXT* pctxt, H245H223AL3MParameters_crcLength* pvalue);
+
+/**************************************************************/
+/* */
+/* H223AL3MParameters_arqType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223AL3MParameters_arqType_noArq 1
+#define T_H245H223AL3MParameters_arqType_typeIArq 2
+#define T_H245H223AL3MParameters_arqType_typeIIArq 3
+#define T_H245H223AL3MParameters_arqType_extElem1 4
+
+typedef struct EXTERN H245H223AL3MParameters_arqType {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H245H223AnnexCArqParameters *typeIArq;
+ /* t = 3 */
+ H245H223AnnexCArqParameters *typeIIArq;
+ /* t = 4 */
+ } u;
+} H245H223AL3MParameters_arqType;
+
+EXTERN int asn1PE_H245H223AL3MParameters_arqType (OOCTXT* pctxt, H245H223AL3MParameters_arqType* pvalue);
+
+EXTERN int asn1PD_H245H223AL3MParameters_arqType (OOCTXT* pctxt, H245H223AL3MParameters_arqType* pvalue);
+
+/**************************************************************/
+/* */
+/* H223AL3MParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H223AL3MParameters {
+ struct {
+ unsigned rsCodeCorrectionPresent : 1;
+ } m;
+ H245H223AL3MParameters_headerFormat headerFormat;
+ H245H223AL3MParameters_crcLength crcLength;
+ ASN1UINT8 rcpcCodeRate;
+ H245H223AL3MParameters_arqType arqType;
+ ASN1BOOL alpduInterleaving;
+ ASN1UINT8 rsCodeCorrection;
+} H245H223AL3MParameters;
+
+EXTERN int asn1PE_H245H223AL3MParameters (OOCTXT* pctxt, H245H223AL3MParameters* pvalue);
+
+EXTERN int asn1PD_H245H223AL3MParameters (OOCTXT* pctxt, H245H223AL3MParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* H223LogicalChannelParameters_adaptationLayerType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223LogicalChannelParameters_adaptationLayerType_nonStandard 1
+#define T_H245H223LogicalChannelParameters_adaptationLayerType_al1Framed 2
+#define T_H245H223LogicalChannelParameters_adaptationLayerType_al1NotFramed 3
+#define T_H245H223LogicalChannelParameters_adaptationLayerType_al2WithoutSequenceNumbers 4
+#define T_H245H223LogicalChannelParameters_adaptationLayerType_al2WithSequenceNumbers 5
+#define T_H245H223LogicalChannelParameters_adaptationLayerType_al3 6
+#define T_H245H223LogicalChannelParameters_adaptationLayerType_al1M 7
+#define T_H245H223LogicalChannelParameters_adaptationLayerType_al2M 8
+#define T_H245H223LogicalChannelParameters_adaptationLayerType_al3M 9
+#define T_H245H223LogicalChannelParameters_adaptationLayerType_extElem1 10
+
+typedef struct EXTERN H245H223LogicalChannelParameters_adaptationLayerType {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ H245H223LogicalChannelParameters_adaptationLayerType_al3 *al3;
+ /* t = 7 */
+ H245H223AL1MParameters *al1M;
+ /* t = 8 */
+ H245H223AL2MParameters *al2M;
+ /* t = 9 */
+ H245H223AL3MParameters *al3M;
+ /* t = 10 */
+ } u;
+} H245H223LogicalChannelParameters_adaptationLayerType;
+
+EXTERN int asn1PE_H245H223LogicalChannelParameters_adaptationLayerType (OOCTXT* pctxt, H245H223LogicalChannelParameters_adaptationLayerType* pvalue);
+
+EXTERN int asn1PD_H245H223LogicalChannelParameters_adaptationLayerType (OOCTXT* pctxt, H245H223LogicalChannelParameters_adaptationLayerType* pvalue);
+
+/**************************************************************/
+/* */
+/* H223LogicalChannelParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H223LogicalChannelParameters {
+ H245H223LogicalChannelParameters_adaptationLayerType adaptationLayerType;
+ ASN1BOOL segmentableFlag;
+} H245H223LogicalChannelParameters;
+
+EXTERN int asn1PE_H245H223LogicalChannelParameters (OOCTXT* pctxt, H245H223LogicalChannelParameters* pvalue);
+
+EXTERN int asn1PD_H245H223LogicalChannelParameters (OOCTXT* pctxt, H245H223LogicalChannelParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* CRCLength */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245CRCLength_crc8bit 1
+#define T_H245CRCLength_crc16bit 2
+#define T_H245CRCLength_crc32bit 3
+#define T_H245CRCLength_extElem1 4
+
+typedef struct EXTERN H245CRCLength {
+ int t;
+} H245CRCLength;
+
+EXTERN int asn1PE_H245CRCLength (OOCTXT* pctxt, H245CRCLength* pvalue);
+
+EXTERN int asn1PD_H245CRCLength (OOCTXT* pctxt, H245CRCLength* pvalue);
+
+/**************************************************************/
+/* */
+/* V76HDLCParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245V76HDLCParameters {
+ H245CRCLength crcLength;
+ ASN1USINT n401;
+ ASN1BOOL loopbackTestProcedure;
+} H245V76HDLCParameters;
+
+EXTERN int asn1PE_H245V76HDLCParameters (OOCTXT* pctxt, H245V76HDLCParameters* pvalue);
+
+EXTERN int asn1PD_H245V76HDLCParameters (OOCTXT* pctxt, H245V76HDLCParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters_suspendResume */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245V76LogicalChannelParameters_suspendResume_noSuspendResume 1
+#define T_H245V76LogicalChannelParameters_suspendResume_suspendResumewAddress 2
+#define T_H245V76LogicalChannelParameters_suspendResume_suspendResumewoAddress 3
+#define T_H245V76LogicalChannelParameters_suspendResume_extElem1 4
+
+typedef struct EXTERN H245V76LogicalChannelParameters_suspendResume {
+ int t;
+} H245V76LogicalChannelParameters_suspendResume;
+
+EXTERN int asn1PE_H245V76LogicalChannelParameters_suspendResume (OOCTXT* pctxt, H245V76LogicalChannelParameters_suspendResume* pvalue);
+
+EXTERN int asn1PD_H245V76LogicalChannelParameters_suspendResume (OOCTXT* pctxt, H245V76LogicalChannelParameters_suspendResume* pvalue);
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters_mode_eRM_recovery */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245V76LogicalChannelParameters_mode_eRM_recovery_rej 1
+#define T_H245V76LogicalChannelParameters_mode_eRM_recovery_sREJ 2
+#define T_H245V76LogicalChannelParameters_mode_eRM_recovery_mSREJ 3
+#define T_H245V76LogicalChannelParameters_mode_eRM_recovery_extElem1 4
+
+typedef struct EXTERN H245V76LogicalChannelParameters_mode_eRM_recovery {
+ int t;
+} H245V76LogicalChannelParameters_mode_eRM_recovery;
+
+EXTERN int asn1PE_H245V76LogicalChannelParameters_mode_eRM_recovery (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode_eRM_recovery* pvalue);
+
+EXTERN int asn1PD_H245V76LogicalChannelParameters_mode_eRM_recovery (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode_eRM_recovery* pvalue);
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters_mode_eRM */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245V76LogicalChannelParameters_mode_eRM {
+ ASN1UINT8 windowSize;
+ H245V76LogicalChannelParameters_mode_eRM_recovery recovery;
+} H245V76LogicalChannelParameters_mode_eRM;
+
+EXTERN int asn1PE_H245V76LogicalChannelParameters_mode_eRM (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode_eRM* pvalue);
+
+EXTERN int asn1PD_H245V76LogicalChannelParameters_mode_eRM (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode_eRM* pvalue);
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters_mode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245V76LogicalChannelParameters_mode_eRM 1
+#define T_H245V76LogicalChannelParameters_mode_uNERM 2
+#define T_H245V76LogicalChannelParameters_mode_extElem1 3
+
+typedef struct EXTERN H245V76LogicalChannelParameters_mode {
+ int t;
+ union {
+ /* t = 1 */
+ H245V76LogicalChannelParameters_mode_eRM *eRM;
+ /* t = 2 */
+ /* t = 3 */
+ } u;
+} H245V76LogicalChannelParameters_mode;
+
+EXTERN int asn1PE_H245V76LogicalChannelParameters_mode (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode* pvalue);
+
+EXTERN int asn1PD_H245V76LogicalChannelParameters_mode (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode* pvalue);
+
+/**************************************************************/
+/* */
+/* V75Parameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245V75Parameters {
+ ASN1BOOL audioHeaderPresent;
+} H245V75Parameters;
+
+EXTERN int asn1PE_H245V75Parameters (OOCTXT* pctxt, H245V75Parameters* pvalue);
+
+EXTERN int asn1PD_H245V75Parameters (OOCTXT* pctxt, H245V75Parameters* pvalue);
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245V76LogicalChannelParameters {
+ H245V76HDLCParameters hdlcParameters;
+ H245V76LogicalChannelParameters_suspendResume suspendResume;
+ ASN1BOOL uIH;
+ H245V76LogicalChannelParameters_mode mode;
+ H245V75Parameters v75Parameters;
+} H245V76LogicalChannelParameters;
+
+EXTERN int asn1PE_H245V76LogicalChannelParameters (OOCTXT* pctxt, H245V76LogicalChannelParameters* pvalue);
+
+EXTERN int asn1PD_H245V76LogicalChannelParameters (OOCTXT* pctxt, H245V76LogicalChannelParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPAddress_network */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UnicastAddress_iPAddress_network {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H245UnicastAddress_iPAddress_network;
+
+EXTERN int asn1PE_H245UnicastAddress_iPAddress_network (OOCTXT* pctxt, H245UnicastAddress_iPAddress_network* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress_iPAddress_network (OOCTXT* pctxt, H245UnicastAddress_iPAddress_network* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPAddress */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UnicastAddress_iPAddress {
+ H245UnicastAddress_iPAddress_network network;
+ ASN1USINT tsapIdentifier;
+} H245UnicastAddress_iPAddress;
+
+EXTERN int asn1PE_H245UnicastAddress_iPAddress (OOCTXT* pctxt, H245UnicastAddress_iPAddress* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress_iPAddress (OOCTXT* pctxt, H245UnicastAddress_iPAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPXAddress_node */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UnicastAddress_iPXAddress_node {
+ ASN1UINT numocts;
+ ASN1OCTET data[6];
+} H245UnicastAddress_iPXAddress_node;
+
+EXTERN int asn1PE_H245UnicastAddress_iPXAddress_node (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_node* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress_iPXAddress_node (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_node* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPXAddress_netnum */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UnicastAddress_iPXAddress_netnum {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H245UnicastAddress_iPXAddress_netnum;
+
+EXTERN int asn1PE_H245UnicastAddress_iPXAddress_netnum (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_netnum* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress_iPXAddress_netnum (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_netnum* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPXAddress_tsapIdentifier */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UnicastAddress_iPXAddress_tsapIdentifier {
+ ASN1UINT numocts;
+ ASN1OCTET data[2];
+} H245UnicastAddress_iPXAddress_tsapIdentifier;
+
+EXTERN int asn1PE_H245UnicastAddress_iPXAddress_tsapIdentifier (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_tsapIdentifier* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress_iPXAddress_tsapIdentifier (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_tsapIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPXAddress */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UnicastAddress_iPXAddress {
+ H245UnicastAddress_iPXAddress_node node;
+ H245UnicastAddress_iPXAddress_netnum netnum;
+ H245UnicastAddress_iPXAddress_tsapIdentifier tsapIdentifier;
+} H245UnicastAddress_iPXAddress;
+
+EXTERN int asn1PE_H245UnicastAddress_iPXAddress (OOCTXT* pctxt, H245UnicastAddress_iPXAddress* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress_iPXAddress (OOCTXT* pctxt, H245UnicastAddress_iPXAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iP6Address_network */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UnicastAddress_iP6Address_network {
+ ASN1UINT numocts;
+ ASN1OCTET data[16];
+} H245UnicastAddress_iP6Address_network;
+
+EXTERN int asn1PE_H245UnicastAddress_iP6Address_network (OOCTXT* pctxt, H245UnicastAddress_iP6Address_network* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress_iP6Address_network (OOCTXT* pctxt, H245UnicastAddress_iP6Address_network* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iP6Address */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UnicastAddress_iP6Address {
+ H245UnicastAddress_iP6Address_network network;
+ ASN1USINT tsapIdentifier;
+} H245UnicastAddress_iP6Address;
+
+EXTERN int asn1PE_H245UnicastAddress_iP6Address (OOCTXT* pctxt, H245UnicastAddress_iP6Address* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress_iP6Address (OOCTXT* pctxt, H245UnicastAddress_iP6Address* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress_netBios */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UnicastAddress_netBios {
+ ASN1UINT numocts;
+ ASN1OCTET data[16];
+} H245UnicastAddress_netBios;
+
+EXTERN int asn1PE_H245UnicastAddress_netBios (OOCTXT* pctxt, H245UnicastAddress_netBios* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress_netBios (OOCTXT* pctxt, H245UnicastAddress_netBios* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPSourceRouteAddress_routing */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245UnicastAddress_iPSourceRouteAddress_routing_strict 1
+#define T_H245UnicastAddress_iPSourceRouteAddress_routing_loose 2
+
+typedef struct EXTERN H245UnicastAddress_iPSourceRouteAddress_routing {
+ int t;
+} H245UnicastAddress_iPSourceRouteAddress_routing;
+
+EXTERN int asn1PE_H245UnicastAddress_iPSourceRouteAddress_routing (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_routing* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress_iPSourceRouteAddress_routing (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_routing* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPSourceRouteAddress_network */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UnicastAddress_iPSourceRouteAddress_network {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H245UnicastAddress_iPSourceRouteAddress_network;
+
+EXTERN int asn1PE_H245UnicastAddress_iPSourceRouteAddress_network (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_network* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress_iPSourceRouteAddress_network (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_network* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPSourceRouteAddress_route_element */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UnicastAddress_iPSourceRouteAddress_route_element {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H245UnicastAddress_iPSourceRouteAddress_route_element;
+
+EXTERN int asn1PE_H245UnicastAddress_iPSourceRouteAddress_route_element (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_route_element* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress_iPSourceRouteAddress_route_element (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_route_element* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH245UnicastAddress_iPSourceRouteAddress_route_elem */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element {
+ ASN1UINT n;
+ H245UnicastAddress_iPSourceRouteAddress_route_element *elem;
+} H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element;
+
+EXTERN int asn1PE_H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element (OOCTXT* pctxt, H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element* pvalue);
+
+EXTERN int asn1PD_H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element (OOCTXT* pctxt, H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPSourceRouteAddress */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UnicastAddress_iPSourceRouteAddress {
+ H245UnicastAddress_iPSourceRouteAddress_routing routing;
+ H245UnicastAddress_iPSourceRouteAddress_network network;
+ ASN1USINT tsapIdentifier;
+ H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element route;
+} H245UnicastAddress_iPSourceRouteAddress;
+
+EXTERN int asn1PE_H245UnicastAddress_iPSourceRouteAddress (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress_iPSourceRouteAddress (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress_nsap */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UnicastAddress_nsap {
+ ASN1UINT numocts;
+ ASN1OCTET data[20];
+} H245UnicastAddress_nsap;
+
+EXTERN int asn1PE_H245UnicastAddress_nsap (OOCTXT* pctxt, H245UnicastAddress_nsap* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress_nsap (OOCTXT* pctxt, H245UnicastAddress_nsap* pvalue);
+
+/**************************************************************/
+/* */
+/* UnicastAddress */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245UnicastAddress_iPAddress 1
+#define T_H245UnicastAddress_iPXAddress 2
+#define T_H245UnicastAddress_iP6Address 3
+#define T_H245UnicastAddress_netBios 4
+#define T_H245UnicastAddress_iPSourceRouteAddress 5
+#define T_H245UnicastAddress_nsap 6
+#define T_H245UnicastAddress_nonStandardAddress 7
+#define T_H245UnicastAddress_extElem1 8
+
+typedef struct EXTERN H245UnicastAddress {
+ int t;
+ union {
+ /* t = 1 */
+ H245UnicastAddress_iPAddress *iPAddress;
+ /* t = 2 */
+ H245UnicastAddress_iPXAddress *iPXAddress;
+ /* t = 3 */
+ H245UnicastAddress_iP6Address *iP6Address;
+ /* t = 4 */
+ H245UnicastAddress_netBios *netBios;
+ /* t = 5 */
+ H245UnicastAddress_iPSourceRouteAddress *iPSourceRouteAddress;
+ /* t = 6 */
+ H245UnicastAddress_nsap *nsap;
+ /* t = 7 */
+ H245NonStandardParameter *nonStandardAddress;
+ /* t = 8 */
+ } u;
+} H245UnicastAddress;
+
+EXTERN int asn1PE_H245UnicastAddress (OOCTXT* pctxt, H245UnicastAddress* pvalue);
+
+EXTERN int asn1PD_H245UnicastAddress (OOCTXT* pctxt, H245UnicastAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* MulticastAddress_iPAddress_network */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MulticastAddress_iPAddress_network {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H245MulticastAddress_iPAddress_network;
+
+EXTERN int asn1PE_H245MulticastAddress_iPAddress_network (OOCTXT* pctxt, H245MulticastAddress_iPAddress_network* pvalue);
+
+EXTERN int asn1PD_H245MulticastAddress_iPAddress_network (OOCTXT* pctxt, H245MulticastAddress_iPAddress_network* pvalue);
+
+/**************************************************************/
+/* */
+/* MulticastAddress_iPAddress */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MulticastAddress_iPAddress {
+ H245MulticastAddress_iPAddress_network network;
+ ASN1USINT tsapIdentifier;
+} H245MulticastAddress_iPAddress;
+
+EXTERN int asn1PE_H245MulticastAddress_iPAddress (OOCTXT* pctxt, H245MulticastAddress_iPAddress* pvalue);
+
+EXTERN int asn1PD_H245MulticastAddress_iPAddress (OOCTXT* pctxt, H245MulticastAddress_iPAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* MulticastAddress_iP6Address_network */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MulticastAddress_iP6Address_network {
+ ASN1UINT numocts;
+ ASN1OCTET data[16];
+} H245MulticastAddress_iP6Address_network;
+
+EXTERN int asn1PE_H245MulticastAddress_iP6Address_network (OOCTXT* pctxt, H245MulticastAddress_iP6Address_network* pvalue);
+
+EXTERN int asn1PD_H245MulticastAddress_iP6Address_network (OOCTXT* pctxt, H245MulticastAddress_iP6Address_network* pvalue);
+
+/**************************************************************/
+/* */
+/* MulticastAddress_iP6Address */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MulticastAddress_iP6Address {
+ H245MulticastAddress_iP6Address_network network;
+ ASN1USINT tsapIdentifier;
+} H245MulticastAddress_iP6Address;
+
+EXTERN int asn1PE_H245MulticastAddress_iP6Address (OOCTXT* pctxt, H245MulticastAddress_iP6Address* pvalue);
+
+EXTERN int asn1PD_H245MulticastAddress_iP6Address (OOCTXT* pctxt, H245MulticastAddress_iP6Address* pvalue);
+
+/**************************************************************/
+/* */
+/* MulticastAddress_nsap */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MulticastAddress_nsap {
+ ASN1UINT numocts;
+ ASN1OCTET data[20];
+} H245MulticastAddress_nsap;
+
+EXTERN int asn1PE_H245MulticastAddress_nsap (OOCTXT* pctxt, H245MulticastAddress_nsap* pvalue);
+
+EXTERN int asn1PD_H245MulticastAddress_nsap (OOCTXT* pctxt, H245MulticastAddress_nsap* pvalue);
+
+/**************************************************************/
+/* */
+/* MulticastAddress */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MulticastAddress_iPAddress 1
+#define T_H245MulticastAddress_iP6Address 2
+#define T_H245MulticastAddress_nsap 3
+#define T_H245MulticastAddress_nonStandardAddress 4
+#define T_H245MulticastAddress_extElem1 5
+
+typedef struct EXTERN H245MulticastAddress {
+ int t;
+ union {
+ /* t = 1 */
+ H245MulticastAddress_iPAddress *iPAddress;
+ /* t = 2 */
+ H245MulticastAddress_iP6Address *iP6Address;
+ /* t = 3 */
+ H245MulticastAddress_nsap *nsap;
+ /* t = 4 */
+ H245NonStandardParameter *nonStandardAddress;
+ /* t = 5 */
+ } u;
+} H245MulticastAddress;
+
+EXTERN int asn1PE_H245MulticastAddress (OOCTXT* pctxt, H245MulticastAddress* pvalue);
+
+EXTERN int asn1PD_H245MulticastAddress (OOCTXT* pctxt, H245MulticastAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245TransportAddress_unicastAddress 1
+#define T_H245TransportAddress_multicastAddress 2
+#define T_H245TransportAddress_extElem1 3
+
+typedef struct EXTERN H245TransportAddress {
+ int t;
+ union {
+ /* t = 1 */
+ H245UnicastAddress *unicastAddress;
+ /* t = 2 */
+ H245MulticastAddress *multicastAddress;
+ /* t = 3 */
+ } u;
+} H245TransportAddress;
+
+EXTERN int asn1PE_H245TransportAddress (OOCTXT* pctxt, H245TransportAddress* pvalue);
+
+EXTERN int asn1PD_H245TransportAddress (OOCTXT* pctxt, H245TransportAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* McuNumber */
+/* */
+/**************************************************************/
+
+typedef ASN1UINT8 H245McuNumber;
+
+EXTERN int asn1PE_H245McuNumber (OOCTXT* pctxt, H245McuNumber value);
+
+EXTERN int asn1PD_H245McuNumber (OOCTXT* pctxt, H245McuNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalNumber */
+/* */
+/**************************************************************/
+
+typedef ASN1UINT8 H245TerminalNumber;
+
+EXTERN int asn1PE_H245TerminalNumber (OOCTXT* pctxt, H245TerminalNumber value);
+
+EXTERN int asn1PD_H245TerminalNumber (OOCTXT* pctxt, H245TerminalNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalLabel */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245TerminalLabel {
+ H245McuNumber mcuNumber;
+ H245TerminalNumber terminalNumber;
+} H245TerminalLabel;
+
+EXTERN int asn1PE_H245TerminalLabel (OOCTXT* pctxt, H245TerminalLabel* pvalue);
+
+EXTERN int asn1PD_H245TerminalLabel (OOCTXT* pctxt, H245TerminalLabel* pvalue);
+
+/**************************************************************/
+/* */
+/* H2250LogicalChannelParameters_mediaPacketization */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H2250LogicalChannelParameters_mediaPacketization_h261aVideoPacketization 1
+#define T_H245H2250LogicalChannelParameters_mediaPacketization_rtpPayloadType 2
+#define T_H245H2250LogicalChannelParameters_mediaPacketization_extElem1 3
+
+typedef struct EXTERN H245H2250LogicalChannelParameters_mediaPacketization {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H245RTPPayloadType *rtpPayloadType;
+ /* t = 3 */
+ } u;
+} H245H2250LogicalChannelParameters_mediaPacketization;
+
+EXTERN int asn1PE_H245H2250LogicalChannelParameters_mediaPacketization (OOCTXT* pctxt, H245H2250LogicalChannelParameters_mediaPacketization* pvalue);
+
+EXTERN int asn1PD_H245H2250LogicalChannelParameters_mediaPacketization (OOCTXT* pctxt, H245H2250LogicalChannelParameters_mediaPacketization* pvalue);
+
+/**************************************************************/
+/* */
+/* H2250LogicalChannelParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H2250LogicalChannelParameters {
+ struct {
+ unsigned nonStandardPresent : 1;
+ unsigned associatedSessionIDPresent : 1;
+ unsigned mediaChannelPresent : 1;
+ unsigned mediaGuaranteedDeliveryPresent : 1;
+ unsigned mediaControlChannelPresent : 1;
+ unsigned mediaControlGuaranteedDeliveryPresent : 1;
+ unsigned silenceSuppressionPresent : 1;
+ unsigned destinationPresent : 1;
+ unsigned dynamicRTPPayloadTypePresent : 1;
+ unsigned mediaPacketizationPresent : 1;
+ unsigned transportCapabilityPresent : 1;
+ unsigned redundancyEncodingPresent : 1;
+ unsigned sourcePresent : 1;
+ } m;
+ H245_SeqOfH245NonStandardParameter nonStandard;
+ ASN1UINT8 sessionID;
+ ASN1UINT8 associatedSessionID;
+ H245TransportAddress mediaChannel;
+ ASN1BOOL mediaGuaranteedDelivery;
+ H245TransportAddress mediaControlChannel;
+ ASN1BOOL mediaControlGuaranteedDelivery;
+ ASN1BOOL silenceSuppression;
+ H245TerminalLabel destination;
+ ASN1UINT8 dynamicRTPPayloadType;
+ H245H2250LogicalChannelParameters_mediaPacketization mediaPacketization;
+ H245TransportCapability transportCapability;
+ H245RedundancyEncoding redundancyEncoding;
+ H245TerminalLabel source;
+} H245H2250LogicalChannelParameters;
+
+EXTERN int asn1PE_H245H2250LogicalChannelParameters (OOCTXT* pctxt, H245H2250LogicalChannelParameters* pvalue);
+
+EXTERN int asn1PD_H245H2250LogicalChannelParameters (OOCTXT* pctxt, H245H2250LogicalChannelParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel_forwardLogicalChannelParameters_multi */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters 1
+#define T_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters 2
+#define T_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters 3
+#define T_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters 4
+#define T_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_none 5
+#define T_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_extElem1 6
+
+typedef struct EXTERN H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters {
+ int t;
+ union {
+ /* t = 1 */
+ H245H222LogicalChannelParameters *h222LogicalChannelParameters;
+ /* t = 2 */
+ H245H223LogicalChannelParameters *h223LogicalChannelParameters;
+ /* t = 3 */
+ H245V76LogicalChannelParameters *v76LogicalChannelParameters;
+ /* t = 4 */
+ H245H2250LogicalChannelParameters *h2250LogicalChannelParameters;
+ /* t = 5 */
+ /* t = 6 */
+ } u;
+} H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters;
+
+EXTERN int asn1PE_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters* pvalue);
+
+EXTERN int asn1PD_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel_forwardLogicalChannelParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245OpenLogicalChannel_forwardLogicalChannelParameters {
+ struct {
+ unsigned portNumberPresent : 1;
+ unsigned forwardLogicalChannelDependencyPresent : 1;
+ unsigned replacementForPresent : 1;
+ } m;
+ ASN1USINT portNumber;
+ H245DataType dataType;
+ H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters multiplexParameters;
+ H245LogicalChannelNumber forwardLogicalChannelDependency;
+ H245LogicalChannelNumber replacementFor;
+} H245OpenLogicalChannel_forwardLogicalChannelParameters;
+
+EXTERN int asn1PE_H245OpenLogicalChannel_forwardLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannel_forwardLogicalChannelParameters* pvalue);
+
+EXTERN int asn1PD_H245OpenLogicalChannel_forwardLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannel_forwardLogicalChannelParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel_reverseLogicalChannelParameters_multi */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters 1
+#define T_H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters 2
+#define T_H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters 3
+#define T_H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_extElem1 4
+
+typedef struct EXTERN H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters {
+ int t;
+ union {
+ /* t = 1 */
+ H245H223LogicalChannelParameters *h223LogicalChannelParameters;
+ /* t = 2 */
+ H245V76LogicalChannelParameters *v76LogicalChannelParameters;
+ /* t = 3 */
+ H245H2250LogicalChannelParameters *h2250LogicalChannelParameters;
+ /* t = 4 */
+ } u;
+} H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters;
+
+EXTERN int asn1PE_H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters* pvalue);
+
+EXTERN int asn1PD_H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel_reverseLogicalChannelParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245OpenLogicalChannel_reverseLogicalChannelParameters {
+ struct {
+ unsigned multiplexParametersPresent : 1;
+ unsigned reverseLogicalChannelDependencyPresent : 1;
+ unsigned replacementForPresent : 1;
+ } m;
+ H245DataType dataType;
+ H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters multiplexParameters;
+ H245LogicalChannelNumber reverseLogicalChannelDependency;
+ H245LogicalChannelNumber replacementFor;
+} H245OpenLogicalChannel_reverseLogicalChannelParameters;
+
+EXTERN int asn1PE_H245OpenLogicalChannel_reverseLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannel_reverseLogicalChannelParameters* pvalue);
+
+EXTERN int asn1PD_H245OpenLogicalChannel_reverseLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannel_reverseLogicalChannelParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters_distribution */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245NetworkAccessParameters_distribution_unicast 1
+#define T_H245NetworkAccessParameters_distribution_multicast 2
+#define T_H245NetworkAccessParameters_distribution_extElem1 3
+
+typedef struct EXTERN H245NetworkAccessParameters_distribution {
+ int t;
+} H245NetworkAccessParameters_distribution;
+
+EXTERN int asn1PE_H245NetworkAccessParameters_distribution (OOCTXT* pctxt, H245NetworkAccessParameters_distribution* pvalue);
+
+EXTERN int asn1PD_H245NetworkAccessParameters_distribution (OOCTXT* pctxt, H245NetworkAccessParameters_distribution* pvalue);
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters_networkAddress */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245NetworkAccessParameters_networkAddress_q2931Address 1
+#define T_H245NetworkAccessParameters_networkAddress_e164Address 2
+#define T_H245NetworkAccessParameters_networkAddress_localAreaAddress 3
+#define T_H245NetworkAccessParameters_networkAddress_extElem1 4
+
+typedef struct EXTERN H245NetworkAccessParameters_networkAddress {
+ int t;
+ union {
+ /* t = 1 */
+ H245Q2931Address *q2931Address;
+ /* t = 2 */
+ ASN1IA5String e164Address;
+ /* t = 3 */
+ H245TransportAddress *localAreaAddress;
+ /* t = 4 */
+ } u;
+} H245NetworkAccessParameters_networkAddress;
+
+EXTERN int asn1PE_H245NetworkAccessParameters_networkAddress (OOCTXT* pctxt, H245NetworkAccessParameters_networkAddress* pvalue);
+
+EXTERN int asn1PD_H245NetworkAccessParameters_networkAddress (OOCTXT* pctxt, H245NetworkAccessParameters_networkAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters_externalReference */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NetworkAccessParameters_externalReference {
+ ASN1UINT numocts;
+ ASN1OCTET data[255];
+} H245NetworkAccessParameters_externalReference;
+
+EXTERN int asn1PE_H245NetworkAccessParameters_externalReference (OOCTXT* pctxt, H245NetworkAccessParameters_externalReference* pvalue);
+
+EXTERN int asn1PD_H245NetworkAccessParameters_externalReference (OOCTXT* pctxt, H245NetworkAccessParameters_externalReference* pvalue);
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters_t120SetupProcedure */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245NetworkAccessParameters_t120SetupProcedure_originateCall 1
+#define T_H245NetworkAccessParameters_t120SetupProcedure_waitForCall 2
+#define T_H245NetworkAccessParameters_t120SetupProcedure_issueQuery 3
+#define T_H245NetworkAccessParameters_t120SetupProcedure_extElem1 4
+
+typedef struct EXTERN H245NetworkAccessParameters_t120SetupProcedure {
+ int t;
+} H245NetworkAccessParameters_t120SetupProcedure;
+
+EXTERN int asn1PE_H245NetworkAccessParameters_t120SetupProcedure (OOCTXT* pctxt, H245NetworkAccessParameters_t120SetupProcedure* pvalue);
+
+EXTERN int asn1PD_H245NetworkAccessParameters_t120SetupProcedure (OOCTXT* pctxt, H245NetworkAccessParameters_t120SetupProcedure* pvalue);
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NetworkAccessParameters {
+ struct {
+ unsigned distributionPresent : 1;
+ unsigned externalReferencePresent : 1;
+ unsigned t120SetupProcedurePresent : 1;
+ } m;
+ H245NetworkAccessParameters_distribution distribution;
+ H245NetworkAccessParameters_networkAddress networkAddress;
+ ASN1BOOL associateConference;
+ H245NetworkAccessParameters_externalReference externalReference;
+ H245NetworkAccessParameters_t120SetupProcedure t120SetupProcedure;
+} H245NetworkAccessParameters;
+
+EXTERN int asn1PE_H245NetworkAccessParameters (OOCTXT* pctxt, H245NetworkAccessParameters* pvalue);
+
+EXTERN int asn1PD_H245NetworkAccessParameters (OOCTXT* pctxt, H245NetworkAccessParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* EscrowData_escrowValue */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245EscrowData_escrowValue {
+ ASN1UINT numbits;
+ ASN1OCTET data[8192];
+} H245EscrowData_escrowValue;
+
+EXTERN int asn1PE_H245EscrowData_escrowValue (OOCTXT* pctxt, H245EscrowData_escrowValue* pvalue);
+
+EXTERN int asn1PD_H245EscrowData_escrowValue (OOCTXT* pctxt, H245EscrowData_escrowValue* pvalue);
+
+/**************************************************************/
+/* */
+/* EscrowData */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245EscrowData {
+ ASN1OBJID escrowID;
+ H245EscrowData_escrowValue escrowValue;
+} H245EscrowData;
+
+EXTERN int asn1PE_H245EscrowData (OOCTXT* pctxt, H245EscrowData* pvalue);
+
+EXTERN int asn1PD_H245EscrowData (OOCTXT* pctxt, H245EscrowData* pvalue);
+
+/**************************************************************/
+/* */
+/* EncryptionSync_escrowentry */
+/* */
+/**************************************************************/
+
+/* List of H245EscrowData */
+typedef DList H245EncryptionSync_escrowentry;
+
+EXTERN int asn1PE_H245EncryptionSync_escrowentry (OOCTXT* pctxt, H245EncryptionSync_escrowentry* pvalue);
+
+EXTERN int asn1PD_H245EncryptionSync_escrowentry (OOCTXT* pctxt, H245EncryptionSync_escrowentry* pvalue);
+
+/**************************************************************/
+/* */
+/* EncryptionSync */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245EncryptionSync {
+ struct {
+ unsigned nonStandardPresent : 1;
+ unsigned escrowentryPresent : 1;
+ } m;
+ H245NonStandardParameter nonStandard;
+ ASN1UINT8 synchFlag;
+ ASN1DynOctStr h235Key;
+ H245EncryptionSync_escrowentry escrowentry;
+} H245EncryptionSync;
+
+EXTERN int asn1PE_H245EncryptionSync (OOCTXT* pctxt, H245EncryptionSync* pvalue);
+
+EXTERN int asn1PD_H245EncryptionSync (OOCTXT* pctxt, H245EncryptionSync* pvalue);
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245OpenLogicalChannel {
+ struct {
+ unsigned reverseLogicalChannelParametersPresent : 1;
+ unsigned separateStackPresent : 1;
+ unsigned encryptionSyncPresent : 1;
+ } m;
+ H245LogicalChannelNumber forwardLogicalChannelNumber;
+ H245OpenLogicalChannel_forwardLogicalChannelParameters forwardLogicalChannelParameters;
+ H245OpenLogicalChannel_reverseLogicalChannelParameters reverseLogicalChannelParameters;
+ H245NetworkAccessParameters separateStack;
+ H245EncryptionSync encryptionSync;
+} H245OpenLogicalChannel;
+
+EXTERN int asn1PE_H245OpenLogicalChannel (OOCTXT* pctxt, H245OpenLogicalChannel* pvalue);
+
+EXTERN int asn1PD_H245OpenLogicalChannel (OOCTXT* pctxt, H245OpenLogicalChannel* pvalue);
+
+/**************************************************************/
+/* */
+/* CloseLogicalChannel_source */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245CloseLogicalChannel_source_user 1
+#define T_H245CloseLogicalChannel_source_lcse 2
+
+typedef struct EXTERN H245CloseLogicalChannel_source {
+ int t;
+} H245CloseLogicalChannel_source;
+
+EXTERN int asn1PE_H245CloseLogicalChannel_source (OOCTXT* pctxt, H245CloseLogicalChannel_source* pvalue);
+
+EXTERN int asn1PD_H245CloseLogicalChannel_source (OOCTXT* pctxt, H245CloseLogicalChannel_source* pvalue);
+
+/**************************************************************/
+/* */
+/* CloseLogicalChannel_reason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245CloseLogicalChannel_reason_unknown 1
+#define T_H245CloseLogicalChannel_reason_reopen 2
+#define T_H245CloseLogicalChannel_reason_reservationFailure 3
+#define T_H245CloseLogicalChannel_reason_extElem1 4
+
+typedef struct EXTERN H245CloseLogicalChannel_reason {
+ int t;
+} H245CloseLogicalChannel_reason;
+
+EXTERN int asn1PE_H245CloseLogicalChannel_reason (OOCTXT* pctxt, H245CloseLogicalChannel_reason* pvalue);
+
+EXTERN int asn1PD_H245CloseLogicalChannel_reason (OOCTXT* pctxt, H245CloseLogicalChannel_reason* pvalue);
+
+/**************************************************************/
+/* */
+/* CloseLogicalChannel */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245CloseLogicalChannel {
+ struct {
+ unsigned reasonPresent : 1;
+ } m;
+ H245LogicalChannelNumber forwardLogicalChannelNumber;
+ H245CloseLogicalChannel_source source;
+ H245CloseLogicalChannel_reason reason;
+} H245CloseLogicalChannel;
+
+EXTERN int asn1PE_H245CloseLogicalChannel (OOCTXT* pctxt, H245CloseLogicalChannel* pvalue);
+
+EXTERN int asn1PD_H245CloseLogicalChannel (OOCTXT* pctxt, H245CloseLogicalChannel* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestChannelClose_reason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RequestChannelClose_reason_unknown 1
+#define T_H245RequestChannelClose_reason_normal 2
+#define T_H245RequestChannelClose_reason_reopen 3
+#define T_H245RequestChannelClose_reason_reservationFailure 4
+#define T_H245RequestChannelClose_reason_extElem1 5
+
+typedef struct EXTERN H245RequestChannelClose_reason {
+ int t;
+} H245RequestChannelClose_reason;
+
+EXTERN int asn1PE_H245RequestChannelClose_reason (OOCTXT* pctxt, H245RequestChannelClose_reason* pvalue);
+
+EXTERN int asn1PD_H245RequestChannelClose_reason (OOCTXT* pctxt, H245RequestChannelClose_reason* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestChannelClose */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestChannelClose {
+ struct {
+ unsigned qosCapabilityPresent : 1;
+ unsigned reasonPresent : 1;
+ } m;
+ H245LogicalChannelNumber forwardLogicalChannelNumber;
+ H245QOSCapability qosCapability;
+ H245RequestChannelClose_reason reason;
+} H245RequestChannelClose;
+
+EXTERN int asn1PE_H245RequestChannelClose (OOCTXT* pctxt, H245RequestChannelClose* pvalue);
+
+EXTERN int asn1PD_H245RequestChannelClose (OOCTXT* pctxt, H245RequestChannelClose* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexTableEntryNumber */
+/* */
+/**************************************************************/
+
+typedef ASN1UINT8 H245MultiplexTableEntryNumber;
+
+EXTERN int asn1PE_H245MultiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexTableEntryNumber value);
+
+EXTERN int asn1PD_H245MultiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexTableEntryNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexElement_type_subElementList */
+/* */
+/**************************************************************/
+
+/* List of H245MultiplexElement */
+typedef DList H245MultiplexElement_type_subElementList;
+
+EXTERN int asn1PE_H245MultiplexElement_type_subElementList (OOCTXT* pctxt, H245MultiplexElement_type_subElementList* pvalue);
+
+EXTERN int asn1PD_H245MultiplexElement_type_subElementList (OOCTXT* pctxt, H245MultiplexElement_type_subElementList* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexElement_type */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MultiplexElement_type_logicalChannelNumber 1
+#define T_H245MultiplexElement_type_subElementList 2
+
+typedef struct EXTERN H245MultiplexElement_type {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1USINT logicalChannelNumber;
+ /* t = 2 */
+ H245MultiplexElement_type_subElementList *subElementList;
+ } u;
+} H245MultiplexElement_type;
+
+EXTERN int asn1PE_H245MultiplexElement_type (OOCTXT* pctxt, H245MultiplexElement_type* pvalue);
+
+EXTERN int asn1PD_H245MultiplexElement_type (OOCTXT* pctxt, H245MultiplexElement_type* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexElement_repeatCount */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MultiplexElement_repeatCount_finite 1
+#define T_H245MultiplexElement_repeatCount_untilClosingFlag 2
+
+typedef struct EXTERN H245MultiplexElement_repeatCount {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1USINT finite;
+ /* t = 2 */
+ } u;
+} H245MultiplexElement_repeatCount;
+
+EXTERN int asn1PE_H245MultiplexElement_repeatCount (OOCTXT* pctxt, H245MultiplexElement_repeatCount* pvalue);
+
+EXTERN int asn1PD_H245MultiplexElement_repeatCount (OOCTXT* pctxt, H245MultiplexElement_repeatCount* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexElement */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplexElement {
+ H245MultiplexElement_type type;
+ H245MultiplexElement_repeatCount repeatCount;
+} H245MultiplexElement;
+
+EXTERN int asn1PE_H245MultiplexElement (OOCTXT* pctxt, H245MultiplexElement* pvalue);
+
+EXTERN int asn1PD_H245MultiplexElement (OOCTXT* pctxt, H245MultiplexElement* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexEntryDescriptor_elementList */
+/* */
+/**************************************************************/
+
+/* List of H245MultiplexElement */
+typedef DList H245MultiplexEntryDescriptor_elementList;
+
+EXTERN int asn1PE_H245MultiplexEntryDescriptor_elementList (OOCTXT* pctxt, H245MultiplexEntryDescriptor_elementList* pvalue);
+
+EXTERN int asn1PD_H245MultiplexEntryDescriptor_elementList (OOCTXT* pctxt, H245MultiplexEntryDescriptor_elementList* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexEntryDescriptor */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplexEntryDescriptor {
+ struct {
+ unsigned elementListPresent : 1;
+ } m;
+ H245MultiplexTableEntryNumber multiplexTableEntryNumber;
+ H245MultiplexEntryDescriptor_elementList elementList;
+} H245MultiplexEntryDescriptor;
+
+EXTERN int asn1PE_H245MultiplexEntryDescriptor (OOCTXT* pctxt, H245MultiplexEntryDescriptor* pvalue);
+
+EXTERN int asn1PD_H245MultiplexEntryDescriptor (OOCTXT* pctxt, H245MultiplexEntryDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySend_multiplexEntryDescriptors */
+/* */
+/**************************************************************/
+
+/* List of H245MultiplexEntryDescriptor */
+typedef DList H245MultiplexEntrySend_multiplexEntryDescriptors;
+
+EXTERN int asn1PE_H245MultiplexEntrySend_multiplexEntryDescriptors (OOCTXT* pctxt, H245MultiplexEntrySend_multiplexEntryDescriptors* pvalue);
+
+EXTERN int asn1PD_H245MultiplexEntrySend_multiplexEntryDescriptors (OOCTXT* pctxt, H245MultiplexEntrySend_multiplexEntryDescriptors* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySend */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplexEntrySend {
+ H245SequenceNumber sequenceNumber;
+ H245MultiplexEntrySend_multiplexEntryDescriptors multiplexEntryDescriptors;
+} H245MultiplexEntrySend;
+
+EXTERN int asn1PE_H245MultiplexEntrySend (OOCTXT* pctxt, H245MultiplexEntrySend* pvalue);
+
+EXTERN int asn1PD_H245MultiplexEntrySend (OOCTXT* pctxt, H245MultiplexEntrySend* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntry_entryNumbers */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestMultiplexEntry_entryNumbers {
+ ASN1UINT n;
+ H245MultiplexTableEntryNumber elem[15];
+} H245RequestMultiplexEntry_entryNumbers;
+
+EXTERN int asn1PE_H245RequestMultiplexEntry_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntry_entryNumbers* pvalue);
+
+EXTERN int asn1PD_H245RequestMultiplexEntry_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntry_entryNumbers* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntry */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestMultiplexEntry {
+ H245RequestMultiplexEntry_entryNumbers entryNumbers;
+} H245RequestMultiplexEntry;
+
+EXTERN int asn1PE_H245RequestMultiplexEntry (OOCTXT* pctxt, H245RequestMultiplexEntry* pvalue);
+
+EXTERN int asn1PD_H245RequestMultiplexEntry (OOCTXT* pctxt, H245RequestMultiplexEntry* pvalue);
+
+/**************************************************************/
+/* */
+/* H261VideoMode_resolution */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H261VideoMode_resolution_qcif 1
+#define T_H245H261VideoMode_resolution_cif 2
+
+typedef struct EXTERN H245H261VideoMode_resolution {
+ int t;
+} H245H261VideoMode_resolution;
+
+EXTERN int asn1PE_H245H261VideoMode_resolution (OOCTXT* pctxt, H245H261VideoMode_resolution* pvalue);
+
+EXTERN int asn1PD_H245H261VideoMode_resolution (OOCTXT* pctxt, H245H261VideoMode_resolution* pvalue);
+
+/**************************************************************/
+/* */
+/* H261VideoMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H261VideoMode {
+ H245H261VideoMode_resolution resolution;
+ ASN1USINT bitRate;
+ ASN1BOOL stillImageTransmission;
+} H245H261VideoMode;
+
+EXTERN int asn1PE_H245H261VideoMode (OOCTXT* pctxt, H245H261VideoMode* pvalue);
+
+EXTERN int asn1PD_H245H261VideoMode (OOCTXT* pctxt, H245H261VideoMode* pvalue);
+
+/**************************************************************/
+/* */
+/* H262VideoMode_profileAndLevel */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H262VideoMode_profileAndLevel_profileAndLevel_SPatML 1
+#define T_H245H262VideoMode_profileAndLevel_profileAndLevel_MPatLL 2
+#define T_H245H262VideoMode_profileAndLevel_profileAndLevel_MPatML 3
+#define T_H245H262VideoMode_profileAndLevel_profileAndLevel_MPatH_14 4
+#define T_H245H262VideoMode_profileAndLevel_profileAndLevel_MPatHL 5
+#define T_H245H262VideoMode_profileAndLevel_profileAndLevel_SNRatLL 6
+#define T_H245H262VideoMode_profileAndLevel_profileAndLevel_SNRatML 7
+#define T_H245H262VideoMode_profileAndLevel_profileAndLevel_SpatialatH_14 8
+#define T_H245H262VideoMode_profileAndLevel_profileAndLevel_HPatML 9
+#define T_H245H262VideoMode_profileAndLevel_profileAndLevel_HPatH_14 10
+#define T_H245H262VideoMode_profileAndLevel_profileAndLevel_HPatHL 11
+#define T_H245H262VideoMode_profileAndLevel_extElem1 12
+
+typedef struct EXTERN H245H262VideoMode_profileAndLevel {
+ int t;
+} H245H262VideoMode_profileAndLevel;
+
+EXTERN int asn1PE_H245H262VideoMode_profileAndLevel (OOCTXT* pctxt, H245H262VideoMode_profileAndLevel* pvalue);
+
+EXTERN int asn1PD_H245H262VideoMode_profileAndLevel (OOCTXT* pctxt, H245H262VideoMode_profileAndLevel* pvalue);
+
+/**************************************************************/
+/* */
+/* H262VideoMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H262VideoMode {
+ struct {
+ unsigned videoBitRatePresent : 1;
+ unsigned vbvBufferSizePresent : 1;
+ unsigned samplesPerLinePresent : 1;
+ unsigned linesPerFramePresent : 1;
+ unsigned framesPerSecondPresent : 1;
+ unsigned luminanceSampleRatePresent : 1;
+ } m;
+ H245H262VideoMode_profileAndLevel profileAndLevel;
+ ASN1UINT videoBitRate;
+ ASN1UINT vbvBufferSize;
+ ASN1USINT samplesPerLine;
+ ASN1USINT linesPerFrame;
+ ASN1UINT8 framesPerSecond;
+ ASN1UINT luminanceSampleRate;
+} H245H262VideoMode;
+
+EXTERN int asn1PE_H245H262VideoMode (OOCTXT* pctxt, H245H262VideoMode* pvalue);
+
+EXTERN int asn1PD_H245H262VideoMode (OOCTXT* pctxt, H245H262VideoMode* pvalue);
+
+/**************************************************************/
+/* */
+/* H263VideoMode_resolution */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H263VideoMode_resolution_sqcif 1
+#define T_H245H263VideoMode_resolution_qcif 2
+#define T_H245H263VideoMode_resolution_cif 3
+#define T_H245H263VideoMode_resolution_cif4 4
+#define T_H245H263VideoMode_resolution_cif16 5
+#define T_H245H263VideoMode_resolution_custom 6
+#define T_H245H263VideoMode_resolution_extElem1 7
+
+typedef struct EXTERN H245H263VideoMode_resolution {
+ int t;
+} H245H263VideoMode_resolution;
+
+EXTERN int asn1PE_H245H263VideoMode_resolution (OOCTXT* pctxt, H245H263VideoMode_resolution* pvalue);
+
+EXTERN int asn1PD_H245H263VideoMode_resolution (OOCTXT* pctxt, H245H263VideoMode_resolution* pvalue);
+
+/**************************************************************/
+/* */
+/* H263VideoMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H263VideoMode {
+ struct {
+ unsigned errorCompensationPresent : 1;
+ unsigned enhancementLayerInfoPresent : 1;
+ unsigned h263OptionsPresent : 1;
+ } m;
+ H245H263VideoMode_resolution resolution;
+ ASN1USINT bitRate;
+ ASN1BOOL unrestrictedVector;
+ ASN1BOOL arithmeticCoding;
+ ASN1BOOL advancedPrediction;
+ ASN1BOOL pbFrames;
+ ASN1BOOL errorCompensation;
+ H245EnhancementLayerInfo enhancementLayerInfo;
+ H245H263Options h263Options;
+} H245H263VideoMode;
+
+EXTERN int asn1PE_H245H263VideoMode (OOCTXT* pctxt, H245H263VideoMode* pvalue);
+
+EXTERN int asn1PD_H245H263VideoMode (OOCTXT* pctxt, H245H263VideoMode* pvalue);
+
+/**************************************************************/
+/* */
+/* IS11172VideoMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245IS11172VideoMode {
+ struct {
+ unsigned videoBitRatePresent : 1;
+ unsigned vbvBufferSizePresent : 1;
+ unsigned samplesPerLinePresent : 1;
+ unsigned linesPerFramePresent : 1;
+ unsigned pictureRatePresent : 1;
+ unsigned luminanceSampleRatePresent : 1;
+ } m;
+ ASN1BOOL constrainedBitstream;
+ ASN1UINT videoBitRate;
+ ASN1UINT vbvBufferSize;
+ ASN1USINT samplesPerLine;
+ ASN1USINT linesPerFrame;
+ ASN1UINT8 pictureRate;
+ ASN1UINT luminanceSampleRate;
+} H245IS11172VideoMode;
+
+EXTERN int asn1PE_H245IS11172VideoMode (OOCTXT* pctxt, H245IS11172VideoMode* pvalue);
+
+EXTERN int asn1PD_H245IS11172VideoMode (OOCTXT* pctxt, H245IS11172VideoMode* pvalue);
+
+/**************************************************************/
+/* */
+/* VideoMode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245VideoMode_nonStandard 1
+#define T_H245VideoMode_h261VideoMode 2
+#define T_H245VideoMode_h262VideoMode 3
+#define T_H245VideoMode_h263VideoMode 4
+#define T_H245VideoMode_is11172VideoMode 5
+#define T_H245VideoMode_genericVideoMode 6
+#define T_H245VideoMode_extElem1 7
+
+typedef struct EXTERN H245VideoMode {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ H245H261VideoMode *h261VideoMode;
+ /* t = 3 */
+ H245H262VideoMode *h262VideoMode;
+ /* t = 4 */
+ H245H263VideoMode *h263VideoMode;
+ /* t = 5 */
+ H245IS11172VideoMode *is11172VideoMode;
+ /* t = 6 */
+ H245GenericCapability *genericVideoMode;
+ /* t = 7 */
+ } u;
+} H245VideoMode;
+
+EXTERN int asn1PE_H245VideoMode (OOCTXT* pctxt, H245VideoMode* pvalue);
+
+EXTERN int asn1PD_H245VideoMode (OOCTXT* pctxt, H245VideoMode* pvalue);
+
+/**************************************************************/
+/* */
+/* AudioMode_g7231 */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245AudioMode_g7231_noSilenceSuppressionLowRate 1
+#define T_H245AudioMode_g7231_noSilenceSuppressionHighRate 2
+#define T_H245AudioMode_g7231_silenceSuppressionLowRate 3
+#define T_H245AudioMode_g7231_silenceSuppressionHighRate 4
+
+typedef struct EXTERN H245AudioMode_g7231 {
+ int t;
+} H245AudioMode_g7231;
+
+EXTERN int asn1PE_H245AudioMode_g7231 (OOCTXT* pctxt, H245AudioMode_g7231* pvalue);
+
+EXTERN int asn1PD_H245AudioMode_g7231 (OOCTXT* pctxt, H245AudioMode_g7231* pvalue);
+
+/**************************************************************/
+/* */
+/* IS11172AudioMode_audioLayer */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245IS11172AudioMode_audioLayer_audioLayer1 1
+#define T_H245IS11172AudioMode_audioLayer_audioLayer2 2
+#define T_H245IS11172AudioMode_audioLayer_audioLayer3 3
+
+typedef struct EXTERN H245IS11172AudioMode_audioLayer {
+ int t;
+} H245IS11172AudioMode_audioLayer;
+
+EXTERN int asn1PE_H245IS11172AudioMode_audioLayer (OOCTXT* pctxt, H245IS11172AudioMode_audioLayer* pvalue);
+
+EXTERN int asn1PD_H245IS11172AudioMode_audioLayer (OOCTXT* pctxt, H245IS11172AudioMode_audioLayer* pvalue);
+
+/**************************************************************/
+/* */
+/* IS11172AudioMode_audioSampling */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245IS11172AudioMode_audioSampling_audioSampling32k 1
+#define T_H245IS11172AudioMode_audioSampling_audioSampling44k1 2
+#define T_H245IS11172AudioMode_audioSampling_audioSampling48k 3
+
+typedef struct EXTERN H245IS11172AudioMode_audioSampling {
+ int t;
+} H245IS11172AudioMode_audioSampling;
+
+EXTERN int asn1PE_H245IS11172AudioMode_audioSampling (OOCTXT* pctxt, H245IS11172AudioMode_audioSampling* pvalue);
+
+EXTERN int asn1PD_H245IS11172AudioMode_audioSampling (OOCTXT* pctxt, H245IS11172AudioMode_audioSampling* pvalue);
+
+/**************************************************************/
+/* */
+/* IS11172AudioMode_multichannelType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245IS11172AudioMode_multichannelType_singleChannel 1
+#define T_H245IS11172AudioMode_multichannelType_twoChannelStereo 2
+#define T_H245IS11172AudioMode_multichannelType_twoChannelDual 3
+
+typedef struct EXTERN H245IS11172AudioMode_multichannelType {
+ int t;
+} H245IS11172AudioMode_multichannelType;
+
+EXTERN int asn1PE_H245IS11172AudioMode_multichannelType (OOCTXT* pctxt, H245IS11172AudioMode_multichannelType* pvalue);
+
+EXTERN int asn1PD_H245IS11172AudioMode_multichannelType (OOCTXT* pctxt, H245IS11172AudioMode_multichannelType* pvalue);
+
+/**************************************************************/
+/* */
+/* IS11172AudioMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245IS11172AudioMode {
+ H245IS11172AudioMode_audioLayer audioLayer;
+ H245IS11172AudioMode_audioSampling audioSampling;
+ H245IS11172AudioMode_multichannelType multichannelType;
+ ASN1USINT bitRate;
+} H245IS11172AudioMode;
+
+EXTERN int asn1PE_H245IS11172AudioMode (OOCTXT* pctxt, H245IS11172AudioMode* pvalue);
+
+EXTERN int asn1PD_H245IS11172AudioMode (OOCTXT* pctxt, H245IS11172AudioMode* pvalue);
+
+/**************************************************************/
+/* */
+/* IS13818AudioMode_audioLayer */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245IS13818AudioMode_audioLayer_audioLayer1 1
+#define T_H245IS13818AudioMode_audioLayer_audioLayer2 2
+#define T_H245IS13818AudioMode_audioLayer_audioLayer3 3
+
+typedef struct EXTERN H245IS13818AudioMode_audioLayer {
+ int t;
+} H245IS13818AudioMode_audioLayer;
+
+EXTERN int asn1PE_H245IS13818AudioMode_audioLayer (OOCTXT* pctxt, H245IS13818AudioMode_audioLayer* pvalue);
+
+EXTERN int asn1PD_H245IS13818AudioMode_audioLayer (OOCTXT* pctxt, H245IS13818AudioMode_audioLayer* pvalue);
+
+/**************************************************************/
+/* */
+/* IS13818AudioMode_audioSampling */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245IS13818AudioMode_audioSampling_audioSampling16k 1
+#define T_H245IS13818AudioMode_audioSampling_audioSampling22k05 2
+#define T_H245IS13818AudioMode_audioSampling_audioSampling24k 3
+#define T_H245IS13818AudioMode_audioSampling_audioSampling32k 4
+#define T_H245IS13818AudioMode_audioSampling_audioSampling44k1 5
+#define T_H245IS13818AudioMode_audioSampling_audioSampling48k 6
+
+typedef struct EXTERN H245IS13818AudioMode_audioSampling {
+ int t;
+} H245IS13818AudioMode_audioSampling;
+
+EXTERN int asn1PE_H245IS13818AudioMode_audioSampling (OOCTXT* pctxt, H245IS13818AudioMode_audioSampling* pvalue);
+
+EXTERN int asn1PD_H245IS13818AudioMode_audioSampling (OOCTXT* pctxt, H245IS13818AudioMode_audioSampling* pvalue);
+
+/**************************************************************/
+/* */
+/* IS13818AudioMode_multichannelType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245IS13818AudioMode_multichannelType_singleChannel 1
+#define T_H245IS13818AudioMode_multichannelType_twoChannelStereo 2
+#define T_H245IS13818AudioMode_multichannelType_twoChannelDual 3
+#define T_H245IS13818AudioMode_multichannelType_threeChannels2_1 4
+#define T_H245IS13818AudioMode_multichannelType_threeChannels3_0 5
+#define T_H245IS13818AudioMode_multichannelType_fourChannels2_0_2_0 6
+#define T_H245IS13818AudioMode_multichannelType_fourChannels2_2 7
+#define T_H245IS13818AudioMode_multichannelType_fourChannels3_1 8
+#define T_H245IS13818AudioMode_multichannelType_fiveChannels3_0_2_0 9
+#define T_H245IS13818AudioMode_multichannelType_fiveChannels3_2 10
+
+typedef struct EXTERN H245IS13818AudioMode_multichannelType {
+ int t;
+} H245IS13818AudioMode_multichannelType;
+
+EXTERN int asn1PE_H245IS13818AudioMode_multichannelType (OOCTXT* pctxt, H245IS13818AudioMode_multichannelType* pvalue);
+
+EXTERN int asn1PD_H245IS13818AudioMode_multichannelType (OOCTXT* pctxt, H245IS13818AudioMode_multichannelType* pvalue);
+
+/**************************************************************/
+/* */
+/* IS13818AudioMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245IS13818AudioMode {
+ H245IS13818AudioMode_audioLayer audioLayer;
+ H245IS13818AudioMode_audioSampling audioSampling;
+ H245IS13818AudioMode_multichannelType multichannelType;
+ ASN1BOOL lowFrequencyEnhancement;
+ ASN1BOOL multilingual;
+ ASN1USINT bitRate;
+} H245IS13818AudioMode;
+
+EXTERN int asn1PE_H245IS13818AudioMode (OOCTXT* pctxt, H245IS13818AudioMode* pvalue);
+
+EXTERN int asn1PD_H245IS13818AudioMode (OOCTXT* pctxt, H245IS13818AudioMode* pvalue);
+
+/**************************************************************/
+/* */
+/* G7231AnnexCMode_g723AnnexCAudioMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245G7231AnnexCMode_g723AnnexCAudioMode {
+ ASN1UINT8 highRateMode0;
+ ASN1UINT8 highRateMode1;
+ ASN1UINT8 lowRateMode0;
+ ASN1UINT8 lowRateMode1;
+ ASN1UINT8 sidMode0;
+ ASN1UINT8 sidMode1;
+} H245G7231AnnexCMode_g723AnnexCAudioMode;
+
+EXTERN int asn1PE_H245G7231AnnexCMode_g723AnnexCAudioMode (OOCTXT* pctxt, H245G7231AnnexCMode_g723AnnexCAudioMode* pvalue);
+
+EXTERN int asn1PD_H245G7231AnnexCMode_g723AnnexCAudioMode (OOCTXT* pctxt, H245G7231AnnexCMode_g723AnnexCAudioMode* pvalue);
+
+/**************************************************************/
+/* */
+/* G7231AnnexCMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245G7231AnnexCMode {
+ ASN1USINT maxAl_sduAudioFrames;
+ ASN1BOOL silenceSuppression;
+ H245G7231AnnexCMode_g723AnnexCAudioMode g723AnnexCAudioMode;
+} H245G7231AnnexCMode;
+
+EXTERN int asn1PE_H245G7231AnnexCMode (OOCTXT* pctxt, H245G7231AnnexCMode* pvalue);
+
+EXTERN int asn1PD_H245G7231AnnexCMode (OOCTXT* pctxt, H245G7231AnnexCMode* pvalue);
+
+/**************************************************************/
+/* */
+/* VBDMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245VBDMode {
+ struct H245AudioMode *type;
+} H245VBDMode;
+
+EXTERN int asn1PE_H245VBDMode (OOCTXT* pctxt, H245VBDMode* pvalue);
+
+EXTERN int asn1PD_H245VBDMode (OOCTXT* pctxt, H245VBDMode* pvalue);
+
+/**************************************************************/
+/* */
+/* AudioMode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245AudioMode_nonStandard 1
+#define T_H245AudioMode_g711Alaw64k 2
+#define T_H245AudioMode_g711Alaw56k 3
+#define T_H245AudioMode_g711Ulaw64k 4
+#define T_H245AudioMode_g711Ulaw56k 5
+#define T_H245AudioMode_g722_64k 6
+#define T_H245AudioMode_g722_56k 7
+#define T_H245AudioMode_g722_48k 8
+#define T_H245AudioMode_g728 9
+#define T_H245AudioMode_g729 10
+#define T_H245AudioMode_g729AnnexA 11
+#define T_H245AudioMode_g7231 12
+#define T_H245AudioMode_is11172AudioMode 13
+#define T_H245AudioMode_is13818AudioMode 14
+#define T_H245AudioMode_g729wAnnexB 15
+#define T_H245AudioMode_g729AnnexAwAnnexB 16
+#define T_H245AudioMode_g7231AnnexCMode 17
+#define T_H245AudioMode_gsmFullRate 18
+#define T_H245AudioMode_gsmHalfRate 19
+#define T_H245AudioMode_gsmEnhancedFullRate 20
+#define T_H245AudioMode_genericAudioMode 21
+#define T_H245AudioMode_g729Extensions 22
+#define T_H245AudioMode_vbd 23
+#define T_H245AudioMode_extElem1 24
+
+typedef struct EXTERN H245AudioMode {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ /* t = 9 */
+ /* t = 10 */
+ /* t = 11 */
+ /* t = 12 */
+ H245AudioMode_g7231 *g7231;
+ /* t = 13 */
+ H245IS11172AudioMode *is11172AudioMode;
+ /* t = 14 */
+ H245IS13818AudioMode *is13818AudioMode;
+ /* t = 15 */
+ ASN1USINT g729wAnnexB;
+ /* t = 16 */
+ ASN1USINT g729AnnexAwAnnexB;
+ /* t = 17 */
+ H245G7231AnnexCMode *g7231AnnexCMode;
+ /* t = 18 */
+ H245GSMAudioCapability *gsmFullRate;
+ /* t = 19 */
+ H245GSMAudioCapability *gsmHalfRate;
+ /* t = 20 */
+ H245GSMAudioCapability *gsmEnhancedFullRate;
+ /* t = 21 */
+ H245GenericCapability *genericAudioMode;
+ /* t = 22 */
+ H245G729Extensions *g729Extensions;
+ /* t = 23 */
+ H245VBDMode *vbd;
+ /* t = 24 */
+ } u;
+} H245AudioMode;
+
+EXTERN int asn1PE_H245AudioMode (OOCTXT* pctxt, H245AudioMode* pvalue);
+
+EXTERN int asn1PD_H245AudioMode (OOCTXT* pctxt, H245AudioMode* pvalue);
+
+/**************************************************************/
+/* */
+/* DataMode_application_nlpid */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245DataMode_application_nlpid {
+ H245DataProtocolCapability nlpidProtocol;
+ ASN1DynOctStr nlpidData;
+} H245DataMode_application_nlpid;
+
+EXTERN int asn1PE_H245DataMode_application_nlpid (OOCTXT* pctxt, H245DataMode_application_nlpid* pvalue);
+
+EXTERN int asn1PD_H245DataMode_application_nlpid (OOCTXT* pctxt, H245DataMode_application_nlpid* pvalue);
+
+/**************************************************************/
+/* */
+/* DataMode_application_t38fax */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245DataMode_application_t38fax {
+ H245DataProtocolCapability t38FaxProtocol;
+ H245T38FaxProfile t38FaxProfile;
+} H245DataMode_application_t38fax;
+
+EXTERN int asn1PE_H245DataMode_application_t38fax (OOCTXT* pctxt, H245DataMode_application_t38fax* pvalue);
+
+EXTERN int asn1PD_H245DataMode_application_t38fax (OOCTXT* pctxt, H245DataMode_application_t38fax* pvalue);
+
+/**************************************************************/
+/* */
+/* DataMode_application */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245DataMode_application_nonStandard 1
+#define T_H245DataMode_application_t120 2
+#define T_H245DataMode_application_dsm_cc 3
+#define T_H245DataMode_application_userData 4
+#define T_H245DataMode_application_t84 5
+#define T_H245DataMode_application_t434 6
+#define T_H245DataMode_application_h224 7
+#define T_H245DataMode_application_nlpid 8
+#define T_H245DataMode_application_dsvdControl 9
+#define T_H245DataMode_application_h222DataPartitioning 10
+#define T_H245DataMode_application_t30fax 11
+#define T_H245DataMode_application_t140 12
+#define T_H245DataMode_application_t38fax 13
+#define T_H245DataMode_application_genericDataMode 14
+#define T_H245DataMode_application_extElem1 15
+
+typedef struct EXTERN H245DataMode_application {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ H245DataProtocolCapability *t120;
+ /* t = 3 */
+ H245DataProtocolCapability *dsm_cc;
+ /* t = 4 */
+ H245DataProtocolCapability *userData;
+ /* t = 5 */
+ H245DataProtocolCapability *t84;
+ /* t = 6 */
+ H245DataProtocolCapability *t434;
+ /* t = 7 */
+ H245DataProtocolCapability *h224;
+ /* t = 8 */
+ H245DataMode_application_nlpid *nlpid;
+ /* t = 9 */
+ /* t = 10 */
+ H245DataProtocolCapability *h222DataPartitioning;
+ /* t = 11 */
+ H245DataProtocolCapability *t30fax;
+ /* t = 12 */
+ H245DataProtocolCapability *t140;
+ /* t = 13 */
+ H245DataMode_application_t38fax *t38fax;
+ /* t = 14 */
+ H245GenericCapability *genericDataMode;
+ /* t = 15 */
+ } u;
+} H245DataMode_application;
+
+EXTERN int asn1PE_H245DataMode_application (OOCTXT* pctxt, H245DataMode_application* pvalue);
+
+EXTERN int asn1PD_H245DataMode_application (OOCTXT* pctxt, H245DataMode_application* pvalue);
+
+/**************************************************************/
+/* */
+/* DataMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245DataMode {
+ H245DataMode_application application;
+ ASN1UINT bitRate;
+} H245DataMode;
+
+EXTERN int asn1PE_H245DataMode (OOCTXT* pctxt, H245DataMode* pvalue);
+
+EXTERN int asn1PD_H245DataMode (OOCTXT* pctxt, H245DataMode* pvalue);
+
+/**************************************************************/
+/* */
+/* H235Mode_mediaMode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H235Mode_mediaMode_nonStandard 1
+#define T_H245H235Mode_mediaMode_videoMode 2
+#define T_H245H235Mode_mediaMode_audioMode 3
+#define T_H245H235Mode_mediaMode_dataMode 4
+#define T_H245H235Mode_mediaMode_extElem1 5
+
+typedef struct EXTERN H245H235Mode_mediaMode {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ H245VideoMode *videoMode;
+ /* t = 3 */
+ H245AudioMode *audioMode;
+ /* t = 4 */
+ H245DataMode *dataMode;
+ /* t = 5 */
+ } u;
+} H245H235Mode_mediaMode;
+
+EXTERN int asn1PE_H245H235Mode_mediaMode (OOCTXT* pctxt, H245H235Mode_mediaMode* pvalue);
+
+EXTERN int asn1PD_H245H235Mode_mediaMode (OOCTXT* pctxt, H245H235Mode_mediaMode* pvalue);
+
+/**************************************************************/
+/* */
+/* H235Mode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H235Mode {
+ H245EncryptionAuthenticationAndIntegrity encryptionAuthenticationAndIntegrity;
+ H245H235Mode_mediaMode mediaMode;
+} H245H235Mode;
+
+EXTERN int asn1PE_H245H235Mode (OOCTXT* pctxt, H245H235Mode* pvalue);
+
+EXTERN int asn1PD_H245H235Mode (OOCTXT* pctxt, H245H235Mode* pvalue);
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingDTModeElement_type */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RedundancyEncodingDTModeElement_type_nonStandard 1
+#define T_H245RedundancyEncodingDTModeElement_type_videoMode 2
+#define T_H245RedundancyEncodingDTModeElement_type_audioMode 3
+#define T_H245RedundancyEncodingDTModeElement_type_dataMode 4
+#define T_H245RedundancyEncodingDTModeElement_type_encryptionMode 5
+#define T_H245RedundancyEncodingDTModeElement_type_h235Mode 6
+#define T_H245RedundancyEncodingDTModeElement_type_extElem1 7
+
+typedef struct EXTERN H245RedundancyEncodingDTModeElement_type {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ H245VideoMode *videoMode;
+ /* t = 3 */
+ H245AudioMode *audioMode;
+ /* t = 4 */
+ H245DataMode *dataMode;
+ /* t = 5 */
+ H245EncryptionMode *encryptionMode;
+ /* t = 6 */
+ H245H235Mode *h235Mode;
+ /* t = 7 */
+ } u;
+} H245RedundancyEncodingDTModeElement_type;
+
+EXTERN int asn1PE_H245RedundancyEncodingDTModeElement_type (OOCTXT* pctxt, H245RedundancyEncodingDTModeElement_type* pvalue);
+
+EXTERN int asn1PD_H245RedundancyEncodingDTModeElement_type (OOCTXT* pctxt, H245RedundancyEncodingDTModeElement_type* pvalue);
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingDTModeElement */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RedundancyEncodingDTModeElement {
+ H245RedundancyEncodingDTModeElement_type type;
+} H245RedundancyEncodingDTModeElement;
+
+EXTERN int asn1PE_H245RedundancyEncodingDTModeElement (OOCTXT* pctxt, H245RedundancyEncodingDTModeElement* pvalue);
+
+EXTERN int asn1PD_H245RedundancyEncodingDTModeElement (OOCTXT* pctxt, H245RedundancyEncodingDTModeElement* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH245RedundancyEncodingDTModeElement */
+/* */
+/**************************************************************/
+
+/* List of H245RedundancyEncodingDTModeElement */
+typedef DList H245_SeqOfH245RedundancyEncodingDTModeElement;
+
+EXTERN int asn1PE_H245_SeqOfH245RedundancyEncodingDTModeElement (OOCTXT* pctxt, H245_SeqOfH245RedundancyEncodingDTModeElement* pvalue);
+
+EXTERN int asn1PD_H245_SeqOfH245RedundancyEncodingDTModeElement (OOCTXT* pctxt, H245_SeqOfH245RedundancyEncodingDTModeElement* pvalue);
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingDTMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RedundancyEncodingDTMode {
+ H245RedundancyEncodingMethod redundancyEncodingMethod;
+ H245RedundancyEncodingDTModeElement primary;
+ H245_SeqOfH245RedundancyEncodingDTModeElement secondary;
+} H245RedundancyEncodingDTMode;
+
+EXTERN int asn1PE_H245RedundancyEncodingDTMode (OOCTXT* pctxt, H245RedundancyEncodingDTMode* pvalue);
+
+EXTERN int asn1PD_H245RedundancyEncodingDTMode (OOCTXT* pctxt, H245RedundancyEncodingDTMode* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamElementMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplePayloadStreamElementMode {
+ struct H245ModeElementType *type;
+} H245MultiplePayloadStreamElementMode;
+
+EXTERN int asn1PE_H245MultiplePayloadStreamElementMode (OOCTXT* pctxt, H245MultiplePayloadStreamElementMode* pvalue);
+
+EXTERN int asn1PD_H245MultiplePayloadStreamElementMode (OOCTXT* pctxt, H245MultiplePayloadStreamElementMode* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH245MultiplePayloadStreamElementMode */
+/* */
+/**************************************************************/
+
+/* List of H245MultiplePayloadStreamElementMode */
+typedef DList H245_SeqOfH245MultiplePayloadStreamElementMode;
+
+EXTERN int asn1PE_H245_SeqOfH245MultiplePayloadStreamElementMode (OOCTXT* pctxt, H245_SeqOfH245MultiplePayloadStreamElementMode* pvalue);
+
+EXTERN int asn1PD_H245_SeqOfH245MultiplePayloadStreamElementMode (OOCTXT* pctxt, H245_SeqOfH245MultiplePayloadStreamElementMode* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplePayloadStreamMode {
+ H245_SeqOfH245MultiplePayloadStreamElementMode elements;
+} H245MultiplePayloadStreamMode;
+
+EXTERN int asn1PE_H245MultiplePayloadStreamMode (OOCTXT* pctxt, H245MultiplePayloadStreamMode* pvalue);
+
+EXTERN int asn1PD_H245MultiplePayloadStreamMode (OOCTXT* pctxt, H245MultiplePayloadStreamMode* pvalue);
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode_mode_separateStream_differentPort */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245FECMode_rfc2733Mode_mode_separateStream_differentPort {
+ struct {
+ unsigned protectedPayloadTypePresent : 1;
+ } m;
+ ASN1UINT8 protectedSessionID;
+ ASN1UINT8 protectedPayloadType;
+} H245FECMode_rfc2733Mode_mode_separateStream_differentPort;
+
+EXTERN int asn1PE_H245FECMode_rfc2733Mode_mode_separateStream_differentPort (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream_differentPort* pvalue);
+
+EXTERN int asn1PD_H245FECMode_rfc2733Mode_mode_separateStream_differentPort (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream_differentPort* pvalue);
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode_mode_separateStream_samePort */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245FECMode_rfc2733Mode_mode_separateStream_samePort {
+ struct H245ModeElementType *protectedType;
+} H245FECMode_rfc2733Mode_mode_separateStream_samePort;
+
+EXTERN int asn1PE_H245FECMode_rfc2733Mode_mode_separateStream_samePort (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream_samePort* pvalue);
+
+EXTERN int asn1PD_H245FECMode_rfc2733Mode_mode_separateStream_samePort (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream_samePort* pvalue);
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode_mode_separateStream */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245FECMode_rfc2733Mode_mode_separateStream_differentPort 1
+#define T_H245FECMode_rfc2733Mode_mode_separateStream_samePort 2
+#define T_H245FECMode_rfc2733Mode_mode_separateStream_extElem1 3
+
+typedef struct EXTERN H245FECMode_rfc2733Mode_mode_separateStream {
+ int t;
+ union {
+ /* t = 1 */
+ H245FECMode_rfc2733Mode_mode_separateStream_differentPort *differentPort;
+ /* t = 2 */
+ H245FECMode_rfc2733Mode_mode_separateStream_samePort *samePort;
+ /* t = 3 */
+ } u;
+} H245FECMode_rfc2733Mode_mode_separateStream;
+
+EXTERN int asn1PE_H245FECMode_rfc2733Mode_mode_separateStream (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream* pvalue);
+
+EXTERN int asn1PD_H245FECMode_rfc2733Mode_mode_separateStream (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream* pvalue);
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode_mode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245FECMode_rfc2733Mode_mode_redundancyEncoding 1
+#define T_H245FECMode_rfc2733Mode_mode_separateStream 2
+#define T_H245FECMode_rfc2733Mode_mode_extElem1 3
+
+typedef struct EXTERN H245FECMode_rfc2733Mode_mode {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H245FECMode_rfc2733Mode_mode_separateStream *separateStream;
+ /* t = 3 */
+ } u;
+} H245FECMode_rfc2733Mode_mode;
+
+EXTERN int asn1PE_H245FECMode_rfc2733Mode_mode (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode* pvalue);
+
+EXTERN int asn1PD_H245FECMode_rfc2733Mode_mode (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode* pvalue);
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245FECMode_rfc2733Mode {
+ H245FECMode_rfc2733Mode_mode mode;
+} H245FECMode_rfc2733Mode;
+
+EXTERN int asn1PE_H245FECMode_rfc2733Mode (OOCTXT* pctxt, H245FECMode_rfc2733Mode* pvalue);
+
+EXTERN int asn1PD_H245FECMode_rfc2733Mode (OOCTXT* pctxt, H245FECMode_rfc2733Mode* pvalue);
+
+/**************************************************************/
+/* */
+/* FECMode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245FECMode_rfc2733Mode 1
+#define T_H245FECMode_extElem1 2
+
+typedef struct EXTERN H245FECMode {
+ int t;
+ union {
+ /* t = 1 */
+ H245FECMode_rfc2733Mode *rfc2733Mode;
+ /* t = 2 */
+ } u;
+} H245FECMode;
+
+EXTERN int asn1PE_H245FECMode (OOCTXT* pctxt, H245FECMode* pvalue);
+
+EXTERN int asn1PD_H245FECMode (OOCTXT* pctxt, H245FECMode* pvalue);
+
+/**************************************************************/
+/* */
+/* ModeElementType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245ModeElementType_nonStandard 1
+#define T_H245ModeElementType_videoMode 2
+#define T_H245ModeElementType_audioMode 3
+#define T_H245ModeElementType_dataMode 4
+#define T_H245ModeElementType_encryptionMode 5
+#define T_H245ModeElementType_h235Mode 6
+#define T_H245ModeElementType_multiplexedStreamMode 7
+#define T_H245ModeElementType_redundancyEncodingDTMode 8
+#define T_H245ModeElementType_multiplePayloadStreamMode 9
+#define T_H245ModeElementType_fecMode 10
+#define T_H245ModeElementType_extElem1 11
+
+typedef struct EXTERN H245ModeElementType {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ H245VideoMode *videoMode;
+ /* t = 3 */
+ H245AudioMode *audioMode;
+ /* t = 4 */
+ H245DataMode *dataMode;
+ /* t = 5 */
+ H245EncryptionMode *encryptionMode;
+ /* t = 6 */
+ H245H235Mode *h235Mode;
+ /* t = 7 */
+ H245MultiplexedStreamParameter *multiplexedStreamMode;
+ /* t = 8 */
+ H245RedundancyEncodingDTMode *redundancyEncodingDTMode;
+ /* t = 9 */
+ H245MultiplePayloadStreamMode *multiplePayloadStreamMode;
+ /* t = 10 */
+ H245FECMode *fecMode;
+ /* t = 11 */
+ } u;
+} H245ModeElementType;
+
+EXTERN int asn1PE_H245ModeElementType (OOCTXT* pctxt, H245ModeElementType* pvalue);
+
+EXTERN int asn1PD_H245ModeElementType (OOCTXT* pctxt, H245ModeElementType* pvalue);
+
+/**************************************************************/
+/* */
+/* H223ModeParameters_adaptationLayerType_al3 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H223ModeParameters_adaptationLayerType_al3 {
+ ASN1UINT8 controlFieldOctets;
+ ASN1UINT sendBufferSize;
+} H245H223ModeParameters_adaptationLayerType_al3;
+
+EXTERN int asn1PE_H245H223ModeParameters_adaptationLayerType_al3 (OOCTXT* pctxt, H245H223ModeParameters_adaptationLayerType_al3* pvalue);
+
+EXTERN int asn1PD_H245H223ModeParameters_adaptationLayerType_al3 (OOCTXT* pctxt, H245H223ModeParameters_adaptationLayerType_al3* pvalue);
+
+/**************************************************************/
+/* */
+/* H223ModeParameters_adaptationLayerType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223ModeParameters_adaptationLayerType_nonStandard 1
+#define T_H245H223ModeParameters_adaptationLayerType_al1Framed 2
+#define T_H245H223ModeParameters_adaptationLayerType_al1NotFramed 3
+#define T_H245H223ModeParameters_adaptationLayerType_al2WithoutSequenceNumbers 4
+#define T_H245H223ModeParameters_adaptationLayerType_al2WithSequenceNumbers 5
+#define T_H245H223ModeParameters_adaptationLayerType_al3 6
+#define T_H245H223ModeParameters_adaptationLayerType_al1M 7
+#define T_H245H223ModeParameters_adaptationLayerType_al2M 8
+#define T_H245H223ModeParameters_adaptationLayerType_al3M 9
+#define T_H245H223ModeParameters_adaptationLayerType_extElem1 10
+
+typedef struct EXTERN H245H223ModeParameters_adaptationLayerType {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ H245H223ModeParameters_adaptationLayerType_al3 *al3;
+ /* t = 7 */
+ H245H223AL1MParameters *al1M;
+ /* t = 8 */
+ H245H223AL2MParameters *al2M;
+ /* t = 9 */
+ H245H223AL3MParameters *al3M;
+ /* t = 10 */
+ } u;
+} H245H223ModeParameters_adaptationLayerType;
+
+EXTERN int asn1PE_H245H223ModeParameters_adaptationLayerType (OOCTXT* pctxt, H245H223ModeParameters_adaptationLayerType* pvalue);
+
+EXTERN int asn1PD_H245H223ModeParameters_adaptationLayerType (OOCTXT* pctxt, H245H223ModeParameters_adaptationLayerType* pvalue);
+
+/**************************************************************/
+/* */
+/* H223ModeParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H223ModeParameters {
+ H245H223ModeParameters_adaptationLayerType adaptationLayerType;
+ ASN1BOOL segmentableFlag;
+} H245H223ModeParameters;
+
+EXTERN int asn1PE_H245H223ModeParameters (OOCTXT* pctxt, H245H223ModeParameters* pvalue);
+
+EXTERN int asn1PD_H245H223ModeParameters (OOCTXT* pctxt, H245H223ModeParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* V76ModeParameters */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245V76ModeParameters_suspendResumewAddress 1
+#define T_H245V76ModeParameters_suspendResumewoAddress 2
+#define T_H245V76ModeParameters_extElem1 3
+
+typedef struct EXTERN H245V76ModeParameters {
+ int t;
+} H245V76ModeParameters;
+
+EXTERN int asn1PE_H245V76ModeParameters (OOCTXT* pctxt, H245V76ModeParameters* pvalue);
+
+EXTERN int asn1PD_H245V76ModeParameters (OOCTXT* pctxt, H245V76ModeParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingMode_secondaryEncoding */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RedundancyEncodingMode_secondaryEncoding_nonStandard 1
+#define T_H245RedundancyEncodingMode_secondaryEncoding_audioData 2
+#define T_H245RedundancyEncodingMode_secondaryEncoding_extElem1 3
+
+typedef struct EXTERN H245RedundancyEncodingMode_secondaryEncoding {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ H245AudioMode *audioData;
+ /* t = 3 */
+ } u;
+} H245RedundancyEncodingMode_secondaryEncoding;
+
+EXTERN int asn1PE_H245RedundancyEncodingMode_secondaryEncoding (OOCTXT* pctxt, H245RedundancyEncodingMode_secondaryEncoding* pvalue);
+
+EXTERN int asn1PD_H245RedundancyEncodingMode_secondaryEncoding (OOCTXT* pctxt, H245RedundancyEncodingMode_secondaryEncoding* pvalue);
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RedundancyEncodingMode {
+ struct {
+ unsigned secondaryEncodingPresent : 1;
+ } m;
+ H245RedundancyEncodingMethod redundancyEncodingMethod;
+ H245RedundancyEncodingMode_secondaryEncoding secondaryEncoding;
+} H245RedundancyEncodingMode;
+
+EXTERN int asn1PE_H245RedundancyEncodingMode (OOCTXT* pctxt, H245RedundancyEncodingMode* pvalue);
+
+EXTERN int asn1PD_H245RedundancyEncodingMode (OOCTXT* pctxt, H245RedundancyEncodingMode* pvalue);
+
+/**************************************************************/
+/* */
+/* H2250ModeParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H2250ModeParameters {
+ struct {
+ unsigned redundancyEncodingModePresent : 1;
+ } m;
+ H245RedundancyEncodingMode redundancyEncodingMode;
+} H245H2250ModeParameters;
+
+EXTERN int asn1PE_H245H2250ModeParameters (OOCTXT* pctxt, H245H2250ModeParameters* pvalue);
+
+EXTERN int asn1PD_H245H2250ModeParameters (OOCTXT* pctxt, H245H2250ModeParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexedStreamModeParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplexedStreamModeParameters {
+ H245LogicalChannelNumber logicalChannelNumber;
+} H245MultiplexedStreamModeParameters;
+
+EXTERN int asn1PE_H245MultiplexedStreamModeParameters (OOCTXT* pctxt, H245MultiplexedStreamModeParameters* pvalue);
+
+EXTERN int asn1PD_H245MultiplexedStreamModeParameters (OOCTXT* pctxt, H245MultiplexedStreamModeParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* ModeElement */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245ModeElement {
+ struct {
+ unsigned h223ModeParametersPresent : 1;
+ unsigned v76ModeParametersPresent : 1;
+ unsigned h2250ModeParametersPresent : 1;
+ unsigned genericModeParametersPresent : 1;
+ unsigned multiplexedStreamModeParametersPresent : 1;
+ } m;
+ H245ModeElementType type;
+ H245H223ModeParameters h223ModeParameters;
+ H245V76ModeParameters v76ModeParameters;
+ H245H2250ModeParameters h2250ModeParameters;
+ H245GenericCapability genericModeParameters;
+ H245MultiplexedStreamModeParameters multiplexedStreamModeParameters;
+} H245ModeElement;
+
+EXTERN int asn1PE_H245ModeElement (OOCTXT* pctxt, H245ModeElement* pvalue);
+
+EXTERN int asn1PD_H245ModeElement (OOCTXT* pctxt, H245ModeElement* pvalue);
+
+/**************************************************************/
+/* */
+/* ModeDescription */
+/* */
+/**************************************************************/
+
+/* List of H245ModeElement */
+typedef DList H245ModeDescription;
+
+EXTERN int asn1PE_H245ModeDescription (OOCTXT* pctxt, H245ModeDescription* pvalue);
+
+EXTERN int asn1PD_H245ModeDescription (OOCTXT* pctxt, H245ModeDescription* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestMode_requestedModes */
+/* */
+/**************************************************************/
+
+/* List of H245ModeDescription */
+typedef DList H245RequestMode_requestedModes;
+
+EXTERN int asn1PE_H245RequestMode_requestedModes (OOCTXT* pctxt, H245RequestMode_requestedModes* pvalue);
+
+EXTERN int asn1PD_H245RequestMode_requestedModes (OOCTXT* pctxt, H245RequestMode_requestedModes* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestMode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestMode {
+ H245SequenceNumber sequenceNumber;
+ H245RequestMode_requestedModes requestedModes;
+} H245RequestMode;
+
+EXTERN int asn1PE_H245RequestMode (OOCTXT* pctxt, H245RequestMode* pvalue);
+
+EXTERN int asn1PD_H245RequestMode (OOCTXT* pctxt, H245RequestMode* pvalue);
+
+/**************************************************************/
+/* */
+/* RoundTripDelayRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RoundTripDelayRequest {
+ H245SequenceNumber sequenceNumber;
+} H245RoundTripDelayRequest;
+
+EXTERN int asn1PE_H245RoundTripDelayRequest (OOCTXT* pctxt, H245RoundTripDelayRequest* pvalue);
+
+EXTERN int asn1PD_H245RoundTripDelayRequest (OOCTXT* pctxt, H245RoundTripDelayRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopRequest_type */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MaintenanceLoopRequest_type_systemLoop 1
+#define T_H245MaintenanceLoopRequest_type_mediaLoop 2
+#define T_H245MaintenanceLoopRequest_type_logicalChannelLoop 3
+#define T_H245MaintenanceLoopRequest_type_extElem1 4
+
+typedef struct EXTERN H245MaintenanceLoopRequest_type {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H245LogicalChannelNumber mediaLoop;
+ /* t = 3 */
+ H245LogicalChannelNumber logicalChannelLoop;
+ /* t = 4 */
+ } u;
+} H245MaintenanceLoopRequest_type;
+
+EXTERN int asn1PE_H245MaintenanceLoopRequest_type (OOCTXT* pctxt, H245MaintenanceLoopRequest_type* pvalue);
+
+EXTERN int asn1PD_H245MaintenanceLoopRequest_type (OOCTXT* pctxt, H245MaintenanceLoopRequest_type* pvalue);
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MaintenanceLoopRequest {
+ H245MaintenanceLoopRequest_type type;
+} H245MaintenanceLoopRequest;
+
+EXTERN int asn1PE_H245MaintenanceLoopRequest (OOCTXT* pctxt, H245MaintenanceLoopRequest* pvalue);
+
+EXTERN int asn1PD_H245MaintenanceLoopRequest (OOCTXT* pctxt, H245MaintenanceLoopRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* CommunicationModeRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245CommunicationModeRequest {
+ ASN1OCTET __dummy__;
+} H245CommunicationModeRequest;
+
+EXTERN int asn1PE_H245CommunicationModeRequest (OOCTXT* pctxt, H245CommunicationModeRequest* pvalue);
+
+EXTERN int asn1PD_H245CommunicationModeRequest (OOCTXT* pctxt, H245CommunicationModeRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* Criteria */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245Criteria {
+ ASN1OBJID field;
+ ASN1DynOctStr value;
+} H245Criteria;
+
+EXTERN int asn1PE_H245Criteria (OOCTXT* pctxt, H245Criteria* pvalue);
+
+EXTERN int asn1PD_H245Criteria (OOCTXT* pctxt, H245Criteria* pvalue);
+
+/**************************************************************/
+/* */
+/* CertSelectionCriteria */
+/* */
+/**************************************************************/
+
+/* List of H245Criteria */
+typedef DList H245CertSelectionCriteria;
+
+EXTERN int asn1PE_H245CertSelectionCriteria (OOCTXT* pctxt, H245CertSelectionCriteria* pvalue);
+
+EXTERN int asn1PD_H245CertSelectionCriteria (OOCTXT* pctxt, H245CertSelectionCriteria* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceRequest_requestTerminalCertificate */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245ConferenceRequest_requestTerminalCertificate {
+ struct {
+ unsigned terminalLabelPresent : 1;
+ unsigned certSelectionCriteriaPresent : 1;
+ unsigned sRandomPresent : 1;
+ } m;
+ H245TerminalLabel terminalLabel;
+ H245CertSelectionCriteria certSelectionCriteria;
+ ASN1UINT sRandom;
+} H245ConferenceRequest_requestTerminalCertificate;
+
+EXTERN int asn1PE_H245ConferenceRequest_requestTerminalCertificate (OOCTXT* pctxt, H245ConferenceRequest_requestTerminalCertificate* pvalue);
+
+EXTERN int asn1PD_H245ConferenceRequest_requestTerminalCertificate (OOCTXT* pctxt, H245ConferenceRequest_requestTerminalCertificate* pvalue);
+
+/**************************************************************/
+/* */
+/* RemoteMCRequest */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RemoteMCRequest_masterActivate 1
+#define T_H245RemoteMCRequest_slaveActivate 2
+#define T_H245RemoteMCRequest_deActivate 3
+#define T_H245RemoteMCRequest_extElem1 4
+
+typedef struct EXTERN H245RemoteMCRequest {
+ int t;
+} H245RemoteMCRequest;
+
+EXTERN int asn1PE_H245RemoteMCRequest (OOCTXT* pctxt, H245RemoteMCRequest* pvalue);
+
+EXTERN int asn1PD_H245RemoteMCRequest (OOCTXT* pctxt, H245RemoteMCRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceRequest */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245ConferenceRequest_terminalListRequest 1
+#define T_H245ConferenceRequest_makeMeChair 2
+#define T_H245ConferenceRequest_cancelMakeMeChair 3
+#define T_H245ConferenceRequest_dropTerminal 4
+#define T_H245ConferenceRequest_requestTerminalID 5
+#define T_H245ConferenceRequest_enterH243Password 6
+#define T_H245ConferenceRequest_enterH243TerminalID 7
+#define T_H245ConferenceRequest_enterH243ConferenceID 8
+#define T_H245ConferenceRequest_enterExtensionAddress 9
+#define T_H245ConferenceRequest_requestChairTokenOwner 10
+#define T_H245ConferenceRequest_requestTerminalCertificate 11
+#define T_H245ConferenceRequest_broadcastMyLogicalChannel 12
+#define T_H245ConferenceRequest_makeTerminalBroadcaster 13
+#define T_H245ConferenceRequest_sendThisSource 14
+#define T_H245ConferenceRequest_requestAllTerminalIDs 15
+#define T_H245ConferenceRequest_remoteMCRequest 16
+#define T_H245ConferenceRequest_extElem1 17
+
+typedef struct EXTERN H245ConferenceRequest {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ H245TerminalLabel *dropTerminal;
+ /* t = 5 */
+ H245TerminalLabel *requestTerminalID;
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ /* t = 9 */
+ /* t = 10 */
+ /* t = 11 */
+ H245ConferenceRequest_requestTerminalCertificate *requestTerminalCertificate;
+ /* t = 12 */
+ H245LogicalChannelNumber broadcastMyLogicalChannel;
+ /* t = 13 */
+ H245TerminalLabel *makeTerminalBroadcaster;
+ /* t = 14 */
+ H245TerminalLabel *sendThisSource;
+ /* t = 15 */
+ /* t = 16 */
+ H245RemoteMCRequest *remoteMCRequest;
+ /* t = 17 */
+ } u;
+} H245ConferenceRequest;
+
+EXTERN int asn1PE_H245ConferenceRequest (OOCTXT* pctxt, H245ConferenceRequest* pvalue);
+
+EXTERN int asn1PD_H245ConferenceRequest (OOCTXT* pctxt, H245ConferenceRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_callInformation */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultilinkRequest_callInformation {
+ ASN1USINT maxNumberOfAdditionalConnections;
+} H245MultilinkRequest_callInformation;
+
+EXTERN int asn1PE_H245MultilinkRequest_callInformation (OOCTXT* pctxt, H245MultilinkRequest_callInformation* pvalue);
+
+EXTERN int asn1PD_H245MultilinkRequest_callInformation (OOCTXT* pctxt, H245MultilinkRequest_callInformation* pvalue);
+
+/**************************************************************/
+/* */
+/* DialingInformationNetworkType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245DialingInformationNetworkType_nonStandard 1
+#define T_H245DialingInformationNetworkType_n_isdn 2
+#define T_H245DialingInformationNetworkType_gstn 3
+#define T_H245DialingInformationNetworkType_mobile 4
+#define T_H245DialingInformationNetworkType_extElem1 5
+
+typedef struct EXTERN H245DialingInformationNetworkType {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardMessage *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ } u;
+} H245DialingInformationNetworkType;
+
+EXTERN int asn1PE_H245DialingInformationNetworkType (OOCTXT* pctxt, H245DialingInformationNetworkType* pvalue);
+
+EXTERN int asn1PD_H245DialingInformationNetworkType (OOCTXT* pctxt, H245DialingInformationNetworkType* pvalue);
+
+/**************************************************************/
+/* */
+/* DialingInformationNumber_networkType */
+/* */
+/**************************************************************/
+
+/* List of H245DialingInformationNetworkType */
+typedef DList H245DialingInformationNumber_networkType;
+
+EXTERN int asn1PE_H245DialingInformationNumber_networkType (OOCTXT* pctxt, H245DialingInformationNumber_networkType* pvalue);
+
+EXTERN int asn1PD_H245DialingInformationNumber_networkType (OOCTXT* pctxt, H245DialingInformationNumber_networkType* pvalue);
+
+/**************************************************************/
+/* */
+/* DialingInformationNumber */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245DialingInformationNumber {
+ struct {
+ unsigned subAddressPresent : 1;
+ } m;
+ ASN1NumericString networkAddress;
+ ASN1IA5String subAddress;
+ H245DialingInformationNumber_networkType networkType;
+} H245DialingInformationNumber;
+
+EXTERN int asn1PE_H245DialingInformationNumber (OOCTXT* pctxt, H245DialingInformationNumber* pvalue);
+
+EXTERN int asn1PD_H245DialingInformationNumber (OOCTXT* pctxt, H245DialingInformationNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* DialingInformation_differential */
+/* */
+/**************************************************************/
+
+/* List of H245DialingInformationNumber */
+typedef DList H245DialingInformation_differential;
+
+EXTERN int asn1PE_H245DialingInformation_differential (OOCTXT* pctxt, H245DialingInformation_differential* pvalue);
+
+EXTERN int asn1PD_H245DialingInformation_differential (OOCTXT* pctxt, H245DialingInformation_differential* pvalue);
+
+/**************************************************************/
+/* */
+/* DialingInformation */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245DialingInformation_nonStandard 1
+#define T_H245DialingInformation_differential 2
+#define T_H245DialingInformation_infoNotAvailable 3
+#define T_H245DialingInformation_extElem1 4
+
+typedef struct EXTERN H245DialingInformation {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardMessage *nonStandard;
+ /* t = 2 */
+ H245DialingInformation_differential *differential;
+ /* t = 3 */
+ ASN1USINT infoNotAvailable;
+ /* t = 4 */
+ } u;
+} H245DialingInformation;
+
+EXTERN int asn1PE_H245DialingInformation (OOCTXT* pctxt, H245DialingInformation* pvalue);
+
+EXTERN int asn1PD_H245DialingInformation (OOCTXT* pctxt, H245DialingInformation* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_addConnection */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultilinkRequest_addConnection {
+ H245SequenceNumber sequenceNumber;
+ H245DialingInformation dialingInformation;
+} H245MultilinkRequest_addConnection;
+
+EXTERN int asn1PE_H245MultilinkRequest_addConnection (OOCTXT* pctxt, H245MultilinkRequest_addConnection* pvalue);
+
+EXTERN int asn1PD_H245MultilinkRequest_addConnection (OOCTXT* pctxt, H245MultilinkRequest_addConnection* pvalue);
+
+/**************************************************************/
+/* */
+/* ConnectionIdentifier */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245ConnectionIdentifier {
+ ASN1UINT channelTag;
+ ASN1UINT sequenceNumber;
+} H245ConnectionIdentifier;
+
+EXTERN int asn1PE_H245ConnectionIdentifier (OOCTXT* pctxt, H245ConnectionIdentifier* pvalue);
+
+EXTERN int asn1PD_H245ConnectionIdentifier (OOCTXT* pctxt, H245ConnectionIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_removeConnection */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultilinkRequest_removeConnection {
+ H245ConnectionIdentifier connectionIdentifier;
+} H245MultilinkRequest_removeConnection;
+
+EXTERN int asn1PE_H245MultilinkRequest_removeConnection (OOCTXT* pctxt, H245MultilinkRequest_removeConnection* pvalue);
+
+EXTERN int asn1PD_H245MultilinkRequest_removeConnection (OOCTXT* pctxt, H245MultilinkRequest_removeConnection* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_maximumHeaderInterval_requestType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MultilinkRequest_maximumHeaderInterval_requestType_currentIntervalInformation 1
+#define T_H245MultilinkRequest_maximumHeaderInterval_requestType_requestedInterval 2
+#define T_H245MultilinkRequest_maximumHeaderInterval_requestType_extElem1 3
+
+typedef struct EXTERN H245MultilinkRequest_maximumHeaderInterval_requestType {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ ASN1USINT requestedInterval;
+ /* t = 3 */
+ } u;
+} H245MultilinkRequest_maximumHeaderInterval_requestType;
+
+EXTERN int asn1PE_H245MultilinkRequest_maximumHeaderInterval_requestType (OOCTXT* pctxt, H245MultilinkRequest_maximumHeaderInterval_requestType* pvalue);
+
+EXTERN int asn1PD_H245MultilinkRequest_maximumHeaderInterval_requestType (OOCTXT* pctxt, H245MultilinkRequest_maximumHeaderInterval_requestType* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_maximumHeaderInterval */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultilinkRequest_maximumHeaderInterval {
+ H245MultilinkRequest_maximumHeaderInterval_requestType requestType;
+} H245MultilinkRequest_maximumHeaderInterval;
+
+EXTERN int asn1PE_H245MultilinkRequest_maximumHeaderInterval (OOCTXT* pctxt, H245MultilinkRequest_maximumHeaderInterval* pvalue);
+
+EXTERN int asn1PD_H245MultilinkRequest_maximumHeaderInterval (OOCTXT* pctxt, H245MultilinkRequest_maximumHeaderInterval* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkRequest */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MultilinkRequest_nonStandard 1
+#define T_H245MultilinkRequest_callInformation 2
+#define T_H245MultilinkRequest_addConnection 3
+#define T_H245MultilinkRequest_removeConnection 4
+#define T_H245MultilinkRequest_maximumHeaderInterval 5
+#define T_H245MultilinkRequest_extElem1 6
+
+typedef struct EXTERN H245MultilinkRequest {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardMessage *nonStandard;
+ /* t = 2 */
+ H245MultilinkRequest_callInformation *callInformation;
+ /* t = 3 */
+ H245MultilinkRequest_addConnection *addConnection;
+ /* t = 4 */
+ H245MultilinkRequest_removeConnection *removeConnection;
+ /* t = 5 */
+ H245MultilinkRequest_maximumHeaderInterval *maximumHeaderInterval;
+ /* t = 6 */
+ } u;
+} H245MultilinkRequest;
+
+EXTERN int asn1PE_H245MultilinkRequest (OOCTXT* pctxt, H245MultilinkRequest* pvalue);
+
+EXTERN int asn1PD_H245MultilinkRequest (OOCTXT* pctxt, H245MultilinkRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* MaximumBitRate */
+/* */
+/**************************************************************/
+
+typedef ASN1UINT H245MaximumBitRate;
+
+EXTERN int asn1PE_H245MaximumBitRate (OOCTXT* pctxt, H245MaximumBitRate value);
+
+EXTERN int asn1PD_H245MaximumBitRate (OOCTXT* pctxt, H245MaximumBitRate* pvalue);
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245LogicalChannelRateRequest {
+ H245SequenceNumber sequenceNumber;
+ H245LogicalChannelNumber logicalChannelNumber;
+ H245MaximumBitRate maximumBitRate;
+} H245LogicalChannelRateRequest;
+
+EXTERN int asn1PE_H245LogicalChannelRateRequest (OOCTXT* pctxt, H245LogicalChannelRateRequest* pvalue);
+
+EXTERN int asn1PD_H245LogicalChannelRateRequest (OOCTXT* pctxt, H245LogicalChannelRateRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestMessage */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RequestMessage_nonStandard 1
+#define T_H245RequestMessage_masterSlaveDetermination 2
+#define T_H245RequestMessage_terminalCapabilitySet 3
+#define T_H245RequestMessage_openLogicalChannel 4
+#define T_H245RequestMessage_closeLogicalChannel 5
+#define T_H245RequestMessage_requestChannelClose 6
+#define T_H245RequestMessage_multiplexEntrySend 7
+#define T_H245RequestMessage_requestMultiplexEntry 8
+#define T_H245RequestMessage_requestMode 9
+#define T_H245RequestMessage_roundTripDelayRequest 10
+#define T_H245RequestMessage_maintenanceLoopRequest 11
+#define T_H245RequestMessage_communicationModeRequest 12
+#define T_H245RequestMessage_conferenceRequest 13
+#define T_H245RequestMessage_multilinkRequest 14
+#define T_H245RequestMessage_logicalChannelRateRequest 15
+#define T_H245RequestMessage_extElem1 16
+
+typedef struct EXTERN H245RequestMessage {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardMessage *nonStandard;
+ /* t = 2 */
+ H245MasterSlaveDetermination *masterSlaveDetermination;
+ /* t = 3 */
+ H245TerminalCapabilitySet *terminalCapabilitySet;
+ /* t = 4 */
+ H245OpenLogicalChannel *openLogicalChannel;
+ /* t = 5 */
+ H245CloseLogicalChannel *closeLogicalChannel;
+ /* t = 6 */
+ H245RequestChannelClose *requestChannelClose;
+ /* t = 7 */
+ H245MultiplexEntrySend *multiplexEntrySend;
+ /* t = 8 */
+ H245RequestMultiplexEntry *requestMultiplexEntry;
+ /* t = 9 */
+ H245RequestMode *requestMode;
+ /* t = 10 */
+ H245RoundTripDelayRequest *roundTripDelayRequest;
+ /* t = 11 */
+ H245MaintenanceLoopRequest *maintenanceLoopRequest;
+ /* t = 12 */
+ H245CommunicationModeRequest *communicationModeRequest;
+ /* t = 13 */
+ H245ConferenceRequest *conferenceRequest;
+ /* t = 14 */
+ H245MultilinkRequest *multilinkRequest;
+ /* t = 15 */
+ H245LogicalChannelRateRequest *logicalChannelRateRequest;
+ /* t = 16 */
+ } u;
+} H245RequestMessage;
+
+EXTERN int asn1PE_H245RequestMessage (OOCTXT* pctxt, H245RequestMessage* pvalue);
+
+EXTERN int asn1PD_H245RequestMessage (OOCTXT* pctxt, H245RequestMessage* pvalue);
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationAck_decision */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MasterSlaveDeterminationAck_decision_master 1
+#define T_H245MasterSlaveDeterminationAck_decision_slave 2
+
+typedef struct EXTERN H245MasterSlaveDeterminationAck_decision {
+ int t;
+} H245MasterSlaveDeterminationAck_decision;
+
+EXTERN int asn1PE_H245MasterSlaveDeterminationAck_decision (OOCTXT* pctxt, H245MasterSlaveDeterminationAck_decision* pvalue);
+
+EXTERN int asn1PD_H245MasterSlaveDeterminationAck_decision (OOCTXT* pctxt, H245MasterSlaveDeterminationAck_decision* pvalue);
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationAck */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MasterSlaveDeterminationAck {
+ H245MasterSlaveDeterminationAck_decision decision;
+} H245MasterSlaveDeterminationAck;
+
+EXTERN int asn1PE_H245MasterSlaveDeterminationAck (OOCTXT* pctxt, H245MasterSlaveDeterminationAck* pvalue);
+
+EXTERN int asn1PD_H245MasterSlaveDeterminationAck (OOCTXT* pctxt, H245MasterSlaveDeterminationAck* pvalue);
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationReject_cause */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MasterSlaveDeterminationReject_cause_identicalNumbers 1
+#define T_H245MasterSlaveDeterminationReject_cause_extElem1 2
+
+typedef struct EXTERN H245MasterSlaveDeterminationReject_cause {
+ int t;
+} H245MasterSlaveDeterminationReject_cause;
+
+EXTERN int asn1PE_H245MasterSlaveDeterminationReject_cause (OOCTXT* pctxt, H245MasterSlaveDeterminationReject_cause* pvalue);
+
+EXTERN int asn1PD_H245MasterSlaveDeterminationReject_cause (OOCTXT* pctxt, H245MasterSlaveDeterminationReject_cause* pvalue);
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MasterSlaveDeterminationReject {
+ H245MasterSlaveDeterminationReject_cause cause;
+} H245MasterSlaveDeterminationReject;
+
+EXTERN int asn1PE_H245MasterSlaveDeterminationReject (OOCTXT* pctxt, H245MasterSlaveDeterminationReject* pvalue);
+
+EXTERN int asn1PD_H245MasterSlaveDeterminationReject (OOCTXT* pctxt, H245MasterSlaveDeterminationReject* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetAck */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245TerminalCapabilitySetAck {
+ H245SequenceNumber sequenceNumber;
+} H245TerminalCapabilitySetAck;
+
+EXTERN int asn1PE_H245TerminalCapabilitySetAck (OOCTXT* pctxt, H245TerminalCapabilitySetAck* pvalue);
+
+EXTERN int asn1PD_H245TerminalCapabilitySetAck (OOCTXT* pctxt, H245TerminalCapabilitySetAck* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetReject_cause_tableEntryCapacityExce */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded_highestEntryNumberProcessed 1
+#define T_H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded_noneProcessed 2
+
+typedef struct EXTERN H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded {
+ int t;
+ union {
+ /* t = 1 */
+ H245CapabilityTableEntryNumber highestEntryNumberProcessed;
+ /* t = 2 */
+ } u;
+} H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded;
+
+EXTERN int asn1PE_H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded (OOCTXT* pctxt, H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded* pvalue);
+
+EXTERN int asn1PD_H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded (OOCTXT* pctxt, H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetReject_cause */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245TerminalCapabilitySetReject_cause_unspecified 1
+#define T_H245TerminalCapabilitySetReject_cause_undefinedTableEntryUsed 2
+#define T_H245TerminalCapabilitySetReject_cause_descriptorCapacityExceeded 3
+#define T_H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded 4
+#define T_H245TerminalCapabilitySetReject_cause_extElem1 5
+
+typedef struct EXTERN H245TerminalCapabilitySetReject_cause {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded *tableEntryCapacityExceeded;
+ /* t = 5 */
+ } u;
+} H245TerminalCapabilitySetReject_cause;
+
+EXTERN int asn1PE_H245TerminalCapabilitySetReject_cause (OOCTXT* pctxt, H245TerminalCapabilitySetReject_cause* pvalue);
+
+EXTERN int asn1PD_H245TerminalCapabilitySetReject_cause (OOCTXT* pctxt, H245TerminalCapabilitySetReject_cause* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245TerminalCapabilitySetReject {
+ H245SequenceNumber sequenceNumber;
+ H245TerminalCapabilitySetReject_cause cause;
+} H245TerminalCapabilitySetReject;
+
+EXTERN int asn1PE_H245TerminalCapabilitySetReject (OOCTXT* pctxt, H245TerminalCapabilitySetReject* pvalue);
+
+EXTERN int asn1PD_H245TerminalCapabilitySetReject (OOCTXT* pctxt, H245TerminalCapabilitySetReject* pvalue);
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelAck_reverseLogicalChannelParameters_mu */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters 1
+#define T_H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters 2
+#define T_H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_extElem1 3
+
+typedef struct EXTERN H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters {
+ int t;
+ union {
+ /* t = 1 */
+ H245H222LogicalChannelParameters *h222LogicalChannelParameters;
+ /* t = 2 */
+ H245H2250LogicalChannelParameters *h2250LogicalChannelParameters;
+ /* t = 3 */
+ } u;
+} H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters;
+
+EXTERN int asn1PE_H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters* pvalue);
+
+EXTERN int asn1PD_H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelAck_reverseLogicalChannelParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245OpenLogicalChannelAck_reverseLogicalChannelParameters {
+ struct {
+ unsigned portNumberPresent : 1;
+ unsigned multiplexParametersPresent : 1;
+ unsigned replacementForPresent : 1;
+ } m;
+ H245LogicalChannelNumber reverseLogicalChannelNumber;
+ ASN1USINT portNumber;
+ H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters multiplexParameters;
+ H245LogicalChannelNumber replacementFor;
+} H245OpenLogicalChannelAck_reverseLogicalChannelParameters;
+
+EXTERN int asn1PE_H245OpenLogicalChannelAck_reverseLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_reverseLogicalChannelParameters* pvalue);
+
+EXTERN int asn1PD_H245OpenLogicalChannelAck_reverseLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_reverseLogicalChannelParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* H2250LogicalChannelAckParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H2250LogicalChannelAckParameters {
+ struct {
+ unsigned nonStandardPresent : 1;
+ unsigned sessionIDPresent : 1;
+ unsigned mediaChannelPresent : 1;
+ unsigned mediaControlChannelPresent : 1;
+ unsigned dynamicRTPPayloadTypePresent : 1;
+ unsigned flowControlToZeroPresent : 1;
+ unsigned portNumberPresent : 1;
+ } m;
+ H245_SeqOfH245NonStandardParameter nonStandard;
+ ASN1UINT8 sessionID;
+ H245TransportAddress mediaChannel;
+ H245TransportAddress mediaControlChannel;
+ ASN1UINT8 dynamicRTPPayloadType;
+ ASN1BOOL flowControlToZero;
+ ASN1USINT portNumber;
+} H245H2250LogicalChannelAckParameters;
+
+EXTERN int asn1PE_H245H2250LogicalChannelAckParameters (OOCTXT* pctxt, H245H2250LogicalChannelAckParameters* pvalue);
+
+EXTERN int asn1PD_H245H2250LogicalChannelAckParameters (OOCTXT* pctxt, H245H2250LogicalChannelAckParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelAck_forwardMultiplexAckParameters */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245OpenLogicalChannelAck_forwardMultiplexAckParameters_h2250LogicalChannelAckParameters 1
+#define T_H245OpenLogicalChannelAck_forwardMultiplexAckParameters_extElem1 2
+
+typedef struct EXTERN H245OpenLogicalChannelAck_forwardMultiplexAckParameters {
+ int t;
+ union {
+ /* t = 1 */
+ H245H2250LogicalChannelAckParameters *h2250LogicalChannelAckParameters;
+ /* t = 2 */
+ } u;
+} H245OpenLogicalChannelAck_forwardMultiplexAckParameters;
+
+EXTERN int asn1PE_H245OpenLogicalChannelAck_forwardMultiplexAckParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_forwardMultiplexAckParameters* pvalue);
+
+EXTERN int asn1PD_H245OpenLogicalChannelAck_forwardMultiplexAckParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_forwardMultiplexAckParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelAck */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245OpenLogicalChannelAck {
+ struct {
+ unsigned reverseLogicalChannelParametersPresent : 1;
+ unsigned separateStackPresent : 1;
+ unsigned forwardMultiplexAckParametersPresent : 1;
+ unsigned encryptionSyncPresent : 1;
+ } m;
+ H245LogicalChannelNumber forwardLogicalChannelNumber;
+ H245OpenLogicalChannelAck_reverseLogicalChannelParameters reverseLogicalChannelParameters;
+ H245NetworkAccessParameters separateStack;
+ H245OpenLogicalChannelAck_forwardMultiplexAckParameters forwardMultiplexAckParameters;
+ H245EncryptionSync encryptionSync;
+} H245OpenLogicalChannelAck;
+
+EXTERN int asn1PE_H245OpenLogicalChannelAck (OOCTXT* pctxt, H245OpenLogicalChannelAck* pvalue);
+
+EXTERN int asn1PD_H245OpenLogicalChannelAck (OOCTXT* pctxt, H245OpenLogicalChannelAck* pvalue);
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelReject_cause */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245OpenLogicalChannelReject_cause_unspecified 1
+#define T_H245OpenLogicalChannelReject_cause_unsuitableReverseParameters 2
+#define T_H245OpenLogicalChannelReject_cause_dataTypeNotSupported 3
+#define T_H245OpenLogicalChannelReject_cause_dataTypeNotAvailable 4
+#define T_H245OpenLogicalChannelReject_cause_unknownDataType 5
+#define T_H245OpenLogicalChannelReject_cause_dataTypeALCombinationNotSupported 6
+#define T_H245OpenLogicalChannelReject_cause_multicastChannelNotAllowed 7
+#define T_H245OpenLogicalChannelReject_cause_insufficientBandwidth 8
+#define T_H245OpenLogicalChannelReject_cause_separateStackEstablishmentFailed 9
+#define T_H245OpenLogicalChannelReject_cause_invalidSessionID 10
+#define T_H245OpenLogicalChannelReject_cause_masterSlaveConflict 11
+#define T_H245OpenLogicalChannelReject_cause_waitForCommunicationMode 12
+#define T_H245OpenLogicalChannelReject_cause_invalidDependentChannel 13
+#define T_H245OpenLogicalChannelReject_cause_replacementForRejected 14
+#define T_H245OpenLogicalChannelReject_cause_extElem1 15
+
+typedef struct EXTERN H245OpenLogicalChannelReject_cause {
+ int t;
+} H245OpenLogicalChannelReject_cause;
+
+EXTERN int asn1PE_H245OpenLogicalChannelReject_cause (OOCTXT* pctxt, H245OpenLogicalChannelReject_cause* pvalue);
+
+EXTERN int asn1PD_H245OpenLogicalChannelReject_cause (OOCTXT* pctxt, H245OpenLogicalChannelReject_cause* pvalue);
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245OpenLogicalChannelReject {
+ H245LogicalChannelNumber forwardLogicalChannelNumber;
+ H245OpenLogicalChannelReject_cause cause;
+} H245OpenLogicalChannelReject;
+
+EXTERN int asn1PE_H245OpenLogicalChannelReject (OOCTXT* pctxt, H245OpenLogicalChannelReject* pvalue);
+
+EXTERN int asn1PD_H245OpenLogicalChannelReject (OOCTXT* pctxt, H245OpenLogicalChannelReject* pvalue);
+
+/**************************************************************/
+/* */
+/* CloseLogicalChannelAck */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245CloseLogicalChannelAck {
+ H245LogicalChannelNumber forwardLogicalChannelNumber;
+} H245CloseLogicalChannelAck;
+
+EXTERN int asn1PE_H245CloseLogicalChannelAck (OOCTXT* pctxt, H245CloseLogicalChannelAck* pvalue);
+
+EXTERN int asn1PD_H245CloseLogicalChannelAck (OOCTXT* pctxt, H245CloseLogicalChannelAck* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestChannelCloseAck */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestChannelCloseAck {
+ H245LogicalChannelNumber forwardLogicalChannelNumber;
+} H245RequestChannelCloseAck;
+
+EXTERN int asn1PE_H245RequestChannelCloseAck (OOCTXT* pctxt, H245RequestChannelCloseAck* pvalue);
+
+EXTERN int asn1PD_H245RequestChannelCloseAck (OOCTXT* pctxt, H245RequestChannelCloseAck* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestChannelCloseReject_cause */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RequestChannelCloseReject_cause_unspecified 1
+#define T_H245RequestChannelCloseReject_cause_extElem1 2
+
+typedef struct EXTERN H245RequestChannelCloseReject_cause {
+ int t;
+} H245RequestChannelCloseReject_cause;
+
+EXTERN int asn1PE_H245RequestChannelCloseReject_cause (OOCTXT* pctxt, H245RequestChannelCloseReject_cause* pvalue);
+
+EXTERN int asn1PD_H245RequestChannelCloseReject_cause (OOCTXT* pctxt, H245RequestChannelCloseReject_cause* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestChannelCloseReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestChannelCloseReject {
+ H245LogicalChannelNumber forwardLogicalChannelNumber;
+ H245RequestChannelCloseReject_cause cause;
+} H245RequestChannelCloseReject;
+
+EXTERN int asn1PE_H245RequestChannelCloseReject (OOCTXT* pctxt, H245RequestChannelCloseReject* pvalue);
+
+EXTERN int asn1PD_H245RequestChannelCloseReject (OOCTXT* pctxt, H245RequestChannelCloseReject* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendAck_multiplexTableEntryNumber */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplexEntrySendAck_multiplexTableEntryNumber {
+ ASN1UINT n;
+ H245MultiplexTableEntryNumber elem[15];
+} H245MultiplexEntrySendAck_multiplexTableEntryNumber;
+
+EXTERN int asn1PE_H245MultiplexEntrySendAck_multiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexEntrySendAck_multiplexTableEntryNumber* pvalue);
+
+EXTERN int asn1PD_H245MultiplexEntrySendAck_multiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexEntrySendAck_multiplexTableEntryNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendAck */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplexEntrySendAck {
+ H245SequenceNumber sequenceNumber;
+ H245MultiplexEntrySendAck_multiplexTableEntryNumber multiplexTableEntryNumber;
+} H245MultiplexEntrySendAck;
+
+EXTERN int asn1PE_H245MultiplexEntrySendAck (OOCTXT* pctxt, H245MultiplexEntrySendAck* pvalue);
+
+EXTERN int asn1PD_H245MultiplexEntrySendAck (OOCTXT* pctxt, H245MultiplexEntrySendAck* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexEntryRejectionDescriptions_cause */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MultiplexEntryRejectionDescriptions_cause_unspecifiedCause 1
+#define T_H245MultiplexEntryRejectionDescriptions_cause_descriptorTooComplex 2
+#define T_H245MultiplexEntryRejectionDescriptions_cause_extElem1 3
+
+typedef struct EXTERN H245MultiplexEntryRejectionDescriptions_cause {
+ int t;
+} H245MultiplexEntryRejectionDescriptions_cause;
+
+EXTERN int asn1PE_H245MultiplexEntryRejectionDescriptions_cause (OOCTXT* pctxt, H245MultiplexEntryRejectionDescriptions_cause* pvalue);
+
+EXTERN int asn1PD_H245MultiplexEntryRejectionDescriptions_cause (OOCTXT* pctxt, H245MultiplexEntryRejectionDescriptions_cause* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexEntryRejectionDescriptions */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplexEntryRejectionDescriptions {
+ H245MultiplexTableEntryNumber multiplexTableEntryNumber;
+ H245MultiplexEntryRejectionDescriptions_cause cause;
+} H245MultiplexEntryRejectionDescriptions;
+
+EXTERN int asn1PE_H245MultiplexEntryRejectionDescriptions (OOCTXT* pctxt, H245MultiplexEntryRejectionDescriptions* pvalue);
+
+EXTERN int asn1PD_H245MultiplexEntryRejectionDescriptions (OOCTXT* pctxt, H245MultiplexEntryRejectionDescriptions* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendReject_rejectionDescriptions */
+/* */
+/**************************************************************/
+
+/* List of H245MultiplexEntryRejectionDescriptions */
+typedef DList H245MultiplexEntrySendReject_rejectionDescriptions;
+
+EXTERN int asn1PE_H245MultiplexEntrySendReject_rejectionDescriptions (OOCTXT* pctxt, H245MultiplexEntrySendReject_rejectionDescriptions* pvalue);
+
+EXTERN int asn1PD_H245MultiplexEntrySendReject_rejectionDescriptions (OOCTXT* pctxt, H245MultiplexEntrySendReject_rejectionDescriptions* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplexEntrySendReject {
+ H245SequenceNumber sequenceNumber;
+ H245MultiplexEntrySendReject_rejectionDescriptions rejectionDescriptions;
+} H245MultiplexEntrySendReject;
+
+EXTERN int asn1PE_H245MultiplexEntrySendReject (OOCTXT* pctxt, H245MultiplexEntrySendReject* pvalue);
+
+EXTERN int asn1PD_H245MultiplexEntrySendReject (OOCTXT* pctxt, H245MultiplexEntrySendReject* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryAck_entryNumbers */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestMultiplexEntryAck_entryNumbers {
+ ASN1UINT n;
+ H245MultiplexTableEntryNumber elem[15];
+} H245RequestMultiplexEntryAck_entryNumbers;
+
+EXTERN int asn1PE_H245RequestMultiplexEntryAck_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryAck_entryNumbers* pvalue);
+
+EXTERN int asn1PD_H245RequestMultiplexEntryAck_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryAck_entryNumbers* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryAck */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestMultiplexEntryAck {
+ H245RequestMultiplexEntryAck_entryNumbers entryNumbers;
+} H245RequestMultiplexEntryAck;
+
+EXTERN int asn1PE_H245RequestMultiplexEntryAck (OOCTXT* pctxt, H245RequestMultiplexEntryAck* pvalue);
+
+EXTERN int asn1PD_H245RequestMultiplexEntryAck (OOCTXT* pctxt, H245RequestMultiplexEntryAck* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryReject_entryNumbers */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestMultiplexEntryReject_entryNumbers {
+ ASN1UINT n;
+ H245MultiplexTableEntryNumber elem[15];
+} H245RequestMultiplexEntryReject_entryNumbers;
+
+EXTERN int asn1PE_H245RequestMultiplexEntryReject_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryReject_entryNumbers* pvalue);
+
+EXTERN int asn1PD_H245RequestMultiplexEntryReject_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryReject_entryNumbers* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryRejectionDescriptions_cause */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RequestMultiplexEntryRejectionDescriptions_cause_unspecifiedCause 1
+#define T_H245RequestMultiplexEntryRejectionDescriptions_cause_extElem1 2
+
+typedef struct EXTERN H245RequestMultiplexEntryRejectionDescriptions_cause {
+ int t;
+} H245RequestMultiplexEntryRejectionDescriptions_cause;
+
+EXTERN int asn1PE_H245RequestMultiplexEntryRejectionDescriptions_cause (OOCTXT* pctxt, H245RequestMultiplexEntryRejectionDescriptions_cause* pvalue);
+
+EXTERN int asn1PD_H245RequestMultiplexEntryRejectionDescriptions_cause (OOCTXT* pctxt, H245RequestMultiplexEntryRejectionDescriptions_cause* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryRejectionDescriptions */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestMultiplexEntryRejectionDescriptions {
+ H245MultiplexTableEntryNumber multiplexTableEntryNumber;
+ H245RequestMultiplexEntryRejectionDescriptions_cause cause;
+} H245RequestMultiplexEntryRejectionDescriptions;
+
+EXTERN int asn1PE_H245RequestMultiplexEntryRejectionDescriptions (OOCTXT* pctxt, H245RequestMultiplexEntryRejectionDescriptions* pvalue);
+
+EXTERN int asn1PD_H245RequestMultiplexEntryRejectionDescriptions (OOCTXT* pctxt, H245RequestMultiplexEntryRejectionDescriptions* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryReject_rejectionDescriptions */
+/* */
+/**************************************************************/
+
+/* List of H245RequestMultiplexEntryRejectionDescriptions */
+typedef DList H245RequestMultiplexEntryReject_rejectionDescriptions;
+
+EXTERN int asn1PE_H245RequestMultiplexEntryReject_rejectionDescriptions (OOCTXT* pctxt, H245RequestMultiplexEntryReject_rejectionDescriptions* pvalue);
+
+EXTERN int asn1PD_H245RequestMultiplexEntryReject_rejectionDescriptions (OOCTXT* pctxt, H245RequestMultiplexEntryReject_rejectionDescriptions* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestMultiplexEntryReject {
+ H245RequestMultiplexEntryReject_entryNumbers entryNumbers;
+ H245RequestMultiplexEntryReject_rejectionDescriptions rejectionDescriptions;
+} H245RequestMultiplexEntryReject;
+
+EXTERN int asn1PE_H245RequestMultiplexEntryReject (OOCTXT* pctxt, H245RequestMultiplexEntryReject* pvalue);
+
+EXTERN int asn1PD_H245RequestMultiplexEntryReject (OOCTXT* pctxt, H245RequestMultiplexEntryReject* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestModeAck_response */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RequestModeAck_response_willTransmitMostPreferredMode 1
+#define T_H245RequestModeAck_response_willTransmitLessPreferredMode 2
+#define T_H245RequestModeAck_response_extElem1 3
+
+typedef struct EXTERN H245RequestModeAck_response {
+ int t;
+} H245RequestModeAck_response;
+
+EXTERN int asn1PE_H245RequestModeAck_response (OOCTXT* pctxt, H245RequestModeAck_response* pvalue);
+
+EXTERN int asn1PD_H245RequestModeAck_response (OOCTXT* pctxt, H245RequestModeAck_response* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestModeAck */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestModeAck {
+ H245SequenceNumber sequenceNumber;
+ H245RequestModeAck_response response;
+} H245RequestModeAck;
+
+EXTERN int asn1PE_H245RequestModeAck (OOCTXT* pctxt, H245RequestModeAck* pvalue);
+
+EXTERN int asn1PD_H245RequestModeAck (OOCTXT* pctxt, H245RequestModeAck* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestModeReject_cause */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RequestModeReject_cause_modeUnavailable 1
+#define T_H245RequestModeReject_cause_multipointConstraint 2
+#define T_H245RequestModeReject_cause_requestDenied 3
+#define T_H245RequestModeReject_cause_extElem1 4
+
+typedef struct EXTERN H245RequestModeReject_cause {
+ int t;
+} H245RequestModeReject_cause;
+
+EXTERN int asn1PE_H245RequestModeReject_cause (OOCTXT* pctxt, H245RequestModeReject_cause* pvalue);
+
+EXTERN int asn1PD_H245RequestModeReject_cause (OOCTXT* pctxt, H245RequestModeReject_cause* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestModeReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestModeReject {
+ H245SequenceNumber sequenceNumber;
+ H245RequestModeReject_cause cause;
+} H245RequestModeReject;
+
+EXTERN int asn1PE_H245RequestModeReject (OOCTXT* pctxt, H245RequestModeReject* pvalue);
+
+EXTERN int asn1PD_H245RequestModeReject (OOCTXT* pctxt, H245RequestModeReject* pvalue);
+
+/**************************************************************/
+/* */
+/* RoundTripDelayResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RoundTripDelayResponse {
+ H245SequenceNumber sequenceNumber;
+} H245RoundTripDelayResponse;
+
+EXTERN int asn1PE_H245RoundTripDelayResponse (OOCTXT* pctxt, H245RoundTripDelayResponse* pvalue);
+
+EXTERN int asn1PD_H245RoundTripDelayResponse (OOCTXT* pctxt, H245RoundTripDelayResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopAck_type */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MaintenanceLoopAck_type_systemLoop 1
+#define T_H245MaintenanceLoopAck_type_mediaLoop 2
+#define T_H245MaintenanceLoopAck_type_logicalChannelLoop 3
+#define T_H245MaintenanceLoopAck_type_extElem1 4
+
+typedef struct EXTERN H245MaintenanceLoopAck_type {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H245LogicalChannelNumber mediaLoop;
+ /* t = 3 */
+ H245LogicalChannelNumber logicalChannelLoop;
+ /* t = 4 */
+ } u;
+} H245MaintenanceLoopAck_type;
+
+EXTERN int asn1PE_H245MaintenanceLoopAck_type (OOCTXT* pctxt, H245MaintenanceLoopAck_type* pvalue);
+
+EXTERN int asn1PD_H245MaintenanceLoopAck_type (OOCTXT* pctxt, H245MaintenanceLoopAck_type* pvalue);
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopAck */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MaintenanceLoopAck {
+ H245MaintenanceLoopAck_type type;
+} H245MaintenanceLoopAck;
+
+EXTERN int asn1PE_H245MaintenanceLoopAck (OOCTXT* pctxt, H245MaintenanceLoopAck* pvalue);
+
+EXTERN int asn1PD_H245MaintenanceLoopAck (OOCTXT* pctxt, H245MaintenanceLoopAck* pvalue);
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopReject_type */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MaintenanceLoopReject_type_systemLoop 1
+#define T_H245MaintenanceLoopReject_type_mediaLoop 2
+#define T_H245MaintenanceLoopReject_type_logicalChannelLoop 3
+#define T_H245MaintenanceLoopReject_type_extElem1 4
+
+typedef struct EXTERN H245MaintenanceLoopReject_type {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H245LogicalChannelNumber mediaLoop;
+ /* t = 3 */
+ H245LogicalChannelNumber logicalChannelLoop;
+ /* t = 4 */
+ } u;
+} H245MaintenanceLoopReject_type;
+
+EXTERN int asn1PE_H245MaintenanceLoopReject_type (OOCTXT* pctxt, H245MaintenanceLoopReject_type* pvalue);
+
+EXTERN int asn1PD_H245MaintenanceLoopReject_type (OOCTXT* pctxt, H245MaintenanceLoopReject_type* pvalue);
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopReject_cause */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MaintenanceLoopReject_cause_canNotPerformLoop 1
+#define T_H245MaintenanceLoopReject_cause_extElem1 2
+
+typedef struct EXTERN H245MaintenanceLoopReject_cause {
+ int t;
+} H245MaintenanceLoopReject_cause;
+
+EXTERN int asn1PE_H245MaintenanceLoopReject_cause (OOCTXT* pctxt, H245MaintenanceLoopReject_cause* pvalue);
+
+EXTERN int asn1PD_H245MaintenanceLoopReject_cause (OOCTXT* pctxt, H245MaintenanceLoopReject_cause* pvalue);
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MaintenanceLoopReject {
+ H245MaintenanceLoopReject_type type;
+ H245MaintenanceLoopReject_cause cause;
+} H245MaintenanceLoopReject;
+
+EXTERN int asn1PE_H245MaintenanceLoopReject (OOCTXT* pctxt, H245MaintenanceLoopReject* pvalue);
+
+EXTERN int asn1PD_H245MaintenanceLoopReject (OOCTXT* pctxt, H245MaintenanceLoopReject* pvalue);
+
+/**************************************************************/
+/* */
+/* CommunicationModeTableEntry_dataType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245CommunicationModeTableEntry_dataType_videoData 1
+#define T_H245CommunicationModeTableEntry_dataType_audioData 2
+#define T_H245CommunicationModeTableEntry_dataType_data 3
+#define T_H245CommunicationModeTableEntry_dataType_extElem1 4
+
+typedef struct EXTERN H245CommunicationModeTableEntry_dataType {
+ int t;
+ union {
+ /* t = 1 */
+ H245VideoCapability *videoData;
+ /* t = 2 */
+ H245AudioCapability *audioData;
+ /* t = 3 */
+ H245DataApplicationCapability *data;
+ /* t = 4 */
+ } u;
+} H245CommunicationModeTableEntry_dataType;
+
+EXTERN int asn1PE_H245CommunicationModeTableEntry_dataType (OOCTXT* pctxt, H245CommunicationModeTableEntry_dataType* pvalue);
+
+EXTERN int asn1PD_H245CommunicationModeTableEntry_dataType (OOCTXT* pctxt, H245CommunicationModeTableEntry_dataType* pvalue);
+
+/**************************************************************/
+/* */
+/* CommunicationModeTableEntry */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245CommunicationModeTableEntry {
+ struct {
+ unsigned nonStandardPresent : 1;
+ unsigned associatedSessionIDPresent : 1;
+ unsigned terminalLabelPresent : 1;
+ unsigned mediaChannelPresent : 1;
+ unsigned mediaGuaranteedDeliveryPresent : 1;
+ unsigned mediaControlChannelPresent : 1;
+ unsigned mediaControlGuaranteedDeliveryPresent : 1;
+ unsigned redundancyEncodingPresent : 1;
+ unsigned sessionDependencyPresent : 1;
+ unsigned destinationPresent : 1;
+ } m;
+ H245_SeqOfH245NonStandardParameter nonStandard;
+ ASN1UINT8 sessionID;
+ ASN1UINT8 associatedSessionID;
+ H245TerminalLabel terminalLabel;
+ ASN1BMPString sessionDescription;
+ H245CommunicationModeTableEntry_dataType dataType;
+ H245TransportAddress mediaChannel;
+ ASN1BOOL mediaGuaranteedDelivery;
+ H245TransportAddress mediaControlChannel;
+ ASN1BOOL mediaControlGuaranteedDelivery;
+ H245RedundancyEncoding redundancyEncoding;
+ ASN1UINT8 sessionDependency;
+ H245TerminalLabel destination;
+} H245CommunicationModeTableEntry;
+
+EXTERN int asn1PE_H245CommunicationModeTableEntry (OOCTXT* pctxt, H245CommunicationModeTableEntry* pvalue);
+
+EXTERN int asn1PD_H245CommunicationModeTableEntry (OOCTXT* pctxt, H245CommunicationModeTableEntry* pvalue);
+
+/**************************************************************/
+/* */
+/* CommunicationModeResponse_communicationModeTable */
+/* */
+/**************************************************************/
+
+/* List of H245CommunicationModeTableEntry */
+typedef DList H245CommunicationModeResponse_communicationModeTable;
+
+EXTERN int asn1PE_H245CommunicationModeResponse_communicationModeTable (OOCTXT* pctxt, H245CommunicationModeResponse_communicationModeTable* pvalue);
+
+EXTERN int asn1PD_H245CommunicationModeResponse_communicationModeTable (OOCTXT* pctxt, H245CommunicationModeResponse_communicationModeTable* pvalue);
+
+/**************************************************************/
+/* */
+/* CommunicationModeResponse */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245CommunicationModeResponse_communicationModeTable 1
+#define T_H245CommunicationModeResponse_extElem1 2
+
+typedef struct EXTERN H245CommunicationModeResponse {
+ int t;
+ union {
+ /* t = 1 */
+ H245CommunicationModeResponse_communicationModeTable *communicationModeTable;
+ /* t = 2 */
+ } u;
+} H245CommunicationModeResponse;
+
+EXTERN int asn1PE_H245CommunicationModeResponse (OOCTXT* pctxt, H245CommunicationModeResponse* pvalue);
+
+EXTERN int asn1PD_H245CommunicationModeResponse (OOCTXT* pctxt, H245CommunicationModeResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalID */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245TerminalID {
+ ASN1UINT numocts;
+ ASN1OCTET data[128];
+} H245TerminalID;
+
+EXTERN int asn1PE_H245TerminalID (OOCTXT* pctxt, H245TerminalID* pvalue);
+
+EXTERN int asn1PD_H245TerminalID (OOCTXT* pctxt, H245TerminalID* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_mCTerminalIDResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245ConferenceResponse_mCTerminalIDResponse {
+ H245TerminalLabel terminalLabel;
+ H245TerminalID terminalID;
+} H245ConferenceResponse_mCTerminalIDResponse;
+
+EXTERN int asn1PE_H245ConferenceResponse_mCTerminalIDResponse (OOCTXT* pctxt, H245ConferenceResponse_mCTerminalIDResponse* pvalue);
+
+EXTERN int asn1PD_H245ConferenceResponse_mCTerminalIDResponse (OOCTXT* pctxt, H245ConferenceResponse_mCTerminalIDResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_terminalIDResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245ConferenceResponse_terminalIDResponse {
+ H245TerminalLabel terminalLabel;
+ H245TerminalID terminalID;
+} H245ConferenceResponse_terminalIDResponse;
+
+EXTERN int asn1PE_H245ConferenceResponse_terminalIDResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalIDResponse* pvalue);
+
+EXTERN int asn1PD_H245ConferenceResponse_terminalIDResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalIDResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceID */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245ConferenceID {
+ ASN1UINT numocts;
+ ASN1OCTET data[32];
+} H245ConferenceID;
+
+EXTERN int asn1PE_H245ConferenceID (OOCTXT* pctxt, H245ConferenceID* pvalue);
+
+EXTERN int asn1PD_H245ConferenceID (OOCTXT* pctxt, H245ConferenceID* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_conferenceIDResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245ConferenceResponse_conferenceIDResponse {
+ H245TerminalLabel terminalLabel;
+ H245ConferenceID conferenceID;
+} H245ConferenceResponse_conferenceIDResponse;
+
+EXTERN int asn1PE_H245ConferenceResponse_conferenceIDResponse (OOCTXT* pctxt, H245ConferenceResponse_conferenceIDResponse* pvalue);
+
+EXTERN int asn1PD_H245ConferenceResponse_conferenceIDResponse (OOCTXT* pctxt, H245ConferenceResponse_conferenceIDResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* Password */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245Password {
+ ASN1UINT numocts;
+ ASN1OCTET data[32];
+} H245Password;
+
+EXTERN int asn1PE_H245Password (OOCTXT* pctxt, H245Password* pvalue);
+
+EXTERN int asn1PD_H245Password (OOCTXT* pctxt, H245Password* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_passwordResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245ConferenceResponse_passwordResponse {
+ H245TerminalLabel terminalLabel;
+ H245Password password;
+} H245ConferenceResponse_passwordResponse;
+
+EXTERN int asn1PE_H245ConferenceResponse_passwordResponse (OOCTXT* pctxt, H245ConferenceResponse_passwordResponse* pvalue);
+
+EXTERN int asn1PD_H245ConferenceResponse_passwordResponse (OOCTXT* pctxt, H245ConferenceResponse_passwordResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_terminalListResponse */
+/* */
+/**************************************************************/
+
+/* List of H245TerminalLabel */
+typedef DList H245ConferenceResponse_terminalListResponse;
+
+EXTERN int asn1PE_H245ConferenceResponse_terminalListResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalListResponse* pvalue);
+
+EXTERN int asn1PD_H245ConferenceResponse_terminalListResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalListResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_makeMeChairResponse */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245ConferenceResponse_makeMeChairResponse_grantedChairToken 1
+#define T_H245ConferenceResponse_makeMeChairResponse_deniedChairToken 2
+#define T_H245ConferenceResponse_makeMeChairResponse_extElem1 3
+
+typedef struct EXTERN H245ConferenceResponse_makeMeChairResponse {
+ int t;
+} H245ConferenceResponse_makeMeChairResponse;
+
+EXTERN int asn1PE_H245ConferenceResponse_makeMeChairResponse (OOCTXT* pctxt, H245ConferenceResponse_makeMeChairResponse* pvalue);
+
+EXTERN int asn1PD_H245ConferenceResponse_makeMeChairResponse (OOCTXT* pctxt, H245ConferenceResponse_makeMeChairResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_extensionAddressResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245ConferenceResponse_extensionAddressResponse {
+ H245TerminalID extensionAddress;
+} H245ConferenceResponse_extensionAddressResponse;
+
+EXTERN int asn1PE_H245ConferenceResponse_extensionAddressResponse (OOCTXT* pctxt, H245ConferenceResponse_extensionAddressResponse* pvalue);
+
+EXTERN int asn1PD_H245ConferenceResponse_extensionAddressResponse (OOCTXT* pctxt, H245ConferenceResponse_extensionAddressResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_chairTokenOwnerResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245ConferenceResponse_chairTokenOwnerResponse {
+ H245TerminalLabel terminalLabel;
+ H245TerminalID terminalID;
+} H245ConferenceResponse_chairTokenOwnerResponse;
+
+EXTERN int asn1PE_H245ConferenceResponse_chairTokenOwnerResponse (OOCTXT* pctxt, H245ConferenceResponse_chairTokenOwnerResponse* pvalue);
+
+EXTERN int asn1PD_H245ConferenceResponse_chairTokenOwnerResponse (OOCTXT* pctxt, H245ConferenceResponse_chairTokenOwnerResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_terminalCertificateResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245ConferenceResponse_terminalCertificateResponse {
+ struct {
+ unsigned terminalLabelPresent : 1;
+ unsigned certificateResponsePresent : 1;
+ } m;
+ H245TerminalLabel terminalLabel;
+ ASN1DynOctStr certificateResponse;
+} H245ConferenceResponse_terminalCertificateResponse;
+
+EXTERN int asn1PE_H245ConferenceResponse_terminalCertificateResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalCertificateResponse* pvalue);
+
+EXTERN int asn1PD_H245ConferenceResponse_terminalCertificateResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalCertificateResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_broadcastMyLogicalChannelResponse */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245ConferenceResponse_broadcastMyLogicalChannelResponse_grantedBroadcastMyLogicalChannel 1
+#define T_H245ConferenceResponse_broadcastMyLogicalChannelResponse_deniedBroadcastMyLogicalChannel 2
+#define T_H245ConferenceResponse_broadcastMyLogicalChannelResponse_extElem1 3
+
+typedef struct EXTERN H245ConferenceResponse_broadcastMyLogicalChannelResponse {
+ int t;
+} H245ConferenceResponse_broadcastMyLogicalChannelResponse;
+
+EXTERN int asn1PE_H245ConferenceResponse_broadcastMyLogicalChannelResponse (OOCTXT* pctxt, H245ConferenceResponse_broadcastMyLogicalChannelResponse* pvalue);
+
+EXTERN int asn1PD_H245ConferenceResponse_broadcastMyLogicalChannelResponse (OOCTXT* pctxt, H245ConferenceResponse_broadcastMyLogicalChannelResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_makeTerminalBroadcasterResponse */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245ConferenceResponse_makeTerminalBroadcasterResponse_grantedMakeTerminalBroadcaster 1
+#define T_H245ConferenceResponse_makeTerminalBroadcasterResponse_deniedMakeTerminalBroadcaster 2
+#define T_H245ConferenceResponse_makeTerminalBroadcasterResponse_extElem1 3
+
+typedef struct EXTERN H245ConferenceResponse_makeTerminalBroadcasterResponse {
+ int t;
+} H245ConferenceResponse_makeTerminalBroadcasterResponse;
+
+EXTERN int asn1PE_H245ConferenceResponse_makeTerminalBroadcasterResponse (OOCTXT* pctxt, H245ConferenceResponse_makeTerminalBroadcasterResponse* pvalue);
+
+EXTERN int asn1PD_H245ConferenceResponse_makeTerminalBroadcasterResponse (OOCTXT* pctxt, H245ConferenceResponse_makeTerminalBroadcasterResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_sendThisSourceResponse */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245ConferenceResponse_sendThisSourceResponse_grantedSendThisSource 1
+#define T_H245ConferenceResponse_sendThisSourceResponse_deniedSendThisSource 2
+#define T_H245ConferenceResponse_sendThisSourceResponse_extElem1 3
+
+typedef struct EXTERN H245ConferenceResponse_sendThisSourceResponse {
+ int t;
+} H245ConferenceResponse_sendThisSourceResponse;
+
+EXTERN int asn1PE_H245ConferenceResponse_sendThisSourceResponse (OOCTXT* pctxt, H245ConferenceResponse_sendThisSourceResponse* pvalue);
+
+EXTERN int asn1PD_H245ConferenceResponse_sendThisSourceResponse (OOCTXT* pctxt, H245ConferenceResponse_sendThisSourceResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalInformation */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245TerminalInformation {
+ H245TerminalLabel terminalLabel;
+ H245TerminalID terminalID;
+} H245TerminalInformation;
+
+EXTERN int asn1PE_H245TerminalInformation (OOCTXT* pctxt, H245TerminalInformation* pvalue);
+
+EXTERN int asn1PD_H245TerminalInformation (OOCTXT* pctxt, H245TerminalInformation* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH245TerminalInformation */
+/* */
+/**************************************************************/
+
+/* List of H245TerminalInformation */
+typedef DList H245_SeqOfH245TerminalInformation;
+
+EXTERN int asn1PE_H245_SeqOfH245TerminalInformation (OOCTXT* pctxt, H245_SeqOfH245TerminalInformation* pvalue);
+
+EXTERN int asn1PD_H245_SeqOfH245TerminalInformation (OOCTXT* pctxt, H245_SeqOfH245TerminalInformation* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestAllTerminalIDsResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestAllTerminalIDsResponse {
+ H245_SeqOfH245TerminalInformation terminalInformation;
+} H245RequestAllTerminalIDsResponse;
+
+EXTERN int asn1PE_H245RequestAllTerminalIDsResponse (OOCTXT* pctxt, H245RequestAllTerminalIDsResponse* pvalue);
+
+EXTERN int asn1PD_H245RequestAllTerminalIDsResponse (OOCTXT* pctxt, H245RequestAllTerminalIDsResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* RemoteMCResponse_reject */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RemoteMCResponse_reject_unspecified 1
+#define T_H245RemoteMCResponse_reject_functionNotSupported 2
+#define T_H245RemoteMCResponse_reject_extElem1 3
+
+typedef struct EXTERN H245RemoteMCResponse_reject {
+ int t;
+} H245RemoteMCResponse_reject;
+
+EXTERN int asn1PE_H245RemoteMCResponse_reject (OOCTXT* pctxt, H245RemoteMCResponse_reject* pvalue);
+
+EXTERN int asn1PD_H245RemoteMCResponse_reject (OOCTXT* pctxt, H245RemoteMCResponse_reject* pvalue);
+
+/**************************************************************/
+/* */
+/* RemoteMCResponse */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245RemoteMCResponse_accept 1
+#define T_H245RemoteMCResponse_reject 2
+#define T_H245RemoteMCResponse_extElem1 3
+
+typedef struct EXTERN H245RemoteMCResponse {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H245RemoteMCResponse_reject *reject;
+ /* t = 3 */
+ } u;
+} H245RemoteMCResponse;
+
+EXTERN int asn1PE_H245RemoteMCResponse (OOCTXT* pctxt, H245RemoteMCResponse* pvalue);
+
+EXTERN int asn1PD_H245RemoteMCResponse (OOCTXT* pctxt, H245RemoteMCResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceResponse */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245ConferenceResponse_mCTerminalIDResponse 1
+#define T_H245ConferenceResponse_terminalIDResponse 2
+#define T_H245ConferenceResponse_conferenceIDResponse 3
+#define T_H245ConferenceResponse_passwordResponse 4
+#define T_H245ConferenceResponse_terminalListResponse 5
+#define T_H245ConferenceResponse_videoCommandReject 6
+#define T_H245ConferenceResponse_terminalDropReject 7
+#define T_H245ConferenceResponse_makeMeChairResponse 8
+#define T_H245ConferenceResponse_extensionAddressResponse 9
+#define T_H245ConferenceResponse_chairTokenOwnerResponse 10
+#define T_H245ConferenceResponse_terminalCertificateResponse 11
+#define T_H245ConferenceResponse_broadcastMyLogicalChannelResponse 12
+#define T_H245ConferenceResponse_makeTerminalBroadcasterResponse 13
+#define T_H245ConferenceResponse_sendThisSourceResponse 14
+#define T_H245ConferenceResponse_requestAllTerminalIDsResponse 15
+#define T_H245ConferenceResponse_remoteMCResponse 16
+#define T_H245ConferenceResponse_extElem1 17
+
+typedef struct EXTERN H245ConferenceResponse {
+ int t;
+ union {
+ /* t = 1 */
+ H245ConferenceResponse_mCTerminalIDResponse *mCTerminalIDResponse;
+ /* t = 2 */
+ H245ConferenceResponse_terminalIDResponse *terminalIDResponse;
+ /* t = 3 */
+ H245ConferenceResponse_conferenceIDResponse *conferenceIDResponse;
+ /* t = 4 */
+ H245ConferenceResponse_passwordResponse *passwordResponse;
+ /* t = 5 */
+ H245ConferenceResponse_terminalListResponse *terminalListResponse;
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ H245ConferenceResponse_makeMeChairResponse *makeMeChairResponse;
+ /* t = 9 */
+ H245ConferenceResponse_extensionAddressResponse *extensionAddressResponse;
+ /* t = 10 */
+ H245ConferenceResponse_chairTokenOwnerResponse *chairTokenOwnerResponse;
+ /* t = 11 */
+ H245ConferenceResponse_terminalCertificateResponse *terminalCertificateResponse;
+ /* t = 12 */
+ H245ConferenceResponse_broadcastMyLogicalChannelResponse *broadcastMyLogicalChannelResponse;
+ /* t = 13 */
+ H245ConferenceResponse_makeTerminalBroadcasterResponse *makeTerminalBroadcasterResponse;
+ /* t = 14 */
+ H245ConferenceResponse_sendThisSourceResponse *sendThisSourceResponse;
+ /* t = 15 */
+ H245RequestAllTerminalIDsResponse *requestAllTerminalIDsResponse;
+ /* t = 16 */
+ H245RemoteMCResponse *remoteMCResponse;
+ /* t = 17 */
+ } u;
+} H245ConferenceResponse;
+
+EXTERN int asn1PE_H245ConferenceResponse (OOCTXT* pctxt, H245ConferenceResponse* pvalue);
+
+EXTERN int asn1PD_H245ConferenceResponse (OOCTXT* pctxt, H245ConferenceResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_callInformation */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultilinkResponse_callInformation {
+ H245DialingInformation dialingInformation;
+ ASN1UINT callAssociationNumber;
+} H245MultilinkResponse_callInformation;
+
+EXTERN int asn1PE_H245MultilinkResponse_callInformation (OOCTXT* pctxt, H245MultilinkResponse_callInformation* pvalue);
+
+EXTERN int asn1PD_H245MultilinkResponse_callInformation (OOCTXT* pctxt, H245MultilinkResponse_callInformation* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_addConnection_responseCode_rejected */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MultilinkResponse_addConnection_responseCode_rejected_connectionsNotAvailable 1
+#define T_H245MultilinkResponse_addConnection_responseCode_rejected_userRejected 2
+#define T_H245MultilinkResponse_addConnection_responseCode_rejected_extElem1 3
+
+typedef struct EXTERN H245MultilinkResponse_addConnection_responseCode_rejected {
+ int t;
+} H245MultilinkResponse_addConnection_responseCode_rejected;
+
+EXTERN int asn1PE_H245MultilinkResponse_addConnection_responseCode_rejected (OOCTXT* pctxt, H245MultilinkResponse_addConnection_responseCode_rejected* pvalue);
+
+EXTERN int asn1PD_H245MultilinkResponse_addConnection_responseCode_rejected (OOCTXT* pctxt, H245MultilinkResponse_addConnection_responseCode_rejected* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_addConnection_responseCode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MultilinkResponse_addConnection_responseCode_accepted 1
+#define T_H245MultilinkResponse_addConnection_responseCode_rejected 2
+#define T_H245MultilinkResponse_addConnection_responseCode_extElem1 3
+
+typedef struct EXTERN H245MultilinkResponse_addConnection_responseCode {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H245MultilinkResponse_addConnection_responseCode_rejected *rejected;
+ /* t = 3 */
+ } u;
+} H245MultilinkResponse_addConnection_responseCode;
+
+EXTERN int asn1PE_H245MultilinkResponse_addConnection_responseCode (OOCTXT* pctxt, H245MultilinkResponse_addConnection_responseCode* pvalue);
+
+EXTERN int asn1PD_H245MultilinkResponse_addConnection_responseCode (OOCTXT* pctxt, H245MultilinkResponse_addConnection_responseCode* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_addConnection */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultilinkResponse_addConnection {
+ H245SequenceNumber sequenceNumber;
+ H245MultilinkResponse_addConnection_responseCode responseCode;
+} H245MultilinkResponse_addConnection;
+
+EXTERN int asn1PE_H245MultilinkResponse_addConnection (OOCTXT* pctxt, H245MultilinkResponse_addConnection* pvalue);
+
+EXTERN int asn1PD_H245MultilinkResponse_addConnection (OOCTXT* pctxt, H245MultilinkResponse_addConnection* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_removeConnection */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultilinkResponse_removeConnection {
+ H245ConnectionIdentifier connectionIdentifier;
+} H245MultilinkResponse_removeConnection;
+
+EXTERN int asn1PE_H245MultilinkResponse_removeConnection (OOCTXT* pctxt, H245MultilinkResponse_removeConnection* pvalue);
+
+EXTERN int asn1PD_H245MultilinkResponse_removeConnection (OOCTXT* pctxt, H245MultilinkResponse_removeConnection* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_maximumHeaderInterval */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultilinkResponse_maximumHeaderInterval {
+ ASN1USINT currentInterval;
+} H245MultilinkResponse_maximumHeaderInterval;
+
+EXTERN int asn1PE_H245MultilinkResponse_maximumHeaderInterval (OOCTXT* pctxt, H245MultilinkResponse_maximumHeaderInterval* pvalue);
+
+EXTERN int asn1PD_H245MultilinkResponse_maximumHeaderInterval (OOCTXT* pctxt, H245MultilinkResponse_maximumHeaderInterval* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkResponse */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MultilinkResponse_nonStandard 1
+#define T_H245MultilinkResponse_callInformation 2
+#define T_H245MultilinkResponse_addConnection 3
+#define T_H245MultilinkResponse_removeConnection 4
+#define T_H245MultilinkResponse_maximumHeaderInterval 5
+#define T_H245MultilinkResponse_extElem1 6
+
+typedef struct EXTERN H245MultilinkResponse {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardMessage *nonStandard;
+ /* t = 2 */
+ H245MultilinkResponse_callInformation *callInformation;
+ /* t = 3 */
+ H245MultilinkResponse_addConnection *addConnection;
+ /* t = 4 */
+ H245MultilinkResponse_removeConnection *removeConnection;
+ /* t = 5 */
+ H245MultilinkResponse_maximumHeaderInterval *maximumHeaderInterval;
+ /* t = 6 */
+ } u;
+} H245MultilinkResponse;
+
+EXTERN int asn1PE_H245MultilinkResponse (OOCTXT* pctxt, H245MultilinkResponse* pvalue);
+
+EXTERN int asn1PD_H245MultilinkResponse (OOCTXT* pctxt, H245MultilinkResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateAcknowledge */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245LogicalChannelRateAcknowledge {
+ H245SequenceNumber sequenceNumber;
+ H245LogicalChannelNumber logicalChannelNumber;
+ H245MaximumBitRate maximumBitRate;
+} H245LogicalChannelRateAcknowledge;
+
+EXTERN int asn1PE_H245LogicalChannelRateAcknowledge (OOCTXT* pctxt, H245LogicalChannelRateAcknowledge* pvalue);
+
+EXTERN int asn1PD_H245LogicalChannelRateAcknowledge (OOCTXT* pctxt, H245LogicalChannelRateAcknowledge* pvalue);
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245LogicalChannelRateRejectReason_undefinedReason 1
+#define T_H245LogicalChannelRateRejectReason_insufficientResources 2
+#define T_H245LogicalChannelRateRejectReason_extElem1 3
+
+typedef struct EXTERN H245LogicalChannelRateRejectReason {
+ int t;
+} H245LogicalChannelRateRejectReason;
+
+EXTERN int asn1PE_H245LogicalChannelRateRejectReason (OOCTXT* pctxt, H245LogicalChannelRateRejectReason* pvalue);
+
+EXTERN int asn1PD_H245LogicalChannelRateRejectReason (OOCTXT* pctxt, H245LogicalChannelRateRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245LogicalChannelRateReject {
+ struct {
+ unsigned currentMaximumBitRatePresent : 1;
+ } m;
+ H245SequenceNumber sequenceNumber;
+ H245LogicalChannelNumber logicalChannelNumber;
+ H245LogicalChannelRateRejectReason rejectReason;
+ H245MaximumBitRate currentMaximumBitRate;
+} H245LogicalChannelRateReject;
+
+EXTERN int asn1PE_H245LogicalChannelRateReject (OOCTXT* pctxt, H245LogicalChannelRateReject* pvalue);
+
+EXTERN int asn1PD_H245LogicalChannelRateReject (OOCTXT* pctxt, H245LogicalChannelRateReject* pvalue);
+
+/**************************************************************/
+/* */
+/* ResponseMessage */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245ResponseMessage_nonStandard 1
+#define T_H245ResponseMessage_masterSlaveDeterminationAck 2
+#define T_H245ResponseMessage_masterSlaveDeterminationReject 3
+#define T_H245ResponseMessage_terminalCapabilitySetAck 4
+#define T_H245ResponseMessage_terminalCapabilitySetReject 5
+#define T_H245ResponseMessage_openLogicalChannelAck 6
+#define T_H245ResponseMessage_openLogicalChannelReject 7
+#define T_H245ResponseMessage_closeLogicalChannelAck 8
+#define T_H245ResponseMessage_requestChannelCloseAck 9
+#define T_H245ResponseMessage_requestChannelCloseReject 10
+#define T_H245ResponseMessage_multiplexEntrySendAck 11
+#define T_H245ResponseMessage_multiplexEntrySendReject 12
+#define T_H245ResponseMessage_requestMultiplexEntryAck 13
+#define T_H245ResponseMessage_requestMultiplexEntryReject 14
+#define T_H245ResponseMessage_requestModeAck 15
+#define T_H245ResponseMessage_requestModeReject 16
+#define T_H245ResponseMessage_roundTripDelayResponse 17
+#define T_H245ResponseMessage_maintenanceLoopAck 18
+#define T_H245ResponseMessage_maintenanceLoopReject 19
+#define T_H245ResponseMessage_communicationModeResponse 20
+#define T_H245ResponseMessage_conferenceResponse 21
+#define T_H245ResponseMessage_multilinkResponse 22
+#define T_H245ResponseMessage_logicalChannelRateAcknowledge 23
+#define T_H245ResponseMessage_logicalChannelRateReject 24
+#define T_H245ResponseMessage_extElem1 25
+
+typedef struct EXTERN H245ResponseMessage {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardMessage *nonStandard;
+ /* t = 2 */
+ H245MasterSlaveDeterminationAck *masterSlaveDeterminationAck;
+ /* t = 3 */
+ H245MasterSlaveDeterminationReject *masterSlaveDeterminationReject;
+ /* t = 4 */
+ H245TerminalCapabilitySetAck *terminalCapabilitySetAck;
+ /* t = 5 */
+ H245TerminalCapabilitySetReject *terminalCapabilitySetReject;
+ /* t = 6 */
+ H245OpenLogicalChannelAck *openLogicalChannelAck;
+ /* t = 7 */
+ H245OpenLogicalChannelReject *openLogicalChannelReject;
+ /* t = 8 */
+ H245CloseLogicalChannelAck *closeLogicalChannelAck;
+ /* t = 9 */
+ H245RequestChannelCloseAck *requestChannelCloseAck;
+ /* t = 10 */
+ H245RequestChannelCloseReject *requestChannelCloseReject;
+ /* t = 11 */
+ H245MultiplexEntrySendAck *multiplexEntrySendAck;
+ /* t = 12 */
+ H245MultiplexEntrySendReject *multiplexEntrySendReject;
+ /* t = 13 */
+ H245RequestMultiplexEntryAck *requestMultiplexEntryAck;
+ /* t = 14 */
+ H245RequestMultiplexEntryReject *requestMultiplexEntryReject;
+ /* t = 15 */
+ H245RequestModeAck *requestModeAck;
+ /* t = 16 */
+ H245RequestModeReject *requestModeReject;
+ /* t = 17 */
+ H245RoundTripDelayResponse *roundTripDelayResponse;
+ /* t = 18 */
+ H245MaintenanceLoopAck *maintenanceLoopAck;
+ /* t = 19 */
+ H245MaintenanceLoopReject *maintenanceLoopReject;
+ /* t = 20 */
+ H245CommunicationModeResponse *communicationModeResponse;
+ /* t = 21 */
+ H245ConferenceResponse *conferenceResponse;
+ /* t = 22 */
+ H245MultilinkResponse *multilinkResponse;
+ /* t = 23 */
+ H245LogicalChannelRateAcknowledge *logicalChannelRateAcknowledge;
+ /* t = 24 */
+ H245LogicalChannelRateReject *logicalChannelRateReject;
+ /* t = 25 */
+ } u;
+} H245ResponseMessage;
+
+EXTERN int asn1PE_H245ResponseMessage (OOCTXT* pctxt, H245ResponseMessage* pvalue);
+
+EXTERN int asn1PD_H245ResponseMessage (OOCTXT* pctxt, H245ResponseMessage* pvalue);
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopOffCommand */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MaintenanceLoopOffCommand {
+ ASN1OCTET __dummy__;
+} H245MaintenanceLoopOffCommand;
+
+EXTERN int asn1PE_H245MaintenanceLoopOffCommand (OOCTXT* pctxt, H245MaintenanceLoopOffCommand* pvalue);
+
+EXTERN int asn1PD_H245MaintenanceLoopOffCommand (OOCTXT* pctxt, H245MaintenanceLoopOffCommand* pvalue);
+
+/**************************************************************/
+/* */
+/* SendTerminalCapabilitySet_specificRequest_capabilityTabl */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers {
+ ASN1UINT n;
+ H245CapabilityTableEntryNumber *elem;
+} H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers;
+
+EXTERN int asn1PE_H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers* pvalue);
+
+EXTERN int asn1PD_H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers* pvalue);
+
+/**************************************************************/
+/* */
+/* SendTerminalCapabilitySet_specificRequest_capabilityDesc */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers {
+ ASN1UINT n;
+ H245CapabilityDescriptorNumber elem[256];
+} H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers;
+
+EXTERN int asn1PE_H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers* pvalue);
+
+EXTERN int asn1PD_H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers* pvalue);
+
+/**************************************************************/
+/* */
+/* SendTerminalCapabilitySet_specificRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245SendTerminalCapabilitySet_specificRequest {
+ struct {
+ unsigned capabilityTableEntryNumbersPresent : 1;
+ unsigned capabilityDescriptorNumbersPresent : 1;
+ } m;
+ ASN1BOOL multiplexCapability;
+ H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers capabilityTableEntryNumbers;
+ H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers capabilityDescriptorNumbers;
+} H245SendTerminalCapabilitySet_specificRequest;
+
+EXTERN int asn1PE_H245SendTerminalCapabilitySet_specificRequest (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest* pvalue);
+
+EXTERN int asn1PD_H245SendTerminalCapabilitySet_specificRequest (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* SendTerminalCapabilitySet */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245SendTerminalCapabilitySet_specificRequest 1
+#define T_H245SendTerminalCapabilitySet_genericRequest 2
+#define T_H245SendTerminalCapabilitySet_extElem1 3
+
+typedef struct EXTERN H245SendTerminalCapabilitySet {
+ int t;
+ union {
+ /* t = 1 */
+ H245SendTerminalCapabilitySet_specificRequest *specificRequest;
+ /* t = 2 */
+ /* t = 3 */
+ } u;
+} H245SendTerminalCapabilitySet;
+
+EXTERN int asn1PE_H245SendTerminalCapabilitySet (OOCTXT* pctxt, H245SendTerminalCapabilitySet* pvalue);
+
+EXTERN int asn1PD_H245SendTerminalCapabilitySet (OOCTXT* pctxt, H245SendTerminalCapabilitySet* pvalue);
+
+/**************************************************************/
+/* */
+/* EncryptionCommand_encryptionAlgorithmID */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245EncryptionCommand_encryptionAlgorithmID {
+ H245SequenceNumber h233AlgorithmIdentifier;
+ H245NonStandardParameter associatedAlgorithm;
+} H245EncryptionCommand_encryptionAlgorithmID;
+
+EXTERN int asn1PE_H245EncryptionCommand_encryptionAlgorithmID (OOCTXT* pctxt, H245EncryptionCommand_encryptionAlgorithmID* pvalue);
+
+EXTERN int asn1PD_H245EncryptionCommand_encryptionAlgorithmID (OOCTXT* pctxt, H245EncryptionCommand_encryptionAlgorithmID* pvalue);
+
+/**************************************************************/
+/* */
+/* EncryptionCommand */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245EncryptionCommand_encryptionSE 1
+#define T_H245EncryptionCommand_encryptionIVRequest 2
+#define T_H245EncryptionCommand_encryptionAlgorithmID 3
+#define T_H245EncryptionCommand_extElem1 4
+
+typedef struct EXTERN H245EncryptionCommand {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1DynOctStr *encryptionSE;
+ /* t = 2 */
+ /* t = 3 */
+ H245EncryptionCommand_encryptionAlgorithmID *encryptionAlgorithmID;
+ /* t = 4 */
+ } u;
+} H245EncryptionCommand;
+
+EXTERN int asn1PE_H245EncryptionCommand (OOCTXT* pctxt, H245EncryptionCommand* pvalue);
+
+EXTERN int asn1PD_H245EncryptionCommand (OOCTXT* pctxt, H245EncryptionCommand* pvalue);
+
+/**************************************************************/
+/* */
+/* FlowControlCommand_scope */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245FlowControlCommand_scope_logicalChannelNumber 1
+#define T_H245FlowControlCommand_scope_resourceID 2
+#define T_H245FlowControlCommand_scope_wholeMultiplex 3
+
+typedef struct EXTERN H245FlowControlCommand_scope {
+ int t;
+ union {
+ /* t = 1 */
+ H245LogicalChannelNumber logicalChannelNumber;
+ /* t = 2 */
+ ASN1USINT resourceID;
+ /* t = 3 */
+ } u;
+} H245FlowControlCommand_scope;
+
+EXTERN int asn1PE_H245FlowControlCommand_scope (OOCTXT* pctxt, H245FlowControlCommand_scope* pvalue);
+
+EXTERN int asn1PD_H245FlowControlCommand_scope (OOCTXT* pctxt, H245FlowControlCommand_scope* pvalue);
+
+/**************************************************************/
+/* */
+/* FlowControlCommand_restriction */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245FlowControlCommand_restriction_maximumBitRate 1
+#define T_H245FlowControlCommand_restriction_noRestriction 2
+
+typedef struct EXTERN H245FlowControlCommand_restriction {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1UINT maximumBitRate;
+ /* t = 2 */
+ } u;
+} H245FlowControlCommand_restriction;
+
+EXTERN int asn1PE_H245FlowControlCommand_restriction (OOCTXT* pctxt, H245FlowControlCommand_restriction* pvalue);
+
+EXTERN int asn1PD_H245FlowControlCommand_restriction (OOCTXT* pctxt, H245FlowControlCommand_restriction* pvalue);
+
+/**************************************************************/
+/* */
+/* FlowControlCommand */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245FlowControlCommand {
+ H245FlowControlCommand_scope scope;
+ H245FlowControlCommand_restriction restriction;
+} H245FlowControlCommand;
+
+EXTERN int asn1PE_H245FlowControlCommand (OOCTXT* pctxt, H245FlowControlCommand* pvalue);
+
+EXTERN int asn1PD_H245FlowControlCommand (OOCTXT* pctxt, H245FlowControlCommand* pvalue);
+
+/**************************************************************/
+/* */
+/* EndSessionCommand_gstnOptions */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245EndSessionCommand_gstnOptions_telephonyMode 1
+#define T_H245EndSessionCommand_gstnOptions_v8bis 2
+#define T_H245EndSessionCommand_gstnOptions_v34DSVD 3
+#define T_H245EndSessionCommand_gstnOptions_v34DuplexFAX 4
+#define T_H245EndSessionCommand_gstnOptions_v34H324 5
+#define T_H245EndSessionCommand_gstnOptions_extElem1 6
+
+typedef struct EXTERN H245EndSessionCommand_gstnOptions {
+ int t;
+} H245EndSessionCommand_gstnOptions;
+
+EXTERN int asn1PE_H245EndSessionCommand_gstnOptions (OOCTXT* pctxt, H245EndSessionCommand_gstnOptions* pvalue);
+
+EXTERN int asn1PD_H245EndSessionCommand_gstnOptions (OOCTXT* pctxt, H245EndSessionCommand_gstnOptions* pvalue);
+
+/**************************************************************/
+/* */
+/* EndSessionCommand_isdnOptions */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245EndSessionCommand_isdnOptions_telephonyMode 1
+#define T_H245EndSessionCommand_isdnOptions_v140 2
+#define T_H245EndSessionCommand_isdnOptions_terminalOnHold 3
+#define T_H245EndSessionCommand_isdnOptions_extElem1 4
+
+typedef struct EXTERN H245EndSessionCommand_isdnOptions {
+ int t;
+} H245EndSessionCommand_isdnOptions;
+
+EXTERN int asn1PE_H245EndSessionCommand_isdnOptions (OOCTXT* pctxt, H245EndSessionCommand_isdnOptions* pvalue);
+
+EXTERN int asn1PD_H245EndSessionCommand_isdnOptions (OOCTXT* pctxt, H245EndSessionCommand_isdnOptions* pvalue);
+
+/**************************************************************/
+/* */
+/* EndSessionCommand */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245EndSessionCommand_nonStandard 1
+#define T_H245EndSessionCommand_disconnect 2
+#define T_H245EndSessionCommand_gstnOptions 3
+#define T_H245EndSessionCommand_isdnOptions 4
+#define T_H245EndSessionCommand_extElem1 5
+
+typedef struct EXTERN H245EndSessionCommand {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ H245EndSessionCommand_gstnOptions *gstnOptions;
+ /* t = 4 */
+ H245EndSessionCommand_isdnOptions *isdnOptions;
+ /* t = 5 */
+ } u;
+} H245EndSessionCommand;
+
+EXTERN int asn1PE_H245EndSessionCommand (OOCTXT* pctxt, H245EndSessionCommand* pvalue);
+
+EXTERN int asn1PD_H245EndSessionCommand (OOCTXT* pctxt, H245EndSessionCommand* pvalue);
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_videoFastUpdateGOB */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MiscellaneousCommand_type_videoFastUpdateGOB {
+ ASN1UINT8 firstGOB;
+ ASN1UINT8 numberOfGOBs;
+} H245MiscellaneousCommand_type_videoFastUpdateGOB;
+
+EXTERN int asn1PE_H245MiscellaneousCommand_type_videoFastUpdateGOB (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoFastUpdateGOB* pvalue);
+
+EXTERN int asn1PD_H245MiscellaneousCommand_type_videoFastUpdateGOB (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoFastUpdateGOB* pvalue);
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_videoFastUpdateMB */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MiscellaneousCommand_type_videoFastUpdateMB {
+ struct {
+ unsigned firstGOBPresent : 1;
+ unsigned firstMBPresent : 1;
+ } m;
+ ASN1UINT8 firstGOB;
+ ASN1USINT firstMB;
+ ASN1USINT numberOfMBs;
+} H245MiscellaneousCommand_type_videoFastUpdateMB;
+
+EXTERN int asn1PE_H245MiscellaneousCommand_type_videoFastUpdateMB (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoFastUpdateMB* pvalue);
+
+EXTERN int asn1PD_H245MiscellaneousCommand_type_videoFastUpdateMB (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoFastUpdateMB* pvalue);
+
+/**************************************************************/
+/* */
+/* KeyProtectionMethod */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245KeyProtectionMethod {
+ ASN1BOOL secureChannel;
+ ASN1BOOL sharedSecret;
+ ASN1BOOL certProtectedKey;
+} H245KeyProtectionMethod;
+
+EXTERN int asn1PE_H245KeyProtectionMethod (OOCTXT* pctxt, H245KeyProtectionMethod* pvalue);
+
+EXTERN int asn1PD_H245KeyProtectionMethod (OOCTXT* pctxt, H245KeyProtectionMethod* pvalue);
+
+/**************************************************************/
+/* */
+/* EncryptionUpdateRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245EncryptionUpdateRequest {
+ struct {
+ unsigned keyProtectionMethodPresent : 1;
+ } m;
+ H245KeyProtectionMethod keyProtectionMethod;
+} H245EncryptionUpdateRequest;
+
+EXTERN int asn1PE_H245EncryptionUpdateRequest (OOCTXT* pctxt, H245EncryptionUpdateRequest* pvalue);
+
+EXTERN int asn1PD_H245EncryptionUpdateRequest (OOCTXT* pctxt, H245EncryptionUpdateRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_progressiveRefinementStart_rep */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount_doOneProgression 1
+#define T_H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount_doContinuousProgressions 2
+#define T_H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount_doOneIndependentProgression 3
+#define T_H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount_doContinuousIndependentProgressions 4
+#define T_H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount_extElem1 5
+
+typedef struct EXTERN H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount {
+ int t;
+} H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount;
+
+EXTERN int asn1PE_H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount (OOCTXT* pctxt, H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount* pvalue);
+
+EXTERN int asn1PD_H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount (OOCTXT* pctxt, H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount* pvalue);
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_progressiveRefinementStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MiscellaneousCommand_type_progressiveRefinementStart {
+ H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount repeatCount;
+} H245MiscellaneousCommand_type_progressiveRefinementStart;
+
+EXTERN int asn1PE_H245MiscellaneousCommand_type_progressiveRefinementStart (OOCTXT* pctxt, H245MiscellaneousCommand_type_progressiveRefinementStart* pvalue);
+
+EXTERN int asn1PD_H245MiscellaneousCommand_type_progressiveRefinementStart (OOCTXT* pctxt, H245MiscellaneousCommand_type_progressiveRefinementStart* pvalue);
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_videoBadMBs */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MiscellaneousCommand_type_videoBadMBs {
+ ASN1USINT firstMB;
+ ASN1USINT numberOfMBs;
+ ASN1USINT temporalReference;
+} H245MiscellaneousCommand_type_videoBadMBs;
+
+EXTERN int asn1PE_H245MiscellaneousCommand_type_videoBadMBs (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoBadMBs* pvalue);
+
+EXTERN int asn1PD_H245MiscellaneousCommand_type_videoBadMBs (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoBadMBs* pvalue);
+
+/**************************************************************/
+/* */
+/* PictureReference */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245PictureReference_pictureNumber 1
+#define T_H245PictureReference_longTermPictureIndex 2
+#define T_H245PictureReference_extElem1 3
+
+typedef struct EXTERN H245PictureReference {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1USINT pictureNumber;
+ /* t = 2 */
+ ASN1UINT8 longTermPictureIndex;
+ /* t = 3 */
+ } u;
+} H245PictureReference;
+
+EXTERN int asn1PE_H245PictureReference (OOCTXT* pctxt, H245PictureReference* pvalue);
+
+EXTERN int asn1PD_H245PictureReference (OOCTXT* pctxt, H245PictureReference* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH245PictureReference */
+/* */
+/**************************************************************/
+
+/* List of H245PictureReference */
+typedef DList H245_SeqOfH245PictureReference;
+
+EXTERN int asn1PE_H245_SeqOfH245PictureReference (OOCTXT* pctxt, H245_SeqOfH245PictureReference* pvalue);
+
+EXTERN int asn1PD_H245_SeqOfH245PictureReference (OOCTXT* pctxt, H245_SeqOfH245PictureReference* pvalue);
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_lostPartialPicture */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MiscellaneousCommand_type_lostPartialPicture {
+ H245PictureReference pictureReference;
+ ASN1USINT firstMB;
+ ASN1USINT numberOfMBs;
+} H245MiscellaneousCommand_type_lostPartialPicture;
+
+EXTERN int asn1PE_H245MiscellaneousCommand_type_lostPartialPicture (OOCTXT* pctxt, H245MiscellaneousCommand_type_lostPartialPicture* pvalue);
+
+EXTERN int asn1PD_H245MiscellaneousCommand_type_lostPartialPicture (OOCTXT* pctxt, H245MiscellaneousCommand_type_lostPartialPicture* pvalue);
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MiscellaneousCommand_type_equaliseDelay 1
+#define T_H245MiscellaneousCommand_type_zeroDelay 2
+#define T_H245MiscellaneousCommand_type_multipointModeCommand 3
+#define T_H245MiscellaneousCommand_type_cancelMultipointModeCommand 4
+#define T_H245MiscellaneousCommand_type_videoFreezePicture 5
+#define T_H245MiscellaneousCommand_type_videoFastUpdatePicture 6
+#define T_H245MiscellaneousCommand_type_videoFastUpdateGOB 7
+#define T_H245MiscellaneousCommand_type_videoTemporalSpatialTradeOff 8
+#define T_H245MiscellaneousCommand_type_videoSendSyncEveryGOB 9
+#define T_H245MiscellaneousCommand_type_videoSendSyncEveryGOBCancel 10
+#define T_H245MiscellaneousCommand_type_videoFastUpdateMB 11
+#define T_H245MiscellaneousCommand_type_maxH223MUXPDUsize 12
+#define T_H245MiscellaneousCommand_type_encryptionUpdate 13
+#define T_H245MiscellaneousCommand_type_encryptionUpdateRequest 14
+#define T_H245MiscellaneousCommand_type_switchReceiveMediaOff 15
+#define T_H245MiscellaneousCommand_type_switchReceiveMediaOn 16
+#define T_H245MiscellaneousCommand_type_progressiveRefinementStart 17
+#define T_H245MiscellaneousCommand_type_progressiveRefinementAbortOne 18
+#define T_H245MiscellaneousCommand_type_progressiveRefinementAbortContinuous 19
+#define T_H245MiscellaneousCommand_type_videoBadMBs 20
+#define T_H245MiscellaneousCommand_type_lostPicture 21
+#define T_H245MiscellaneousCommand_type_lostPartialPicture 22
+#define T_H245MiscellaneousCommand_type_recoveryReferencePicture 23
+#define T_H245MiscellaneousCommand_type_extElem1 24
+
+typedef struct EXTERN H245MiscellaneousCommand_type {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ H245MiscellaneousCommand_type_videoFastUpdateGOB *videoFastUpdateGOB;
+ /* t = 8 */
+ ASN1UINT8 videoTemporalSpatialTradeOff;
+ /* t = 9 */
+ /* t = 10 */
+ /* t = 11 */
+ H245MiscellaneousCommand_type_videoFastUpdateMB *videoFastUpdateMB;
+ /* t = 12 */
+ ASN1USINT maxH223MUXPDUsize;
+ /* t = 13 */
+ H245EncryptionSync *encryptionUpdate;
+ /* t = 14 */
+ H245EncryptionUpdateRequest *encryptionUpdateRequest;
+ /* t = 15 */
+ /* t = 16 */
+ /* t = 17 */
+ H245MiscellaneousCommand_type_progressiveRefinementStart *progressiveRefinementStart;
+ /* t = 18 */
+ /* t = 19 */
+ /* t = 20 */
+ H245MiscellaneousCommand_type_videoBadMBs *videoBadMBs;
+ /* t = 21 */
+ H245_SeqOfH245PictureReference *lostPicture;
+ /* t = 22 */
+ H245MiscellaneousCommand_type_lostPartialPicture *lostPartialPicture;
+ /* t = 23 */
+ H245_SeqOfH245PictureReference *recoveryReferencePicture;
+ /* t = 24 */
+ } u;
+} H245MiscellaneousCommand_type;
+
+EXTERN int asn1PE_H245MiscellaneousCommand_type (OOCTXT* pctxt, H245MiscellaneousCommand_type* pvalue);
+
+EXTERN int asn1PD_H245MiscellaneousCommand_type (OOCTXT* pctxt, H245MiscellaneousCommand_type* pvalue);
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MiscellaneousCommand {
+ H245LogicalChannelNumber logicalChannelNumber;
+ H245MiscellaneousCommand_type type;
+} H245MiscellaneousCommand;
+
+EXTERN int asn1PE_H245MiscellaneousCommand (OOCTXT* pctxt, H245MiscellaneousCommand* pvalue);
+
+EXTERN int asn1PD_H245MiscellaneousCommand (OOCTXT* pctxt, H245MiscellaneousCommand* pvalue);
+
+/**************************************************************/
+/* */
+/* CommunicationModeCommand_communicationModeTable */
+/* */
+/**************************************************************/
+
+/* List of H245CommunicationModeTableEntry */
+typedef DList H245CommunicationModeCommand_communicationModeTable;
+
+EXTERN int asn1PE_H245CommunicationModeCommand_communicationModeTable (OOCTXT* pctxt, H245CommunicationModeCommand_communicationModeTable* pvalue);
+
+EXTERN int asn1PD_H245CommunicationModeCommand_communicationModeTable (OOCTXT* pctxt, H245CommunicationModeCommand_communicationModeTable* pvalue);
+
+/**************************************************************/
+/* */
+/* CommunicationModeCommand */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245CommunicationModeCommand {
+ H245CommunicationModeCommand_communicationModeTable communicationModeTable;
+} H245CommunicationModeCommand;
+
+EXTERN int asn1PE_H245CommunicationModeCommand (OOCTXT* pctxt, H245CommunicationModeCommand* pvalue);
+
+EXTERN int asn1PD_H245CommunicationModeCommand (OOCTXT* pctxt, H245CommunicationModeCommand* pvalue);
+
+/**************************************************************/
+/* */
+/* SubstituteConferenceIDCommand_conferenceIdentifier */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245SubstituteConferenceIDCommand_conferenceIdentifier {
+ ASN1UINT numocts;
+ ASN1OCTET data[16];
+} H245SubstituteConferenceIDCommand_conferenceIdentifier;
+
+EXTERN int asn1PE_H245SubstituteConferenceIDCommand_conferenceIdentifier (OOCTXT* pctxt, H245SubstituteConferenceIDCommand_conferenceIdentifier* pvalue);
+
+EXTERN int asn1PD_H245SubstituteConferenceIDCommand_conferenceIdentifier (OOCTXT* pctxt, H245SubstituteConferenceIDCommand_conferenceIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* SubstituteConferenceIDCommand */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245SubstituteConferenceIDCommand {
+ H245SubstituteConferenceIDCommand_conferenceIdentifier conferenceIdentifier;
+} H245SubstituteConferenceIDCommand;
+
+EXTERN int asn1PE_H245SubstituteConferenceIDCommand (OOCTXT* pctxt, H245SubstituteConferenceIDCommand* pvalue);
+
+EXTERN int asn1PD_H245SubstituteConferenceIDCommand (OOCTXT* pctxt, H245SubstituteConferenceIDCommand* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceCommand */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245ConferenceCommand_broadcastMyLogicalChannel 1
+#define T_H245ConferenceCommand_cancelBroadcastMyLogicalChannel 2
+#define T_H245ConferenceCommand_makeTerminalBroadcaster 3
+#define T_H245ConferenceCommand_cancelMakeTerminalBroadcaster 4
+#define T_H245ConferenceCommand_sendThisSource 5
+#define T_H245ConferenceCommand_cancelSendThisSource 6
+#define T_H245ConferenceCommand_dropConference 7
+#define T_H245ConferenceCommand_substituteConferenceIDCommand 8
+#define T_H245ConferenceCommand_extElem1 9
+
+typedef struct EXTERN H245ConferenceCommand {
+ int t;
+ union {
+ /* t = 1 */
+ H245LogicalChannelNumber broadcastMyLogicalChannel;
+ /* t = 2 */
+ H245LogicalChannelNumber cancelBroadcastMyLogicalChannel;
+ /* t = 3 */
+ H245TerminalLabel *makeTerminalBroadcaster;
+ /* t = 4 */
+ /* t = 5 */
+ H245TerminalLabel *sendThisSource;
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ H245SubstituteConferenceIDCommand *substituteConferenceIDCommand;
+ /* t = 9 */
+ } u;
+} H245ConferenceCommand;
+
+EXTERN int asn1PE_H245ConferenceCommand (OOCTXT* pctxt, H245ConferenceCommand* pvalue);
+
+EXTERN int asn1PD_H245ConferenceCommand (OOCTXT* pctxt, H245ConferenceCommand* pvalue);
+
+/**************************************************************/
+/* */
+/* H223MultiplexReconfiguration_h223ModeChange */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223MultiplexReconfiguration_h223ModeChange_toLevel0 1
+#define T_H245H223MultiplexReconfiguration_h223ModeChange_toLevel1 2
+#define T_H245H223MultiplexReconfiguration_h223ModeChange_toLevel2 3
+#define T_H245H223MultiplexReconfiguration_h223ModeChange_toLevel2withOptionalHeader 4
+#define T_H245H223MultiplexReconfiguration_h223ModeChange_extElem1 5
+
+typedef struct EXTERN H245H223MultiplexReconfiguration_h223ModeChange {
+ int t;
+} H245H223MultiplexReconfiguration_h223ModeChange;
+
+EXTERN int asn1PE_H245H223MultiplexReconfiguration_h223ModeChange (OOCTXT* pctxt, H245H223MultiplexReconfiguration_h223ModeChange* pvalue);
+
+EXTERN int asn1PD_H245H223MultiplexReconfiguration_h223ModeChange (OOCTXT* pctxt, H245H223MultiplexReconfiguration_h223ModeChange* pvalue);
+
+/**************************************************************/
+/* */
+/* H223MultiplexReconfiguration_h223AnnexADoubleFlag */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223MultiplexReconfiguration_h223AnnexADoubleFlag_start 1
+#define T_H245H223MultiplexReconfiguration_h223AnnexADoubleFlag_stop 2
+#define T_H245H223MultiplexReconfiguration_h223AnnexADoubleFlag_extElem1 3
+
+typedef struct EXTERN H245H223MultiplexReconfiguration_h223AnnexADoubleFlag {
+ int t;
+} H245H223MultiplexReconfiguration_h223AnnexADoubleFlag;
+
+EXTERN int asn1PE_H245H223MultiplexReconfiguration_h223AnnexADoubleFlag (OOCTXT* pctxt, H245H223MultiplexReconfiguration_h223AnnexADoubleFlag* pvalue);
+
+EXTERN int asn1PD_H245H223MultiplexReconfiguration_h223AnnexADoubleFlag (OOCTXT* pctxt, H245H223MultiplexReconfiguration_h223AnnexADoubleFlag* pvalue);
+
+/**************************************************************/
+/* */
+/* H223MultiplexReconfiguration */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245H223MultiplexReconfiguration_h223ModeChange 1
+#define T_H245H223MultiplexReconfiguration_h223AnnexADoubleFlag 2
+#define T_H245H223MultiplexReconfiguration_extElem1 3
+
+typedef struct EXTERN H245H223MultiplexReconfiguration {
+ int t;
+ union {
+ /* t = 1 */
+ H245H223MultiplexReconfiguration_h223ModeChange *h223ModeChange;
+ /* t = 2 */
+ H245H223MultiplexReconfiguration_h223AnnexADoubleFlag *h223AnnexADoubleFlag;
+ /* t = 3 */
+ } u;
+} H245H223MultiplexReconfiguration;
+
+EXTERN int asn1PE_H245H223MultiplexReconfiguration (OOCTXT* pctxt, H245H223MultiplexReconfiguration* pvalue);
+
+EXTERN int asn1PD_H245H223MultiplexReconfiguration (OOCTXT* pctxt, H245H223MultiplexReconfiguration* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal_aal1_clockRecovery */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245NewATMVCCommand_aal_aal1_clockRecovery_nullClockRecovery 1
+#define T_H245NewATMVCCommand_aal_aal1_clockRecovery_srtsClockRecovery 2
+#define T_H245NewATMVCCommand_aal_aal1_clockRecovery_adaptiveClockRecovery 3
+#define T_H245NewATMVCCommand_aal_aal1_clockRecovery_extElem1 4
+
+typedef struct EXTERN H245NewATMVCCommand_aal_aal1_clockRecovery {
+ int t;
+} H245NewATMVCCommand_aal_aal1_clockRecovery;
+
+EXTERN int asn1PE_H245NewATMVCCommand_aal_aal1_clockRecovery (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1_clockRecovery* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCCommand_aal_aal1_clockRecovery (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1_clockRecovery* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal_aal1_errorCorrection */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245NewATMVCCommand_aal_aal1_errorCorrection_nullErrorCorrection 1
+#define T_H245NewATMVCCommand_aal_aal1_errorCorrection_longInterleaver 2
+#define T_H245NewATMVCCommand_aal_aal1_errorCorrection_shortInterleaver 3
+#define T_H245NewATMVCCommand_aal_aal1_errorCorrection_errorCorrectionOnly 4
+#define T_H245NewATMVCCommand_aal_aal1_errorCorrection_extElem1 5
+
+typedef struct EXTERN H245NewATMVCCommand_aal_aal1_errorCorrection {
+ int t;
+} H245NewATMVCCommand_aal_aal1_errorCorrection;
+
+EXTERN int asn1PE_H245NewATMVCCommand_aal_aal1_errorCorrection (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1_errorCorrection* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCCommand_aal_aal1_errorCorrection (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1_errorCorrection* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal_aal1 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NewATMVCCommand_aal_aal1 {
+ H245NewATMVCCommand_aal_aal1_clockRecovery clockRecovery;
+ H245NewATMVCCommand_aal_aal1_errorCorrection errorCorrection;
+ ASN1BOOL structuredDataTransfer;
+ ASN1BOOL partiallyFilledCells;
+} H245NewATMVCCommand_aal_aal1;
+
+EXTERN int asn1PE_H245NewATMVCCommand_aal_aal1 (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCCommand_aal_aal1 (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal_aal5 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NewATMVCCommand_aal_aal5 {
+ ASN1USINT forwardMaximumSDUSize;
+ ASN1USINT backwardMaximumSDUSize;
+} H245NewATMVCCommand_aal_aal5;
+
+EXTERN int asn1PE_H245NewATMVCCommand_aal_aal5 (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal5* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCCommand_aal_aal5 (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal5* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245NewATMVCCommand_aal_aal1 1
+#define T_H245NewATMVCCommand_aal_aal5 2
+#define T_H245NewATMVCCommand_aal_extElem1 3
+
+typedef struct EXTERN H245NewATMVCCommand_aal {
+ int t;
+ union {
+ /* t = 1 */
+ H245NewATMVCCommand_aal_aal1 *aal1;
+ /* t = 2 */
+ H245NewATMVCCommand_aal_aal5 *aal5;
+ /* t = 3 */
+ } u;
+} H245NewATMVCCommand_aal;
+
+EXTERN int asn1PE_H245NewATMVCCommand_aal (OOCTXT* pctxt, H245NewATMVCCommand_aal* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCCommand_aal (OOCTXT* pctxt, H245NewATMVCCommand_aal* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_multiplex */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245NewATMVCCommand_multiplex_noMultiplex 1
+#define T_H245NewATMVCCommand_multiplex_transportStream 2
+#define T_H245NewATMVCCommand_multiplex_programStream 3
+#define T_H245NewATMVCCommand_multiplex_extElem1 4
+
+typedef struct EXTERN H245NewATMVCCommand_multiplex {
+ int t;
+} H245NewATMVCCommand_multiplex;
+
+EXTERN int asn1PE_H245NewATMVCCommand_multiplex (OOCTXT* pctxt, H245NewATMVCCommand_multiplex* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCCommand_multiplex (OOCTXT* pctxt, H245NewATMVCCommand_multiplex* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_reverseParameters_multiplex */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245NewATMVCCommand_reverseParameters_multiplex_noMultiplex 1
+#define T_H245NewATMVCCommand_reverseParameters_multiplex_transportStream 2
+#define T_H245NewATMVCCommand_reverseParameters_multiplex_programStream 3
+#define T_H245NewATMVCCommand_reverseParameters_multiplex_extElem1 4
+
+typedef struct EXTERN H245NewATMVCCommand_reverseParameters_multiplex {
+ int t;
+} H245NewATMVCCommand_reverseParameters_multiplex;
+
+EXTERN int asn1PE_H245NewATMVCCommand_reverseParameters_multiplex (OOCTXT* pctxt, H245NewATMVCCommand_reverseParameters_multiplex* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCCommand_reverseParameters_multiplex (OOCTXT* pctxt, H245NewATMVCCommand_reverseParameters_multiplex* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_reverseParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NewATMVCCommand_reverseParameters {
+ ASN1USINT bitRate;
+ ASN1BOOL bitRateLockedToPCRClock;
+ ASN1BOOL bitRateLockedToNetworkClock;
+ H245NewATMVCCommand_reverseParameters_multiplex multiplex;
+} H245NewATMVCCommand_reverseParameters;
+
+EXTERN int asn1PE_H245NewATMVCCommand_reverseParameters (OOCTXT* pctxt, H245NewATMVCCommand_reverseParameters* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCCommand_reverseParameters (OOCTXT* pctxt, H245NewATMVCCommand_reverseParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NewATMVCCommand {
+ ASN1USINT resourceID;
+ ASN1USINT bitRate;
+ ASN1BOOL bitRateLockedToPCRClock;
+ ASN1BOOL bitRateLockedToNetworkClock;
+ H245NewATMVCCommand_aal aal;
+ H245NewATMVCCommand_multiplex multiplex;
+ H245NewATMVCCommand_reverseParameters reverseParameters;
+} H245NewATMVCCommand;
+
+EXTERN int asn1PE_H245NewATMVCCommand (OOCTXT* pctxt, H245NewATMVCCommand* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCCommand (OOCTXT* pctxt, H245NewATMVCCommand* pvalue);
+
+/**************************************************************/
+/* */
+/* MobileMultilinkReconfigurationCommand_status */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MobileMultilinkReconfigurationCommand_status_synchronized_ 1
+#define T_H245MobileMultilinkReconfigurationCommand_status_reconfiguration 2
+#define T_H245MobileMultilinkReconfigurationCommand_status_extElem1 3
+
+typedef struct EXTERN H245MobileMultilinkReconfigurationCommand_status {
+ int t;
+} H245MobileMultilinkReconfigurationCommand_status;
+
+EXTERN int asn1PE_H245MobileMultilinkReconfigurationCommand_status (OOCTXT* pctxt, H245MobileMultilinkReconfigurationCommand_status* pvalue);
+
+EXTERN int asn1PD_H245MobileMultilinkReconfigurationCommand_status (OOCTXT* pctxt, H245MobileMultilinkReconfigurationCommand_status* pvalue);
+
+/**************************************************************/
+/* */
+/* MobileMultilinkReconfigurationCommand */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MobileMultilinkReconfigurationCommand {
+ ASN1UINT8 sampleSize;
+ ASN1UINT8 samplesPerFrame;
+ H245MobileMultilinkReconfigurationCommand_status status;
+} H245MobileMultilinkReconfigurationCommand;
+
+EXTERN int asn1PE_H245MobileMultilinkReconfigurationCommand (OOCTXT* pctxt, H245MobileMultilinkReconfigurationCommand* pvalue);
+
+EXTERN int asn1PD_H245MobileMultilinkReconfigurationCommand (OOCTXT* pctxt, H245MobileMultilinkReconfigurationCommand* pvalue);
+
+/**************************************************************/
+/* */
+/* CommandMessage */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245CommandMessage_nonStandard 1
+#define T_H245CommandMessage_maintenanceLoopOffCommand 2
+#define T_H245CommandMessage_sendTerminalCapabilitySet 3
+#define T_H245CommandMessage_encryptionCommand 4
+#define T_H245CommandMessage_flowControlCommand 5
+#define T_H245CommandMessage_endSessionCommand 6
+#define T_H245CommandMessage_miscellaneousCommand 7
+#define T_H245CommandMessage_communicationModeCommand 8
+#define T_H245CommandMessage_conferenceCommand 9
+#define T_H245CommandMessage_h223MultiplexReconfiguration 10
+#define T_H245CommandMessage_newATMVCCommand 11
+#define T_H245CommandMessage_mobileMultilinkReconfigurationCommand 12
+#define T_H245CommandMessage_extElem1 13
+
+typedef struct EXTERN H245CommandMessage {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardMessage *nonStandard;
+ /* t = 2 */
+ H245MaintenanceLoopOffCommand *maintenanceLoopOffCommand;
+ /* t = 3 */
+ H245SendTerminalCapabilitySet *sendTerminalCapabilitySet;
+ /* t = 4 */
+ H245EncryptionCommand *encryptionCommand;
+ /* t = 5 */
+ H245FlowControlCommand *flowControlCommand;
+ /* t = 6 */
+ H245EndSessionCommand *endSessionCommand;
+ /* t = 7 */
+ H245MiscellaneousCommand *miscellaneousCommand;
+ /* t = 8 */
+ H245CommunicationModeCommand *communicationModeCommand;
+ /* t = 9 */
+ H245ConferenceCommand *conferenceCommand;
+ /* t = 10 */
+ H245H223MultiplexReconfiguration *h223MultiplexReconfiguration;
+ /* t = 11 */
+ H245NewATMVCCommand *newATMVCCommand;
+ /* t = 12 */
+ H245MobileMultilinkReconfigurationCommand *mobileMultilinkReconfigurationCommand;
+ /* t = 13 */
+ } u;
+} H245CommandMessage;
+
+EXTERN int asn1PE_H245CommandMessage (OOCTXT* pctxt, H245CommandMessage* pvalue);
+
+EXTERN int asn1PD_H245CommandMessage (OOCTXT* pctxt, H245CommandMessage* pvalue);
+
+/**************************************************************/
+/* */
+/* FunctionNotUnderstood */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245FunctionNotUnderstood_request 1
+#define T_H245FunctionNotUnderstood_response 2
+#define T_H245FunctionNotUnderstood_command 3
+
+typedef struct EXTERN H245FunctionNotUnderstood {
+ int t;
+ union {
+ /* t = 1 */
+ H245RequestMessage *request;
+ /* t = 2 */
+ H245ResponseMessage *response;
+ /* t = 3 */
+ H245CommandMessage *command;
+ } u;
+} H245FunctionNotUnderstood;
+
+EXTERN int asn1PE_H245FunctionNotUnderstood (OOCTXT* pctxt, H245FunctionNotUnderstood* pvalue);
+
+EXTERN int asn1PD_H245FunctionNotUnderstood (OOCTXT* pctxt, H245FunctionNotUnderstood* pvalue);
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationRelease */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MasterSlaveDeterminationRelease {
+ ASN1OCTET __dummy__;
+} H245MasterSlaveDeterminationRelease;
+
+EXTERN int asn1PE_H245MasterSlaveDeterminationRelease (OOCTXT* pctxt, H245MasterSlaveDeterminationRelease* pvalue);
+
+EXTERN int asn1PD_H245MasterSlaveDeterminationRelease (OOCTXT* pctxt, H245MasterSlaveDeterminationRelease* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetRelease */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245TerminalCapabilitySetRelease {
+ ASN1OCTET __dummy__;
+} H245TerminalCapabilitySetRelease;
+
+EXTERN int asn1PE_H245TerminalCapabilitySetRelease (OOCTXT* pctxt, H245TerminalCapabilitySetRelease* pvalue);
+
+EXTERN int asn1PD_H245TerminalCapabilitySetRelease (OOCTXT* pctxt, H245TerminalCapabilitySetRelease* pvalue);
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245OpenLogicalChannelConfirm {
+ H245LogicalChannelNumber forwardLogicalChannelNumber;
+} H245OpenLogicalChannelConfirm;
+
+EXTERN int asn1PE_H245OpenLogicalChannelConfirm (OOCTXT* pctxt, H245OpenLogicalChannelConfirm* pvalue);
+
+EXTERN int asn1PD_H245OpenLogicalChannelConfirm (OOCTXT* pctxt, H245OpenLogicalChannelConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestChannelCloseRelease */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestChannelCloseRelease {
+ H245LogicalChannelNumber forwardLogicalChannelNumber;
+} H245RequestChannelCloseRelease;
+
+EXTERN int asn1PE_H245RequestChannelCloseRelease (OOCTXT* pctxt, H245RequestChannelCloseRelease* pvalue);
+
+EXTERN int asn1PD_H245RequestChannelCloseRelease (OOCTXT* pctxt, H245RequestChannelCloseRelease* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendRelease_multiplexTableEntryNumber */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplexEntrySendRelease_multiplexTableEntryNumber {
+ ASN1UINT n;
+ H245MultiplexTableEntryNumber elem[15];
+} H245MultiplexEntrySendRelease_multiplexTableEntryNumber;
+
+EXTERN int asn1PE_H245MultiplexEntrySendRelease_multiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexEntrySendRelease_multiplexTableEntryNumber* pvalue);
+
+EXTERN int asn1PD_H245MultiplexEntrySendRelease_multiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexEntrySendRelease_multiplexTableEntryNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendRelease */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultiplexEntrySendRelease {
+ H245MultiplexEntrySendRelease_multiplexTableEntryNumber multiplexTableEntryNumber;
+} H245MultiplexEntrySendRelease;
+
+EXTERN int asn1PE_H245MultiplexEntrySendRelease (OOCTXT* pctxt, H245MultiplexEntrySendRelease* pvalue);
+
+EXTERN int asn1PD_H245MultiplexEntrySendRelease (OOCTXT* pctxt, H245MultiplexEntrySendRelease* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryRelease_entryNumbers */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestMultiplexEntryRelease_entryNumbers {
+ ASN1UINT n;
+ H245MultiplexTableEntryNumber elem[15];
+} H245RequestMultiplexEntryRelease_entryNumbers;
+
+EXTERN int asn1PE_H245RequestMultiplexEntryRelease_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryRelease_entryNumbers* pvalue);
+
+EXTERN int asn1PD_H245RequestMultiplexEntryRelease_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryRelease_entryNumbers* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryRelease */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestMultiplexEntryRelease {
+ H245RequestMultiplexEntryRelease_entryNumbers entryNumbers;
+} H245RequestMultiplexEntryRelease;
+
+EXTERN int asn1PE_H245RequestMultiplexEntryRelease (OOCTXT* pctxt, H245RequestMultiplexEntryRelease* pvalue);
+
+EXTERN int asn1PD_H245RequestMultiplexEntryRelease (OOCTXT* pctxt, H245RequestMultiplexEntryRelease* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestModeRelease */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245RequestModeRelease {
+ ASN1OCTET __dummy__;
+} H245RequestModeRelease;
+
+EXTERN int asn1PE_H245RequestModeRelease (OOCTXT* pctxt, H245RequestModeRelease* pvalue);
+
+EXTERN int asn1PD_H245RequestModeRelease (OOCTXT* pctxt, H245RequestModeRelease* pvalue);
+
+/**************************************************************/
+/* */
+/* MiscellaneousIndication_type_videoNotDecodedMBs */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MiscellaneousIndication_type_videoNotDecodedMBs {
+ ASN1USINT firstMB;
+ ASN1USINT numberOfMBs;
+ ASN1UINT8 temporalReference;
+} H245MiscellaneousIndication_type_videoNotDecodedMBs;
+
+EXTERN int asn1PE_H245MiscellaneousIndication_type_videoNotDecodedMBs (OOCTXT* pctxt, H245MiscellaneousIndication_type_videoNotDecodedMBs* pvalue);
+
+EXTERN int asn1PD_H245MiscellaneousIndication_type_videoNotDecodedMBs (OOCTXT* pctxt, H245MiscellaneousIndication_type_videoNotDecodedMBs* pvalue);
+
+/**************************************************************/
+/* */
+/* MiscellaneousIndication_type */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MiscellaneousIndication_type_logicalChannelActive 1
+#define T_H245MiscellaneousIndication_type_logicalChannelInactive 2
+#define T_H245MiscellaneousIndication_type_multipointConference 3
+#define T_H245MiscellaneousIndication_type_cancelMultipointConference 4
+#define T_H245MiscellaneousIndication_type_multipointZeroComm 5
+#define T_H245MiscellaneousIndication_type_cancelMultipointZeroComm 6
+#define T_H245MiscellaneousIndication_type_multipointSecondaryStatus 7
+#define T_H245MiscellaneousIndication_type_cancelMultipointSecondaryStatus 8
+#define T_H245MiscellaneousIndication_type_videoIndicateReadyToActivate 9
+#define T_H245MiscellaneousIndication_type_videoTemporalSpatialTradeOff 10
+#define T_H245MiscellaneousIndication_type_videoNotDecodedMBs 11
+#define T_H245MiscellaneousIndication_type_transportCapability 12
+#define T_H245MiscellaneousIndication_type_extElem1 13
+
+typedef struct EXTERN H245MiscellaneousIndication_type {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ /* t = 9 */
+ /* t = 10 */
+ ASN1UINT8 videoTemporalSpatialTradeOff;
+ /* t = 11 */
+ H245MiscellaneousIndication_type_videoNotDecodedMBs *videoNotDecodedMBs;
+ /* t = 12 */
+ H245TransportCapability *transportCapability;
+ /* t = 13 */
+ } u;
+} H245MiscellaneousIndication_type;
+
+EXTERN int asn1PE_H245MiscellaneousIndication_type (OOCTXT* pctxt, H245MiscellaneousIndication_type* pvalue);
+
+EXTERN int asn1PD_H245MiscellaneousIndication_type (OOCTXT* pctxt, H245MiscellaneousIndication_type* pvalue);
+
+/**************************************************************/
+/* */
+/* MiscellaneousIndication */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MiscellaneousIndication {
+ H245LogicalChannelNumber logicalChannelNumber;
+ H245MiscellaneousIndication_type type;
+} H245MiscellaneousIndication;
+
+EXTERN int asn1PE_H245MiscellaneousIndication (OOCTXT* pctxt, H245MiscellaneousIndication* pvalue);
+
+EXTERN int asn1PD_H245MiscellaneousIndication (OOCTXT* pctxt, H245MiscellaneousIndication* pvalue);
+
+/**************************************************************/
+/* */
+/* JitterIndication_scope */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245JitterIndication_scope_logicalChannelNumber 1
+#define T_H245JitterIndication_scope_resourceID 2
+#define T_H245JitterIndication_scope_wholeMultiplex 3
+
+typedef struct EXTERN H245JitterIndication_scope {
+ int t;
+ union {
+ /* t = 1 */
+ H245LogicalChannelNumber logicalChannelNumber;
+ /* t = 2 */
+ ASN1USINT resourceID;
+ /* t = 3 */
+ } u;
+} H245JitterIndication_scope;
+
+EXTERN int asn1PE_H245JitterIndication_scope (OOCTXT* pctxt, H245JitterIndication_scope* pvalue);
+
+EXTERN int asn1PD_H245JitterIndication_scope (OOCTXT* pctxt, H245JitterIndication_scope* pvalue);
+
+/**************************************************************/
+/* */
+/* JitterIndication */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245JitterIndication {
+ struct {
+ unsigned skippedFrameCountPresent : 1;
+ unsigned additionalDecoderBufferPresent : 1;
+ } m;
+ H245JitterIndication_scope scope;
+ ASN1UINT8 estimatedReceivedJitterMantissa;
+ ASN1UINT8 estimatedReceivedJitterExponent;
+ ASN1UINT8 skippedFrameCount;
+ ASN1UINT additionalDecoderBuffer;
+} H245JitterIndication;
+
+EXTERN int asn1PE_H245JitterIndication (OOCTXT* pctxt, H245JitterIndication* pvalue);
+
+EXTERN int asn1PD_H245JitterIndication (OOCTXT* pctxt, H245JitterIndication* pvalue);
+
+/**************************************************************/
+/* */
+/* H223SkewIndication */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H223SkewIndication {
+ H245LogicalChannelNumber logicalChannelNumber1;
+ H245LogicalChannelNumber logicalChannelNumber2;
+ ASN1USINT skew;
+} H245H223SkewIndication;
+
+EXTERN int asn1PE_H245H223SkewIndication (OOCTXT* pctxt, H245H223SkewIndication* pvalue);
+
+EXTERN int asn1PD_H245H223SkewIndication (OOCTXT* pctxt, H245H223SkewIndication* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal_aal1_clockRecovery */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245NewATMVCIndication_aal_aal1_clockRecovery_nullClockRecovery 1
+#define T_H245NewATMVCIndication_aal_aal1_clockRecovery_srtsClockRecovery 2
+#define T_H245NewATMVCIndication_aal_aal1_clockRecovery_adaptiveClockRecovery 3
+#define T_H245NewATMVCIndication_aal_aal1_clockRecovery_extElem1 4
+
+typedef struct EXTERN H245NewATMVCIndication_aal_aal1_clockRecovery {
+ int t;
+} H245NewATMVCIndication_aal_aal1_clockRecovery;
+
+EXTERN int asn1PE_H245NewATMVCIndication_aal_aal1_clockRecovery (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1_clockRecovery* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCIndication_aal_aal1_clockRecovery (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1_clockRecovery* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal_aal1_errorCorrection */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245NewATMVCIndication_aal_aal1_errorCorrection_nullErrorCorrection 1
+#define T_H245NewATMVCIndication_aal_aal1_errorCorrection_longInterleaver 2
+#define T_H245NewATMVCIndication_aal_aal1_errorCorrection_shortInterleaver 3
+#define T_H245NewATMVCIndication_aal_aal1_errorCorrection_errorCorrectionOnly 4
+#define T_H245NewATMVCIndication_aal_aal1_errorCorrection_extElem1 5
+
+typedef struct EXTERN H245NewATMVCIndication_aal_aal1_errorCorrection {
+ int t;
+} H245NewATMVCIndication_aal_aal1_errorCorrection;
+
+EXTERN int asn1PE_H245NewATMVCIndication_aal_aal1_errorCorrection (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1_errorCorrection* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCIndication_aal_aal1_errorCorrection (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1_errorCorrection* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal_aal1 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NewATMVCIndication_aal_aal1 {
+ H245NewATMVCIndication_aal_aal1_clockRecovery clockRecovery;
+ H245NewATMVCIndication_aal_aal1_errorCorrection errorCorrection;
+ ASN1BOOL structuredDataTransfer;
+ ASN1BOOL partiallyFilledCells;
+} H245NewATMVCIndication_aal_aal1;
+
+EXTERN int asn1PE_H245NewATMVCIndication_aal_aal1 (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCIndication_aal_aal1 (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal_aal5 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NewATMVCIndication_aal_aal5 {
+ ASN1USINT forwardMaximumSDUSize;
+ ASN1USINT backwardMaximumSDUSize;
+} H245NewATMVCIndication_aal_aal5;
+
+EXTERN int asn1PE_H245NewATMVCIndication_aal_aal5 (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal5* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCIndication_aal_aal5 (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal5* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245NewATMVCIndication_aal_aal1 1
+#define T_H245NewATMVCIndication_aal_aal5 2
+#define T_H245NewATMVCIndication_aal_extElem1 3
+
+typedef struct EXTERN H245NewATMVCIndication_aal {
+ int t;
+ union {
+ /* t = 1 */
+ H245NewATMVCIndication_aal_aal1 *aal1;
+ /* t = 2 */
+ H245NewATMVCIndication_aal_aal5 *aal5;
+ /* t = 3 */
+ } u;
+} H245NewATMVCIndication_aal;
+
+EXTERN int asn1PE_H245NewATMVCIndication_aal (OOCTXT* pctxt, H245NewATMVCIndication_aal* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCIndication_aal (OOCTXT* pctxt, H245NewATMVCIndication_aal* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_multiplex */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245NewATMVCIndication_multiplex_noMultiplex 1
+#define T_H245NewATMVCIndication_multiplex_transportStream 2
+#define T_H245NewATMVCIndication_multiplex_programStream 3
+#define T_H245NewATMVCIndication_multiplex_extElem1 4
+
+typedef struct EXTERN H245NewATMVCIndication_multiplex {
+ int t;
+} H245NewATMVCIndication_multiplex;
+
+EXTERN int asn1PE_H245NewATMVCIndication_multiplex (OOCTXT* pctxt, H245NewATMVCIndication_multiplex* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCIndication_multiplex (OOCTXT* pctxt, H245NewATMVCIndication_multiplex* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_reverseParameters_multiplex */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245NewATMVCIndication_reverseParameters_multiplex_noMultiplex 1
+#define T_H245NewATMVCIndication_reverseParameters_multiplex_transportStream 2
+#define T_H245NewATMVCIndication_reverseParameters_multiplex_programStream 3
+#define T_H245NewATMVCIndication_reverseParameters_multiplex_extElem1 4
+
+typedef struct EXTERN H245NewATMVCIndication_reverseParameters_multiplex {
+ int t;
+} H245NewATMVCIndication_reverseParameters_multiplex;
+
+EXTERN int asn1PE_H245NewATMVCIndication_reverseParameters_multiplex (OOCTXT* pctxt, H245NewATMVCIndication_reverseParameters_multiplex* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCIndication_reverseParameters_multiplex (OOCTXT* pctxt, H245NewATMVCIndication_reverseParameters_multiplex* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_reverseParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NewATMVCIndication_reverseParameters {
+ ASN1USINT bitRate;
+ ASN1BOOL bitRateLockedToPCRClock;
+ ASN1BOOL bitRateLockedToNetworkClock;
+ H245NewATMVCIndication_reverseParameters_multiplex multiplex;
+} H245NewATMVCIndication_reverseParameters;
+
+EXTERN int asn1PE_H245NewATMVCIndication_reverseParameters (OOCTXT* pctxt, H245NewATMVCIndication_reverseParameters* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCIndication_reverseParameters (OOCTXT* pctxt, H245NewATMVCIndication_reverseParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245NewATMVCIndication {
+ struct {
+ unsigned reverseParametersPresent : 1;
+ } m;
+ ASN1USINT resourceID;
+ ASN1USINT bitRate;
+ ASN1BOOL bitRateLockedToPCRClock;
+ ASN1BOOL bitRateLockedToNetworkClock;
+ H245NewATMVCIndication_aal aal;
+ H245NewATMVCIndication_multiplex multiplex;
+ H245NewATMVCIndication_reverseParameters reverseParameters;
+} H245NewATMVCIndication;
+
+EXTERN int asn1PE_H245NewATMVCIndication (OOCTXT* pctxt, H245NewATMVCIndication* pvalue);
+
+EXTERN int asn1PD_H245NewATMVCIndication (OOCTXT* pctxt, H245NewATMVCIndication* pvalue);
+
+/**************************************************************/
+/* */
+/* UserInputIndication_userInputSupportIndication */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245UserInputIndication_userInputSupportIndication_nonStandard 1
+#define T_H245UserInputIndication_userInputSupportIndication_basicString 2
+#define T_H245UserInputIndication_userInputSupportIndication_iA5String 3
+#define T_H245UserInputIndication_userInputSupportIndication_generalString 4
+#define T_H245UserInputIndication_userInputSupportIndication_extElem1 5
+
+typedef struct EXTERN H245UserInputIndication_userInputSupportIndication {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ } u;
+} H245UserInputIndication_userInputSupportIndication;
+
+EXTERN int asn1PE_H245UserInputIndication_userInputSupportIndication (OOCTXT* pctxt, H245UserInputIndication_userInputSupportIndication* pvalue);
+
+EXTERN int asn1PD_H245UserInputIndication_userInputSupportIndication (OOCTXT* pctxt, H245UserInputIndication_userInputSupportIndication* pvalue);
+
+/**************************************************************/
+/* */
+/* UserInputIndication_signal_rtp */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UserInputIndication_signal_rtp {
+ struct {
+ unsigned timestampPresent : 1;
+ unsigned expirationTimePresent : 1;
+ } m;
+ ASN1UINT timestamp;
+ ASN1UINT expirationTime;
+ H245LogicalChannelNumber logicalChannelNumber;
+} H245UserInputIndication_signal_rtp;
+
+EXTERN int asn1PE_H245UserInputIndication_signal_rtp (OOCTXT* pctxt, H245UserInputIndication_signal_rtp* pvalue);
+
+EXTERN int asn1PD_H245UserInputIndication_signal_rtp (OOCTXT* pctxt, H245UserInputIndication_signal_rtp* pvalue);
+
+/**************************************************************/
+/* */
+/* UserInputIndication_signal */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UserInputIndication_signal {
+ struct {
+ unsigned durationPresent : 1;
+ unsigned rtpPresent : 1;
+ unsigned rtpPayloadIndicationPresent : 1;
+ } m;
+ ASN1IA5String signalType;
+ ASN1USINT duration;
+ H245UserInputIndication_signal_rtp rtp;
+} H245UserInputIndication_signal;
+
+EXTERN int asn1PE_H245UserInputIndication_signal (OOCTXT* pctxt, H245UserInputIndication_signal* pvalue);
+
+EXTERN int asn1PD_H245UserInputIndication_signal (OOCTXT* pctxt, H245UserInputIndication_signal* pvalue);
+
+/**************************************************************/
+/* */
+/* UserInputIndication_signalUpdate_rtp */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UserInputIndication_signalUpdate_rtp {
+ H245LogicalChannelNumber logicalChannelNumber;
+} H245UserInputIndication_signalUpdate_rtp;
+
+EXTERN int asn1PE_H245UserInputIndication_signalUpdate_rtp (OOCTXT* pctxt, H245UserInputIndication_signalUpdate_rtp* pvalue);
+
+EXTERN int asn1PD_H245UserInputIndication_signalUpdate_rtp (OOCTXT* pctxt, H245UserInputIndication_signalUpdate_rtp* pvalue);
+
+/**************************************************************/
+/* */
+/* UserInputIndication_signalUpdate */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UserInputIndication_signalUpdate {
+ struct {
+ unsigned rtpPresent : 1;
+ } m;
+ ASN1USINT duration;
+ H245UserInputIndication_signalUpdate_rtp rtp;
+} H245UserInputIndication_signalUpdate;
+
+EXTERN int asn1PE_H245UserInputIndication_signalUpdate (OOCTXT* pctxt, H245UserInputIndication_signalUpdate* pvalue);
+
+EXTERN int asn1PD_H245UserInputIndication_signalUpdate (OOCTXT* pctxt, H245UserInputIndication_signalUpdate* pvalue);
+
+/**************************************************************/
+/* */
+/* UserInputIndication_extendedAlphanumeric */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245UserInputIndication_extendedAlphanumeric {
+ struct {
+ unsigned rtpPayloadIndicationPresent : 1;
+ } m;
+ ASN1GeneralString alphanumeric;
+} H245UserInputIndication_extendedAlphanumeric;
+
+EXTERN int asn1PE_H245UserInputIndication_extendedAlphanumeric (OOCTXT* pctxt, H245UserInputIndication_extendedAlphanumeric* pvalue);
+
+EXTERN int asn1PD_H245UserInputIndication_extendedAlphanumeric (OOCTXT* pctxt, H245UserInputIndication_extendedAlphanumeric* pvalue);
+
+/**************************************************************/
+/* */
+/* UserInputIndication */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245UserInputIndication_nonStandard 1
+#define T_H245UserInputIndication_alphanumeric 2
+#define T_H245UserInputIndication_userInputSupportIndication 3
+#define T_H245UserInputIndication_signal 4
+#define T_H245UserInputIndication_signalUpdate 5
+#define T_H245UserInputIndication_extendedAlphanumeric 6
+#define T_H245UserInputIndication_extElem1 7
+
+typedef struct EXTERN H245UserInputIndication {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardParameter *nonStandard;
+ /* t = 2 */
+ ASN1GeneralString alphanumeric;
+ /* t = 3 */
+ H245UserInputIndication_userInputSupportIndication *userInputSupportIndication;
+ /* t = 4 */
+ H245UserInputIndication_signal *signal;
+ /* t = 5 */
+ H245UserInputIndication_signalUpdate *signalUpdate;
+ /* t = 6 */
+ H245UserInputIndication_extendedAlphanumeric *extendedAlphanumeric;
+ /* t = 7 */
+ } u;
+} H245UserInputIndication;
+
+EXTERN int asn1PE_H245UserInputIndication (OOCTXT* pctxt, H245UserInputIndication* pvalue);
+
+EXTERN int asn1PD_H245UserInputIndication (OOCTXT* pctxt, H245UserInputIndication* pvalue);
+
+/**************************************************************/
+/* */
+/* H2250MaximumSkewIndication */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245H2250MaximumSkewIndication {
+ H245LogicalChannelNumber logicalChannelNumber1;
+ H245LogicalChannelNumber logicalChannelNumber2;
+ ASN1USINT maximumSkew;
+} H245H2250MaximumSkewIndication;
+
+EXTERN int asn1PE_H245H2250MaximumSkewIndication (OOCTXT* pctxt, H245H2250MaximumSkewIndication* pvalue);
+
+EXTERN int asn1PD_H245H2250MaximumSkewIndication (OOCTXT* pctxt, H245H2250MaximumSkewIndication* pvalue);
+
+/**************************************************************/
+/* */
+/* MCLocationIndication */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MCLocationIndication {
+ H245TransportAddress signalAddress;
+} H245MCLocationIndication;
+
+EXTERN int asn1PE_H245MCLocationIndication (OOCTXT* pctxt, H245MCLocationIndication* pvalue);
+
+EXTERN int asn1PD_H245MCLocationIndication (OOCTXT* pctxt, H245MCLocationIndication* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalYouAreSeeingInSubPictureNumber */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245TerminalYouAreSeeingInSubPictureNumber {
+ H245TerminalNumber terminalNumber;
+ ASN1UINT8 subPictureNumber;
+} H245TerminalYouAreSeeingInSubPictureNumber;
+
+EXTERN int asn1PE_H245TerminalYouAreSeeingInSubPictureNumber (OOCTXT* pctxt, H245TerminalYouAreSeeingInSubPictureNumber* pvalue);
+
+EXTERN int asn1PD_H245TerminalYouAreSeeingInSubPictureNumber (OOCTXT* pctxt, H245TerminalYouAreSeeingInSubPictureNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* VideoIndicateCompose */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245VideoIndicateCompose {
+ ASN1UINT8 compositionNumber;
+} H245VideoIndicateCompose;
+
+EXTERN int asn1PE_H245VideoIndicateCompose (OOCTXT* pctxt, H245VideoIndicateCompose* pvalue);
+
+EXTERN int asn1PD_H245VideoIndicateCompose (OOCTXT* pctxt, H245VideoIndicateCompose* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceIndication */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245ConferenceIndication_sbeNumber 1
+#define T_H245ConferenceIndication_terminalNumberAssign 2
+#define T_H245ConferenceIndication_terminalJoinedConference 3
+#define T_H245ConferenceIndication_terminalLeftConference 4
+#define T_H245ConferenceIndication_seenByAtLeastOneOther 5
+#define T_H245ConferenceIndication_cancelSeenByAtLeastOneOther 6
+#define T_H245ConferenceIndication_seenByAll 7
+#define T_H245ConferenceIndication_cancelSeenByAll 8
+#define T_H245ConferenceIndication_terminalYouAreSeeing 9
+#define T_H245ConferenceIndication_requestForFloor 10
+#define T_H245ConferenceIndication_withdrawChairToken 11
+#define T_H245ConferenceIndication_floorRequested 12
+#define T_H245ConferenceIndication_terminalYouAreSeeingInSubPictureNumber 13
+#define T_H245ConferenceIndication_videoIndicateCompose 14
+#define T_H245ConferenceIndication_extElem1 15
+
+typedef struct EXTERN H245ConferenceIndication {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1UINT8 sbeNumber;
+ /* t = 2 */
+ H245TerminalLabel *terminalNumberAssign;
+ /* t = 3 */
+ H245TerminalLabel *terminalJoinedConference;
+ /* t = 4 */
+ H245TerminalLabel *terminalLeftConference;
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ /* t = 9 */
+ H245TerminalLabel *terminalYouAreSeeing;
+ /* t = 10 */
+ /* t = 11 */
+ /* t = 12 */
+ H245TerminalLabel *floorRequested;
+ /* t = 13 */
+ H245TerminalYouAreSeeingInSubPictureNumber *terminalYouAreSeeingInSubPictureNumber;
+ /* t = 14 */
+ H245VideoIndicateCompose *videoIndicateCompose;
+ /* t = 15 */
+ } u;
+} H245ConferenceIndication;
+
+EXTERN int asn1PE_H245ConferenceIndication (OOCTXT* pctxt, H245ConferenceIndication* pvalue);
+
+EXTERN int asn1PD_H245ConferenceIndication (OOCTXT* pctxt, H245ConferenceIndication* pvalue);
+
+/**************************************************************/
+/* */
+/* VendorIdentification_productNumber */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245VendorIdentification_productNumber {
+ ASN1UINT numocts;
+ ASN1OCTET data[256];
+} H245VendorIdentification_productNumber;
+
+EXTERN int asn1PE_H245VendorIdentification_productNumber (OOCTXT* pctxt, H245VendorIdentification_productNumber* pvalue);
+
+EXTERN int asn1PD_H245VendorIdentification_productNumber (OOCTXT* pctxt, H245VendorIdentification_productNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* VendorIdentification_versionNumber */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245VendorIdentification_versionNumber {
+ ASN1UINT numocts;
+ ASN1OCTET data[256];
+} H245VendorIdentification_versionNumber;
+
+EXTERN int asn1PE_H245VendorIdentification_versionNumber (OOCTXT* pctxt, H245VendorIdentification_versionNumber* pvalue);
+
+EXTERN int asn1PD_H245VendorIdentification_versionNumber (OOCTXT* pctxt, H245VendorIdentification_versionNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* VendorIdentification */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245VendorIdentification {
+ struct {
+ unsigned productNumberPresent : 1;
+ unsigned versionNumberPresent : 1;
+ } m;
+ H245NonStandardIdentifier vendor;
+ H245VendorIdentification_productNumber productNumber;
+ H245VendorIdentification_versionNumber versionNumber;
+} H245VendorIdentification;
+
+EXTERN int asn1PE_H245VendorIdentification (OOCTXT* pctxt, H245VendorIdentification* pvalue);
+
+EXTERN int asn1PD_H245VendorIdentification (OOCTXT* pctxt, H245VendorIdentification* pvalue);
+
+/**************************************************************/
+/* */
+/* FunctionNotSupported_cause */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245FunctionNotSupported_cause_syntaxError 1
+#define T_H245FunctionNotSupported_cause_semanticError 2
+#define T_H245FunctionNotSupported_cause_unknownFunction 3
+#define T_H245FunctionNotSupported_cause_extElem1 4
+
+typedef struct EXTERN H245FunctionNotSupported_cause {
+ int t;
+} H245FunctionNotSupported_cause;
+
+EXTERN int asn1PE_H245FunctionNotSupported_cause (OOCTXT* pctxt, H245FunctionNotSupported_cause* pvalue);
+
+EXTERN int asn1PD_H245FunctionNotSupported_cause (OOCTXT* pctxt, H245FunctionNotSupported_cause* pvalue);
+
+/**************************************************************/
+/* */
+/* FunctionNotSupported */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245FunctionNotSupported {
+ struct {
+ unsigned returnedFunctionPresent : 1;
+ } m;
+ H245FunctionNotSupported_cause cause;
+ ASN1DynOctStr returnedFunction;
+} H245FunctionNotSupported;
+
+EXTERN int asn1PE_H245FunctionNotSupported (OOCTXT* pctxt, H245FunctionNotSupported* pvalue);
+
+EXTERN int asn1PD_H245FunctionNotSupported (OOCTXT* pctxt, H245FunctionNotSupported* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkIndication_crcDesired */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultilinkIndication_crcDesired {
+ ASN1OCTET __dummy__;
+} H245MultilinkIndication_crcDesired;
+
+EXTERN int asn1PE_H245MultilinkIndication_crcDesired (OOCTXT* pctxt, H245MultilinkIndication_crcDesired* pvalue);
+
+EXTERN int asn1PD_H245MultilinkIndication_crcDesired (OOCTXT* pctxt, H245MultilinkIndication_crcDesired* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkIndication_excessiveError */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MultilinkIndication_excessiveError {
+ H245ConnectionIdentifier connectionIdentifier;
+} H245MultilinkIndication_excessiveError;
+
+EXTERN int asn1PE_H245MultilinkIndication_excessiveError (OOCTXT* pctxt, H245MultilinkIndication_excessiveError* pvalue);
+
+EXTERN int asn1PD_H245MultilinkIndication_excessiveError (OOCTXT* pctxt, H245MultilinkIndication_excessiveError* pvalue);
+
+/**************************************************************/
+/* */
+/* MultilinkIndication */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MultilinkIndication_nonStandard 1
+#define T_H245MultilinkIndication_crcDesired 2
+#define T_H245MultilinkIndication_excessiveError 3
+#define T_H245MultilinkIndication_extElem1 4
+
+typedef struct EXTERN H245MultilinkIndication {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardMessage *nonStandard;
+ /* t = 2 */
+ H245MultilinkIndication_crcDesired *crcDesired;
+ /* t = 3 */
+ H245MultilinkIndication_excessiveError *excessiveError;
+ /* t = 4 */
+ } u;
+} H245MultilinkIndication;
+
+EXTERN int asn1PE_H245MultilinkIndication (OOCTXT* pctxt, H245MultilinkIndication* pvalue);
+
+EXTERN int asn1PD_H245MultilinkIndication (OOCTXT* pctxt, H245MultilinkIndication* pvalue);
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateRelease */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245LogicalChannelRateRelease {
+ ASN1OCTET __dummy__;
+} H245LogicalChannelRateRelease;
+
+EXTERN int asn1PE_H245LogicalChannelRateRelease (OOCTXT* pctxt, H245LogicalChannelRateRelease* pvalue);
+
+EXTERN int asn1PD_H245LogicalChannelRateRelease (OOCTXT* pctxt, H245LogicalChannelRateRelease* pvalue);
+
+/**************************************************************/
+/* */
+/* FlowControlIndication_scope */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245FlowControlIndication_scope_logicalChannelNumber 1
+#define T_H245FlowControlIndication_scope_resourceID 2
+#define T_H245FlowControlIndication_scope_wholeMultiplex 3
+
+typedef struct EXTERN H245FlowControlIndication_scope {
+ int t;
+ union {
+ /* t = 1 */
+ H245LogicalChannelNumber logicalChannelNumber;
+ /* t = 2 */
+ ASN1USINT resourceID;
+ /* t = 3 */
+ } u;
+} H245FlowControlIndication_scope;
+
+EXTERN int asn1PE_H245FlowControlIndication_scope (OOCTXT* pctxt, H245FlowControlIndication_scope* pvalue);
+
+EXTERN int asn1PD_H245FlowControlIndication_scope (OOCTXT* pctxt, H245FlowControlIndication_scope* pvalue);
+
+/**************************************************************/
+/* */
+/* FlowControlIndication_restriction */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245FlowControlIndication_restriction_maximumBitRate 1
+#define T_H245FlowControlIndication_restriction_noRestriction 2
+
+typedef struct EXTERN H245FlowControlIndication_restriction {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1UINT maximumBitRate;
+ /* t = 2 */
+ } u;
+} H245FlowControlIndication_restriction;
+
+EXTERN int asn1PE_H245FlowControlIndication_restriction (OOCTXT* pctxt, H245FlowControlIndication_restriction* pvalue);
+
+EXTERN int asn1PD_H245FlowControlIndication_restriction (OOCTXT* pctxt, H245FlowControlIndication_restriction* pvalue);
+
+/**************************************************************/
+/* */
+/* FlowControlIndication */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245FlowControlIndication {
+ H245FlowControlIndication_scope scope;
+ H245FlowControlIndication_restriction restriction;
+} H245FlowControlIndication;
+
+EXTERN int asn1PE_H245FlowControlIndication (OOCTXT* pctxt, H245FlowControlIndication* pvalue);
+
+EXTERN int asn1PD_H245FlowControlIndication (OOCTXT* pctxt, H245FlowControlIndication* pvalue);
+
+/**************************************************************/
+/* */
+/* MobileMultilinkReconfigurationIndication */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H245MobileMultilinkReconfigurationIndication {
+ ASN1UINT8 sampleSize;
+ ASN1UINT8 samplesPerFrame;
+} H245MobileMultilinkReconfigurationIndication;
+
+EXTERN int asn1PE_H245MobileMultilinkReconfigurationIndication (OOCTXT* pctxt, H245MobileMultilinkReconfigurationIndication* pvalue);
+
+EXTERN int asn1PD_H245MobileMultilinkReconfigurationIndication (OOCTXT* pctxt, H245MobileMultilinkReconfigurationIndication* pvalue);
+
+/**************************************************************/
+/* */
+/* IndicationMessage */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245IndicationMessage_nonStandard 1
+#define T_H245IndicationMessage_functionNotUnderstood 2
+#define T_H245IndicationMessage_masterSlaveDeterminationRelease 3
+#define T_H245IndicationMessage_terminalCapabilitySetRelease 4
+#define T_H245IndicationMessage_openLogicalChannelConfirm 5
+#define T_H245IndicationMessage_requestChannelCloseRelease 6
+#define T_H245IndicationMessage_multiplexEntrySendRelease 7
+#define T_H245IndicationMessage_requestMultiplexEntryRelease 8
+#define T_H245IndicationMessage_requestModeRelease 9
+#define T_H245IndicationMessage_miscellaneousIndication 10
+#define T_H245IndicationMessage_jitterIndication 11
+#define T_H245IndicationMessage_h223SkewIndication 12
+#define T_H245IndicationMessage_newATMVCIndication 13
+#define T_H245IndicationMessage_userInput 14
+#define T_H245IndicationMessage_h2250MaximumSkewIndication 15
+#define T_H245IndicationMessage_mcLocationIndication 16
+#define T_H245IndicationMessage_conferenceIndication 17
+#define T_H245IndicationMessage_vendorIdentification 18
+#define T_H245IndicationMessage_functionNotSupported 19
+#define T_H245IndicationMessage_multilinkIndication 20
+#define T_H245IndicationMessage_logicalChannelRateRelease 21
+#define T_H245IndicationMessage_flowControlIndication 22
+#define T_H245IndicationMessage_mobileMultilinkReconfigurationIndication 23
+#define T_H245IndicationMessage_extElem1 24
+
+typedef struct EXTERN H245IndicationMessage {
+ int t;
+ union {
+ /* t = 1 */
+ H245NonStandardMessage *nonStandard;
+ /* t = 2 */
+ H245FunctionNotUnderstood *functionNotUnderstood;
+ /* t = 3 */
+ H245MasterSlaveDeterminationRelease *masterSlaveDeterminationRelease;
+ /* t = 4 */
+ H245TerminalCapabilitySetRelease *terminalCapabilitySetRelease;
+ /* t = 5 */
+ H245OpenLogicalChannelConfirm *openLogicalChannelConfirm;
+ /* t = 6 */
+ H245RequestChannelCloseRelease *requestChannelCloseRelease;
+ /* t = 7 */
+ H245MultiplexEntrySendRelease *multiplexEntrySendRelease;
+ /* t = 8 */
+ H245RequestMultiplexEntryRelease *requestMultiplexEntryRelease;
+ /* t = 9 */
+ H245RequestModeRelease *requestModeRelease;
+ /* t = 10 */
+ H245MiscellaneousIndication *miscellaneousIndication;
+ /* t = 11 */
+ H245JitterIndication *jitterIndication;
+ /* t = 12 */
+ H245H223SkewIndication *h223SkewIndication;
+ /* t = 13 */
+ H245NewATMVCIndication *newATMVCIndication;
+ /* t = 14 */
+ H245UserInputIndication *userInput;
+ /* t = 15 */
+ H245H2250MaximumSkewIndication *h2250MaximumSkewIndication;
+ /* t = 16 */
+ H245MCLocationIndication *mcLocationIndication;
+ /* t = 17 */
+ H245ConferenceIndication *conferenceIndication;
+ /* t = 18 */
+ H245VendorIdentification *vendorIdentification;
+ /* t = 19 */
+ H245FunctionNotSupported *functionNotSupported;
+ /* t = 20 */
+ H245MultilinkIndication *multilinkIndication;
+ /* t = 21 */
+ H245LogicalChannelRateRelease *logicalChannelRateRelease;
+ /* t = 22 */
+ H245FlowControlIndication *flowControlIndication;
+ /* t = 23 */
+ H245MobileMultilinkReconfigurationIndication *mobileMultilinkReconfigurationIndication;
+ /* t = 24 */
+ } u;
+} H245IndicationMessage;
+
+EXTERN int asn1PE_H245IndicationMessage (OOCTXT* pctxt, H245IndicationMessage* pvalue);
+
+EXTERN int asn1PD_H245IndicationMessage (OOCTXT* pctxt, H245IndicationMessage* pvalue);
+
+/**************************************************************/
+/* */
+/* MultimediaSystemControlMessage */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H245MultimediaSystemControlMessage_request 1
+#define T_H245MultimediaSystemControlMessage_response 2
+#define T_H245MultimediaSystemControlMessage_command 3
+#define T_H245MultimediaSystemControlMessage_indication 4
+#define T_H245MultimediaSystemControlMessage_extElem1 5
+
+typedef struct EXTERN H245MultimediaSystemControlMessage {
+ int t;
+ union {
+ /* t = 1 */
+ H245RequestMessage *request;
+ /* t = 2 */
+ H245ResponseMessage *response;
+ /* t = 3 */
+ H245CommandMessage *command;
+ /* t = 4 */
+ H245IndicationMessage *indication;
+ /* t = 5 */
+ } u;
+} H245MultimediaSystemControlMessage;
+
+EXTERN int asn1PE_H245MultimediaSystemControlMessage (OOCTXT* pctxt, H245MultimediaSystemControlMessage* pvalue);
+
+EXTERN int asn1PD_H245MultimediaSystemControlMessage (OOCTXT* pctxt, H245MultimediaSystemControlMessage* pvalue);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLDec.c b/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLDec.c
new file mode 100644
index 000000000..0ec58a82e
--- /dev/null
+++ b/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLDec.c
@@ -0,0 +1,42170 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#include "ooasn1.h"
+#include "MULTIMEDIA-SYSTEM-CONTROL.h"
+#include "eventHandler.h"
+
+/**************************************************************/
+/* */
+/* NonStandardIdentifier_h221NonStandard */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NonStandardIdentifier_h221NonStandard (OOCTXT* pctxt, H245NonStandardIdentifier_h221NonStandard* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode t35CountryCode */
+
+ invokeStartElement (pctxt, "t35CountryCode", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->t35CountryCode, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->t35CountryCode);
+
+ invokeEndElement (pctxt, "t35CountryCode", -1);
+
+ /* decode t35Extension */
+
+ invokeStartElement (pctxt, "t35Extension", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->t35Extension, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->t35Extension);
+
+ invokeEndElement (pctxt, "t35Extension", -1);
+
+ /* decode manufacturerCode */
+
+ invokeStartElement (pctxt, "manufacturerCode", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->manufacturerCode, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->manufacturerCode);
+
+ invokeEndElement (pctxt, "manufacturerCode", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NonStandardIdentifier (OOCTXT* pctxt, H245NonStandardIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* object */
+ case 0:
+ invokeStartElement (pctxt, "object", -1);
+
+ pvalue->u.object = ALLOC_ASN1ELEM (pctxt, ASN1OBJID);
+
+ stat = decodeObjectIdentifier (pctxt, pvalue->u.object);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->u.object->numids, pvalue->u.object->subid);
+
+ invokeEndElement (pctxt, "object", -1);
+
+ break;
+
+ /* h221NonStandard */
+ case 1:
+ invokeStartElement (pctxt, "h221NonStandard", -1);
+
+ pvalue->u.h221NonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardIdentifier_h221NonStandard);
+
+ stat = asn1PD_H245NonStandardIdentifier_h221NonStandard (pctxt, pvalue->u.h221NonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h221NonStandard", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NonStandardParameter (OOCTXT* pctxt, H245NonStandardParameter* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode nonStandardIdentifier */
+
+ invokeStartElement (pctxt, "nonStandardIdentifier", -1);
+
+ stat = asn1PD_H245NonStandardIdentifier (pctxt, &pvalue->nonStandardIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardIdentifier", -1);
+
+ /* decode data */
+
+ invokeStartElement (pctxt, "data", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->data);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->data.numocts, pvalue->data.data);
+
+ invokeEndElement (pctxt, "data", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V42bis */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245V42bis (OOCTXT* pctxt, H245V42bis* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode numberOfCodewords */
+
+ invokeStartElement (pctxt, "numberOfCodewords", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->numberOfCodewords, 1U, 65536U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->numberOfCodewords);
+
+ invokeEndElement (pctxt, "numberOfCodewords", -1);
+
+ /* decode maximumStringLength */
+
+ invokeStartElement (pctxt, "maximumStringLength", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maximumStringLength, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maximumStringLength);
+
+ invokeEndElement (pctxt, "maximumStringLength", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CompressionType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CompressionType (OOCTXT* pctxt, H245CompressionType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 0);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* v42bis */
+ case 0:
+ invokeStartElement (pctxt, "v42bis", -1);
+
+ pvalue->u.v42bis = ALLOC_ASN1ELEM (pctxt, H245V42bis);
+
+ stat = asn1PD_H245V42bis (pctxt, pvalue->u.v42bis);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "v42bis", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 2;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataProtocolCapability_v76wCompression */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DataProtocolCapability_v76wCompression (OOCTXT* pctxt, H245DataProtocolCapability_v76wCompression* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* transmitCompression */
+ case 0:
+ invokeStartElement (pctxt, "transmitCompression", -1);
+
+ pvalue->u.transmitCompression = ALLOC_ASN1ELEM (pctxt, H245CompressionType);
+
+ stat = asn1PD_H245CompressionType (pctxt, pvalue->u.transmitCompression);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transmitCompression", -1);
+
+ break;
+
+ /* receiveCompression */
+ case 1:
+ invokeStartElement (pctxt, "receiveCompression", -1);
+
+ pvalue->u.receiveCompression = ALLOC_ASN1ELEM (pctxt, H245CompressionType);
+
+ stat = asn1PD_H245CompressionType (pctxt, pvalue->u.receiveCompression);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveCompression", -1);
+
+ break;
+
+ /* transmitAndReceiveCompression */
+ case 2:
+ invokeStartElement (pctxt, "transmitAndReceiveCompression", -1);
+
+ pvalue->u.transmitAndReceiveCompression = ALLOC_ASN1ELEM (pctxt, H245CompressionType);
+
+ stat = asn1PD_H245CompressionType (pctxt, pvalue->u.transmitAndReceiveCompression);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transmitAndReceiveCompression", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataProtocolCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DataProtocolCapability (OOCTXT* pctxt, H245DataProtocolCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 6);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* v14buffered */
+ case 1:
+ invokeStartElement (pctxt, "v14buffered", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "v14buffered", -1);
+
+ break;
+
+ /* v42lapm */
+ case 2:
+ invokeStartElement (pctxt, "v42lapm", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "v42lapm", -1);
+
+ break;
+
+ /* hdlcFrameTunnelling */
+ case 3:
+ invokeStartElement (pctxt, "hdlcFrameTunnelling", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "hdlcFrameTunnelling", -1);
+
+ break;
+
+ /* h310SeparateVCStack */
+ case 4:
+ invokeStartElement (pctxt, "h310SeparateVCStack", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "h310SeparateVCStack", -1);
+
+ break;
+
+ /* h310SingleVCStack */
+ case 5:
+ invokeStartElement (pctxt, "h310SingleVCStack", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "h310SingleVCStack", -1);
+
+ break;
+
+ /* transparent */
+ case 6:
+ invokeStartElement (pctxt, "transparent", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "transparent", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 8;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* segmentationAndReassembly */
+ case 8:
+ invokeStartElement (pctxt, "segmentationAndReassembly", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "segmentationAndReassembly", -1);
+
+ break;
+
+ /* hdlcFrameTunnelingwSAR */
+ case 9:
+ invokeStartElement (pctxt, "hdlcFrameTunnelingwSAR", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "hdlcFrameTunnelingwSAR", -1);
+
+ break;
+
+ /* v120 */
+ case 10:
+ invokeStartElement (pctxt, "v120", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "v120", -1);
+
+ break;
+
+ /* separateLANStack */
+ case 11:
+ invokeStartElement (pctxt, "separateLANStack", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "separateLANStack", -1);
+
+ break;
+
+ /* v76wCompression */
+ case 12:
+ invokeStartElement (pctxt, "v76wCompression", -1);
+
+ pvalue->u.v76wCompression = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability_v76wCompression);
+
+ stat = asn1PD_H245DataProtocolCapability_v76wCompression (pctxt, pvalue->u.v76wCompression);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "v76wCompression", -1);
+
+ break;
+
+ /* tcp */
+ case 13:
+ invokeStartElement (pctxt, "tcp", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "tcp", -1);
+
+ break;
+
+ /* udp */
+ case 14:
+ invokeStartElement (pctxt, "udp", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "udp", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T38FaxRateManagement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245T38FaxRateManagement (OOCTXT* pctxt, H245T38FaxRateManagement* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* localTCF */
+ case 0:
+ invokeStartElement (pctxt, "localTCF", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "localTCF", -1);
+
+ break;
+
+ /* transferredTCF */
+ case 1:
+ invokeStartElement (pctxt, "transferredTCF", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "transferredTCF", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T38FaxUdpOptions_t38FaxUdpEC */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245T38FaxUdpOptions_t38FaxUdpEC (OOCTXT* pctxt, H245T38FaxUdpOptions_t38FaxUdpEC* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* t38UDPFEC */
+ case 0:
+ invokeStartElement (pctxt, "t38UDPFEC", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "t38UDPFEC", -1);
+
+ break;
+
+ /* t38UDPRedundancy */
+ case 1:
+ invokeStartElement (pctxt, "t38UDPRedundancy", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "t38UDPRedundancy", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T38FaxUdpOptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245T38FaxUdpOptions (OOCTXT* pctxt, H245T38FaxUdpOptions* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL optbit;
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.t38FaxMaxBufferPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.t38FaxMaxDatagramPresent = optbit;
+
+ /* decode t38FaxMaxBuffer */
+
+ if (pvalue->m.t38FaxMaxBufferPresent) {
+ invokeStartElement (pctxt, "t38FaxMaxBuffer", -1);
+
+ stat = decodeUnconsInteger (pctxt, &pvalue->t38FaxMaxBuffer);
+ if (stat != ASN_OK) return stat;
+ invokeIntValue (pctxt, pvalue->t38FaxMaxBuffer);
+
+ invokeEndElement (pctxt, "t38FaxMaxBuffer", -1);
+ }
+
+ /* decode t38FaxMaxDatagram */
+
+ if (pvalue->m.t38FaxMaxDatagramPresent) {
+ invokeStartElement (pctxt, "t38FaxMaxDatagram", -1);
+
+ stat = decodeUnconsInteger (pctxt, &pvalue->t38FaxMaxDatagram);
+ if (stat != ASN_OK) return stat;
+ invokeIntValue (pctxt, pvalue->t38FaxMaxDatagram);
+
+ invokeEndElement (pctxt, "t38FaxMaxDatagram", -1);
+ }
+
+ /* decode t38FaxUdpEC */
+
+ invokeStartElement (pctxt, "t38FaxUdpEC", -1);
+
+ stat = asn1PD_H245T38FaxUdpOptions_t38FaxUdpEC (pctxt, &pvalue->t38FaxUdpEC);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t38FaxUdpEC", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T38FaxTcpOptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245T38FaxTcpOptions (OOCTXT* pctxt, H245T38FaxTcpOptions* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode t38TCPBidirectionalMode */
+
+ invokeStartElement (pctxt, "t38TCPBidirectionalMode", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->t38TCPBidirectionalMode);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->t38TCPBidirectionalMode);
+
+ invokeEndElement (pctxt, "t38TCPBidirectionalMode", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T38FaxProfile */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245T38FaxProfile (OOCTXT* pctxt, H245T38FaxProfile* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode fillBitRemoval */
+
+ invokeStartElement (pctxt, "fillBitRemoval", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->fillBitRemoval);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->fillBitRemoval);
+
+ invokeEndElement (pctxt, "fillBitRemoval", -1);
+
+ /* decode transcodingJBIG */
+
+ invokeStartElement (pctxt, "transcodingJBIG", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->transcodingJBIG);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->transcodingJBIG);
+
+ invokeEndElement (pctxt, "transcodingJBIG", -1);
+
+ /* decode transcodingMMR */
+
+ invokeStartElement (pctxt, "transcodingMMR", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->transcodingMMR);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->transcodingMMR);
+
+ invokeEndElement (pctxt, "transcodingMMR", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 4 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.versionPresent = 1;
+
+ invokeStartElement (pctxt, "version", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->version, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->version);
+
+ invokeEndElement (pctxt, "version", -1);
+ break;
+
+ case 1:
+ pvalue->m.t38FaxRateManagementPresent = 1;
+
+ invokeStartElement (pctxt, "t38FaxRateManagement", -1);
+
+ stat = asn1PD_H245T38FaxRateManagement (pctxt, &pvalue->t38FaxRateManagement);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t38FaxRateManagement", -1);
+ break;
+
+ case 2:
+ pvalue->m.t38FaxUdpOptionsPresent = 1;
+
+ invokeStartElement (pctxt, "t38FaxUdpOptions", -1);
+
+ stat = asn1PD_H245T38FaxUdpOptions (pctxt, &pvalue->t38FaxUdpOptions);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t38FaxUdpOptions", -1);
+ break;
+
+ case 3:
+ pvalue->m.t38FaxTcpOptionsPresent = 1;
+
+ invokeStartElement (pctxt, "t38FaxTcpOptions", -1);
+
+ stat = asn1PD_H245T38FaxTcpOptions (pctxt, &pvalue->t38FaxTcpOptions);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t38FaxTcpOptions", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NonStandardMessage (OOCTXT* pctxt, H245NonStandardMessage* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode nonStandardData */
+
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MasterSlaveDetermination */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MasterSlaveDetermination (OOCTXT* pctxt, H245MasterSlaveDetermination* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode terminalType */
+
+ invokeStartElement (pctxt, "terminalType", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->terminalType, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->terminalType);
+
+ invokeEndElement (pctxt, "terminalType", -1);
+
+ /* decode statusDeterminationNumber */
+
+ invokeStartElement (pctxt, "statusDeterminationNumber", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->statusDeterminationNumber, 0U, 16777215U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->statusDeterminationNumber);
+
+ invokeEndElement (pctxt, "statusDeterminationNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SequenceNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245SequenceNumber (OOCTXT* pctxt, H245SequenceNumber* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUInt8 (pctxt, pvalue, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability_aal1 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VCCapability_aal1 (OOCTXT* pctxt, H245VCCapability_aal1* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode nullClockRecovery */
+
+ invokeStartElement (pctxt, "nullClockRecovery", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->nullClockRecovery);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->nullClockRecovery);
+
+ invokeEndElement (pctxt, "nullClockRecovery", -1);
+
+ /* decode srtsClockRecovery */
+
+ invokeStartElement (pctxt, "srtsClockRecovery", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->srtsClockRecovery);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->srtsClockRecovery);
+
+ invokeEndElement (pctxt, "srtsClockRecovery", -1);
+
+ /* decode adaptiveClockRecovery */
+
+ invokeStartElement (pctxt, "adaptiveClockRecovery", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->adaptiveClockRecovery);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->adaptiveClockRecovery);
+
+ invokeEndElement (pctxt, "adaptiveClockRecovery", -1);
+
+ /* decode nullErrorCorrection */
+
+ invokeStartElement (pctxt, "nullErrorCorrection", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->nullErrorCorrection);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->nullErrorCorrection);
+
+ invokeEndElement (pctxt, "nullErrorCorrection", -1);
+
+ /* decode longInterleaver */
+
+ invokeStartElement (pctxt, "longInterleaver", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->longInterleaver);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->longInterleaver);
+
+ invokeEndElement (pctxt, "longInterleaver", -1);
+
+ /* decode shortInterleaver */
+
+ invokeStartElement (pctxt, "shortInterleaver", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->shortInterleaver);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->shortInterleaver);
+
+ invokeEndElement (pctxt, "shortInterleaver", -1);
+
+ /* decode errorCorrectionOnly */
+
+ invokeStartElement (pctxt, "errorCorrectionOnly", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->errorCorrectionOnly);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->errorCorrectionOnly);
+
+ invokeEndElement (pctxt, "errorCorrectionOnly", -1);
+
+ /* decode structuredDataTransfer */
+
+ invokeStartElement (pctxt, "structuredDataTransfer", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->structuredDataTransfer);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->structuredDataTransfer);
+
+ invokeEndElement (pctxt, "structuredDataTransfer", -1);
+
+ /* decode partiallyFilledCells */
+
+ invokeStartElement (pctxt, "partiallyFilledCells", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->partiallyFilledCells);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->partiallyFilledCells);
+
+ invokeEndElement (pctxt, "partiallyFilledCells", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability_aal5 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VCCapability_aal5 (OOCTXT* pctxt, H245VCCapability_aal5* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode forwardMaximumSDUSize */
+
+ invokeStartElement (pctxt, "forwardMaximumSDUSize", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->forwardMaximumSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->forwardMaximumSDUSize);
+
+ invokeEndElement (pctxt, "forwardMaximumSDUSize", -1);
+
+ /* decode backwardMaximumSDUSize */
+
+ invokeStartElement (pctxt, "backwardMaximumSDUSize", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->backwardMaximumSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->backwardMaximumSDUSize);
+
+ invokeEndElement (pctxt, "backwardMaximumSDUSize", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability_availableBitRates_type_rangeOfBitRates */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VCCapability_availableBitRates_type_rangeOfBitRates (OOCTXT* pctxt, H245VCCapability_availableBitRates_type_rangeOfBitRates* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode lowerBitRate */
+
+ invokeStartElement (pctxt, "lowerBitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->lowerBitRate, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->lowerBitRate);
+
+ invokeEndElement (pctxt, "lowerBitRate", -1);
+
+ /* decode higherBitRate */
+
+ invokeStartElement (pctxt, "higherBitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->higherBitRate, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->higherBitRate);
+
+ invokeEndElement (pctxt, "higherBitRate", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability_availableBitRates_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VCCapability_availableBitRates_type (OOCTXT* pctxt, H245VCCapability_availableBitRates_type* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* singleBitRate */
+ case 0:
+ invokeStartElement (pctxt, "singleBitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.singleBitRate, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.singleBitRate);
+
+ invokeEndElement (pctxt, "singleBitRate", -1);
+
+ break;
+
+ /* rangeOfBitRates */
+ case 1:
+ invokeStartElement (pctxt, "rangeOfBitRates", -1);
+
+ pvalue->u.rangeOfBitRates = ALLOC_ASN1ELEM (pctxt, H245VCCapability_availableBitRates_type_rangeOfBitRates);
+
+ stat = asn1PD_H245VCCapability_availableBitRates_type_rangeOfBitRates (pctxt, pvalue->u.rangeOfBitRates);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rangeOfBitRates", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability_availableBitRates */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VCCapability_availableBitRates (OOCTXT* pctxt, H245VCCapability_availableBitRates* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode type */
+
+ invokeStartElement (pctxt, "type", -1);
+
+ stat = asn1PD_H245VCCapability_availableBitRates_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "type", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Q2931Address_address_nsapAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245Q2931Address_address_nsapAddress (OOCTXT* pctxt, H245Q2931Address_address_nsapAddress* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Q2931Address_address */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245Q2931Address_address (OOCTXT* pctxt, H245Q2931Address_address* pvalue)
+{
+ static Asn1SizeCnst internationalNumber_lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* internationalNumber */
+ case 0:
+ invokeStartElement (pctxt, "internationalNumber", -1);
+
+ addSizeConstraint (pctxt, &internationalNumber_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.internationalNumber, NUM_CANSET, 4, 4, 4);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.internationalNumber);
+
+ invokeEndElement (pctxt, "internationalNumber", -1);
+
+ break;
+
+ /* nsapAddress */
+ case 1:
+ invokeStartElement (pctxt, "nsapAddress", -1);
+
+ pvalue->u.nsapAddress = ALLOC_ASN1ELEM (pctxt, H245Q2931Address_address_nsapAddress);
+
+ stat = asn1PD_H245Q2931Address_address_nsapAddress (pctxt, pvalue->u.nsapAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nsapAddress", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Q2931Address_subaddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245Q2931Address_subaddress (OOCTXT* pctxt, H245Q2931Address_subaddress* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Q2931Address */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245Q2931Address (OOCTXT* pctxt, H245Q2931Address* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.subaddressPresent = optbit;
+
+ /* decode address */
+
+ invokeStartElement (pctxt, "address", -1);
+
+ stat = asn1PD_H245Q2931Address_address (pctxt, &pvalue->address);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "address", -1);
+
+ /* decode subaddress */
+
+ if (pvalue->m.subaddressPresent) {
+ invokeStartElement (pctxt, "subaddress", -1);
+
+ stat = asn1PD_H245Q2931Address_subaddress (pctxt, &pvalue->subaddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "subaddress", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability_aal1ViaGateway_gatewayAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VCCapability_aal1ViaGateway_gatewayAddress (OOCTXT* pctxt, H245VCCapability_aal1ViaGateway_gatewayAddress* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245Q2931Address* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245Q2931Address);
+
+ stat = asn1PD_H245Q2931Address (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability_aal1ViaGateway */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VCCapability_aal1ViaGateway (OOCTXT* pctxt, H245VCCapability_aal1ViaGateway* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode gatewayAddress */
+
+ invokeStartElement (pctxt, "gatewayAddress", -1);
+
+ stat = asn1PD_H245VCCapability_aal1ViaGateway_gatewayAddress (pctxt, &pvalue->gatewayAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gatewayAddress", -1);
+
+ /* decode nullClockRecovery */
+
+ invokeStartElement (pctxt, "nullClockRecovery", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->nullClockRecovery);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->nullClockRecovery);
+
+ invokeEndElement (pctxt, "nullClockRecovery", -1);
+
+ /* decode srtsClockRecovery */
+
+ invokeStartElement (pctxt, "srtsClockRecovery", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->srtsClockRecovery);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->srtsClockRecovery);
+
+ invokeEndElement (pctxt, "srtsClockRecovery", -1);
+
+ /* decode adaptiveClockRecovery */
+
+ invokeStartElement (pctxt, "adaptiveClockRecovery", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->adaptiveClockRecovery);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->adaptiveClockRecovery);
+
+ invokeEndElement (pctxt, "adaptiveClockRecovery", -1);
+
+ /* decode nullErrorCorrection */
+
+ invokeStartElement (pctxt, "nullErrorCorrection", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->nullErrorCorrection);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->nullErrorCorrection);
+
+ invokeEndElement (pctxt, "nullErrorCorrection", -1);
+
+ /* decode longInterleaver */
+
+ invokeStartElement (pctxt, "longInterleaver", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->longInterleaver);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->longInterleaver);
+
+ invokeEndElement (pctxt, "longInterleaver", -1);
+
+ /* decode shortInterleaver */
+
+ invokeStartElement (pctxt, "shortInterleaver", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->shortInterleaver);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->shortInterleaver);
+
+ invokeEndElement (pctxt, "shortInterleaver", -1);
+
+ /* decode errorCorrectionOnly */
+
+ invokeStartElement (pctxt, "errorCorrectionOnly", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->errorCorrectionOnly);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->errorCorrectionOnly);
+
+ invokeEndElement (pctxt, "errorCorrectionOnly", -1);
+
+ /* decode structuredDataTransfer */
+
+ invokeStartElement (pctxt, "structuredDataTransfer", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->structuredDataTransfer);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->structuredDataTransfer);
+
+ invokeEndElement (pctxt, "structuredDataTransfer", -1);
+
+ /* decode partiallyFilledCells */
+
+ invokeStartElement (pctxt, "partiallyFilledCells", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->partiallyFilledCells);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->partiallyFilledCells);
+
+ invokeEndElement (pctxt, "partiallyFilledCells", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VCCapability (OOCTXT* pctxt, H245VCCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.aal1Present = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.aal5Present = optbit;
+
+ /* decode aal1 */
+
+ if (pvalue->m.aal1Present) {
+ invokeStartElement (pctxt, "aal1", -1);
+
+ stat = asn1PD_H245VCCapability_aal1 (pctxt, &pvalue->aal1);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "aal1", -1);
+ }
+
+ /* decode aal5 */
+
+ if (pvalue->m.aal5Present) {
+ invokeStartElement (pctxt, "aal5", -1);
+
+ stat = asn1PD_H245VCCapability_aal5 (pctxt, &pvalue->aal5);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "aal5", -1);
+ }
+
+ /* decode transportStream */
+
+ invokeStartElement (pctxt, "transportStream", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->transportStream);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->transportStream);
+
+ invokeEndElement (pctxt, "transportStream", -1);
+
+ /* decode programStream */
+
+ invokeStartElement (pctxt, "programStream", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->programStream);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->programStream);
+
+ invokeEndElement (pctxt, "programStream", -1);
+
+ /* decode availableBitRates */
+
+ invokeStartElement (pctxt, "availableBitRates", -1);
+
+ stat = asn1PD_H245VCCapability_availableBitRates (pctxt, &pvalue->availableBitRates);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "availableBitRates", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.aal1ViaGatewayPresent = 1;
+
+ invokeStartElement (pctxt, "aal1ViaGateway", -1);
+
+ stat = asn1PD_H245VCCapability_aal1ViaGateway (pctxt, &pvalue->aal1ViaGateway);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "aal1ViaGateway", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SetOfH245VCCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245_SetOfH245VCCapability (OOCTXT* pctxt, H245_SetOfH245VCCapability* pvalue)
+{
+ int stat = ASN_OK;
+ H245VCCapability* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245VCCapability);
+
+ stat = asn1PD_H245VCCapability (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H222Capability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H222Capability (OOCTXT* pctxt, H245H222Capability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode numberOfVCs */
+
+ invokeStartElement (pctxt, "numberOfVCs", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->numberOfVCs, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->numberOfVCs);
+
+ invokeEndElement (pctxt, "numberOfVCs", -1);
+
+ /* decode vcCapability */
+
+ invokeStartElement (pctxt, "vcCapability", -1);
+
+ stat = asn1PD_H245_SetOfH245VCCapability (pctxt, &pvalue->vcCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "vcCapability", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223Capability_h223MultiplexTableCapability_enhanced */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223Capability_h223MultiplexTableCapability_enhanced (OOCTXT* pctxt, H245H223Capability_h223MultiplexTableCapability_enhanced* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode maximumNestingDepth */
+
+ invokeStartElement (pctxt, "maximumNestingDepth", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->maximumNestingDepth, 1U, 15U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maximumNestingDepth);
+
+ invokeEndElement (pctxt, "maximumNestingDepth", -1);
+
+ /* decode maximumElementListSize */
+
+ invokeStartElement (pctxt, "maximumElementListSize", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->maximumElementListSize, 2U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maximumElementListSize);
+
+ invokeEndElement (pctxt, "maximumElementListSize", -1);
+
+ /* decode maximumSubElementListSize */
+
+ invokeStartElement (pctxt, "maximumSubElementListSize", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->maximumSubElementListSize, 2U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maximumSubElementListSize);
+
+ invokeEndElement (pctxt, "maximumSubElementListSize", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223Capability_h223MultiplexTableCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223Capability_h223MultiplexTableCapability (OOCTXT* pctxt, H245H223Capability_h223MultiplexTableCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* basic */
+ case 0:
+ invokeStartElement (pctxt, "basic", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "basic", -1);
+
+ break;
+
+ /* enhanced */
+ case 1:
+ invokeStartElement (pctxt, "enhanced", -1);
+
+ pvalue->u.enhanced = ALLOC_ASN1ELEM (pctxt, H245H223Capability_h223MultiplexTableCapability_enhanced);
+
+ stat = asn1PD_H245H223Capability_h223MultiplexTableCapability_enhanced (pctxt, pvalue->u.enhanced);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "enhanced", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223Capability_mobileOperationTransmitCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223Capability_mobileOperationTransmitCapability (OOCTXT* pctxt, H245H223Capability_mobileOperationTransmitCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode modeChangeCapability */
+
+ invokeStartElement (pctxt, "modeChangeCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->modeChangeCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->modeChangeCapability);
+
+ invokeEndElement (pctxt, "modeChangeCapability", -1);
+
+ /* decode h223AnnexA */
+
+ invokeStartElement (pctxt, "h223AnnexA", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->h223AnnexA);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->h223AnnexA);
+
+ invokeEndElement (pctxt, "h223AnnexA", -1);
+
+ /* decode h223AnnexADoubleFlag */
+
+ invokeStartElement (pctxt, "h223AnnexADoubleFlag", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->h223AnnexADoubleFlag);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->h223AnnexADoubleFlag);
+
+ invokeEndElement (pctxt, "h223AnnexADoubleFlag", -1);
+
+ /* decode h223AnnexB */
+
+ invokeStartElement (pctxt, "h223AnnexB", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->h223AnnexB);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->h223AnnexB);
+
+ invokeEndElement (pctxt, "h223AnnexB", -1);
+
+ /* decode h223AnnexBwithHeader */
+
+ invokeStartElement (pctxt, "h223AnnexBwithHeader", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->h223AnnexBwithHeader);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->h223AnnexBwithHeader);
+
+ invokeEndElement (pctxt, "h223AnnexBwithHeader", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AnnexCCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223AnnexCCapability (OOCTXT* pctxt, H245H223AnnexCCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode videoWithAL1M */
+
+ invokeStartElement (pctxt, "videoWithAL1M", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->videoWithAL1M);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->videoWithAL1M);
+
+ invokeEndElement (pctxt, "videoWithAL1M", -1);
+
+ /* decode videoWithAL2M */
+
+ invokeStartElement (pctxt, "videoWithAL2M", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->videoWithAL2M);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->videoWithAL2M);
+
+ invokeEndElement (pctxt, "videoWithAL2M", -1);
+
+ /* decode videoWithAL3M */
+
+ invokeStartElement (pctxt, "videoWithAL3M", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->videoWithAL3M);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->videoWithAL3M);
+
+ invokeEndElement (pctxt, "videoWithAL3M", -1);
+
+ /* decode audioWithAL1M */
+
+ invokeStartElement (pctxt, "audioWithAL1M", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioWithAL1M);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioWithAL1M);
+
+ invokeEndElement (pctxt, "audioWithAL1M", -1);
+
+ /* decode audioWithAL2M */
+
+ invokeStartElement (pctxt, "audioWithAL2M", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioWithAL2M);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioWithAL2M);
+
+ invokeEndElement (pctxt, "audioWithAL2M", -1);
+
+ /* decode audioWithAL3M */
+
+ invokeStartElement (pctxt, "audioWithAL3M", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioWithAL3M);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioWithAL3M);
+
+ invokeEndElement (pctxt, "audioWithAL3M", -1);
+
+ /* decode dataWithAL1M */
+
+ invokeStartElement (pctxt, "dataWithAL1M", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dataWithAL1M);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dataWithAL1M);
+
+ invokeEndElement (pctxt, "dataWithAL1M", -1);
+
+ /* decode dataWithAL2M */
+
+ invokeStartElement (pctxt, "dataWithAL2M", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dataWithAL2M);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dataWithAL2M);
+
+ invokeEndElement (pctxt, "dataWithAL2M", -1);
+
+ /* decode dataWithAL3M */
+
+ invokeStartElement (pctxt, "dataWithAL3M", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dataWithAL3M);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dataWithAL3M);
+
+ invokeEndElement (pctxt, "dataWithAL3M", -1);
+
+ /* decode alpduInterleaving */
+
+ invokeStartElement (pctxt, "alpduInterleaving", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->alpduInterleaving);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->alpduInterleaving);
+
+ invokeEndElement (pctxt, "alpduInterleaving", -1);
+
+ /* decode maximumAL1MPDUSize */
+
+ invokeStartElement (pctxt, "maximumAL1MPDUSize", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maximumAL1MPDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maximumAL1MPDUSize);
+
+ invokeEndElement (pctxt, "maximumAL1MPDUSize", -1);
+
+ /* decode maximumAL2MSDUSize */
+
+ invokeStartElement (pctxt, "maximumAL2MSDUSize", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maximumAL2MSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maximumAL2MSDUSize);
+
+ invokeEndElement (pctxt, "maximumAL2MSDUSize", -1);
+
+ /* decode maximumAL3MSDUSize */
+
+ invokeStartElement (pctxt, "maximumAL3MSDUSize", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maximumAL3MSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maximumAL3MSDUSize);
+
+ invokeEndElement (pctxt, "maximumAL3MSDUSize", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.rsCodeCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "rsCodeCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->rsCodeCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->rsCodeCapability);
+
+ invokeEndElement (pctxt, "rsCodeCapability", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223Capability_mobileMultilinkFrameCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223Capability_mobileMultilinkFrameCapability (OOCTXT* pctxt, H245H223Capability_mobileMultilinkFrameCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode maximumSampleSize */
+
+ invokeStartElement (pctxt, "maximumSampleSize", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->maximumSampleSize, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maximumSampleSize);
+
+ invokeEndElement (pctxt, "maximumSampleSize", -1);
+
+ /* decode maximumPayloadLength */
+
+ invokeStartElement (pctxt, "maximumPayloadLength", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maximumPayloadLength, 1U, 65025U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maximumPayloadLength);
+
+ invokeEndElement (pctxt, "maximumPayloadLength", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223Capability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223Capability (OOCTXT* pctxt, H245H223Capability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode transportWithI_frames */
+
+ invokeStartElement (pctxt, "transportWithI_frames", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->transportWithI_frames);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->transportWithI_frames);
+
+ invokeEndElement (pctxt, "transportWithI_frames", -1);
+
+ /* decode videoWithAL1 */
+
+ invokeStartElement (pctxt, "videoWithAL1", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->videoWithAL1);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->videoWithAL1);
+
+ invokeEndElement (pctxt, "videoWithAL1", -1);
+
+ /* decode videoWithAL2 */
+
+ invokeStartElement (pctxt, "videoWithAL2", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->videoWithAL2);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->videoWithAL2);
+
+ invokeEndElement (pctxt, "videoWithAL2", -1);
+
+ /* decode videoWithAL3 */
+
+ invokeStartElement (pctxt, "videoWithAL3", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->videoWithAL3);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->videoWithAL3);
+
+ invokeEndElement (pctxt, "videoWithAL3", -1);
+
+ /* decode audioWithAL1 */
+
+ invokeStartElement (pctxt, "audioWithAL1", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioWithAL1);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioWithAL1);
+
+ invokeEndElement (pctxt, "audioWithAL1", -1);
+
+ /* decode audioWithAL2 */
+
+ invokeStartElement (pctxt, "audioWithAL2", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioWithAL2);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioWithAL2);
+
+ invokeEndElement (pctxt, "audioWithAL2", -1);
+
+ /* decode audioWithAL3 */
+
+ invokeStartElement (pctxt, "audioWithAL3", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioWithAL3);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioWithAL3);
+
+ invokeEndElement (pctxt, "audioWithAL3", -1);
+
+ /* decode dataWithAL1 */
+
+ invokeStartElement (pctxt, "dataWithAL1", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dataWithAL1);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dataWithAL1);
+
+ invokeEndElement (pctxt, "dataWithAL1", -1);
+
+ /* decode dataWithAL2 */
+
+ invokeStartElement (pctxt, "dataWithAL2", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dataWithAL2);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dataWithAL2);
+
+ invokeEndElement (pctxt, "dataWithAL2", -1);
+
+ /* decode dataWithAL3 */
+
+ invokeStartElement (pctxt, "dataWithAL3", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dataWithAL3);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dataWithAL3);
+
+ invokeEndElement (pctxt, "dataWithAL3", -1);
+
+ /* decode maximumAl2SDUSize */
+
+ invokeStartElement (pctxt, "maximumAl2SDUSize", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maximumAl2SDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maximumAl2SDUSize);
+
+ invokeEndElement (pctxt, "maximumAl2SDUSize", -1);
+
+ /* decode maximumAl3SDUSize */
+
+ invokeStartElement (pctxt, "maximumAl3SDUSize", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maximumAl3SDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maximumAl3SDUSize);
+
+ invokeEndElement (pctxt, "maximumAl3SDUSize", -1);
+
+ /* decode maximumDelayJitter */
+
+ invokeStartElement (pctxt, "maximumDelayJitter", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maximumDelayJitter, 0U, 1023U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maximumDelayJitter);
+
+ invokeEndElement (pctxt, "maximumDelayJitter", -1);
+
+ /* decode h223MultiplexTableCapability */
+
+ invokeStartElement (pctxt, "h223MultiplexTableCapability", -1);
+
+ stat = asn1PD_H245H223Capability_h223MultiplexTableCapability (pctxt, &pvalue->h223MultiplexTableCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h223MultiplexTableCapability", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 6 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.maxMUXPDUSizeCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "maxMUXPDUSizeCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->maxMUXPDUSizeCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->maxMUXPDUSizeCapability);
+
+ invokeEndElement (pctxt, "maxMUXPDUSizeCapability", -1);
+ break;
+
+ case 1:
+ pvalue->m.nsrpSupportPresent = 1;
+
+ invokeStartElement (pctxt, "nsrpSupport", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->nsrpSupport);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->nsrpSupport);
+
+ invokeEndElement (pctxt, "nsrpSupport", -1);
+ break;
+
+ case 2:
+ pvalue->m.mobileOperationTransmitCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "mobileOperationTransmitCapability", -1);
+
+ stat = asn1PD_H245H223Capability_mobileOperationTransmitCapability (pctxt, &pvalue->mobileOperationTransmitCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mobileOperationTransmitCapability", -1);
+ break;
+
+ case 3:
+ pvalue->m.h223AnnexCCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "h223AnnexCCapability", -1);
+
+ stat = asn1PD_H245H223AnnexCCapability (pctxt, &pvalue->h223AnnexCCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h223AnnexCCapability", -1);
+ break;
+
+ case 4:
+ pvalue->m.bitRatePresent = 1;
+
+ invokeStartElement (pctxt, "bitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->bitRate, 1U, 19200U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bitRate);
+
+ invokeEndElement (pctxt, "bitRate", -1);
+ break;
+
+ case 5:
+ pvalue->m.mobileMultilinkFrameCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "mobileMultilinkFrameCapability", -1);
+
+ stat = asn1PD_H245H223Capability_mobileMultilinkFrameCapability (pctxt, &pvalue->mobileMultilinkFrameCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mobileMultilinkFrameCapability", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V75Capability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245V75Capability (OOCTXT* pctxt, H245V75Capability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode audioHeader */
+
+ invokeStartElement (pctxt, "audioHeader", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioHeader);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioHeader);
+
+ invokeEndElement (pctxt, "audioHeader", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76Capability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245V76Capability (OOCTXT* pctxt, H245V76Capability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode suspendResumeCapabilitywAddress */
+
+ invokeStartElement (pctxt, "suspendResumeCapabilitywAddress", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->suspendResumeCapabilitywAddress);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->suspendResumeCapabilitywAddress);
+
+ invokeEndElement (pctxt, "suspendResumeCapabilitywAddress", -1);
+
+ /* decode suspendResumeCapabilitywoAddress */
+
+ invokeStartElement (pctxt, "suspendResumeCapabilitywoAddress", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->suspendResumeCapabilitywoAddress);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->suspendResumeCapabilitywoAddress);
+
+ invokeEndElement (pctxt, "suspendResumeCapabilitywoAddress", -1);
+
+ /* decode rejCapability */
+
+ invokeStartElement (pctxt, "rejCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->rejCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->rejCapability);
+
+ invokeEndElement (pctxt, "rejCapability", -1);
+
+ /* decode sREJCapability */
+
+ invokeStartElement (pctxt, "sREJCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->sREJCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->sREJCapability);
+
+ invokeEndElement (pctxt, "sREJCapability", -1);
+
+ /* decode mREJCapability */
+
+ invokeStartElement (pctxt, "mREJCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->mREJCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->mREJCapability);
+
+ invokeEndElement (pctxt, "mREJCapability", -1);
+
+ /* decode crc8bitCapability */
+
+ invokeStartElement (pctxt, "crc8bitCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->crc8bitCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->crc8bitCapability);
+
+ invokeEndElement (pctxt, "crc8bitCapability", -1);
+
+ /* decode crc16bitCapability */
+
+ invokeStartElement (pctxt, "crc16bitCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->crc16bitCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->crc16bitCapability);
+
+ invokeEndElement (pctxt, "crc16bitCapability", -1);
+
+ /* decode crc32bitCapability */
+
+ invokeStartElement (pctxt, "crc32bitCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->crc32bitCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->crc32bitCapability);
+
+ invokeEndElement (pctxt, "crc32bitCapability", -1);
+
+ /* decode uihCapability */
+
+ invokeStartElement (pctxt, "uihCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->uihCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->uihCapability);
+
+ invokeEndElement (pctxt, "uihCapability", -1);
+
+ /* decode numOfDLCS */
+
+ invokeStartElement (pctxt, "numOfDLCS", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->numOfDLCS, 2U, 8191U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->numOfDLCS);
+
+ invokeEndElement (pctxt, "numOfDLCS", -1);
+
+ /* decode twoOctetAddressFieldCapability */
+
+ invokeStartElement (pctxt, "twoOctetAddressFieldCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->twoOctetAddressFieldCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->twoOctetAddressFieldCapability);
+
+ invokeEndElement (pctxt, "twoOctetAddressFieldCapability", -1);
+
+ /* decode loopBackTestCapability */
+
+ invokeStartElement (pctxt, "loopBackTestCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->loopBackTestCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->loopBackTestCapability);
+
+ invokeEndElement (pctxt, "loopBackTestCapability", -1);
+
+ /* decode n401Capability */
+
+ invokeStartElement (pctxt, "n401Capability", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->n401Capability, 1U, 4095U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->n401Capability);
+
+ invokeEndElement (pctxt, "n401Capability", -1);
+
+ /* decode maxWindowSizeCapability */
+
+ invokeStartElement (pctxt, "maxWindowSizeCapability", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->maxWindowSizeCapability, 1U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maxWindowSizeCapability);
+
+ invokeEndElement (pctxt, "maxWindowSizeCapability", -1);
+
+ /* decode v75Capability */
+
+ invokeStartElement (pctxt, "v75Capability", -1);
+
+ stat = asn1PD_H245V75Capability (pctxt, &pvalue->v75Capability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "v75Capability", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T84Profile_t84Restricted */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245T84Profile_t84Restricted (OOCTXT* pctxt, H245T84Profile_t84Restricted* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode qcif */
+
+ invokeStartElement (pctxt, "qcif", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->qcif);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->qcif);
+
+ invokeEndElement (pctxt, "qcif", -1);
+
+ /* decode cif */
+
+ invokeStartElement (pctxt, "cif", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->cif);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->cif);
+
+ invokeEndElement (pctxt, "cif", -1);
+
+ /* decode ccir601Seq */
+
+ invokeStartElement (pctxt, "ccir601Seq", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->ccir601Seq);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->ccir601Seq);
+
+ invokeEndElement (pctxt, "ccir601Seq", -1);
+
+ /* decode ccir601Prog */
+
+ invokeStartElement (pctxt, "ccir601Prog", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->ccir601Prog);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->ccir601Prog);
+
+ invokeEndElement (pctxt, "ccir601Prog", -1);
+
+ /* decode hdtvSeq */
+
+ invokeStartElement (pctxt, "hdtvSeq", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->hdtvSeq);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->hdtvSeq);
+
+ invokeEndElement (pctxt, "hdtvSeq", -1);
+
+ /* decode hdtvProg */
+
+ invokeStartElement (pctxt, "hdtvProg", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->hdtvProg);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->hdtvProg);
+
+ invokeEndElement (pctxt, "hdtvProg", -1);
+
+ /* decode g3FacsMH200x100 */
+
+ invokeStartElement (pctxt, "g3FacsMH200x100", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->g3FacsMH200x100);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->g3FacsMH200x100);
+
+ invokeEndElement (pctxt, "g3FacsMH200x100", -1);
+
+ /* decode g3FacsMH200x200 */
+
+ invokeStartElement (pctxt, "g3FacsMH200x200", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->g3FacsMH200x200);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->g3FacsMH200x200);
+
+ invokeEndElement (pctxt, "g3FacsMH200x200", -1);
+
+ /* decode g4FacsMMR200x100 */
+
+ invokeStartElement (pctxt, "g4FacsMMR200x100", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->g4FacsMMR200x100);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->g4FacsMMR200x100);
+
+ invokeEndElement (pctxt, "g4FacsMMR200x100", -1);
+
+ /* decode g4FacsMMR200x200 */
+
+ invokeStartElement (pctxt, "g4FacsMMR200x200", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->g4FacsMMR200x200);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->g4FacsMMR200x200);
+
+ invokeEndElement (pctxt, "g4FacsMMR200x200", -1);
+
+ /* decode jbig200x200Seq */
+
+ invokeStartElement (pctxt, "jbig200x200Seq", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->jbig200x200Seq);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->jbig200x200Seq);
+
+ invokeEndElement (pctxt, "jbig200x200Seq", -1);
+
+ /* decode jbig200x200Prog */
+
+ invokeStartElement (pctxt, "jbig200x200Prog", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->jbig200x200Prog);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->jbig200x200Prog);
+
+ invokeEndElement (pctxt, "jbig200x200Prog", -1);
+
+ /* decode jbig300x300Seq */
+
+ invokeStartElement (pctxt, "jbig300x300Seq", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->jbig300x300Seq);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->jbig300x300Seq);
+
+ invokeEndElement (pctxt, "jbig300x300Seq", -1);
+
+ /* decode jbig300x300Prog */
+
+ invokeStartElement (pctxt, "jbig300x300Prog", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->jbig300x300Prog);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->jbig300x300Prog);
+
+ invokeEndElement (pctxt, "jbig300x300Prog", -1);
+
+ /* decode digPhotoLow */
+
+ invokeStartElement (pctxt, "digPhotoLow", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->digPhotoLow);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->digPhotoLow);
+
+ invokeEndElement (pctxt, "digPhotoLow", -1);
+
+ /* decode digPhotoMedSeq */
+
+ invokeStartElement (pctxt, "digPhotoMedSeq", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->digPhotoMedSeq);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->digPhotoMedSeq);
+
+ invokeEndElement (pctxt, "digPhotoMedSeq", -1);
+
+ /* decode digPhotoMedProg */
+
+ invokeStartElement (pctxt, "digPhotoMedProg", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->digPhotoMedProg);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->digPhotoMedProg);
+
+ invokeEndElement (pctxt, "digPhotoMedProg", -1);
+
+ /* decode digPhotoHighSeq */
+
+ invokeStartElement (pctxt, "digPhotoHighSeq", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->digPhotoHighSeq);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->digPhotoHighSeq);
+
+ invokeEndElement (pctxt, "digPhotoHighSeq", -1);
+
+ /* decode digPhotoHighProg */
+
+ invokeStartElement (pctxt, "digPhotoHighProg", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->digPhotoHighProg);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->digPhotoHighProg);
+
+ invokeEndElement (pctxt, "digPhotoHighProg", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T84Profile */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245T84Profile (OOCTXT* pctxt, H245T84Profile* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* t84Unrestricted */
+ case 0:
+ invokeStartElement (pctxt, "t84Unrestricted", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "t84Unrestricted", -1);
+
+ break;
+
+ /* t84Restricted */
+ case 1:
+ invokeStartElement (pctxt, "t84Restricted", -1);
+
+ pvalue->u.t84Restricted = ALLOC_ASN1ELEM (pctxt, H245T84Profile_t84Restricted);
+
+ stat = asn1PD_H245T84Profile_t84Restricted (pctxt, pvalue->u.t84Restricted);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t84Restricted", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability_application_t84 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DataApplicationCapability_application_t84 (OOCTXT* pctxt, H245DataApplicationCapability_application_t84* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode t84Protocol */
+
+ invokeStartElement (pctxt, "t84Protocol", -1);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, &pvalue->t84Protocol);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t84Protocol", -1);
+
+ /* decode t84Profile */
+
+ invokeStartElement (pctxt, "t84Profile", -1);
+
+ stat = asn1PD_H245T84Profile (pctxt, &pvalue->t84Profile);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t84Profile", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability_application_nlpid */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DataApplicationCapability_application_nlpid (OOCTXT* pctxt, H245DataApplicationCapability_application_nlpid* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode nlpidProtocol */
+
+ invokeStartElement (pctxt, "nlpidProtocol", -1);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, &pvalue->nlpidProtocol);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nlpidProtocol", -1);
+
+ /* decode nlpidData */
+
+ invokeStartElement (pctxt, "nlpidData", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->nlpidData);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->nlpidData.numocts, pvalue->nlpidData.data);
+
+ invokeEndElement (pctxt, "nlpidData", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability_application_t38fax */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DataApplicationCapability_application_t38fax (OOCTXT* pctxt, H245DataApplicationCapability_application_t38fax* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode t38FaxProtocol */
+
+ invokeStartElement (pctxt, "t38FaxProtocol", -1);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, &pvalue->t38FaxProtocol);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t38FaxProtocol", -1);
+
+ /* decode t38FaxProfile */
+
+ invokeStartElement (pctxt, "t38FaxProfile", -1);
+
+ stat = asn1PD_H245T38FaxProfile (pctxt, &pvalue->t38FaxProfile);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t38FaxProfile", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapabilityIdentifier_uuid */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CapabilityIdentifier_uuid (OOCTXT* pctxt, H245CapabilityIdentifier_uuid* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapabilityIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CapabilityIdentifier (OOCTXT* pctxt, H245CapabilityIdentifier* pvalue)
+{
+ static Asn1SizeCnst domainBased_lsize1 = { 0, 1, 64, 0 };
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* standard */
+ case 0:
+ invokeStartElement (pctxt, "standard", -1);
+
+ pvalue->u.standard = ALLOC_ASN1ELEM (pctxt, ASN1OBJID);
+
+ stat = decodeObjectIdentifier (pctxt, pvalue->u.standard);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->u.standard->numids, pvalue->u.standard->subid);
+
+ invokeEndElement (pctxt, "standard", -1);
+
+ break;
+
+ /* h221NonStandard */
+ case 1:
+ invokeStartElement (pctxt, "h221NonStandard", -1);
+
+ pvalue->u.h221NonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.h221NonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h221NonStandard", -1);
+
+ break;
+
+ /* uuid */
+ case 2:
+ invokeStartElement (pctxt, "uuid", -1);
+
+ pvalue->u.uuid = ALLOC_ASN1ELEM (pctxt, H245CapabilityIdentifier_uuid);
+
+ stat = asn1PD_H245CapabilityIdentifier_uuid (pctxt, pvalue->u.uuid);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "uuid", -1);
+
+ break;
+
+ /* domainBased */
+ case 3:
+ invokeStartElement (pctxt, "domainBased", -1);
+
+ addSizeConstraint (pctxt, &domainBased_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.domainBased, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.domainBased);
+
+ invokeEndElement (pctxt, "domainBased", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ParameterIdentifier_uuid */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ParameterIdentifier_uuid (OOCTXT* pctxt, H245ParameterIdentifier_uuid* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ParameterIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ParameterIdentifier (OOCTXT* pctxt, H245ParameterIdentifier* pvalue)
+{
+ static Asn1SizeCnst domainBased_lsize1 = { 0, 1, 64, 0 };
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* standard */
+ case 0:
+ invokeStartElement (pctxt, "standard", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->u.standard, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.standard);
+
+ invokeEndElement (pctxt, "standard", -1);
+
+ break;
+
+ /* h221NonStandard */
+ case 1:
+ invokeStartElement (pctxt, "h221NonStandard", -1);
+
+ pvalue->u.h221NonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.h221NonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h221NonStandard", -1);
+
+ break;
+
+ /* uuid */
+ case 2:
+ invokeStartElement (pctxt, "uuid", -1);
+
+ pvalue->u.uuid = ALLOC_ASN1ELEM (pctxt, H245ParameterIdentifier_uuid);
+
+ stat = asn1PD_H245ParameterIdentifier_uuid (pctxt, pvalue->u.uuid);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "uuid", -1);
+
+ break;
+
+ /* domainBased */
+ case 3:
+ invokeStartElement (pctxt, "domainBased", -1);
+
+ addSizeConstraint (pctxt, &domainBased_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.domainBased, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.domainBased);
+
+ invokeEndElement (pctxt, "domainBased", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ParameterValue */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ParameterValue (OOCTXT* pctxt, H245ParameterValue* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 7);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* logical */
+ case 0:
+ invokeStartElement (pctxt, "logical", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "logical", -1);
+
+ break;
+
+ /* booleanArray */
+ case 1:
+ invokeStartElement (pctxt, "booleanArray", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->u.booleanArray, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.booleanArray);
+
+ invokeEndElement (pctxt, "booleanArray", -1);
+
+ break;
+
+ /* unsignedMin */
+ case 2:
+ invokeStartElement (pctxt, "unsignedMin", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.unsignedMin, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.unsignedMin);
+
+ invokeEndElement (pctxt, "unsignedMin", -1);
+
+ break;
+
+ /* unsignedMax */
+ case 3:
+ invokeStartElement (pctxt, "unsignedMax", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.unsignedMax, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.unsignedMax);
+
+ invokeEndElement (pctxt, "unsignedMax", -1);
+
+ break;
+
+ /* unsigned32Min */
+ case 4:
+ invokeStartElement (pctxt, "unsigned32Min", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->u.unsigned32Min, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.unsigned32Min);
+
+ invokeEndElement (pctxt, "unsigned32Min", -1);
+
+ break;
+
+ /* unsigned32Max */
+ case 5:
+ invokeStartElement (pctxt, "unsigned32Max", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->u.unsigned32Max, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.unsigned32Max);
+
+ invokeEndElement (pctxt, "unsigned32Max", -1);
+
+ break;
+
+ /* octetString */
+ case 6:
+ invokeStartElement (pctxt, "octetString", -1);
+
+ pvalue->u.octetString = ALLOC_ASN1ELEM (pctxt, ASN1DynOctStr);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)pvalue->u.octetString);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->u.octetString->numocts, pvalue->u.octetString->data);
+
+ invokeEndElement (pctxt, "octetString", -1);
+
+ break;
+
+ /* genericParameter */
+ case 7:
+ invokeStartElement (pctxt, "genericParameter", -1);
+
+ pvalue->u.genericParameter = ALLOC_ASN1ELEM (pctxt, H245_SeqOfH245GenericParameter);
+
+ stat = asn1PD_H245_SeqOfH245GenericParameter (pctxt, (H245_SeqOfH245GenericParameter*)pvalue->u.genericParameter);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericParameter", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 9;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245ParameterIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245_SeqOfH245ParameterIdentifier (OOCTXT* pctxt, H245_SeqOfH245ParameterIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ H245ParameterIdentifier* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245ParameterIdentifier);
+
+ stat = asn1PD_H245ParameterIdentifier (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GenericParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245GenericParameter (OOCTXT* pctxt, H245GenericParameter* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.supersedesPresent = optbit;
+
+ /* decode parameterIdentifier */
+
+ invokeStartElement (pctxt, "parameterIdentifier", -1);
+
+ stat = asn1PD_H245ParameterIdentifier (pctxt, &pvalue->parameterIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "parameterIdentifier", -1);
+
+ /* decode parameterValue */
+
+ invokeStartElement (pctxt, "parameterValue", -1);
+
+ stat = asn1PD_H245ParameterValue (pctxt, &pvalue->parameterValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "parameterValue", -1);
+
+ /* decode supersedes */
+
+ if (pvalue->m.supersedesPresent) {
+ invokeStartElement (pctxt, "supersedes", -1);
+
+ stat = asn1PD_H245_SeqOfH245ParameterIdentifier (pctxt, &pvalue->supersedes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "supersedes", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245GenericParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245_SeqOfH245GenericParameter (OOCTXT* pctxt, H245_SeqOfH245GenericParameter* pvalue)
+{
+ int stat = ASN_OK;
+ H245GenericParameter* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245GenericParameter);
+
+ stat = asn1PD_H245GenericParameter (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GenericCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245GenericCapability (OOCTXT* pctxt, H245GenericCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.maxBitRatePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.collapsingPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonCollapsingPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonCollapsingRawPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.transportPresent = optbit;
+
+ /* decode capabilityIdentifier */
+
+ invokeStartElement (pctxt, "capabilityIdentifier", -1);
+
+ stat = asn1PD_H245CapabilityIdentifier (pctxt, &pvalue->capabilityIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capabilityIdentifier", -1);
+
+ /* decode maxBitRate */
+
+ if (pvalue->m.maxBitRatePresent) {
+ invokeStartElement (pctxt, "maxBitRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->maxBitRate, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maxBitRate);
+
+ invokeEndElement (pctxt, "maxBitRate", -1);
+ }
+
+ /* decode collapsing */
+
+ if (pvalue->m.collapsingPresent) {
+ invokeStartElement (pctxt, "collapsing", -1);
+
+ stat = asn1PD_H245_SeqOfH245GenericParameter (pctxt, &pvalue->collapsing);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "collapsing", -1);
+ }
+
+ /* decode nonCollapsing */
+
+ if (pvalue->m.nonCollapsingPresent) {
+ invokeStartElement (pctxt, "nonCollapsing", -1);
+
+ stat = asn1PD_H245_SeqOfH245GenericParameter (pctxt, &pvalue->nonCollapsing);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonCollapsing", -1);
+ }
+
+ /* decode nonCollapsingRaw */
+
+ if (pvalue->m.nonCollapsingRawPresent) {
+ invokeStartElement (pctxt, "nonCollapsingRaw", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->nonCollapsingRaw);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->nonCollapsingRaw.numocts, pvalue->nonCollapsingRaw.data);
+
+ invokeEndElement (pctxt, "nonCollapsingRaw", -1);
+ }
+
+ /* decode transport */
+
+ if (pvalue->m.transportPresent) {
+ invokeStartElement (pctxt, "transport", -1);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, &pvalue->transport);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transport", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability_application */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DataApplicationCapability_application (OOCTXT* pctxt, H245DataApplicationCapability_application* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 9);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* t120 */
+ case 1:
+ invokeStartElement (pctxt, "t120", -1);
+
+ pvalue->u.t120 = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.t120);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t120", -1);
+
+ break;
+
+ /* dsm_cc */
+ case 2:
+ invokeStartElement (pctxt, "dsm_cc", -1);
+
+ pvalue->u.dsm_cc = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.dsm_cc);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dsm_cc", -1);
+
+ break;
+
+ /* userData */
+ case 3:
+ invokeStartElement (pctxt, "userData", -1);
+
+ pvalue->u.userData = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.userData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "userData", -1);
+
+ break;
+
+ /* t84 */
+ case 4:
+ invokeStartElement (pctxt, "t84", -1);
+
+ pvalue->u.t84 = ALLOC_ASN1ELEM (pctxt, H245DataApplicationCapability_application_t84);
+
+ stat = asn1PD_H245DataApplicationCapability_application_t84 (pctxt, pvalue->u.t84);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t84", -1);
+
+ break;
+
+ /* t434 */
+ case 5:
+ invokeStartElement (pctxt, "t434", -1);
+
+ pvalue->u.t434 = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.t434);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t434", -1);
+
+ break;
+
+ /* h224 */
+ case 6:
+ invokeStartElement (pctxt, "h224", -1);
+
+ pvalue->u.h224 = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.h224);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h224", -1);
+
+ break;
+
+ /* nlpid */
+ case 7:
+ invokeStartElement (pctxt, "nlpid", -1);
+
+ pvalue->u.nlpid = ALLOC_ASN1ELEM (pctxt, H245DataApplicationCapability_application_nlpid);
+
+ stat = asn1PD_H245DataApplicationCapability_application_nlpid (pctxt, pvalue->u.nlpid);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nlpid", -1);
+
+ break;
+
+ /* dsvdControl */
+ case 8:
+ invokeStartElement (pctxt, "dsvdControl", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "dsvdControl", -1);
+
+ break;
+
+ /* h222DataPartitioning */
+ case 9:
+ invokeStartElement (pctxt, "h222DataPartitioning", -1);
+
+ pvalue->u.h222DataPartitioning = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.h222DataPartitioning);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h222DataPartitioning", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 11;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* t30fax */
+ case 11:
+ invokeStartElement (pctxt, "t30fax", -1);
+
+ pvalue->u.t30fax = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.t30fax);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t30fax", -1);
+
+ break;
+
+ /* t140 */
+ case 12:
+ invokeStartElement (pctxt, "t140", -1);
+
+ pvalue->u.t140 = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.t140);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t140", -1);
+
+ break;
+
+ /* t38fax */
+ case 13:
+ invokeStartElement (pctxt, "t38fax", -1);
+
+ pvalue->u.t38fax = ALLOC_ASN1ELEM (pctxt, H245DataApplicationCapability_application_t38fax);
+
+ stat = asn1PD_H245DataApplicationCapability_application_t38fax (pctxt, pvalue->u.t38fax);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t38fax", -1);
+
+ break;
+
+ /* genericDataCapability */
+ case 14:
+ invokeStartElement (pctxt, "genericDataCapability", -1);
+
+ pvalue->u.genericDataCapability = ALLOC_ASN1ELEM (pctxt, H245GenericCapability);
+
+ stat = asn1PD_H245GenericCapability (pctxt, pvalue->u.genericDataCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericDataCapability", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DataApplicationCapability (OOCTXT* pctxt, H245DataApplicationCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode application */
+
+ invokeStartElement (pctxt, "application", -1);
+
+ stat = asn1PD_H245DataApplicationCapability_application (pctxt, &pvalue->application);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "application", -1);
+
+ /* decode maxBitRate */
+
+ invokeStartElement (pctxt, "maxBitRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->maxBitRate, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maxBitRate);
+
+ invokeEndElement (pctxt, "maxBitRate", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245DataApplicationCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245_SeqOfH245DataApplicationCapability (OOCTXT* pctxt, H245_SeqOfH245DataApplicationCapability* pvalue)
+{
+ int stat = ASN_OK;
+ H245DataApplicationCapability* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245DataApplicationCapability);
+
+ stat = asn1PD_H245DataApplicationCapability (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MediaDistributionCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MediaDistributionCapability (OOCTXT* pctxt, H245MediaDistributionCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.centralizedDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.distributedDataPresent = optbit;
+
+ /* decode centralizedControl */
+
+ invokeStartElement (pctxt, "centralizedControl", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->centralizedControl);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->centralizedControl);
+
+ invokeEndElement (pctxt, "centralizedControl", -1);
+
+ /* decode distributedControl */
+
+ invokeStartElement (pctxt, "distributedControl", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->distributedControl);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->distributedControl);
+
+ invokeEndElement (pctxt, "distributedControl", -1);
+
+ /* decode centralizedAudio */
+
+ invokeStartElement (pctxt, "centralizedAudio", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->centralizedAudio);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->centralizedAudio);
+
+ invokeEndElement (pctxt, "centralizedAudio", -1);
+
+ /* decode distributedAudio */
+
+ invokeStartElement (pctxt, "distributedAudio", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->distributedAudio);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->distributedAudio);
+
+ invokeEndElement (pctxt, "distributedAudio", -1);
+
+ /* decode centralizedVideo */
+
+ invokeStartElement (pctxt, "centralizedVideo", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->centralizedVideo);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->centralizedVideo);
+
+ invokeEndElement (pctxt, "centralizedVideo", -1);
+
+ /* decode distributedVideo */
+
+ invokeStartElement (pctxt, "distributedVideo", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->distributedVideo);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->distributedVideo);
+
+ invokeEndElement (pctxt, "distributedVideo", -1);
+
+ /* decode centralizedData */
+
+ if (pvalue->m.centralizedDataPresent) {
+ invokeStartElement (pctxt, "centralizedData", -1);
+
+ stat = asn1PD_H245_SeqOfH245DataApplicationCapability (pctxt, &pvalue->centralizedData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "centralizedData", -1);
+ }
+
+ /* decode distributedData */
+
+ if (pvalue->m.distributedDataPresent) {
+ invokeStartElement (pctxt, "distributedData", -1);
+
+ stat = asn1PD_H245_SeqOfH245DataApplicationCapability (pctxt, &pvalue->distributedData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "distributedData", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245MediaDistributionCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245_SeqOfH245MediaDistributionCapability (OOCTXT* pctxt, H245_SeqOfH245MediaDistributionCapability* pvalue)
+{
+ int stat = ASN_OK;
+ H245MediaDistributionCapability* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245MediaDistributionCapability);
+
+ stat = asn1PD_H245MediaDistributionCapability (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultipointCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultipointCapability (OOCTXT* pctxt, H245MultipointCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode multicastCapability */
+
+ invokeStartElement (pctxt, "multicastCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multicastCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multicastCapability);
+
+ invokeEndElement (pctxt, "multicastCapability", -1);
+
+ /* decode multiUniCastConference */
+
+ invokeStartElement (pctxt, "multiUniCastConference", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multiUniCastConference);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multiUniCastConference);
+
+ invokeEndElement (pctxt, "multiUniCastConference", -1);
+
+ /* decode mediaDistributionCapability */
+
+ invokeStartElement (pctxt, "mediaDistributionCapability", -1);
+
+ stat = asn1PD_H245_SeqOfH245MediaDistributionCapability (pctxt, &pvalue->mediaDistributionCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaDistributionCapability", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250Capability_mcCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H2250Capability_mcCapability (OOCTXT* pctxt, H245H2250Capability_mcCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode centralizedConferenceMC */
+
+ invokeStartElement (pctxt, "centralizedConferenceMC", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->centralizedConferenceMC);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->centralizedConferenceMC);
+
+ invokeEndElement (pctxt, "centralizedConferenceMC", -1);
+
+ /* decode decentralizedConferenceMC */
+
+ invokeStartElement (pctxt, "decentralizedConferenceMC", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->decentralizedConferenceMC);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->decentralizedConferenceMC);
+
+ invokeEndElement (pctxt, "decentralizedConferenceMC", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPPayloadType_payloadDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RTPPayloadType_payloadDescriptor (OOCTXT* pctxt, H245RTPPayloadType_payloadDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandardIdentifier */
+ case 0:
+ invokeStartElement (pctxt, "nonStandardIdentifier", -1);
+
+ pvalue->u.nonStandardIdentifier = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandardIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardIdentifier", -1);
+
+ break;
+
+ /* rfc_number */
+ case 1:
+ invokeStartElement (pctxt, "rfc_number", -1);
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (extbit == 0) {
+ stat = decodeConsInteger (pctxt, &pvalue->u.rfc_number, 1, 32768);
+ if (stat != ASN_OK) return stat;
+ }
+ else {
+ stat = decodeUnconsInteger (pctxt, &pvalue->u.rfc_number);
+ if (stat != ASN_OK) return stat;
+ }
+ invokeIntValue (pctxt, pvalue->u.rfc_number);
+
+ invokeEndElement (pctxt, "rfc_number", -1);
+
+ break;
+
+ /* oid */
+ case 2:
+ invokeStartElement (pctxt, "oid", -1);
+
+ pvalue->u.oid = ALLOC_ASN1ELEM (pctxt, ASN1OBJID);
+
+ stat = decodeObjectIdentifier (pctxt, pvalue->u.oid);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->u.oid->numids, pvalue->u.oid->subid);
+
+ invokeEndElement (pctxt, "oid", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPPayloadType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RTPPayloadType (OOCTXT* pctxt, H245RTPPayloadType* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.payloadTypePresent = optbit;
+
+ /* decode payloadDescriptor */
+
+ invokeStartElement (pctxt, "payloadDescriptor", -1);
+
+ stat = asn1PD_H245RTPPayloadType_payloadDescriptor (pctxt, &pvalue->payloadDescriptor);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "payloadDescriptor", -1);
+
+ /* decode payloadType */
+
+ if (pvalue->m.payloadTypePresent) {
+ invokeStartElement (pctxt, "payloadType", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->payloadType, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->payloadType);
+
+ invokeEndElement (pctxt, "payloadType", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MediaPacketizationCapability_rtpPayloadType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MediaPacketizationCapability_rtpPayloadType (OOCTXT* pctxt, H245MediaPacketizationCapability_rtpPayloadType* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245RTPPayloadType* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245RTPPayloadType);
+
+ stat = asn1PD_H245RTPPayloadType (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MediaPacketizationCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MediaPacketizationCapability (OOCTXT* pctxt, H245MediaPacketizationCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode h261aVideoPacketization */
+
+ invokeStartElement (pctxt, "h261aVideoPacketization", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->h261aVideoPacketization);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->h261aVideoPacketization);
+
+ invokeEndElement (pctxt, "h261aVideoPacketization", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.rtpPayloadTypePresent = 1;
+
+ invokeStartElement (pctxt, "rtpPayloadType", -1);
+
+ stat = asn1PD_H245MediaPacketizationCapability_rtpPayloadType (pctxt, &pvalue->rtpPayloadType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rtpPayloadType", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* QOSMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245QOSMode (OOCTXT* pctxt, H245QOSMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* guaranteedQOS */
+ case 0:
+ invokeStartElement (pctxt, "guaranteedQOS", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "guaranteedQOS", -1);
+
+ break;
+
+ /* controlledLoad */
+ case 1:
+ invokeStartElement (pctxt, "controlledLoad", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "controlledLoad", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RSVPParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RSVPParameters (OOCTXT* pctxt, H245RSVPParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.qosModePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tokenRatePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.bucketSizePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.peakRatePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.minPolicedPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.maxPktSizePresent = optbit;
+
+ /* decode qosMode */
+
+ if (pvalue->m.qosModePresent) {
+ invokeStartElement (pctxt, "qosMode", -1);
+
+ stat = asn1PD_H245QOSMode (pctxt, &pvalue->qosMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "qosMode", -1);
+ }
+
+ /* decode tokenRate */
+
+ if (pvalue->m.tokenRatePresent) {
+ invokeStartElement (pctxt, "tokenRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->tokenRate, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->tokenRate);
+
+ invokeEndElement (pctxt, "tokenRate", -1);
+ }
+
+ /* decode bucketSize */
+
+ if (pvalue->m.bucketSizePresent) {
+ invokeStartElement (pctxt, "bucketSize", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->bucketSize, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bucketSize);
+
+ invokeEndElement (pctxt, "bucketSize", -1);
+ }
+
+ /* decode peakRate */
+
+ if (pvalue->m.peakRatePresent) {
+ invokeStartElement (pctxt, "peakRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->peakRate, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->peakRate);
+
+ invokeEndElement (pctxt, "peakRate", -1);
+ }
+
+ /* decode minPoliced */
+
+ if (pvalue->m.minPolicedPresent) {
+ invokeStartElement (pctxt, "minPoliced", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->minPoliced, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->minPoliced);
+
+ invokeEndElement (pctxt, "minPoliced", -1);
+ }
+
+ /* decode maxPktSize */
+
+ if (pvalue->m.maxPktSizePresent) {
+ invokeStartElement (pctxt, "maxPktSize", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->maxPktSize, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maxPktSize);
+
+ invokeEndElement (pctxt, "maxPktSize", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ATMParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ATMParameters (OOCTXT* pctxt, H245ATMParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode maxNTUSize */
+
+ invokeStartElement (pctxt, "maxNTUSize", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maxNTUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maxNTUSize);
+
+ invokeEndElement (pctxt, "maxNTUSize", -1);
+
+ /* decode atmUBR */
+
+ invokeStartElement (pctxt, "atmUBR", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->atmUBR);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->atmUBR);
+
+ invokeEndElement (pctxt, "atmUBR", -1);
+
+ /* decode atmrtVBR */
+
+ invokeStartElement (pctxt, "atmrtVBR", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->atmrtVBR);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->atmrtVBR);
+
+ invokeEndElement (pctxt, "atmrtVBR", -1);
+
+ /* decode atmnrtVBR */
+
+ invokeStartElement (pctxt, "atmnrtVBR", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->atmnrtVBR);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->atmnrtVBR);
+
+ invokeEndElement (pctxt, "atmnrtVBR", -1);
+
+ /* decode atmABR */
+
+ invokeStartElement (pctxt, "atmABR", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->atmABR);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->atmABR);
+
+ invokeEndElement (pctxt, "atmABR", -1);
+
+ /* decode atmCBR */
+
+ invokeStartElement (pctxt, "atmCBR", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->atmCBR);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->atmCBR);
+
+ invokeEndElement (pctxt, "atmCBR", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* QOSCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245QOSCapability (OOCTXT* pctxt, H245QOSCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.rsvpParametersPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.atmParametersPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode rsvpParameters */
+
+ if (pvalue->m.rsvpParametersPresent) {
+ invokeStartElement (pctxt, "rsvpParameters", -1);
+
+ stat = asn1PD_H245RSVPParameters (pctxt, &pvalue->rsvpParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rsvpParameters", -1);
+ }
+
+ /* decode atmParameters */
+
+ if (pvalue->m.atmParametersPresent) {
+ invokeStartElement (pctxt, "atmParameters", -1);
+
+ stat = asn1PD_H245ATMParameters (pctxt, &pvalue->atmParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "atmParameters", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportCapability_qOSCapabilities */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TransportCapability_qOSCapabilities (OOCTXT* pctxt, H245TransportCapability_qOSCapabilities* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245QOSCapability* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245QOSCapability);
+
+ stat = asn1PD_H245QOSCapability (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MediaTransportType_atm_AAL5_compressed */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MediaTransportType_atm_AAL5_compressed (OOCTXT* pctxt, H245MediaTransportType_atm_AAL5_compressed* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode variable_delta */
+
+ invokeStartElement (pctxt, "variable_delta", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->variable_delta);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->variable_delta);
+
+ invokeEndElement (pctxt, "variable_delta", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MediaTransportType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MediaTransportType (OOCTXT* pctxt, H245MediaTransportType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* ip_UDP */
+ case 0:
+ invokeStartElement (pctxt, "ip_UDP", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "ip_UDP", -1);
+
+ break;
+
+ /* ip_TCP */
+ case 1:
+ invokeStartElement (pctxt, "ip_TCP", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "ip_TCP", -1);
+
+ break;
+
+ /* atm_AAL5_UNIDIR */
+ case 2:
+ invokeStartElement (pctxt, "atm_AAL5_UNIDIR", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "atm_AAL5_UNIDIR", -1);
+
+ break;
+
+ /* atm_AAL5_BIDIR */
+ case 3:
+ invokeStartElement (pctxt, "atm_AAL5_BIDIR", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "atm_AAL5_BIDIR", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* atm_AAL5_compressed */
+ case 5:
+ invokeStartElement (pctxt, "atm_AAL5_compressed", -1);
+
+ pvalue->u.atm_AAL5_compressed = ALLOC_ASN1ELEM (pctxt, H245MediaTransportType_atm_AAL5_compressed);
+
+ stat = asn1PD_H245MediaTransportType_atm_AAL5_compressed (pctxt, pvalue->u.atm_AAL5_compressed);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "atm_AAL5_compressed", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MediaChannelCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MediaChannelCapability (OOCTXT* pctxt, H245MediaChannelCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mediaTransportPresent = optbit;
+
+ /* decode mediaTransport */
+
+ if (pvalue->m.mediaTransportPresent) {
+ invokeStartElement (pctxt, "mediaTransport", -1);
+
+ stat = asn1PD_H245MediaTransportType (pctxt, &pvalue->mediaTransport);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaTransport", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportCapability_mediaChannelCapabilities */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TransportCapability_mediaChannelCapabilities (OOCTXT* pctxt, H245TransportCapability_mediaChannelCapabilities* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245MediaChannelCapability* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245MediaChannelCapability);
+
+ stat = asn1PD_H245MediaChannelCapability (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TransportCapability (OOCTXT* pctxt, H245TransportCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.qOSCapabilitiesPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mediaChannelCapabilitiesPresent = optbit;
+
+ /* decode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+ }
+
+ /* decode qOSCapabilities */
+
+ if (pvalue->m.qOSCapabilitiesPresent) {
+ invokeStartElement (pctxt, "qOSCapabilities", -1);
+
+ stat = asn1PD_H245TransportCapability_qOSCapabilities (pctxt, &pvalue->qOSCapabilities);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "qOSCapabilities", -1);
+ }
+
+ /* decode mediaChannelCapabilities */
+
+ if (pvalue->m.mediaChannelCapabilitiesPresent) {
+ invokeStartElement (pctxt, "mediaChannelCapabilities", -1);
+
+ stat = asn1PD_H245TransportCapability_mediaChannelCapabilities (pctxt, &pvalue->mediaChannelCapabilities);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaChannelCapabilities", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyFrameMapping_frameSequence */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RTPH263VideoRedundancyFrameMapping_frameSequence (OOCTXT* pctxt, H245RTPH263VideoRedundancyFrameMapping_frameSequence* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->elem[xx1], 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->elem[xx1]);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyFrameMapping */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RTPH263VideoRedundancyFrameMapping (OOCTXT* pctxt, H245RTPH263VideoRedundancyFrameMapping* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode threadNumber */
+
+ invokeStartElement (pctxt, "threadNumber", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->threadNumber, 0U, 15U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->threadNumber);
+
+ invokeEndElement (pctxt, "threadNumber", -1);
+
+ /* decode frameSequence */
+
+ invokeStartElement (pctxt, "frameSequence", -1);
+
+ stat = asn1PD_H245RTPH263VideoRedundancyFrameMapping_frameSequence (pctxt, &pvalue->frameSequence);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "frameSequence", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyEncoding_frameToThreadMapping_cust */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245RTPH263VideoRedundancyFrameMapping* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245RTPH263VideoRedundancyFrameMapping);
+
+ stat = asn1PD_H245RTPH263VideoRedundancyFrameMapping (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyEncoding_frameToThreadMapping */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_frameToThreadMapping* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* roundrobin */
+ case 0:
+ invokeStartElement (pctxt, "roundrobin", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "roundrobin", -1);
+
+ break;
+
+ /* custom */
+ case 1:
+ invokeStartElement (pctxt, "custom", -1);
+
+ pvalue->u.custom = ALLOC_ASN1ELEM (pctxt, H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom);
+
+ stat = asn1PD_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom (pctxt, pvalue->u.custom);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "custom", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyEncoding_containedThreads */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RTPH263VideoRedundancyEncoding_containedThreads (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_containedThreads* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->elem[xx1], 0U, 15U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->elem[xx1]);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyEncoding */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RTPH263VideoRedundancyEncoding (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.containedThreadsPresent = optbit;
+
+ /* decode numberOfThreads */
+
+ invokeStartElement (pctxt, "numberOfThreads", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->numberOfThreads, 1U, 16U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->numberOfThreads);
+
+ invokeEndElement (pctxt, "numberOfThreads", -1);
+
+ /* decode framesBetweenSyncPoints */
+
+ invokeStartElement (pctxt, "framesBetweenSyncPoints", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->framesBetweenSyncPoints, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->framesBetweenSyncPoints);
+
+ invokeEndElement (pctxt, "framesBetweenSyncPoints", -1);
+
+ /* decode frameToThreadMapping */
+
+ invokeStartElement (pctxt, "frameToThreadMapping", -1);
+
+ stat = asn1PD_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping (pctxt, &pvalue->frameToThreadMapping);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "frameToThreadMapping", -1);
+
+ /* decode containedThreads */
+
+ if (pvalue->m.containedThreadsPresent) {
+ invokeStartElement (pctxt, "containedThreads", -1);
+
+ stat = asn1PD_H245RTPH263VideoRedundancyEncoding_containedThreads (pctxt, &pvalue->containedThreads);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "containedThreads", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingMethod */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RedundancyEncodingMethod (OOCTXT* pctxt, H245RedundancyEncodingMethod* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* rtpAudioRedundancyEncoding */
+ case 1:
+ invokeStartElement (pctxt, "rtpAudioRedundancyEncoding", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "rtpAudioRedundancyEncoding", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* rtpH263VideoRedundancyEncoding */
+ case 3:
+ invokeStartElement (pctxt, "rtpH263VideoRedundancyEncoding", -1);
+
+ pvalue->u.rtpH263VideoRedundancyEncoding = ALLOC_ASN1ELEM (pctxt, H245RTPH263VideoRedundancyEncoding);
+
+ stat = asn1PD_H245RTPH263VideoRedundancyEncoding (pctxt, pvalue->u.rtpH263VideoRedundancyEncoding);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rtpH263VideoRedundancyEncoding", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapabilityTableEntryNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CapabilityTableEntryNumber (OOCTXT* pctxt, H245CapabilityTableEntryNumber* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUInt16 (pctxt, pvalue, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingCapability_secondaryEncoding */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RedundancyEncodingCapability_secondaryEncoding (OOCTXT* pctxt, H245RedundancyEncodingCapability_secondaryEncoding* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H245CapabilityTableEntryNumber (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RedundancyEncodingCapability (OOCTXT* pctxt, H245RedundancyEncodingCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.secondaryEncodingPresent = optbit;
+
+ /* decode redundancyEncodingMethod */
+
+ invokeStartElement (pctxt, "redundancyEncodingMethod", -1);
+
+ stat = asn1PD_H245RedundancyEncodingMethod (pctxt, &pvalue->redundancyEncodingMethod);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "redundancyEncodingMethod", -1);
+
+ /* decode primaryEncoding */
+
+ invokeStartElement (pctxt, "primaryEncoding", -1);
+
+ stat = asn1PD_H245CapabilityTableEntryNumber (pctxt, &pvalue->primaryEncoding);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "primaryEncoding", -1);
+
+ /* decode secondaryEncoding */
+
+ if (pvalue->m.secondaryEncodingPresent) {
+ invokeStartElement (pctxt, "secondaryEncoding", -1);
+
+ stat = asn1PD_H245RedundancyEncodingCapability_secondaryEncoding (pctxt, &pvalue->secondaryEncoding);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "secondaryEncoding", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250Capability_redundancyEncodingCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H2250Capability_redundancyEncodingCapability (OOCTXT* pctxt, H245H2250Capability_redundancyEncodingCapability* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245RedundancyEncodingCapability* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245RedundancyEncodingCapability);
+
+ stat = asn1PD_H245RedundancyEncodingCapability (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250Capability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H2250Capability (OOCTXT* pctxt, H245H2250Capability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode maximumAudioDelayJitter */
+
+ invokeStartElement (pctxt, "maximumAudioDelayJitter", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maximumAudioDelayJitter, 0U, 1023U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maximumAudioDelayJitter);
+
+ invokeEndElement (pctxt, "maximumAudioDelayJitter", -1);
+
+ /* decode receiveMultipointCapability */
+
+ invokeStartElement (pctxt, "receiveMultipointCapability", -1);
+
+ stat = asn1PD_H245MultipointCapability (pctxt, &pvalue->receiveMultipointCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveMultipointCapability", -1);
+
+ /* decode transmitMultipointCapability */
+
+ invokeStartElement (pctxt, "transmitMultipointCapability", -1);
+
+ stat = asn1PD_H245MultipointCapability (pctxt, &pvalue->transmitMultipointCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transmitMultipointCapability", -1);
+
+ /* decode receiveAndTransmitMultipointCapability */
+
+ invokeStartElement (pctxt, "receiveAndTransmitMultipointCapability", -1);
+
+ stat = asn1PD_H245MultipointCapability (pctxt, &pvalue->receiveAndTransmitMultipointCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveAndTransmitMultipointCapability", -1);
+
+ /* decode mcCapability */
+
+ invokeStartElement (pctxt, "mcCapability", -1);
+
+ stat = asn1PD_H245H2250Capability_mcCapability (pctxt, &pvalue->mcCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mcCapability", -1);
+
+ /* decode rtcpVideoControlCapability */
+
+ invokeStartElement (pctxt, "rtcpVideoControlCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->rtcpVideoControlCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->rtcpVideoControlCapability);
+
+ invokeEndElement (pctxt, "rtcpVideoControlCapability", -1);
+
+ /* decode mediaPacketizationCapability */
+
+ invokeStartElement (pctxt, "mediaPacketizationCapability", -1);
+
+ stat = asn1PD_H245MediaPacketizationCapability (pctxt, &pvalue->mediaPacketizationCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaPacketizationCapability", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 4 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.transportCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "transportCapability", -1);
+
+ stat = asn1PD_H245TransportCapability (pctxt, &pvalue->transportCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transportCapability", -1);
+ break;
+
+ case 1:
+ pvalue->m.redundancyEncodingCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "redundancyEncodingCapability", -1);
+
+ stat = asn1PD_H245H2250Capability_redundancyEncodingCapability (pctxt, &pvalue->redundancyEncodingCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "redundancyEncodingCapability", -1);
+ break;
+
+ case 2:
+ pvalue->m.logicalChannelSwitchingCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "logicalChannelSwitchingCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->logicalChannelSwitchingCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->logicalChannelSwitchingCapability);
+
+ invokeEndElement (pctxt, "logicalChannelSwitchingCapability", -1);
+ break;
+
+ case 3:
+ pvalue->m.t120DynamicPortCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "t120DynamicPortCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->t120DynamicPortCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->t120DynamicPortCapability);
+
+ invokeEndElement (pctxt, "t120DynamicPortCapability", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexCapability (OOCTXT* pctxt, H245MultiplexCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* h222Capability */
+ case 1:
+ invokeStartElement (pctxt, "h222Capability", -1);
+
+ pvalue->u.h222Capability = ALLOC_ASN1ELEM (pctxt, H245H222Capability);
+
+ stat = asn1PD_H245H222Capability (pctxt, pvalue->u.h222Capability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h222Capability", -1);
+
+ break;
+
+ /* h223Capability */
+ case 2:
+ invokeStartElement (pctxt, "h223Capability", -1);
+
+ pvalue->u.h223Capability = ALLOC_ASN1ELEM (pctxt, H245H223Capability);
+
+ stat = asn1PD_H245H223Capability (pctxt, pvalue->u.h223Capability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h223Capability", -1);
+
+ break;
+
+ /* v76Capability */
+ case 3:
+ invokeStartElement (pctxt, "v76Capability", -1);
+
+ pvalue->u.v76Capability = ALLOC_ASN1ELEM (pctxt, H245V76Capability);
+
+ stat = asn1PD_H245V76Capability (pctxt, pvalue->u.v76Capability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "v76Capability", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* h2250Capability */
+ case 5:
+ invokeStartElement (pctxt, "h2250Capability", -1);
+
+ pvalue->u.h2250Capability = ALLOC_ASN1ELEM (pctxt, H245H2250Capability);
+
+ stat = asn1PD_H245H2250Capability (pctxt, pvalue->u.h2250Capability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h2250Capability", -1);
+
+ break;
+
+ /* genericMultiplexCapability */
+ case 6:
+ invokeStartElement (pctxt, "genericMultiplexCapability", -1);
+
+ pvalue->u.genericMultiplexCapability = ALLOC_ASN1ELEM (pctxt, H245GenericCapability);
+
+ stat = asn1PD_H245GenericCapability (pctxt, pvalue->u.genericMultiplexCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericMultiplexCapability", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H261VideoCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H261VideoCapability (OOCTXT* pctxt, H245H261VideoCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.qcifMPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cifMPIPresent = optbit;
+
+ /* decode qcifMPI */
+
+ if (pvalue->m.qcifMPIPresent) {
+ invokeStartElement (pctxt, "qcifMPI", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->qcifMPI, 1U, 4U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->qcifMPI);
+
+ invokeEndElement (pctxt, "qcifMPI", -1);
+ }
+
+ /* decode cifMPI */
+
+ if (pvalue->m.cifMPIPresent) {
+ invokeStartElement (pctxt, "cifMPI", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->cifMPI, 1U, 4U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->cifMPI);
+
+ invokeEndElement (pctxt, "cifMPI", -1);
+ }
+
+ /* decode temporalSpatialTradeOffCapability */
+
+ invokeStartElement (pctxt, "temporalSpatialTradeOffCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->temporalSpatialTradeOffCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->temporalSpatialTradeOffCapability);
+
+ invokeEndElement (pctxt, "temporalSpatialTradeOffCapability", -1);
+
+ /* decode maxBitRate */
+
+ invokeStartElement (pctxt, "maxBitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maxBitRate, 1U, 19200U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maxBitRate);
+
+ invokeEndElement (pctxt, "maxBitRate", -1);
+
+ /* decode stillImageTransmission */
+
+ invokeStartElement (pctxt, "stillImageTransmission", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->stillImageTransmission);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->stillImageTransmission);
+
+ invokeEndElement (pctxt, "stillImageTransmission", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.videoBadMBsCapPresent = 1;
+
+ invokeStartElement (pctxt, "videoBadMBsCap", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->videoBadMBsCap);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->videoBadMBsCap);
+
+ invokeEndElement (pctxt, "videoBadMBsCap", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H262VideoCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H262VideoCapability (OOCTXT* pctxt, H245H262VideoCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.videoBitRatePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.vbvBufferSizePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.samplesPerLinePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.linesPerFramePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.framesPerSecondPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.luminanceSampleRatePresent = optbit;
+
+ /* decode profileAndLevel_SPatML */
+
+ invokeStartElement (pctxt, "profileAndLevel_SPatML", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->profileAndLevel_SPatML);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->profileAndLevel_SPatML);
+
+ invokeEndElement (pctxt, "profileAndLevel_SPatML", -1);
+
+ /* decode profileAndLevel_MPatLL */
+
+ invokeStartElement (pctxt, "profileAndLevel_MPatLL", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->profileAndLevel_MPatLL);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->profileAndLevel_MPatLL);
+
+ invokeEndElement (pctxt, "profileAndLevel_MPatLL", -1);
+
+ /* decode profileAndLevel_MPatML */
+
+ invokeStartElement (pctxt, "profileAndLevel_MPatML", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->profileAndLevel_MPatML);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->profileAndLevel_MPatML);
+
+ invokeEndElement (pctxt, "profileAndLevel_MPatML", -1);
+
+ /* decode profileAndLevel_MPatH_14 */
+
+ invokeStartElement (pctxt, "profileAndLevel_MPatH_14", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->profileAndLevel_MPatH_14);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->profileAndLevel_MPatH_14);
+
+ invokeEndElement (pctxt, "profileAndLevel_MPatH_14", -1);
+
+ /* decode profileAndLevel_MPatHL */
+
+ invokeStartElement (pctxt, "profileAndLevel_MPatHL", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->profileAndLevel_MPatHL);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->profileAndLevel_MPatHL);
+
+ invokeEndElement (pctxt, "profileAndLevel_MPatHL", -1);
+
+ /* decode profileAndLevel_SNRatLL */
+
+ invokeStartElement (pctxt, "profileAndLevel_SNRatLL", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->profileAndLevel_SNRatLL);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->profileAndLevel_SNRatLL);
+
+ invokeEndElement (pctxt, "profileAndLevel_SNRatLL", -1);
+
+ /* decode profileAndLevel_SNRatML */
+
+ invokeStartElement (pctxt, "profileAndLevel_SNRatML", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->profileAndLevel_SNRatML);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->profileAndLevel_SNRatML);
+
+ invokeEndElement (pctxt, "profileAndLevel_SNRatML", -1);
+
+ /* decode profileAndLevel_SpatialatH_14 */
+
+ invokeStartElement (pctxt, "profileAndLevel_SpatialatH_14", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->profileAndLevel_SpatialatH_14);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->profileAndLevel_SpatialatH_14);
+
+ invokeEndElement (pctxt, "profileAndLevel_SpatialatH_14", -1);
+
+ /* decode profileAndLevel_HPatML */
+
+ invokeStartElement (pctxt, "profileAndLevel_HPatML", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->profileAndLevel_HPatML);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->profileAndLevel_HPatML);
+
+ invokeEndElement (pctxt, "profileAndLevel_HPatML", -1);
+
+ /* decode profileAndLevel_HPatH_14 */
+
+ invokeStartElement (pctxt, "profileAndLevel_HPatH_14", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->profileAndLevel_HPatH_14);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->profileAndLevel_HPatH_14);
+
+ invokeEndElement (pctxt, "profileAndLevel_HPatH_14", -1);
+
+ /* decode profileAndLevel_HPatHL */
+
+ invokeStartElement (pctxt, "profileAndLevel_HPatHL", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->profileAndLevel_HPatHL);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->profileAndLevel_HPatHL);
+
+ invokeEndElement (pctxt, "profileAndLevel_HPatHL", -1);
+
+ /* decode videoBitRate */
+
+ if (pvalue->m.videoBitRatePresent) {
+ invokeStartElement (pctxt, "videoBitRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->videoBitRate, 0U, 1073741823U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->videoBitRate);
+
+ invokeEndElement (pctxt, "videoBitRate", -1);
+ }
+
+ /* decode vbvBufferSize */
+
+ if (pvalue->m.vbvBufferSizePresent) {
+ invokeStartElement (pctxt, "vbvBufferSize", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->vbvBufferSize, 0U, 262143U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->vbvBufferSize);
+
+ invokeEndElement (pctxt, "vbvBufferSize", -1);
+ }
+
+ /* decode samplesPerLine */
+
+ if (pvalue->m.samplesPerLinePresent) {
+ invokeStartElement (pctxt, "samplesPerLine", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->samplesPerLine, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->samplesPerLine);
+
+ invokeEndElement (pctxt, "samplesPerLine", -1);
+ }
+
+ /* decode linesPerFrame */
+
+ if (pvalue->m.linesPerFramePresent) {
+ invokeStartElement (pctxt, "linesPerFrame", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->linesPerFrame, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->linesPerFrame);
+
+ invokeEndElement (pctxt, "linesPerFrame", -1);
+ }
+
+ /* decode framesPerSecond */
+
+ if (pvalue->m.framesPerSecondPresent) {
+ invokeStartElement (pctxt, "framesPerSecond", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->framesPerSecond, 0U, 15U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->framesPerSecond);
+
+ invokeEndElement (pctxt, "framesPerSecond", -1);
+ }
+
+ /* decode luminanceSampleRate */
+
+ if (pvalue->m.luminanceSampleRatePresent) {
+ invokeStartElement (pctxt, "luminanceSampleRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->luminanceSampleRate, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->luminanceSampleRate);
+
+ invokeEndElement (pctxt, "luminanceSampleRate", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.videoBadMBsCapPresent = 1;
+
+ invokeStartElement (pctxt, "videoBadMBsCap", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->videoBadMBsCap);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->videoBadMBsCap);
+
+ invokeEndElement (pctxt, "videoBadMBsCap", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransparencyParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TransparencyParameters (OOCTXT* pctxt, H245TransparencyParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode presentationOrder */
+
+ invokeStartElement (pctxt, "presentationOrder", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->presentationOrder, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->presentationOrder);
+
+ invokeEndElement (pctxt, "presentationOrder", -1);
+
+ /* decode offset_x */
+
+ invokeStartElement (pctxt, "offset_x", -1);
+
+ stat = decodeConsInteger (pctxt, &pvalue->offset_x, -262144, 262143);
+ if (stat != ASN_OK) return stat;
+ invokeIntValue (pctxt, pvalue->offset_x);
+
+ invokeEndElement (pctxt, "offset_x", -1);
+
+ /* decode offset_y */
+
+ invokeStartElement (pctxt, "offset_y", -1);
+
+ stat = decodeConsInteger (pctxt, &pvalue->offset_y, -262144, 262143);
+ if (stat != ASN_OK) return stat;
+ invokeIntValue (pctxt, pvalue->offset_y);
+
+ invokeEndElement (pctxt, "offset_y", -1);
+
+ /* decode scale_x */
+
+ invokeStartElement (pctxt, "scale_x", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->scale_x, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->scale_x);
+
+ invokeEndElement (pctxt, "scale_x", -1);
+
+ /* decode scale_y */
+
+ invokeStartElement (pctxt, "scale_y", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->scale_y, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->scale_y);
+
+ invokeEndElement (pctxt, "scale_y", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RefPictureSelection_additionalPictureMemory */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RefPictureSelection_additionalPictureMemory (OOCTXT* pctxt, H245RefPictureSelection_additionalPictureMemory* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.sqcifAdditionalPictureMemoryPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.qcifAdditionalPictureMemoryPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cifAdditionalPictureMemoryPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cif4AdditionalPictureMemoryPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cif16AdditionalPictureMemoryPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.bigCpfAdditionalPictureMemoryPresent = optbit;
+
+ /* decode sqcifAdditionalPictureMemory */
+
+ if (pvalue->m.sqcifAdditionalPictureMemoryPresent) {
+ invokeStartElement (pctxt, "sqcifAdditionalPictureMemory", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->sqcifAdditionalPictureMemory, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sqcifAdditionalPictureMemory);
+
+ invokeEndElement (pctxt, "sqcifAdditionalPictureMemory", -1);
+ }
+
+ /* decode qcifAdditionalPictureMemory */
+
+ if (pvalue->m.qcifAdditionalPictureMemoryPresent) {
+ invokeStartElement (pctxt, "qcifAdditionalPictureMemory", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->qcifAdditionalPictureMemory, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->qcifAdditionalPictureMemory);
+
+ invokeEndElement (pctxt, "qcifAdditionalPictureMemory", -1);
+ }
+
+ /* decode cifAdditionalPictureMemory */
+
+ if (pvalue->m.cifAdditionalPictureMemoryPresent) {
+ invokeStartElement (pctxt, "cifAdditionalPictureMemory", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->cifAdditionalPictureMemory, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->cifAdditionalPictureMemory);
+
+ invokeEndElement (pctxt, "cifAdditionalPictureMemory", -1);
+ }
+
+ /* decode cif4AdditionalPictureMemory */
+
+ if (pvalue->m.cif4AdditionalPictureMemoryPresent) {
+ invokeStartElement (pctxt, "cif4AdditionalPictureMemory", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->cif4AdditionalPictureMemory, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->cif4AdditionalPictureMemory);
+
+ invokeEndElement (pctxt, "cif4AdditionalPictureMemory", -1);
+ }
+
+ /* decode cif16AdditionalPictureMemory */
+
+ if (pvalue->m.cif16AdditionalPictureMemoryPresent) {
+ invokeStartElement (pctxt, "cif16AdditionalPictureMemory", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->cif16AdditionalPictureMemory, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->cif16AdditionalPictureMemory);
+
+ invokeEndElement (pctxt, "cif16AdditionalPictureMemory", -1);
+ }
+
+ /* decode bigCpfAdditionalPictureMemory */
+
+ if (pvalue->m.bigCpfAdditionalPictureMemoryPresent) {
+ invokeStartElement (pctxt, "bigCpfAdditionalPictureMemory", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->bigCpfAdditionalPictureMemory, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bigCpfAdditionalPictureMemory);
+
+ invokeEndElement (pctxt, "bigCpfAdditionalPictureMemory", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RefPictureSelection_videoBackChannelSend */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RefPictureSelection_videoBackChannelSend (OOCTXT* pctxt, H245RefPictureSelection_videoBackChannelSend* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 4);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* none */
+ case 0:
+ invokeStartElement (pctxt, "none", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "none", -1);
+
+ break;
+
+ /* ackMessageOnly */
+ case 1:
+ invokeStartElement (pctxt, "ackMessageOnly", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "ackMessageOnly", -1);
+
+ break;
+
+ /* nackMessageOnly */
+ case 2:
+ invokeStartElement (pctxt, "nackMessageOnly", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "nackMessageOnly", -1);
+
+ break;
+
+ /* ackOrNackMessageOnly */
+ case 3:
+ invokeStartElement (pctxt, "ackOrNackMessageOnly", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "ackOrNackMessageOnly", -1);
+
+ break;
+
+ /* ackAndNackMessage */
+ case 4:
+ invokeStartElement (pctxt, "ackAndNackMessage", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "ackAndNackMessage", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 6;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RefPictureSelection_enhancedReferencePicSelect_subPictur */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters (OOCTXT* pctxt, H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode mpuHorizMBs */
+
+ invokeStartElement (pctxt, "mpuHorizMBs", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->mpuHorizMBs, 1U, 128U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->mpuHorizMBs);
+
+ invokeEndElement (pctxt, "mpuHorizMBs", -1);
+
+ /* decode mpuVertMBs */
+
+ invokeStartElement (pctxt, "mpuVertMBs", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->mpuVertMBs, 1U, 72U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->mpuVertMBs);
+
+ invokeEndElement (pctxt, "mpuVertMBs", -1);
+
+ /* decode mpuTotalNumber */
+
+ invokeStartElement (pctxt, "mpuTotalNumber", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->mpuTotalNumber, 1U, 65536U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->mpuTotalNumber);
+
+ invokeEndElement (pctxt, "mpuTotalNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RefPictureSelection_enhancedReferencePicSelect */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RefPictureSelection_enhancedReferencePicSelect (OOCTXT* pctxt, H245RefPictureSelection_enhancedReferencePicSelect* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.subPictureRemovalParametersPresent = optbit;
+
+ /* decode subPictureRemovalParameters */
+
+ if (pvalue->m.subPictureRemovalParametersPresent) {
+ invokeStartElement (pctxt, "subPictureRemovalParameters", -1);
+
+ stat = asn1PD_H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters (pctxt, &pvalue->subPictureRemovalParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "subPictureRemovalParameters", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RefPictureSelection */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RefPictureSelection (OOCTXT* pctxt, H245RefPictureSelection* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.additionalPictureMemoryPresent = optbit;
+
+ /* decode additionalPictureMemory */
+
+ if (pvalue->m.additionalPictureMemoryPresent) {
+ invokeStartElement (pctxt, "additionalPictureMemory", -1);
+
+ stat = asn1PD_H245RefPictureSelection_additionalPictureMemory (pctxt, &pvalue->additionalPictureMemory);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "additionalPictureMemory", -1);
+ }
+
+ /* decode videoMux */
+
+ invokeStartElement (pctxt, "videoMux", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->videoMux);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->videoMux);
+
+ invokeEndElement (pctxt, "videoMux", -1);
+
+ /* decode videoBackChannelSend */
+
+ invokeStartElement (pctxt, "videoBackChannelSend", -1);
+
+ stat = asn1PD_H245RefPictureSelection_videoBackChannelSend (pctxt, &pvalue->videoBackChannelSend);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "videoBackChannelSend", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.enhancedReferencePicSelectPresent = 1;
+
+ invokeStartElement (pctxt, "enhancedReferencePicSelect", -1);
+
+ stat = asn1PD_H245RefPictureSelection_enhancedReferencePicSelect (pctxt, &pvalue->enhancedReferencePicSelect);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "enhancedReferencePicSelect", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureClockFrequency */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CustomPictureClockFrequency (OOCTXT* pctxt, H245CustomPictureClockFrequency* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.sqcifMPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.qcifMPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cifMPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cif4MPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cif16MPIPresent = optbit;
+
+ /* decode clockConversionCode */
+
+ invokeStartElement (pctxt, "clockConversionCode", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->clockConversionCode, 1000U, 1001U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->clockConversionCode);
+
+ invokeEndElement (pctxt, "clockConversionCode", -1);
+
+ /* decode clockDivisor */
+
+ invokeStartElement (pctxt, "clockDivisor", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->clockDivisor, 1U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->clockDivisor);
+
+ invokeEndElement (pctxt, "clockDivisor", -1);
+
+ /* decode sqcifMPI */
+
+ if (pvalue->m.sqcifMPIPresent) {
+ invokeStartElement (pctxt, "sqcifMPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->sqcifMPI, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sqcifMPI);
+
+ invokeEndElement (pctxt, "sqcifMPI", -1);
+ }
+
+ /* decode qcifMPI */
+
+ if (pvalue->m.qcifMPIPresent) {
+ invokeStartElement (pctxt, "qcifMPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->qcifMPI, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->qcifMPI);
+
+ invokeEndElement (pctxt, "qcifMPI", -1);
+ }
+
+ /* decode cifMPI */
+
+ if (pvalue->m.cifMPIPresent) {
+ invokeStartElement (pctxt, "cifMPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->cifMPI, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->cifMPI);
+
+ invokeEndElement (pctxt, "cifMPI", -1);
+ }
+
+ /* decode cif4MPI */
+
+ if (pvalue->m.cif4MPIPresent) {
+ invokeStartElement (pctxt, "cif4MPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->cif4MPI, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->cif4MPI);
+
+ invokeEndElement (pctxt, "cif4MPI", -1);
+ }
+
+ /* decode cif16MPI */
+
+ if (pvalue->m.cif16MPIPresent) {
+ invokeStartElement (pctxt, "cif16MPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->cif16MPI, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->cif16MPI);
+
+ invokeEndElement (pctxt, "cif16MPI", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263Options_customPictureClockFrequency */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H263Options_customPictureClockFrequency (OOCTXT* pctxt, H245H263Options_customPictureClockFrequency* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ H245CustomPictureClockFrequency* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245CustomPictureClockFrequency);
+
+ stat = asn1PD_H245CustomPictureClockFrequency (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_mPI_customPCF_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CustomPictureFormat_mPI_customPCF_element (OOCTXT* pctxt, H245CustomPictureFormat_mPI_customPCF_element* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode clockConversionCode */
+
+ invokeStartElement (pctxt, "clockConversionCode", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->clockConversionCode, 1000U, 1001U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->clockConversionCode);
+
+ invokeEndElement (pctxt, "clockConversionCode", -1);
+
+ /* decode clockDivisor */
+
+ invokeStartElement (pctxt, "clockDivisor", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->clockDivisor, 1U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->clockDivisor);
+
+ invokeEndElement (pctxt, "clockDivisor", -1);
+
+ /* decode customMPI */
+
+ invokeStartElement (pctxt, "customMPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->customMPI, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->customMPI);
+
+ invokeEndElement (pctxt, "customMPI", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_mPI_customPCF */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CustomPictureFormat_mPI_customPCF (OOCTXT* pctxt, H245CustomPictureFormat_mPI_customPCF* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ H245CustomPictureFormat_mPI_customPCF_element* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245CustomPictureFormat_mPI_customPCF_element);
+
+ stat = asn1PD_H245CustomPictureFormat_mPI_customPCF_element (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_mPI */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CustomPictureFormat_mPI (OOCTXT* pctxt, H245CustomPictureFormat_mPI* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.standardMPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.customPCFPresent = optbit;
+
+ /* decode standardMPI */
+
+ if (pvalue->m.standardMPIPresent) {
+ invokeStartElement (pctxt, "standardMPI", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->standardMPI, 1U, 31U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->standardMPI);
+
+ invokeEndElement (pctxt, "standardMPI", -1);
+ }
+
+ /* decode customPCF */
+
+ if (pvalue->m.customPCFPresent) {
+ invokeStartElement (pctxt, "customPCF", -1);
+
+ stat = asn1PD_H245CustomPictureFormat_mPI_customPCF (pctxt, &pvalue->customPCF);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "customPCF", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_pixelAspectInformation_pixelAspectCo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 14, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->elem[xx1], 1U, 14U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->elem[xx1]);
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_pixelAspectInformation_extendedPAR_e */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode width */
+
+ invokeStartElement (pctxt, "width", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->width, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->width);
+
+ invokeEndElement (pctxt, "width", -1);
+
+ /* decode height */
+
+ invokeStartElement (pctxt, "height", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->height, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->height);
+
+ invokeEndElement (pctxt, "height", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_pixelAspectInformation_extendedPAR */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CustomPictureFormat_pixelAspectInformation_extendedPAR (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_extendedPAR* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element);
+
+ stat = asn1PD_H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_pixelAspectInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CustomPictureFormat_pixelAspectInformation (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* anyPixelAspectRatio */
+ case 0:
+ invokeStartElement (pctxt, "anyPixelAspectRatio", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->u.anyPixelAspectRatio);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->u.anyPixelAspectRatio);
+
+ invokeEndElement (pctxt, "anyPixelAspectRatio", -1);
+
+ break;
+
+ /* pixelAspectCode */
+ case 1:
+ invokeStartElement (pctxt, "pixelAspectCode", -1);
+
+ pvalue->u.pixelAspectCode = ALLOC_ASN1ELEM (pctxt, H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode);
+
+ stat = asn1PD_H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode (pctxt, pvalue->u.pixelAspectCode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "pixelAspectCode", -1);
+
+ break;
+
+ /* extendedPAR */
+ case 2:
+ invokeStartElement (pctxt, "extendedPAR", -1);
+
+ pvalue->u.extendedPAR = ALLOC_ASN1ELEM (pctxt, H245CustomPictureFormat_pixelAspectInformation_extendedPAR);
+
+ stat = asn1PD_H245CustomPictureFormat_pixelAspectInformation_extendedPAR (pctxt, pvalue->u.extendedPAR);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "extendedPAR", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CustomPictureFormat (OOCTXT* pctxt, H245CustomPictureFormat* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode maxCustomPictureWidth */
+
+ invokeStartElement (pctxt, "maxCustomPictureWidth", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maxCustomPictureWidth, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maxCustomPictureWidth);
+
+ invokeEndElement (pctxt, "maxCustomPictureWidth", -1);
+
+ /* decode maxCustomPictureHeight */
+
+ invokeStartElement (pctxt, "maxCustomPictureHeight", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maxCustomPictureHeight, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maxCustomPictureHeight);
+
+ invokeEndElement (pctxt, "maxCustomPictureHeight", -1);
+
+ /* decode minCustomPictureWidth */
+
+ invokeStartElement (pctxt, "minCustomPictureWidth", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->minCustomPictureWidth, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->minCustomPictureWidth);
+
+ invokeEndElement (pctxt, "minCustomPictureWidth", -1);
+
+ /* decode minCustomPictureHeight */
+
+ invokeStartElement (pctxt, "minCustomPictureHeight", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->minCustomPictureHeight, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->minCustomPictureHeight);
+
+ invokeEndElement (pctxt, "minCustomPictureHeight", -1);
+
+ /* decode mPI */
+
+ invokeStartElement (pctxt, "mPI", -1);
+
+ stat = asn1PD_H245CustomPictureFormat_mPI (pctxt, &pvalue->mPI);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mPI", -1);
+
+ /* decode pixelAspectInformation */
+
+ invokeStartElement (pctxt, "pixelAspectInformation", -1);
+
+ stat = asn1PD_H245CustomPictureFormat_pixelAspectInformation (pctxt, &pvalue->pixelAspectInformation);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "pixelAspectInformation", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263Options_customPictureFormat */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H263Options_customPictureFormat (OOCTXT* pctxt, H245H263Options_customPictureFormat* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ H245CustomPictureFormat* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245CustomPictureFormat);
+
+ stat = asn1PD_H245CustomPictureFormat (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263Version3Options */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H263Version3Options (OOCTXT* pctxt, H245H263Version3Options* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode dataPartitionedSlices */
+
+ invokeStartElement (pctxt, "dataPartitionedSlices", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dataPartitionedSlices);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dataPartitionedSlices);
+
+ invokeEndElement (pctxt, "dataPartitionedSlices", -1);
+
+ /* decode fixedPointIDCT0 */
+
+ invokeStartElement (pctxt, "fixedPointIDCT0", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->fixedPointIDCT0);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->fixedPointIDCT0);
+
+ invokeEndElement (pctxt, "fixedPointIDCT0", -1);
+
+ /* decode interlacedFields */
+
+ invokeStartElement (pctxt, "interlacedFields", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->interlacedFields);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->interlacedFields);
+
+ invokeEndElement (pctxt, "interlacedFields", -1);
+
+ /* decode currentPictureHeaderRepetition */
+
+ invokeStartElement (pctxt, "currentPictureHeaderRepetition", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->currentPictureHeaderRepetition);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->currentPictureHeaderRepetition);
+
+ invokeEndElement (pctxt, "currentPictureHeaderRepetition", -1);
+
+ /* decode previousPictureHeaderRepetition */
+
+ invokeStartElement (pctxt, "previousPictureHeaderRepetition", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->previousPictureHeaderRepetition);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->previousPictureHeaderRepetition);
+
+ invokeEndElement (pctxt, "previousPictureHeaderRepetition", -1);
+
+ /* decode nextPictureHeaderRepetition */
+
+ invokeStartElement (pctxt, "nextPictureHeaderRepetition", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->nextPictureHeaderRepetition);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->nextPictureHeaderRepetition);
+
+ invokeEndElement (pctxt, "nextPictureHeaderRepetition", -1);
+
+ /* decode pictureNumber */
+
+ invokeStartElement (pctxt, "pictureNumber", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->pictureNumber);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->pictureNumber);
+
+ invokeEndElement (pctxt, "pictureNumber", -1);
+
+ /* decode spareReferencePictures */
+
+ invokeStartElement (pctxt, "spareReferencePictures", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->spareReferencePictures);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->spareReferencePictures);
+
+ invokeEndElement (pctxt, "spareReferencePictures", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263ModeComboFlags */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H263ModeComboFlags (OOCTXT* pctxt, H245H263ModeComboFlags* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode unrestrictedVector */
+
+ invokeStartElement (pctxt, "unrestrictedVector", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->unrestrictedVector);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->unrestrictedVector);
+
+ invokeEndElement (pctxt, "unrestrictedVector", -1);
+
+ /* decode arithmeticCoding */
+
+ invokeStartElement (pctxt, "arithmeticCoding", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->arithmeticCoding);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->arithmeticCoding);
+
+ invokeEndElement (pctxt, "arithmeticCoding", -1);
+
+ /* decode advancedPrediction */
+
+ invokeStartElement (pctxt, "advancedPrediction", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->advancedPrediction);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->advancedPrediction);
+
+ invokeEndElement (pctxt, "advancedPrediction", -1);
+
+ /* decode pbFrames */
+
+ invokeStartElement (pctxt, "pbFrames", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->pbFrames);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->pbFrames);
+
+ invokeEndElement (pctxt, "pbFrames", -1);
+
+ /* decode advancedIntraCodingMode */
+
+ invokeStartElement (pctxt, "advancedIntraCodingMode", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->advancedIntraCodingMode);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->advancedIntraCodingMode);
+
+ invokeEndElement (pctxt, "advancedIntraCodingMode", -1);
+
+ /* decode deblockingFilterMode */
+
+ invokeStartElement (pctxt, "deblockingFilterMode", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->deblockingFilterMode);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->deblockingFilterMode);
+
+ invokeEndElement (pctxt, "deblockingFilterMode", -1);
+
+ /* decode unlimitedMotionVectors */
+
+ invokeStartElement (pctxt, "unlimitedMotionVectors", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->unlimitedMotionVectors);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->unlimitedMotionVectors);
+
+ invokeEndElement (pctxt, "unlimitedMotionVectors", -1);
+
+ /* decode slicesInOrder_NonRect */
+
+ invokeStartElement (pctxt, "slicesInOrder_NonRect", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->slicesInOrder_NonRect);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->slicesInOrder_NonRect);
+
+ invokeEndElement (pctxt, "slicesInOrder_NonRect", -1);
+
+ /* decode slicesInOrder_Rect */
+
+ invokeStartElement (pctxt, "slicesInOrder_Rect", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->slicesInOrder_Rect);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->slicesInOrder_Rect);
+
+ invokeEndElement (pctxt, "slicesInOrder_Rect", -1);
+
+ /* decode slicesNoOrder_NonRect */
+
+ invokeStartElement (pctxt, "slicesNoOrder_NonRect", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->slicesNoOrder_NonRect);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->slicesNoOrder_NonRect);
+
+ invokeEndElement (pctxt, "slicesNoOrder_NonRect", -1);
+
+ /* decode slicesNoOrder_Rect */
+
+ invokeStartElement (pctxt, "slicesNoOrder_Rect", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->slicesNoOrder_Rect);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->slicesNoOrder_Rect);
+
+ invokeEndElement (pctxt, "slicesNoOrder_Rect", -1);
+
+ /* decode improvedPBFramesMode */
+
+ invokeStartElement (pctxt, "improvedPBFramesMode", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->improvedPBFramesMode);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->improvedPBFramesMode);
+
+ invokeEndElement (pctxt, "improvedPBFramesMode", -1);
+
+ /* decode referencePicSelect */
+
+ invokeStartElement (pctxt, "referencePicSelect", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->referencePicSelect);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->referencePicSelect);
+
+ invokeEndElement (pctxt, "referencePicSelect", -1);
+
+ /* decode dynamicPictureResizingByFour */
+
+ invokeStartElement (pctxt, "dynamicPictureResizingByFour", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dynamicPictureResizingByFour);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dynamicPictureResizingByFour);
+
+ invokeEndElement (pctxt, "dynamicPictureResizingByFour", -1);
+
+ /* decode dynamicPictureResizingSixteenthPel */
+
+ invokeStartElement (pctxt, "dynamicPictureResizingSixteenthPel", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dynamicPictureResizingSixteenthPel);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dynamicPictureResizingSixteenthPel);
+
+ invokeEndElement (pctxt, "dynamicPictureResizingSixteenthPel", -1);
+
+ /* decode dynamicWarpingHalfPel */
+
+ invokeStartElement (pctxt, "dynamicWarpingHalfPel", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dynamicWarpingHalfPel);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dynamicWarpingHalfPel);
+
+ invokeEndElement (pctxt, "dynamicWarpingHalfPel", -1);
+
+ /* decode dynamicWarpingSixteenthPel */
+
+ invokeStartElement (pctxt, "dynamicWarpingSixteenthPel", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dynamicWarpingSixteenthPel);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dynamicWarpingSixteenthPel);
+
+ invokeEndElement (pctxt, "dynamicWarpingSixteenthPel", -1);
+
+ /* decode reducedResolutionUpdate */
+
+ invokeStartElement (pctxt, "reducedResolutionUpdate", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->reducedResolutionUpdate);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->reducedResolutionUpdate);
+
+ invokeEndElement (pctxt, "reducedResolutionUpdate", -1);
+
+ /* decode independentSegmentDecoding */
+
+ invokeStartElement (pctxt, "independentSegmentDecoding", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->independentSegmentDecoding);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->independentSegmentDecoding);
+
+ invokeEndElement (pctxt, "independentSegmentDecoding", -1);
+
+ /* decode alternateInterVLCMode */
+
+ invokeStartElement (pctxt, "alternateInterVLCMode", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->alternateInterVLCMode);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->alternateInterVLCMode);
+
+ invokeEndElement (pctxt, "alternateInterVLCMode", -1);
+
+ /* decode modifiedQuantizationMode */
+
+ invokeStartElement (pctxt, "modifiedQuantizationMode", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->modifiedQuantizationMode);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->modifiedQuantizationMode);
+
+ invokeEndElement (pctxt, "modifiedQuantizationMode", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.enhancedReferencePicSelectPresent = 1;
+
+ invokeStartElement (pctxt, "enhancedReferencePicSelect", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->enhancedReferencePicSelect);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->enhancedReferencePicSelect);
+
+ invokeEndElement (pctxt, "enhancedReferencePicSelect", -1);
+ break;
+
+ case 1:
+ pvalue->m.h263Version3OptionsPresent = 1;
+
+ invokeStartElement (pctxt, "h263Version3Options", -1);
+
+ stat = asn1PD_H245H263Version3Options (pctxt, &pvalue->h263Version3Options);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h263Version3Options", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263VideoModeCombos_h263VideoCoupledModes */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H263VideoModeCombos_h263VideoCoupledModes (OOCTXT* pctxt, H245H263VideoModeCombos_h263VideoCoupledModes* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ H245H263ModeComboFlags* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245H263ModeComboFlags);
+
+ stat = asn1PD_H245H263ModeComboFlags (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263VideoModeCombos */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H263VideoModeCombos (OOCTXT* pctxt, H245H263VideoModeCombos* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode h263VideoUncoupledModes */
+
+ invokeStartElement (pctxt, "h263VideoUncoupledModes", -1);
+
+ stat = asn1PD_H245H263ModeComboFlags (pctxt, &pvalue->h263VideoUncoupledModes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h263VideoUncoupledModes", -1);
+
+ /* decode h263VideoCoupledModes */
+
+ invokeStartElement (pctxt, "h263VideoCoupledModes", -1);
+
+ stat = asn1PD_H245H263VideoModeCombos_h263VideoCoupledModes (pctxt, &pvalue->h263VideoCoupledModes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h263VideoCoupledModes", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263Options_modeCombos */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H263Options_modeCombos (OOCTXT* pctxt, H245H263Options_modeCombos* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ H245H263VideoModeCombos* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245H263VideoModeCombos);
+
+ stat = asn1PD_H245H263VideoModeCombos (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263Options */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H263Options (OOCTXT* pctxt, H245H263Options* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.transparencyParametersPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.refPictureSelectionPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.customPictureClockFrequencyPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.customPictureFormatPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.modeCombosPresent = optbit;
+
+ /* decode advancedIntraCodingMode */
+
+ invokeStartElement (pctxt, "advancedIntraCodingMode", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->advancedIntraCodingMode);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->advancedIntraCodingMode);
+
+ invokeEndElement (pctxt, "advancedIntraCodingMode", -1);
+
+ /* decode deblockingFilterMode */
+
+ invokeStartElement (pctxt, "deblockingFilterMode", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->deblockingFilterMode);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->deblockingFilterMode);
+
+ invokeEndElement (pctxt, "deblockingFilterMode", -1);
+
+ /* decode improvedPBFramesMode */
+
+ invokeStartElement (pctxt, "improvedPBFramesMode", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->improvedPBFramesMode);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->improvedPBFramesMode);
+
+ invokeEndElement (pctxt, "improvedPBFramesMode", -1);
+
+ /* decode unlimitedMotionVectors */
+
+ invokeStartElement (pctxt, "unlimitedMotionVectors", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->unlimitedMotionVectors);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->unlimitedMotionVectors);
+
+ invokeEndElement (pctxt, "unlimitedMotionVectors", -1);
+
+ /* decode fullPictureFreeze */
+
+ invokeStartElement (pctxt, "fullPictureFreeze", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->fullPictureFreeze);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->fullPictureFreeze);
+
+ invokeEndElement (pctxt, "fullPictureFreeze", -1);
+
+ /* decode partialPictureFreezeAndRelease */
+
+ invokeStartElement (pctxt, "partialPictureFreezeAndRelease", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->partialPictureFreezeAndRelease);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->partialPictureFreezeAndRelease);
+
+ invokeEndElement (pctxt, "partialPictureFreezeAndRelease", -1);
+
+ /* decode resizingPartPicFreezeAndRelease */
+
+ invokeStartElement (pctxt, "resizingPartPicFreezeAndRelease", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->resizingPartPicFreezeAndRelease);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->resizingPartPicFreezeAndRelease);
+
+ invokeEndElement (pctxt, "resizingPartPicFreezeAndRelease", -1);
+
+ /* decode fullPictureSnapshot */
+
+ invokeStartElement (pctxt, "fullPictureSnapshot", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->fullPictureSnapshot);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->fullPictureSnapshot);
+
+ invokeEndElement (pctxt, "fullPictureSnapshot", -1);
+
+ /* decode partialPictureSnapshot */
+
+ invokeStartElement (pctxt, "partialPictureSnapshot", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->partialPictureSnapshot);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->partialPictureSnapshot);
+
+ invokeEndElement (pctxt, "partialPictureSnapshot", -1);
+
+ /* decode videoSegmentTagging */
+
+ invokeStartElement (pctxt, "videoSegmentTagging", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->videoSegmentTagging);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->videoSegmentTagging);
+
+ invokeEndElement (pctxt, "videoSegmentTagging", -1);
+
+ /* decode progressiveRefinement */
+
+ invokeStartElement (pctxt, "progressiveRefinement", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->progressiveRefinement);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->progressiveRefinement);
+
+ invokeEndElement (pctxt, "progressiveRefinement", -1);
+
+ /* decode dynamicPictureResizingByFour */
+
+ invokeStartElement (pctxt, "dynamicPictureResizingByFour", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dynamicPictureResizingByFour);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dynamicPictureResizingByFour);
+
+ invokeEndElement (pctxt, "dynamicPictureResizingByFour", -1);
+
+ /* decode dynamicPictureResizingSixteenthPel */
+
+ invokeStartElement (pctxt, "dynamicPictureResizingSixteenthPel", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dynamicPictureResizingSixteenthPel);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dynamicPictureResizingSixteenthPel);
+
+ invokeEndElement (pctxt, "dynamicPictureResizingSixteenthPel", -1);
+
+ /* decode dynamicWarpingHalfPel */
+
+ invokeStartElement (pctxt, "dynamicWarpingHalfPel", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dynamicWarpingHalfPel);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dynamicWarpingHalfPel);
+
+ invokeEndElement (pctxt, "dynamicWarpingHalfPel", -1);
+
+ /* decode dynamicWarpingSixteenthPel */
+
+ invokeStartElement (pctxt, "dynamicWarpingSixteenthPel", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->dynamicWarpingSixteenthPel);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->dynamicWarpingSixteenthPel);
+
+ invokeEndElement (pctxt, "dynamicWarpingSixteenthPel", -1);
+
+ /* decode independentSegmentDecoding */
+
+ invokeStartElement (pctxt, "independentSegmentDecoding", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->independentSegmentDecoding);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->independentSegmentDecoding);
+
+ invokeEndElement (pctxt, "independentSegmentDecoding", -1);
+
+ /* decode slicesInOrder_NonRect */
+
+ invokeStartElement (pctxt, "slicesInOrder_NonRect", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->slicesInOrder_NonRect);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->slicesInOrder_NonRect);
+
+ invokeEndElement (pctxt, "slicesInOrder_NonRect", -1);
+
+ /* decode slicesInOrder_Rect */
+
+ invokeStartElement (pctxt, "slicesInOrder_Rect", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->slicesInOrder_Rect);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->slicesInOrder_Rect);
+
+ invokeEndElement (pctxt, "slicesInOrder_Rect", -1);
+
+ /* decode slicesNoOrder_NonRect */
+
+ invokeStartElement (pctxt, "slicesNoOrder_NonRect", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->slicesNoOrder_NonRect);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->slicesNoOrder_NonRect);
+
+ invokeEndElement (pctxt, "slicesNoOrder_NonRect", -1);
+
+ /* decode slicesNoOrder_Rect */
+
+ invokeStartElement (pctxt, "slicesNoOrder_Rect", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->slicesNoOrder_Rect);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->slicesNoOrder_Rect);
+
+ invokeEndElement (pctxt, "slicesNoOrder_Rect", -1);
+
+ /* decode alternateInterVLCMode */
+
+ invokeStartElement (pctxt, "alternateInterVLCMode", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->alternateInterVLCMode);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->alternateInterVLCMode);
+
+ invokeEndElement (pctxt, "alternateInterVLCMode", -1);
+
+ /* decode modifiedQuantizationMode */
+
+ invokeStartElement (pctxt, "modifiedQuantizationMode", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->modifiedQuantizationMode);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->modifiedQuantizationMode);
+
+ invokeEndElement (pctxt, "modifiedQuantizationMode", -1);
+
+ /* decode reducedResolutionUpdate */
+
+ invokeStartElement (pctxt, "reducedResolutionUpdate", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->reducedResolutionUpdate);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->reducedResolutionUpdate);
+
+ invokeEndElement (pctxt, "reducedResolutionUpdate", -1);
+
+ /* decode transparencyParameters */
+
+ if (pvalue->m.transparencyParametersPresent) {
+ invokeStartElement (pctxt, "transparencyParameters", -1);
+
+ stat = asn1PD_H245TransparencyParameters (pctxt, &pvalue->transparencyParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transparencyParameters", -1);
+ }
+
+ /* decode separateVideoBackChannel */
+
+ invokeStartElement (pctxt, "separateVideoBackChannel", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->separateVideoBackChannel);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->separateVideoBackChannel);
+
+ invokeEndElement (pctxt, "separateVideoBackChannel", -1);
+
+ /* decode refPictureSelection */
+
+ if (pvalue->m.refPictureSelectionPresent) {
+ invokeStartElement (pctxt, "refPictureSelection", -1);
+
+ stat = asn1PD_H245RefPictureSelection (pctxt, &pvalue->refPictureSelection);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "refPictureSelection", -1);
+ }
+
+ /* decode customPictureClockFrequency */
+
+ if (pvalue->m.customPictureClockFrequencyPresent) {
+ invokeStartElement (pctxt, "customPictureClockFrequency", -1);
+
+ stat = asn1PD_H245H263Options_customPictureClockFrequency (pctxt, &pvalue->customPictureClockFrequency);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "customPictureClockFrequency", -1);
+ }
+
+ /* decode customPictureFormat */
+
+ if (pvalue->m.customPictureFormatPresent) {
+ invokeStartElement (pctxt, "customPictureFormat", -1);
+
+ stat = asn1PD_H245H263Options_customPictureFormat (pctxt, &pvalue->customPictureFormat);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "customPictureFormat", -1);
+ }
+
+ /* decode modeCombos */
+
+ if (pvalue->m.modeCombosPresent) {
+ invokeStartElement (pctxt, "modeCombos", -1);
+
+ stat = asn1PD_H245H263Options_modeCombos (pctxt, &pvalue->modeCombos);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "modeCombos", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.videoBadMBsCapPresent = 1;
+
+ invokeStartElement (pctxt, "videoBadMBsCap", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->videoBadMBsCap);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->videoBadMBsCap);
+
+ invokeEndElement (pctxt, "videoBadMBsCap", -1);
+ break;
+
+ case 1:
+ pvalue->m.h263Version3OptionsPresent = 1;
+
+ invokeStartElement (pctxt, "h263Version3Options", -1);
+
+ stat = asn1PD_H245H263Version3Options (pctxt, &pvalue->h263Version3Options);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h263Version3Options", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EnhancementOptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EnhancementOptions (OOCTXT* pctxt, H245EnhancementOptions* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.sqcifMPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.qcifMPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cifMPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cif4MPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cif16MPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.slowSqcifMPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.slowQcifMPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.slowCifMPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.slowCif4MPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.slowCif16MPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h263OptionsPresent = optbit;
+
+ /* decode sqcifMPI */
+
+ if (pvalue->m.sqcifMPIPresent) {
+ invokeStartElement (pctxt, "sqcifMPI", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->sqcifMPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sqcifMPI);
+
+ invokeEndElement (pctxt, "sqcifMPI", -1);
+ }
+
+ /* decode qcifMPI */
+
+ if (pvalue->m.qcifMPIPresent) {
+ invokeStartElement (pctxt, "qcifMPI", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->qcifMPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->qcifMPI);
+
+ invokeEndElement (pctxt, "qcifMPI", -1);
+ }
+
+ /* decode cifMPI */
+
+ if (pvalue->m.cifMPIPresent) {
+ invokeStartElement (pctxt, "cifMPI", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->cifMPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->cifMPI);
+
+ invokeEndElement (pctxt, "cifMPI", -1);
+ }
+
+ /* decode cif4MPI */
+
+ if (pvalue->m.cif4MPIPresent) {
+ invokeStartElement (pctxt, "cif4MPI", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->cif4MPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->cif4MPI);
+
+ invokeEndElement (pctxt, "cif4MPI", -1);
+ }
+
+ /* decode cif16MPI */
+
+ if (pvalue->m.cif16MPIPresent) {
+ invokeStartElement (pctxt, "cif16MPI", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->cif16MPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->cif16MPI);
+
+ invokeEndElement (pctxt, "cif16MPI", -1);
+ }
+
+ /* decode maxBitRate */
+
+ invokeStartElement (pctxt, "maxBitRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->maxBitRate, 1U, 192400U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maxBitRate);
+
+ invokeEndElement (pctxt, "maxBitRate", -1);
+
+ /* decode unrestrictedVector */
+
+ invokeStartElement (pctxt, "unrestrictedVector", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->unrestrictedVector);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->unrestrictedVector);
+
+ invokeEndElement (pctxt, "unrestrictedVector", -1);
+
+ /* decode arithmeticCoding */
+
+ invokeStartElement (pctxt, "arithmeticCoding", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->arithmeticCoding);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->arithmeticCoding);
+
+ invokeEndElement (pctxt, "arithmeticCoding", -1);
+
+ /* decode temporalSpatialTradeOffCapability */
+
+ invokeStartElement (pctxt, "temporalSpatialTradeOffCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->temporalSpatialTradeOffCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->temporalSpatialTradeOffCapability);
+
+ invokeEndElement (pctxt, "temporalSpatialTradeOffCapability", -1);
+
+ /* decode slowSqcifMPI */
+
+ if (pvalue->m.slowSqcifMPIPresent) {
+ invokeStartElement (pctxt, "slowSqcifMPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->slowSqcifMPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->slowSqcifMPI);
+
+ invokeEndElement (pctxt, "slowSqcifMPI", -1);
+ }
+
+ /* decode slowQcifMPI */
+
+ if (pvalue->m.slowQcifMPIPresent) {
+ invokeStartElement (pctxt, "slowQcifMPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->slowQcifMPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->slowQcifMPI);
+
+ invokeEndElement (pctxt, "slowQcifMPI", -1);
+ }
+
+ /* decode slowCifMPI */
+
+ if (pvalue->m.slowCifMPIPresent) {
+ invokeStartElement (pctxt, "slowCifMPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->slowCifMPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->slowCifMPI);
+
+ invokeEndElement (pctxt, "slowCifMPI", -1);
+ }
+
+ /* decode slowCif4MPI */
+
+ if (pvalue->m.slowCif4MPIPresent) {
+ invokeStartElement (pctxt, "slowCif4MPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->slowCif4MPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->slowCif4MPI);
+
+ invokeEndElement (pctxt, "slowCif4MPI", -1);
+ }
+
+ /* decode slowCif16MPI */
+
+ if (pvalue->m.slowCif16MPIPresent) {
+ invokeStartElement (pctxt, "slowCif16MPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->slowCif16MPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->slowCif16MPI);
+
+ invokeEndElement (pctxt, "slowCif16MPI", -1);
+ }
+
+ /* decode errorCompensation */
+
+ invokeStartElement (pctxt, "errorCompensation", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->errorCompensation);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->errorCompensation);
+
+ invokeEndElement (pctxt, "errorCompensation", -1);
+
+ /* decode h263Options */
+
+ if (pvalue->m.h263OptionsPresent) {
+ invokeStartElement (pctxt, "h263Options", -1);
+
+ stat = asn1PD_H245H263Options (pctxt, &pvalue->h263Options);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h263Options", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EnhancementLayerInfo_snrEnhancement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EnhancementLayerInfo_snrEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_snrEnhancement* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 14, 0 };
+ int stat = ASN_OK;
+ H245EnhancementOptions* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245EnhancementOptions);
+
+ stat = asn1PD_H245EnhancementOptions (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EnhancementLayerInfo_spatialEnhancement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EnhancementLayerInfo_spatialEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_spatialEnhancement* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 14, 0 };
+ int stat = ASN_OK;
+ H245EnhancementOptions* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245EnhancementOptions);
+
+ stat = asn1PD_H245EnhancementOptions (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BEnhancementParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245BEnhancementParameters (OOCTXT* pctxt, H245BEnhancementParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode enhancementOptions */
+
+ invokeStartElement (pctxt, "enhancementOptions", -1);
+
+ stat = asn1PD_H245EnhancementOptions (pctxt, &pvalue->enhancementOptions);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "enhancementOptions", -1);
+
+ /* decode numberOfBPictures */
+
+ invokeStartElement (pctxt, "numberOfBPictures", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->numberOfBPictures, 1U, 64U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->numberOfBPictures);
+
+ invokeEndElement (pctxt, "numberOfBPictures", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EnhancementLayerInfo_bPictureEnhancement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EnhancementLayerInfo_bPictureEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_bPictureEnhancement* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 14, 0 };
+ int stat = ASN_OK;
+ H245BEnhancementParameters* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245BEnhancementParameters);
+
+ stat = asn1PD_H245BEnhancementParameters (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EnhancementLayerInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EnhancementLayerInfo (OOCTXT* pctxt, H245EnhancementLayerInfo* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.snrEnhancementPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.spatialEnhancementPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.bPictureEnhancementPresent = optbit;
+
+ /* decode baseBitRateConstrained */
+
+ invokeStartElement (pctxt, "baseBitRateConstrained", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->baseBitRateConstrained);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->baseBitRateConstrained);
+
+ invokeEndElement (pctxt, "baseBitRateConstrained", -1);
+
+ /* decode snrEnhancement */
+
+ if (pvalue->m.snrEnhancementPresent) {
+ invokeStartElement (pctxt, "snrEnhancement", -1);
+
+ stat = asn1PD_H245EnhancementLayerInfo_snrEnhancement (pctxt, &pvalue->snrEnhancement);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "snrEnhancement", -1);
+ }
+
+ /* decode spatialEnhancement */
+
+ if (pvalue->m.spatialEnhancementPresent) {
+ invokeStartElement (pctxt, "spatialEnhancement", -1);
+
+ stat = asn1PD_H245EnhancementLayerInfo_spatialEnhancement (pctxt, &pvalue->spatialEnhancement);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "spatialEnhancement", -1);
+ }
+
+ /* decode bPictureEnhancement */
+
+ if (pvalue->m.bPictureEnhancementPresent) {
+ invokeStartElement (pctxt, "bPictureEnhancement", -1);
+
+ stat = asn1PD_H245EnhancementLayerInfo_bPictureEnhancement (pctxt, &pvalue->bPictureEnhancement);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "bPictureEnhancement", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263VideoCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H263VideoCapability (OOCTXT* pctxt, H245H263VideoCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.sqcifMPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.qcifMPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cifMPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cif4MPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.cif16MPIPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.hrd_BPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.bppMaxKbPresent = optbit;
+
+ /* decode sqcifMPI */
+
+ if (pvalue->m.sqcifMPIPresent) {
+ invokeStartElement (pctxt, "sqcifMPI", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->sqcifMPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sqcifMPI);
+
+ invokeEndElement (pctxt, "sqcifMPI", -1);
+ }
+
+ /* decode qcifMPI */
+
+ if (pvalue->m.qcifMPIPresent) {
+ invokeStartElement (pctxt, "qcifMPI", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->qcifMPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->qcifMPI);
+
+ invokeEndElement (pctxt, "qcifMPI", -1);
+ }
+
+ /* decode cifMPI */
+
+ if (pvalue->m.cifMPIPresent) {
+ invokeStartElement (pctxt, "cifMPI", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->cifMPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->cifMPI);
+
+ invokeEndElement (pctxt, "cifMPI", -1);
+ }
+
+ /* decode cif4MPI */
+
+ if (pvalue->m.cif4MPIPresent) {
+ invokeStartElement (pctxt, "cif4MPI", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->cif4MPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->cif4MPI);
+
+ invokeEndElement (pctxt, "cif4MPI", -1);
+ }
+
+ /* decode cif16MPI */
+
+ if (pvalue->m.cif16MPIPresent) {
+ invokeStartElement (pctxt, "cif16MPI", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->cif16MPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->cif16MPI);
+
+ invokeEndElement (pctxt, "cif16MPI", -1);
+ }
+
+ /* decode maxBitRate */
+
+ invokeStartElement (pctxt, "maxBitRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->maxBitRate, 1U, 192400U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maxBitRate);
+
+ invokeEndElement (pctxt, "maxBitRate", -1);
+
+ /* decode unrestrictedVector */
+
+ invokeStartElement (pctxt, "unrestrictedVector", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->unrestrictedVector);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->unrestrictedVector);
+
+ invokeEndElement (pctxt, "unrestrictedVector", -1);
+
+ /* decode arithmeticCoding */
+
+ invokeStartElement (pctxt, "arithmeticCoding", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->arithmeticCoding);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->arithmeticCoding);
+
+ invokeEndElement (pctxt, "arithmeticCoding", -1);
+
+ /* decode advancedPrediction */
+
+ invokeStartElement (pctxt, "advancedPrediction", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->advancedPrediction);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->advancedPrediction);
+
+ invokeEndElement (pctxt, "advancedPrediction", -1);
+
+ /* decode pbFrames */
+
+ invokeStartElement (pctxt, "pbFrames", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->pbFrames);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->pbFrames);
+
+ invokeEndElement (pctxt, "pbFrames", -1);
+
+ /* decode temporalSpatialTradeOffCapability */
+
+ invokeStartElement (pctxt, "temporalSpatialTradeOffCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->temporalSpatialTradeOffCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->temporalSpatialTradeOffCapability);
+
+ invokeEndElement (pctxt, "temporalSpatialTradeOffCapability", -1);
+
+ /* decode hrd_B */
+
+ if (pvalue->m.hrd_BPresent) {
+ invokeStartElement (pctxt, "hrd_B", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->hrd_B, 0U, 524287U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->hrd_B);
+
+ invokeEndElement (pctxt, "hrd_B", -1);
+ }
+
+ /* decode bppMaxKb */
+
+ if (pvalue->m.bppMaxKbPresent) {
+ invokeStartElement (pctxt, "bppMaxKb", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->bppMaxKb, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bppMaxKb);
+
+ invokeEndElement (pctxt, "bppMaxKb", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 8 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.slowSqcifMPIPresent = 1;
+
+ invokeStartElement (pctxt, "slowSqcifMPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->slowSqcifMPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->slowSqcifMPI);
+
+ invokeEndElement (pctxt, "slowSqcifMPI", -1);
+ break;
+
+ case 1:
+ pvalue->m.slowQcifMPIPresent = 1;
+
+ invokeStartElement (pctxt, "slowQcifMPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->slowQcifMPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->slowQcifMPI);
+
+ invokeEndElement (pctxt, "slowQcifMPI", -1);
+ break;
+
+ case 2:
+ pvalue->m.slowCifMPIPresent = 1;
+
+ invokeStartElement (pctxt, "slowCifMPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->slowCifMPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->slowCifMPI);
+
+ invokeEndElement (pctxt, "slowCifMPI", -1);
+ break;
+
+ case 3:
+ pvalue->m.slowCif4MPIPresent = 1;
+
+ invokeStartElement (pctxt, "slowCif4MPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->slowCif4MPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->slowCif4MPI);
+
+ invokeEndElement (pctxt, "slowCif4MPI", -1);
+ break;
+
+ case 4:
+ pvalue->m.slowCif16MPIPresent = 1;
+
+ invokeStartElement (pctxt, "slowCif16MPI", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->slowCif16MPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->slowCif16MPI);
+
+ invokeEndElement (pctxt, "slowCif16MPI", -1);
+ break;
+
+ case 5:
+ pvalue->m.errorCompensationPresent = 1;
+
+ invokeStartElement (pctxt, "errorCompensation", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->errorCompensation);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->errorCompensation);
+
+ invokeEndElement (pctxt, "errorCompensation", -1);
+ break;
+
+ case 6:
+ pvalue->m.enhancementLayerInfoPresent = 1;
+
+ invokeStartElement (pctxt, "enhancementLayerInfo", -1);
+
+ stat = asn1PD_H245EnhancementLayerInfo (pctxt, &pvalue->enhancementLayerInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "enhancementLayerInfo", -1);
+ break;
+
+ case 7:
+ pvalue->m.h263OptionsPresent = 1;
+
+ invokeStartElement (pctxt, "h263Options", -1);
+
+ stat = asn1PD_H245H263Options (pctxt, &pvalue->h263Options);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h263Options", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS11172VideoCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245IS11172VideoCapability (OOCTXT* pctxt, H245IS11172VideoCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.videoBitRatePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.vbvBufferSizePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.samplesPerLinePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.linesPerFramePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.pictureRatePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.luminanceSampleRatePresent = optbit;
+
+ /* decode constrainedBitstream */
+
+ invokeStartElement (pctxt, "constrainedBitstream", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->constrainedBitstream);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->constrainedBitstream);
+
+ invokeEndElement (pctxt, "constrainedBitstream", -1);
+
+ /* decode videoBitRate */
+
+ if (pvalue->m.videoBitRatePresent) {
+ invokeStartElement (pctxt, "videoBitRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->videoBitRate, 0U, 1073741823U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->videoBitRate);
+
+ invokeEndElement (pctxt, "videoBitRate", -1);
+ }
+
+ /* decode vbvBufferSize */
+
+ if (pvalue->m.vbvBufferSizePresent) {
+ invokeStartElement (pctxt, "vbvBufferSize", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->vbvBufferSize, 0U, 262143U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->vbvBufferSize);
+
+ invokeEndElement (pctxt, "vbvBufferSize", -1);
+ }
+
+ /* decode samplesPerLine */
+
+ if (pvalue->m.samplesPerLinePresent) {
+ invokeStartElement (pctxt, "samplesPerLine", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->samplesPerLine, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->samplesPerLine);
+
+ invokeEndElement (pctxt, "samplesPerLine", -1);
+ }
+
+ /* decode linesPerFrame */
+
+ if (pvalue->m.linesPerFramePresent) {
+ invokeStartElement (pctxt, "linesPerFrame", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->linesPerFrame, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->linesPerFrame);
+
+ invokeEndElement (pctxt, "linesPerFrame", -1);
+ }
+
+ /* decode pictureRate */
+
+ if (pvalue->m.pictureRatePresent) {
+ invokeStartElement (pctxt, "pictureRate", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->pictureRate, 0U, 15U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->pictureRate);
+
+ invokeEndElement (pctxt, "pictureRate", -1);
+ }
+
+ /* decode luminanceSampleRate */
+
+ if (pvalue->m.luminanceSampleRatePresent) {
+ invokeStartElement (pctxt, "luminanceSampleRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->luminanceSampleRate, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->luminanceSampleRate);
+
+ invokeEndElement (pctxt, "luminanceSampleRate", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.videoBadMBsCapPresent = 1;
+
+ invokeStartElement (pctxt, "videoBadMBsCap", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->videoBadMBsCap);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->videoBadMBsCap);
+
+ invokeEndElement (pctxt, "videoBadMBsCap", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VideoCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VideoCapability (OOCTXT* pctxt, H245VideoCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 4);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* h261VideoCapability */
+ case 1:
+ invokeStartElement (pctxt, "h261VideoCapability", -1);
+
+ pvalue->u.h261VideoCapability = ALLOC_ASN1ELEM (pctxt, H245H261VideoCapability);
+
+ stat = asn1PD_H245H261VideoCapability (pctxt, pvalue->u.h261VideoCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h261VideoCapability", -1);
+
+ break;
+
+ /* h262VideoCapability */
+ case 2:
+ invokeStartElement (pctxt, "h262VideoCapability", -1);
+
+ pvalue->u.h262VideoCapability = ALLOC_ASN1ELEM (pctxt, H245H262VideoCapability);
+
+ stat = asn1PD_H245H262VideoCapability (pctxt, pvalue->u.h262VideoCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h262VideoCapability", -1);
+
+ break;
+
+ /* h263VideoCapability */
+ case 3:
+ invokeStartElement (pctxt, "h263VideoCapability", -1);
+
+ pvalue->u.h263VideoCapability = ALLOC_ASN1ELEM (pctxt, H245H263VideoCapability);
+
+ stat = asn1PD_H245H263VideoCapability (pctxt, pvalue->u.h263VideoCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h263VideoCapability", -1);
+
+ break;
+
+ /* is11172VideoCapability */
+ case 4:
+ invokeStartElement (pctxt, "is11172VideoCapability", -1);
+
+ pvalue->u.is11172VideoCapability = ALLOC_ASN1ELEM (pctxt, H245IS11172VideoCapability);
+
+ stat = asn1PD_H245IS11172VideoCapability (pctxt, pvalue->u.is11172VideoCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "is11172VideoCapability", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 6;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* genericVideoCapability */
+ case 6:
+ invokeStartElement (pctxt, "genericVideoCapability", -1);
+
+ pvalue->u.genericVideoCapability = ALLOC_ASN1ELEM (pctxt, H245GenericCapability);
+
+ stat = asn1PD_H245GenericCapability (pctxt, pvalue->u.genericVideoCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericVideoCapability", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AudioCapability_g7231 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245AudioCapability_g7231 (OOCTXT* pctxt, H245AudioCapability_g7231* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode maxAl_sduAudioFrames */
+
+ invokeStartElement (pctxt, "maxAl_sduAudioFrames", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maxAl_sduAudioFrames, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maxAl_sduAudioFrames);
+
+ invokeEndElement (pctxt, "maxAl_sduAudioFrames", -1);
+
+ /* decode silenceSuppression */
+
+ invokeStartElement (pctxt, "silenceSuppression", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->silenceSuppression);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->silenceSuppression);
+
+ invokeEndElement (pctxt, "silenceSuppression", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS11172AudioCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245IS11172AudioCapability (OOCTXT* pctxt, H245IS11172AudioCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode audioLayer1 */
+
+ invokeStartElement (pctxt, "audioLayer1", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioLayer1);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioLayer1);
+
+ invokeEndElement (pctxt, "audioLayer1", -1);
+
+ /* decode audioLayer2 */
+
+ invokeStartElement (pctxt, "audioLayer2", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioLayer2);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioLayer2);
+
+ invokeEndElement (pctxt, "audioLayer2", -1);
+
+ /* decode audioLayer3 */
+
+ invokeStartElement (pctxt, "audioLayer3", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioLayer3);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioLayer3);
+
+ invokeEndElement (pctxt, "audioLayer3", -1);
+
+ /* decode audioSampling32k */
+
+ invokeStartElement (pctxt, "audioSampling32k", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioSampling32k);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioSampling32k);
+
+ invokeEndElement (pctxt, "audioSampling32k", -1);
+
+ /* decode audioSampling44k1 */
+
+ invokeStartElement (pctxt, "audioSampling44k1", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioSampling44k1);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioSampling44k1);
+
+ invokeEndElement (pctxt, "audioSampling44k1", -1);
+
+ /* decode audioSampling48k */
+
+ invokeStartElement (pctxt, "audioSampling48k", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioSampling48k);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioSampling48k);
+
+ invokeEndElement (pctxt, "audioSampling48k", -1);
+
+ /* decode singleChannel */
+
+ invokeStartElement (pctxt, "singleChannel", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->singleChannel);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->singleChannel);
+
+ invokeEndElement (pctxt, "singleChannel", -1);
+
+ /* decode twoChannels */
+
+ invokeStartElement (pctxt, "twoChannels", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->twoChannels);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->twoChannels);
+
+ invokeEndElement (pctxt, "twoChannels", -1);
+
+ /* decode bitRate */
+
+ invokeStartElement (pctxt, "bitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->bitRate, 1U, 448U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bitRate);
+
+ invokeEndElement (pctxt, "bitRate", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS13818AudioCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245IS13818AudioCapability (OOCTXT* pctxt, H245IS13818AudioCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode audioLayer1 */
+
+ invokeStartElement (pctxt, "audioLayer1", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioLayer1);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioLayer1);
+
+ invokeEndElement (pctxt, "audioLayer1", -1);
+
+ /* decode audioLayer2 */
+
+ invokeStartElement (pctxt, "audioLayer2", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioLayer2);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioLayer2);
+
+ invokeEndElement (pctxt, "audioLayer2", -1);
+
+ /* decode audioLayer3 */
+
+ invokeStartElement (pctxt, "audioLayer3", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioLayer3);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioLayer3);
+
+ invokeEndElement (pctxt, "audioLayer3", -1);
+
+ /* decode audioSampling16k */
+
+ invokeStartElement (pctxt, "audioSampling16k", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioSampling16k);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioSampling16k);
+
+ invokeEndElement (pctxt, "audioSampling16k", -1);
+
+ /* decode audioSampling22k05 */
+
+ invokeStartElement (pctxt, "audioSampling22k05", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioSampling22k05);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioSampling22k05);
+
+ invokeEndElement (pctxt, "audioSampling22k05", -1);
+
+ /* decode audioSampling24k */
+
+ invokeStartElement (pctxt, "audioSampling24k", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioSampling24k);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioSampling24k);
+
+ invokeEndElement (pctxt, "audioSampling24k", -1);
+
+ /* decode audioSampling32k */
+
+ invokeStartElement (pctxt, "audioSampling32k", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioSampling32k);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioSampling32k);
+
+ invokeEndElement (pctxt, "audioSampling32k", -1);
+
+ /* decode audioSampling44k1 */
+
+ invokeStartElement (pctxt, "audioSampling44k1", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioSampling44k1);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioSampling44k1);
+
+ invokeEndElement (pctxt, "audioSampling44k1", -1);
+
+ /* decode audioSampling48k */
+
+ invokeStartElement (pctxt, "audioSampling48k", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioSampling48k);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioSampling48k);
+
+ invokeEndElement (pctxt, "audioSampling48k", -1);
+
+ /* decode singleChannel */
+
+ invokeStartElement (pctxt, "singleChannel", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->singleChannel);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->singleChannel);
+
+ invokeEndElement (pctxt, "singleChannel", -1);
+
+ /* decode twoChannels */
+
+ invokeStartElement (pctxt, "twoChannels", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->twoChannels);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->twoChannels);
+
+ invokeEndElement (pctxt, "twoChannels", -1);
+
+ /* decode threeChannels2_1 */
+
+ invokeStartElement (pctxt, "threeChannels2_1", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->threeChannels2_1);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->threeChannels2_1);
+
+ invokeEndElement (pctxt, "threeChannels2_1", -1);
+
+ /* decode threeChannels3_0 */
+
+ invokeStartElement (pctxt, "threeChannels3_0", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->threeChannels3_0);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->threeChannels3_0);
+
+ invokeEndElement (pctxt, "threeChannels3_0", -1);
+
+ /* decode fourChannels2_0_2_0 */
+
+ invokeStartElement (pctxt, "fourChannels2_0_2_0", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->fourChannels2_0_2_0);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->fourChannels2_0_2_0);
+
+ invokeEndElement (pctxt, "fourChannels2_0_2_0", -1);
+
+ /* decode fourChannels2_2 */
+
+ invokeStartElement (pctxt, "fourChannels2_2", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->fourChannels2_2);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->fourChannels2_2);
+
+ invokeEndElement (pctxt, "fourChannels2_2", -1);
+
+ /* decode fourChannels3_1 */
+
+ invokeStartElement (pctxt, "fourChannels3_1", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->fourChannels3_1);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->fourChannels3_1);
+
+ invokeEndElement (pctxt, "fourChannels3_1", -1);
+
+ /* decode fiveChannels3_0_2_0 */
+
+ invokeStartElement (pctxt, "fiveChannels3_0_2_0", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->fiveChannels3_0_2_0);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->fiveChannels3_0_2_0);
+
+ invokeEndElement (pctxt, "fiveChannels3_0_2_0", -1);
+
+ /* decode fiveChannels3_2 */
+
+ invokeStartElement (pctxt, "fiveChannels3_2", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->fiveChannels3_2);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->fiveChannels3_2);
+
+ invokeEndElement (pctxt, "fiveChannels3_2", -1);
+
+ /* decode lowFrequencyEnhancement */
+
+ invokeStartElement (pctxt, "lowFrequencyEnhancement", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->lowFrequencyEnhancement);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->lowFrequencyEnhancement);
+
+ invokeEndElement (pctxt, "lowFrequencyEnhancement", -1);
+
+ /* decode multilingual */
+
+ invokeStartElement (pctxt, "multilingual", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multilingual);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multilingual);
+
+ invokeEndElement (pctxt, "multilingual", -1);
+
+ /* decode bitRate */
+
+ invokeStartElement (pctxt, "bitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->bitRate, 1U, 1130U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bitRate);
+
+ invokeEndElement (pctxt, "bitRate", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* G7231AnnexCCapability_g723AnnexCAudioMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245G7231AnnexCCapability_g723AnnexCAudioMode (OOCTXT* pctxt, H245G7231AnnexCCapability_g723AnnexCAudioMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode highRateMode0 */
+
+ invokeStartElement (pctxt, "highRateMode0", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->highRateMode0, 27U, 78U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->highRateMode0);
+
+ invokeEndElement (pctxt, "highRateMode0", -1);
+
+ /* decode highRateMode1 */
+
+ invokeStartElement (pctxt, "highRateMode1", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->highRateMode1, 27U, 78U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->highRateMode1);
+
+ invokeEndElement (pctxt, "highRateMode1", -1);
+
+ /* decode lowRateMode0 */
+
+ invokeStartElement (pctxt, "lowRateMode0", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->lowRateMode0, 23U, 66U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->lowRateMode0);
+
+ invokeEndElement (pctxt, "lowRateMode0", -1);
+
+ /* decode lowRateMode1 */
+
+ invokeStartElement (pctxt, "lowRateMode1", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->lowRateMode1, 23U, 66U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->lowRateMode1);
+
+ invokeEndElement (pctxt, "lowRateMode1", -1);
+
+ /* decode sidMode0 */
+
+ invokeStartElement (pctxt, "sidMode0", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->sidMode0, 6U, 17U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sidMode0);
+
+ invokeEndElement (pctxt, "sidMode0", -1);
+
+ /* decode sidMode1 */
+
+ invokeStartElement (pctxt, "sidMode1", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->sidMode1, 6U, 17U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sidMode1);
+
+ invokeEndElement (pctxt, "sidMode1", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* G7231AnnexCCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245G7231AnnexCCapability (OOCTXT* pctxt, H245G7231AnnexCCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.g723AnnexCAudioModePresent = optbit;
+
+ /* decode maxAl_sduAudioFrames */
+
+ invokeStartElement (pctxt, "maxAl_sduAudioFrames", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maxAl_sduAudioFrames, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maxAl_sduAudioFrames);
+
+ invokeEndElement (pctxt, "maxAl_sduAudioFrames", -1);
+
+ /* decode silenceSuppression */
+
+ invokeStartElement (pctxt, "silenceSuppression", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->silenceSuppression);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->silenceSuppression);
+
+ invokeEndElement (pctxt, "silenceSuppression", -1);
+
+ /* decode g723AnnexCAudioMode */
+
+ if (pvalue->m.g723AnnexCAudioModePresent) {
+ invokeStartElement (pctxt, "g723AnnexCAudioMode", -1);
+
+ stat = asn1PD_H245G7231AnnexCCapability_g723AnnexCAudioMode (pctxt, &pvalue->g723AnnexCAudioMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "g723AnnexCAudioMode", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GSMAudioCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245GSMAudioCapability (OOCTXT* pctxt, H245GSMAudioCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode audioUnitSize */
+
+ invokeStartElement (pctxt, "audioUnitSize", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->audioUnitSize, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->audioUnitSize);
+
+ invokeEndElement (pctxt, "audioUnitSize", -1);
+
+ /* decode comfortNoise */
+
+ invokeStartElement (pctxt, "comfortNoise", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->comfortNoise);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->comfortNoise);
+
+ invokeEndElement (pctxt, "comfortNoise", -1);
+
+ /* decode scrambled */
+
+ invokeStartElement (pctxt, "scrambled", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->scrambled);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->scrambled);
+
+ invokeEndElement (pctxt, "scrambled", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* G729Extensions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245G729Extensions (OOCTXT* pctxt, H245G729Extensions* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.audioUnitPresent = optbit;
+
+ /* decode audioUnit */
+
+ if (pvalue->m.audioUnitPresent) {
+ invokeStartElement (pctxt, "audioUnit", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->audioUnit, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->audioUnit);
+
+ invokeEndElement (pctxt, "audioUnit", -1);
+ }
+
+ /* decode annexA */
+
+ invokeStartElement (pctxt, "annexA", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->annexA);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->annexA);
+
+ invokeEndElement (pctxt, "annexA", -1);
+
+ /* decode annexB */
+
+ invokeStartElement (pctxt, "annexB", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->annexB);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->annexB);
+
+ invokeEndElement (pctxt, "annexB", -1);
+
+ /* decode annexD */
+
+ invokeStartElement (pctxt, "annexD", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->annexD);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->annexD);
+
+ invokeEndElement (pctxt, "annexD", -1);
+
+ /* decode annexE */
+
+ invokeStartElement (pctxt, "annexE", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->annexE);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->annexE);
+
+ invokeEndElement (pctxt, "annexE", -1);
+
+ /* decode annexF */
+
+ invokeStartElement (pctxt, "annexF", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->annexF);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->annexF);
+
+ invokeEndElement (pctxt, "annexF", -1);
+
+ /* decode annexG */
+
+ invokeStartElement (pctxt, "annexG", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->annexG);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->annexG);
+
+ invokeEndElement (pctxt, "annexG", -1);
+
+ /* decode annexH */
+
+ invokeStartElement (pctxt, "annexH", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->annexH);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->annexH);
+
+ invokeEndElement (pctxt, "annexH", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VBDCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VBDCapability (OOCTXT* pctxt, H245VBDCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode type */
+
+ invokeStartElement (pctxt, "type", -1);
+
+ pvalue->type = ALLOC_ASN1ELEM (pctxt, H245AudioCapability);
+
+ stat = asn1PD_H245AudioCapability (pctxt, (H245AudioCapability*)pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "type", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NoPTAudioTelephonyEventCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NoPTAudioTelephonyEventCapability (OOCTXT* pctxt, H245NoPTAudioTelephonyEventCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode audioTelephoneEvent */
+
+ invokeStartElement (pctxt, "audioTelephoneEvent", -1);
+
+ stat = decodeVarWidthCharString (pctxt, &pvalue->audioTelephoneEvent);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->audioTelephoneEvent);
+
+ invokeEndElement (pctxt, "audioTelephoneEvent", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NoPTAudioToneCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NoPTAudioToneCapability (OOCTXT* pctxt, H245NoPTAudioToneCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AudioCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245AudioCapability (OOCTXT* pctxt, H245AudioCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 13);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* g711Alaw64k */
+ case 1:
+ invokeStartElement (pctxt, "g711Alaw64k", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.g711Alaw64k, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.g711Alaw64k);
+
+ invokeEndElement (pctxt, "g711Alaw64k", -1);
+
+ break;
+
+ /* g711Alaw56k */
+ case 2:
+ invokeStartElement (pctxt, "g711Alaw56k", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.g711Alaw56k, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.g711Alaw56k);
+
+ invokeEndElement (pctxt, "g711Alaw56k", -1);
+
+ break;
+
+ /* g711Ulaw64k */
+ case 3:
+ invokeStartElement (pctxt, "g711Ulaw64k", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.g711Ulaw64k, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.g711Ulaw64k);
+
+ invokeEndElement (pctxt, "g711Ulaw64k", -1);
+
+ break;
+
+ /* g711Ulaw56k */
+ case 4:
+ invokeStartElement (pctxt, "g711Ulaw56k", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.g711Ulaw56k, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.g711Ulaw56k);
+
+ invokeEndElement (pctxt, "g711Ulaw56k", -1);
+
+ break;
+
+ /* g722_64k */
+ case 5:
+ invokeStartElement (pctxt, "g722_64k", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.g722_64k, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.g722_64k);
+
+ invokeEndElement (pctxt, "g722_64k", -1);
+
+ break;
+
+ /* g722_56k */
+ case 6:
+ invokeStartElement (pctxt, "g722_56k", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.g722_56k, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.g722_56k);
+
+ invokeEndElement (pctxt, "g722_56k", -1);
+
+ break;
+
+ /* g722_48k */
+ case 7:
+ invokeStartElement (pctxt, "g722_48k", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.g722_48k, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.g722_48k);
+
+ invokeEndElement (pctxt, "g722_48k", -1);
+
+ break;
+
+ /* g7231 */
+ case 8:
+ invokeStartElement (pctxt, "g7231", -1);
+
+ pvalue->u.g7231 = ALLOC_ASN1ELEM (pctxt, H245AudioCapability_g7231);
+
+ stat = asn1PD_H245AudioCapability_g7231 (pctxt, pvalue->u.g7231);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "g7231", -1);
+
+ break;
+
+ /* g728 */
+ case 9:
+ invokeStartElement (pctxt, "g728", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.g728, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.g728);
+
+ invokeEndElement (pctxt, "g728", -1);
+
+ break;
+
+ /* g729 */
+ case 10:
+ invokeStartElement (pctxt, "g729", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.g729, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.g729);
+
+ invokeEndElement (pctxt, "g729", -1);
+
+ break;
+
+ /* g729AnnexA */
+ case 11:
+ invokeStartElement (pctxt, "g729AnnexA", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.g729AnnexA, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.g729AnnexA);
+
+ invokeEndElement (pctxt, "g729AnnexA", -1);
+
+ break;
+
+ /* is11172AudioCapability */
+ case 12:
+ invokeStartElement (pctxt, "is11172AudioCapability", -1);
+
+ pvalue->u.is11172AudioCapability = ALLOC_ASN1ELEM (pctxt, H245IS11172AudioCapability);
+
+ stat = asn1PD_H245IS11172AudioCapability (pctxt, pvalue->u.is11172AudioCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "is11172AudioCapability", -1);
+
+ break;
+
+ /* is13818AudioCapability */
+ case 13:
+ invokeStartElement (pctxt, "is13818AudioCapability", -1);
+
+ pvalue->u.is13818AudioCapability = ALLOC_ASN1ELEM (pctxt, H245IS13818AudioCapability);
+
+ stat = asn1PD_H245IS13818AudioCapability (pctxt, pvalue->u.is13818AudioCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "is13818AudioCapability", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 15;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* g729wAnnexB */
+ case 15:
+ invokeStartElement (pctxt, "g729wAnnexB", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.g729wAnnexB, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.g729wAnnexB);
+
+ invokeEndElement (pctxt, "g729wAnnexB", -1);
+
+ break;
+
+ /* g729AnnexAwAnnexB */
+ case 16:
+ invokeStartElement (pctxt, "g729AnnexAwAnnexB", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.g729AnnexAwAnnexB, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.g729AnnexAwAnnexB);
+
+ invokeEndElement (pctxt, "g729AnnexAwAnnexB", -1);
+
+ break;
+
+ /* g7231AnnexCCapability */
+ case 17:
+ invokeStartElement (pctxt, "g7231AnnexCCapability", -1);
+
+ pvalue->u.g7231AnnexCCapability = ALLOC_ASN1ELEM (pctxt, H245G7231AnnexCCapability);
+
+ stat = asn1PD_H245G7231AnnexCCapability (pctxt, pvalue->u.g7231AnnexCCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "g7231AnnexCCapability", -1);
+
+ break;
+
+ /* gsmFullRate */
+ case 18:
+ invokeStartElement (pctxt, "gsmFullRate", -1);
+
+ pvalue->u.gsmFullRate = ALLOC_ASN1ELEM (pctxt, H245GSMAudioCapability);
+
+ stat = asn1PD_H245GSMAudioCapability (pctxt, pvalue->u.gsmFullRate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gsmFullRate", -1);
+
+ break;
+
+ /* gsmHalfRate */
+ case 19:
+ invokeStartElement (pctxt, "gsmHalfRate", -1);
+
+ pvalue->u.gsmHalfRate = ALLOC_ASN1ELEM (pctxt, H245GSMAudioCapability);
+
+ stat = asn1PD_H245GSMAudioCapability (pctxt, pvalue->u.gsmHalfRate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gsmHalfRate", -1);
+
+ break;
+
+ /* gsmEnhancedFullRate */
+ case 20:
+ invokeStartElement (pctxt, "gsmEnhancedFullRate", -1);
+
+ pvalue->u.gsmEnhancedFullRate = ALLOC_ASN1ELEM (pctxt, H245GSMAudioCapability);
+
+ stat = asn1PD_H245GSMAudioCapability (pctxt, pvalue->u.gsmEnhancedFullRate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gsmEnhancedFullRate", -1);
+
+ break;
+
+ /* genericAudioCapability */
+ case 21:
+ invokeStartElement (pctxt, "genericAudioCapability", -1);
+
+ pvalue->u.genericAudioCapability = ALLOC_ASN1ELEM (pctxt, H245GenericCapability);
+
+ stat = asn1PD_H245GenericCapability (pctxt, pvalue->u.genericAudioCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericAudioCapability", -1);
+
+ break;
+
+ /* g729Extensions */
+ case 22:
+ invokeStartElement (pctxt, "g729Extensions", -1);
+
+ pvalue->u.g729Extensions = ALLOC_ASN1ELEM (pctxt, H245G729Extensions);
+
+ stat = asn1PD_H245G729Extensions (pctxt, pvalue->u.g729Extensions);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "g729Extensions", -1);
+
+ break;
+
+ /* vbd */
+ case 23:
+ invokeStartElement (pctxt, "vbd", -1);
+
+ pvalue->u.vbd = ALLOC_ASN1ELEM (pctxt, H245VBDCapability);
+
+ stat = asn1PD_H245VBDCapability (pctxt, pvalue->u.vbd);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "vbd", -1);
+
+ break;
+
+ /* audioTelephonyEvent */
+ case 24:
+ invokeStartElement (pctxt, "audioTelephonyEvent", -1);
+
+ pvalue->u.audioTelephonyEvent = ALLOC_ASN1ELEM (pctxt, H245NoPTAudioTelephonyEventCapability);
+
+ stat = asn1PD_H245NoPTAudioTelephonyEventCapability (pctxt, pvalue->u.audioTelephonyEvent);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "audioTelephonyEvent", -1);
+
+ break;
+
+ /* audioTone */
+ case 25:
+ invokeStartElement (pctxt, "audioTone", -1);
+
+ pvalue->u.audioTone = ALLOC_ASN1ELEM (pctxt, H245NoPTAudioToneCapability);
+
+ stat = asn1PD_H245NoPTAudioToneCapability (pctxt, pvalue->u.audioTone);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "audioTone", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Capability_h233EncryptionReceiveCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245Capability_h233EncryptionReceiveCapability (OOCTXT* pctxt, H245Capability_h233EncryptionReceiveCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode h233IVResponseTime */
+
+ invokeStartElement (pctxt, "h233IVResponseTime", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->h233IVResponseTime, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->h233IVResponseTime);
+
+ invokeEndElement (pctxt, "h233IVResponseTime", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245NonStandardParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245_SeqOfH245NonStandardParameter (OOCTXT* pctxt, H245_SeqOfH245NonStandardParameter* pvalue)
+{
+ int stat = ASN_OK;
+ H245NonStandardParameter* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceCapability (OOCTXT* pctxt, H245ConferenceCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardDataPresent = optbit;
+
+ /* decode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ invokeStartElement (pctxt, "nonStandardData", -1);
+
+ stat = asn1PD_H245_SeqOfH245NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardData", -1);
+ }
+
+ /* decode chairControlCapability */
+
+ invokeStartElement (pctxt, "chairControlCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->chairControlCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->chairControlCapability);
+
+ invokeEndElement (pctxt, "chairControlCapability", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.videoIndicateMixingCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "videoIndicateMixingCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->videoIndicateMixingCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->videoIndicateMixingCapability);
+
+ invokeEndElement (pctxt, "videoIndicateMixingCapability", -1);
+ break;
+
+ case 1:
+ pvalue->m.multipointVisualizationCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "multipointVisualizationCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multipointVisualizationCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multipointVisualizationCapability);
+
+ invokeEndElement (pctxt, "multipointVisualizationCapability", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MediaEncryptionAlgorithm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MediaEncryptionAlgorithm (OOCTXT* pctxt, H245MediaEncryptionAlgorithm* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* algorithm */
+ case 1:
+ invokeStartElement (pctxt, "algorithm", -1);
+
+ pvalue->u.algorithm = ALLOC_ASN1ELEM (pctxt, ASN1OBJID);
+
+ stat = decodeObjectIdentifier (pctxt, pvalue->u.algorithm);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->u.algorithm->numids, pvalue->u.algorithm->subid);
+
+ invokeEndElement (pctxt, "algorithm", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EncryptionCapability (OOCTXT* pctxt, H245EncryptionCapability* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245MediaEncryptionAlgorithm* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245MediaEncryptionAlgorithm);
+
+ stat = asn1PD_H245MediaEncryptionAlgorithm (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AuthenticationCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245AuthenticationCapability (OOCTXT* pctxt, H245AuthenticationCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardPresent = optbit;
+
+ /* decode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.antiSpamAlgorithmPresent = 1;
+
+ invokeStartElement (pctxt, "antiSpamAlgorithm", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->antiSpamAlgorithm);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->antiSpamAlgorithm.numids, pvalue->antiSpamAlgorithm.subid);
+
+ invokeEndElement (pctxt, "antiSpamAlgorithm", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IntegrityCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245IntegrityCapability (OOCTXT* pctxt, H245IntegrityCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardPresent = optbit;
+
+ /* decode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionAuthenticationAndIntegrity */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EncryptionAuthenticationAndIntegrity (OOCTXT* pctxt, H245EncryptionAuthenticationAndIntegrity* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.encryptionCapabilityPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.authenticationCapabilityPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.integrityCapabilityPresent = optbit;
+
+ /* decode encryptionCapability */
+
+ if (pvalue->m.encryptionCapabilityPresent) {
+ invokeStartElement (pctxt, "encryptionCapability", -1);
+
+ stat = asn1PD_H245EncryptionCapability (pctxt, &pvalue->encryptionCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "encryptionCapability", -1);
+ }
+
+ /* decode authenticationCapability */
+
+ if (pvalue->m.authenticationCapabilityPresent) {
+ invokeStartElement (pctxt, "authenticationCapability", -1);
+
+ stat = asn1PD_H245AuthenticationCapability (pctxt, &pvalue->authenticationCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "authenticationCapability", -1);
+ }
+
+ /* decode integrityCapability */
+
+ if (pvalue->m.integrityCapabilityPresent) {
+ invokeStartElement (pctxt, "integrityCapability", -1);
+
+ stat = asn1PD_H245IntegrityCapability (pctxt, &pvalue->integrityCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "integrityCapability", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H235SecurityCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H235SecurityCapability (OOCTXT* pctxt, H245H235SecurityCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode encryptionAuthenticationAndIntegrity */
+
+ invokeStartElement (pctxt, "encryptionAuthenticationAndIntegrity", -1);
+
+ stat = asn1PD_H245EncryptionAuthenticationAndIntegrity (pctxt, &pvalue->encryptionAuthenticationAndIntegrity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "encryptionAuthenticationAndIntegrity", -1);
+
+ /* decode mediaCapability */
+
+ invokeStartElement (pctxt, "mediaCapability", -1);
+
+ stat = asn1PD_H245CapabilityTableEntryNumber (pctxt, &pvalue->mediaCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaCapability", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputCapability_nonStandard */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UserInputCapability_nonStandard (OOCTXT* pctxt, H245UserInputCapability_nonStandard* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ H245NonStandardParameter* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UserInputCapability (OOCTXT* pctxt, H245UserInputCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 5);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245UserInputCapability_nonStandard);
+
+ stat = asn1PD_H245UserInputCapability_nonStandard (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* basicString */
+ case 1:
+ invokeStartElement (pctxt, "basicString", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "basicString", -1);
+
+ break;
+
+ /* iA5String */
+ case 2:
+ invokeStartElement (pctxt, "iA5String", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "iA5String", -1);
+
+ break;
+
+ /* generalString */
+ case 3:
+ invokeStartElement (pctxt, "generalString", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "generalString", -1);
+
+ break;
+
+ /* dtmf */
+ case 4:
+ invokeStartElement (pctxt, "dtmf", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "dtmf", -1);
+
+ break;
+
+ /* hookflash */
+ case 5:
+ invokeStartElement (pctxt, "hookflash", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "hookflash", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 7;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* extendedAlphanumeric */
+ case 7:
+ invokeStartElement (pctxt, "extendedAlphanumeric", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "extendedAlphanumeric", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexFormat */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexFormat (OOCTXT* pctxt, H245MultiplexFormat* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* h222Capability */
+ case 1:
+ invokeStartElement (pctxt, "h222Capability", -1);
+
+ pvalue->u.h222Capability = ALLOC_ASN1ELEM (pctxt, H245H222Capability);
+
+ stat = asn1PD_H245H222Capability (pctxt, pvalue->u.h222Capability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h222Capability", -1);
+
+ break;
+
+ /* h223Capability */
+ case 2:
+ invokeStartElement (pctxt, "h223Capability", -1);
+
+ pvalue->u.h223Capability = ALLOC_ASN1ELEM (pctxt, H245H223Capability);
+
+ stat = asn1PD_H245H223Capability (pctxt, pvalue->u.h223Capability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h223Capability", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AlternativeCapabilitySet */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245AlternativeCapabilitySet (OOCTXT* pctxt, H245AlternativeCapabilitySet* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H245CapabilityTableEntryNumber (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexedStreamCapability_capabilityOnMuxStream */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexedStreamCapability_capabilityOnMuxStream (OOCTXT* pctxt, H245MultiplexedStreamCapability_capabilityOnMuxStream* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245AlternativeCapabilitySet* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245AlternativeCapabilitySet);
+
+ stat = asn1PD_H245AlternativeCapabilitySet (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexedStreamCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexedStreamCapability (OOCTXT* pctxt, H245MultiplexedStreamCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.capabilityOnMuxStreamPresent = optbit;
+
+ /* decode multiplexFormat */
+
+ invokeStartElement (pctxt, "multiplexFormat", -1);
+
+ stat = asn1PD_H245MultiplexFormat (pctxt, &pvalue->multiplexFormat);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexFormat", -1);
+
+ /* decode controlOnMuxStream */
+
+ invokeStartElement (pctxt, "controlOnMuxStream", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->controlOnMuxStream);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->controlOnMuxStream);
+
+ invokeEndElement (pctxt, "controlOnMuxStream", -1);
+
+ /* decode capabilityOnMuxStream */
+
+ if (pvalue->m.capabilityOnMuxStreamPresent) {
+ invokeStartElement (pctxt, "capabilityOnMuxStream", -1);
+
+ stat = asn1PD_H245MultiplexedStreamCapability_capabilityOnMuxStream (pctxt, &pvalue->capabilityOnMuxStream);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capabilityOnMuxStream", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AudioTelephonyEventCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245AudioTelephonyEventCapability (OOCTXT* pctxt, H245AudioTelephonyEventCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode dynamicRTPPayloadType */
+
+ invokeStartElement (pctxt, "dynamicRTPPayloadType", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->dynamicRTPPayloadType, 96U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->dynamicRTPPayloadType);
+
+ invokeEndElement (pctxt, "dynamicRTPPayloadType", -1);
+
+ /* decode audioTelephoneEvent */
+
+ invokeStartElement (pctxt, "audioTelephoneEvent", -1);
+
+ stat = decodeVarWidthCharString (pctxt, &pvalue->audioTelephoneEvent);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->audioTelephoneEvent);
+
+ invokeEndElement (pctxt, "audioTelephoneEvent", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AudioToneCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245AudioToneCapability (OOCTXT* pctxt, H245AudioToneCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode dynamicRTPPayloadType */
+
+ invokeStartElement (pctxt, "dynamicRTPPayloadType", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->dynamicRTPPayloadType, 96U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->dynamicRTPPayloadType);
+
+ invokeEndElement (pctxt, "dynamicRTPPayloadType", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECCapability_rfc2733_separateStream */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECCapability_rfc2733_separateStream (OOCTXT* pctxt, H245FECCapability_rfc2733_separateStream* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode separatePort */
+
+ invokeStartElement (pctxt, "separatePort", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->separatePort);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->separatePort);
+
+ invokeEndElement (pctxt, "separatePort", -1);
+
+ /* decode samePort */
+
+ invokeStartElement (pctxt, "samePort", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->samePort);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->samePort);
+
+ invokeEndElement (pctxt, "samePort", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECCapability_rfc2733 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECCapability_rfc2733 (OOCTXT* pctxt, H245FECCapability_rfc2733* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode redundancyEncoding */
+
+ invokeStartElement (pctxt, "redundancyEncoding", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->redundancyEncoding);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->redundancyEncoding);
+
+ invokeEndElement (pctxt, "redundancyEncoding", -1);
+
+ /* decode separateStream */
+
+ invokeStartElement (pctxt, "separateStream", -1);
+
+ stat = asn1PD_H245FECCapability_rfc2733_separateStream (pctxt, &pvalue->separateStream);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "separateStream", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECCapability (OOCTXT* pctxt, H245FECCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 0);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* rfc2733 */
+ case 0:
+ invokeStartElement (pctxt, "rfc2733", -1);
+
+ pvalue->u.rfc2733 = ALLOC_ASN1ELEM (pctxt, H245FECCapability_rfc2733);
+
+ stat = asn1PD_H245FECCapability_rfc2733 (pctxt, pvalue->u.rfc2733);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rfc2733", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 2;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamCapability_capabilities */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplePayloadStreamCapability_capabilities (OOCTXT* pctxt, H245MultiplePayloadStreamCapability_capabilities* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245AlternativeCapabilitySet* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245AlternativeCapabilitySet);
+
+ stat = asn1PD_H245AlternativeCapabilitySet (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplePayloadStreamCapability (OOCTXT* pctxt, H245MultiplePayloadStreamCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode capabilities */
+
+ invokeStartElement (pctxt, "capabilities", -1);
+
+ stat = asn1PD_H245MultiplePayloadStreamCapability_capabilities (pctxt, &pvalue->capabilities);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capabilities", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Capability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245Capability (OOCTXT* pctxt, H245Capability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 11);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* receiveVideoCapability */
+ case 1:
+ invokeStartElement (pctxt, "receiveVideoCapability", -1);
+
+ pvalue->u.receiveVideoCapability = ALLOC_ASN1ELEM (pctxt, H245VideoCapability);
+
+ stat = asn1PD_H245VideoCapability (pctxt, pvalue->u.receiveVideoCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveVideoCapability", -1);
+
+ break;
+
+ /* transmitVideoCapability */
+ case 2:
+ invokeStartElement (pctxt, "transmitVideoCapability", -1);
+
+ pvalue->u.transmitVideoCapability = ALLOC_ASN1ELEM (pctxt, H245VideoCapability);
+
+ stat = asn1PD_H245VideoCapability (pctxt, pvalue->u.transmitVideoCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transmitVideoCapability", -1);
+
+ break;
+
+ /* receiveAndTransmitVideoCapability */
+ case 3:
+ invokeStartElement (pctxt, "receiveAndTransmitVideoCapability", -1);
+
+ pvalue->u.receiveAndTransmitVideoCapability = ALLOC_ASN1ELEM (pctxt, H245VideoCapability);
+
+ stat = asn1PD_H245VideoCapability (pctxt, pvalue->u.receiveAndTransmitVideoCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveAndTransmitVideoCapability", -1);
+
+ break;
+
+ /* receiveAudioCapability */
+ case 4:
+ invokeStartElement (pctxt, "receiveAudioCapability", -1);
+
+ pvalue->u.receiveAudioCapability = ALLOC_ASN1ELEM (pctxt, H245AudioCapability);
+
+ stat = asn1PD_H245AudioCapability (pctxt, pvalue->u.receiveAudioCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveAudioCapability", -1);
+
+ break;
+
+ /* transmitAudioCapability */
+ case 5:
+ invokeStartElement (pctxt, "transmitAudioCapability", -1);
+
+ pvalue->u.transmitAudioCapability = ALLOC_ASN1ELEM (pctxt, H245AudioCapability);
+
+ stat = asn1PD_H245AudioCapability (pctxt, pvalue->u.transmitAudioCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transmitAudioCapability", -1);
+
+ break;
+
+ /* receiveAndTransmitAudioCapability */
+ case 6:
+ invokeStartElement (pctxt, "receiveAndTransmitAudioCapability", -1);
+
+ pvalue->u.receiveAndTransmitAudioCapability = ALLOC_ASN1ELEM (pctxt, H245AudioCapability);
+
+ stat = asn1PD_H245AudioCapability (pctxt, pvalue->u.receiveAndTransmitAudioCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveAndTransmitAudioCapability", -1);
+
+ break;
+
+ /* receiveDataApplicationCapability */
+ case 7:
+ invokeStartElement (pctxt, "receiveDataApplicationCapability", -1);
+
+ pvalue->u.receiveDataApplicationCapability = ALLOC_ASN1ELEM (pctxt, H245DataApplicationCapability);
+
+ stat = asn1PD_H245DataApplicationCapability (pctxt, pvalue->u.receiveDataApplicationCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveDataApplicationCapability", -1);
+
+ break;
+
+ /* transmitDataApplicationCapability */
+ case 8:
+ invokeStartElement (pctxt, "transmitDataApplicationCapability", -1);
+
+ pvalue->u.transmitDataApplicationCapability = ALLOC_ASN1ELEM (pctxt, H245DataApplicationCapability);
+
+ stat = asn1PD_H245DataApplicationCapability (pctxt, pvalue->u.transmitDataApplicationCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transmitDataApplicationCapability", -1);
+
+ break;
+
+ /* receiveAndTransmitDataApplicationCapability */
+ case 9:
+ invokeStartElement (pctxt, "receiveAndTransmitDataApplicationCapability", -1);
+
+ pvalue->u.receiveAndTransmitDataApplicationCapability = ALLOC_ASN1ELEM (pctxt, H245DataApplicationCapability);
+
+ stat = asn1PD_H245DataApplicationCapability (pctxt, pvalue->u.receiveAndTransmitDataApplicationCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveAndTransmitDataApplicationCapability", -1);
+
+ break;
+
+ /* h233EncryptionTransmitCapability */
+ case 10:
+ invokeStartElement (pctxt, "h233EncryptionTransmitCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->u.h233EncryptionTransmitCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->u.h233EncryptionTransmitCapability);
+
+ invokeEndElement (pctxt, "h233EncryptionTransmitCapability", -1);
+
+ break;
+
+ /* h233EncryptionReceiveCapability */
+ case 11:
+ invokeStartElement (pctxt, "h233EncryptionReceiveCapability", -1);
+
+ pvalue->u.h233EncryptionReceiveCapability = ALLOC_ASN1ELEM (pctxt, H245Capability_h233EncryptionReceiveCapability);
+
+ stat = asn1PD_H245Capability_h233EncryptionReceiveCapability (pctxt, pvalue->u.h233EncryptionReceiveCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h233EncryptionReceiveCapability", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 13;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* conferenceCapability */
+ case 13:
+ invokeStartElement (pctxt, "conferenceCapability", -1);
+
+ pvalue->u.conferenceCapability = ALLOC_ASN1ELEM (pctxt, H245ConferenceCapability);
+
+ stat = asn1PD_H245ConferenceCapability (pctxt, pvalue->u.conferenceCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceCapability", -1);
+
+ break;
+
+ /* h235SecurityCapability */
+ case 14:
+ invokeStartElement (pctxt, "h235SecurityCapability", -1);
+
+ pvalue->u.h235SecurityCapability = ALLOC_ASN1ELEM (pctxt, H245H235SecurityCapability);
+
+ stat = asn1PD_H245H235SecurityCapability (pctxt, pvalue->u.h235SecurityCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h235SecurityCapability", -1);
+
+ break;
+
+ /* maxPendingReplacementFor */
+ case 15:
+ invokeStartElement (pctxt, "maxPendingReplacementFor", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->u.maxPendingReplacementFor, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.maxPendingReplacementFor);
+
+ invokeEndElement (pctxt, "maxPendingReplacementFor", -1);
+
+ break;
+
+ /* receiveUserInputCapability */
+ case 16:
+ invokeStartElement (pctxt, "receiveUserInputCapability", -1);
+
+ pvalue->u.receiveUserInputCapability = ALLOC_ASN1ELEM (pctxt, H245UserInputCapability);
+
+ stat = asn1PD_H245UserInputCapability (pctxt, pvalue->u.receiveUserInputCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveUserInputCapability", -1);
+
+ break;
+
+ /* transmitUserInputCapability */
+ case 17:
+ invokeStartElement (pctxt, "transmitUserInputCapability", -1);
+
+ pvalue->u.transmitUserInputCapability = ALLOC_ASN1ELEM (pctxt, H245UserInputCapability);
+
+ stat = asn1PD_H245UserInputCapability (pctxt, pvalue->u.transmitUserInputCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transmitUserInputCapability", -1);
+
+ break;
+
+ /* receiveAndTransmitUserInputCapability */
+ case 18:
+ invokeStartElement (pctxt, "receiveAndTransmitUserInputCapability", -1);
+
+ pvalue->u.receiveAndTransmitUserInputCapability = ALLOC_ASN1ELEM (pctxt, H245UserInputCapability);
+
+ stat = asn1PD_H245UserInputCapability (pctxt, pvalue->u.receiveAndTransmitUserInputCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveAndTransmitUserInputCapability", -1);
+
+ break;
+
+ /* genericControlCapability */
+ case 19:
+ invokeStartElement (pctxt, "genericControlCapability", -1);
+
+ pvalue->u.genericControlCapability = ALLOC_ASN1ELEM (pctxt, H245GenericCapability);
+
+ stat = asn1PD_H245GenericCapability (pctxt, pvalue->u.genericControlCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericControlCapability", -1);
+
+ break;
+
+ /* receiveMultiplexedStreamCapability */
+ case 20:
+ invokeStartElement (pctxt, "receiveMultiplexedStreamCapability", -1);
+
+ pvalue->u.receiveMultiplexedStreamCapability = ALLOC_ASN1ELEM (pctxt, H245MultiplexedStreamCapability);
+
+ stat = asn1PD_H245MultiplexedStreamCapability (pctxt, pvalue->u.receiveMultiplexedStreamCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveMultiplexedStreamCapability", -1);
+
+ break;
+
+ /* transmitMultiplexedStreamCapability */
+ case 21:
+ invokeStartElement (pctxt, "transmitMultiplexedStreamCapability", -1);
+
+ pvalue->u.transmitMultiplexedStreamCapability = ALLOC_ASN1ELEM (pctxt, H245MultiplexedStreamCapability);
+
+ stat = asn1PD_H245MultiplexedStreamCapability (pctxt, pvalue->u.transmitMultiplexedStreamCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transmitMultiplexedStreamCapability", -1);
+
+ break;
+
+ /* receiveAndTransmitMultiplexedStreamCapability */
+ case 22:
+ invokeStartElement (pctxt, "receiveAndTransmitMultiplexedStreamCapability", -1);
+
+ pvalue->u.receiveAndTransmitMultiplexedStreamCapability = ALLOC_ASN1ELEM (pctxt, H245MultiplexedStreamCapability);
+
+ stat = asn1PD_H245MultiplexedStreamCapability (pctxt, pvalue->u.receiveAndTransmitMultiplexedStreamCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveAndTransmitMultiplexedStreamCapability", -1);
+
+ break;
+
+ /* receiveRTPAudioTelephonyEventCapability */
+ case 23:
+ invokeStartElement (pctxt, "receiveRTPAudioTelephonyEventCapability", -1);
+
+ pvalue->u.receiveRTPAudioTelephonyEventCapability = ALLOC_ASN1ELEM (pctxt, H245AudioTelephonyEventCapability);
+
+ stat = asn1PD_H245AudioTelephonyEventCapability (pctxt, pvalue->u.receiveRTPAudioTelephonyEventCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveRTPAudioTelephonyEventCapability", -1);
+
+ break;
+
+ /* receiveRTPAudioToneCapability */
+ case 24:
+ invokeStartElement (pctxt, "receiveRTPAudioToneCapability", -1);
+
+ pvalue->u.receiveRTPAudioToneCapability = ALLOC_ASN1ELEM (pctxt, H245AudioToneCapability);
+
+ stat = asn1PD_H245AudioToneCapability (pctxt, pvalue->u.receiveRTPAudioToneCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "receiveRTPAudioToneCapability", -1);
+
+ break;
+
+ /* fecCapability */
+ case 25:
+ invokeStartElement (pctxt, "fecCapability", -1);
+
+ pvalue->u.fecCapability = ALLOC_ASN1ELEM (pctxt, H245FECCapability);
+
+ stat = asn1PD_H245FECCapability (pctxt, pvalue->u.fecCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "fecCapability", -1);
+
+ break;
+
+ /* multiplePayloadStreamCapability */
+ case 26:
+ invokeStartElement (pctxt, "multiplePayloadStreamCapability", -1);
+
+ pvalue->u.multiplePayloadStreamCapability = ALLOC_ASN1ELEM (pctxt, H245MultiplePayloadStreamCapability);
+
+ stat = asn1PD_H245MultiplePayloadStreamCapability (pctxt, pvalue->u.multiplePayloadStreamCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplePayloadStreamCapability", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapabilityTableEntry */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CapabilityTableEntry (OOCTXT* pctxt, H245CapabilityTableEntry* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL optbit;
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.capabilityPresent = optbit;
+
+ /* decode capabilityTableEntryNumber */
+
+ invokeStartElement (pctxt, "capabilityTableEntryNumber", -1);
+
+ stat = asn1PD_H245CapabilityTableEntryNumber (pctxt, &pvalue->capabilityTableEntryNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capabilityTableEntryNumber", -1);
+
+ /* decode capability */
+
+ if (pvalue->m.capabilityPresent) {
+ invokeStartElement (pctxt, "capability", -1);
+
+ stat = asn1PD_H245Capability (pctxt, &pvalue->capability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capability", -1);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySet_capabilityTable */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TerminalCapabilitySet_capabilityTable (OOCTXT* pctxt, H245TerminalCapabilitySet_capabilityTable* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245CapabilityTableEntry* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245CapabilityTableEntry);
+
+ stat = asn1PD_H245CapabilityTableEntry (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapabilityDescriptorNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CapabilityDescriptorNumber (OOCTXT* pctxt, H245CapabilityDescriptorNumber* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUInt8 (pctxt, pvalue, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapabilityDescriptor_simultaneousCapabilities */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CapabilityDescriptor_simultaneousCapabilities (OOCTXT* pctxt, H245CapabilityDescriptor_simultaneousCapabilities* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245AlternativeCapabilitySet* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245AlternativeCapabilitySet);
+
+ stat = asn1PD_H245AlternativeCapabilitySet (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapabilityDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CapabilityDescriptor (OOCTXT* pctxt, H245CapabilityDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL optbit;
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.simultaneousCapabilitiesPresent = optbit;
+
+ /* decode capabilityDescriptorNumber */
+
+ invokeStartElement (pctxt, "capabilityDescriptorNumber", -1);
+
+ stat = asn1PD_H245CapabilityDescriptorNumber (pctxt, &pvalue->capabilityDescriptorNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capabilityDescriptorNumber", -1);
+
+ /* decode simultaneousCapabilities */
+
+ if (pvalue->m.simultaneousCapabilitiesPresent) {
+ invokeStartElement (pctxt, "simultaneousCapabilities", -1);
+
+ stat = asn1PD_H245CapabilityDescriptor_simultaneousCapabilities (pctxt, &pvalue->simultaneousCapabilities);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "simultaneousCapabilities", -1);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySet_capabilityDescriptors */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TerminalCapabilitySet_capabilityDescriptors (OOCTXT* pctxt, H245TerminalCapabilitySet_capabilityDescriptors* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245CapabilityDescriptor* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245CapabilityDescriptor);
+
+ stat = asn1PD_H245CapabilityDescriptor (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySet */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TerminalCapabilitySet (OOCTXT* pctxt, H245TerminalCapabilitySet* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.multiplexCapabilityPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.capabilityTablePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.capabilityDescriptorsPresent = optbit;
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ /* decode protocolIdentifier */
+
+ invokeStartElement (pctxt, "protocolIdentifier", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->protocolIdentifier.numids, pvalue->protocolIdentifier.subid);
+
+ invokeEndElement (pctxt, "protocolIdentifier", -1);
+
+ /* decode multiplexCapability */
+
+ if (pvalue->m.multiplexCapabilityPresent) {
+ invokeStartElement (pctxt, "multiplexCapability", -1);
+
+ stat = asn1PD_H245MultiplexCapability (pctxt, &pvalue->multiplexCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexCapability", -1);
+ }
+
+ /* decode capabilityTable */
+
+ if (pvalue->m.capabilityTablePresent) {
+ invokeStartElement (pctxt, "capabilityTable", -1);
+
+ stat = asn1PD_H245TerminalCapabilitySet_capabilityTable (pctxt, &pvalue->capabilityTable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capabilityTable", -1);
+ }
+
+ /* decode capabilityDescriptors */
+
+ if (pvalue->m.capabilityDescriptorsPresent) {
+ invokeStartElement (pctxt, "capabilityDescriptors", -1);
+
+ stat = asn1PD_H245TerminalCapabilitySet_capabilityDescriptors (pctxt, &pvalue->capabilityDescriptors);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capabilityDescriptors", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LogicalChannelNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245LogicalChannelNumber (OOCTXT* pctxt, H245LogicalChannelNumber* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUInt16 (pctxt, pvalue, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EncryptionMode (OOCTXT* pctxt, H245EncryptionMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* h233Encryption */
+ case 1:
+ invokeStartElement (pctxt, "h233Encryption", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "h233Encryption", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RedundancyEncodingElement (OOCTXT* pctxt, H245RedundancyEncodingElement* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.payloadTypePresent = optbit;
+
+ /* decode dataType */
+
+ invokeStartElement (pctxt, "dataType", -1);
+
+ pvalue->dataType = ALLOC_ASN1ELEM (pctxt, H245DataType);
+
+ stat = asn1PD_H245DataType (pctxt, (H245DataType*)pvalue->dataType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataType", -1);
+
+ /* decode payloadType */
+
+ if (pvalue->m.payloadTypePresent) {
+ invokeStartElement (pctxt, "payloadType", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->payloadType, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->payloadType);
+
+ invokeEndElement (pctxt, "payloadType", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245RedundancyEncodingElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245_SeqOfH245RedundancyEncodingElement (OOCTXT* pctxt, H245_SeqOfH245RedundancyEncodingElement* pvalue)
+{
+ int stat = ASN_OK;
+ H245RedundancyEncodingElement* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245RedundancyEncodingElement);
+
+ stat = asn1PD_H245RedundancyEncodingElement (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncoding_rtpRedundancyEncoding */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RedundancyEncoding_rtpRedundancyEncoding (OOCTXT* pctxt, H245RedundancyEncoding_rtpRedundancyEncoding* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.primaryPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.secondaryPresent = optbit;
+
+ /* decode primary */
+
+ if (pvalue->m.primaryPresent) {
+ invokeStartElement (pctxt, "primary", -1);
+
+ stat = asn1PD_H245RedundancyEncodingElement (pctxt, &pvalue->primary);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "primary", -1);
+ }
+
+ /* decode secondary */
+
+ if (pvalue->m.secondaryPresent) {
+ invokeStartElement (pctxt, "secondary", -1);
+
+ stat = asn1PD_H245_SeqOfH245RedundancyEncodingElement (pctxt, &pvalue->secondary);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "secondary", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncoding */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RedundancyEncoding (OOCTXT* pctxt, H245RedundancyEncoding* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.secondaryEncodingPresent = optbit;
+
+ /* decode redundancyEncodingMethod */
+
+ invokeStartElement (pctxt, "redundancyEncodingMethod", -1);
+
+ stat = asn1PD_H245RedundancyEncodingMethod (pctxt, &pvalue->redundancyEncodingMethod);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "redundancyEncodingMethod", -1);
+
+ /* decode secondaryEncoding */
+
+ if (pvalue->m.secondaryEncodingPresent) {
+ invokeStartElement (pctxt, "secondaryEncoding", -1);
+
+ pvalue->secondaryEncoding = ALLOC_ASN1ELEM (pctxt, H245DataType);
+
+ stat = asn1PD_H245DataType (pctxt, (H245DataType*)pvalue->secondaryEncoding);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "secondaryEncoding", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.rtpRedundancyEncodingPresent = 1;
+
+ invokeStartElement (pctxt, "rtpRedundancyEncoding", -1);
+
+ stat = asn1PD_H245RedundancyEncoding_rtpRedundancyEncoding (pctxt, &pvalue->rtpRedundancyEncoding);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rtpRedundancyEncoding", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplePayloadStreamElement (OOCTXT* pctxt, H245MultiplePayloadStreamElement* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.payloadTypePresent = optbit;
+
+ /* decode dataType */
+
+ invokeStartElement (pctxt, "dataType", -1);
+
+ pvalue->dataType = ALLOC_ASN1ELEM (pctxt, H245DataType);
+
+ stat = asn1PD_H245DataType (pctxt, (H245DataType*)pvalue->dataType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataType", -1);
+
+ /* decode payloadType */
+
+ if (pvalue->m.payloadTypePresent) {
+ invokeStartElement (pctxt, "payloadType", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->payloadType, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->payloadType);
+
+ invokeEndElement (pctxt, "payloadType", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245MultiplePayloadStreamElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245_SeqOfH245MultiplePayloadStreamElement (OOCTXT* pctxt, H245_SeqOfH245MultiplePayloadStreamElement* pvalue)
+{
+ int stat = ASN_OK;
+ H245MultiplePayloadStreamElement* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245MultiplePayloadStreamElement);
+
+ stat = asn1PD_H245MultiplePayloadStreamElement (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStream */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplePayloadStream (OOCTXT* pctxt, H245MultiplePayloadStream* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode elements */
+
+ invokeStartElement (pctxt, "elements", -1);
+
+ stat = asn1PD_H245_SeqOfH245MultiplePayloadStreamElement (pctxt, &pvalue->elements);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "elements", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733_mode_separateStream_differentPort */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECData_rfc2733_mode_separateStream_differentPort (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream_differentPort* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.protectedPayloadTypePresent = optbit;
+
+ /* decode protectedSessionID */
+
+ invokeStartElement (pctxt, "protectedSessionID", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->protectedSessionID, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->protectedSessionID);
+
+ invokeEndElement (pctxt, "protectedSessionID", -1);
+
+ /* decode protectedPayloadType */
+
+ if (pvalue->m.protectedPayloadTypePresent) {
+ invokeStartElement (pctxt, "protectedPayloadType", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->protectedPayloadType, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->protectedPayloadType);
+
+ invokeEndElement (pctxt, "protectedPayloadType", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733_mode_separateStream_samePort */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECData_rfc2733_mode_separateStream_samePort (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream_samePort* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode protectedPayloadType */
+
+ invokeStartElement (pctxt, "protectedPayloadType", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->protectedPayloadType, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->protectedPayloadType);
+
+ invokeEndElement (pctxt, "protectedPayloadType", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733_mode_separateStream */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECData_rfc2733_mode_separateStream (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* differentPort */
+ case 0:
+ invokeStartElement (pctxt, "differentPort", -1);
+
+ pvalue->u.differentPort = ALLOC_ASN1ELEM (pctxt, H245FECData_rfc2733_mode_separateStream_differentPort);
+
+ stat = asn1PD_H245FECData_rfc2733_mode_separateStream_differentPort (pctxt, pvalue->u.differentPort);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "differentPort", -1);
+
+ break;
+
+ /* samePort */
+ case 1:
+ invokeStartElement (pctxt, "samePort", -1);
+
+ pvalue->u.samePort = ALLOC_ASN1ELEM (pctxt, H245FECData_rfc2733_mode_separateStream_samePort);
+
+ stat = asn1PD_H245FECData_rfc2733_mode_separateStream_samePort (pctxt, pvalue->u.samePort);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "samePort", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733_mode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECData_rfc2733_mode (OOCTXT* pctxt, H245FECData_rfc2733_mode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* redundancyEncoding */
+ case 0:
+ invokeStartElement (pctxt, "redundancyEncoding", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "redundancyEncoding", -1);
+
+ break;
+
+ /* separateStream */
+ case 1:
+ invokeStartElement (pctxt, "separateStream", -1);
+
+ pvalue->u.separateStream = ALLOC_ASN1ELEM (pctxt, H245FECData_rfc2733_mode_separateStream);
+
+ stat = asn1PD_H245FECData_rfc2733_mode_separateStream (pctxt, pvalue->u.separateStream);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "separateStream", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECData_rfc2733 (OOCTXT* pctxt, H245FECData_rfc2733* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode mode */
+
+ invokeStartElement (pctxt, "mode", -1);
+
+ stat = asn1PD_H245FECData_rfc2733_mode (pctxt, &pvalue->mode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mode", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECData */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECData (OOCTXT* pctxt, H245FECData* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 0);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* rfc2733 */
+ case 0:
+ invokeStartElement (pctxt, "rfc2733", -1);
+
+ pvalue->u.rfc2733 = ALLOC_ASN1ELEM (pctxt, H245FECData_rfc2733);
+
+ stat = asn1PD_H245FECData_rfc2733 (pctxt, pvalue->u.rfc2733);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rfc2733", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H235Media_mediaType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H235Media_mediaType (OOCTXT* pctxt, H245H235Media_mediaType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* videoData */
+ case 1:
+ invokeStartElement (pctxt, "videoData", -1);
+
+ pvalue->u.videoData = ALLOC_ASN1ELEM (pctxt, H245VideoCapability);
+
+ stat = asn1PD_H245VideoCapability (pctxt, pvalue->u.videoData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "videoData", -1);
+
+ break;
+
+ /* audioData */
+ case 2:
+ invokeStartElement (pctxt, "audioData", -1);
+
+ pvalue->u.audioData = ALLOC_ASN1ELEM (pctxt, H245AudioCapability);
+
+ stat = asn1PD_H245AudioCapability (pctxt, pvalue->u.audioData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "audioData", -1);
+
+ break;
+
+ /* data */
+ case 3:
+ invokeStartElement (pctxt, "data", -1);
+
+ pvalue->u.data = ALLOC_ASN1ELEM (pctxt, H245DataApplicationCapability);
+
+ stat = asn1PD_H245DataApplicationCapability (pctxt, pvalue->u.data);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "data", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* redundancyEncoding */
+ case 5:
+ invokeStartElement (pctxt, "redundancyEncoding", -1);
+
+ pvalue->u.redundancyEncoding = ALLOC_ASN1ELEM (pctxt, H245RedundancyEncoding);
+
+ stat = asn1PD_H245RedundancyEncoding (pctxt, pvalue->u.redundancyEncoding);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "redundancyEncoding", -1);
+
+ break;
+
+ /* multiplePayloadStream */
+ case 6:
+ invokeStartElement (pctxt, "multiplePayloadStream", -1);
+
+ pvalue->u.multiplePayloadStream = ALLOC_ASN1ELEM (pctxt, H245MultiplePayloadStream);
+
+ stat = asn1PD_H245MultiplePayloadStream (pctxt, pvalue->u.multiplePayloadStream);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplePayloadStream", -1);
+
+ break;
+
+ /* fec */
+ case 7:
+ invokeStartElement (pctxt, "fec", -1);
+
+ pvalue->u.fec = ALLOC_ASN1ELEM (pctxt, H245FECData);
+
+ stat = asn1PD_H245FECData (pctxt, pvalue->u.fec);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "fec", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H235Media */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H235Media (OOCTXT* pctxt, H245H235Media* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode encryptionAuthenticationAndIntegrity */
+
+ invokeStartElement (pctxt, "encryptionAuthenticationAndIntegrity", -1);
+
+ stat = asn1PD_H245EncryptionAuthenticationAndIntegrity (pctxt, &pvalue->encryptionAuthenticationAndIntegrity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "encryptionAuthenticationAndIntegrity", -1);
+
+ /* decode mediaType */
+
+ invokeStartElement (pctxt, "mediaType", -1);
+
+ stat = asn1PD_H245H235Media_mediaType (pctxt, &pvalue->mediaType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaType", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexedStreamParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexedStreamParameter (OOCTXT* pctxt, H245MultiplexedStreamParameter* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode multiplexFormat */
+
+ invokeStartElement (pctxt, "multiplexFormat", -1);
+
+ stat = asn1PD_H245MultiplexFormat (pctxt, &pvalue->multiplexFormat);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexFormat", -1);
+
+ /* decode controlOnMuxStream */
+
+ invokeStartElement (pctxt, "controlOnMuxStream", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->controlOnMuxStream);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->controlOnMuxStream);
+
+ invokeEndElement (pctxt, "controlOnMuxStream", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DataType (OOCTXT* pctxt, H245DataType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 5);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* nullData */
+ case 1:
+ invokeStartElement (pctxt, "nullData", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "nullData", -1);
+
+ break;
+
+ /* videoData */
+ case 2:
+ invokeStartElement (pctxt, "videoData", -1);
+
+ pvalue->u.videoData = ALLOC_ASN1ELEM (pctxt, H245VideoCapability);
+
+ stat = asn1PD_H245VideoCapability (pctxt, pvalue->u.videoData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "videoData", -1);
+
+ break;
+
+ /* audioData */
+ case 3:
+ invokeStartElement (pctxt, "audioData", -1);
+
+ pvalue->u.audioData = ALLOC_ASN1ELEM (pctxt, H245AudioCapability);
+
+ stat = asn1PD_H245AudioCapability (pctxt, pvalue->u.audioData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "audioData", -1);
+
+ break;
+
+ /* data */
+ case 4:
+ invokeStartElement (pctxt, "data", -1);
+
+ pvalue->u.data = ALLOC_ASN1ELEM (pctxt, H245DataApplicationCapability);
+
+ stat = asn1PD_H245DataApplicationCapability (pctxt, pvalue->u.data);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "data", -1);
+
+ break;
+
+ /* encryptionData */
+ case 5:
+ invokeStartElement (pctxt, "encryptionData", -1);
+
+ pvalue->u.encryptionData = ALLOC_ASN1ELEM (pctxt, H245EncryptionMode);
+
+ stat = asn1PD_H245EncryptionMode (pctxt, pvalue->u.encryptionData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "encryptionData", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 7;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* h235Control */
+ case 7:
+ invokeStartElement (pctxt, "h235Control", -1);
+
+ pvalue->u.h235Control = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.h235Control);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h235Control", -1);
+
+ break;
+
+ /* h235Media */
+ case 8:
+ invokeStartElement (pctxt, "h235Media", -1);
+
+ pvalue->u.h235Media = ALLOC_ASN1ELEM (pctxt, H245H235Media);
+
+ stat = asn1PD_H245H235Media (pctxt, pvalue->u.h235Media);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h235Media", -1);
+
+ break;
+
+ /* multiplexedStream */
+ case 9:
+ invokeStartElement (pctxt, "multiplexedStream", -1);
+
+ pvalue->u.multiplexedStream = ALLOC_ASN1ELEM (pctxt, H245MultiplexedStreamParameter);
+
+ stat = asn1PD_H245MultiplexedStreamParameter (pctxt, pvalue->u.multiplexedStream);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexedStream", -1);
+
+ break;
+
+ /* redundancyEncoding */
+ case 10:
+ invokeStartElement (pctxt, "redundancyEncoding", -1);
+
+ pvalue->u.redundancyEncoding = ALLOC_ASN1ELEM (pctxt, H245RedundancyEncoding);
+
+ stat = asn1PD_H245RedundancyEncoding (pctxt, pvalue->u.redundancyEncoding);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "redundancyEncoding", -1);
+
+ break;
+
+ /* multiplePayloadStream */
+ case 11:
+ invokeStartElement (pctxt, "multiplePayloadStream", -1);
+
+ pvalue->u.multiplePayloadStream = ALLOC_ASN1ELEM (pctxt, H245MultiplePayloadStream);
+
+ stat = asn1PD_H245MultiplePayloadStream (pctxt, pvalue->u.multiplePayloadStream);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplePayloadStream", -1);
+
+ break;
+
+ /* fec */
+ case 12:
+ invokeStartElement (pctxt, "fec", -1);
+
+ pvalue->u.fec = ALLOC_ASN1ELEM (pctxt, H245FECData);
+
+ stat = asn1PD_H245FECData (pctxt, pvalue->u.fec);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "fec", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H222LogicalChannelParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H222LogicalChannelParameters (OOCTXT* pctxt, H245H222LogicalChannelParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.pcr_pidPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.programDescriptorsPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.streamDescriptorsPresent = optbit;
+
+ /* decode resourceID */
+
+ invokeStartElement (pctxt, "resourceID", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->resourceID, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->resourceID);
+
+ invokeEndElement (pctxt, "resourceID", -1);
+
+ /* decode subChannelID */
+
+ invokeStartElement (pctxt, "subChannelID", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->subChannelID, 0U, 8191U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->subChannelID);
+
+ invokeEndElement (pctxt, "subChannelID", -1);
+
+ /* decode pcr_pid */
+
+ if (pvalue->m.pcr_pidPresent) {
+ invokeStartElement (pctxt, "pcr_pid", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->pcr_pid, 0U, 8191U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->pcr_pid);
+
+ invokeEndElement (pctxt, "pcr_pid", -1);
+ }
+
+ /* decode programDescriptors */
+
+ if (pvalue->m.programDescriptorsPresent) {
+ invokeStartElement (pctxt, "programDescriptors", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->programDescriptors);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->programDescriptors.numocts, pvalue->programDescriptors.data);
+
+ invokeEndElement (pctxt, "programDescriptors", -1);
+ }
+
+ /* decode streamDescriptors */
+
+ if (pvalue->m.streamDescriptorsPresent) {
+ invokeStartElement (pctxt, "streamDescriptors", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->streamDescriptors);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->streamDescriptors.numocts, pvalue->streamDescriptors.data);
+
+ invokeEndElement (pctxt, "streamDescriptors", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223LogicalChannelParameters_adaptationLayerType_al3 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223LogicalChannelParameters_adaptationLayerType_al3 (OOCTXT* pctxt, H245H223LogicalChannelParameters_adaptationLayerType_al3* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode controlFieldOctets */
+
+ invokeStartElement (pctxt, "controlFieldOctets", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->controlFieldOctets, 0U, 2U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->controlFieldOctets);
+
+ invokeEndElement (pctxt, "controlFieldOctets", -1);
+
+ /* decode sendBufferSize */
+
+ invokeStartElement (pctxt, "sendBufferSize", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->sendBufferSize, 0U, 16777215U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sendBufferSize);
+
+ invokeEndElement (pctxt, "sendBufferSize", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters_transferMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223AL1MParameters_transferMode (OOCTXT* pctxt, H245H223AL1MParameters_transferMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* framed */
+ case 0:
+ invokeStartElement (pctxt, "framed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "framed", -1);
+
+ break;
+
+ /* unframed */
+ case 1:
+ invokeStartElement (pctxt, "unframed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unframed", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters_headerFEC */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223AL1MParameters_headerFEC (OOCTXT* pctxt, H245H223AL1MParameters_headerFEC* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* sebch16_7 */
+ case 0:
+ invokeStartElement (pctxt, "sebch16_7", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "sebch16_7", -1);
+
+ break;
+
+ /* golay24_12 */
+ case 1:
+ invokeStartElement (pctxt, "golay24_12", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "golay24_12", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters_crcLength */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223AL1MParameters_crcLength (OOCTXT* pctxt, H245H223AL1MParameters_crcLength* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* crc4bit */
+ case 0:
+ invokeStartElement (pctxt, "crc4bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc4bit", -1);
+
+ break;
+
+ /* crc12bit */
+ case 1:
+ invokeStartElement (pctxt, "crc12bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc12bit", -1);
+
+ break;
+
+ /* crc20bit */
+ case 2:
+ invokeStartElement (pctxt, "crc20bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc20bit", -1);
+
+ break;
+
+ /* crc28bit */
+ case 3:
+ invokeStartElement (pctxt, "crc28bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc28bit", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* crc8bit */
+ case 5:
+ invokeStartElement (pctxt, "crc8bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc8bit", -1);
+
+ break;
+
+ /* crc16bit */
+ case 6:
+ invokeStartElement (pctxt, "crc16bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc16bit", -1);
+
+ break;
+
+ /* crc32bit */
+ case 7:
+ invokeStartElement (pctxt, "crc32bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc32bit", -1);
+
+ break;
+
+ /* crcNotUsed */
+ case 8:
+ invokeStartElement (pctxt, "crcNotUsed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crcNotUsed", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AnnexCArqParameters_numberOfRetransmissions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223AnnexCArqParameters_numberOfRetransmissions (OOCTXT* pctxt, H245H223AnnexCArqParameters_numberOfRetransmissions* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* finite */
+ case 0:
+ invokeStartElement (pctxt, "finite", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->u.finite, 0U, 16U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.finite);
+
+ invokeEndElement (pctxt, "finite", -1);
+
+ break;
+
+ /* infinite */
+ case 1:
+ invokeStartElement (pctxt, "infinite", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "infinite", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AnnexCArqParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223AnnexCArqParameters (OOCTXT* pctxt, H245H223AnnexCArqParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode numberOfRetransmissions */
+
+ invokeStartElement (pctxt, "numberOfRetransmissions", -1);
+
+ stat = asn1PD_H245H223AnnexCArqParameters_numberOfRetransmissions (pctxt, &pvalue->numberOfRetransmissions);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "numberOfRetransmissions", -1);
+
+ /* decode sendBufferSize */
+
+ invokeStartElement (pctxt, "sendBufferSize", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->sendBufferSize, 0U, 16777215U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sendBufferSize);
+
+ invokeEndElement (pctxt, "sendBufferSize", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters_arqType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223AL1MParameters_arqType (OOCTXT* pctxt, H245H223AL1MParameters_arqType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* noArq */
+ case 0:
+ invokeStartElement (pctxt, "noArq", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noArq", -1);
+
+ break;
+
+ /* typeIArq */
+ case 1:
+ invokeStartElement (pctxt, "typeIArq", -1);
+
+ pvalue->u.typeIArq = ALLOC_ASN1ELEM (pctxt, H245H223AnnexCArqParameters);
+
+ stat = asn1PD_H245H223AnnexCArqParameters (pctxt, pvalue->u.typeIArq);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "typeIArq", -1);
+
+ break;
+
+ /* typeIIArq */
+ case 2:
+ invokeStartElement (pctxt, "typeIIArq", -1);
+
+ pvalue->u.typeIIArq = ALLOC_ASN1ELEM (pctxt, H245H223AnnexCArqParameters);
+
+ stat = asn1PD_H245H223AnnexCArqParameters (pctxt, pvalue->u.typeIIArq);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "typeIIArq", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223AL1MParameters (OOCTXT* pctxt, H245H223AL1MParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode transferMode */
+
+ invokeStartElement (pctxt, "transferMode", -1);
+
+ stat = asn1PD_H245H223AL1MParameters_transferMode (pctxt, &pvalue->transferMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transferMode", -1);
+
+ /* decode headerFEC */
+
+ invokeStartElement (pctxt, "headerFEC", -1);
+
+ stat = asn1PD_H245H223AL1MParameters_headerFEC (pctxt, &pvalue->headerFEC);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "headerFEC", -1);
+
+ /* decode crcLength */
+
+ invokeStartElement (pctxt, "crcLength", -1);
+
+ stat = asn1PD_H245H223AL1MParameters_crcLength (pctxt, &pvalue->crcLength);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "crcLength", -1);
+
+ /* decode rcpcCodeRate */
+
+ invokeStartElement (pctxt, "rcpcCodeRate", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->rcpcCodeRate, 8U, 32U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->rcpcCodeRate);
+
+ invokeEndElement (pctxt, "rcpcCodeRate", -1);
+
+ /* decode arqType */
+
+ invokeStartElement (pctxt, "arqType", -1);
+
+ stat = asn1PD_H245H223AL1MParameters_arqType (pctxt, &pvalue->arqType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "arqType", -1);
+
+ /* decode alpduInterleaving */
+
+ invokeStartElement (pctxt, "alpduInterleaving", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->alpduInterleaving);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->alpduInterleaving);
+
+ invokeEndElement (pctxt, "alpduInterleaving", -1);
+
+ /* decode alsduSplitting */
+
+ invokeStartElement (pctxt, "alsduSplitting", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->alsduSplitting);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->alsduSplitting);
+
+ invokeEndElement (pctxt, "alsduSplitting", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.rsCodeCorrectionPresent = 1;
+
+ invokeStartElement (pctxt, "rsCodeCorrection", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->rsCodeCorrection, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->rsCodeCorrection);
+
+ invokeEndElement (pctxt, "rsCodeCorrection", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL2MParameters_headerFEC */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223AL2MParameters_headerFEC (OOCTXT* pctxt, H245H223AL2MParameters_headerFEC* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* sebch16_5 */
+ case 0:
+ invokeStartElement (pctxt, "sebch16_5", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "sebch16_5", -1);
+
+ break;
+
+ /* golay24_12 */
+ case 1:
+ invokeStartElement (pctxt, "golay24_12", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "golay24_12", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL2MParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223AL2MParameters (OOCTXT* pctxt, H245H223AL2MParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode headerFEC */
+
+ invokeStartElement (pctxt, "headerFEC", -1);
+
+ stat = asn1PD_H245H223AL2MParameters_headerFEC (pctxt, &pvalue->headerFEC);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "headerFEC", -1);
+
+ /* decode alpduInterleaving */
+
+ invokeStartElement (pctxt, "alpduInterleaving", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->alpduInterleaving);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->alpduInterleaving);
+
+ invokeEndElement (pctxt, "alpduInterleaving", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL3MParameters_headerFormat */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223AL3MParameters_headerFormat (OOCTXT* pctxt, H245H223AL3MParameters_headerFormat* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* sebch16_7 */
+ case 0:
+ invokeStartElement (pctxt, "sebch16_7", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "sebch16_7", -1);
+
+ break;
+
+ /* golay24_12 */
+ case 1:
+ invokeStartElement (pctxt, "golay24_12", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "golay24_12", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL3MParameters_crcLength */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223AL3MParameters_crcLength (OOCTXT* pctxt, H245H223AL3MParameters_crcLength* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* crc4bit */
+ case 0:
+ invokeStartElement (pctxt, "crc4bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc4bit", -1);
+
+ break;
+
+ /* crc12bit */
+ case 1:
+ invokeStartElement (pctxt, "crc12bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc12bit", -1);
+
+ break;
+
+ /* crc20bit */
+ case 2:
+ invokeStartElement (pctxt, "crc20bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc20bit", -1);
+
+ break;
+
+ /* crc28bit */
+ case 3:
+ invokeStartElement (pctxt, "crc28bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc28bit", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* crc8bit */
+ case 5:
+ invokeStartElement (pctxt, "crc8bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc8bit", -1);
+
+ break;
+
+ /* crc16bit */
+ case 6:
+ invokeStartElement (pctxt, "crc16bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc16bit", -1);
+
+ break;
+
+ /* crc32bit */
+ case 7:
+ invokeStartElement (pctxt, "crc32bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc32bit", -1);
+
+ break;
+
+ /* crcNotUsed */
+ case 8:
+ invokeStartElement (pctxt, "crcNotUsed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crcNotUsed", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL3MParameters_arqType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223AL3MParameters_arqType (OOCTXT* pctxt, H245H223AL3MParameters_arqType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* noArq */
+ case 0:
+ invokeStartElement (pctxt, "noArq", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noArq", -1);
+
+ break;
+
+ /* typeIArq */
+ case 1:
+ invokeStartElement (pctxt, "typeIArq", -1);
+
+ pvalue->u.typeIArq = ALLOC_ASN1ELEM (pctxt, H245H223AnnexCArqParameters);
+
+ stat = asn1PD_H245H223AnnexCArqParameters (pctxt, pvalue->u.typeIArq);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "typeIArq", -1);
+
+ break;
+
+ /* typeIIArq */
+ case 2:
+ invokeStartElement (pctxt, "typeIIArq", -1);
+
+ pvalue->u.typeIIArq = ALLOC_ASN1ELEM (pctxt, H245H223AnnexCArqParameters);
+
+ stat = asn1PD_H245H223AnnexCArqParameters (pctxt, pvalue->u.typeIIArq);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "typeIIArq", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL3MParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223AL3MParameters (OOCTXT* pctxt, H245H223AL3MParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode headerFormat */
+
+ invokeStartElement (pctxt, "headerFormat", -1);
+
+ stat = asn1PD_H245H223AL3MParameters_headerFormat (pctxt, &pvalue->headerFormat);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "headerFormat", -1);
+
+ /* decode crcLength */
+
+ invokeStartElement (pctxt, "crcLength", -1);
+
+ stat = asn1PD_H245H223AL3MParameters_crcLength (pctxt, &pvalue->crcLength);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "crcLength", -1);
+
+ /* decode rcpcCodeRate */
+
+ invokeStartElement (pctxt, "rcpcCodeRate", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->rcpcCodeRate, 8U, 32U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->rcpcCodeRate);
+
+ invokeEndElement (pctxt, "rcpcCodeRate", -1);
+
+ /* decode arqType */
+
+ invokeStartElement (pctxt, "arqType", -1);
+
+ stat = asn1PD_H245H223AL3MParameters_arqType (pctxt, &pvalue->arqType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "arqType", -1);
+
+ /* decode alpduInterleaving */
+
+ invokeStartElement (pctxt, "alpduInterleaving", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->alpduInterleaving);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->alpduInterleaving);
+
+ invokeEndElement (pctxt, "alpduInterleaving", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.rsCodeCorrectionPresent = 1;
+
+ invokeStartElement (pctxt, "rsCodeCorrection", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->rsCodeCorrection, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->rsCodeCorrection);
+
+ invokeEndElement (pctxt, "rsCodeCorrection", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223LogicalChannelParameters_adaptationLayerType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223LogicalChannelParameters_adaptationLayerType (OOCTXT* pctxt, H245H223LogicalChannelParameters_adaptationLayerType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 5);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* al1Framed */
+ case 1:
+ invokeStartElement (pctxt, "al1Framed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "al1Framed", -1);
+
+ break;
+
+ /* al1NotFramed */
+ case 2:
+ invokeStartElement (pctxt, "al1NotFramed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "al1NotFramed", -1);
+
+ break;
+
+ /* al2WithoutSequenceNumbers */
+ case 3:
+ invokeStartElement (pctxt, "al2WithoutSequenceNumbers", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "al2WithoutSequenceNumbers", -1);
+
+ break;
+
+ /* al2WithSequenceNumbers */
+ case 4:
+ invokeStartElement (pctxt, "al2WithSequenceNumbers", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "al2WithSequenceNumbers", -1);
+
+ break;
+
+ /* al3 */
+ case 5:
+ invokeStartElement (pctxt, "al3", -1);
+
+ pvalue->u.al3 = ALLOC_ASN1ELEM (pctxt, H245H223LogicalChannelParameters_adaptationLayerType_al3);
+
+ stat = asn1PD_H245H223LogicalChannelParameters_adaptationLayerType_al3 (pctxt, pvalue->u.al3);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "al3", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 7;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* al1M */
+ case 7:
+ invokeStartElement (pctxt, "al1M", -1);
+
+ pvalue->u.al1M = ALLOC_ASN1ELEM (pctxt, H245H223AL1MParameters);
+
+ stat = asn1PD_H245H223AL1MParameters (pctxt, pvalue->u.al1M);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "al1M", -1);
+
+ break;
+
+ /* al2M */
+ case 8:
+ invokeStartElement (pctxt, "al2M", -1);
+
+ pvalue->u.al2M = ALLOC_ASN1ELEM (pctxt, H245H223AL2MParameters);
+
+ stat = asn1PD_H245H223AL2MParameters (pctxt, pvalue->u.al2M);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "al2M", -1);
+
+ break;
+
+ /* al3M */
+ case 9:
+ invokeStartElement (pctxt, "al3M", -1);
+
+ pvalue->u.al3M = ALLOC_ASN1ELEM (pctxt, H245H223AL3MParameters);
+
+ stat = asn1PD_H245H223AL3MParameters (pctxt, pvalue->u.al3M);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "al3M", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223LogicalChannelParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223LogicalChannelParameters (OOCTXT* pctxt, H245H223LogicalChannelParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode adaptationLayerType */
+
+ invokeStartElement (pctxt, "adaptationLayerType", -1);
+
+ stat = asn1PD_H245H223LogicalChannelParameters_adaptationLayerType (pctxt, &pvalue->adaptationLayerType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "adaptationLayerType", -1);
+
+ /* decode segmentableFlag */
+
+ invokeStartElement (pctxt, "segmentableFlag", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->segmentableFlag);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->segmentableFlag);
+
+ invokeEndElement (pctxt, "segmentableFlag", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CRCLength */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CRCLength (OOCTXT* pctxt, H245CRCLength* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* crc8bit */
+ case 0:
+ invokeStartElement (pctxt, "crc8bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc8bit", -1);
+
+ break;
+
+ /* crc16bit */
+ case 1:
+ invokeStartElement (pctxt, "crc16bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc16bit", -1);
+
+ break;
+
+ /* crc32bit */
+ case 2:
+ invokeStartElement (pctxt, "crc32bit", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "crc32bit", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76HDLCParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245V76HDLCParameters (OOCTXT* pctxt, H245V76HDLCParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode crcLength */
+
+ invokeStartElement (pctxt, "crcLength", -1);
+
+ stat = asn1PD_H245CRCLength (pctxt, &pvalue->crcLength);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "crcLength", -1);
+
+ /* decode n401 */
+
+ invokeStartElement (pctxt, "n401", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->n401, 1U, 4095U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->n401);
+
+ invokeEndElement (pctxt, "n401", -1);
+
+ /* decode loopbackTestProcedure */
+
+ invokeStartElement (pctxt, "loopbackTestProcedure", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->loopbackTestProcedure);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->loopbackTestProcedure);
+
+ invokeEndElement (pctxt, "loopbackTestProcedure", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters_suspendResume */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245V76LogicalChannelParameters_suspendResume (OOCTXT* pctxt, H245V76LogicalChannelParameters_suspendResume* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* noSuspendResume */
+ case 0:
+ invokeStartElement (pctxt, "noSuspendResume", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noSuspendResume", -1);
+
+ break;
+
+ /* suspendResumewAddress */
+ case 1:
+ invokeStartElement (pctxt, "suspendResumewAddress", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "suspendResumewAddress", -1);
+
+ break;
+
+ /* suspendResumewoAddress */
+ case 2:
+ invokeStartElement (pctxt, "suspendResumewoAddress", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "suspendResumewoAddress", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters_mode_eRM_recovery */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245V76LogicalChannelParameters_mode_eRM_recovery (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode_eRM_recovery* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* rej */
+ case 0:
+ invokeStartElement (pctxt, "rej", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "rej", -1);
+
+ break;
+
+ /* sREJ */
+ case 1:
+ invokeStartElement (pctxt, "sREJ", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "sREJ", -1);
+
+ break;
+
+ /* mSREJ */
+ case 2:
+ invokeStartElement (pctxt, "mSREJ", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "mSREJ", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters_mode_eRM */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245V76LogicalChannelParameters_mode_eRM (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode_eRM* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode windowSize */
+
+ invokeStartElement (pctxt, "windowSize", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->windowSize, 1U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->windowSize);
+
+ invokeEndElement (pctxt, "windowSize", -1);
+
+ /* decode recovery */
+
+ invokeStartElement (pctxt, "recovery", -1);
+
+ stat = asn1PD_H245V76LogicalChannelParameters_mode_eRM_recovery (pctxt, &pvalue->recovery);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "recovery", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters_mode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245V76LogicalChannelParameters_mode (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* eRM */
+ case 0:
+ invokeStartElement (pctxt, "eRM", -1);
+
+ pvalue->u.eRM = ALLOC_ASN1ELEM (pctxt, H245V76LogicalChannelParameters_mode_eRM);
+
+ stat = asn1PD_H245V76LogicalChannelParameters_mode_eRM (pctxt, pvalue->u.eRM);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "eRM", -1);
+
+ break;
+
+ /* uNERM */
+ case 1:
+ invokeStartElement (pctxt, "uNERM", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "uNERM", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V75Parameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245V75Parameters (OOCTXT* pctxt, H245V75Parameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode audioHeaderPresent */
+
+ invokeStartElement (pctxt, "audioHeaderPresent", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->audioHeaderPresent);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->audioHeaderPresent);
+
+ invokeEndElement (pctxt, "audioHeaderPresent", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245V76LogicalChannelParameters (OOCTXT* pctxt, H245V76LogicalChannelParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode hdlcParameters */
+
+ invokeStartElement (pctxt, "hdlcParameters", -1);
+
+ stat = asn1PD_H245V76HDLCParameters (pctxt, &pvalue->hdlcParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "hdlcParameters", -1);
+
+ /* decode suspendResume */
+
+ invokeStartElement (pctxt, "suspendResume", -1);
+
+ stat = asn1PD_H245V76LogicalChannelParameters_suspendResume (pctxt, &pvalue->suspendResume);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "suspendResume", -1);
+
+ /* decode uIH */
+
+ invokeStartElement (pctxt, "uIH", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->uIH);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->uIH);
+
+ invokeEndElement (pctxt, "uIH", -1);
+
+ /* decode mode */
+
+ invokeStartElement (pctxt, "mode", -1);
+
+ stat = asn1PD_H245V76LogicalChannelParameters_mode (pctxt, &pvalue->mode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mode", -1);
+
+ /* decode v75Parameters */
+
+ invokeStartElement (pctxt, "v75Parameters", -1);
+
+ stat = asn1PD_H245V75Parameters (pctxt, &pvalue->v75Parameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "v75Parameters", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPAddress_network */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress_iPAddress_network (OOCTXT* pctxt, H245UnicastAddress_iPAddress_network* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress_iPAddress (OOCTXT* pctxt, H245UnicastAddress_iPAddress* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode network */
+
+ invokeStartElement (pctxt, "network", -1);
+
+ stat = asn1PD_H245UnicastAddress_iPAddress_network (pctxt, &pvalue->network);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "network", -1);
+
+ /* decode tsapIdentifier */
+
+ invokeStartElement (pctxt, "tsapIdentifier", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->tsapIdentifier, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->tsapIdentifier);
+
+ invokeEndElement (pctxt, "tsapIdentifier", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPXAddress_node */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress_iPXAddress_node (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_node* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 6, 6, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPXAddress_netnum */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress_iPXAddress_netnum (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_netnum* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPXAddress_tsapIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress_iPXAddress_tsapIdentifier (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_tsapIdentifier* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 2, 2, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPXAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress_iPXAddress (OOCTXT* pctxt, H245UnicastAddress_iPXAddress* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode node */
+
+ invokeStartElement (pctxt, "node", -1);
+
+ stat = asn1PD_H245UnicastAddress_iPXAddress_node (pctxt, &pvalue->node);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "node", -1);
+
+ /* decode netnum */
+
+ invokeStartElement (pctxt, "netnum", -1);
+
+ stat = asn1PD_H245UnicastAddress_iPXAddress_netnum (pctxt, &pvalue->netnum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "netnum", -1);
+
+ /* decode tsapIdentifier */
+
+ invokeStartElement (pctxt, "tsapIdentifier", -1);
+
+ stat = asn1PD_H245UnicastAddress_iPXAddress_tsapIdentifier (pctxt, &pvalue->tsapIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tsapIdentifier", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iP6Address_network */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress_iP6Address_network (OOCTXT* pctxt, H245UnicastAddress_iP6Address_network* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iP6Address */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress_iP6Address (OOCTXT* pctxt, H245UnicastAddress_iP6Address* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode network */
+
+ invokeStartElement (pctxt, "network", -1);
+
+ stat = asn1PD_H245UnicastAddress_iP6Address_network (pctxt, &pvalue->network);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "network", -1);
+
+ /* decode tsapIdentifier */
+
+ invokeStartElement (pctxt, "tsapIdentifier", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->tsapIdentifier, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->tsapIdentifier);
+
+ invokeEndElement (pctxt, "tsapIdentifier", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_netBios */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress_netBios (OOCTXT* pctxt, H245UnicastAddress_netBios* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPSourceRouteAddress_routing */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress_iPSourceRouteAddress_routing (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_routing* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* strict */
+ case 0:
+ invokeStartElement (pctxt, "strict", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "strict", -1);
+
+ break;
+
+ /* loose */
+ case 1:
+ invokeStartElement (pctxt, "loose", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "loose", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPSourceRouteAddress_network */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress_iPSourceRouteAddress_network (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_network* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPSourceRouteAddress_route_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress_iPSourceRouteAddress_route_element (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_route_element* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245UnicastAddress_iPSourceRouteAddress_route_elem */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element (OOCTXT* pctxt, H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, H245UnicastAddress_iPSourceRouteAddress_route_element);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H245UnicastAddress_iPSourceRouteAddress_route_element (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPSourceRouteAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress_iPSourceRouteAddress (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode routing */
+
+ invokeStartElement (pctxt, "routing", -1);
+
+ stat = asn1PD_H245UnicastAddress_iPSourceRouteAddress_routing (pctxt, &pvalue->routing);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "routing", -1);
+
+ /* decode network */
+
+ invokeStartElement (pctxt, "network", -1);
+
+ stat = asn1PD_H245UnicastAddress_iPSourceRouteAddress_network (pctxt, &pvalue->network);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "network", -1);
+
+ /* decode tsapIdentifier */
+
+ invokeStartElement (pctxt, "tsapIdentifier", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->tsapIdentifier, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->tsapIdentifier);
+
+ invokeEndElement (pctxt, "tsapIdentifier", -1);
+
+ /* decode route */
+
+ invokeStartElement (pctxt, "route", -1);
+
+ stat = asn1PD_H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element (pctxt, &pvalue->route);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "route", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_nsap */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress_nsap (OOCTXT* pctxt, H245UnicastAddress_nsap* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UnicastAddress (OOCTXT* pctxt, H245UnicastAddress* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 4);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* iPAddress */
+ case 0:
+ invokeStartElement (pctxt, "iPAddress", -1);
+
+ pvalue->u.iPAddress = ALLOC_ASN1ELEM (pctxt, H245UnicastAddress_iPAddress);
+
+ stat = asn1PD_H245UnicastAddress_iPAddress (pctxt, pvalue->u.iPAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "iPAddress", -1);
+
+ break;
+
+ /* iPXAddress */
+ case 1:
+ invokeStartElement (pctxt, "iPXAddress", -1);
+
+ pvalue->u.iPXAddress = ALLOC_ASN1ELEM (pctxt, H245UnicastAddress_iPXAddress);
+
+ stat = asn1PD_H245UnicastAddress_iPXAddress (pctxt, pvalue->u.iPXAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "iPXAddress", -1);
+
+ break;
+
+ /* iP6Address */
+ case 2:
+ invokeStartElement (pctxt, "iP6Address", -1);
+
+ pvalue->u.iP6Address = ALLOC_ASN1ELEM (pctxt, H245UnicastAddress_iP6Address);
+
+ stat = asn1PD_H245UnicastAddress_iP6Address (pctxt, pvalue->u.iP6Address);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "iP6Address", -1);
+
+ break;
+
+ /* netBios */
+ case 3:
+ invokeStartElement (pctxt, "netBios", -1);
+
+ pvalue->u.netBios = ALLOC_ASN1ELEM (pctxt, H245UnicastAddress_netBios);
+
+ stat = asn1PD_H245UnicastAddress_netBios (pctxt, pvalue->u.netBios);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "netBios", -1);
+
+ break;
+
+ /* iPSourceRouteAddress */
+ case 4:
+ invokeStartElement (pctxt, "iPSourceRouteAddress", -1);
+
+ pvalue->u.iPSourceRouteAddress = ALLOC_ASN1ELEM (pctxt, H245UnicastAddress_iPSourceRouteAddress);
+
+ stat = asn1PD_H245UnicastAddress_iPSourceRouteAddress (pctxt, pvalue->u.iPSourceRouteAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "iPSourceRouteAddress", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 6;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* nsap */
+ case 6:
+ invokeStartElement (pctxt, "nsap", -1);
+
+ pvalue->u.nsap = ALLOC_ASN1ELEM (pctxt, H245UnicastAddress_nsap);
+
+ stat = asn1PD_H245UnicastAddress_nsap (pctxt, pvalue->u.nsap);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nsap", -1);
+
+ break;
+
+ /* nonStandardAddress */
+ case 7:
+ invokeStartElement (pctxt, "nonStandardAddress", -1);
+
+ pvalue->u.nonStandardAddress = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandardAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardAddress", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MulticastAddress_iPAddress_network */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MulticastAddress_iPAddress_network (OOCTXT* pctxt, H245MulticastAddress_iPAddress_network* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MulticastAddress_iPAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MulticastAddress_iPAddress (OOCTXT* pctxt, H245MulticastAddress_iPAddress* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode network */
+
+ invokeStartElement (pctxt, "network", -1);
+
+ stat = asn1PD_H245MulticastAddress_iPAddress_network (pctxt, &pvalue->network);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "network", -1);
+
+ /* decode tsapIdentifier */
+
+ invokeStartElement (pctxt, "tsapIdentifier", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->tsapIdentifier, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->tsapIdentifier);
+
+ invokeEndElement (pctxt, "tsapIdentifier", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MulticastAddress_iP6Address_network */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MulticastAddress_iP6Address_network (OOCTXT* pctxt, H245MulticastAddress_iP6Address_network* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MulticastAddress_iP6Address */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MulticastAddress_iP6Address (OOCTXT* pctxt, H245MulticastAddress_iP6Address* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode network */
+
+ invokeStartElement (pctxt, "network", -1);
+
+ stat = asn1PD_H245MulticastAddress_iP6Address_network (pctxt, &pvalue->network);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "network", -1);
+
+ /* decode tsapIdentifier */
+
+ invokeStartElement (pctxt, "tsapIdentifier", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->tsapIdentifier, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->tsapIdentifier);
+
+ invokeEndElement (pctxt, "tsapIdentifier", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MulticastAddress_nsap */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MulticastAddress_nsap (OOCTXT* pctxt, H245MulticastAddress_nsap* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MulticastAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MulticastAddress (OOCTXT* pctxt, H245MulticastAddress* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* iPAddress */
+ case 0:
+ invokeStartElement (pctxt, "iPAddress", -1);
+
+ pvalue->u.iPAddress = ALLOC_ASN1ELEM (pctxt, H245MulticastAddress_iPAddress);
+
+ stat = asn1PD_H245MulticastAddress_iPAddress (pctxt, pvalue->u.iPAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "iPAddress", -1);
+
+ break;
+
+ /* iP6Address */
+ case 1:
+ invokeStartElement (pctxt, "iP6Address", -1);
+
+ pvalue->u.iP6Address = ALLOC_ASN1ELEM (pctxt, H245MulticastAddress_iP6Address);
+
+ stat = asn1PD_H245MulticastAddress_iP6Address (pctxt, pvalue->u.iP6Address);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "iP6Address", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* nsap */
+ case 3:
+ invokeStartElement (pctxt, "nsap", -1);
+
+ pvalue->u.nsap = ALLOC_ASN1ELEM (pctxt, H245MulticastAddress_nsap);
+
+ stat = asn1PD_H245MulticastAddress_nsap (pctxt, pvalue->u.nsap);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nsap", -1);
+
+ break;
+
+ /* nonStandardAddress */
+ case 4:
+ invokeStartElement (pctxt, "nonStandardAddress", -1);
+
+ pvalue->u.nonStandardAddress = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandardAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardAddress", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TransportAddress (OOCTXT* pctxt, H245TransportAddress* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unicastAddress */
+ case 0:
+ invokeStartElement (pctxt, "unicastAddress", -1);
+
+ pvalue->u.unicastAddress = ALLOC_ASN1ELEM (pctxt, H245UnicastAddress);
+
+ stat = asn1PD_H245UnicastAddress (pctxt, pvalue->u.unicastAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "unicastAddress", -1);
+
+ break;
+
+ /* multicastAddress */
+ case 1:
+ invokeStartElement (pctxt, "multicastAddress", -1);
+
+ pvalue->u.multicastAddress = ALLOC_ASN1ELEM (pctxt, H245MulticastAddress);
+
+ stat = asn1PD_H245MulticastAddress (pctxt, pvalue->u.multicastAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multicastAddress", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* McuNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245McuNumber (OOCTXT* pctxt, H245McuNumber* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUInt8 (pctxt, pvalue, 0U, 192U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TerminalNumber (OOCTXT* pctxt, H245TerminalNumber* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUInt8 (pctxt, pvalue, 0U, 192U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalLabel */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TerminalLabel (OOCTXT* pctxt, H245TerminalLabel* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode mcuNumber */
+
+ invokeStartElement (pctxt, "mcuNumber", -1);
+
+ stat = asn1PD_H245McuNumber (pctxt, &pvalue->mcuNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mcuNumber", -1);
+
+ /* decode terminalNumber */
+
+ invokeStartElement (pctxt, "terminalNumber", -1);
+
+ stat = asn1PD_H245TerminalNumber (pctxt, &pvalue->terminalNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250LogicalChannelParameters_mediaPacketization */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H2250LogicalChannelParameters_mediaPacketization (OOCTXT* pctxt, H245H2250LogicalChannelParameters_mediaPacketization* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 0);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* h261aVideoPacketization */
+ case 0:
+ invokeStartElement (pctxt, "h261aVideoPacketization", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "h261aVideoPacketization", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 2;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* rtpPayloadType */
+ case 2:
+ invokeStartElement (pctxt, "rtpPayloadType", -1);
+
+ pvalue->u.rtpPayloadType = ALLOC_ASN1ELEM (pctxt, H245RTPPayloadType);
+
+ stat = asn1PD_H245RTPPayloadType (pctxt, pvalue->u.rtpPayloadType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rtpPayloadType", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250LogicalChannelParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H2250LogicalChannelParameters (OOCTXT* pctxt, H245H2250LogicalChannelParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.associatedSessionIDPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mediaChannelPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mediaGuaranteedDeliveryPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mediaControlChannelPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mediaControlGuaranteedDeliveryPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.silenceSuppressionPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.destinationPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.dynamicRTPPayloadTypePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mediaPacketizationPresent = optbit;
+
+ /* decode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ stat = asn1PD_H245_SeqOfH245NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+ }
+
+ /* decode sessionID */
+
+ invokeStartElement (pctxt, "sessionID", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->sessionID, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sessionID);
+
+ invokeEndElement (pctxt, "sessionID", -1);
+
+ /* decode associatedSessionID */
+
+ if (pvalue->m.associatedSessionIDPresent) {
+ invokeStartElement (pctxt, "associatedSessionID", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->associatedSessionID, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->associatedSessionID);
+
+ invokeEndElement (pctxt, "associatedSessionID", -1);
+ }
+
+ /* decode mediaChannel */
+
+ if (pvalue->m.mediaChannelPresent) {
+ invokeStartElement (pctxt, "mediaChannel", -1);
+
+ stat = asn1PD_H245TransportAddress (pctxt, &pvalue->mediaChannel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaChannel", -1);
+ }
+
+ /* decode mediaGuaranteedDelivery */
+
+ if (pvalue->m.mediaGuaranteedDeliveryPresent) {
+ invokeStartElement (pctxt, "mediaGuaranteedDelivery", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->mediaGuaranteedDelivery);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->mediaGuaranteedDelivery);
+
+ invokeEndElement (pctxt, "mediaGuaranteedDelivery", -1);
+ }
+
+ /* decode mediaControlChannel */
+
+ if (pvalue->m.mediaControlChannelPresent) {
+ invokeStartElement (pctxt, "mediaControlChannel", -1);
+
+ stat = asn1PD_H245TransportAddress (pctxt, &pvalue->mediaControlChannel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaControlChannel", -1);
+ }
+
+ /* decode mediaControlGuaranteedDelivery */
+
+ if (pvalue->m.mediaControlGuaranteedDeliveryPresent) {
+ invokeStartElement (pctxt, "mediaControlGuaranteedDelivery", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->mediaControlGuaranteedDelivery);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->mediaControlGuaranteedDelivery);
+
+ invokeEndElement (pctxt, "mediaControlGuaranteedDelivery", -1);
+ }
+
+ /* decode silenceSuppression */
+
+ if (pvalue->m.silenceSuppressionPresent) {
+ invokeStartElement (pctxt, "silenceSuppression", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->silenceSuppression);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->silenceSuppression);
+
+ invokeEndElement (pctxt, "silenceSuppression", -1);
+ }
+
+ /* decode destination */
+
+ if (pvalue->m.destinationPresent) {
+ invokeStartElement (pctxt, "destination", -1);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, &pvalue->destination);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destination", -1);
+ }
+
+ /* decode dynamicRTPPayloadType */
+
+ if (pvalue->m.dynamicRTPPayloadTypePresent) {
+ invokeStartElement (pctxt, "dynamicRTPPayloadType", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->dynamicRTPPayloadType, 96U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->dynamicRTPPayloadType);
+
+ invokeEndElement (pctxt, "dynamicRTPPayloadType", -1);
+ }
+
+ /* decode mediaPacketization */
+
+ if (pvalue->m.mediaPacketizationPresent) {
+ invokeStartElement (pctxt, "mediaPacketization", -1);
+
+ stat = asn1PD_H245H2250LogicalChannelParameters_mediaPacketization (pctxt, &pvalue->mediaPacketization);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaPacketization", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 3 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.transportCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "transportCapability", -1);
+
+ stat = asn1PD_H245TransportCapability (pctxt, &pvalue->transportCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transportCapability", -1);
+ break;
+
+ case 1:
+ pvalue->m.redundancyEncodingPresent = 1;
+
+ invokeStartElement (pctxt, "redundancyEncoding", -1);
+
+ stat = asn1PD_H245RedundancyEncoding (pctxt, &pvalue->redundancyEncoding);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "redundancyEncoding", -1);
+ break;
+
+ case 2:
+ pvalue->m.sourcePresent = 1;
+
+ invokeStartElement (pctxt, "source", -1);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, &pvalue->source);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "source", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel_forwardLogicalChannelParameters_multi */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* h222LogicalChannelParameters */
+ case 0:
+ invokeStartElement (pctxt, "h222LogicalChannelParameters", -1);
+
+ pvalue->u.h222LogicalChannelParameters = ALLOC_ASN1ELEM (pctxt, H245H222LogicalChannelParameters);
+
+ stat = asn1PD_H245H222LogicalChannelParameters (pctxt, pvalue->u.h222LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h222LogicalChannelParameters", -1);
+
+ break;
+
+ /* h223LogicalChannelParameters */
+ case 1:
+ invokeStartElement (pctxt, "h223LogicalChannelParameters", -1);
+
+ pvalue->u.h223LogicalChannelParameters = ALLOC_ASN1ELEM (pctxt, H245H223LogicalChannelParameters);
+
+ stat = asn1PD_H245H223LogicalChannelParameters (pctxt, pvalue->u.h223LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h223LogicalChannelParameters", -1);
+
+ break;
+
+ /* v76LogicalChannelParameters */
+ case 2:
+ invokeStartElement (pctxt, "v76LogicalChannelParameters", -1);
+
+ pvalue->u.v76LogicalChannelParameters = ALLOC_ASN1ELEM (pctxt, H245V76LogicalChannelParameters);
+
+ stat = asn1PD_H245V76LogicalChannelParameters (pctxt, pvalue->u.v76LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "v76LogicalChannelParameters", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* h2250LogicalChannelParameters */
+ case 4:
+ invokeStartElement (pctxt, "h2250LogicalChannelParameters", -1);
+
+ pvalue->u.h2250LogicalChannelParameters = ALLOC_ASN1ELEM (pctxt, H245H2250LogicalChannelParameters);
+
+ stat = asn1PD_H245H2250LogicalChannelParameters (pctxt, pvalue->u.h2250LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h2250LogicalChannelParameters", -1);
+
+ break;
+
+ /* none */
+ case 5:
+ invokeStartElement (pctxt, "none", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "none", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel_forwardLogicalChannelParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245OpenLogicalChannel_forwardLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannel_forwardLogicalChannelParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.portNumberPresent = optbit;
+
+ /* decode portNumber */
+
+ if (pvalue->m.portNumberPresent) {
+ invokeStartElement (pctxt, "portNumber", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->portNumber, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->portNumber);
+
+ invokeEndElement (pctxt, "portNumber", -1);
+ }
+
+ /* decode dataType */
+
+ invokeStartElement (pctxt, "dataType", -1);
+
+ stat = asn1PD_H245DataType (pctxt, &pvalue->dataType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataType", -1);
+
+ /* decode multiplexParameters */
+
+ invokeStartElement (pctxt, "multiplexParameters", -1);
+
+ stat = asn1PD_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters (pctxt, &pvalue->multiplexParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexParameters", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.forwardLogicalChannelDependencyPresent = 1;
+
+ invokeStartElement (pctxt, "forwardLogicalChannelDependency", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->forwardLogicalChannelDependency);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "forwardLogicalChannelDependency", -1);
+ break;
+
+ case 1:
+ pvalue->m.replacementForPresent = 1;
+
+ invokeStartElement (pctxt, "replacementFor", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->replacementFor);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "replacementFor", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel_reverseLogicalChannelParameters_multi */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* h223LogicalChannelParameters */
+ case 0:
+ invokeStartElement (pctxt, "h223LogicalChannelParameters", -1);
+
+ pvalue->u.h223LogicalChannelParameters = ALLOC_ASN1ELEM (pctxt, H245H223LogicalChannelParameters);
+
+ stat = asn1PD_H245H223LogicalChannelParameters (pctxt, pvalue->u.h223LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h223LogicalChannelParameters", -1);
+
+ break;
+
+ /* v76LogicalChannelParameters */
+ case 1:
+ invokeStartElement (pctxt, "v76LogicalChannelParameters", -1);
+
+ pvalue->u.v76LogicalChannelParameters = ALLOC_ASN1ELEM (pctxt, H245V76LogicalChannelParameters);
+
+ stat = asn1PD_H245V76LogicalChannelParameters (pctxt, pvalue->u.v76LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "v76LogicalChannelParameters", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* h2250LogicalChannelParameters */
+ case 3:
+ invokeStartElement (pctxt, "h2250LogicalChannelParameters", -1);
+
+ pvalue->u.h2250LogicalChannelParameters = ALLOC_ASN1ELEM (pctxt, H245H2250LogicalChannelParameters);
+
+ stat = asn1PD_H245H2250LogicalChannelParameters (pctxt, pvalue->u.h2250LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h2250LogicalChannelParameters", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel_reverseLogicalChannelParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245OpenLogicalChannel_reverseLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannel_reverseLogicalChannelParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.multiplexParametersPresent = optbit;
+
+ /* decode dataType */
+
+ invokeStartElement (pctxt, "dataType", -1);
+
+ stat = asn1PD_H245DataType (pctxt, &pvalue->dataType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataType", -1);
+
+ /* decode multiplexParameters */
+
+ if (pvalue->m.multiplexParametersPresent) {
+ invokeStartElement (pctxt, "multiplexParameters", -1);
+
+ stat = asn1PD_H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters (pctxt, &pvalue->multiplexParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexParameters", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.reverseLogicalChannelDependencyPresent = 1;
+
+ invokeStartElement (pctxt, "reverseLogicalChannelDependency", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->reverseLogicalChannelDependency);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "reverseLogicalChannelDependency", -1);
+ break;
+
+ case 1:
+ pvalue->m.replacementForPresent = 1;
+
+ invokeStartElement (pctxt, "replacementFor", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->replacementFor);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "replacementFor", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters_distribution */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NetworkAccessParameters_distribution (OOCTXT* pctxt, H245NetworkAccessParameters_distribution* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unicast */
+ case 0:
+ invokeStartElement (pctxt, "unicast", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unicast", -1);
+
+ break;
+
+ /* multicast */
+ case 1:
+ invokeStartElement (pctxt, "multicast", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "multicast", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters_networkAddress */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_MULTIMEDIA_SYSTEM_CONTROL_NetworkAccessParameters_networkAddress_e164Address_CharSet;
+
+EXTERN int asn1PD_H245NetworkAccessParameters_networkAddress (OOCTXT* pctxt, H245NetworkAccessParameters_networkAddress* pvalue)
+{
+ static Asn1SizeCnst e164Address_lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* q2931Address */
+ case 0:
+ invokeStartElement (pctxt, "q2931Address", -1);
+
+ pvalue->u.q2931Address = ALLOC_ASN1ELEM (pctxt, H245Q2931Address);
+
+ stat = asn1PD_H245Q2931Address (pctxt, pvalue->u.q2931Address);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "q2931Address", -1);
+
+ break;
+
+ /* e164Address */
+ case 1:
+ invokeStartElement (pctxt, "e164Address", -1);
+
+ addSizeConstraint (pctxt, &e164Address_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.e164Address, gs_MULTIMEDIA_SYSTEM_CONTROL_NetworkAccessParameters_networkAddress_e164Address_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.e164Address);
+
+ invokeEndElement (pctxt, "e164Address", -1);
+
+ break;
+
+ /* localAreaAddress */
+ case 2:
+ invokeStartElement (pctxt, "localAreaAddress", -1);
+
+ pvalue->u.localAreaAddress = ALLOC_ASN1ELEM (pctxt, H245TransportAddress);
+
+ stat = asn1PD_H245TransportAddress (pctxt, pvalue->u.localAreaAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "localAreaAddress", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters_externalReference */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NetworkAccessParameters_externalReference (OOCTXT* pctxt, H245NetworkAccessParameters_externalReference* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 255, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters_t120SetupProcedure */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NetworkAccessParameters_t120SetupProcedure (OOCTXT* pctxt, H245NetworkAccessParameters_t120SetupProcedure* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* originateCall */
+ case 0:
+ invokeStartElement (pctxt, "originateCall", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "originateCall", -1);
+
+ break;
+
+ /* waitForCall */
+ case 1:
+ invokeStartElement (pctxt, "waitForCall", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "waitForCall", -1);
+
+ break;
+
+ /* issueQuery */
+ case 2:
+ invokeStartElement (pctxt, "issueQuery", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "issueQuery", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NetworkAccessParameters (OOCTXT* pctxt, H245NetworkAccessParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.distributionPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.externalReferencePresent = optbit;
+
+ /* decode distribution */
+
+ if (pvalue->m.distributionPresent) {
+ invokeStartElement (pctxt, "distribution", -1);
+
+ stat = asn1PD_H245NetworkAccessParameters_distribution (pctxt, &pvalue->distribution);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "distribution", -1);
+ }
+
+ /* decode networkAddress */
+
+ invokeStartElement (pctxt, "networkAddress", -1);
+
+ stat = asn1PD_H245NetworkAccessParameters_networkAddress (pctxt, &pvalue->networkAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "networkAddress", -1);
+
+ /* decode associateConference */
+
+ invokeStartElement (pctxt, "associateConference", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->associateConference);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->associateConference);
+
+ invokeEndElement (pctxt, "associateConference", -1);
+
+ /* decode externalReference */
+
+ if (pvalue->m.externalReferencePresent) {
+ invokeStartElement (pctxt, "externalReference", -1);
+
+ stat = asn1PD_H245NetworkAccessParameters_externalReference (pctxt, &pvalue->externalReference);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "externalReference", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.t120SetupProcedurePresent = 1;
+
+ invokeStartElement (pctxt, "t120SetupProcedure", -1);
+
+ stat = asn1PD_H245NetworkAccessParameters_t120SetupProcedure (pctxt, &pvalue->t120SetupProcedure);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t120SetupProcedure", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EscrowData_escrowValue */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EscrowData_escrowValue (OOCTXT* pctxt, H245EscrowData_escrowValue* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 65535, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EscrowData */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EscrowData (OOCTXT* pctxt, H245EscrowData* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode escrowID */
+
+ invokeStartElement (pctxt, "escrowID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->escrowID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->escrowID.numids, pvalue->escrowID.subid);
+
+ invokeEndElement (pctxt, "escrowID", -1);
+
+ /* decode escrowValue */
+
+ invokeStartElement (pctxt, "escrowValue", -1);
+
+ stat = asn1PD_H245EscrowData_escrowValue (pctxt, &pvalue->escrowValue);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "escrowValue", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionSync_escrowentry */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EncryptionSync_escrowentry (OOCTXT* pctxt, H245EncryptionSync_escrowentry* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245EscrowData* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245EscrowData);
+
+ stat = asn1PD_H245EscrowData (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionSync */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EncryptionSync (OOCTXT* pctxt, H245EncryptionSync* pvalue)
+{
+ static Asn1SizeCnst h235Key_lsize1 = { 0, 1, 65535, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.escrowentryPresent = optbit;
+
+ /* decode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+ }
+
+ /* decode synchFlag */
+
+ invokeStartElement (pctxt, "synchFlag", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->synchFlag, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->synchFlag);
+
+ invokeEndElement (pctxt, "synchFlag", -1);
+
+ /* decode h235Key */
+
+ invokeStartElement (pctxt, "h235Key", -1);
+
+ addSizeConstraint (pctxt, &h235Key_lsize1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->h235Key);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->h235Key.numocts, pvalue->h235Key.data);
+
+ invokeEndElement (pctxt, "h235Key", -1);
+
+ /* decode escrowentry */
+
+ if (pvalue->m.escrowentryPresent) {
+ invokeStartElement (pctxt, "escrowentry", -1);
+
+ stat = asn1PD_H245EncryptionSync_escrowentry (pctxt, &pvalue->escrowentry);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "escrowentry", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245OpenLogicalChannel (OOCTXT* pctxt, H245OpenLogicalChannel* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.reverseLogicalChannelParametersPresent = optbit;
+
+ /* decode forwardLogicalChannelNumber */
+
+ invokeStartElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ /* decode forwardLogicalChannelParameters */
+
+ invokeStartElement (pctxt, "forwardLogicalChannelParameters", -1);
+
+ stat = asn1PD_H245OpenLogicalChannel_forwardLogicalChannelParameters (pctxt, &pvalue->forwardLogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "forwardLogicalChannelParameters", -1);
+
+ /* decode reverseLogicalChannelParameters */
+
+ if (pvalue->m.reverseLogicalChannelParametersPresent) {
+ invokeStartElement (pctxt, "reverseLogicalChannelParameters", -1);
+
+ stat = asn1PD_H245OpenLogicalChannel_reverseLogicalChannelParameters (pctxt, &pvalue->reverseLogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "reverseLogicalChannelParameters", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.separateStackPresent = 1;
+
+ invokeStartElement (pctxt, "separateStack", -1);
+
+ stat = asn1PD_H245NetworkAccessParameters (pctxt, &pvalue->separateStack);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "separateStack", -1);
+ break;
+
+ case 1:
+ pvalue->m.encryptionSyncPresent = 1;
+
+ invokeStartElement (pctxt, "encryptionSync", -1);
+
+ stat = asn1PD_H245EncryptionSync (pctxt, &pvalue->encryptionSync);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "encryptionSync", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CloseLogicalChannel_source */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CloseLogicalChannel_source (OOCTXT* pctxt, H245CloseLogicalChannel_source* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* user */
+ case 0:
+ invokeStartElement (pctxt, "user", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "user", -1);
+
+ break;
+
+ /* lcse */
+ case 1:
+ invokeStartElement (pctxt, "lcse", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "lcse", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CloseLogicalChannel_reason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CloseLogicalChannel_reason (OOCTXT* pctxt, H245CloseLogicalChannel_reason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unknown */
+ case 0:
+ invokeStartElement (pctxt, "unknown", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unknown", -1);
+
+ break;
+
+ /* reopen */
+ case 1:
+ invokeStartElement (pctxt, "reopen", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "reopen", -1);
+
+ break;
+
+ /* reservationFailure */
+ case 2:
+ invokeStartElement (pctxt, "reservationFailure", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "reservationFailure", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CloseLogicalChannel */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CloseLogicalChannel (OOCTXT* pctxt, H245CloseLogicalChannel* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode forwardLogicalChannelNumber */
+
+ invokeStartElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ /* decode source */
+
+ invokeStartElement (pctxt, "source", -1);
+
+ stat = asn1PD_H245CloseLogicalChannel_source (pctxt, &pvalue->source);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "source", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.reasonPresent = 1;
+
+ invokeStartElement (pctxt, "reason", -1);
+
+ stat = asn1PD_H245CloseLogicalChannel_reason (pctxt, &pvalue->reason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "reason", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestChannelClose_reason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestChannelClose_reason (OOCTXT* pctxt, H245RequestChannelClose_reason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unknown */
+ case 0:
+ invokeStartElement (pctxt, "unknown", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unknown", -1);
+
+ break;
+
+ /* normal */
+ case 1:
+ invokeStartElement (pctxt, "normal", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "normal", -1);
+
+ break;
+
+ /* reopen */
+ case 2:
+ invokeStartElement (pctxt, "reopen", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "reopen", -1);
+
+ break;
+
+ /* reservationFailure */
+ case 3:
+ invokeStartElement (pctxt, "reservationFailure", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "reservationFailure", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestChannelClose */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestChannelClose (OOCTXT* pctxt, H245RequestChannelClose* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode forwardLogicalChannelNumber */
+
+ invokeStartElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.qosCapabilityPresent = 1;
+
+ invokeStartElement (pctxt, "qosCapability", -1);
+
+ stat = asn1PD_H245QOSCapability (pctxt, &pvalue->qosCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "qosCapability", -1);
+ break;
+
+ case 1:
+ pvalue->m.reasonPresent = 1;
+
+ invokeStartElement (pctxt, "reason", -1);
+
+ stat = asn1PD_H245RequestChannelClose_reason (pctxt, &pvalue->reason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "reason", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexTableEntryNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexTableEntryNumber* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUInt8 (pctxt, pvalue, 1U, 15U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexElement_type_subElementList */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexElement_type_subElementList (OOCTXT* pctxt, H245MultiplexElement_type_subElementList* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 2, 255, 0 };
+ int stat = ASN_OK;
+ H245MultiplexElement* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245MultiplexElement);
+
+ stat = asn1PD_H245MultiplexElement (pctxt, (H245MultiplexElement*)pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexElement_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexElement_type (OOCTXT* pctxt, H245MultiplexElement_type* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* logicalChannelNumber */
+ case 0:
+ invokeStartElement (pctxt, "logicalChannelNumber", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.logicalChannelNumber, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.logicalChannelNumber);
+
+ invokeEndElement (pctxt, "logicalChannelNumber", -1);
+
+ break;
+
+ /* subElementList */
+ case 1:
+ invokeStartElement (pctxt, "subElementList", -1);
+
+ pvalue->u.subElementList = ALLOC_ASN1ELEM (pctxt, H245MultiplexElement_type_subElementList);
+
+ stat = asn1PD_H245MultiplexElement_type_subElementList (pctxt, pvalue->u.subElementList);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "subElementList", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexElement_repeatCount */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexElement_repeatCount (OOCTXT* pctxt, H245MultiplexElement_repeatCount* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* finite */
+ case 0:
+ invokeStartElement (pctxt, "finite", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.finite, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.finite);
+
+ invokeEndElement (pctxt, "finite", -1);
+
+ break;
+
+ /* untilClosingFlag */
+ case 1:
+ invokeStartElement (pctxt, "untilClosingFlag", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "untilClosingFlag", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexElement (OOCTXT* pctxt, H245MultiplexElement* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode type */
+
+ invokeStartElement (pctxt, "type", -1);
+
+ stat = asn1PD_H245MultiplexElement_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "type", -1);
+
+ /* decode repeatCount */
+
+ invokeStartElement (pctxt, "repeatCount", -1);
+
+ stat = asn1PD_H245MultiplexElement_repeatCount (pctxt, &pvalue->repeatCount);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "repeatCount", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntryDescriptor_elementList */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexEntryDescriptor_elementList (OOCTXT* pctxt, H245MultiplexEntryDescriptor_elementList* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245MultiplexElement* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245MultiplexElement);
+
+ stat = asn1PD_H245MultiplexElement (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntryDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexEntryDescriptor (OOCTXT* pctxt, H245MultiplexEntryDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL optbit;
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.elementListPresent = optbit;
+
+ /* decode multiplexTableEntryNumber */
+
+ invokeStartElement (pctxt, "multiplexTableEntryNumber", -1);
+
+ stat = asn1PD_H245MultiplexTableEntryNumber (pctxt, &pvalue->multiplexTableEntryNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexTableEntryNumber", -1);
+
+ /* decode elementList */
+
+ if (pvalue->m.elementListPresent) {
+ invokeStartElement (pctxt, "elementList", -1);
+
+ stat = asn1PD_H245MultiplexEntryDescriptor_elementList (pctxt, &pvalue->elementList);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "elementList", -1);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySend_multiplexEntryDescriptors */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexEntrySend_multiplexEntryDescriptors (OOCTXT* pctxt, H245MultiplexEntrySend_multiplexEntryDescriptors* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ H245MultiplexEntryDescriptor* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245MultiplexEntryDescriptor);
+
+ stat = asn1PD_H245MultiplexEntryDescriptor (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySend */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexEntrySend (OOCTXT* pctxt, H245MultiplexEntrySend* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ /* decode multiplexEntryDescriptors */
+
+ invokeStartElement (pctxt, "multiplexEntryDescriptors", -1);
+
+ stat = asn1PD_H245MultiplexEntrySend_multiplexEntryDescriptors (pctxt, &pvalue->multiplexEntryDescriptors);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexEntryDescriptors", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntry_entryNumbers */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestMultiplexEntry_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntry_entryNumbers* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H245MultiplexTableEntryNumber (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntry */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestMultiplexEntry (OOCTXT* pctxt, H245RequestMultiplexEntry* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode entryNumbers */
+
+ invokeStartElement (pctxt, "entryNumbers", -1);
+
+ stat = asn1PD_H245RequestMultiplexEntry_entryNumbers (pctxt, &pvalue->entryNumbers);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "entryNumbers", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H261VideoMode_resolution */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H261VideoMode_resolution (OOCTXT* pctxt, H245H261VideoMode_resolution* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* qcif */
+ case 0:
+ invokeStartElement (pctxt, "qcif", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "qcif", -1);
+
+ break;
+
+ /* cif */
+ case 1:
+ invokeStartElement (pctxt, "cif", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "cif", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H261VideoMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H261VideoMode (OOCTXT* pctxt, H245H261VideoMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode resolution */
+
+ invokeStartElement (pctxt, "resolution", -1);
+
+ stat = asn1PD_H245H261VideoMode_resolution (pctxt, &pvalue->resolution);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "resolution", -1);
+
+ /* decode bitRate */
+
+ invokeStartElement (pctxt, "bitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->bitRate, 1U, 19200U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bitRate);
+
+ invokeEndElement (pctxt, "bitRate", -1);
+
+ /* decode stillImageTransmission */
+
+ invokeStartElement (pctxt, "stillImageTransmission", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->stillImageTransmission);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->stillImageTransmission);
+
+ invokeEndElement (pctxt, "stillImageTransmission", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H262VideoMode_profileAndLevel */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H262VideoMode_profileAndLevel (OOCTXT* pctxt, H245H262VideoMode_profileAndLevel* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 10);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* profileAndLevel_SPatML */
+ case 0:
+ invokeStartElement (pctxt, "profileAndLevel_SPatML", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "profileAndLevel_SPatML", -1);
+
+ break;
+
+ /* profileAndLevel_MPatLL */
+ case 1:
+ invokeStartElement (pctxt, "profileAndLevel_MPatLL", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "profileAndLevel_MPatLL", -1);
+
+ break;
+
+ /* profileAndLevel_MPatML */
+ case 2:
+ invokeStartElement (pctxt, "profileAndLevel_MPatML", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "profileAndLevel_MPatML", -1);
+
+ break;
+
+ /* profileAndLevel_MPatH_14 */
+ case 3:
+ invokeStartElement (pctxt, "profileAndLevel_MPatH_14", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "profileAndLevel_MPatH_14", -1);
+
+ break;
+
+ /* profileAndLevel_MPatHL */
+ case 4:
+ invokeStartElement (pctxt, "profileAndLevel_MPatHL", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "profileAndLevel_MPatHL", -1);
+
+ break;
+
+ /* profileAndLevel_SNRatLL */
+ case 5:
+ invokeStartElement (pctxt, "profileAndLevel_SNRatLL", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "profileAndLevel_SNRatLL", -1);
+
+ break;
+
+ /* profileAndLevel_SNRatML */
+ case 6:
+ invokeStartElement (pctxt, "profileAndLevel_SNRatML", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "profileAndLevel_SNRatML", -1);
+
+ break;
+
+ /* profileAndLevel_SpatialatH_14 */
+ case 7:
+ invokeStartElement (pctxt, "profileAndLevel_SpatialatH_14", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "profileAndLevel_SpatialatH_14", -1);
+
+ break;
+
+ /* profileAndLevel_HPatML */
+ case 8:
+ invokeStartElement (pctxt, "profileAndLevel_HPatML", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "profileAndLevel_HPatML", -1);
+
+ break;
+
+ /* profileAndLevel_HPatH_14 */
+ case 9:
+ invokeStartElement (pctxt, "profileAndLevel_HPatH_14", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "profileAndLevel_HPatH_14", -1);
+
+ break;
+
+ /* profileAndLevel_HPatHL */
+ case 10:
+ invokeStartElement (pctxt, "profileAndLevel_HPatHL", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "profileAndLevel_HPatHL", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 12;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H262VideoMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H262VideoMode (OOCTXT* pctxt, H245H262VideoMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.videoBitRatePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.vbvBufferSizePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.samplesPerLinePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.linesPerFramePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.framesPerSecondPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.luminanceSampleRatePresent = optbit;
+
+ /* decode profileAndLevel */
+
+ invokeStartElement (pctxt, "profileAndLevel", -1);
+
+ stat = asn1PD_H245H262VideoMode_profileAndLevel (pctxt, &pvalue->profileAndLevel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "profileAndLevel", -1);
+
+ /* decode videoBitRate */
+
+ if (pvalue->m.videoBitRatePresent) {
+ invokeStartElement (pctxt, "videoBitRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->videoBitRate, 0U, 1073741823U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->videoBitRate);
+
+ invokeEndElement (pctxt, "videoBitRate", -1);
+ }
+
+ /* decode vbvBufferSize */
+
+ if (pvalue->m.vbvBufferSizePresent) {
+ invokeStartElement (pctxt, "vbvBufferSize", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->vbvBufferSize, 0U, 262143U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->vbvBufferSize);
+
+ invokeEndElement (pctxt, "vbvBufferSize", -1);
+ }
+
+ /* decode samplesPerLine */
+
+ if (pvalue->m.samplesPerLinePresent) {
+ invokeStartElement (pctxt, "samplesPerLine", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->samplesPerLine, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->samplesPerLine);
+
+ invokeEndElement (pctxt, "samplesPerLine", -1);
+ }
+
+ /* decode linesPerFrame */
+
+ if (pvalue->m.linesPerFramePresent) {
+ invokeStartElement (pctxt, "linesPerFrame", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->linesPerFrame, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->linesPerFrame);
+
+ invokeEndElement (pctxt, "linesPerFrame", -1);
+ }
+
+ /* decode framesPerSecond */
+
+ if (pvalue->m.framesPerSecondPresent) {
+ invokeStartElement (pctxt, "framesPerSecond", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->framesPerSecond, 0U, 15U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->framesPerSecond);
+
+ invokeEndElement (pctxt, "framesPerSecond", -1);
+ }
+
+ /* decode luminanceSampleRate */
+
+ if (pvalue->m.luminanceSampleRatePresent) {
+ invokeStartElement (pctxt, "luminanceSampleRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->luminanceSampleRate, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->luminanceSampleRate);
+
+ invokeEndElement (pctxt, "luminanceSampleRate", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263VideoMode_resolution */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H263VideoMode_resolution (OOCTXT* pctxt, H245H263VideoMode_resolution* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 4);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* sqcif */
+ case 0:
+ invokeStartElement (pctxt, "sqcif", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "sqcif", -1);
+
+ break;
+
+ /* qcif */
+ case 1:
+ invokeStartElement (pctxt, "qcif", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "qcif", -1);
+
+ break;
+
+ /* cif */
+ case 2:
+ invokeStartElement (pctxt, "cif", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "cif", -1);
+
+ break;
+
+ /* cif4 */
+ case 3:
+ invokeStartElement (pctxt, "cif4", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "cif4", -1);
+
+ break;
+
+ /* cif16 */
+ case 4:
+ invokeStartElement (pctxt, "cif16", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "cif16", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 6;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* custom */
+ case 6:
+ invokeStartElement (pctxt, "custom", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "custom", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263VideoMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H263VideoMode (OOCTXT* pctxt, H245H263VideoMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode resolution */
+
+ invokeStartElement (pctxt, "resolution", -1);
+
+ stat = asn1PD_H245H263VideoMode_resolution (pctxt, &pvalue->resolution);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "resolution", -1);
+
+ /* decode bitRate */
+
+ invokeStartElement (pctxt, "bitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->bitRate, 1U, 19200U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bitRate);
+
+ invokeEndElement (pctxt, "bitRate", -1);
+
+ /* decode unrestrictedVector */
+
+ invokeStartElement (pctxt, "unrestrictedVector", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->unrestrictedVector);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->unrestrictedVector);
+
+ invokeEndElement (pctxt, "unrestrictedVector", -1);
+
+ /* decode arithmeticCoding */
+
+ invokeStartElement (pctxt, "arithmeticCoding", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->arithmeticCoding);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->arithmeticCoding);
+
+ invokeEndElement (pctxt, "arithmeticCoding", -1);
+
+ /* decode advancedPrediction */
+
+ invokeStartElement (pctxt, "advancedPrediction", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->advancedPrediction);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->advancedPrediction);
+
+ invokeEndElement (pctxt, "advancedPrediction", -1);
+
+ /* decode pbFrames */
+
+ invokeStartElement (pctxt, "pbFrames", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->pbFrames);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->pbFrames);
+
+ invokeEndElement (pctxt, "pbFrames", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 3 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.errorCompensationPresent = 1;
+
+ invokeStartElement (pctxt, "errorCompensation", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->errorCompensation);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->errorCompensation);
+
+ invokeEndElement (pctxt, "errorCompensation", -1);
+ break;
+
+ case 1:
+ pvalue->m.enhancementLayerInfoPresent = 1;
+
+ invokeStartElement (pctxt, "enhancementLayerInfo", -1);
+
+ stat = asn1PD_H245EnhancementLayerInfo (pctxt, &pvalue->enhancementLayerInfo);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "enhancementLayerInfo", -1);
+ break;
+
+ case 2:
+ pvalue->m.h263OptionsPresent = 1;
+
+ invokeStartElement (pctxt, "h263Options", -1);
+
+ stat = asn1PD_H245H263Options (pctxt, &pvalue->h263Options);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h263Options", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS11172VideoMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245IS11172VideoMode (OOCTXT* pctxt, H245IS11172VideoMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.videoBitRatePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.vbvBufferSizePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.samplesPerLinePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.linesPerFramePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.pictureRatePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.luminanceSampleRatePresent = optbit;
+
+ /* decode constrainedBitstream */
+
+ invokeStartElement (pctxt, "constrainedBitstream", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->constrainedBitstream);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->constrainedBitstream);
+
+ invokeEndElement (pctxt, "constrainedBitstream", -1);
+
+ /* decode videoBitRate */
+
+ if (pvalue->m.videoBitRatePresent) {
+ invokeStartElement (pctxt, "videoBitRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->videoBitRate, 0U, 1073741823U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->videoBitRate);
+
+ invokeEndElement (pctxt, "videoBitRate", -1);
+ }
+
+ /* decode vbvBufferSize */
+
+ if (pvalue->m.vbvBufferSizePresent) {
+ invokeStartElement (pctxt, "vbvBufferSize", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->vbvBufferSize, 0U, 262143U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->vbvBufferSize);
+
+ invokeEndElement (pctxt, "vbvBufferSize", -1);
+ }
+
+ /* decode samplesPerLine */
+
+ if (pvalue->m.samplesPerLinePresent) {
+ invokeStartElement (pctxt, "samplesPerLine", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->samplesPerLine, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->samplesPerLine);
+
+ invokeEndElement (pctxt, "samplesPerLine", -1);
+ }
+
+ /* decode linesPerFrame */
+
+ if (pvalue->m.linesPerFramePresent) {
+ invokeStartElement (pctxt, "linesPerFrame", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->linesPerFrame, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->linesPerFrame);
+
+ invokeEndElement (pctxt, "linesPerFrame", -1);
+ }
+
+ /* decode pictureRate */
+
+ if (pvalue->m.pictureRatePresent) {
+ invokeStartElement (pctxt, "pictureRate", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->pictureRate, 0U, 15U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->pictureRate);
+
+ invokeEndElement (pctxt, "pictureRate", -1);
+ }
+
+ /* decode luminanceSampleRate */
+
+ if (pvalue->m.luminanceSampleRatePresent) {
+ invokeStartElement (pctxt, "luminanceSampleRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->luminanceSampleRate, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->luminanceSampleRate);
+
+ invokeEndElement (pctxt, "luminanceSampleRate", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VideoMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VideoMode (OOCTXT* pctxt, H245VideoMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 4);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* h261VideoMode */
+ case 1:
+ invokeStartElement (pctxt, "h261VideoMode", -1);
+
+ pvalue->u.h261VideoMode = ALLOC_ASN1ELEM (pctxt, H245H261VideoMode);
+
+ stat = asn1PD_H245H261VideoMode (pctxt, pvalue->u.h261VideoMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h261VideoMode", -1);
+
+ break;
+
+ /* h262VideoMode */
+ case 2:
+ invokeStartElement (pctxt, "h262VideoMode", -1);
+
+ pvalue->u.h262VideoMode = ALLOC_ASN1ELEM (pctxt, H245H262VideoMode);
+
+ stat = asn1PD_H245H262VideoMode (pctxt, pvalue->u.h262VideoMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h262VideoMode", -1);
+
+ break;
+
+ /* h263VideoMode */
+ case 3:
+ invokeStartElement (pctxt, "h263VideoMode", -1);
+
+ pvalue->u.h263VideoMode = ALLOC_ASN1ELEM (pctxt, H245H263VideoMode);
+
+ stat = asn1PD_H245H263VideoMode (pctxt, pvalue->u.h263VideoMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h263VideoMode", -1);
+
+ break;
+
+ /* is11172VideoMode */
+ case 4:
+ invokeStartElement (pctxt, "is11172VideoMode", -1);
+
+ pvalue->u.is11172VideoMode = ALLOC_ASN1ELEM (pctxt, H245IS11172VideoMode);
+
+ stat = asn1PD_H245IS11172VideoMode (pctxt, pvalue->u.is11172VideoMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "is11172VideoMode", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 6;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* genericVideoMode */
+ case 6:
+ invokeStartElement (pctxt, "genericVideoMode", -1);
+
+ pvalue->u.genericVideoMode = ALLOC_ASN1ELEM (pctxt, H245GenericCapability);
+
+ stat = asn1PD_H245GenericCapability (pctxt, pvalue->u.genericVideoMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericVideoMode", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AudioMode_g7231 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245AudioMode_g7231 (OOCTXT* pctxt, H245AudioMode_g7231* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* noSilenceSuppressionLowRate */
+ case 0:
+ invokeStartElement (pctxt, "noSilenceSuppressionLowRate", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noSilenceSuppressionLowRate", -1);
+
+ break;
+
+ /* noSilenceSuppressionHighRate */
+ case 1:
+ invokeStartElement (pctxt, "noSilenceSuppressionHighRate", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noSilenceSuppressionHighRate", -1);
+
+ break;
+
+ /* silenceSuppressionLowRate */
+ case 2:
+ invokeStartElement (pctxt, "silenceSuppressionLowRate", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "silenceSuppressionLowRate", -1);
+
+ break;
+
+ /* silenceSuppressionHighRate */
+ case 3:
+ invokeStartElement (pctxt, "silenceSuppressionHighRate", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "silenceSuppressionHighRate", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS11172AudioMode_audioLayer */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245IS11172AudioMode_audioLayer (OOCTXT* pctxt, H245IS11172AudioMode_audioLayer* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* audioLayer1 */
+ case 0:
+ invokeStartElement (pctxt, "audioLayer1", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioLayer1", -1);
+
+ break;
+
+ /* audioLayer2 */
+ case 1:
+ invokeStartElement (pctxt, "audioLayer2", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioLayer2", -1);
+
+ break;
+
+ /* audioLayer3 */
+ case 2:
+ invokeStartElement (pctxt, "audioLayer3", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioLayer3", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS11172AudioMode_audioSampling */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245IS11172AudioMode_audioSampling (OOCTXT* pctxt, H245IS11172AudioMode_audioSampling* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* audioSampling32k */
+ case 0:
+ invokeStartElement (pctxt, "audioSampling32k", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioSampling32k", -1);
+
+ break;
+
+ /* audioSampling44k1 */
+ case 1:
+ invokeStartElement (pctxt, "audioSampling44k1", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioSampling44k1", -1);
+
+ break;
+
+ /* audioSampling48k */
+ case 2:
+ invokeStartElement (pctxt, "audioSampling48k", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioSampling48k", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS11172AudioMode_multichannelType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245IS11172AudioMode_multichannelType (OOCTXT* pctxt, H245IS11172AudioMode_multichannelType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* singleChannel */
+ case 0:
+ invokeStartElement (pctxt, "singleChannel", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "singleChannel", -1);
+
+ break;
+
+ /* twoChannelStereo */
+ case 1:
+ invokeStartElement (pctxt, "twoChannelStereo", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "twoChannelStereo", -1);
+
+ break;
+
+ /* twoChannelDual */
+ case 2:
+ invokeStartElement (pctxt, "twoChannelDual", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "twoChannelDual", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS11172AudioMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245IS11172AudioMode (OOCTXT* pctxt, H245IS11172AudioMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode audioLayer */
+
+ invokeStartElement (pctxt, "audioLayer", -1);
+
+ stat = asn1PD_H245IS11172AudioMode_audioLayer (pctxt, &pvalue->audioLayer);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "audioLayer", -1);
+
+ /* decode audioSampling */
+
+ invokeStartElement (pctxt, "audioSampling", -1);
+
+ stat = asn1PD_H245IS11172AudioMode_audioSampling (pctxt, &pvalue->audioSampling);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "audioSampling", -1);
+
+ /* decode multichannelType */
+
+ invokeStartElement (pctxt, "multichannelType", -1);
+
+ stat = asn1PD_H245IS11172AudioMode_multichannelType (pctxt, &pvalue->multichannelType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multichannelType", -1);
+
+ /* decode bitRate */
+
+ invokeStartElement (pctxt, "bitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->bitRate, 1U, 448U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bitRate);
+
+ invokeEndElement (pctxt, "bitRate", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS13818AudioMode_audioLayer */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245IS13818AudioMode_audioLayer (OOCTXT* pctxt, H245IS13818AudioMode_audioLayer* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* audioLayer1 */
+ case 0:
+ invokeStartElement (pctxt, "audioLayer1", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioLayer1", -1);
+
+ break;
+
+ /* audioLayer2 */
+ case 1:
+ invokeStartElement (pctxt, "audioLayer2", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioLayer2", -1);
+
+ break;
+
+ /* audioLayer3 */
+ case 2:
+ invokeStartElement (pctxt, "audioLayer3", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioLayer3", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS13818AudioMode_audioSampling */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245IS13818AudioMode_audioSampling (OOCTXT* pctxt, H245IS13818AudioMode_audioSampling* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 5);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* audioSampling16k */
+ case 0:
+ invokeStartElement (pctxt, "audioSampling16k", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioSampling16k", -1);
+
+ break;
+
+ /* audioSampling22k05 */
+ case 1:
+ invokeStartElement (pctxt, "audioSampling22k05", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioSampling22k05", -1);
+
+ break;
+
+ /* audioSampling24k */
+ case 2:
+ invokeStartElement (pctxt, "audioSampling24k", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioSampling24k", -1);
+
+ break;
+
+ /* audioSampling32k */
+ case 3:
+ invokeStartElement (pctxt, "audioSampling32k", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioSampling32k", -1);
+
+ break;
+
+ /* audioSampling44k1 */
+ case 4:
+ invokeStartElement (pctxt, "audioSampling44k1", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioSampling44k1", -1);
+
+ break;
+
+ /* audioSampling48k */
+ case 5:
+ invokeStartElement (pctxt, "audioSampling48k", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "audioSampling48k", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS13818AudioMode_multichannelType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245IS13818AudioMode_multichannelType (OOCTXT* pctxt, H245IS13818AudioMode_multichannelType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 9);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* singleChannel */
+ case 0:
+ invokeStartElement (pctxt, "singleChannel", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "singleChannel", -1);
+
+ break;
+
+ /* twoChannelStereo */
+ case 1:
+ invokeStartElement (pctxt, "twoChannelStereo", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "twoChannelStereo", -1);
+
+ break;
+
+ /* twoChannelDual */
+ case 2:
+ invokeStartElement (pctxt, "twoChannelDual", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "twoChannelDual", -1);
+
+ break;
+
+ /* threeChannels2_1 */
+ case 3:
+ invokeStartElement (pctxt, "threeChannels2_1", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "threeChannels2_1", -1);
+
+ break;
+
+ /* threeChannels3_0 */
+ case 4:
+ invokeStartElement (pctxt, "threeChannels3_0", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "threeChannels3_0", -1);
+
+ break;
+
+ /* fourChannels2_0_2_0 */
+ case 5:
+ invokeStartElement (pctxt, "fourChannels2_0_2_0", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "fourChannels2_0_2_0", -1);
+
+ break;
+
+ /* fourChannels2_2 */
+ case 6:
+ invokeStartElement (pctxt, "fourChannels2_2", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "fourChannels2_2", -1);
+
+ break;
+
+ /* fourChannels3_1 */
+ case 7:
+ invokeStartElement (pctxt, "fourChannels3_1", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "fourChannels3_1", -1);
+
+ break;
+
+ /* fiveChannels3_0_2_0 */
+ case 8:
+ invokeStartElement (pctxt, "fiveChannels3_0_2_0", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "fiveChannels3_0_2_0", -1);
+
+ break;
+
+ /* fiveChannels3_2 */
+ case 9:
+ invokeStartElement (pctxt, "fiveChannels3_2", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "fiveChannels3_2", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS13818AudioMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245IS13818AudioMode (OOCTXT* pctxt, H245IS13818AudioMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode audioLayer */
+
+ invokeStartElement (pctxt, "audioLayer", -1);
+
+ stat = asn1PD_H245IS13818AudioMode_audioLayer (pctxt, &pvalue->audioLayer);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "audioLayer", -1);
+
+ /* decode audioSampling */
+
+ invokeStartElement (pctxt, "audioSampling", -1);
+
+ stat = asn1PD_H245IS13818AudioMode_audioSampling (pctxt, &pvalue->audioSampling);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "audioSampling", -1);
+
+ /* decode multichannelType */
+
+ invokeStartElement (pctxt, "multichannelType", -1);
+
+ stat = asn1PD_H245IS13818AudioMode_multichannelType (pctxt, &pvalue->multichannelType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multichannelType", -1);
+
+ /* decode lowFrequencyEnhancement */
+
+ invokeStartElement (pctxt, "lowFrequencyEnhancement", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->lowFrequencyEnhancement);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->lowFrequencyEnhancement);
+
+ invokeEndElement (pctxt, "lowFrequencyEnhancement", -1);
+
+ /* decode multilingual */
+
+ invokeStartElement (pctxt, "multilingual", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multilingual);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multilingual);
+
+ invokeEndElement (pctxt, "multilingual", -1);
+
+ /* decode bitRate */
+
+ invokeStartElement (pctxt, "bitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->bitRate, 1U, 1130U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bitRate);
+
+ invokeEndElement (pctxt, "bitRate", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* G7231AnnexCMode_g723AnnexCAudioMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245G7231AnnexCMode_g723AnnexCAudioMode (OOCTXT* pctxt, H245G7231AnnexCMode_g723AnnexCAudioMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode highRateMode0 */
+
+ invokeStartElement (pctxt, "highRateMode0", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->highRateMode0, 27U, 78U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->highRateMode0);
+
+ invokeEndElement (pctxt, "highRateMode0", -1);
+
+ /* decode highRateMode1 */
+
+ invokeStartElement (pctxt, "highRateMode1", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->highRateMode1, 27U, 78U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->highRateMode1);
+
+ invokeEndElement (pctxt, "highRateMode1", -1);
+
+ /* decode lowRateMode0 */
+
+ invokeStartElement (pctxt, "lowRateMode0", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->lowRateMode0, 23U, 66U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->lowRateMode0);
+
+ invokeEndElement (pctxt, "lowRateMode0", -1);
+
+ /* decode lowRateMode1 */
+
+ invokeStartElement (pctxt, "lowRateMode1", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->lowRateMode1, 23U, 66U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->lowRateMode1);
+
+ invokeEndElement (pctxt, "lowRateMode1", -1);
+
+ /* decode sidMode0 */
+
+ invokeStartElement (pctxt, "sidMode0", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->sidMode0, 6U, 17U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sidMode0);
+
+ invokeEndElement (pctxt, "sidMode0", -1);
+
+ /* decode sidMode1 */
+
+ invokeStartElement (pctxt, "sidMode1", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->sidMode1, 6U, 17U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sidMode1);
+
+ invokeEndElement (pctxt, "sidMode1", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* G7231AnnexCMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245G7231AnnexCMode (OOCTXT* pctxt, H245G7231AnnexCMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode maxAl_sduAudioFrames */
+
+ invokeStartElement (pctxt, "maxAl_sduAudioFrames", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maxAl_sduAudioFrames, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maxAl_sduAudioFrames);
+
+ invokeEndElement (pctxt, "maxAl_sduAudioFrames", -1);
+
+ /* decode silenceSuppression */
+
+ invokeStartElement (pctxt, "silenceSuppression", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->silenceSuppression);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->silenceSuppression);
+
+ invokeEndElement (pctxt, "silenceSuppression", -1);
+
+ /* decode g723AnnexCAudioMode */
+
+ invokeStartElement (pctxt, "g723AnnexCAudioMode", -1);
+
+ stat = asn1PD_H245G7231AnnexCMode_g723AnnexCAudioMode (pctxt, &pvalue->g723AnnexCAudioMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "g723AnnexCAudioMode", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VBDMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VBDMode (OOCTXT* pctxt, H245VBDMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode type */
+
+ invokeStartElement (pctxt, "type", -1);
+
+ pvalue->type = ALLOC_ASN1ELEM (pctxt, H245AudioMode);
+
+ stat = asn1PD_H245AudioMode (pctxt, (H245AudioMode*)pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "type", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AudioMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245AudioMode (OOCTXT* pctxt, H245AudioMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 13);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* g711Alaw64k */
+ case 1:
+ invokeStartElement (pctxt, "g711Alaw64k", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "g711Alaw64k", -1);
+
+ break;
+
+ /* g711Alaw56k */
+ case 2:
+ invokeStartElement (pctxt, "g711Alaw56k", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "g711Alaw56k", -1);
+
+ break;
+
+ /* g711Ulaw64k */
+ case 3:
+ invokeStartElement (pctxt, "g711Ulaw64k", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "g711Ulaw64k", -1);
+
+ break;
+
+ /* g711Ulaw56k */
+ case 4:
+ invokeStartElement (pctxt, "g711Ulaw56k", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "g711Ulaw56k", -1);
+
+ break;
+
+ /* g722_64k */
+ case 5:
+ invokeStartElement (pctxt, "g722_64k", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "g722_64k", -1);
+
+ break;
+
+ /* g722_56k */
+ case 6:
+ invokeStartElement (pctxt, "g722_56k", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "g722_56k", -1);
+
+ break;
+
+ /* g722_48k */
+ case 7:
+ invokeStartElement (pctxt, "g722_48k", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "g722_48k", -1);
+
+ break;
+
+ /* g728 */
+ case 8:
+ invokeStartElement (pctxt, "g728", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "g728", -1);
+
+ break;
+
+ /* g729 */
+ case 9:
+ invokeStartElement (pctxt, "g729", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "g729", -1);
+
+ break;
+
+ /* g729AnnexA */
+ case 10:
+ invokeStartElement (pctxt, "g729AnnexA", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "g729AnnexA", -1);
+
+ break;
+
+ /* g7231 */
+ case 11:
+ invokeStartElement (pctxt, "g7231", -1);
+
+ pvalue->u.g7231 = ALLOC_ASN1ELEM (pctxt, H245AudioMode_g7231);
+
+ stat = asn1PD_H245AudioMode_g7231 (pctxt, pvalue->u.g7231);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "g7231", -1);
+
+ break;
+
+ /* is11172AudioMode */
+ case 12:
+ invokeStartElement (pctxt, "is11172AudioMode", -1);
+
+ pvalue->u.is11172AudioMode = ALLOC_ASN1ELEM (pctxt, H245IS11172AudioMode);
+
+ stat = asn1PD_H245IS11172AudioMode (pctxt, pvalue->u.is11172AudioMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "is11172AudioMode", -1);
+
+ break;
+
+ /* is13818AudioMode */
+ case 13:
+ invokeStartElement (pctxt, "is13818AudioMode", -1);
+
+ pvalue->u.is13818AudioMode = ALLOC_ASN1ELEM (pctxt, H245IS13818AudioMode);
+
+ stat = asn1PD_H245IS13818AudioMode (pctxt, pvalue->u.is13818AudioMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "is13818AudioMode", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 15;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* g729wAnnexB */
+ case 15:
+ invokeStartElement (pctxt, "g729wAnnexB", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.g729wAnnexB, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.g729wAnnexB);
+
+ invokeEndElement (pctxt, "g729wAnnexB", -1);
+
+ break;
+
+ /* g729AnnexAwAnnexB */
+ case 16:
+ invokeStartElement (pctxt, "g729AnnexAwAnnexB", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.g729AnnexAwAnnexB, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.g729AnnexAwAnnexB);
+
+ invokeEndElement (pctxt, "g729AnnexAwAnnexB", -1);
+
+ break;
+
+ /* g7231AnnexCMode */
+ case 17:
+ invokeStartElement (pctxt, "g7231AnnexCMode", -1);
+
+ pvalue->u.g7231AnnexCMode = ALLOC_ASN1ELEM (pctxt, H245G7231AnnexCMode);
+
+ stat = asn1PD_H245G7231AnnexCMode (pctxt, pvalue->u.g7231AnnexCMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "g7231AnnexCMode", -1);
+
+ break;
+
+ /* gsmFullRate */
+ case 18:
+ invokeStartElement (pctxt, "gsmFullRate", -1);
+
+ pvalue->u.gsmFullRate = ALLOC_ASN1ELEM (pctxt, H245GSMAudioCapability);
+
+ stat = asn1PD_H245GSMAudioCapability (pctxt, pvalue->u.gsmFullRate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gsmFullRate", -1);
+
+ break;
+
+ /* gsmHalfRate */
+ case 19:
+ invokeStartElement (pctxt, "gsmHalfRate", -1);
+
+ pvalue->u.gsmHalfRate = ALLOC_ASN1ELEM (pctxt, H245GSMAudioCapability);
+
+ stat = asn1PD_H245GSMAudioCapability (pctxt, pvalue->u.gsmHalfRate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gsmHalfRate", -1);
+
+ break;
+
+ /* gsmEnhancedFullRate */
+ case 20:
+ invokeStartElement (pctxt, "gsmEnhancedFullRate", -1);
+
+ pvalue->u.gsmEnhancedFullRate = ALLOC_ASN1ELEM (pctxt, H245GSMAudioCapability);
+
+ stat = asn1PD_H245GSMAudioCapability (pctxt, pvalue->u.gsmEnhancedFullRate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gsmEnhancedFullRate", -1);
+
+ break;
+
+ /* genericAudioMode */
+ case 21:
+ invokeStartElement (pctxt, "genericAudioMode", -1);
+
+ pvalue->u.genericAudioMode = ALLOC_ASN1ELEM (pctxt, H245GenericCapability);
+
+ stat = asn1PD_H245GenericCapability (pctxt, pvalue->u.genericAudioMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericAudioMode", -1);
+
+ break;
+
+ /* g729Extensions */
+ case 22:
+ invokeStartElement (pctxt, "g729Extensions", -1);
+
+ pvalue->u.g729Extensions = ALLOC_ASN1ELEM (pctxt, H245G729Extensions);
+
+ stat = asn1PD_H245G729Extensions (pctxt, pvalue->u.g729Extensions);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "g729Extensions", -1);
+
+ break;
+
+ /* vbd */
+ case 23:
+ invokeStartElement (pctxt, "vbd", -1);
+
+ pvalue->u.vbd = ALLOC_ASN1ELEM (pctxt, H245VBDMode);
+
+ stat = asn1PD_H245VBDMode (pctxt, pvalue->u.vbd);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "vbd", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataMode_application_nlpid */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DataMode_application_nlpid (OOCTXT* pctxt, H245DataMode_application_nlpid* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode nlpidProtocol */
+
+ invokeStartElement (pctxt, "nlpidProtocol", -1);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, &pvalue->nlpidProtocol);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nlpidProtocol", -1);
+
+ /* decode nlpidData */
+
+ invokeStartElement (pctxt, "nlpidData", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->nlpidData);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->nlpidData.numocts, pvalue->nlpidData.data);
+
+ invokeEndElement (pctxt, "nlpidData", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataMode_application_t38fax */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DataMode_application_t38fax (OOCTXT* pctxt, H245DataMode_application_t38fax* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode t38FaxProtocol */
+
+ invokeStartElement (pctxt, "t38FaxProtocol", -1);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, &pvalue->t38FaxProtocol);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t38FaxProtocol", -1);
+
+ /* decode t38FaxProfile */
+
+ invokeStartElement (pctxt, "t38FaxProfile", -1);
+
+ stat = asn1PD_H245T38FaxProfile (pctxt, &pvalue->t38FaxProfile);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t38FaxProfile", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataMode_application */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DataMode_application (OOCTXT* pctxt, H245DataMode_application* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 9);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* t120 */
+ case 1:
+ invokeStartElement (pctxt, "t120", -1);
+
+ pvalue->u.t120 = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.t120);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t120", -1);
+
+ break;
+
+ /* dsm_cc */
+ case 2:
+ invokeStartElement (pctxt, "dsm_cc", -1);
+
+ pvalue->u.dsm_cc = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.dsm_cc);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dsm_cc", -1);
+
+ break;
+
+ /* userData */
+ case 3:
+ invokeStartElement (pctxt, "userData", -1);
+
+ pvalue->u.userData = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.userData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "userData", -1);
+
+ break;
+
+ /* t84 */
+ case 4:
+ invokeStartElement (pctxt, "t84", -1);
+
+ pvalue->u.t84 = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.t84);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t84", -1);
+
+ break;
+
+ /* t434 */
+ case 5:
+ invokeStartElement (pctxt, "t434", -1);
+
+ pvalue->u.t434 = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.t434);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t434", -1);
+
+ break;
+
+ /* h224 */
+ case 6:
+ invokeStartElement (pctxt, "h224", -1);
+
+ pvalue->u.h224 = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.h224);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h224", -1);
+
+ break;
+
+ /* nlpid */
+ case 7:
+ invokeStartElement (pctxt, "nlpid", -1);
+
+ pvalue->u.nlpid = ALLOC_ASN1ELEM (pctxt, H245DataMode_application_nlpid);
+
+ stat = asn1PD_H245DataMode_application_nlpid (pctxt, pvalue->u.nlpid);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nlpid", -1);
+
+ break;
+
+ /* dsvdControl */
+ case 8:
+ invokeStartElement (pctxt, "dsvdControl", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "dsvdControl", -1);
+
+ break;
+
+ /* h222DataPartitioning */
+ case 9:
+ invokeStartElement (pctxt, "h222DataPartitioning", -1);
+
+ pvalue->u.h222DataPartitioning = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.h222DataPartitioning);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h222DataPartitioning", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 11;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* t30fax */
+ case 11:
+ invokeStartElement (pctxt, "t30fax", -1);
+
+ pvalue->u.t30fax = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.t30fax);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t30fax", -1);
+
+ break;
+
+ /* t140 */
+ case 12:
+ invokeStartElement (pctxt, "t140", -1);
+
+ pvalue->u.t140 = ALLOC_ASN1ELEM (pctxt, H245DataProtocolCapability);
+
+ stat = asn1PD_H245DataProtocolCapability (pctxt, pvalue->u.t140);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t140", -1);
+
+ break;
+
+ /* t38fax */
+ case 13:
+ invokeStartElement (pctxt, "t38fax", -1);
+
+ pvalue->u.t38fax = ALLOC_ASN1ELEM (pctxt, H245DataMode_application_t38fax);
+
+ stat = asn1PD_H245DataMode_application_t38fax (pctxt, pvalue->u.t38fax);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "t38fax", -1);
+
+ break;
+
+ /* genericDataMode */
+ case 14:
+ invokeStartElement (pctxt, "genericDataMode", -1);
+
+ pvalue->u.genericDataMode = ALLOC_ASN1ELEM (pctxt, H245GenericCapability);
+
+ stat = asn1PD_H245GenericCapability (pctxt, pvalue->u.genericDataMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericDataMode", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DataMode (OOCTXT* pctxt, H245DataMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode application */
+
+ invokeStartElement (pctxt, "application", -1);
+
+ stat = asn1PD_H245DataMode_application (pctxt, &pvalue->application);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "application", -1);
+
+ /* decode bitRate */
+
+ invokeStartElement (pctxt, "bitRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->bitRate, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bitRate);
+
+ invokeEndElement (pctxt, "bitRate", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H235Mode_mediaMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H235Mode_mediaMode (OOCTXT* pctxt, H245H235Mode_mediaMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* videoMode */
+ case 1:
+ invokeStartElement (pctxt, "videoMode", -1);
+
+ pvalue->u.videoMode = ALLOC_ASN1ELEM (pctxt, H245VideoMode);
+
+ stat = asn1PD_H245VideoMode (pctxt, pvalue->u.videoMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "videoMode", -1);
+
+ break;
+
+ /* audioMode */
+ case 2:
+ invokeStartElement (pctxt, "audioMode", -1);
+
+ pvalue->u.audioMode = ALLOC_ASN1ELEM (pctxt, H245AudioMode);
+
+ stat = asn1PD_H245AudioMode (pctxt, pvalue->u.audioMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "audioMode", -1);
+
+ break;
+
+ /* dataMode */
+ case 3:
+ invokeStartElement (pctxt, "dataMode", -1);
+
+ pvalue->u.dataMode = ALLOC_ASN1ELEM (pctxt, H245DataMode);
+
+ stat = asn1PD_H245DataMode (pctxt, pvalue->u.dataMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataMode", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H235Mode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H235Mode (OOCTXT* pctxt, H245H235Mode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode encryptionAuthenticationAndIntegrity */
+
+ invokeStartElement (pctxt, "encryptionAuthenticationAndIntegrity", -1);
+
+ stat = asn1PD_H245EncryptionAuthenticationAndIntegrity (pctxt, &pvalue->encryptionAuthenticationAndIntegrity);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "encryptionAuthenticationAndIntegrity", -1);
+
+ /* decode mediaMode */
+
+ invokeStartElement (pctxt, "mediaMode", -1);
+
+ stat = asn1PD_H245H235Mode_mediaMode (pctxt, &pvalue->mediaMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaMode", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingDTModeElement_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RedundancyEncodingDTModeElement_type (OOCTXT* pctxt, H245RedundancyEncodingDTModeElement_type* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 5);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* videoMode */
+ case 1:
+ invokeStartElement (pctxt, "videoMode", -1);
+
+ pvalue->u.videoMode = ALLOC_ASN1ELEM (pctxt, H245VideoMode);
+
+ stat = asn1PD_H245VideoMode (pctxt, pvalue->u.videoMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "videoMode", -1);
+
+ break;
+
+ /* audioMode */
+ case 2:
+ invokeStartElement (pctxt, "audioMode", -1);
+
+ pvalue->u.audioMode = ALLOC_ASN1ELEM (pctxt, H245AudioMode);
+
+ stat = asn1PD_H245AudioMode (pctxt, pvalue->u.audioMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "audioMode", -1);
+
+ break;
+
+ /* dataMode */
+ case 3:
+ invokeStartElement (pctxt, "dataMode", -1);
+
+ pvalue->u.dataMode = ALLOC_ASN1ELEM (pctxt, H245DataMode);
+
+ stat = asn1PD_H245DataMode (pctxt, pvalue->u.dataMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataMode", -1);
+
+ break;
+
+ /* encryptionMode */
+ case 4:
+ invokeStartElement (pctxt, "encryptionMode", -1);
+
+ pvalue->u.encryptionMode = ALLOC_ASN1ELEM (pctxt, H245EncryptionMode);
+
+ stat = asn1PD_H245EncryptionMode (pctxt, pvalue->u.encryptionMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "encryptionMode", -1);
+
+ break;
+
+ /* h235Mode */
+ case 5:
+ invokeStartElement (pctxt, "h235Mode", -1);
+
+ pvalue->u.h235Mode = ALLOC_ASN1ELEM (pctxt, H245H235Mode);
+
+ stat = asn1PD_H245H235Mode (pctxt, pvalue->u.h235Mode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h235Mode", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 7;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingDTModeElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RedundancyEncodingDTModeElement (OOCTXT* pctxt, H245RedundancyEncodingDTModeElement* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode type */
+
+ invokeStartElement (pctxt, "type", -1);
+
+ stat = asn1PD_H245RedundancyEncodingDTModeElement_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "type", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245RedundancyEncodingDTModeElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245_SeqOfH245RedundancyEncodingDTModeElement (OOCTXT* pctxt, H245_SeqOfH245RedundancyEncodingDTModeElement* pvalue)
+{
+ int stat = ASN_OK;
+ H245RedundancyEncodingDTModeElement* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245RedundancyEncodingDTModeElement);
+
+ stat = asn1PD_H245RedundancyEncodingDTModeElement (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingDTMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RedundancyEncodingDTMode (OOCTXT* pctxt, H245RedundancyEncodingDTMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode redundancyEncodingMethod */
+
+ invokeStartElement (pctxt, "redundancyEncodingMethod", -1);
+
+ stat = asn1PD_H245RedundancyEncodingMethod (pctxt, &pvalue->redundancyEncodingMethod);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "redundancyEncodingMethod", -1);
+
+ /* decode primary */
+
+ invokeStartElement (pctxt, "primary", -1);
+
+ stat = asn1PD_H245RedundancyEncodingDTModeElement (pctxt, &pvalue->primary);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "primary", -1);
+
+ /* decode secondary */
+
+ invokeStartElement (pctxt, "secondary", -1);
+
+ stat = asn1PD_H245_SeqOfH245RedundancyEncodingDTModeElement (pctxt, &pvalue->secondary);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "secondary", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamElementMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplePayloadStreamElementMode (OOCTXT* pctxt, H245MultiplePayloadStreamElementMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode type */
+
+ invokeStartElement (pctxt, "type", -1);
+
+ pvalue->type = ALLOC_ASN1ELEM (pctxt, H245ModeElementType);
+
+ stat = asn1PD_H245ModeElementType (pctxt, (H245ModeElementType*)pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "type", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245MultiplePayloadStreamElementMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245_SeqOfH245MultiplePayloadStreamElementMode (OOCTXT* pctxt, H245_SeqOfH245MultiplePayloadStreamElementMode* pvalue)
+{
+ int stat = ASN_OK;
+ H245MultiplePayloadStreamElementMode* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245MultiplePayloadStreamElementMode);
+
+ stat = asn1PD_H245MultiplePayloadStreamElementMode (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplePayloadStreamMode (OOCTXT* pctxt, H245MultiplePayloadStreamMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode elements */
+
+ invokeStartElement (pctxt, "elements", -1);
+
+ stat = asn1PD_H245_SeqOfH245MultiplePayloadStreamElementMode (pctxt, &pvalue->elements);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "elements", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode_mode_separateStream_differentPort */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECMode_rfc2733Mode_mode_separateStream_differentPort (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream_differentPort* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.protectedPayloadTypePresent = optbit;
+
+ /* decode protectedSessionID */
+
+ invokeStartElement (pctxt, "protectedSessionID", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->protectedSessionID, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->protectedSessionID);
+
+ invokeEndElement (pctxt, "protectedSessionID", -1);
+
+ /* decode protectedPayloadType */
+
+ if (pvalue->m.protectedPayloadTypePresent) {
+ invokeStartElement (pctxt, "protectedPayloadType", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->protectedPayloadType, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->protectedPayloadType);
+
+ invokeEndElement (pctxt, "protectedPayloadType", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode_mode_separateStream_samePort */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECMode_rfc2733Mode_mode_separateStream_samePort (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream_samePort* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode protectedType */
+
+ invokeStartElement (pctxt, "protectedType", -1);
+
+ pvalue->protectedType = ALLOC_ASN1ELEM (pctxt, H245ModeElementType);
+
+ stat = asn1PD_H245ModeElementType (pctxt, (H245ModeElementType*)pvalue->protectedType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "protectedType", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode_mode_separateStream */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECMode_rfc2733Mode_mode_separateStream (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* differentPort */
+ case 0:
+ invokeStartElement (pctxt, "differentPort", -1);
+
+ pvalue->u.differentPort = ALLOC_ASN1ELEM (pctxt, H245FECMode_rfc2733Mode_mode_separateStream_differentPort);
+
+ stat = asn1PD_H245FECMode_rfc2733Mode_mode_separateStream_differentPort (pctxt, pvalue->u.differentPort);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "differentPort", -1);
+
+ break;
+
+ /* samePort */
+ case 1:
+ invokeStartElement (pctxt, "samePort", -1);
+
+ pvalue->u.samePort = ALLOC_ASN1ELEM (pctxt, H245FECMode_rfc2733Mode_mode_separateStream_samePort);
+
+ stat = asn1PD_H245FECMode_rfc2733Mode_mode_separateStream_samePort (pctxt, pvalue->u.samePort);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "samePort", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode_mode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECMode_rfc2733Mode_mode (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* redundancyEncoding */
+ case 0:
+ invokeStartElement (pctxt, "redundancyEncoding", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "redundancyEncoding", -1);
+
+ break;
+
+ /* separateStream */
+ case 1:
+ invokeStartElement (pctxt, "separateStream", -1);
+
+ pvalue->u.separateStream = ALLOC_ASN1ELEM (pctxt, H245FECMode_rfc2733Mode_mode_separateStream);
+
+ stat = asn1PD_H245FECMode_rfc2733Mode_mode_separateStream (pctxt, pvalue->u.separateStream);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "separateStream", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECMode_rfc2733Mode (OOCTXT* pctxt, H245FECMode_rfc2733Mode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode mode */
+
+ invokeStartElement (pctxt, "mode", -1);
+
+ stat = asn1PD_H245FECMode_rfc2733Mode_mode (pctxt, &pvalue->mode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mode", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FECMode (OOCTXT* pctxt, H245FECMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 0);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* rfc2733Mode */
+ case 0:
+ invokeStartElement (pctxt, "rfc2733Mode", -1);
+
+ pvalue->u.rfc2733Mode = ALLOC_ASN1ELEM (pctxt, H245FECMode_rfc2733Mode);
+
+ stat = asn1PD_H245FECMode_rfc2733Mode (pctxt, pvalue->u.rfc2733Mode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rfc2733Mode", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 2;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ModeElementType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ModeElementType (OOCTXT* pctxt, H245ModeElementType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 4);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* videoMode */
+ case 1:
+ invokeStartElement (pctxt, "videoMode", -1);
+
+ pvalue->u.videoMode = ALLOC_ASN1ELEM (pctxt, H245VideoMode);
+
+ stat = asn1PD_H245VideoMode (pctxt, pvalue->u.videoMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "videoMode", -1);
+
+ break;
+
+ /* audioMode */
+ case 2:
+ invokeStartElement (pctxt, "audioMode", -1);
+
+ pvalue->u.audioMode = ALLOC_ASN1ELEM (pctxt, H245AudioMode);
+
+ stat = asn1PD_H245AudioMode (pctxt, pvalue->u.audioMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "audioMode", -1);
+
+ break;
+
+ /* dataMode */
+ case 3:
+ invokeStartElement (pctxt, "dataMode", -1);
+
+ pvalue->u.dataMode = ALLOC_ASN1ELEM (pctxt, H245DataMode);
+
+ stat = asn1PD_H245DataMode (pctxt, pvalue->u.dataMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataMode", -1);
+
+ break;
+
+ /* encryptionMode */
+ case 4:
+ invokeStartElement (pctxt, "encryptionMode", -1);
+
+ pvalue->u.encryptionMode = ALLOC_ASN1ELEM (pctxt, H245EncryptionMode);
+
+ stat = asn1PD_H245EncryptionMode (pctxt, pvalue->u.encryptionMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "encryptionMode", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 6;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* h235Mode */
+ case 6:
+ invokeStartElement (pctxt, "h235Mode", -1);
+
+ pvalue->u.h235Mode = ALLOC_ASN1ELEM (pctxt, H245H235Mode);
+
+ stat = asn1PD_H245H235Mode (pctxt, pvalue->u.h235Mode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h235Mode", -1);
+
+ break;
+
+ /* multiplexedStreamMode */
+ case 7:
+ invokeStartElement (pctxt, "multiplexedStreamMode", -1);
+
+ pvalue->u.multiplexedStreamMode = ALLOC_ASN1ELEM (pctxt, H245MultiplexedStreamParameter);
+
+ stat = asn1PD_H245MultiplexedStreamParameter (pctxt, pvalue->u.multiplexedStreamMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexedStreamMode", -1);
+
+ break;
+
+ /* redundancyEncodingDTMode */
+ case 8:
+ invokeStartElement (pctxt, "redundancyEncodingDTMode", -1);
+
+ pvalue->u.redundancyEncodingDTMode = ALLOC_ASN1ELEM (pctxt, H245RedundancyEncodingDTMode);
+
+ stat = asn1PD_H245RedundancyEncodingDTMode (pctxt, pvalue->u.redundancyEncodingDTMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "redundancyEncodingDTMode", -1);
+
+ break;
+
+ /* multiplePayloadStreamMode */
+ case 9:
+ invokeStartElement (pctxt, "multiplePayloadStreamMode", -1);
+
+ pvalue->u.multiplePayloadStreamMode = ALLOC_ASN1ELEM (pctxt, H245MultiplePayloadStreamMode);
+
+ stat = asn1PD_H245MultiplePayloadStreamMode (pctxt, pvalue->u.multiplePayloadStreamMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplePayloadStreamMode", -1);
+
+ break;
+
+ /* fecMode */
+ case 10:
+ invokeStartElement (pctxt, "fecMode", -1);
+
+ pvalue->u.fecMode = ALLOC_ASN1ELEM (pctxt, H245FECMode);
+
+ stat = asn1PD_H245FECMode (pctxt, pvalue->u.fecMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "fecMode", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223ModeParameters_adaptationLayerType_al3 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223ModeParameters_adaptationLayerType_al3 (OOCTXT* pctxt, H245H223ModeParameters_adaptationLayerType_al3* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode controlFieldOctets */
+
+ invokeStartElement (pctxt, "controlFieldOctets", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->controlFieldOctets, 0U, 2U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->controlFieldOctets);
+
+ invokeEndElement (pctxt, "controlFieldOctets", -1);
+
+ /* decode sendBufferSize */
+
+ invokeStartElement (pctxt, "sendBufferSize", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->sendBufferSize, 0U, 16777215U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sendBufferSize);
+
+ invokeEndElement (pctxt, "sendBufferSize", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223ModeParameters_adaptationLayerType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223ModeParameters_adaptationLayerType (OOCTXT* pctxt, H245H223ModeParameters_adaptationLayerType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 5);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* al1Framed */
+ case 1:
+ invokeStartElement (pctxt, "al1Framed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "al1Framed", -1);
+
+ break;
+
+ /* al1NotFramed */
+ case 2:
+ invokeStartElement (pctxt, "al1NotFramed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "al1NotFramed", -1);
+
+ break;
+
+ /* al2WithoutSequenceNumbers */
+ case 3:
+ invokeStartElement (pctxt, "al2WithoutSequenceNumbers", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "al2WithoutSequenceNumbers", -1);
+
+ break;
+
+ /* al2WithSequenceNumbers */
+ case 4:
+ invokeStartElement (pctxt, "al2WithSequenceNumbers", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "al2WithSequenceNumbers", -1);
+
+ break;
+
+ /* al3 */
+ case 5:
+ invokeStartElement (pctxt, "al3", -1);
+
+ pvalue->u.al3 = ALLOC_ASN1ELEM (pctxt, H245H223ModeParameters_adaptationLayerType_al3);
+
+ stat = asn1PD_H245H223ModeParameters_adaptationLayerType_al3 (pctxt, pvalue->u.al3);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "al3", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 7;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* al1M */
+ case 7:
+ invokeStartElement (pctxt, "al1M", -1);
+
+ pvalue->u.al1M = ALLOC_ASN1ELEM (pctxt, H245H223AL1MParameters);
+
+ stat = asn1PD_H245H223AL1MParameters (pctxt, pvalue->u.al1M);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "al1M", -1);
+
+ break;
+
+ /* al2M */
+ case 8:
+ invokeStartElement (pctxt, "al2M", -1);
+
+ pvalue->u.al2M = ALLOC_ASN1ELEM (pctxt, H245H223AL2MParameters);
+
+ stat = asn1PD_H245H223AL2MParameters (pctxt, pvalue->u.al2M);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "al2M", -1);
+
+ break;
+
+ /* al3M */
+ case 9:
+ invokeStartElement (pctxt, "al3M", -1);
+
+ pvalue->u.al3M = ALLOC_ASN1ELEM (pctxt, H245H223AL3MParameters);
+
+ stat = asn1PD_H245H223AL3MParameters (pctxt, pvalue->u.al3M);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "al3M", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223ModeParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223ModeParameters (OOCTXT* pctxt, H245H223ModeParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode adaptationLayerType */
+
+ invokeStartElement (pctxt, "adaptationLayerType", -1);
+
+ stat = asn1PD_H245H223ModeParameters_adaptationLayerType (pctxt, &pvalue->adaptationLayerType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "adaptationLayerType", -1);
+
+ /* decode segmentableFlag */
+
+ invokeStartElement (pctxt, "segmentableFlag", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->segmentableFlag);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->segmentableFlag);
+
+ invokeEndElement (pctxt, "segmentableFlag", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76ModeParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245V76ModeParameters (OOCTXT* pctxt, H245V76ModeParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* suspendResumewAddress */
+ case 0:
+ invokeStartElement (pctxt, "suspendResumewAddress", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "suspendResumewAddress", -1);
+
+ break;
+
+ /* suspendResumewoAddress */
+ case 1:
+ invokeStartElement (pctxt, "suspendResumewoAddress", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "suspendResumewoAddress", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingMode_secondaryEncoding */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RedundancyEncodingMode_secondaryEncoding (OOCTXT* pctxt, H245RedundancyEncodingMode_secondaryEncoding* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* audioData */
+ case 1:
+ invokeStartElement (pctxt, "audioData", -1);
+
+ pvalue->u.audioData = ALLOC_ASN1ELEM (pctxt, H245AudioMode);
+
+ stat = asn1PD_H245AudioMode (pctxt, pvalue->u.audioData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "audioData", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RedundancyEncodingMode (OOCTXT* pctxt, H245RedundancyEncodingMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.secondaryEncodingPresent = optbit;
+
+ /* decode redundancyEncodingMethod */
+
+ invokeStartElement (pctxt, "redundancyEncodingMethod", -1);
+
+ stat = asn1PD_H245RedundancyEncodingMethod (pctxt, &pvalue->redundancyEncodingMethod);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "redundancyEncodingMethod", -1);
+
+ /* decode secondaryEncoding */
+
+ if (pvalue->m.secondaryEncodingPresent) {
+ invokeStartElement (pctxt, "secondaryEncoding", -1);
+
+ stat = asn1PD_H245RedundancyEncodingMode_secondaryEncoding (pctxt, &pvalue->secondaryEncoding);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "secondaryEncoding", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250ModeParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H2250ModeParameters (OOCTXT* pctxt, H245H2250ModeParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.redundancyEncodingModePresent = optbit;
+
+ /* decode redundancyEncodingMode */
+
+ if (pvalue->m.redundancyEncodingModePresent) {
+ invokeStartElement (pctxt, "redundancyEncodingMode", -1);
+
+ stat = asn1PD_H245RedundancyEncodingMode (pctxt, &pvalue->redundancyEncodingMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "redundancyEncodingMode", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexedStreamModeParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexedStreamModeParameters (OOCTXT* pctxt, H245MultiplexedStreamModeParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode logicalChannelNumber */
+
+ invokeStartElement (pctxt, "logicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ModeElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ModeElement (OOCTXT* pctxt, H245ModeElement* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.h223ModeParametersPresent = optbit;
+
+ /* decode type */
+
+ invokeStartElement (pctxt, "type", -1);
+
+ stat = asn1PD_H245ModeElementType (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "type", -1);
+
+ /* decode h223ModeParameters */
+
+ if (pvalue->m.h223ModeParametersPresent) {
+ invokeStartElement (pctxt, "h223ModeParameters", -1);
+
+ stat = asn1PD_H245H223ModeParameters (pctxt, &pvalue->h223ModeParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h223ModeParameters", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 4 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.v76ModeParametersPresent = 1;
+
+ invokeStartElement (pctxt, "v76ModeParameters", -1);
+
+ stat = asn1PD_H245V76ModeParameters (pctxt, &pvalue->v76ModeParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "v76ModeParameters", -1);
+ break;
+
+ case 1:
+ pvalue->m.h2250ModeParametersPresent = 1;
+
+ invokeStartElement (pctxt, "h2250ModeParameters", -1);
+
+ stat = asn1PD_H245H2250ModeParameters (pctxt, &pvalue->h2250ModeParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h2250ModeParameters", -1);
+ break;
+
+ case 2:
+ pvalue->m.genericModeParametersPresent = 1;
+
+ invokeStartElement (pctxt, "genericModeParameters", -1);
+
+ stat = asn1PD_H245GenericCapability (pctxt, &pvalue->genericModeParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "genericModeParameters", -1);
+ break;
+
+ case 3:
+ pvalue->m.multiplexedStreamModeParametersPresent = 1;
+
+ invokeStartElement (pctxt, "multiplexedStreamModeParameters", -1);
+
+ stat = asn1PD_H245MultiplexedStreamModeParameters (pctxt, &pvalue->multiplexedStreamModeParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexedStreamModeParameters", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ModeDescription */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ModeDescription (OOCTXT* pctxt, H245ModeDescription* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245ModeElement* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245ModeElement);
+
+ stat = asn1PD_H245ModeElement (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMode_requestedModes */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestMode_requestedModes (OOCTXT* pctxt, H245RequestMode_requestedModes* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245ModeDescription* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245ModeDescription);
+
+ stat = asn1PD_H245ModeDescription (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestMode (OOCTXT* pctxt, H245RequestMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ /* decode requestedModes */
+
+ invokeStartElement (pctxt, "requestedModes", -1);
+
+ stat = asn1PD_H245RequestMode_requestedModes (pctxt, &pvalue->requestedModes);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestedModes", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RoundTripDelayRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RoundTripDelayRequest (OOCTXT* pctxt, H245RoundTripDelayRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopRequest_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MaintenanceLoopRequest_type (OOCTXT* pctxt, H245MaintenanceLoopRequest_type* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* systemLoop */
+ case 0:
+ invokeStartElement (pctxt, "systemLoop", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "systemLoop", -1);
+
+ break;
+
+ /* mediaLoop */
+ case 1:
+ invokeStartElement (pctxt, "mediaLoop", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->u.mediaLoop);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaLoop", -1);
+
+ break;
+
+ /* logicalChannelLoop */
+ case 2:
+ invokeStartElement (pctxt, "logicalChannelLoop", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->u.logicalChannelLoop);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelLoop", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MaintenanceLoopRequest (OOCTXT* pctxt, H245MaintenanceLoopRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode type */
+
+ invokeStartElement (pctxt, "type", -1);
+
+ stat = asn1PD_H245MaintenanceLoopRequest_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "type", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommunicationModeRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CommunicationModeRequest (OOCTXT* pctxt, H245CommunicationModeRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Criteria */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245Criteria (OOCTXT* pctxt, H245Criteria* pvalue)
+{
+ static Asn1SizeCnst value_lsize1 = { 0, 1, 65535, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode field */
+
+ invokeStartElement (pctxt, "field", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->field);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->field.numids, pvalue->field.subid);
+
+ invokeEndElement (pctxt, "field", -1);
+
+ /* decode value */
+
+ invokeStartElement (pctxt, "value", -1);
+
+ addSizeConstraint (pctxt, &value_lsize1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->value);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->value.numocts, pvalue->value.data);
+
+ invokeEndElement (pctxt, "value", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CertSelectionCriteria */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CertSelectionCriteria (OOCTXT* pctxt, H245CertSelectionCriteria* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ H245Criteria* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245Criteria);
+
+ stat = asn1PD_H245Criteria (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceRequest_requestTerminalCertificate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceRequest_requestTerminalCertificate (OOCTXT* pctxt, H245ConferenceRequest_requestTerminalCertificate* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.terminalLabelPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.certSelectionCriteriaPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.sRandomPresent = optbit;
+
+ /* decode terminalLabel */
+
+ if (pvalue->m.terminalLabelPresent) {
+ invokeStartElement (pctxt, "terminalLabel", -1);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalLabel", -1);
+ }
+
+ /* decode certSelectionCriteria */
+
+ if (pvalue->m.certSelectionCriteriaPresent) {
+ invokeStartElement (pctxt, "certSelectionCriteria", -1);
+
+ stat = asn1PD_H245CertSelectionCriteria (pctxt, &pvalue->certSelectionCriteria);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "certSelectionCriteria", -1);
+ }
+
+ /* decode sRandom */
+
+ if (pvalue->m.sRandomPresent) {
+ invokeStartElement (pctxt, "sRandom", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->sRandom, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sRandom);
+
+ invokeEndElement (pctxt, "sRandom", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RemoteMCRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RemoteMCRequest (OOCTXT* pctxt, H245RemoteMCRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* masterActivate */
+ case 0:
+ invokeStartElement (pctxt, "masterActivate", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "masterActivate", -1);
+
+ break;
+
+ /* slaveActivate */
+ case 1:
+ invokeStartElement (pctxt, "slaveActivate", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "slaveActivate", -1);
+
+ break;
+
+ /* deActivate */
+ case 2:
+ invokeStartElement (pctxt, "deActivate", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "deActivate", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceRequest (OOCTXT* pctxt, H245ConferenceRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 7);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* terminalListRequest */
+ case 0:
+ invokeStartElement (pctxt, "terminalListRequest", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "terminalListRequest", -1);
+
+ break;
+
+ /* makeMeChair */
+ case 1:
+ invokeStartElement (pctxt, "makeMeChair", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "makeMeChair", -1);
+
+ break;
+
+ /* cancelMakeMeChair */
+ case 2:
+ invokeStartElement (pctxt, "cancelMakeMeChair", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "cancelMakeMeChair", -1);
+
+ break;
+
+ /* dropTerminal */
+ case 3:
+ invokeStartElement (pctxt, "dropTerminal", -1);
+
+ pvalue->u.dropTerminal = ALLOC_ASN1ELEM (pctxt, H245TerminalLabel);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, pvalue->u.dropTerminal);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dropTerminal", -1);
+
+ break;
+
+ /* requestTerminalID */
+ case 4:
+ invokeStartElement (pctxt, "requestTerminalID", -1);
+
+ pvalue->u.requestTerminalID = ALLOC_ASN1ELEM (pctxt, H245TerminalLabel);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, pvalue->u.requestTerminalID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestTerminalID", -1);
+
+ break;
+
+ /* enterH243Password */
+ case 5:
+ invokeStartElement (pctxt, "enterH243Password", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "enterH243Password", -1);
+
+ break;
+
+ /* enterH243TerminalID */
+ case 6:
+ invokeStartElement (pctxt, "enterH243TerminalID", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "enterH243TerminalID", -1);
+
+ break;
+
+ /* enterH243ConferenceID */
+ case 7:
+ invokeStartElement (pctxt, "enterH243ConferenceID", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "enterH243ConferenceID", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 9;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* enterExtensionAddress */
+ case 9:
+ invokeStartElement (pctxt, "enterExtensionAddress", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "enterExtensionAddress", -1);
+
+ break;
+
+ /* requestChairTokenOwner */
+ case 10:
+ invokeStartElement (pctxt, "requestChairTokenOwner", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "requestChairTokenOwner", -1);
+
+ break;
+
+ /* requestTerminalCertificate */
+ case 11:
+ invokeStartElement (pctxt, "requestTerminalCertificate", -1);
+
+ pvalue->u.requestTerminalCertificate = ALLOC_ASN1ELEM (pctxt, H245ConferenceRequest_requestTerminalCertificate);
+
+ stat = asn1PD_H245ConferenceRequest_requestTerminalCertificate (pctxt, pvalue->u.requestTerminalCertificate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestTerminalCertificate", -1);
+
+ break;
+
+ /* broadcastMyLogicalChannel */
+ case 12:
+ invokeStartElement (pctxt, "broadcastMyLogicalChannel", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->u.broadcastMyLogicalChannel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "broadcastMyLogicalChannel", -1);
+
+ break;
+
+ /* makeTerminalBroadcaster */
+ case 13:
+ invokeStartElement (pctxt, "makeTerminalBroadcaster", -1);
+
+ pvalue->u.makeTerminalBroadcaster = ALLOC_ASN1ELEM (pctxt, H245TerminalLabel);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, pvalue->u.makeTerminalBroadcaster);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "makeTerminalBroadcaster", -1);
+
+ break;
+
+ /* sendThisSource */
+ case 14:
+ invokeStartElement (pctxt, "sendThisSource", -1);
+
+ pvalue->u.sendThisSource = ALLOC_ASN1ELEM (pctxt, H245TerminalLabel);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, pvalue->u.sendThisSource);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sendThisSource", -1);
+
+ break;
+
+ /* requestAllTerminalIDs */
+ case 15:
+ invokeStartElement (pctxt, "requestAllTerminalIDs", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "requestAllTerminalIDs", -1);
+
+ break;
+
+ /* remoteMCRequest */
+ case 16:
+ invokeStartElement (pctxt, "remoteMCRequest", -1);
+
+ pvalue->u.remoteMCRequest = ALLOC_ASN1ELEM (pctxt, H245RemoteMCRequest);
+
+ stat = asn1PD_H245RemoteMCRequest (pctxt, pvalue->u.remoteMCRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "remoteMCRequest", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_callInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkRequest_callInformation (OOCTXT* pctxt, H245MultilinkRequest_callInformation* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode maxNumberOfAdditionalConnections */
+
+ invokeStartElement (pctxt, "maxNumberOfAdditionalConnections", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maxNumberOfAdditionalConnections, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maxNumberOfAdditionalConnections);
+
+ invokeEndElement (pctxt, "maxNumberOfAdditionalConnections", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DialingInformationNetworkType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DialingInformationNetworkType (OOCTXT* pctxt, H245DialingInformationNetworkType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardMessage);
+
+ stat = asn1PD_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* n_isdn */
+ case 1:
+ invokeStartElement (pctxt, "n_isdn", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "n_isdn", -1);
+
+ break;
+
+ /* gstn */
+ case 2:
+ invokeStartElement (pctxt, "gstn", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "gstn", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* mobile */
+ case 4:
+ invokeStartElement (pctxt, "mobile", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "mobile", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DialingInformationNumber_networkType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DialingInformationNumber_networkType (OOCTXT* pctxt, H245DialingInformationNumber_networkType* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 255, 0 };
+ int stat = ASN_OK;
+ H245DialingInformationNetworkType* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245DialingInformationNetworkType);
+
+ stat = asn1PD_H245DialingInformationNetworkType (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DialingInformationNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DialingInformationNumber (OOCTXT* pctxt, H245DialingInformationNumber* pvalue)
+{
+ static Asn1SizeCnst networkAddress_lsize1 = { 0, 0, 40, 0 };
+ static Asn1SizeCnst subAddress_lsize1 = { 0, 1, 40, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.subAddressPresent = optbit;
+
+ /* decode networkAddress */
+
+ invokeStartElement (pctxt, "networkAddress", -1);
+
+ addSizeConstraint (pctxt, &networkAddress_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->networkAddress, NUM_CANSET, 4, 4, 4);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->networkAddress);
+
+ invokeEndElement (pctxt, "networkAddress", -1);
+
+ /* decode subAddress */
+
+ if (pvalue->m.subAddressPresent) {
+ invokeStartElement (pctxt, "subAddress", -1);
+
+ addSizeConstraint (pctxt, &subAddress_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->subAddress, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->subAddress);
+
+ invokeEndElement (pctxt, "subAddress", -1);
+ }
+
+ /* decode networkType */
+
+ invokeStartElement (pctxt, "networkType", -1);
+
+ stat = asn1PD_H245DialingInformationNumber_networkType (pctxt, &pvalue->networkType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "networkType", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DialingInformation_differential */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DialingInformation_differential (OOCTXT* pctxt, H245DialingInformation_differential* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 65535, 0 };
+ int stat = ASN_OK;
+ H245DialingInformationNumber* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245DialingInformationNumber);
+
+ stat = asn1PD_H245DialingInformationNumber (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DialingInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245DialingInformation (OOCTXT* pctxt, H245DialingInformation* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardMessage);
+
+ stat = asn1PD_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* differential */
+ case 1:
+ invokeStartElement (pctxt, "differential", -1);
+
+ pvalue->u.differential = ALLOC_ASN1ELEM (pctxt, H245DialingInformation_differential);
+
+ stat = asn1PD_H245DialingInformation_differential (pctxt, pvalue->u.differential);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "differential", -1);
+
+ break;
+
+ /* infoNotAvailable */
+ case 2:
+ invokeStartElement (pctxt, "infoNotAvailable", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.infoNotAvailable, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.infoNotAvailable);
+
+ invokeEndElement (pctxt, "infoNotAvailable", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_addConnection */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkRequest_addConnection (OOCTXT* pctxt, H245MultilinkRequest_addConnection* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ /* decode dialingInformation */
+
+ invokeStartElement (pctxt, "dialingInformation", -1);
+
+ stat = asn1PD_H245DialingInformation (pctxt, &pvalue->dialingInformation);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dialingInformation", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConnectionIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConnectionIdentifier (OOCTXT* pctxt, H245ConnectionIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode channelTag */
+
+ invokeStartElement (pctxt, "channelTag", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->channelTag, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->channelTag);
+
+ invokeEndElement (pctxt, "channelTag", -1);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->sequenceNumber, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sequenceNumber);
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_removeConnection */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkRequest_removeConnection (OOCTXT* pctxt, H245MultilinkRequest_removeConnection* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode connectionIdentifier */
+
+ invokeStartElement (pctxt, "connectionIdentifier", -1);
+
+ stat = asn1PD_H245ConnectionIdentifier (pctxt, &pvalue->connectionIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "connectionIdentifier", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_maximumHeaderInterval_requestType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkRequest_maximumHeaderInterval_requestType (OOCTXT* pctxt, H245MultilinkRequest_maximumHeaderInterval_requestType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* currentIntervalInformation */
+ case 0:
+ invokeStartElement (pctxt, "currentIntervalInformation", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "currentIntervalInformation", -1);
+
+ break;
+
+ /* requestedInterval */
+ case 1:
+ invokeStartElement (pctxt, "requestedInterval", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.requestedInterval, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.requestedInterval);
+
+ invokeEndElement (pctxt, "requestedInterval", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_maximumHeaderInterval */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkRequest_maximumHeaderInterval (OOCTXT* pctxt, H245MultilinkRequest_maximumHeaderInterval* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode requestType */
+
+ invokeStartElement (pctxt, "requestType", -1);
+
+ stat = asn1PD_H245MultilinkRequest_maximumHeaderInterval_requestType (pctxt, &pvalue->requestType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestType", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkRequest (OOCTXT* pctxt, H245MultilinkRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 4);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardMessage);
+
+ stat = asn1PD_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* callInformation */
+ case 1:
+ invokeStartElement (pctxt, "callInformation", -1);
+
+ pvalue->u.callInformation = ALLOC_ASN1ELEM (pctxt, H245MultilinkRequest_callInformation);
+
+ stat = asn1PD_H245MultilinkRequest_callInformation (pctxt, pvalue->u.callInformation);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callInformation", -1);
+
+ break;
+
+ /* addConnection */
+ case 2:
+ invokeStartElement (pctxt, "addConnection", -1);
+
+ pvalue->u.addConnection = ALLOC_ASN1ELEM (pctxt, H245MultilinkRequest_addConnection);
+
+ stat = asn1PD_H245MultilinkRequest_addConnection (pctxt, pvalue->u.addConnection);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "addConnection", -1);
+
+ break;
+
+ /* removeConnection */
+ case 3:
+ invokeStartElement (pctxt, "removeConnection", -1);
+
+ pvalue->u.removeConnection = ALLOC_ASN1ELEM (pctxt, H245MultilinkRequest_removeConnection);
+
+ stat = asn1PD_H245MultilinkRequest_removeConnection (pctxt, pvalue->u.removeConnection);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "removeConnection", -1);
+
+ break;
+
+ /* maximumHeaderInterval */
+ case 4:
+ invokeStartElement (pctxt, "maximumHeaderInterval", -1);
+
+ pvalue->u.maximumHeaderInterval = ALLOC_ASN1ELEM (pctxt, H245MultilinkRequest_maximumHeaderInterval);
+
+ stat = asn1PD_H245MultilinkRequest_maximumHeaderInterval (pctxt, pvalue->u.maximumHeaderInterval);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "maximumHeaderInterval", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 6;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaximumBitRate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MaximumBitRate (OOCTXT* pctxt, H245MaximumBitRate* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUnsigned (pctxt, pvalue, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245LogicalChannelRateRequest (OOCTXT* pctxt, H245LogicalChannelRateRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ /* decode logicalChannelNumber */
+
+ invokeStartElement (pctxt, "logicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber", -1);
+
+ /* decode maximumBitRate */
+
+ invokeStartElement (pctxt, "maximumBitRate", -1);
+
+ stat = asn1PD_H245MaximumBitRate (pctxt, &pvalue->maximumBitRate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "maximumBitRate", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestMessage (OOCTXT* pctxt, H245RequestMessage* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 10);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardMessage);
+
+ stat = asn1PD_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* masterSlaveDetermination */
+ case 1:
+ invokeStartElement (pctxt, "masterSlaveDetermination", -1);
+
+ pvalue->u.masterSlaveDetermination = ALLOC_ASN1ELEM (pctxt, H245MasterSlaveDetermination);
+
+ stat = asn1PD_H245MasterSlaveDetermination (pctxt, pvalue->u.masterSlaveDetermination);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "masterSlaveDetermination", -1);
+
+ break;
+
+ /* terminalCapabilitySet */
+ case 2:
+ invokeStartElement (pctxt, "terminalCapabilitySet", -1);
+
+ pvalue->u.terminalCapabilitySet = ALLOC_ASN1ELEM (pctxt, H245TerminalCapabilitySet);
+
+ stat = asn1PD_H245TerminalCapabilitySet (pctxt, pvalue->u.terminalCapabilitySet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalCapabilitySet", -1);
+
+ break;
+
+ /* openLogicalChannel */
+ case 3:
+ invokeStartElement (pctxt, "openLogicalChannel", -1);
+
+ pvalue->u.openLogicalChannel = ALLOC_ASN1ELEM (pctxt, H245OpenLogicalChannel);
+
+ stat = asn1PD_H245OpenLogicalChannel (pctxt, pvalue->u.openLogicalChannel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "openLogicalChannel", -1);
+
+ break;
+
+ /* closeLogicalChannel */
+ case 4:
+ invokeStartElement (pctxt, "closeLogicalChannel", -1);
+
+ pvalue->u.closeLogicalChannel = ALLOC_ASN1ELEM (pctxt, H245CloseLogicalChannel);
+
+ stat = asn1PD_H245CloseLogicalChannel (pctxt, pvalue->u.closeLogicalChannel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "closeLogicalChannel", -1);
+
+ break;
+
+ /* requestChannelClose */
+ case 5:
+ invokeStartElement (pctxt, "requestChannelClose", -1);
+
+ pvalue->u.requestChannelClose = ALLOC_ASN1ELEM (pctxt, H245RequestChannelClose);
+
+ stat = asn1PD_H245RequestChannelClose (pctxt, pvalue->u.requestChannelClose);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestChannelClose", -1);
+
+ break;
+
+ /* multiplexEntrySend */
+ case 6:
+ invokeStartElement (pctxt, "multiplexEntrySend", -1);
+
+ pvalue->u.multiplexEntrySend = ALLOC_ASN1ELEM (pctxt, H245MultiplexEntrySend);
+
+ stat = asn1PD_H245MultiplexEntrySend (pctxt, pvalue->u.multiplexEntrySend);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexEntrySend", -1);
+
+ break;
+
+ /* requestMultiplexEntry */
+ case 7:
+ invokeStartElement (pctxt, "requestMultiplexEntry", -1);
+
+ pvalue->u.requestMultiplexEntry = ALLOC_ASN1ELEM (pctxt, H245RequestMultiplexEntry);
+
+ stat = asn1PD_H245RequestMultiplexEntry (pctxt, pvalue->u.requestMultiplexEntry);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestMultiplexEntry", -1);
+
+ break;
+
+ /* requestMode */
+ case 8:
+ invokeStartElement (pctxt, "requestMode", -1);
+
+ pvalue->u.requestMode = ALLOC_ASN1ELEM (pctxt, H245RequestMode);
+
+ stat = asn1PD_H245RequestMode (pctxt, pvalue->u.requestMode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestMode", -1);
+
+ break;
+
+ /* roundTripDelayRequest */
+ case 9:
+ invokeStartElement (pctxt, "roundTripDelayRequest", -1);
+
+ pvalue->u.roundTripDelayRequest = ALLOC_ASN1ELEM (pctxt, H245RoundTripDelayRequest);
+
+ stat = asn1PD_H245RoundTripDelayRequest (pctxt, pvalue->u.roundTripDelayRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "roundTripDelayRequest", -1);
+
+ break;
+
+ /* maintenanceLoopRequest */
+ case 10:
+ invokeStartElement (pctxt, "maintenanceLoopRequest", -1);
+
+ pvalue->u.maintenanceLoopRequest = ALLOC_ASN1ELEM (pctxt, H245MaintenanceLoopRequest);
+
+ stat = asn1PD_H245MaintenanceLoopRequest (pctxt, pvalue->u.maintenanceLoopRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "maintenanceLoopRequest", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 12;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* communicationModeRequest */
+ case 12:
+ invokeStartElement (pctxt, "communicationModeRequest", -1);
+
+ pvalue->u.communicationModeRequest = ALLOC_ASN1ELEM (pctxt, H245CommunicationModeRequest);
+
+ stat = asn1PD_H245CommunicationModeRequest (pctxt, pvalue->u.communicationModeRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "communicationModeRequest", -1);
+
+ break;
+
+ /* conferenceRequest */
+ case 13:
+ invokeStartElement (pctxt, "conferenceRequest", -1);
+
+ pvalue->u.conferenceRequest = ALLOC_ASN1ELEM (pctxt, H245ConferenceRequest);
+
+ stat = asn1PD_H245ConferenceRequest (pctxt, pvalue->u.conferenceRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceRequest", -1);
+
+ break;
+
+ /* multilinkRequest */
+ case 14:
+ invokeStartElement (pctxt, "multilinkRequest", -1);
+
+ pvalue->u.multilinkRequest = ALLOC_ASN1ELEM (pctxt, H245MultilinkRequest);
+
+ stat = asn1PD_H245MultilinkRequest (pctxt, pvalue->u.multilinkRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multilinkRequest", -1);
+
+ break;
+
+ /* logicalChannelRateRequest */
+ case 15:
+ invokeStartElement (pctxt, "logicalChannelRateRequest", -1);
+
+ pvalue->u.logicalChannelRateRequest = ALLOC_ASN1ELEM (pctxt, H245LogicalChannelRateRequest);
+
+ stat = asn1PD_H245LogicalChannelRateRequest (pctxt, pvalue->u.logicalChannelRateRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelRateRequest", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationAck_decision */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MasterSlaveDeterminationAck_decision (OOCTXT* pctxt, H245MasterSlaveDeterminationAck_decision* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* master */
+ case 0:
+ invokeStartElement (pctxt, "master", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "master", -1);
+
+ break;
+
+ /* slave */
+ case 1:
+ invokeStartElement (pctxt, "slave", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "slave", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MasterSlaveDeterminationAck (OOCTXT* pctxt, H245MasterSlaveDeterminationAck* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode decision */
+
+ invokeStartElement (pctxt, "decision", -1);
+
+ stat = asn1PD_H245MasterSlaveDeterminationAck_decision (pctxt, &pvalue->decision);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "decision", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationReject_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MasterSlaveDeterminationReject_cause (OOCTXT* pctxt, H245MasterSlaveDeterminationReject_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 0);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* identicalNumbers */
+ case 0:
+ invokeStartElement (pctxt, "identicalNumbers", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "identicalNumbers", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 2;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MasterSlaveDeterminationReject (OOCTXT* pctxt, H245MasterSlaveDeterminationReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode cause */
+
+ invokeStartElement (pctxt, "cause", -1);
+
+ stat = asn1PD_H245MasterSlaveDeterminationReject_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cause", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TerminalCapabilitySetAck (OOCTXT* pctxt, H245TerminalCapabilitySetAck* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetReject_cause_tableEntryCapacityExce */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded (OOCTXT* pctxt, H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* highestEntryNumberProcessed */
+ case 0:
+ invokeStartElement (pctxt, "highestEntryNumberProcessed", -1);
+
+ stat = asn1PD_H245CapabilityTableEntryNumber (pctxt, &pvalue->u.highestEntryNumberProcessed);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "highestEntryNumberProcessed", -1);
+
+ break;
+
+ /* noneProcessed */
+ case 1:
+ invokeStartElement (pctxt, "noneProcessed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noneProcessed", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetReject_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TerminalCapabilitySetReject_cause (OOCTXT* pctxt, H245TerminalCapabilitySetReject_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unspecified */
+ case 0:
+ invokeStartElement (pctxt, "unspecified", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unspecified", -1);
+
+ break;
+
+ /* undefinedTableEntryUsed */
+ case 1:
+ invokeStartElement (pctxt, "undefinedTableEntryUsed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "undefinedTableEntryUsed", -1);
+
+ break;
+
+ /* descriptorCapacityExceeded */
+ case 2:
+ invokeStartElement (pctxt, "descriptorCapacityExceeded", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "descriptorCapacityExceeded", -1);
+
+ break;
+
+ /* tableEntryCapacityExceeded */
+ case 3:
+ invokeStartElement (pctxt, "tableEntryCapacityExceeded", -1);
+
+ pvalue->u.tableEntryCapacityExceeded = ALLOC_ASN1ELEM (pctxt, H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded);
+
+ stat = asn1PD_H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded (pctxt, pvalue->u.tableEntryCapacityExceeded);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tableEntryCapacityExceeded", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TerminalCapabilitySetReject (OOCTXT* pctxt, H245TerminalCapabilitySetReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ /* decode cause */
+
+ invokeStartElement (pctxt, "cause", -1);
+
+ stat = asn1PD_H245TerminalCapabilitySetReject_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cause", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelAck_reverseLogicalChannelParameters_mu */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 0);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* h222LogicalChannelParameters */
+ case 0:
+ invokeStartElement (pctxt, "h222LogicalChannelParameters", -1);
+
+ pvalue->u.h222LogicalChannelParameters = ALLOC_ASN1ELEM (pctxt, H245H222LogicalChannelParameters);
+
+ stat = asn1PD_H245H222LogicalChannelParameters (pctxt, pvalue->u.h222LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h222LogicalChannelParameters", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 2;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* h2250LogicalChannelParameters */
+ case 2:
+ invokeStartElement (pctxt, "h2250LogicalChannelParameters", -1);
+
+ pvalue->u.h2250LogicalChannelParameters = ALLOC_ASN1ELEM (pctxt, H245H2250LogicalChannelParameters);
+
+ stat = asn1PD_H245H2250LogicalChannelParameters (pctxt, pvalue->u.h2250LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h2250LogicalChannelParameters", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelAck_reverseLogicalChannelParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245OpenLogicalChannelAck_reverseLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_reverseLogicalChannelParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.portNumberPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.multiplexParametersPresent = optbit;
+
+ /* decode reverseLogicalChannelNumber */
+
+ invokeStartElement (pctxt, "reverseLogicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->reverseLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "reverseLogicalChannelNumber", -1);
+
+ /* decode portNumber */
+
+ if (pvalue->m.portNumberPresent) {
+ invokeStartElement (pctxt, "portNumber", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->portNumber, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->portNumber);
+
+ invokeEndElement (pctxt, "portNumber", -1);
+ }
+
+ /* decode multiplexParameters */
+
+ if (pvalue->m.multiplexParametersPresent) {
+ invokeStartElement (pctxt, "multiplexParameters", -1);
+
+ stat = asn1PD_H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters (pctxt, &pvalue->multiplexParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexParameters", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.replacementForPresent = 1;
+
+ invokeStartElement (pctxt, "replacementFor", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->replacementFor);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "replacementFor", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250LogicalChannelAckParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H2250LogicalChannelAckParameters (OOCTXT* pctxt, H245H2250LogicalChannelAckParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.sessionIDPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mediaChannelPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mediaControlChannelPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.dynamicRTPPayloadTypePresent = optbit;
+
+ /* decode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ stat = asn1PD_H245_SeqOfH245NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+ }
+
+ /* decode sessionID */
+
+ if (pvalue->m.sessionIDPresent) {
+ invokeStartElement (pctxt, "sessionID", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->sessionID, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sessionID);
+
+ invokeEndElement (pctxt, "sessionID", -1);
+ }
+
+ /* decode mediaChannel */
+
+ if (pvalue->m.mediaChannelPresent) {
+ invokeStartElement (pctxt, "mediaChannel", -1);
+
+ stat = asn1PD_H245TransportAddress (pctxt, &pvalue->mediaChannel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaChannel", -1);
+ }
+
+ /* decode mediaControlChannel */
+
+ if (pvalue->m.mediaControlChannelPresent) {
+ invokeStartElement (pctxt, "mediaControlChannel", -1);
+
+ stat = asn1PD_H245TransportAddress (pctxt, &pvalue->mediaControlChannel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaControlChannel", -1);
+ }
+
+ /* decode dynamicRTPPayloadType */
+
+ if (pvalue->m.dynamicRTPPayloadTypePresent) {
+ invokeStartElement (pctxt, "dynamicRTPPayloadType", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->dynamicRTPPayloadType, 96U, 127U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->dynamicRTPPayloadType);
+
+ invokeEndElement (pctxt, "dynamicRTPPayloadType", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.flowControlToZeroPresent = 1;
+
+ invokeStartElement (pctxt, "flowControlToZero", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->flowControlToZero);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->flowControlToZero);
+
+ invokeEndElement (pctxt, "flowControlToZero", -1);
+ break;
+
+ case 1:
+ pvalue->m.portNumberPresent = 1;
+
+ invokeStartElement (pctxt, "portNumber", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->portNumber, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->portNumber);
+
+ invokeEndElement (pctxt, "portNumber", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelAck_forwardMultiplexAckParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245OpenLogicalChannelAck_forwardMultiplexAckParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_forwardMultiplexAckParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 0);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* h2250LogicalChannelAckParameters */
+ case 0:
+ invokeStartElement (pctxt, "h2250LogicalChannelAckParameters", -1);
+
+ pvalue->u.h2250LogicalChannelAckParameters = ALLOC_ASN1ELEM (pctxt, H245H2250LogicalChannelAckParameters);
+
+ stat = asn1PD_H245H2250LogicalChannelAckParameters (pctxt, pvalue->u.h2250LogicalChannelAckParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h2250LogicalChannelAckParameters", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 2;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245OpenLogicalChannelAck (OOCTXT* pctxt, H245OpenLogicalChannelAck* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.reverseLogicalChannelParametersPresent = optbit;
+
+ /* decode forwardLogicalChannelNumber */
+
+ invokeStartElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ /* decode reverseLogicalChannelParameters */
+
+ if (pvalue->m.reverseLogicalChannelParametersPresent) {
+ invokeStartElement (pctxt, "reverseLogicalChannelParameters", -1);
+
+ stat = asn1PD_H245OpenLogicalChannelAck_reverseLogicalChannelParameters (pctxt, &pvalue->reverseLogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "reverseLogicalChannelParameters", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 3 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.separateStackPresent = 1;
+
+ invokeStartElement (pctxt, "separateStack", -1);
+
+ stat = asn1PD_H245NetworkAccessParameters (pctxt, &pvalue->separateStack);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "separateStack", -1);
+ break;
+
+ case 1:
+ pvalue->m.forwardMultiplexAckParametersPresent = 1;
+
+ invokeStartElement (pctxt, "forwardMultiplexAckParameters", -1);
+
+ stat = asn1PD_H245OpenLogicalChannelAck_forwardMultiplexAckParameters (pctxt, &pvalue->forwardMultiplexAckParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "forwardMultiplexAckParameters", -1);
+ break;
+
+ case 2:
+ pvalue->m.encryptionSyncPresent = 1;
+
+ invokeStartElement (pctxt, "encryptionSync", -1);
+
+ stat = asn1PD_H245EncryptionSync (pctxt, &pvalue->encryptionSync);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "encryptionSync", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelReject_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245OpenLogicalChannelReject_cause (OOCTXT* pctxt, H245OpenLogicalChannelReject_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 5);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unspecified */
+ case 0:
+ invokeStartElement (pctxt, "unspecified", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unspecified", -1);
+
+ break;
+
+ /* unsuitableReverseParameters */
+ case 1:
+ invokeStartElement (pctxt, "unsuitableReverseParameters", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unsuitableReverseParameters", -1);
+
+ break;
+
+ /* dataTypeNotSupported */
+ case 2:
+ invokeStartElement (pctxt, "dataTypeNotSupported", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "dataTypeNotSupported", -1);
+
+ break;
+
+ /* dataTypeNotAvailable */
+ case 3:
+ invokeStartElement (pctxt, "dataTypeNotAvailable", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "dataTypeNotAvailable", -1);
+
+ break;
+
+ /* unknownDataType */
+ case 4:
+ invokeStartElement (pctxt, "unknownDataType", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unknownDataType", -1);
+
+ break;
+
+ /* dataTypeALCombinationNotSupported */
+ case 5:
+ invokeStartElement (pctxt, "dataTypeALCombinationNotSupported", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "dataTypeALCombinationNotSupported", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 7;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* multicastChannelNotAllowed */
+ case 7:
+ invokeStartElement (pctxt, "multicastChannelNotAllowed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "multicastChannelNotAllowed", -1);
+
+ break;
+
+ /* insufficientBandwidth */
+ case 8:
+ invokeStartElement (pctxt, "insufficientBandwidth", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "insufficientBandwidth", -1);
+
+ break;
+
+ /* separateStackEstablishmentFailed */
+ case 9:
+ invokeStartElement (pctxt, "separateStackEstablishmentFailed", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "separateStackEstablishmentFailed", -1);
+
+ break;
+
+ /* invalidSessionID */
+ case 10:
+ invokeStartElement (pctxt, "invalidSessionID", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidSessionID", -1);
+
+ break;
+
+ /* masterSlaveConflict */
+ case 11:
+ invokeStartElement (pctxt, "masterSlaveConflict", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "masterSlaveConflict", -1);
+
+ break;
+
+ /* waitForCommunicationMode */
+ case 12:
+ invokeStartElement (pctxt, "waitForCommunicationMode", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "waitForCommunicationMode", -1);
+
+ break;
+
+ /* invalidDependentChannel */
+ case 13:
+ invokeStartElement (pctxt, "invalidDependentChannel", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "invalidDependentChannel", -1);
+
+ break;
+
+ /* replacementForRejected */
+ case 14:
+ invokeStartElement (pctxt, "replacementForRejected", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "replacementForRejected", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245OpenLogicalChannelReject (OOCTXT* pctxt, H245OpenLogicalChannelReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode forwardLogicalChannelNumber */
+
+ invokeStartElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ /* decode cause */
+
+ invokeStartElement (pctxt, "cause", -1);
+
+ stat = asn1PD_H245OpenLogicalChannelReject_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cause", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CloseLogicalChannelAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CloseLogicalChannelAck (OOCTXT* pctxt, H245CloseLogicalChannelAck* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode forwardLogicalChannelNumber */
+
+ invokeStartElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestChannelCloseAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestChannelCloseAck (OOCTXT* pctxt, H245RequestChannelCloseAck* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode forwardLogicalChannelNumber */
+
+ invokeStartElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestChannelCloseReject_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestChannelCloseReject_cause (OOCTXT* pctxt, H245RequestChannelCloseReject_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 0);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unspecified */
+ case 0:
+ invokeStartElement (pctxt, "unspecified", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unspecified", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 2;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestChannelCloseReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestChannelCloseReject (OOCTXT* pctxt, H245RequestChannelCloseReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode forwardLogicalChannelNumber */
+
+ invokeStartElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ /* decode cause */
+
+ invokeStartElement (pctxt, "cause", -1);
+
+ stat = asn1PD_H245RequestChannelCloseReject_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cause", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendAck_multiplexTableEntryNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexEntrySendAck_multiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexEntrySendAck_multiplexTableEntryNumber* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H245MultiplexTableEntryNumber (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexEntrySendAck (OOCTXT* pctxt, H245MultiplexEntrySendAck* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ /* decode multiplexTableEntryNumber */
+
+ invokeStartElement (pctxt, "multiplexTableEntryNumber", -1);
+
+ stat = asn1PD_H245MultiplexEntrySendAck_multiplexTableEntryNumber (pctxt, &pvalue->multiplexTableEntryNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexTableEntryNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntryRejectionDescriptions_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexEntryRejectionDescriptions_cause (OOCTXT* pctxt, H245MultiplexEntryRejectionDescriptions_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unspecifiedCause */
+ case 0:
+ invokeStartElement (pctxt, "unspecifiedCause", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unspecifiedCause", -1);
+
+ break;
+
+ /* descriptorTooComplex */
+ case 1:
+ invokeStartElement (pctxt, "descriptorTooComplex", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "descriptorTooComplex", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntryRejectionDescriptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexEntryRejectionDescriptions (OOCTXT* pctxt, H245MultiplexEntryRejectionDescriptions* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode multiplexTableEntryNumber */
+
+ invokeStartElement (pctxt, "multiplexTableEntryNumber", -1);
+
+ stat = asn1PD_H245MultiplexTableEntryNumber (pctxt, &pvalue->multiplexTableEntryNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexTableEntryNumber", -1);
+
+ /* decode cause */
+
+ invokeStartElement (pctxt, "cause", -1);
+
+ stat = asn1PD_H245MultiplexEntryRejectionDescriptions_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cause", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendReject_rejectionDescriptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexEntrySendReject_rejectionDescriptions (OOCTXT* pctxt, H245MultiplexEntrySendReject_rejectionDescriptions* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ H245MultiplexEntryRejectionDescriptions* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245MultiplexEntryRejectionDescriptions);
+
+ stat = asn1PD_H245MultiplexEntryRejectionDescriptions (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexEntrySendReject (OOCTXT* pctxt, H245MultiplexEntrySendReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ /* decode rejectionDescriptions */
+
+ invokeStartElement (pctxt, "rejectionDescriptions", -1);
+
+ stat = asn1PD_H245MultiplexEntrySendReject_rejectionDescriptions (pctxt, &pvalue->rejectionDescriptions);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rejectionDescriptions", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryAck_entryNumbers */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestMultiplexEntryAck_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryAck_entryNumbers* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H245MultiplexTableEntryNumber (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestMultiplexEntryAck (OOCTXT* pctxt, H245RequestMultiplexEntryAck* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode entryNumbers */
+
+ invokeStartElement (pctxt, "entryNumbers", -1);
+
+ stat = asn1PD_H245RequestMultiplexEntryAck_entryNumbers (pctxt, &pvalue->entryNumbers);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "entryNumbers", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryReject_entryNumbers */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestMultiplexEntryReject_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryReject_entryNumbers* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H245MultiplexTableEntryNumber (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryRejectionDescriptions_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestMultiplexEntryRejectionDescriptions_cause (OOCTXT* pctxt, H245RequestMultiplexEntryRejectionDescriptions_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 0);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unspecifiedCause */
+ case 0:
+ invokeStartElement (pctxt, "unspecifiedCause", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unspecifiedCause", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 2;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryRejectionDescriptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestMultiplexEntryRejectionDescriptions (OOCTXT* pctxt, H245RequestMultiplexEntryRejectionDescriptions* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode multiplexTableEntryNumber */
+
+ invokeStartElement (pctxt, "multiplexTableEntryNumber", -1);
+
+ stat = asn1PD_H245MultiplexTableEntryNumber (pctxt, &pvalue->multiplexTableEntryNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexTableEntryNumber", -1);
+
+ /* decode cause */
+
+ invokeStartElement (pctxt, "cause", -1);
+
+ stat = asn1PD_H245RequestMultiplexEntryRejectionDescriptions_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cause", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryReject_rejectionDescriptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestMultiplexEntryReject_rejectionDescriptions (OOCTXT* pctxt, H245RequestMultiplexEntryReject_rejectionDescriptions* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ H245RequestMultiplexEntryRejectionDescriptions* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245RequestMultiplexEntryRejectionDescriptions);
+
+ stat = asn1PD_H245RequestMultiplexEntryRejectionDescriptions (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestMultiplexEntryReject (OOCTXT* pctxt, H245RequestMultiplexEntryReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode entryNumbers */
+
+ invokeStartElement (pctxt, "entryNumbers", -1);
+
+ stat = asn1PD_H245RequestMultiplexEntryReject_entryNumbers (pctxt, &pvalue->entryNumbers);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "entryNumbers", -1);
+
+ /* decode rejectionDescriptions */
+
+ invokeStartElement (pctxt, "rejectionDescriptions", -1);
+
+ stat = asn1PD_H245RequestMultiplexEntryReject_rejectionDescriptions (pctxt, &pvalue->rejectionDescriptions);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rejectionDescriptions", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestModeAck_response */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestModeAck_response (OOCTXT* pctxt, H245RequestModeAck_response* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* willTransmitMostPreferredMode */
+ case 0:
+ invokeStartElement (pctxt, "willTransmitMostPreferredMode", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "willTransmitMostPreferredMode", -1);
+
+ break;
+
+ /* willTransmitLessPreferredMode */
+ case 1:
+ invokeStartElement (pctxt, "willTransmitLessPreferredMode", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "willTransmitLessPreferredMode", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestModeAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestModeAck (OOCTXT* pctxt, H245RequestModeAck* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ /* decode response */
+
+ invokeStartElement (pctxt, "response", -1);
+
+ stat = asn1PD_H245RequestModeAck_response (pctxt, &pvalue->response);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "response", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestModeReject_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestModeReject_cause (OOCTXT* pctxt, H245RequestModeReject_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* modeUnavailable */
+ case 0:
+ invokeStartElement (pctxt, "modeUnavailable", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "modeUnavailable", -1);
+
+ break;
+
+ /* multipointConstraint */
+ case 1:
+ invokeStartElement (pctxt, "multipointConstraint", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "multipointConstraint", -1);
+
+ break;
+
+ /* requestDenied */
+ case 2:
+ invokeStartElement (pctxt, "requestDenied", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "requestDenied", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestModeReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestModeReject (OOCTXT* pctxt, H245RequestModeReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ /* decode cause */
+
+ invokeStartElement (pctxt, "cause", -1);
+
+ stat = asn1PD_H245RequestModeReject_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cause", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RoundTripDelayResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RoundTripDelayResponse (OOCTXT* pctxt, H245RoundTripDelayResponse* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopAck_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MaintenanceLoopAck_type (OOCTXT* pctxt, H245MaintenanceLoopAck_type* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* systemLoop */
+ case 0:
+ invokeStartElement (pctxt, "systemLoop", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "systemLoop", -1);
+
+ break;
+
+ /* mediaLoop */
+ case 1:
+ invokeStartElement (pctxt, "mediaLoop", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->u.mediaLoop);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaLoop", -1);
+
+ break;
+
+ /* logicalChannelLoop */
+ case 2:
+ invokeStartElement (pctxt, "logicalChannelLoop", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->u.logicalChannelLoop);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelLoop", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MaintenanceLoopAck (OOCTXT* pctxt, H245MaintenanceLoopAck* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode type */
+
+ invokeStartElement (pctxt, "type", -1);
+
+ stat = asn1PD_H245MaintenanceLoopAck_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "type", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopReject_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MaintenanceLoopReject_type (OOCTXT* pctxt, H245MaintenanceLoopReject_type* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* systemLoop */
+ case 0:
+ invokeStartElement (pctxt, "systemLoop", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "systemLoop", -1);
+
+ break;
+
+ /* mediaLoop */
+ case 1:
+ invokeStartElement (pctxt, "mediaLoop", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->u.mediaLoop);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaLoop", -1);
+
+ break;
+
+ /* logicalChannelLoop */
+ case 2:
+ invokeStartElement (pctxt, "logicalChannelLoop", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->u.logicalChannelLoop);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelLoop", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopReject_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MaintenanceLoopReject_cause (OOCTXT* pctxt, H245MaintenanceLoopReject_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 0);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* canNotPerformLoop */
+ case 0:
+ invokeStartElement (pctxt, "canNotPerformLoop", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "canNotPerformLoop", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 2;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MaintenanceLoopReject (OOCTXT* pctxt, H245MaintenanceLoopReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode type */
+
+ invokeStartElement (pctxt, "type", -1);
+
+ stat = asn1PD_H245MaintenanceLoopReject_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "type", -1);
+
+ /* decode cause */
+
+ invokeStartElement (pctxt, "cause", -1);
+
+ stat = asn1PD_H245MaintenanceLoopReject_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cause", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommunicationModeTableEntry_dataType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CommunicationModeTableEntry_dataType (OOCTXT* pctxt, H245CommunicationModeTableEntry_dataType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* videoData */
+ case 0:
+ invokeStartElement (pctxt, "videoData", -1);
+
+ pvalue->u.videoData = ALLOC_ASN1ELEM (pctxt, H245VideoCapability);
+
+ stat = asn1PD_H245VideoCapability (pctxt, pvalue->u.videoData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "videoData", -1);
+
+ break;
+
+ /* audioData */
+ case 1:
+ invokeStartElement (pctxt, "audioData", -1);
+
+ pvalue->u.audioData = ALLOC_ASN1ELEM (pctxt, H245AudioCapability);
+
+ stat = asn1PD_H245AudioCapability (pctxt, pvalue->u.audioData);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "audioData", -1);
+
+ break;
+
+ /* data */
+ case 2:
+ invokeStartElement (pctxt, "data", -1);
+
+ pvalue->u.data = ALLOC_ASN1ELEM (pctxt, H245DataApplicationCapability);
+
+ stat = asn1PD_H245DataApplicationCapability (pctxt, pvalue->u.data);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "data", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommunicationModeTableEntry */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CommunicationModeTableEntry (OOCTXT* pctxt, H245CommunicationModeTableEntry* pvalue)
+{
+ static Asn1SizeCnst sessionDescription_lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.associatedSessionIDPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.terminalLabelPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mediaChannelPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mediaGuaranteedDeliveryPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mediaControlChannelPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mediaControlGuaranteedDeliveryPresent = optbit;
+
+ /* decode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ stat = asn1PD_H245_SeqOfH245NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+ }
+
+ /* decode sessionID */
+
+ invokeStartElement (pctxt, "sessionID", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->sessionID, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sessionID);
+
+ invokeEndElement (pctxt, "sessionID", -1);
+
+ /* decode associatedSessionID */
+
+ if (pvalue->m.associatedSessionIDPresent) {
+ invokeStartElement (pctxt, "associatedSessionID", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->associatedSessionID, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->associatedSessionID);
+
+ invokeEndElement (pctxt, "associatedSessionID", -1);
+ }
+
+ /* decode terminalLabel */
+
+ if (pvalue->m.terminalLabelPresent) {
+ invokeStartElement (pctxt, "terminalLabel", -1);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalLabel", -1);
+ }
+
+ /* decode sessionDescription */
+
+ invokeStartElement (pctxt, "sessionDescription", -1);
+
+ addSizeConstraint (pctxt, &sessionDescription_lsize1);
+
+ stat = decodeBMPString (pctxt, &pvalue->sessionDescription, 0);
+ if (stat != ASN_OK) return stat;
+ invokeCharStr16BitValue (pctxt, pvalue->sessionDescription.nchars, pvalue->sessionDescription.data);
+
+ invokeEndElement (pctxt, "sessionDescription", -1);
+
+ /* decode dataType */
+
+ invokeStartElement (pctxt, "dataType", -1);
+
+ stat = asn1PD_H245CommunicationModeTableEntry_dataType (pctxt, &pvalue->dataType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataType", -1);
+
+ /* decode mediaChannel */
+
+ if (pvalue->m.mediaChannelPresent) {
+ invokeStartElement (pctxt, "mediaChannel", -1);
+
+ stat = asn1PD_H245TransportAddress (pctxt, &pvalue->mediaChannel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaChannel", -1);
+ }
+
+ /* decode mediaGuaranteedDelivery */
+
+ if (pvalue->m.mediaGuaranteedDeliveryPresent) {
+ invokeStartElement (pctxt, "mediaGuaranteedDelivery", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->mediaGuaranteedDelivery);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->mediaGuaranteedDelivery);
+
+ invokeEndElement (pctxt, "mediaGuaranteedDelivery", -1);
+ }
+
+ /* decode mediaControlChannel */
+
+ if (pvalue->m.mediaControlChannelPresent) {
+ invokeStartElement (pctxt, "mediaControlChannel", -1);
+
+ stat = asn1PD_H245TransportAddress (pctxt, &pvalue->mediaControlChannel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mediaControlChannel", -1);
+ }
+
+ /* decode mediaControlGuaranteedDelivery */
+
+ if (pvalue->m.mediaControlGuaranteedDeliveryPresent) {
+ invokeStartElement (pctxt, "mediaControlGuaranteedDelivery", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->mediaControlGuaranteedDelivery);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->mediaControlGuaranteedDelivery);
+
+ invokeEndElement (pctxt, "mediaControlGuaranteedDelivery", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 3 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.redundancyEncodingPresent = 1;
+
+ invokeStartElement (pctxt, "redundancyEncoding", -1);
+
+ stat = asn1PD_H245RedundancyEncoding (pctxt, &pvalue->redundancyEncoding);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "redundancyEncoding", -1);
+ break;
+
+ case 1:
+ pvalue->m.sessionDependencyPresent = 1;
+
+ invokeStartElement (pctxt, "sessionDependency", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->sessionDependency, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sessionDependency);
+
+ invokeEndElement (pctxt, "sessionDependency", -1);
+ break;
+
+ case 2:
+ pvalue->m.destinationPresent = 1;
+
+ invokeStartElement (pctxt, "destination", -1);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, &pvalue->destination);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "destination", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommunicationModeResponse_communicationModeTable */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CommunicationModeResponse_communicationModeTable (OOCTXT* pctxt, H245CommunicationModeResponse_communicationModeTable* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245CommunicationModeTableEntry* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245CommunicationModeTableEntry);
+
+ stat = asn1PD_H245CommunicationModeTableEntry (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommunicationModeResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CommunicationModeResponse (OOCTXT* pctxt, H245CommunicationModeResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 0);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* communicationModeTable */
+ case 0:
+ invokeStartElement (pctxt, "communicationModeTable", -1);
+
+ pvalue->u.communicationModeTable = ALLOC_ASN1ELEM (pctxt, H245CommunicationModeResponse_communicationModeTable);
+
+ stat = asn1PD_H245CommunicationModeResponse_communicationModeTable (pctxt, pvalue->u.communicationModeTable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "communicationModeTable", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 2;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalID */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TerminalID (OOCTXT* pctxt, H245TerminalID* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_mCTerminalIDResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceResponse_mCTerminalIDResponse (OOCTXT* pctxt, H245ConferenceResponse_mCTerminalIDResponse* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode terminalLabel */
+
+ invokeStartElement (pctxt, "terminalLabel", -1);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalLabel", -1);
+
+ /* decode terminalID */
+
+ invokeStartElement (pctxt, "terminalID", -1);
+
+ stat = asn1PD_H245TerminalID (pctxt, &pvalue->terminalID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalID", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_terminalIDResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceResponse_terminalIDResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalIDResponse* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode terminalLabel */
+
+ invokeStartElement (pctxt, "terminalLabel", -1);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalLabel", -1);
+
+ /* decode terminalID */
+
+ invokeStartElement (pctxt, "terminalID", -1);
+
+ stat = asn1PD_H245TerminalID (pctxt, &pvalue->terminalID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalID", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceID */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceID (OOCTXT* pctxt, H245ConferenceID* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 32, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_conferenceIDResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceResponse_conferenceIDResponse (OOCTXT* pctxt, H245ConferenceResponse_conferenceIDResponse* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode terminalLabel */
+
+ invokeStartElement (pctxt, "terminalLabel", -1);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalLabel", -1);
+
+ /* decode conferenceID */
+
+ invokeStartElement (pctxt, "conferenceID", -1);
+
+ stat = asn1PD_H245ConferenceID (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceID", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Password */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245Password (OOCTXT* pctxt, H245Password* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 32, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_passwordResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceResponse_passwordResponse (OOCTXT* pctxt, H245ConferenceResponse_passwordResponse* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode terminalLabel */
+
+ invokeStartElement (pctxt, "terminalLabel", -1);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalLabel", -1);
+
+ /* decode password */
+
+ invokeStartElement (pctxt, "password", -1);
+
+ stat = asn1PD_H245Password (pctxt, &pvalue->password);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "password", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_terminalListResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceResponse_terminalListResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalListResponse* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245TerminalLabel* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245TerminalLabel);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_makeMeChairResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceResponse_makeMeChairResponse (OOCTXT* pctxt, H245ConferenceResponse_makeMeChairResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* grantedChairToken */
+ case 0:
+ invokeStartElement (pctxt, "grantedChairToken", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "grantedChairToken", -1);
+
+ break;
+
+ /* deniedChairToken */
+ case 1:
+ invokeStartElement (pctxt, "deniedChairToken", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "deniedChairToken", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_extensionAddressResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceResponse_extensionAddressResponse (OOCTXT* pctxt, H245ConferenceResponse_extensionAddressResponse* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode extensionAddress */
+
+ invokeStartElement (pctxt, "extensionAddress", -1);
+
+ stat = asn1PD_H245TerminalID (pctxt, &pvalue->extensionAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "extensionAddress", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_chairTokenOwnerResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceResponse_chairTokenOwnerResponse (OOCTXT* pctxt, H245ConferenceResponse_chairTokenOwnerResponse* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode terminalLabel */
+
+ invokeStartElement (pctxt, "terminalLabel", -1);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalLabel", -1);
+
+ /* decode terminalID */
+
+ invokeStartElement (pctxt, "terminalID", -1);
+
+ stat = asn1PD_H245TerminalID (pctxt, &pvalue->terminalID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalID", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_terminalCertificateResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceResponse_terminalCertificateResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalCertificateResponse* pvalue)
+{
+ static Asn1SizeCnst certificateResponse_lsize1 = { 0, 1, 65535, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.terminalLabelPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.certificateResponsePresent = optbit;
+
+ /* decode terminalLabel */
+
+ if (pvalue->m.terminalLabelPresent) {
+ invokeStartElement (pctxt, "terminalLabel", -1);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalLabel", -1);
+ }
+
+ /* decode certificateResponse */
+
+ if (pvalue->m.certificateResponsePresent) {
+ invokeStartElement (pctxt, "certificateResponse", -1);
+
+ addSizeConstraint (pctxt, &certificateResponse_lsize1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->certificateResponse);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->certificateResponse.numocts, pvalue->certificateResponse.data);
+
+ invokeEndElement (pctxt, "certificateResponse", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_broadcastMyLogicalChannelResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceResponse_broadcastMyLogicalChannelResponse (OOCTXT* pctxt, H245ConferenceResponse_broadcastMyLogicalChannelResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* grantedBroadcastMyLogicalChannel */
+ case 0:
+ invokeStartElement (pctxt, "grantedBroadcastMyLogicalChannel", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "grantedBroadcastMyLogicalChannel", -1);
+
+ break;
+
+ /* deniedBroadcastMyLogicalChannel */
+ case 1:
+ invokeStartElement (pctxt, "deniedBroadcastMyLogicalChannel", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "deniedBroadcastMyLogicalChannel", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_makeTerminalBroadcasterResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceResponse_makeTerminalBroadcasterResponse (OOCTXT* pctxt, H245ConferenceResponse_makeTerminalBroadcasterResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* grantedMakeTerminalBroadcaster */
+ case 0:
+ invokeStartElement (pctxt, "grantedMakeTerminalBroadcaster", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "grantedMakeTerminalBroadcaster", -1);
+
+ break;
+
+ /* deniedMakeTerminalBroadcaster */
+ case 1:
+ invokeStartElement (pctxt, "deniedMakeTerminalBroadcaster", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "deniedMakeTerminalBroadcaster", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_sendThisSourceResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceResponse_sendThisSourceResponse (OOCTXT* pctxt, H245ConferenceResponse_sendThisSourceResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* grantedSendThisSource */
+ case 0:
+ invokeStartElement (pctxt, "grantedSendThisSource", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "grantedSendThisSource", -1);
+
+ break;
+
+ /* deniedSendThisSource */
+ case 1:
+ invokeStartElement (pctxt, "deniedSendThisSource", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "deniedSendThisSource", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TerminalInformation (OOCTXT* pctxt, H245TerminalInformation* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode terminalLabel */
+
+ invokeStartElement (pctxt, "terminalLabel", -1);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalLabel", -1);
+
+ /* decode terminalID */
+
+ invokeStartElement (pctxt, "terminalID", -1);
+
+ stat = asn1PD_H245TerminalID (pctxt, &pvalue->terminalID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalID", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245TerminalInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245_SeqOfH245TerminalInformation (OOCTXT* pctxt, H245_SeqOfH245TerminalInformation* pvalue)
+{
+ int stat = ASN_OK;
+ H245TerminalInformation* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245TerminalInformation);
+
+ stat = asn1PD_H245TerminalInformation (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestAllTerminalIDsResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestAllTerminalIDsResponse (OOCTXT* pctxt, H245RequestAllTerminalIDsResponse* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode terminalInformation */
+
+ invokeStartElement (pctxt, "terminalInformation", -1);
+
+ stat = asn1PD_H245_SeqOfH245TerminalInformation (pctxt, &pvalue->terminalInformation);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalInformation", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RemoteMCResponse_reject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RemoteMCResponse_reject (OOCTXT* pctxt, H245RemoteMCResponse_reject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unspecified */
+ case 0:
+ invokeStartElement (pctxt, "unspecified", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unspecified", -1);
+
+ break;
+
+ /* functionNotSupported */
+ case 1:
+ invokeStartElement (pctxt, "functionNotSupported", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "functionNotSupported", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RemoteMCResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RemoteMCResponse (OOCTXT* pctxt, H245RemoteMCResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* accept */
+ case 0:
+ invokeStartElement (pctxt, "accept", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "accept", -1);
+
+ break;
+
+ /* reject */
+ case 1:
+ invokeStartElement (pctxt, "reject", -1);
+
+ pvalue->u.reject = ALLOC_ASN1ELEM (pctxt, H245RemoteMCResponse_reject);
+
+ stat = asn1PD_H245RemoteMCResponse_reject (pctxt, pvalue->u.reject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "reject", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceResponse (OOCTXT* pctxt, H245ConferenceResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 7);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* mCTerminalIDResponse */
+ case 0:
+ invokeStartElement (pctxt, "mCTerminalIDResponse", -1);
+
+ pvalue->u.mCTerminalIDResponse = ALLOC_ASN1ELEM (pctxt, H245ConferenceResponse_mCTerminalIDResponse);
+
+ stat = asn1PD_H245ConferenceResponse_mCTerminalIDResponse (pctxt, pvalue->u.mCTerminalIDResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mCTerminalIDResponse", -1);
+
+ break;
+
+ /* terminalIDResponse */
+ case 1:
+ invokeStartElement (pctxt, "terminalIDResponse", -1);
+
+ pvalue->u.terminalIDResponse = ALLOC_ASN1ELEM (pctxt, H245ConferenceResponse_terminalIDResponse);
+
+ stat = asn1PD_H245ConferenceResponse_terminalIDResponse (pctxt, pvalue->u.terminalIDResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalIDResponse", -1);
+
+ break;
+
+ /* conferenceIDResponse */
+ case 2:
+ invokeStartElement (pctxt, "conferenceIDResponse", -1);
+
+ pvalue->u.conferenceIDResponse = ALLOC_ASN1ELEM (pctxt, H245ConferenceResponse_conferenceIDResponse);
+
+ stat = asn1PD_H245ConferenceResponse_conferenceIDResponse (pctxt, pvalue->u.conferenceIDResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceIDResponse", -1);
+
+ break;
+
+ /* passwordResponse */
+ case 3:
+ invokeStartElement (pctxt, "passwordResponse", -1);
+
+ pvalue->u.passwordResponse = ALLOC_ASN1ELEM (pctxt, H245ConferenceResponse_passwordResponse);
+
+ stat = asn1PD_H245ConferenceResponse_passwordResponse (pctxt, pvalue->u.passwordResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "passwordResponse", -1);
+
+ break;
+
+ /* terminalListResponse */
+ case 4:
+ invokeStartElement (pctxt, "terminalListResponse", -1);
+
+ pvalue->u.terminalListResponse = ALLOC_ASN1ELEM (pctxt, H245ConferenceResponse_terminalListResponse);
+
+ stat = asn1PD_H245ConferenceResponse_terminalListResponse (pctxt, pvalue->u.terminalListResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalListResponse", -1);
+
+ break;
+
+ /* videoCommandReject */
+ case 5:
+ invokeStartElement (pctxt, "videoCommandReject", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "videoCommandReject", -1);
+
+ break;
+
+ /* terminalDropReject */
+ case 6:
+ invokeStartElement (pctxt, "terminalDropReject", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "terminalDropReject", -1);
+
+ break;
+
+ /* makeMeChairResponse */
+ case 7:
+ invokeStartElement (pctxt, "makeMeChairResponse", -1);
+
+ pvalue->u.makeMeChairResponse = ALLOC_ASN1ELEM (pctxt, H245ConferenceResponse_makeMeChairResponse);
+
+ stat = asn1PD_H245ConferenceResponse_makeMeChairResponse (pctxt, pvalue->u.makeMeChairResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "makeMeChairResponse", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 9;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* extensionAddressResponse */
+ case 9:
+ invokeStartElement (pctxt, "extensionAddressResponse", -1);
+
+ pvalue->u.extensionAddressResponse = ALLOC_ASN1ELEM (pctxt, H245ConferenceResponse_extensionAddressResponse);
+
+ stat = asn1PD_H245ConferenceResponse_extensionAddressResponse (pctxt, pvalue->u.extensionAddressResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "extensionAddressResponse", -1);
+
+ break;
+
+ /* chairTokenOwnerResponse */
+ case 10:
+ invokeStartElement (pctxt, "chairTokenOwnerResponse", -1);
+
+ pvalue->u.chairTokenOwnerResponse = ALLOC_ASN1ELEM (pctxt, H245ConferenceResponse_chairTokenOwnerResponse);
+
+ stat = asn1PD_H245ConferenceResponse_chairTokenOwnerResponse (pctxt, pvalue->u.chairTokenOwnerResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "chairTokenOwnerResponse", -1);
+
+ break;
+
+ /* terminalCertificateResponse */
+ case 11:
+ invokeStartElement (pctxt, "terminalCertificateResponse", -1);
+
+ pvalue->u.terminalCertificateResponse = ALLOC_ASN1ELEM (pctxt, H245ConferenceResponse_terminalCertificateResponse);
+
+ stat = asn1PD_H245ConferenceResponse_terminalCertificateResponse (pctxt, pvalue->u.terminalCertificateResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalCertificateResponse", -1);
+
+ break;
+
+ /* broadcastMyLogicalChannelResponse */
+ case 12:
+ invokeStartElement (pctxt, "broadcastMyLogicalChannelResponse", -1);
+
+ pvalue->u.broadcastMyLogicalChannelResponse = ALLOC_ASN1ELEM (pctxt, H245ConferenceResponse_broadcastMyLogicalChannelResponse);
+
+ stat = asn1PD_H245ConferenceResponse_broadcastMyLogicalChannelResponse (pctxt, pvalue->u.broadcastMyLogicalChannelResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "broadcastMyLogicalChannelResponse", -1);
+
+ break;
+
+ /* makeTerminalBroadcasterResponse */
+ case 13:
+ invokeStartElement (pctxt, "makeTerminalBroadcasterResponse", -1);
+
+ pvalue->u.makeTerminalBroadcasterResponse = ALLOC_ASN1ELEM (pctxt, H245ConferenceResponse_makeTerminalBroadcasterResponse);
+
+ stat = asn1PD_H245ConferenceResponse_makeTerminalBroadcasterResponse (pctxt, pvalue->u.makeTerminalBroadcasterResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "makeTerminalBroadcasterResponse", -1);
+
+ break;
+
+ /* sendThisSourceResponse */
+ case 14:
+ invokeStartElement (pctxt, "sendThisSourceResponse", -1);
+
+ pvalue->u.sendThisSourceResponse = ALLOC_ASN1ELEM (pctxt, H245ConferenceResponse_sendThisSourceResponse);
+
+ stat = asn1PD_H245ConferenceResponse_sendThisSourceResponse (pctxt, pvalue->u.sendThisSourceResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sendThisSourceResponse", -1);
+
+ break;
+
+ /* requestAllTerminalIDsResponse */
+ case 15:
+ invokeStartElement (pctxt, "requestAllTerminalIDsResponse", -1);
+
+ pvalue->u.requestAllTerminalIDsResponse = ALLOC_ASN1ELEM (pctxt, H245RequestAllTerminalIDsResponse);
+
+ stat = asn1PD_H245RequestAllTerminalIDsResponse (pctxt, pvalue->u.requestAllTerminalIDsResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestAllTerminalIDsResponse", -1);
+
+ break;
+
+ /* remoteMCResponse */
+ case 16:
+ invokeStartElement (pctxt, "remoteMCResponse", -1);
+
+ pvalue->u.remoteMCResponse = ALLOC_ASN1ELEM (pctxt, H245RemoteMCResponse);
+
+ stat = asn1PD_H245RemoteMCResponse (pctxt, pvalue->u.remoteMCResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "remoteMCResponse", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_callInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkResponse_callInformation (OOCTXT* pctxt, H245MultilinkResponse_callInformation* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode dialingInformation */
+
+ invokeStartElement (pctxt, "dialingInformation", -1);
+
+ stat = asn1PD_H245DialingInformation (pctxt, &pvalue->dialingInformation);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dialingInformation", -1);
+
+ /* decode callAssociationNumber */
+
+ invokeStartElement (pctxt, "callAssociationNumber", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->callAssociationNumber, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->callAssociationNumber);
+
+ invokeEndElement (pctxt, "callAssociationNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_addConnection_responseCode_rejected */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkResponse_addConnection_responseCode_rejected (OOCTXT* pctxt, H245MultilinkResponse_addConnection_responseCode_rejected* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* connectionsNotAvailable */
+ case 0:
+ invokeStartElement (pctxt, "connectionsNotAvailable", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "connectionsNotAvailable", -1);
+
+ break;
+
+ /* userRejected */
+ case 1:
+ invokeStartElement (pctxt, "userRejected", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "userRejected", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_addConnection_responseCode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkResponse_addConnection_responseCode (OOCTXT* pctxt, H245MultilinkResponse_addConnection_responseCode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* accepted */
+ case 0:
+ invokeStartElement (pctxt, "accepted", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "accepted", -1);
+
+ break;
+
+ /* rejected */
+ case 1:
+ invokeStartElement (pctxt, "rejected", -1);
+
+ pvalue->u.rejected = ALLOC_ASN1ELEM (pctxt, H245MultilinkResponse_addConnection_responseCode_rejected);
+
+ stat = asn1PD_H245MultilinkResponse_addConnection_responseCode_rejected (pctxt, pvalue->u.rejected);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rejected", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_addConnection */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkResponse_addConnection (OOCTXT* pctxt, H245MultilinkResponse_addConnection* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ /* decode responseCode */
+
+ invokeStartElement (pctxt, "responseCode", -1);
+
+ stat = asn1PD_H245MultilinkResponse_addConnection_responseCode (pctxt, &pvalue->responseCode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "responseCode", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_removeConnection */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkResponse_removeConnection (OOCTXT* pctxt, H245MultilinkResponse_removeConnection* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode connectionIdentifier */
+
+ invokeStartElement (pctxt, "connectionIdentifier", -1);
+
+ stat = asn1PD_H245ConnectionIdentifier (pctxt, &pvalue->connectionIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "connectionIdentifier", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_maximumHeaderInterval */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkResponse_maximumHeaderInterval (OOCTXT* pctxt, H245MultilinkResponse_maximumHeaderInterval* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode currentInterval */
+
+ invokeStartElement (pctxt, "currentInterval", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->currentInterval, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->currentInterval);
+
+ invokeEndElement (pctxt, "currentInterval", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkResponse (OOCTXT* pctxt, H245MultilinkResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 4);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardMessage);
+
+ stat = asn1PD_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* callInformation */
+ case 1:
+ invokeStartElement (pctxt, "callInformation", -1);
+
+ pvalue->u.callInformation = ALLOC_ASN1ELEM (pctxt, H245MultilinkResponse_callInformation);
+
+ stat = asn1PD_H245MultilinkResponse_callInformation (pctxt, pvalue->u.callInformation);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "callInformation", -1);
+
+ break;
+
+ /* addConnection */
+ case 2:
+ invokeStartElement (pctxt, "addConnection", -1);
+
+ pvalue->u.addConnection = ALLOC_ASN1ELEM (pctxt, H245MultilinkResponse_addConnection);
+
+ stat = asn1PD_H245MultilinkResponse_addConnection (pctxt, pvalue->u.addConnection);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "addConnection", -1);
+
+ break;
+
+ /* removeConnection */
+ case 3:
+ invokeStartElement (pctxt, "removeConnection", -1);
+
+ pvalue->u.removeConnection = ALLOC_ASN1ELEM (pctxt, H245MultilinkResponse_removeConnection);
+
+ stat = asn1PD_H245MultilinkResponse_removeConnection (pctxt, pvalue->u.removeConnection);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "removeConnection", -1);
+
+ break;
+
+ /* maximumHeaderInterval */
+ case 4:
+ invokeStartElement (pctxt, "maximumHeaderInterval", -1);
+
+ pvalue->u.maximumHeaderInterval = ALLOC_ASN1ELEM (pctxt, H245MultilinkResponse_maximumHeaderInterval);
+
+ stat = asn1PD_H245MultilinkResponse_maximumHeaderInterval (pctxt, pvalue->u.maximumHeaderInterval);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "maximumHeaderInterval", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 6;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateAcknowledge */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245LogicalChannelRateAcknowledge (OOCTXT* pctxt, H245LogicalChannelRateAcknowledge* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ /* decode logicalChannelNumber */
+
+ invokeStartElement (pctxt, "logicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber", -1);
+
+ /* decode maximumBitRate */
+
+ invokeStartElement (pctxt, "maximumBitRate", -1);
+
+ stat = asn1PD_H245MaximumBitRate (pctxt, &pvalue->maximumBitRate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "maximumBitRate", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245LogicalChannelRateRejectReason (OOCTXT* pctxt, H245LogicalChannelRateRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* undefinedReason */
+ case 0:
+ invokeStartElement (pctxt, "undefinedReason", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "undefinedReason", -1);
+
+ break;
+
+ /* insufficientResources */
+ case 1:
+ invokeStartElement (pctxt, "insufficientResources", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "insufficientResources", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245LogicalChannelRateReject (OOCTXT* pctxt, H245LogicalChannelRateReject* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.currentMaximumBitRatePresent = optbit;
+
+ /* decode sequenceNumber */
+
+ invokeStartElement (pctxt, "sequenceNumber", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sequenceNumber", -1);
+
+ /* decode logicalChannelNumber */
+
+ invokeStartElement (pctxt, "logicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber", -1);
+
+ /* decode rejectReason */
+
+ invokeStartElement (pctxt, "rejectReason", -1);
+
+ stat = asn1PD_H245LogicalChannelRateRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rejectReason", -1);
+
+ /* decode currentMaximumBitRate */
+
+ if (pvalue->m.currentMaximumBitRatePresent) {
+ invokeStartElement (pctxt, "currentMaximumBitRate", -1);
+
+ stat = asn1PD_H245MaximumBitRate (pctxt, &pvalue->currentMaximumBitRate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "currentMaximumBitRate", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ResponseMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ResponseMessage (OOCTXT* pctxt, H245ResponseMessage* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 18);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardMessage);
+
+ stat = asn1PD_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* masterSlaveDeterminationAck */
+ case 1:
+ invokeStartElement (pctxt, "masterSlaveDeterminationAck", -1);
+
+ pvalue->u.masterSlaveDeterminationAck = ALLOC_ASN1ELEM (pctxt, H245MasterSlaveDeterminationAck);
+
+ stat = asn1PD_H245MasterSlaveDeterminationAck (pctxt, pvalue->u.masterSlaveDeterminationAck);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "masterSlaveDeterminationAck", -1);
+
+ break;
+
+ /* masterSlaveDeterminationReject */
+ case 2:
+ invokeStartElement (pctxt, "masterSlaveDeterminationReject", -1);
+
+ pvalue->u.masterSlaveDeterminationReject = ALLOC_ASN1ELEM (pctxt, H245MasterSlaveDeterminationReject);
+
+ stat = asn1PD_H245MasterSlaveDeterminationReject (pctxt, pvalue->u.masterSlaveDeterminationReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "masterSlaveDeterminationReject", -1);
+
+ break;
+
+ /* terminalCapabilitySetAck */
+ case 3:
+ invokeStartElement (pctxt, "terminalCapabilitySetAck", -1);
+
+ pvalue->u.terminalCapabilitySetAck = ALLOC_ASN1ELEM (pctxt, H245TerminalCapabilitySetAck);
+
+ stat = asn1PD_H245TerminalCapabilitySetAck (pctxt, pvalue->u.terminalCapabilitySetAck);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalCapabilitySetAck", -1);
+
+ break;
+
+ /* terminalCapabilitySetReject */
+ case 4:
+ invokeStartElement (pctxt, "terminalCapabilitySetReject", -1);
+
+ pvalue->u.terminalCapabilitySetReject = ALLOC_ASN1ELEM (pctxt, H245TerminalCapabilitySetReject);
+
+ stat = asn1PD_H245TerminalCapabilitySetReject (pctxt, pvalue->u.terminalCapabilitySetReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalCapabilitySetReject", -1);
+
+ break;
+
+ /* openLogicalChannelAck */
+ case 5:
+ invokeStartElement (pctxt, "openLogicalChannelAck", -1);
+
+ pvalue->u.openLogicalChannelAck = ALLOC_ASN1ELEM (pctxt, H245OpenLogicalChannelAck);
+
+ stat = asn1PD_H245OpenLogicalChannelAck (pctxt, pvalue->u.openLogicalChannelAck);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "openLogicalChannelAck", -1);
+
+ break;
+
+ /* openLogicalChannelReject */
+ case 6:
+ invokeStartElement (pctxt, "openLogicalChannelReject", -1);
+
+ pvalue->u.openLogicalChannelReject = ALLOC_ASN1ELEM (pctxt, H245OpenLogicalChannelReject);
+
+ stat = asn1PD_H245OpenLogicalChannelReject (pctxt, pvalue->u.openLogicalChannelReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "openLogicalChannelReject", -1);
+
+ break;
+
+ /* closeLogicalChannelAck */
+ case 7:
+ invokeStartElement (pctxt, "closeLogicalChannelAck", -1);
+
+ pvalue->u.closeLogicalChannelAck = ALLOC_ASN1ELEM (pctxt, H245CloseLogicalChannelAck);
+
+ stat = asn1PD_H245CloseLogicalChannelAck (pctxt, pvalue->u.closeLogicalChannelAck);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "closeLogicalChannelAck", -1);
+
+ break;
+
+ /* requestChannelCloseAck */
+ case 8:
+ invokeStartElement (pctxt, "requestChannelCloseAck", -1);
+
+ pvalue->u.requestChannelCloseAck = ALLOC_ASN1ELEM (pctxt, H245RequestChannelCloseAck);
+
+ stat = asn1PD_H245RequestChannelCloseAck (pctxt, pvalue->u.requestChannelCloseAck);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestChannelCloseAck", -1);
+
+ break;
+
+ /* requestChannelCloseReject */
+ case 9:
+ invokeStartElement (pctxt, "requestChannelCloseReject", -1);
+
+ pvalue->u.requestChannelCloseReject = ALLOC_ASN1ELEM (pctxt, H245RequestChannelCloseReject);
+
+ stat = asn1PD_H245RequestChannelCloseReject (pctxt, pvalue->u.requestChannelCloseReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestChannelCloseReject", -1);
+
+ break;
+
+ /* multiplexEntrySendAck */
+ case 10:
+ invokeStartElement (pctxt, "multiplexEntrySendAck", -1);
+
+ pvalue->u.multiplexEntrySendAck = ALLOC_ASN1ELEM (pctxt, H245MultiplexEntrySendAck);
+
+ stat = asn1PD_H245MultiplexEntrySendAck (pctxt, pvalue->u.multiplexEntrySendAck);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexEntrySendAck", -1);
+
+ break;
+
+ /* multiplexEntrySendReject */
+ case 11:
+ invokeStartElement (pctxt, "multiplexEntrySendReject", -1);
+
+ pvalue->u.multiplexEntrySendReject = ALLOC_ASN1ELEM (pctxt, H245MultiplexEntrySendReject);
+
+ stat = asn1PD_H245MultiplexEntrySendReject (pctxt, pvalue->u.multiplexEntrySendReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexEntrySendReject", -1);
+
+ break;
+
+ /* requestMultiplexEntryAck */
+ case 12:
+ invokeStartElement (pctxt, "requestMultiplexEntryAck", -1);
+
+ pvalue->u.requestMultiplexEntryAck = ALLOC_ASN1ELEM (pctxt, H245RequestMultiplexEntryAck);
+
+ stat = asn1PD_H245RequestMultiplexEntryAck (pctxt, pvalue->u.requestMultiplexEntryAck);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestMultiplexEntryAck", -1);
+
+ break;
+
+ /* requestMultiplexEntryReject */
+ case 13:
+ invokeStartElement (pctxt, "requestMultiplexEntryReject", -1);
+
+ pvalue->u.requestMultiplexEntryReject = ALLOC_ASN1ELEM (pctxt, H245RequestMultiplexEntryReject);
+
+ stat = asn1PD_H245RequestMultiplexEntryReject (pctxt, pvalue->u.requestMultiplexEntryReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestMultiplexEntryReject", -1);
+
+ break;
+
+ /* requestModeAck */
+ case 14:
+ invokeStartElement (pctxt, "requestModeAck", -1);
+
+ pvalue->u.requestModeAck = ALLOC_ASN1ELEM (pctxt, H245RequestModeAck);
+
+ stat = asn1PD_H245RequestModeAck (pctxt, pvalue->u.requestModeAck);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestModeAck", -1);
+
+ break;
+
+ /* requestModeReject */
+ case 15:
+ invokeStartElement (pctxt, "requestModeReject", -1);
+
+ pvalue->u.requestModeReject = ALLOC_ASN1ELEM (pctxt, H245RequestModeReject);
+
+ stat = asn1PD_H245RequestModeReject (pctxt, pvalue->u.requestModeReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestModeReject", -1);
+
+ break;
+
+ /* roundTripDelayResponse */
+ case 16:
+ invokeStartElement (pctxt, "roundTripDelayResponse", -1);
+
+ pvalue->u.roundTripDelayResponse = ALLOC_ASN1ELEM (pctxt, H245RoundTripDelayResponse);
+
+ stat = asn1PD_H245RoundTripDelayResponse (pctxt, pvalue->u.roundTripDelayResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "roundTripDelayResponse", -1);
+
+ break;
+
+ /* maintenanceLoopAck */
+ case 17:
+ invokeStartElement (pctxt, "maintenanceLoopAck", -1);
+
+ pvalue->u.maintenanceLoopAck = ALLOC_ASN1ELEM (pctxt, H245MaintenanceLoopAck);
+
+ stat = asn1PD_H245MaintenanceLoopAck (pctxt, pvalue->u.maintenanceLoopAck);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "maintenanceLoopAck", -1);
+
+ break;
+
+ /* maintenanceLoopReject */
+ case 18:
+ invokeStartElement (pctxt, "maintenanceLoopReject", -1);
+
+ pvalue->u.maintenanceLoopReject = ALLOC_ASN1ELEM (pctxt, H245MaintenanceLoopReject);
+
+ stat = asn1PD_H245MaintenanceLoopReject (pctxt, pvalue->u.maintenanceLoopReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "maintenanceLoopReject", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 20;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* communicationModeResponse */
+ case 20:
+ invokeStartElement (pctxt, "communicationModeResponse", -1);
+
+ pvalue->u.communicationModeResponse = ALLOC_ASN1ELEM (pctxt, H245CommunicationModeResponse);
+
+ stat = asn1PD_H245CommunicationModeResponse (pctxt, pvalue->u.communicationModeResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "communicationModeResponse", -1);
+
+ break;
+
+ /* conferenceResponse */
+ case 21:
+ invokeStartElement (pctxt, "conferenceResponse", -1);
+
+ pvalue->u.conferenceResponse = ALLOC_ASN1ELEM (pctxt, H245ConferenceResponse);
+
+ stat = asn1PD_H245ConferenceResponse (pctxt, pvalue->u.conferenceResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceResponse", -1);
+
+ break;
+
+ /* multilinkResponse */
+ case 22:
+ invokeStartElement (pctxt, "multilinkResponse", -1);
+
+ pvalue->u.multilinkResponse = ALLOC_ASN1ELEM (pctxt, H245MultilinkResponse);
+
+ stat = asn1PD_H245MultilinkResponse (pctxt, pvalue->u.multilinkResponse);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multilinkResponse", -1);
+
+ break;
+
+ /* logicalChannelRateAcknowledge */
+ case 23:
+ invokeStartElement (pctxt, "logicalChannelRateAcknowledge", -1);
+
+ pvalue->u.logicalChannelRateAcknowledge = ALLOC_ASN1ELEM (pctxt, H245LogicalChannelRateAcknowledge);
+
+ stat = asn1PD_H245LogicalChannelRateAcknowledge (pctxt, pvalue->u.logicalChannelRateAcknowledge);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelRateAcknowledge", -1);
+
+ break;
+
+ /* logicalChannelRateReject */
+ case 24:
+ invokeStartElement (pctxt, "logicalChannelRateReject", -1);
+
+ pvalue->u.logicalChannelRateReject = ALLOC_ASN1ELEM (pctxt, H245LogicalChannelRateReject);
+
+ stat = asn1PD_H245LogicalChannelRateReject (pctxt, pvalue->u.logicalChannelRateReject);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelRateReject", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopOffCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MaintenanceLoopOffCommand (OOCTXT* pctxt, H245MaintenanceLoopOffCommand* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SendTerminalCapabilitySet_specificRequest_capabilityTabl */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 65535, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, H245CapabilityTableEntryNumber);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H245CapabilityTableEntryNumber (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SendTerminalCapabilitySet_specificRequest_capabilityDesc */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H245CapabilityDescriptorNumber (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SendTerminalCapabilitySet_specificRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245SendTerminalCapabilitySet_specificRequest (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.capabilityTableEntryNumbersPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.capabilityDescriptorNumbersPresent = optbit;
+
+ /* decode multiplexCapability */
+
+ invokeStartElement (pctxt, "multiplexCapability", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->multiplexCapability);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->multiplexCapability);
+
+ invokeEndElement (pctxt, "multiplexCapability", -1);
+
+ /* decode capabilityTableEntryNumbers */
+
+ if (pvalue->m.capabilityTableEntryNumbersPresent) {
+ invokeStartElement (pctxt, "capabilityTableEntryNumbers", -1);
+
+ stat = asn1PD_H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers (pctxt, &pvalue->capabilityTableEntryNumbers);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capabilityTableEntryNumbers", -1);
+ }
+
+ /* decode capabilityDescriptorNumbers */
+
+ if (pvalue->m.capabilityDescriptorNumbersPresent) {
+ invokeStartElement (pctxt, "capabilityDescriptorNumbers", -1);
+
+ stat = asn1PD_H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers (pctxt, &pvalue->capabilityDescriptorNumbers);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "capabilityDescriptorNumbers", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SendTerminalCapabilitySet */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245SendTerminalCapabilitySet (OOCTXT* pctxt, H245SendTerminalCapabilitySet* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* specificRequest */
+ case 0:
+ invokeStartElement (pctxt, "specificRequest", -1);
+
+ pvalue->u.specificRequest = ALLOC_ASN1ELEM (pctxt, H245SendTerminalCapabilitySet_specificRequest);
+
+ stat = asn1PD_H245SendTerminalCapabilitySet_specificRequest (pctxt, pvalue->u.specificRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "specificRequest", -1);
+
+ break;
+
+ /* genericRequest */
+ case 1:
+ invokeStartElement (pctxt, "genericRequest", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "genericRequest", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionCommand_encryptionAlgorithmID */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EncryptionCommand_encryptionAlgorithmID (OOCTXT* pctxt, H245EncryptionCommand_encryptionAlgorithmID* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode h233AlgorithmIdentifier */
+
+ invokeStartElement (pctxt, "h233AlgorithmIdentifier", -1);
+
+ stat = asn1PD_H245SequenceNumber (pctxt, &pvalue->h233AlgorithmIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h233AlgorithmIdentifier", -1);
+
+ /* decode associatedAlgorithm */
+
+ invokeStartElement (pctxt, "associatedAlgorithm", -1);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, &pvalue->associatedAlgorithm);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "associatedAlgorithm", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EncryptionCommand (OOCTXT* pctxt, H245EncryptionCommand* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* encryptionSE */
+ case 0:
+ invokeStartElement (pctxt, "encryptionSE", -1);
+
+ pvalue->u.encryptionSE = ALLOC_ASN1ELEM (pctxt, ASN1DynOctStr);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)pvalue->u.encryptionSE);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->u.encryptionSE->numocts, pvalue->u.encryptionSE->data);
+
+ invokeEndElement (pctxt, "encryptionSE", -1);
+
+ break;
+
+ /* encryptionIVRequest */
+ case 1:
+ invokeStartElement (pctxt, "encryptionIVRequest", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "encryptionIVRequest", -1);
+
+ break;
+
+ /* encryptionAlgorithmID */
+ case 2:
+ invokeStartElement (pctxt, "encryptionAlgorithmID", -1);
+
+ pvalue->u.encryptionAlgorithmID = ALLOC_ASN1ELEM (pctxt, H245EncryptionCommand_encryptionAlgorithmID);
+
+ stat = asn1PD_H245EncryptionCommand_encryptionAlgorithmID (pctxt, pvalue->u.encryptionAlgorithmID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "encryptionAlgorithmID", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FlowControlCommand_scope */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FlowControlCommand_scope (OOCTXT* pctxt, H245FlowControlCommand_scope* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* logicalChannelNumber */
+ case 0:
+ invokeStartElement (pctxt, "logicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->u.logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber", -1);
+
+ break;
+
+ /* resourceID */
+ case 1:
+ invokeStartElement (pctxt, "resourceID", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.resourceID, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.resourceID);
+
+ invokeEndElement (pctxt, "resourceID", -1);
+
+ break;
+
+ /* wholeMultiplex */
+ case 2:
+ invokeStartElement (pctxt, "wholeMultiplex", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "wholeMultiplex", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FlowControlCommand_restriction */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FlowControlCommand_restriction (OOCTXT* pctxt, H245FlowControlCommand_restriction* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* maximumBitRate */
+ case 0:
+ invokeStartElement (pctxt, "maximumBitRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->u.maximumBitRate, 0U, 16777215U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.maximumBitRate);
+
+ invokeEndElement (pctxt, "maximumBitRate", -1);
+
+ break;
+
+ /* noRestriction */
+ case 1:
+ invokeStartElement (pctxt, "noRestriction", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noRestriction", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FlowControlCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FlowControlCommand (OOCTXT* pctxt, H245FlowControlCommand* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode scope */
+
+ invokeStartElement (pctxt, "scope", -1);
+
+ stat = asn1PD_H245FlowControlCommand_scope (pctxt, &pvalue->scope);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "scope", -1);
+
+ /* decode restriction */
+
+ invokeStartElement (pctxt, "restriction", -1);
+
+ stat = asn1PD_H245FlowControlCommand_restriction (pctxt, &pvalue->restriction);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "restriction", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EndSessionCommand_gstnOptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EndSessionCommand_gstnOptions (OOCTXT* pctxt, H245EndSessionCommand_gstnOptions* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 4);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* telephonyMode */
+ case 0:
+ invokeStartElement (pctxt, "telephonyMode", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "telephonyMode", -1);
+
+ break;
+
+ /* v8bis */
+ case 1:
+ invokeStartElement (pctxt, "v8bis", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "v8bis", -1);
+
+ break;
+
+ /* v34DSVD */
+ case 2:
+ invokeStartElement (pctxt, "v34DSVD", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "v34DSVD", -1);
+
+ break;
+
+ /* v34DuplexFAX */
+ case 3:
+ invokeStartElement (pctxt, "v34DuplexFAX", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "v34DuplexFAX", -1);
+
+ break;
+
+ /* v34H324 */
+ case 4:
+ invokeStartElement (pctxt, "v34H324", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "v34H324", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 6;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EndSessionCommand_isdnOptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EndSessionCommand_isdnOptions (OOCTXT* pctxt, H245EndSessionCommand_isdnOptions* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* telephonyMode */
+ case 0:
+ invokeStartElement (pctxt, "telephonyMode", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "telephonyMode", -1);
+
+ break;
+
+ /* v140 */
+ case 1:
+ invokeStartElement (pctxt, "v140", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "v140", -1);
+
+ break;
+
+ /* terminalOnHold */
+ case 2:
+ invokeStartElement (pctxt, "terminalOnHold", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "terminalOnHold", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EndSessionCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EndSessionCommand (OOCTXT* pctxt, H245EndSessionCommand* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* disconnect */
+ case 1:
+ invokeStartElement (pctxt, "disconnect", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "disconnect", -1);
+
+ break;
+
+ /* gstnOptions */
+ case 2:
+ invokeStartElement (pctxt, "gstnOptions", -1);
+
+ pvalue->u.gstnOptions = ALLOC_ASN1ELEM (pctxt, H245EndSessionCommand_gstnOptions);
+
+ stat = asn1PD_H245EndSessionCommand_gstnOptions (pctxt, pvalue->u.gstnOptions);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gstnOptions", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* isdnOptions */
+ case 4:
+ invokeStartElement (pctxt, "isdnOptions", -1);
+
+ pvalue->u.isdnOptions = ALLOC_ASN1ELEM (pctxt, H245EndSessionCommand_isdnOptions);
+
+ stat = asn1PD_H245EndSessionCommand_isdnOptions (pctxt, pvalue->u.isdnOptions);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "isdnOptions", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_videoFastUpdateGOB */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MiscellaneousCommand_type_videoFastUpdateGOB (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoFastUpdateGOB* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode firstGOB */
+
+ invokeStartElement (pctxt, "firstGOB", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->firstGOB, 0U, 17U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->firstGOB);
+
+ invokeEndElement (pctxt, "firstGOB", -1);
+
+ /* decode numberOfGOBs */
+
+ invokeStartElement (pctxt, "numberOfGOBs", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->numberOfGOBs, 1U, 18U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->numberOfGOBs);
+
+ invokeEndElement (pctxt, "numberOfGOBs", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_videoFastUpdateMB */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MiscellaneousCommand_type_videoFastUpdateMB (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoFastUpdateMB* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.firstGOBPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.firstMBPresent = optbit;
+
+ /* decode firstGOB */
+
+ if (pvalue->m.firstGOBPresent) {
+ invokeStartElement (pctxt, "firstGOB", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->firstGOB, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->firstGOB);
+
+ invokeEndElement (pctxt, "firstGOB", -1);
+ }
+
+ /* decode firstMB */
+
+ if (pvalue->m.firstMBPresent) {
+ invokeStartElement (pctxt, "firstMB", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->firstMB, 1U, 8192U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->firstMB);
+
+ invokeEndElement (pctxt, "firstMB", -1);
+ }
+
+ /* decode numberOfMBs */
+
+ invokeStartElement (pctxt, "numberOfMBs", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->numberOfMBs, 1U, 8192U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->numberOfMBs);
+
+ invokeEndElement (pctxt, "numberOfMBs", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* KeyProtectionMethod */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245KeyProtectionMethod (OOCTXT* pctxt, H245KeyProtectionMethod* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode secureChannel */
+
+ invokeStartElement (pctxt, "secureChannel", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->secureChannel);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->secureChannel);
+
+ invokeEndElement (pctxt, "secureChannel", -1);
+
+ /* decode sharedSecret */
+
+ invokeStartElement (pctxt, "sharedSecret", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->sharedSecret);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->sharedSecret);
+
+ invokeEndElement (pctxt, "sharedSecret", -1);
+
+ /* decode certProtectedKey */
+
+ invokeStartElement (pctxt, "certProtectedKey", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->certProtectedKey);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->certProtectedKey);
+
+ invokeEndElement (pctxt, "certProtectedKey", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionUpdateRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245EncryptionUpdateRequest (OOCTXT* pctxt, H245EncryptionUpdateRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.keyProtectionMethodPresent = optbit;
+
+ /* decode keyProtectionMethod */
+
+ if (pvalue->m.keyProtectionMethodPresent) {
+ invokeStartElement (pctxt, "keyProtectionMethod", -1);
+
+ stat = asn1PD_H245KeyProtectionMethod (pctxt, &pvalue->keyProtectionMethod);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "keyProtectionMethod", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_progressiveRefinementStart_rep */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount (OOCTXT* pctxt, H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* doOneProgression */
+ case 0:
+ invokeStartElement (pctxt, "doOneProgression", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "doOneProgression", -1);
+
+ break;
+
+ /* doContinuousProgressions */
+ case 1:
+ invokeStartElement (pctxt, "doContinuousProgressions", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "doContinuousProgressions", -1);
+
+ break;
+
+ /* doOneIndependentProgression */
+ case 2:
+ invokeStartElement (pctxt, "doOneIndependentProgression", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "doOneIndependentProgression", -1);
+
+ break;
+
+ /* doContinuousIndependentProgressions */
+ case 3:
+ invokeStartElement (pctxt, "doContinuousIndependentProgressions", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "doContinuousIndependentProgressions", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_progressiveRefinementStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MiscellaneousCommand_type_progressiveRefinementStart (OOCTXT* pctxt, H245MiscellaneousCommand_type_progressiveRefinementStart* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode repeatCount */
+
+ invokeStartElement (pctxt, "repeatCount", -1);
+
+ stat = asn1PD_H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount (pctxt, &pvalue->repeatCount);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "repeatCount", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_videoBadMBs */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MiscellaneousCommand_type_videoBadMBs (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoBadMBs* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode firstMB */
+
+ invokeStartElement (pctxt, "firstMB", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->firstMB, 1U, 9216U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->firstMB);
+
+ invokeEndElement (pctxt, "firstMB", -1);
+
+ /* decode numberOfMBs */
+
+ invokeStartElement (pctxt, "numberOfMBs", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->numberOfMBs, 1U, 9216U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->numberOfMBs);
+
+ invokeEndElement (pctxt, "numberOfMBs", -1);
+
+ /* decode temporalReference */
+
+ invokeStartElement (pctxt, "temporalReference", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->temporalReference, 0U, 1023U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->temporalReference);
+
+ invokeEndElement (pctxt, "temporalReference", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PictureReference */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245PictureReference (OOCTXT* pctxt, H245PictureReference* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* pictureNumber */
+ case 0:
+ invokeStartElement (pctxt, "pictureNumber", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.pictureNumber, 0U, 1023U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.pictureNumber);
+
+ invokeEndElement (pctxt, "pictureNumber", -1);
+
+ break;
+
+ /* longTermPictureIndex */
+ case 1:
+ invokeStartElement (pctxt, "longTermPictureIndex", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->u.longTermPictureIndex, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.longTermPictureIndex);
+
+ invokeEndElement (pctxt, "longTermPictureIndex", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245PictureReference */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245_SeqOfH245PictureReference (OOCTXT* pctxt, H245_SeqOfH245PictureReference* pvalue)
+{
+ int stat = ASN_OK;
+ H245PictureReference* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+ int lstat;
+
+ dListInit (pvalue);
+
+ for (;;) {
+ /* decode length determinant */
+
+ lstat = decodeLength (pctxt, &count);
+ if (lstat != ASN_OK && lstat != ASN_OK_FRAG) {
+ return lstat;
+ }
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245PictureReference);
+
+ stat = asn1PD_H245PictureReference (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ if(lstat == ASN_OK) break;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_lostPartialPicture */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MiscellaneousCommand_type_lostPartialPicture (OOCTXT* pctxt, H245MiscellaneousCommand_type_lostPartialPicture* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode pictureReference */
+
+ invokeStartElement (pctxt, "pictureReference", -1);
+
+ stat = asn1PD_H245PictureReference (pctxt, &pvalue->pictureReference);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "pictureReference", -1);
+
+ /* decode firstMB */
+
+ invokeStartElement (pctxt, "firstMB", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->firstMB, 1U, 9216U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->firstMB);
+
+ invokeEndElement (pctxt, "firstMB", -1);
+
+ /* decode numberOfMBs */
+
+ invokeStartElement (pctxt, "numberOfMBs", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->numberOfMBs, 1U, 9216U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->numberOfMBs);
+
+ invokeEndElement (pctxt, "numberOfMBs", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MiscellaneousCommand_type (OOCTXT* pctxt, H245MiscellaneousCommand_type* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 9);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* equaliseDelay */
+ case 0:
+ invokeStartElement (pctxt, "equaliseDelay", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "equaliseDelay", -1);
+
+ break;
+
+ /* zeroDelay */
+ case 1:
+ invokeStartElement (pctxt, "zeroDelay", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "zeroDelay", -1);
+
+ break;
+
+ /* multipointModeCommand */
+ case 2:
+ invokeStartElement (pctxt, "multipointModeCommand", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "multipointModeCommand", -1);
+
+ break;
+
+ /* cancelMultipointModeCommand */
+ case 3:
+ invokeStartElement (pctxt, "cancelMultipointModeCommand", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "cancelMultipointModeCommand", -1);
+
+ break;
+
+ /* videoFreezePicture */
+ case 4:
+ invokeStartElement (pctxt, "videoFreezePicture", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "videoFreezePicture", -1);
+
+ break;
+
+ /* videoFastUpdatePicture */
+ case 5:
+ invokeStartElement (pctxt, "videoFastUpdatePicture", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "videoFastUpdatePicture", -1);
+
+ break;
+
+ /* videoFastUpdateGOB */
+ case 6:
+ invokeStartElement (pctxt, "videoFastUpdateGOB", -1);
+
+ pvalue->u.videoFastUpdateGOB = ALLOC_ASN1ELEM (pctxt, H245MiscellaneousCommand_type_videoFastUpdateGOB);
+
+ stat = asn1PD_H245MiscellaneousCommand_type_videoFastUpdateGOB (pctxt, pvalue->u.videoFastUpdateGOB);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "videoFastUpdateGOB", -1);
+
+ break;
+
+ /* videoTemporalSpatialTradeOff */
+ case 7:
+ invokeStartElement (pctxt, "videoTemporalSpatialTradeOff", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->u.videoTemporalSpatialTradeOff, 0U, 31U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.videoTemporalSpatialTradeOff);
+
+ invokeEndElement (pctxt, "videoTemporalSpatialTradeOff", -1);
+
+ break;
+
+ /* videoSendSyncEveryGOB */
+ case 8:
+ invokeStartElement (pctxt, "videoSendSyncEveryGOB", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "videoSendSyncEveryGOB", -1);
+
+ break;
+
+ /* videoSendSyncEveryGOBCancel */
+ case 9:
+ invokeStartElement (pctxt, "videoSendSyncEveryGOBCancel", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "videoSendSyncEveryGOBCancel", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 11;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* videoFastUpdateMB */
+ case 11:
+ invokeStartElement (pctxt, "videoFastUpdateMB", -1);
+
+ pvalue->u.videoFastUpdateMB = ALLOC_ASN1ELEM (pctxt, H245MiscellaneousCommand_type_videoFastUpdateMB);
+
+ stat = asn1PD_H245MiscellaneousCommand_type_videoFastUpdateMB (pctxt, pvalue->u.videoFastUpdateMB);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "videoFastUpdateMB", -1);
+
+ break;
+
+ /* maxH223MUXPDUsize */
+ case 12:
+ invokeStartElement (pctxt, "maxH223MUXPDUsize", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.maxH223MUXPDUsize, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.maxH223MUXPDUsize);
+
+ invokeEndElement (pctxt, "maxH223MUXPDUsize", -1);
+
+ break;
+
+ /* encryptionUpdate */
+ case 13:
+ invokeStartElement (pctxt, "encryptionUpdate", -1);
+
+ pvalue->u.encryptionUpdate = ALLOC_ASN1ELEM (pctxt, H245EncryptionSync);
+
+ stat = asn1PD_H245EncryptionSync (pctxt, pvalue->u.encryptionUpdate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "encryptionUpdate", -1);
+
+ break;
+
+ /* encryptionUpdateRequest */
+ case 14:
+ invokeStartElement (pctxt, "encryptionUpdateRequest", -1);
+
+ pvalue->u.encryptionUpdateRequest = ALLOC_ASN1ELEM (pctxt, H245EncryptionUpdateRequest);
+
+ stat = asn1PD_H245EncryptionUpdateRequest (pctxt, pvalue->u.encryptionUpdateRequest);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "encryptionUpdateRequest", -1);
+
+ break;
+
+ /* switchReceiveMediaOff */
+ case 15:
+ invokeStartElement (pctxt, "switchReceiveMediaOff", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "switchReceiveMediaOff", -1);
+
+ break;
+
+ /* switchReceiveMediaOn */
+ case 16:
+ invokeStartElement (pctxt, "switchReceiveMediaOn", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "switchReceiveMediaOn", -1);
+
+ break;
+
+ /* progressiveRefinementStart */
+ case 17:
+ invokeStartElement (pctxt, "progressiveRefinementStart", -1);
+
+ pvalue->u.progressiveRefinementStart = ALLOC_ASN1ELEM (pctxt, H245MiscellaneousCommand_type_progressiveRefinementStart);
+
+ stat = asn1PD_H245MiscellaneousCommand_type_progressiveRefinementStart (pctxt, pvalue->u.progressiveRefinementStart);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "progressiveRefinementStart", -1);
+
+ break;
+
+ /* progressiveRefinementAbortOne */
+ case 18:
+ invokeStartElement (pctxt, "progressiveRefinementAbortOne", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "progressiveRefinementAbortOne", -1);
+
+ break;
+
+ /* progressiveRefinementAbortContinuous */
+ case 19:
+ invokeStartElement (pctxt, "progressiveRefinementAbortContinuous", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "progressiveRefinementAbortContinuous", -1);
+
+ break;
+
+ /* videoBadMBs */
+ case 20:
+ invokeStartElement (pctxt, "videoBadMBs", -1);
+
+ pvalue->u.videoBadMBs = ALLOC_ASN1ELEM (pctxt, H245MiscellaneousCommand_type_videoBadMBs);
+
+ stat = asn1PD_H245MiscellaneousCommand_type_videoBadMBs (pctxt, pvalue->u.videoBadMBs);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "videoBadMBs", -1);
+
+ break;
+
+ /* lostPicture */
+ case 21:
+ invokeStartElement (pctxt, "lostPicture", -1);
+
+ pvalue->u.lostPicture = ALLOC_ASN1ELEM (pctxt, H245_SeqOfH245PictureReference);
+
+ stat = asn1PD_H245_SeqOfH245PictureReference (pctxt, pvalue->u.lostPicture);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "lostPicture", -1);
+
+ break;
+
+ /* lostPartialPicture */
+ case 22:
+ invokeStartElement (pctxt, "lostPartialPicture", -1);
+
+ pvalue->u.lostPartialPicture = ALLOC_ASN1ELEM (pctxt, H245MiscellaneousCommand_type_lostPartialPicture);
+
+ stat = asn1PD_H245MiscellaneousCommand_type_lostPartialPicture (pctxt, pvalue->u.lostPartialPicture);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "lostPartialPicture", -1);
+
+ break;
+
+ /* recoveryReferencePicture */
+ case 23:
+ invokeStartElement (pctxt, "recoveryReferencePicture", -1);
+
+ pvalue->u.recoveryReferencePicture = ALLOC_ASN1ELEM (pctxt, H245_SeqOfH245PictureReference);
+
+ stat = asn1PD_H245_SeqOfH245PictureReference (pctxt, pvalue->u.recoveryReferencePicture);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "recoveryReferencePicture", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MiscellaneousCommand (OOCTXT* pctxt, H245MiscellaneousCommand* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode logicalChannelNumber */
+
+ invokeStartElement (pctxt, "logicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber", -1);
+
+ /* decode type */
+
+ invokeStartElement (pctxt, "type", -1);
+
+ stat = asn1PD_H245MiscellaneousCommand_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "type", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommunicationModeCommand_communicationModeTable */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CommunicationModeCommand_communicationModeTable (OOCTXT* pctxt, H245CommunicationModeCommand_communicationModeTable* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ H245CommunicationModeTableEntry* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H245CommunicationModeTableEntry);
+
+ stat = asn1PD_H245CommunicationModeTableEntry (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommunicationModeCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CommunicationModeCommand (OOCTXT* pctxt, H245CommunicationModeCommand* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode communicationModeTable */
+
+ invokeStartElement (pctxt, "communicationModeTable", -1);
+
+ stat = asn1PD_H245CommunicationModeCommand_communicationModeTable (pctxt, &pvalue->communicationModeTable);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "communicationModeTable", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SubstituteConferenceIDCommand_conferenceIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245SubstituteConferenceIDCommand_conferenceIdentifier (OOCTXT* pctxt, H245SubstituteConferenceIDCommand_conferenceIdentifier* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SubstituteConferenceIDCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245SubstituteConferenceIDCommand (OOCTXT* pctxt, H245SubstituteConferenceIDCommand* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode conferenceIdentifier */
+
+ invokeStartElement (pctxt, "conferenceIdentifier", -1);
+
+ stat = asn1PD_H245SubstituteConferenceIDCommand_conferenceIdentifier (pctxt, &pvalue->conferenceIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceIdentifier", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceCommand (OOCTXT* pctxt, H245ConferenceCommand* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 6);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* broadcastMyLogicalChannel */
+ case 0:
+ invokeStartElement (pctxt, "broadcastMyLogicalChannel", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->u.broadcastMyLogicalChannel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "broadcastMyLogicalChannel", -1);
+
+ break;
+
+ /* cancelBroadcastMyLogicalChannel */
+ case 1:
+ invokeStartElement (pctxt, "cancelBroadcastMyLogicalChannel", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->u.cancelBroadcastMyLogicalChannel);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cancelBroadcastMyLogicalChannel", -1);
+
+ break;
+
+ /* makeTerminalBroadcaster */
+ case 2:
+ invokeStartElement (pctxt, "makeTerminalBroadcaster", -1);
+
+ pvalue->u.makeTerminalBroadcaster = ALLOC_ASN1ELEM (pctxt, H245TerminalLabel);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, pvalue->u.makeTerminalBroadcaster);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "makeTerminalBroadcaster", -1);
+
+ break;
+
+ /* cancelMakeTerminalBroadcaster */
+ case 3:
+ invokeStartElement (pctxt, "cancelMakeTerminalBroadcaster", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "cancelMakeTerminalBroadcaster", -1);
+
+ break;
+
+ /* sendThisSource */
+ case 4:
+ invokeStartElement (pctxt, "sendThisSource", -1);
+
+ pvalue->u.sendThisSource = ALLOC_ASN1ELEM (pctxt, H245TerminalLabel);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, pvalue->u.sendThisSource);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sendThisSource", -1);
+
+ break;
+
+ /* cancelSendThisSource */
+ case 5:
+ invokeStartElement (pctxt, "cancelSendThisSource", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "cancelSendThisSource", -1);
+
+ break;
+
+ /* dropConference */
+ case 6:
+ invokeStartElement (pctxt, "dropConference", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "dropConference", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 8;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* substituteConferenceIDCommand */
+ case 8:
+ invokeStartElement (pctxt, "substituteConferenceIDCommand", -1);
+
+ pvalue->u.substituteConferenceIDCommand = ALLOC_ASN1ELEM (pctxt, H245SubstituteConferenceIDCommand);
+
+ stat = asn1PD_H245SubstituteConferenceIDCommand (pctxt, pvalue->u.substituteConferenceIDCommand);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "substituteConferenceIDCommand", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223MultiplexReconfiguration_h223ModeChange */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223MultiplexReconfiguration_h223ModeChange (OOCTXT* pctxt, H245H223MultiplexReconfiguration_h223ModeChange* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* toLevel0 */
+ case 0:
+ invokeStartElement (pctxt, "toLevel0", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "toLevel0", -1);
+
+ break;
+
+ /* toLevel1 */
+ case 1:
+ invokeStartElement (pctxt, "toLevel1", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "toLevel1", -1);
+
+ break;
+
+ /* toLevel2 */
+ case 2:
+ invokeStartElement (pctxt, "toLevel2", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "toLevel2", -1);
+
+ break;
+
+ /* toLevel2withOptionalHeader */
+ case 3:
+ invokeStartElement (pctxt, "toLevel2withOptionalHeader", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "toLevel2withOptionalHeader", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223MultiplexReconfiguration_h223AnnexADoubleFlag */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223MultiplexReconfiguration_h223AnnexADoubleFlag (OOCTXT* pctxt, H245H223MultiplexReconfiguration_h223AnnexADoubleFlag* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* start */
+ case 0:
+ invokeStartElement (pctxt, "start", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "start", -1);
+
+ break;
+
+ /* stop */
+ case 1:
+ invokeStartElement (pctxt, "stop", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "stop", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223MultiplexReconfiguration */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223MultiplexReconfiguration (OOCTXT* pctxt, H245H223MultiplexReconfiguration* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* h223ModeChange */
+ case 0:
+ invokeStartElement (pctxt, "h223ModeChange", -1);
+
+ pvalue->u.h223ModeChange = ALLOC_ASN1ELEM (pctxt, H245H223MultiplexReconfiguration_h223ModeChange);
+
+ stat = asn1PD_H245H223MultiplexReconfiguration_h223ModeChange (pctxt, pvalue->u.h223ModeChange);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h223ModeChange", -1);
+
+ break;
+
+ /* h223AnnexADoubleFlag */
+ case 1:
+ invokeStartElement (pctxt, "h223AnnexADoubleFlag", -1);
+
+ pvalue->u.h223AnnexADoubleFlag = ALLOC_ASN1ELEM (pctxt, H245H223MultiplexReconfiguration_h223AnnexADoubleFlag);
+
+ stat = asn1PD_H245H223MultiplexReconfiguration_h223AnnexADoubleFlag (pctxt, pvalue->u.h223AnnexADoubleFlag);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h223AnnexADoubleFlag", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal_aal1_clockRecovery */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCCommand_aal_aal1_clockRecovery (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1_clockRecovery* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nullClockRecovery */
+ case 0:
+ invokeStartElement (pctxt, "nullClockRecovery", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "nullClockRecovery", -1);
+
+ break;
+
+ /* srtsClockRecovery */
+ case 1:
+ invokeStartElement (pctxt, "srtsClockRecovery", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "srtsClockRecovery", -1);
+
+ break;
+
+ /* adaptiveClockRecovery */
+ case 2:
+ invokeStartElement (pctxt, "adaptiveClockRecovery", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "adaptiveClockRecovery", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal_aal1_errorCorrection */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCCommand_aal_aal1_errorCorrection (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1_errorCorrection* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nullErrorCorrection */
+ case 0:
+ invokeStartElement (pctxt, "nullErrorCorrection", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "nullErrorCorrection", -1);
+
+ break;
+
+ /* longInterleaver */
+ case 1:
+ invokeStartElement (pctxt, "longInterleaver", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "longInterleaver", -1);
+
+ break;
+
+ /* shortInterleaver */
+ case 2:
+ invokeStartElement (pctxt, "shortInterleaver", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "shortInterleaver", -1);
+
+ break;
+
+ /* errorCorrectionOnly */
+ case 3:
+ invokeStartElement (pctxt, "errorCorrectionOnly", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "errorCorrectionOnly", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal_aal1 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCCommand_aal_aal1 (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode clockRecovery */
+
+ invokeStartElement (pctxt, "clockRecovery", -1);
+
+ stat = asn1PD_H245NewATMVCCommand_aal_aal1_clockRecovery (pctxt, &pvalue->clockRecovery);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "clockRecovery", -1);
+
+ /* decode errorCorrection */
+
+ invokeStartElement (pctxt, "errorCorrection", -1);
+
+ stat = asn1PD_H245NewATMVCCommand_aal_aal1_errorCorrection (pctxt, &pvalue->errorCorrection);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "errorCorrection", -1);
+
+ /* decode structuredDataTransfer */
+
+ invokeStartElement (pctxt, "structuredDataTransfer", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->structuredDataTransfer);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->structuredDataTransfer);
+
+ invokeEndElement (pctxt, "structuredDataTransfer", -1);
+
+ /* decode partiallyFilledCells */
+
+ invokeStartElement (pctxt, "partiallyFilledCells", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->partiallyFilledCells);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->partiallyFilledCells);
+
+ invokeEndElement (pctxt, "partiallyFilledCells", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal_aal5 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCCommand_aal_aal5 (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal5* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode forwardMaximumSDUSize */
+
+ invokeStartElement (pctxt, "forwardMaximumSDUSize", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->forwardMaximumSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->forwardMaximumSDUSize);
+
+ invokeEndElement (pctxt, "forwardMaximumSDUSize", -1);
+
+ /* decode backwardMaximumSDUSize */
+
+ invokeStartElement (pctxt, "backwardMaximumSDUSize", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->backwardMaximumSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->backwardMaximumSDUSize);
+
+ invokeEndElement (pctxt, "backwardMaximumSDUSize", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCCommand_aal (OOCTXT* pctxt, H245NewATMVCCommand_aal* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* aal1 */
+ case 0:
+ invokeStartElement (pctxt, "aal1", -1);
+
+ pvalue->u.aal1 = ALLOC_ASN1ELEM (pctxt, H245NewATMVCCommand_aal_aal1);
+
+ stat = asn1PD_H245NewATMVCCommand_aal_aal1 (pctxt, pvalue->u.aal1);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "aal1", -1);
+
+ break;
+
+ /* aal5 */
+ case 1:
+ invokeStartElement (pctxt, "aal5", -1);
+
+ pvalue->u.aal5 = ALLOC_ASN1ELEM (pctxt, H245NewATMVCCommand_aal_aal5);
+
+ stat = asn1PD_H245NewATMVCCommand_aal_aal5 (pctxt, pvalue->u.aal5);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "aal5", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_multiplex */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCCommand_multiplex (OOCTXT* pctxt, H245NewATMVCCommand_multiplex* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* noMultiplex */
+ case 0:
+ invokeStartElement (pctxt, "noMultiplex", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noMultiplex", -1);
+
+ break;
+
+ /* transportStream */
+ case 1:
+ invokeStartElement (pctxt, "transportStream", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "transportStream", -1);
+
+ break;
+
+ /* programStream */
+ case 2:
+ invokeStartElement (pctxt, "programStream", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "programStream", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_reverseParameters_multiplex */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCCommand_reverseParameters_multiplex (OOCTXT* pctxt, H245NewATMVCCommand_reverseParameters_multiplex* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* noMultiplex */
+ case 0:
+ invokeStartElement (pctxt, "noMultiplex", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noMultiplex", -1);
+
+ break;
+
+ /* transportStream */
+ case 1:
+ invokeStartElement (pctxt, "transportStream", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "transportStream", -1);
+
+ break;
+
+ /* programStream */
+ case 2:
+ invokeStartElement (pctxt, "programStream", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "programStream", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_reverseParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCCommand_reverseParameters (OOCTXT* pctxt, H245NewATMVCCommand_reverseParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode bitRate */
+
+ invokeStartElement (pctxt, "bitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->bitRate, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bitRate);
+
+ invokeEndElement (pctxt, "bitRate", -1);
+
+ /* decode bitRateLockedToPCRClock */
+
+ invokeStartElement (pctxt, "bitRateLockedToPCRClock", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->bitRateLockedToPCRClock);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->bitRateLockedToPCRClock);
+
+ invokeEndElement (pctxt, "bitRateLockedToPCRClock", -1);
+
+ /* decode bitRateLockedToNetworkClock */
+
+ invokeStartElement (pctxt, "bitRateLockedToNetworkClock", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->bitRateLockedToNetworkClock);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->bitRateLockedToNetworkClock);
+
+ invokeEndElement (pctxt, "bitRateLockedToNetworkClock", -1);
+
+ /* decode multiplex */
+
+ invokeStartElement (pctxt, "multiplex", -1);
+
+ stat = asn1PD_H245NewATMVCCommand_reverseParameters_multiplex (pctxt, &pvalue->multiplex);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplex", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCCommand (OOCTXT* pctxt, H245NewATMVCCommand* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode resourceID */
+
+ invokeStartElement (pctxt, "resourceID", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->resourceID, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->resourceID);
+
+ invokeEndElement (pctxt, "resourceID", -1);
+
+ /* decode bitRate */
+
+ invokeStartElement (pctxt, "bitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->bitRate, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bitRate);
+
+ invokeEndElement (pctxt, "bitRate", -1);
+
+ /* decode bitRateLockedToPCRClock */
+
+ invokeStartElement (pctxt, "bitRateLockedToPCRClock", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->bitRateLockedToPCRClock);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->bitRateLockedToPCRClock);
+
+ invokeEndElement (pctxt, "bitRateLockedToPCRClock", -1);
+
+ /* decode bitRateLockedToNetworkClock */
+
+ invokeStartElement (pctxt, "bitRateLockedToNetworkClock", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->bitRateLockedToNetworkClock);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->bitRateLockedToNetworkClock);
+
+ invokeEndElement (pctxt, "bitRateLockedToNetworkClock", -1);
+
+ /* decode aal */
+
+ invokeStartElement (pctxt, "aal", -1);
+
+ stat = asn1PD_H245NewATMVCCommand_aal (pctxt, &pvalue->aal);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "aal", -1);
+
+ /* decode multiplex */
+
+ invokeStartElement (pctxt, "multiplex", -1);
+
+ stat = asn1PD_H245NewATMVCCommand_multiplex (pctxt, &pvalue->multiplex);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplex", -1);
+
+ /* decode reverseParameters */
+
+ invokeStartElement (pctxt, "reverseParameters", -1);
+
+ stat = asn1PD_H245NewATMVCCommand_reverseParameters (pctxt, &pvalue->reverseParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "reverseParameters", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MobileMultilinkReconfigurationCommand_status */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MobileMultilinkReconfigurationCommand_status (OOCTXT* pctxt, H245MobileMultilinkReconfigurationCommand_status* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* synchronized_ */
+ case 0:
+ invokeStartElement (pctxt, "synchronized_", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "synchronized_", -1);
+
+ break;
+
+ /* reconfiguration */
+ case 1:
+ invokeStartElement (pctxt, "reconfiguration", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "reconfiguration", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MobileMultilinkReconfigurationCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MobileMultilinkReconfigurationCommand (OOCTXT* pctxt, H245MobileMultilinkReconfigurationCommand* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sampleSize */
+
+ invokeStartElement (pctxt, "sampleSize", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->sampleSize, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sampleSize);
+
+ invokeEndElement (pctxt, "sampleSize", -1);
+
+ /* decode samplesPerFrame */
+
+ invokeStartElement (pctxt, "samplesPerFrame", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->samplesPerFrame, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->samplesPerFrame);
+
+ invokeEndElement (pctxt, "samplesPerFrame", -1);
+
+ /* decode status */
+
+ invokeStartElement (pctxt, "status", -1);
+
+ stat = asn1PD_H245MobileMultilinkReconfigurationCommand_status (pctxt, &pvalue->status);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "status", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommandMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245CommandMessage (OOCTXT* pctxt, H245CommandMessage* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 6);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardMessage);
+
+ stat = asn1PD_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* maintenanceLoopOffCommand */
+ case 1:
+ invokeStartElement (pctxt, "maintenanceLoopOffCommand", -1);
+
+ pvalue->u.maintenanceLoopOffCommand = ALLOC_ASN1ELEM (pctxt, H245MaintenanceLoopOffCommand);
+
+ stat = asn1PD_H245MaintenanceLoopOffCommand (pctxt, pvalue->u.maintenanceLoopOffCommand);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "maintenanceLoopOffCommand", -1);
+
+ break;
+
+ /* sendTerminalCapabilitySet */
+ case 2:
+ invokeStartElement (pctxt, "sendTerminalCapabilitySet", -1);
+
+ pvalue->u.sendTerminalCapabilitySet = ALLOC_ASN1ELEM (pctxt, H245SendTerminalCapabilitySet);
+
+ stat = asn1PD_H245SendTerminalCapabilitySet (pctxt, pvalue->u.sendTerminalCapabilitySet);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sendTerminalCapabilitySet", -1);
+
+ break;
+
+ /* encryptionCommand */
+ case 3:
+ invokeStartElement (pctxt, "encryptionCommand", -1);
+
+ pvalue->u.encryptionCommand = ALLOC_ASN1ELEM (pctxt, H245EncryptionCommand);
+
+ stat = asn1PD_H245EncryptionCommand (pctxt, pvalue->u.encryptionCommand);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "encryptionCommand", -1);
+
+ break;
+
+ /* flowControlCommand */
+ case 4:
+ invokeStartElement (pctxt, "flowControlCommand", -1);
+
+ pvalue->u.flowControlCommand = ALLOC_ASN1ELEM (pctxt, H245FlowControlCommand);
+
+ stat = asn1PD_H245FlowControlCommand (pctxt, pvalue->u.flowControlCommand);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "flowControlCommand", -1);
+
+ break;
+
+ /* endSessionCommand */
+ case 5:
+ invokeStartElement (pctxt, "endSessionCommand", -1);
+
+ pvalue->u.endSessionCommand = ALLOC_ASN1ELEM (pctxt, H245EndSessionCommand);
+
+ stat = asn1PD_H245EndSessionCommand (pctxt, pvalue->u.endSessionCommand);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "endSessionCommand", -1);
+
+ break;
+
+ /* miscellaneousCommand */
+ case 6:
+ invokeStartElement (pctxt, "miscellaneousCommand", -1);
+
+ pvalue->u.miscellaneousCommand = ALLOC_ASN1ELEM (pctxt, H245MiscellaneousCommand);
+
+ stat = asn1PD_H245MiscellaneousCommand (pctxt, pvalue->u.miscellaneousCommand);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "miscellaneousCommand", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 8;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* communicationModeCommand */
+ case 8:
+ invokeStartElement (pctxt, "communicationModeCommand", -1);
+
+ pvalue->u.communicationModeCommand = ALLOC_ASN1ELEM (pctxt, H245CommunicationModeCommand);
+
+ stat = asn1PD_H245CommunicationModeCommand (pctxt, pvalue->u.communicationModeCommand);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "communicationModeCommand", -1);
+
+ break;
+
+ /* conferenceCommand */
+ case 9:
+ invokeStartElement (pctxt, "conferenceCommand", -1);
+
+ pvalue->u.conferenceCommand = ALLOC_ASN1ELEM (pctxt, H245ConferenceCommand);
+
+ stat = asn1PD_H245ConferenceCommand (pctxt, pvalue->u.conferenceCommand);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceCommand", -1);
+
+ break;
+
+ /* h223MultiplexReconfiguration */
+ case 10:
+ invokeStartElement (pctxt, "h223MultiplexReconfiguration", -1);
+
+ pvalue->u.h223MultiplexReconfiguration = ALLOC_ASN1ELEM (pctxt, H245H223MultiplexReconfiguration);
+
+ stat = asn1PD_H245H223MultiplexReconfiguration (pctxt, pvalue->u.h223MultiplexReconfiguration);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h223MultiplexReconfiguration", -1);
+
+ break;
+
+ /* newATMVCCommand */
+ case 11:
+ invokeStartElement (pctxt, "newATMVCCommand", -1);
+
+ pvalue->u.newATMVCCommand = ALLOC_ASN1ELEM (pctxt, H245NewATMVCCommand);
+
+ stat = asn1PD_H245NewATMVCCommand (pctxt, pvalue->u.newATMVCCommand);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "newATMVCCommand", -1);
+
+ break;
+
+ /* mobileMultilinkReconfigurationCommand */
+ case 12:
+ invokeStartElement (pctxt, "mobileMultilinkReconfigurationCommand", -1);
+
+ pvalue->u.mobileMultilinkReconfigurationCommand = ALLOC_ASN1ELEM (pctxt, H245MobileMultilinkReconfigurationCommand);
+
+ stat = asn1PD_H245MobileMultilinkReconfigurationCommand (pctxt, pvalue->u.mobileMultilinkReconfigurationCommand);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mobileMultilinkReconfigurationCommand", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FunctionNotUnderstood */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FunctionNotUnderstood (OOCTXT* pctxt, H245FunctionNotUnderstood* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* request */
+ case 0:
+ invokeStartElement (pctxt, "request", -1);
+
+ pvalue->u.request = ALLOC_ASN1ELEM (pctxt, H245RequestMessage);
+
+ stat = asn1PD_H245RequestMessage (pctxt, pvalue->u.request);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "request", -1);
+
+ break;
+
+ /* response */
+ case 1:
+ invokeStartElement (pctxt, "response", -1);
+
+ pvalue->u.response = ALLOC_ASN1ELEM (pctxt, H245ResponseMessage);
+
+ stat = asn1PD_H245ResponseMessage (pctxt, pvalue->u.response);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "response", -1);
+
+ break;
+
+ /* command */
+ case 2:
+ invokeStartElement (pctxt, "command", -1);
+
+ pvalue->u.command = ALLOC_ASN1ELEM (pctxt, H245CommandMessage);
+
+ stat = asn1PD_H245CommandMessage (pctxt, pvalue->u.command);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "command", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationRelease */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MasterSlaveDeterminationRelease (OOCTXT* pctxt, H245MasterSlaveDeterminationRelease* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetRelease */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TerminalCapabilitySetRelease (OOCTXT* pctxt, H245TerminalCapabilitySetRelease* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245OpenLogicalChannelConfirm (OOCTXT* pctxt, H245OpenLogicalChannelConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode forwardLogicalChannelNumber */
+
+ invokeStartElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestChannelCloseRelease */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestChannelCloseRelease (OOCTXT* pctxt, H245RequestChannelCloseRelease* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode forwardLogicalChannelNumber */
+
+ invokeStartElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "forwardLogicalChannelNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendRelease_multiplexTableEntryNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexEntrySendRelease_multiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexEntrySendRelease_multiplexTableEntryNumber* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H245MultiplexTableEntryNumber (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendRelease */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultiplexEntrySendRelease (OOCTXT* pctxt, H245MultiplexEntrySendRelease* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode multiplexTableEntryNumber */
+
+ invokeStartElement (pctxt, "multiplexTableEntryNumber", -1);
+
+ stat = asn1PD_H245MultiplexEntrySendRelease_multiplexTableEntryNumber (pctxt, &pvalue->multiplexTableEntryNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexTableEntryNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryRelease_entryNumbers */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestMultiplexEntryRelease_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryRelease_entryNumbers* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H245MultiplexTableEntryNumber (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryRelease */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestMultiplexEntryRelease (OOCTXT* pctxt, H245RequestMultiplexEntryRelease* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode entryNumbers */
+
+ invokeStartElement (pctxt, "entryNumbers", -1);
+
+ stat = asn1PD_H245RequestMultiplexEntryRelease_entryNumbers (pctxt, &pvalue->entryNumbers);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "entryNumbers", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestModeRelease */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245RequestModeRelease (OOCTXT* pctxt, H245RequestModeRelease* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousIndication_type_videoNotDecodedMBs */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MiscellaneousIndication_type_videoNotDecodedMBs (OOCTXT* pctxt, H245MiscellaneousIndication_type_videoNotDecodedMBs* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode firstMB */
+
+ invokeStartElement (pctxt, "firstMB", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->firstMB, 1U, 8192U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->firstMB);
+
+ invokeEndElement (pctxt, "firstMB", -1);
+
+ /* decode numberOfMBs */
+
+ invokeStartElement (pctxt, "numberOfMBs", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->numberOfMBs, 1U, 8192U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->numberOfMBs);
+
+ invokeEndElement (pctxt, "numberOfMBs", -1);
+
+ /* decode temporalReference */
+
+ invokeStartElement (pctxt, "temporalReference", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->temporalReference, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->temporalReference);
+
+ invokeEndElement (pctxt, "temporalReference", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousIndication_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MiscellaneousIndication_type (OOCTXT* pctxt, H245MiscellaneousIndication_type* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 9);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* logicalChannelActive */
+ case 0:
+ invokeStartElement (pctxt, "logicalChannelActive", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "logicalChannelActive", -1);
+
+ break;
+
+ /* logicalChannelInactive */
+ case 1:
+ invokeStartElement (pctxt, "logicalChannelInactive", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "logicalChannelInactive", -1);
+
+ break;
+
+ /* multipointConference */
+ case 2:
+ invokeStartElement (pctxt, "multipointConference", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "multipointConference", -1);
+
+ break;
+
+ /* cancelMultipointConference */
+ case 3:
+ invokeStartElement (pctxt, "cancelMultipointConference", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "cancelMultipointConference", -1);
+
+ break;
+
+ /* multipointZeroComm */
+ case 4:
+ invokeStartElement (pctxt, "multipointZeroComm", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "multipointZeroComm", -1);
+
+ break;
+
+ /* cancelMultipointZeroComm */
+ case 5:
+ invokeStartElement (pctxt, "cancelMultipointZeroComm", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "cancelMultipointZeroComm", -1);
+
+ break;
+
+ /* multipointSecondaryStatus */
+ case 6:
+ invokeStartElement (pctxt, "multipointSecondaryStatus", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "multipointSecondaryStatus", -1);
+
+ break;
+
+ /* cancelMultipointSecondaryStatus */
+ case 7:
+ invokeStartElement (pctxt, "cancelMultipointSecondaryStatus", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "cancelMultipointSecondaryStatus", -1);
+
+ break;
+
+ /* videoIndicateReadyToActivate */
+ case 8:
+ invokeStartElement (pctxt, "videoIndicateReadyToActivate", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "videoIndicateReadyToActivate", -1);
+
+ break;
+
+ /* videoTemporalSpatialTradeOff */
+ case 9:
+ invokeStartElement (pctxt, "videoTemporalSpatialTradeOff", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->u.videoTemporalSpatialTradeOff, 0U, 31U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.videoTemporalSpatialTradeOff);
+
+ invokeEndElement (pctxt, "videoTemporalSpatialTradeOff", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 11;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* videoNotDecodedMBs */
+ case 11:
+ invokeStartElement (pctxt, "videoNotDecodedMBs", -1);
+
+ pvalue->u.videoNotDecodedMBs = ALLOC_ASN1ELEM (pctxt, H245MiscellaneousIndication_type_videoNotDecodedMBs);
+
+ stat = asn1PD_H245MiscellaneousIndication_type_videoNotDecodedMBs (pctxt, pvalue->u.videoNotDecodedMBs);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "videoNotDecodedMBs", -1);
+
+ break;
+
+ /* transportCapability */
+ case 12:
+ invokeStartElement (pctxt, "transportCapability", -1);
+
+ pvalue->u.transportCapability = ALLOC_ASN1ELEM (pctxt, H245TransportCapability);
+
+ stat = asn1PD_H245TransportCapability (pctxt, pvalue->u.transportCapability);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transportCapability", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MiscellaneousIndication (OOCTXT* pctxt, H245MiscellaneousIndication* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode logicalChannelNumber */
+
+ invokeStartElement (pctxt, "logicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber", -1);
+
+ /* decode type */
+
+ invokeStartElement (pctxt, "type", -1);
+
+ stat = asn1PD_H245MiscellaneousIndication_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "type", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* JitterIndication_scope */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245JitterIndication_scope (OOCTXT* pctxt, H245JitterIndication_scope* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* logicalChannelNumber */
+ case 0:
+ invokeStartElement (pctxt, "logicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->u.logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber", -1);
+
+ break;
+
+ /* resourceID */
+ case 1:
+ invokeStartElement (pctxt, "resourceID", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.resourceID, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.resourceID);
+
+ invokeEndElement (pctxt, "resourceID", -1);
+
+ break;
+
+ /* wholeMultiplex */
+ case 2:
+ invokeStartElement (pctxt, "wholeMultiplex", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "wholeMultiplex", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* JitterIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245JitterIndication (OOCTXT* pctxt, H245JitterIndication* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.skippedFrameCountPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.additionalDecoderBufferPresent = optbit;
+
+ /* decode scope */
+
+ invokeStartElement (pctxt, "scope", -1);
+
+ stat = asn1PD_H245JitterIndication_scope (pctxt, &pvalue->scope);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "scope", -1);
+
+ /* decode estimatedReceivedJitterMantissa */
+
+ invokeStartElement (pctxt, "estimatedReceivedJitterMantissa", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->estimatedReceivedJitterMantissa, 0U, 3U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->estimatedReceivedJitterMantissa);
+
+ invokeEndElement (pctxt, "estimatedReceivedJitterMantissa", -1);
+
+ /* decode estimatedReceivedJitterExponent */
+
+ invokeStartElement (pctxt, "estimatedReceivedJitterExponent", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->estimatedReceivedJitterExponent, 0U, 7U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->estimatedReceivedJitterExponent);
+
+ invokeEndElement (pctxt, "estimatedReceivedJitterExponent", -1);
+
+ /* decode skippedFrameCount */
+
+ if (pvalue->m.skippedFrameCountPresent) {
+ invokeStartElement (pctxt, "skippedFrameCount", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->skippedFrameCount, 0U, 15U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->skippedFrameCount);
+
+ invokeEndElement (pctxt, "skippedFrameCount", -1);
+ }
+
+ /* decode additionalDecoderBuffer */
+
+ if (pvalue->m.additionalDecoderBufferPresent) {
+ invokeStartElement (pctxt, "additionalDecoderBuffer", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->additionalDecoderBuffer, 0U, 262143U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->additionalDecoderBuffer);
+
+ invokeEndElement (pctxt, "additionalDecoderBuffer", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223SkewIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H223SkewIndication (OOCTXT* pctxt, H245H223SkewIndication* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode logicalChannelNumber1 */
+
+ invokeStartElement (pctxt, "logicalChannelNumber1", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->logicalChannelNumber1);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber1", -1);
+
+ /* decode logicalChannelNumber2 */
+
+ invokeStartElement (pctxt, "logicalChannelNumber2", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->logicalChannelNumber2);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber2", -1);
+
+ /* decode skew */
+
+ invokeStartElement (pctxt, "skew", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->skew, 0U, 4095U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->skew);
+
+ invokeEndElement (pctxt, "skew", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal_aal1_clockRecovery */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCIndication_aal_aal1_clockRecovery (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1_clockRecovery* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nullClockRecovery */
+ case 0:
+ invokeStartElement (pctxt, "nullClockRecovery", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "nullClockRecovery", -1);
+
+ break;
+
+ /* srtsClockRecovery */
+ case 1:
+ invokeStartElement (pctxt, "srtsClockRecovery", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "srtsClockRecovery", -1);
+
+ break;
+
+ /* adaptiveClockRecovery */
+ case 2:
+ invokeStartElement (pctxt, "adaptiveClockRecovery", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "adaptiveClockRecovery", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal_aal1_errorCorrection */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCIndication_aal_aal1_errorCorrection (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1_errorCorrection* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nullErrorCorrection */
+ case 0:
+ invokeStartElement (pctxt, "nullErrorCorrection", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "nullErrorCorrection", -1);
+
+ break;
+
+ /* longInterleaver */
+ case 1:
+ invokeStartElement (pctxt, "longInterleaver", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "longInterleaver", -1);
+
+ break;
+
+ /* shortInterleaver */
+ case 2:
+ invokeStartElement (pctxt, "shortInterleaver", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "shortInterleaver", -1);
+
+ break;
+
+ /* errorCorrectionOnly */
+ case 3:
+ invokeStartElement (pctxt, "errorCorrectionOnly", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "errorCorrectionOnly", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal_aal1 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCIndication_aal_aal1 (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode clockRecovery */
+
+ invokeStartElement (pctxt, "clockRecovery", -1);
+
+ stat = asn1PD_H245NewATMVCIndication_aal_aal1_clockRecovery (pctxt, &pvalue->clockRecovery);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "clockRecovery", -1);
+
+ /* decode errorCorrection */
+
+ invokeStartElement (pctxt, "errorCorrection", -1);
+
+ stat = asn1PD_H245NewATMVCIndication_aal_aal1_errorCorrection (pctxt, &pvalue->errorCorrection);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "errorCorrection", -1);
+
+ /* decode structuredDataTransfer */
+
+ invokeStartElement (pctxt, "structuredDataTransfer", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->structuredDataTransfer);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->structuredDataTransfer);
+
+ invokeEndElement (pctxt, "structuredDataTransfer", -1);
+
+ /* decode partiallyFilledCells */
+
+ invokeStartElement (pctxt, "partiallyFilledCells", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->partiallyFilledCells);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->partiallyFilledCells);
+
+ invokeEndElement (pctxt, "partiallyFilledCells", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal_aal5 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCIndication_aal_aal5 (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal5* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode forwardMaximumSDUSize */
+
+ invokeStartElement (pctxt, "forwardMaximumSDUSize", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->forwardMaximumSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->forwardMaximumSDUSize);
+
+ invokeEndElement (pctxt, "forwardMaximumSDUSize", -1);
+
+ /* decode backwardMaximumSDUSize */
+
+ invokeStartElement (pctxt, "backwardMaximumSDUSize", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->backwardMaximumSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->backwardMaximumSDUSize);
+
+ invokeEndElement (pctxt, "backwardMaximumSDUSize", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCIndication_aal (OOCTXT* pctxt, H245NewATMVCIndication_aal* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* aal1 */
+ case 0:
+ invokeStartElement (pctxt, "aal1", -1);
+
+ pvalue->u.aal1 = ALLOC_ASN1ELEM (pctxt, H245NewATMVCIndication_aal_aal1);
+
+ stat = asn1PD_H245NewATMVCIndication_aal_aal1 (pctxt, pvalue->u.aal1);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "aal1", -1);
+
+ break;
+
+ /* aal5 */
+ case 1:
+ invokeStartElement (pctxt, "aal5", -1);
+
+ pvalue->u.aal5 = ALLOC_ASN1ELEM (pctxt, H245NewATMVCIndication_aal_aal5);
+
+ stat = asn1PD_H245NewATMVCIndication_aal_aal5 (pctxt, pvalue->u.aal5);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "aal5", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_multiplex */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCIndication_multiplex (OOCTXT* pctxt, H245NewATMVCIndication_multiplex* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* noMultiplex */
+ case 0:
+ invokeStartElement (pctxt, "noMultiplex", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noMultiplex", -1);
+
+ break;
+
+ /* transportStream */
+ case 1:
+ invokeStartElement (pctxt, "transportStream", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "transportStream", -1);
+
+ break;
+
+ /* programStream */
+ case 2:
+ invokeStartElement (pctxt, "programStream", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "programStream", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_reverseParameters_multiplex */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCIndication_reverseParameters_multiplex (OOCTXT* pctxt, H245NewATMVCIndication_reverseParameters_multiplex* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* noMultiplex */
+ case 0:
+ invokeStartElement (pctxt, "noMultiplex", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noMultiplex", -1);
+
+ break;
+
+ /* transportStream */
+ case 1:
+ invokeStartElement (pctxt, "transportStream", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "transportStream", -1);
+
+ break;
+
+ /* programStream */
+ case 2:
+ invokeStartElement (pctxt, "programStream", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "programStream", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_reverseParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCIndication_reverseParameters (OOCTXT* pctxt, H245NewATMVCIndication_reverseParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode bitRate */
+
+ invokeStartElement (pctxt, "bitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->bitRate, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bitRate);
+
+ invokeEndElement (pctxt, "bitRate", -1);
+
+ /* decode bitRateLockedToPCRClock */
+
+ invokeStartElement (pctxt, "bitRateLockedToPCRClock", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->bitRateLockedToPCRClock);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->bitRateLockedToPCRClock);
+
+ invokeEndElement (pctxt, "bitRateLockedToPCRClock", -1);
+
+ /* decode bitRateLockedToNetworkClock */
+
+ invokeStartElement (pctxt, "bitRateLockedToNetworkClock", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->bitRateLockedToNetworkClock);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->bitRateLockedToNetworkClock);
+
+ invokeEndElement (pctxt, "bitRateLockedToNetworkClock", -1);
+
+ /* decode multiplex */
+
+ invokeStartElement (pctxt, "multiplex", -1);
+
+ stat = asn1PD_H245NewATMVCIndication_reverseParameters_multiplex (pctxt, &pvalue->multiplex);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplex", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245NewATMVCIndication (OOCTXT* pctxt, H245NewATMVCIndication* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ /* decode resourceID */
+
+ invokeStartElement (pctxt, "resourceID", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->resourceID, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->resourceID);
+
+ invokeEndElement (pctxt, "resourceID", -1);
+
+ /* decode bitRate */
+
+ invokeStartElement (pctxt, "bitRate", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->bitRate, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->bitRate);
+
+ invokeEndElement (pctxt, "bitRate", -1);
+
+ /* decode bitRateLockedToPCRClock */
+
+ invokeStartElement (pctxt, "bitRateLockedToPCRClock", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->bitRateLockedToPCRClock);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->bitRateLockedToPCRClock);
+
+ invokeEndElement (pctxt, "bitRateLockedToPCRClock", -1);
+
+ /* decode bitRateLockedToNetworkClock */
+
+ invokeStartElement (pctxt, "bitRateLockedToNetworkClock", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->bitRateLockedToNetworkClock);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->bitRateLockedToNetworkClock);
+
+ invokeEndElement (pctxt, "bitRateLockedToNetworkClock", -1);
+
+ /* decode aal */
+
+ invokeStartElement (pctxt, "aal", -1);
+
+ stat = asn1PD_H245NewATMVCIndication_aal (pctxt, &pvalue->aal);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "aal", -1);
+
+ /* decode multiplex */
+
+ invokeStartElement (pctxt, "multiplex", -1);
+
+ stat = asn1PD_H245NewATMVCIndication_multiplex (pctxt, &pvalue->multiplex);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplex", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.reverseParametersPresent = 1;
+
+ invokeStartElement (pctxt, "reverseParameters", -1);
+
+ stat = asn1PD_H245NewATMVCIndication_reverseParameters (pctxt, &pvalue->reverseParameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "reverseParameters", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputIndication_userInputSupportIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UserInputIndication_userInputSupportIndication (OOCTXT* pctxt, H245UserInputIndication_userInputSupportIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* basicString */
+ case 1:
+ invokeStartElement (pctxt, "basicString", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "basicString", -1);
+
+ break;
+
+ /* iA5String */
+ case 2:
+ invokeStartElement (pctxt, "iA5String", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "iA5String", -1);
+
+ break;
+
+ /* generalString */
+ case 3:
+ invokeStartElement (pctxt, "generalString", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "generalString", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputIndication_signal_rtp */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UserInputIndication_signal_rtp (OOCTXT* pctxt, H245UserInputIndication_signal_rtp* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.timestampPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.expirationTimePresent = optbit;
+
+ /* decode timestamp */
+
+ if (pvalue->m.timestampPresent) {
+ invokeStartElement (pctxt, "timestamp", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->timestamp, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->timestamp);
+
+ invokeEndElement (pctxt, "timestamp", -1);
+ }
+
+ /* decode expirationTime */
+
+ if (pvalue->m.expirationTimePresent) {
+ invokeStartElement (pctxt, "expirationTime", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->expirationTime, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->expirationTime);
+
+ invokeEndElement (pctxt, "expirationTime", -1);
+ }
+
+ /* decode logicalChannelNumber */
+
+ invokeStartElement (pctxt, "logicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputIndication_signal */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_MULTIMEDIA_SYSTEM_CONTROL_UserInputIndication_signal_signalType_CharSet;
+
+EXTERN int asn1PD_H245UserInputIndication_signal (OOCTXT* pctxt, H245UserInputIndication_signal* pvalue)
+{
+ static Asn1SizeCnst signalType_lsize1 = { 0, 1, 1, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.durationPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.rtpPresent = optbit;
+
+ /* decode signalType */
+
+ invokeStartElement (pctxt, "signalType", -1);
+
+ addSizeConstraint (pctxt, &signalType_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->signalType, gs_MULTIMEDIA_SYSTEM_CONTROL_UserInputIndication_signal_signalType_CharSet, 8, 5, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->signalType);
+
+ invokeEndElement (pctxt, "signalType", -1);
+
+ /* decode duration */
+
+ if (pvalue->m.durationPresent) {
+ invokeStartElement (pctxt, "duration", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->duration, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->duration);
+
+ invokeEndElement (pctxt, "duration", -1);
+ }
+
+ /* decode rtp */
+
+ if (pvalue->m.rtpPresent) {
+ invokeStartElement (pctxt, "rtp", -1);
+
+ stat = asn1PD_H245UserInputIndication_signal_rtp (pctxt, &pvalue->rtp);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rtp", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.rtpPayloadIndicationPresent = 1;
+
+ invokeStartElement (pctxt, "rtpPayloadIndication", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "rtpPayloadIndication", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputIndication_signalUpdate_rtp */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UserInputIndication_signalUpdate_rtp (OOCTXT* pctxt, H245UserInputIndication_signalUpdate_rtp* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode logicalChannelNumber */
+
+ invokeStartElement (pctxt, "logicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputIndication_signalUpdate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UserInputIndication_signalUpdate (OOCTXT* pctxt, H245UserInputIndication_signalUpdate* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.rtpPresent = optbit;
+
+ /* decode duration */
+
+ invokeStartElement (pctxt, "duration", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->duration, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->duration);
+
+ invokeEndElement (pctxt, "duration", -1);
+
+ /* decode rtp */
+
+ if (pvalue->m.rtpPresent) {
+ invokeStartElement (pctxt, "rtp", -1);
+
+ stat = asn1PD_H245UserInputIndication_signalUpdate_rtp (pctxt, &pvalue->rtp);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "rtp", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputIndication_extendedAlphanumeric */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UserInputIndication_extendedAlphanumeric (OOCTXT* pctxt, H245UserInputIndication_extendedAlphanumeric* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.rtpPayloadIndicationPresent = optbit;
+
+ /* decode alphanumeric */
+
+ invokeStartElement (pctxt, "alphanumeric", -1);
+
+ stat = decodeVarWidthCharString (pctxt, &pvalue->alphanumeric);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->alphanumeric);
+
+ invokeEndElement (pctxt, "alphanumeric", -1);
+
+ /* decode rtpPayloadIndication */
+
+ if (pvalue->m.rtpPayloadIndicationPresent) {
+ invokeStartElement (pctxt, "rtpPayloadIndication", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "rtpPayloadIndication", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245UserInputIndication (OOCTXT* pctxt, H245UserInputIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardParameter);
+
+ stat = asn1PD_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* alphanumeric */
+ case 1:
+ invokeStartElement (pctxt, "alphanumeric", -1);
+
+ stat = decodeVarWidthCharString (pctxt, &pvalue->u.alphanumeric);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.alphanumeric);
+
+ invokeEndElement (pctxt, "alphanumeric", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* userInputSupportIndication */
+ case 3:
+ invokeStartElement (pctxt, "userInputSupportIndication", -1);
+
+ pvalue->u.userInputSupportIndication = ALLOC_ASN1ELEM (pctxt, H245UserInputIndication_userInputSupportIndication);
+
+ stat = asn1PD_H245UserInputIndication_userInputSupportIndication (pctxt, pvalue->u.userInputSupportIndication);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "userInputSupportIndication", -1);
+
+ break;
+
+ /* signal */
+ case 4:
+ invokeStartElement (pctxt, "signal", -1);
+
+ pvalue->u.signal = ALLOC_ASN1ELEM (pctxt, H245UserInputIndication_signal);
+
+ stat = asn1PD_H245UserInputIndication_signal (pctxt, pvalue->u.signal);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "signal", -1);
+
+ break;
+
+ /* signalUpdate */
+ case 5:
+ invokeStartElement (pctxt, "signalUpdate", -1);
+
+ pvalue->u.signalUpdate = ALLOC_ASN1ELEM (pctxt, H245UserInputIndication_signalUpdate);
+
+ stat = asn1PD_H245UserInputIndication_signalUpdate (pctxt, pvalue->u.signalUpdate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "signalUpdate", -1);
+
+ break;
+
+ /* extendedAlphanumeric */
+ case 6:
+ invokeStartElement (pctxt, "extendedAlphanumeric", -1);
+
+ pvalue->u.extendedAlphanumeric = ALLOC_ASN1ELEM (pctxt, H245UserInputIndication_extendedAlphanumeric);
+
+ stat = asn1PD_H245UserInputIndication_extendedAlphanumeric (pctxt, pvalue->u.extendedAlphanumeric);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "extendedAlphanumeric", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250MaximumSkewIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245H2250MaximumSkewIndication (OOCTXT* pctxt, H245H2250MaximumSkewIndication* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode logicalChannelNumber1 */
+
+ invokeStartElement (pctxt, "logicalChannelNumber1", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->logicalChannelNumber1);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber1", -1);
+
+ /* decode logicalChannelNumber2 */
+
+ invokeStartElement (pctxt, "logicalChannelNumber2", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->logicalChannelNumber2);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber2", -1);
+
+ /* decode maximumSkew */
+
+ invokeStartElement (pctxt, "maximumSkew", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->maximumSkew, 0U, 4095U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->maximumSkew);
+
+ invokeEndElement (pctxt, "maximumSkew", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MCLocationIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MCLocationIndication (OOCTXT* pctxt, H245MCLocationIndication* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode signalAddress */
+
+ invokeStartElement (pctxt, "signalAddress", -1);
+
+ stat = asn1PD_H245TransportAddress (pctxt, &pvalue->signalAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "signalAddress", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalYouAreSeeingInSubPictureNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245TerminalYouAreSeeingInSubPictureNumber (OOCTXT* pctxt, H245TerminalYouAreSeeingInSubPictureNumber* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode terminalNumber */
+
+ invokeStartElement (pctxt, "terminalNumber", -1);
+
+ stat = asn1PD_H245TerminalNumber (pctxt, &pvalue->terminalNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalNumber", -1);
+
+ /* decode subPictureNumber */
+
+ invokeStartElement (pctxt, "subPictureNumber", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->subPictureNumber, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->subPictureNumber);
+
+ invokeEndElement (pctxt, "subPictureNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VideoIndicateCompose */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VideoIndicateCompose (OOCTXT* pctxt, H245VideoIndicateCompose* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode compositionNumber */
+
+ invokeStartElement (pctxt, "compositionNumber", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->compositionNumber, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->compositionNumber);
+
+ invokeEndElement (pctxt, "compositionNumber", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245ConferenceIndication (OOCTXT* pctxt, H245ConferenceIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 9);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* sbeNumber */
+ case 0:
+ invokeStartElement (pctxt, "sbeNumber", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->u.sbeNumber, 0U, 9U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.sbeNumber);
+
+ invokeEndElement (pctxt, "sbeNumber", -1);
+
+ break;
+
+ /* terminalNumberAssign */
+ case 1:
+ invokeStartElement (pctxt, "terminalNumberAssign", -1);
+
+ pvalue->u.terminalNumberAssign = ALLOC_ASN1ELEM (pctxt, H245TerminalLabel);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, pvalue->u.terminalNumberAssign);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalNumberAssign", -1);
+
+ break;
+
+ /* terminalJoinedConference */
+ case 2:
+ invokeStartElement (pctxt, "terminalJoinedConference", -1);
+
+ pvalue->u.terminalJoinedConference = ALLOC_ASN1ELEM (pctxt, H245TerminalLabel);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, pvalue->u.terminalJoinedConference);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalJoinedConference", -1);
+
+ break;
+
+ /* terminalLeftConference */
+ case 3:
+ invokeStartElement (pctxt, "terminalLeftConference", -1);
+
+ pvalue->u.terminalLeftConference = ALLOC_ASN1ELEM (pctxt, H245TerminalLabel);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, pvalue->u.terminalLeftConference);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalLeftConference", -1);
+
+ break;
+
+ /* seenByAtLeastOneOther */
+ case 4:
+ invokeStartElement (pctxt, "seenByAtLeastOneOther", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "seenByAtLeastOneOther", -1);
+
+ break;
+
+ /* cancelSeenByAtLeastOneOther */
+ case 5:
+ invokeStartElement (pctxt, "cancelSeenByAtLeastOneOther", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "cancelSeenByAtLeastOneOther", -1);
+
+ break;
+
+ /* seenByAll */
+ case 6:
+ invokeStartElement (pctxt, "seenByAll", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "seenByAll", -1);
+
+ break;
+
+ /* cancelSeenByAll */
+ case 7:
+ invokeStartElement (pctxt, "cancelSeenByAll", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "cancelSeenByAll", -1);
+
+ break;
+
+ /* terminalYouAreSeeing */
+ case 8:
+ invokeStartElement (pctxt, "terminalYouAreSeeing", -1);
+
+ pvalue->u.terminalYouAreSeeing = ALLOC_ASN1ELEM (pctxt, H245TerminalLabel);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, pvalue->u.terminalYouAreSeeing);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalYouAreSeeing", -1);
+
+ break;
+
+ /* requestForFloor */
+ case 9:
+ invokeStartElement (pctxt, "requestForFloor", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "requestForFloor", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 11;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* withdrawChairToken */
+ case 11:
+ invokeStartElement (pctxt, "withdrawChairToken", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "withdrawChairToken", -1);
+
+ break;
+
+ /* floorRequested */
+ case 12:
+ invokeStartElement (pctxt, "floorRequested", -1);
+
+ pvalue->u.floorRequested = ALLOC_ASN1ELEM (pctxt, H245TerminalLabel);
+
+ stat = asn1PD_H245TerminalLabel (pctxt, pvalue->u.floorRequested);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "floorRequested", -1);
+
+ break;
+
+ /* terminalYouAreSeeingInSubPictureNumber */
+ case 13:
+ invokeStartElement (pctxt, "terminalYouAreSeeingInSubPictureNumber", -1);
+
+ pvalue->u.terminalYouAreSeeingInSubPictureNumber = ALLOC_ASN1ELEM (pctxt, H245TerminalYouAreSeeingInSubPictureNumber);
+
+ stat = asn1PD_H245TerminalYouAreSeeingInSubPictureNumber (pctxt, pvalue->u.terminalYouAreSeeingInSubPictureNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalYouAreSeeingInSubPictureNumber", -1);
+
+ break;
+
+ /* videoIndicateCompose */
+ case 14:
+ invokeStartElement (pctxt, "videoIndicateCompose", -1);
+
+ pvalue->u.videoIndicateCompose = ALLOC_ASN1ELEM (pctxt, H245VideoIndicateCompose);
+
+ stat = asn1PD_H245VideoIndicateCompose (pctxt, pvalue->u.videoIndicateCompose);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "videoIndicateCompose", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VendorIdentification_productNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VendorIdentification_productNumber (OOCTXT* pctxt, H245VendorIdentification_productNumber* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VendorIdentification_versionNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VendorIdentification_versionNumber (OOCTXT* pctxt, H245VendorIdentification_versionNumber* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VendorIdentification */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245VendorIdentification (OOCTXT* pctxt, H245VendorIdentification* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.productNumberPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.versionNumberPresent = optbit;
+
+ /* decode vendor */
+
+ invokeStartElement (pctxt, "vendor", -1);
+
+ stat = asn1PD_H245NonStandardIdentifier (pctxt, &pvalue->vendor);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "vendor", -1);
+
+ /* decode productNumber */
+
+ if (pvalue->m.productNumberPresent) {
+ invokeStartElement (pctxt, "productNumber", -1);
+
+ stat = asn1PD_H245VendorIdentification_productNumber (pctxt, &pvalue->productNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "productNumber", -1);
+ }
+
+ /* decode versionNumber */
+
+ if (pvalue->m.versionNumberPresent) {
+ invokeStartElement (pctxt, "versionNumber", -1);
+
+ stat = asn1PD_H245VendorIdentification_versionNumber (pctxt, &pvalue->versionNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "versionNumber", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FunctionNotSupported_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FunctionNotSupported_cause (OOCTXT* pctxt, H245FunctionNotSupported_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* syntaxError */
+ case 0:
+ invokeStartElement (pctxt, "syntaxError", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "syntaxError", -1);
+
+ break;
+
+ /* semanticError */
+ case 1:
+ invokeStartElement (pctxt, "semanticError", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "semanticError", -1);
+
+ break;
+
+ /* unknownFunction */
+ case 2:
+ invokeStartElement (pctxt, "unknownFunction", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unknownFunction", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FunctionNotSupported */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FunctionNotSupported (OOCTXT* pctxt, H245FunctionNotSupported* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.returnedFunctionPresent = optbit;
+
+ /* decode cause */
+
+ invokeStartElement (pctxt, "cause", -1);
+
+ stat = asn1PD_H245FunctionNotSupported_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cause", -1);
+
+ /* decode returnedFunction */
+
+ if (pvalue->m.returnedFunctionPresent) {
+ invokeStartElement (pctxt, "returnedFunction", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->returnedFunction);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->returnedFunction.numocts, pvalue->returnedFunction.data);
+
+ invokeEndElement (pctxt, "returnedFunction", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkIndication_crcDesired */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkIndication_crcDesired (OOCTXT* pctxt, H245MultilinkIndication_crcDesired* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkIndication_excessiveError */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkIndication_excessiveError (OOCTXT* pctxt, H245MultilinkIndication_excessiveError* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode connectionIdentifier */
+
+ invokeStartElement (pctxt, "connectionIdentifier", -1);
+
+ stat = asn1PD_H245ConnectionIdentifier (pctxt, &pvalue->connectionIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "connectionIdentifier", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultilinkIndication (OOCTXT* pctxt, H245MultilinkIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardMessage);
+
+ stat = asn1PD_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* crcDesired */
+ case 1:
+ invokeStartElement (pctxt, "crcDesired", -1);
+
+ pvalue->u.crcDesired = ALLOC_ASN1ELEM (pctxt, H245MultilinkIndication_crcDesired);
+
+ stat = asn1PD_H245MultilinkIndication_crcDesired (pctxt, pvalue->u.crcDesired);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "crcDesired", -1);
+
+ break;
+
+ /* excessiveError */
+ case 2:
+ invokeStartElement (pctxt, "excessiveError", -1);
+
+ pvalue->u.excessiveError = ALLOC_ASN1ELEM (pctxt, H245MultilinkIndication_excessiveError);
+
+ stat = asn1PD_H245MultilinkIndication_excessiveError (pctxt, pvalue->u.excessiveError);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "excessiveError", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateRelease */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245LogicalChannelRateRelease (OOCTXT* pctxt, H245LogicalChannelRateRelease* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FlowControlIndication_scope */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FlowControlIndication_scope (OOCTXT* pctxt, H245FlowControlIndication_scope* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* logicalChannelNumber */
+ case 0:
+ invokeStartElement (pctxt, "logicalChannelNumber", -1);
+
+ stat = asn1PD_H245LogicalChannelNumber (pctxt, &pvalue->u.logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelNumber", -1);
+
+ break;
+
+ /* resourceID */
+ case 1:
+ invokeStartElement (pctxt, "resourceID", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.resourceID, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.resourceID);
+
+ invokeEndElement (pctxt, "resourceID", -1);
+
+ break;
+
+ /* wholeMultiplex */
+ case 2:
+ invokeStartElement (pctxt, "wholeMultiplex", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "wholeMultiplex", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FlowControlIndication_restriction */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FlowControlIndication_restriction (OOCTXT* pctxt, H245FlowControlIndication_restriction* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* maximumBitRate */
+ case 0:
+ invokeStartElement (pctxt, "maximumBitRate", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->u.maximumBitRate, 0U, 16777215U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.maximumBitRate);
+
+ invokeEndElement (pctxt, "maximumBitRate", -1);
+
+ break;
+
+ /* noRestriction */
+ case 1:
+ invokeStartElement (pctxt, "noRestriction", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "noRestriction", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FlowControlIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245FlowControlIndication (OOCTXT* pctxt, H245FlowControlIndication* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode scope */
+
+ invokeStartElement (pctxt, "scope", -1);
+
+ stat = asn1PD_H245FlowControlIndication_scope (pctxt, &pvalue->scope);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "scope", -1);
+
+ /* decode restriction */
+
+ invokeStartElement (pctxt, "restriction", -1);
+
+ stat = asn1PD_H245FlowControlIndication_restriction (pctxt, &pvalue->restriction);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "restriction", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MobileMultilinkReconfigurationIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MobileMultilinkReconfigurationIndication (OOCTXT* pctxt, H245MobileMultilinkReconfigurationIndication* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode sampleSize */
+
+ invokeStartElement (pctxt, "sampleSize", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->sampleSize, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->sampleSize);
+
+ invokeEndElement (pctxt, "sampleSize", -1);
+
+ /* decode samplesPerFrame */
+
+ invokeStartElement (pctxt, "samplesPerFrame", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->samplesPerFrame, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->samplesPerFrame);
+
+ invokeEndElement (pctxt, "samplesPerFrame", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IndicationMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245IndicationMessage (OOCTXT* pctxt, H245IndicationMessage* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 13);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* nonStandard */
+ case 0:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H245NonStandardMessage);
+
+ stat = asn1PD_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ /* functionNotUnderstood */
+ case 1:
+ invokeStartElement (pctxt, "functionNotUnderstood", -1);
+
+ pvalue->u.functionNotUnderstood = ALLOC_ASN1ELEM (pctxt, H245FunctionNotUnderstood);
+
+ stat = asn1PD_H245FunctionNotUnderstood (pctxt, pvalue->u.functionNotUnderstood);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "functionNotUnderstood", -1);
+
+ break;
+
+ /* masterSlaveDeterminationRelease */
+ case 2:
+ invokeStartElement (pctxt, "masterSlaveDeterminationRelease", -1);
+
+ pvalue->u.masterSlaveDeterminationRelease = ALLOC_ASN1ELEM (pctxt, H245MasterSlaveDeterminationRelease);
+
+ stat = asn1PD_H245MasterSlaveDeterminationRelease (pctxt, pvalue->u.masterSlaveDeterminationRelease);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "masterSlaveDeterminationRelease", -1);
+
+ break;
+
+ /* terminalCapabilitySetRelease */
+ case 3:
+ invokeStartElement (pctxt, "terminalCapabilitySetRelease", -1);
+
+ pvalue->u.terminalCapabilitySetRelease = ALLOC_ASN1ELEM (pctxt, H245TerminalCapabilitySetRelease);
+
+ stat = asn1PD_H245TerminalCapabilitySetRelease (pctxt, pvalue->u.terminalCapabilitySetRelease);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "terminalCapabilitySetRelease", -1);
+
+ break;
+
+ /* openLogicalChannelConfirm */
+ case 4:
+ invokeStartElement (pctxt, "openLogicalChannelConfirm", -1);
+
+ pvalue->u.openLogicalChannelConfirm = ALLOC_ASN1ELEM (pctxt, H245OpenLogicalChannelConfirm);
+
+ stat = asn1PD_H245OpenLogicalChannelConfirm (pctxt, pvalue->u.openLogicalChannelConfirm);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "openLogicalChannelConfirm", -1);
+
+ break;
+
+ /* requestChannelCloseRelease */
+ case 5:
+ invokeStartElement (pctxt, "requestChannelCloseRelease", -1);
+
+ pvalue->u.requestChannelCloseRelease = ALLOC_ASN1ELEM (pctxt, H245RequestChannelCloseRelease);
+
+ stat = asn1PD_H245RequestChannelCloseRelease (pctxt, pvalue->u.requestChannelCloseRelease);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestChannelCloseRelease", -1);
+
+ break;
+
+ /* multiplexEntrySendRelease */
+ case 6:
+ invokeStartElement (pctxt, "multiplexEntrySendRelease", -1);
+
+ pvalue->u.multiplexEntrySendRelease = ALLOC_ASN1ELEM (pctxt, H245MultiplexEntrySendRelease);
+
+ stat = asn1PD_H245MultiplexEntrySendRelease (pctxt, pvalue->u.multiplexEntrySendRelease);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multiplexEntrySendRelease", -1);
+
+ break;
+
+ /* requestMultiplexEntryRelease */
+ case 7:
+ invokeStartElement (pctxt, "requestMultiplexEntryRelease", -1);
+
+ pvalue->u.requestMultiplexEntryRelease = ALLOC_ASN1ELEM (pctxt, H245RequestMultiplexEntryRelease);
+
+ stat = asn1PD_H245RequestMultiplexEntryRelease (pctxt, pvalue->u.requestMultiplexEntryRelease);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestMultiplexEntryRelease", -1);
+
+ break;
+
+ /* requestModeRelease */
+ case 8:
+ invokeStartElement (pctxt, "requestModeRelease", -1);
+
+ pvalue->u.requestModeRelease = ALLOC_ASN1ELEM (pctxt, H245RequestModeRelease);
+
+ stat = asn1PD_H245RequestModeRelease (pctxt, pvalue->u.requestModeRelease);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "requestModeRelease", -1);
+
+ break;
+
+ /* miscellaneousIndication */
+ case 9:
+ invokeStartElement (pctxt, "miscellaneousIndication", -1);
+
+ pvalue->u.miscellaneousIndication = ALLOC_ASN1ELEM (pctxt, H245MiscellaneousIndication);
+
+ stat = asn1PD_H245MiscellaneousIndication (pctxt, pvalue->u.miscellaneousIndication);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "miscellaneousIndication", -1);
+
+ break;
+
+ /* jitterIndication */
+ case 10:
+ invokeStartElement (pctxt, "jitterIndication", -1);
+
+ pvalue->u.jitterIndication = ALLOC_ASN1ELEM (pctxt, H245JitterIndication);
+
+ stat = asn1PD_H245JitterIndication (pctxt, pvalue->u.jitterIndication);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "jitterIndication", -1);
+
+ break;
+
+ /* h223SkewIndication */
+ case 11:
+ invokeStartElement (pctxt, "h223SkewIndication", -1);
+
+ pvalue->u.h223SkewIndication = ALLOC_ASN1ELEM (pctxt, H245H223SkewIndication);
+
+ stat = asn1PD_H245H223SkewIndication (pctxt, pvalue->u.h223SkewIndication);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h223SkewIndication", -1);
+
+ break;
+
+ /* newATMVCIndication */
+ case 12:
+ invokeStartElement (pctxt, "newATMVCIndication", -1);
+
+ pvalue->u.newATMVCIndication = ALLOC_ASN1ELEM (pctxt, H245NewATMVCIndication);
+
+ stat = asn1PD_H245NewATMVCIndication (pctxt, pvalue->u.newATMVCIndication);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "newATMVCIndication", -1);
+
+ break;
+
+ /* userInput */
+ case 13:
+ invokeStartElement (pctxt, "userInput", -1);
+
+ pvalue->u.userInput = ALLOC_ASN1ELEM (pctxt, H245UserInputIndication);
+
+ stat = asn1PD_H245UserInputIndication (pctxt, pvalue->u.userInput);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "userInput", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 15;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* h2250MaximumSkewIndication */
+ case 15:
+ invokeStartElement (pctxt, "h2250MaximumSkewIndication", -1);
+
+ pvalue->u.h2250MaximumSkewIndication = ALLOC_ASN1ELEM (pctxt, H245H2250MaximumSkewIndication);
+
+ stat = asn1PD_H245H2250MaximumSkewIndication (pctxt, pvalue->u.h2250MaximumSkewIndication);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h2250MaximumSkewIndication", -1);
+
+ break;
+
+ /* mcLocationIndication */
+ case 16:
+ invokeStartElement (pctxt, "mcLocationIndication", -1);
+
+ pvalue->u.mcLocationIndication = ALLOC_ASN1ELEM (pctxt, H245MCLocationIndication);
+
+ stat = asn1PD_H245MCLocationIndication (pctxt, pvalue->u.mcLocationIndication);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mcLocationIndication", -1);
+
+ break;
+
+ /* conferenceIndication */
+ case 17:
+ invokeStartElement (pctxt, "conferenceIndication", -1);
+
+ pvalue->u.conferenceIndication = ALLOC_ASN1ELEM (pctxt, H245ConferenceIndication);
+
+ stat = asn1PD_H245ConferenceIndication (pctxt, pvalue->u.conferenceIndication);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "conferenceIndication", -1);
+
+ break;
+
+ /* vendorIdentification */
+ case 18:
+ invokeStartElement (pctxt, "vendorIdentification", -1);
+
+ pvalue->u.vendorIdentification = ALLOC_ASN1ELEM (pctxt, H245VendorIdentification);
+
+ stat = asn1PD_H245VendorIdentification (pctxt, pvalue->u.vendorIdentification);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "vendorIdentification", -1);
+
+ break;
+
+ /* functionNotSupported */
+ case 19:
+ invokeStartElement (pctxt, "functionNotSupported", -1);
+
+ pvalue->u.functionNotSupported = ALLOC_ASN1ELEM (pctxt, H245FunctionNotSupported);
+
+ stat = asn1PD_H245FunctionNotSupported (pctxt, pvalue->u.functionNotSupported);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "functionNotSupported", -1);
+
+ break;
+
+ /* multilinkIndication */
+ case 20:
+ invokeStartElement (pctxt, "multilinkIndication", -1);
+
+ pvalue->u.multilinkIndication = ALLOC_ASN1ELEM (pctxt, H245MultilinkIndication);
+
+ stat = asn1PD_H245MultilinkIndication (pctxt, pvalue->u.multilinkIndication);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "multilinkIndication", -1);
+
+ break;
+
+ /* logicalChannelRateRelease */
+ case 21:
+ invokeStartElement (pctxt, "logicalChannelRateRelease", -1);
+
+ pvalue->u.logicalChannelRateRelease = ALLOC_ASN1ELEM (pctxt, H245LogicalChannelRateRelease);
+
+ stat = asn1PD_H245LogicalChannelRateRelease (pctxt, pvalue->u.logicalChannelRateRelease);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "logicalChannelRateRelease", -1);
+
+ break;
+
+ /* flowControlIndication */
+ case 22:
+ invokeStartElement (pctxt, "flowControlIndication", -1);
+
+ pvalue->u.flowControlIndication = ALLOC_ASN1ELEM (pctxt, H245FlowControlIndication);
+
+ stat = asn1PD_H245FlowControlIndication (pctxt, pvalue->u.flowControlIndication);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "flowControlIndication", -1);
+
+ break;
+
+ /* mobileMultilinkReconfigurationIndication */
+ case 23:
+ invokeStartElement (pctxt, "mobileMultilinkReconfigurationIndication", -1);
+
+ pvalue->u.mobileMultilinkReconfigurationIndication = ALLOC_ASN1ELEM (pctxt, H245MobileMultilinkReconfigurationIndication);
+
+ stat = asn1PD_H245MobileMultilinkReconfigurationIndication (pctxt, pvalue->u.mobileMultilinkReconfigurationIndication);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mobileMultilinkReconfigurationIndication", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultimediaSystemControlMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H245MultimediaSystemControlMessage (OOCTXT* pctxt, H245MultimediaSystemControlMessage* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* request */
+ case 0:
+ invokeStartElement (pctxt, "request", -1);
+
+ pvalue->u.request = ALLOC_ASN1ELEM (pctxt, H245RequestMessage);
+
+ stat = asn1PD_H245RequestMessage (pctxt, pvalue->u.request);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "request", -1);
+
+ break;
+
+ /* response */
+ case 1:
+ invokeStartElement (pctxt, "response", -1);
+
+ pvalue->u.response = ALLOC_ASN1ELEM (pctxt, H245ResponseMessage);
+
+ stat = asn1PD_H245ResponseMessage (pctxt, pvalue->u.response);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "response", -1);
+
+ break;
+
+ /* command */
+ case 2:
+ invokeStartElement (pctxt, "command", -1);
+
+ pvalue->u.command = ALLOC_ASN1ELEM (pctxt, H245CommandMessage);
+
+ stat = asn1PD_H245CommandMessage (pctxt, pvalue->u.command);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "command", -1);
+
+ break;
+
+ /* indication */
+ case 3:
+ invokeStartElement (pctxt, "indication", -1);
+
+ pvalue->u.indication = ALLOC_ASN1ELEM (pctxt, H245IndicationMessage);
+
+ stat = asn1PD_H245IndicationMessage (pctxt, pvalue->u.indication);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "indication", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
diff --git a/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c b/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
new file mode 100644
index 000000000..ac124d96d
--- /dev/null
+++ b/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
@@ -0,0 +1,26599 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#include "ooasn1.h"
+#include "MULTIMEDIA-SYSTEM-CONTROL.h"
+
+/**************************************************************/
+/* */
+/* NonStandardIdentifier_h221NonStandard */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NonStandardIdentifier_h221NonStandard (OOCTXT* pctxt, H245NonStandardIdentifier_h221NonStandard* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode t35CountryCode */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t35CountryCode, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode t35Extension */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t35Extension, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode manufacturerCode */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->manufacturerCode, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NonStandardIdentifier (OOCTXT* pctxt, H245NonStandardIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* object */
+ case 1:
+ stat = encodeObjectIdentifier (pctxt, pvalue->u.object);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h221NonStandard */
+ case 2:
+ stat = asn1PE_H245NonStandardIdentifier_h221NonStandard (pctxt, pvalue->u.h221NonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NonStandardParameter (OOCTXT* pctxt, H245NonStandardParameter* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode nonStandardIdentifier */
+
+ stat = asn1PE_H245NonStandardIdentifier (pctxt, &pvalue->nonStandardIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode data */
+
+ stat = encodeOctetString (pctxt, pvalue->data.numocts, pvalue->data.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V42bis */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245V42bis (OOCTXT* pctxt, H245V42bis* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode numberOfCodewords */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->numberOfCodewords, 1U, 65536U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maximumStringLength */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maximumStringLength, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CompressionType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CompressionType (OOCTXT* pctxt, H245CompressionType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 1);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* v42bis */
+ case 1:
+ stat = asn1PE_H245V42bis (pctxt, pvalue->u.v42bis);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataProtocolCapability_v76wCompression */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DataProtocolCapability_v76wCompression (OOCTXT* pctxt, H245DataProtocolCapability_v76wCompression* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* transmitCompression */
+ case 1:
+ stat = asn1PE_H245CompressionType (pctxt, pvalue->u.transmitCompression);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* receiveCompression */
+ case 2:
+ stat = asn1PE_H245CompressionType (pctxt, pvalue->u.receiveCompression);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* transmitAndReceiveCompression */
+ case 3:
+ stat = asn1PE_H245CompressionType (pctxt, pvalue->u.transmitAndReceiveCompression);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataProtocolCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DataProtocolCapability (OOCTXT* pctxt, H245DataProtocolCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 7);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* v14buffered */
+ case 2:
+ /* NULL */
+ break;
+
+ /* v42lapm */
+ case 3:
+ /* NULL */
+ break;
+
+ /* hdlcFrameTunnelling */
+ case 4:
+ /* NULL */
+ break;
+
+ /* h310SeparateVCStack */
+ case 5:
+ /* NULL */
+ break;
+
+ /* h310SingleVCStack */
+ case 6:
+ /* NULL */
+ break;
+
+ /* transparent */
+ case 7:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 8);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* segmentationAndReassembly */
+ case 8:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* hdlcFrameTunnelingwSAR */
+ case 9:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* v120 */
+ case 10:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* separateLANStack */
+ case 11:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* v76wCompression */
+ case 12:
+ stat = asn1PE_H245DataProtocolCapability_v76wCompression (&lctxt, pvalue->u.v76wCompression);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* tcp */
+ case 13:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* udp */
+ case 14:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T38FaxRateManagement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245T38FaxRateManagement (OOCTXT* pctxt, H245T38FaxRateManagement* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* localTCF */
+ case 1:
+ /* NULL */
+ break;
+
+ /* transferredTCF */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T38FaxUdpOptions_t38FaxUdpEC */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245T38FaxUdpOptions_t38FaxUdpEC (OOCTXT* pctxt, H245T38FaxUdpOptions_t38FaxUdpEC* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* t38UDPFEC */
+ case 1:
+ /* NULL */
+ break;
+
+ /* t38UDPRedundancy */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T38FaxUdpOptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245T38FaxUdpOptions (OOCTXT* pctxt, H245T38FaxUdpOptions* pvalue)
+{
+ int stat = ASN_OK;
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.t38FaxMaxBufferPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.t38FaxMaxDatagramPresent);
+
+ /* encode t38FaxMaxBuffer */
+
+ if (pvalue->m.t38FaxMaxBufferPresent) {
+ stat = encodeUnconsInteger (pctxt, pvalue->t38FaxMaxBuffer);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode t38FaxMaxDatagram */
+
+ if (pvalue->m.t38FaxMaxDatagramPresent) {
+ stat = encodeUnconsInteger (pctxt, pvalue->t38FaxMaxDatagram);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode t38FaxUdpEC */
+
+ stat = asn1PE_H245T38FaxUdpOptions_t38FaxUdpEC (pctxt, &pvalue->t38FaxUdpEC);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T38FaxTcpOptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245T38FaxTcpOptions (OOCTXT* pctxt, H245T38FaxTcpOptions* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode t38TCPBidirectionalMode */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->t38TCPBidirectionalMode);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T38FaxProfile */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245T38FaxProfile (OOCTXT* pctxt, H245T38FaxProfile* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.versionPresent ||
+ pvalue->m.t38FaxRateManagementPresent ||
+ pvalue->m.t38FaxUdpOptionsPresent ||
+ pvalue->m.t38FaxTcpOptionsPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode fillBitRemoval */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fillBitRemoval);
+ if (stat != ASN_OK) return stat;
+
+ /* encode transcodingJBIG */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->transcodingJBIG);
+ if (stat != ASN_OK) return stat;
+
+ /* encode transcodingMMR */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->transcodingMMR);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.versionPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.t38FaxRateManagementPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.t38FaxUdpOptionsPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.t38FaxTcpOptionsPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.versionPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->version, 0U, 255U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.t38FaxRateManagementPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245T38FaxRateManagement (&lctxt, &pvalue->t38FaxRateManagement);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.t38FaxUdpOptionsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245T38FaxUdpOptions (&lctxt, &pvalue->t38FaxUdpOptions);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.t38FaxTcpOptionsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245T38FaxTcpOptions (&lctxt, &pvalue->t38FaxTcpOptions);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NonStandardMessage (OOCTXT* pctxt, H245NonStandardMessage* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode nonStandardData */
+
+ stat = asn1PE_H245NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MasterSlaveDetermination */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MasterSlaveDetermination (OOCTXT* pctxt, H245MasterSlaveDetermination* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode terminalType */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->terminalType, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode statusDeterminationNumber */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->statusDeterminationNumber, 0U, 16777215U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SequenceNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245SequenceNumber (OOCTXT* pctxt, H245SequenceNumber value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConsUnsigned (pctxt, value, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability_aal1 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VCCapability_aal1 (OOCTXT* pctxt, H245VCCapability_aal1* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode nullClockRecovery */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->nullClockRecovery);
+ if (stat != ASN_OK) return stat;
+
+ /* encode srtsClockRecovery */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->srtsClockRecovery);
+ if (stat != ASN_OK) return stat;
+
+ /* encode adaptiveClockRecovery */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->adaptiveClockRecovery);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nullErrorCorrection */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->nullErrorCorrection);
+ if (stat != ASN_OK) return stat;
+
+ /* encode longInterleaver */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->longInterleaver);
+ if (stat != ASN_OK) return stat;
+
+ /* encode shortInterleaver */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->shortInterleaver);
+ if (stat != ASN_OK) return stat;
+
+ /* encode errorCorrectionOnly */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->errorCorrectionOnly);
+ if (stat != ASN_OK) return stat;
+
+ /* encode structuredDataTransfer */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->structuredDataTransfer);
+ if (stat != ASN_OK) return stat;
+
+ /* encode partiallyFilledCells */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->partiallyFilledCells);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability_aal5 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VCCapability_aal5 (OOCTXT* pctxt, H245VCCapability_aal5* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode forwardMaximumSDUSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->forwardMaximumSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode backwardMaximumSDUSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->backwardMaximumSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability_availableBitRates_type_rangeOfBitRates */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VCCapability_availableBitRates_type_rangeOfBitRates (OOCTXT* pctxt, H245VCCapability_availableBitRates_type_rangeOfBitRates* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode lowerBitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->lowerBitRate, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode higherBitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->higherBitRate, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability_availableBitRates_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VCCapability_availableBitRates_type (OOCTXT* pctxt, H245VCCapability_availableBitRates_type* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* singleBitRate */
+ case 1:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.singleBitRate, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* rangeOfBitRates */
+ case 2:
+ stat = asn1PE_H245VCCapability_availableBitRates_type_rangeOfBitRates (pctxt, pvalue->u.rangeOfBitRates);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability_availableBitRates */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VCCapability_availableBitRates (OOCTXT* pctxt, H245VCCapability_availableBitRates* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode type */
+
+ stat = asn1PE_H245VCCapability_availableBitRates_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Q2931Address_address_nsapAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245Q2931Address_address_nsapAddress (OOCTXT* pctxt, H245Q2931Address_address_nsapAddress* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Q2931Address_address */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245Q2931Address_address (OOCTXT* pctxt, H245Q2931Address_address* pvalue)
+{
+ static Asn1SizeCnst internationalNumber_lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* internationalNumber */
+ case 1:
+ addSizeConstraint (pctxt, &internationalNumber_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->u.internationalNumber, NUM_CANSET, 4, 4, 4);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* nsapAddress */
+ case 2:
+ stat = asn1PE_H245Q2931Address_address_nsapAddress (pctxt, pvalue->u.nsapAddress);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Q2931Address_subaddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245Q2931Address_subaddress (OOCTXT* pctxt, H245Q2931Address_subaddress* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Q2931Address */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245Q2931Address (OOCTXT* pctxt, H245Q2931Address* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.subaddressPresent);
+
+ /* encode address */
+
+ stat = asn1PE_H245Q2931Address_address (pctxt, &pvalue->address);
+ if (stat != ASN_OK) return stat;
+
+ /* encode subaddress */
+
+ if (pvalue->m.subaddressPresent) {
+ stat = asn1PE_H245Q2931Address_subaddress (pctxt, &pvalue->subaddress);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability_aal1ViaGateway_gatewayAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VCCapability_aal1ViaGateway_gatewayAddress (OOCTXT* pctxt, H245VCCapability_aal1ViaGateway_gatewayAddress* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245Q2931Address (pctxt, ((H245Q2931Address*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability_aal1ViaGateway */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VCCapability_aal1ViaGateway (OOCTXT* pctxt, H245VCCapability_aal1ViaGateway* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode gatewayAddress */
+
+ stat = asn1PE_H245VCCapability_aal1ViaGateway_gatewayAddress (pctxt, &pvalue->gatewayAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nullClockRecovery */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->nullClockRecovery);
+ if (stat != ASN_OK) return stat;
+
+ /* encode srtsClockRecovery */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->srtsClockRecovery);
+ if (stat != ASN_OK) return stat;
+
+ /* encode adaptiveClockRecovery */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->adaptiveClockRecovery);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nullErrorCorrection */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->nullErrorCorrection);
+ if (stat != ASN_OK) return stat;
+
+ /* encode longInterleaver */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->longInterleaver);
+ if (stat != ASN_OK) return stat;
+
+ /* encode shortInterleaver */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->shortInterleaver);
+ if (stat != ASN_OK) return stat;
+
+ /* encode errorCorrectionOnly */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->errorCorrectionOnly);
+ if (stat != ASN_OK) return stat;
+
+ /* encode structuredDataTransfer */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->structuredDataTransfer);
+ if (stat != ASN_OK) return stat;
+
+ /* encode partiallyFilledCells */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->partiallyFilledCells);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VCCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VCCapability (OOCTXT* pctxt, H245VCCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.aal1ViaGatewayPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.aal1Present);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.aal5Present);
+
+ /* encode aal1 */
+
+ if (pvalue->m.aal1Present) {
+ stat = asn1PE_H245VCCapability_aal1 (pctxt, &pvalue->aal1);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode aal5 */
+
+ if (pvalue->m.aal5Present) {
+ stat = asn1PE_H245VCCapability_aal5 (pctxt, &pvalue->aal5);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode transportStream */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->transportStream);
+ if (stat != ASN_OK) return stat;
+
+ /* encode programStream */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->programStream);
+ if (stat != ASN_OK) return stat;
+
+ /* encode availableBitRates */
+
+ stat = asn1PE_H245VCCapability_availableBitRates (pctxt, &pvalue->availableBitRates);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.aal1ViaGatewayPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.aal1ViaGatewayPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245VCCapability_aal1ViaGateway (&lctxt, &pvalue->aal1ViaGateway);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SetOfH245VCCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245_SetOfH245VCCapability (OOCTXT* pctxt, H245_SetOfH245VCCapability* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H245VCCapability (pctxt, ((H245VCCapability*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H222Capability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H222Capability (OOCTXT* pctxt, H245H222Capability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode numberOfVCs */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->numberOfVCs, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode vcCapability */
+
+ stat = asn1PE_H245_SetOfH245VCCapability (pctxt, &pvalue->vcCapability);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223Capability_h223MultiplexTableCapability_enhanced */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223Capability_h223MultiplexTableCapability_enhanced (OOCTXT* pctxt, H245H223Capability_h223MultiplexTableCapability_enhanced* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode maximumNestingDepth */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maximumNestingDepth, 1U, 15U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maximumElementListSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maximumElementListSize, 2U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maximumSubElementListSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maximumSubElementListSize, 2U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223Capability_h223MultiplexTableCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223Capability_h223MultiplexTableCapability (OOCTXT* pctxt, H245H223Capability_h223MultiplexTableCapability* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* basic */
+ case 1:
+ /* NULL */
+ break;
+
+ /* enhanced */
+ case 2:
+ stat = asn1PE_H245H223Capability_h223MultiplexTableCapability_enhanced (pctxt, pvalue->u.enhanced);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223Capability_mobileOperationTransmitCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223Capability_mobileOperationTransmitCapability (OOCTXT* pctxt, H245H223Capability_mobileOperationTransmitCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode modeChangeCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->modeChangeCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h223AnnexA */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->h223AnnexA);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h223AnnexADoubleFlag */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->h223AnnexADoubleFlag);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h223AnnexB */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->h223AnnexB);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h223AnnexBwithHeader */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->h223AnnexBwithHeader);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AnnexCCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223AnnexCCapability (OOCTXT* pctxt, H245H223AnnexCCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.rsCodeCapabilityPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode videoWithAL1M */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoWithAL1M);
+ if (stat != ASN_OK) return stat;
+
+ /* encode videoWithAL2M */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoWithAL2M);
+ if (stat != ASN_OK) return stat;
+
+ /* encode videoWithAL3M */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoWithAL3M);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioWithAL1M */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioWithAL1M);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioWithAL2M */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioWithAL2M);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioWithAL3M */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioWithAL3M);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dataWithAL1M */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dataWithAL1M);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dataWithAL2M */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dataWithAL2M);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dataWithAL3M */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dataWithAL3M);
+ if (stat != ASN_OK) return stat;
+
+ /* encode alpduInterleaving */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alpduInterleaving);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maximumAL1MPDUSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maximumAL1MPDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maximumAL2MSDUSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maximumAL2MSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maximumAL3MSDUSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maximumAL3MSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.rsCodeCapabilityPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.rsCodeCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->rsCodeCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223Capability_mobileMultilinkFrameCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223Capability_mobileMultilinkFrameCapability (OOCTXT* pctxt, H245H223Capability_mobileMultilinkFrameCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode maximumSampleSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maximumSampleSize, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maximumPayloadLength */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maximumPayloadLength, 1U, 65025U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223Capability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223Capability (OOCTXT* pctxt, H245H223Capability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.maxMUXPDUSizeCapabilityPresent ||
+ pvalue->m.nsrpSupportPresent ||
+ pvalue->m.mobileOperationTransmitCapabilityPresent ||
+ pvalue->m.h223AnnexCCapabilityPresent ||
+ pvalue->m.bitRatePresent ||
+ pvalue->m.mobileMultilinkFrameCapabilityPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode transportWithI_frames */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->transportWithI_frames);
+ if (stat != ASN_OK) return stat;
+
+ /* encode videoWithAL1 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoWithAL1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode videoWithAL2 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoWithAL2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode videoWithAL3 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoWithAL3);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioWithAL1 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioWithAL1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioWithAL2 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioWithAL2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioWithAL3 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioWithAL3);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dataWithAL1 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dataWithAL1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dataWithAL2 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dataWithAL2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dataWithAL3 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dataWithAL3);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maximumAl2SDUSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maximumAl2SDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maximumAl3SDUSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maximumAl3SDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maximumDelayJitter */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maximumDelayJitter, 0U, 1023U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h223MultiplexTableCapability */
+
+ stat = asn1PE_H245H223Capability_h223MultiplexTableCapability (pctxt, &pvalue->h223MultiplexTableCapability);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.maxMUXPDUSizeCapabilityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nsrpSupportPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mobileOperationTransmitCapabilityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h223AnnexCCapabilityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.bitRatePresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mobileMultilinkFrameCapabilityPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.maxMUXPDUSizeCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maxMUXPDUSizeCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.nsrpSupportPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->nsrpSupport);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.mobileOperationTransmitCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245H223Capability_mobileOperationTransmitCapability (&lctxt, &pvalue->mobileOperationTransmitCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.h223AnnexCCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245H223AnnexCCapability (&lctxt, &pvalue->h223AnnexCCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.bitRatePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->bitRate, 1U, 19200U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.mobileMultilinkFrameCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245H223Capability_mobileMultilinkFrameCapability (&lctxt, &pvalue->mobileMultilinkFrameCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V75Capability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245V75Capability (OOCTXT* pctxt, H245V75Capability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode audioHeader */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioHeader);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76Capability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245V76Capability (OOCTXT* pctxt, H245V76Capability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode suspendResumeCapabilitywAddress */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->suspendResumeCapabilitywAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode suspendResumeCapabilitywoAddress */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->suspendResumeCapabilitywoAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rejCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->rejCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode sREJCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->sREJCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode mREJCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->mREJCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode crc8bitCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->crc8bitCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode crc16bitCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->crc16bitCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode crc32bitCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->crc32bitCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode uihCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->uihCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode numOfDLCS */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->numOfDLCS, 2U, 8191U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode twoOctetAddressFieldCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->twoOctetAddressFieldCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode loopBackTestCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->loopBackTestCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode n401Capability */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->n401Capability, 1U, 4095U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maxWindowSizeCapability */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maxWindowSizeCapability, 1U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode v75Capability */
+
+ stat = asn1PE_H245V75Capability (pctxt, &pvalue->v75Capability);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T84Profile_t84Restricted */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245T84Profile_t84Restricted (OOCTXT* pctxt, H245T84Profile_t84Restricted* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode qcif */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->qcif);
+ if (stat != ASN_OK) return stat;
+
+ /* encode cif */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->cif);
+ if (stat != ASN_OK) return stat;
+
+ /* encode ccir601Seq */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->ccir601Seq);
+ if (stat != ASN_OK) return stat;
+
+ /* encode ccir601Prog */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->ccir601Prog);
+ if (stat != ASN_OK) return stat;
+
+ /* encode hdtvSeq */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->hdtvSeq);
+ if (stat != ASN_OK) return stat;
+
+ /* encode hdtvProg */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->hdtvProg);
+ if (stat != ASN_OK) return stat;
+
+ /* encode g3FacsMH200x100 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->g3FacsMH200x100);
+ if (stat != ASN_OK) return stat;
+
+ /* encode g3FacsMH200x200 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->g3FacsMH200x200);
+ if (stat != ASN_OK) return stat;
+
+ /* encode g4FacsMMR200x100 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->g4FacsMMR200x100);
+ if (stat != ASN_OK) return stat;
+
+ /* encode g4FacsMMR200x200 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->g4FacsMMR200x200);
+ if (stat != ASN_OK) return stat;
+
+ /* encode jbig200x200Seq */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->jbig200x200Seq);
+ if (stat != ASN_OK) return stat;
+
+ /* encode jbig200x200Prog */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->jbig200x200Prog);
+ if (stat != ASN_OK) return stat;
+
+ /* encode jbig300x300Seq */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->jbig300x300Seq);
+ if (stat != ASN_OK) return stat;
+
+ /* encode jbig300x300Prog */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->jbig300x300Prog);
+ if (stat != ASN_OK) return stat;
+
+ /* encode digPhotoLow */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->digPhotoLow);
+ if (stat != ASN_OK) return stat;
+
+ /* encode digPhotoMedSeq */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->digPhotoMedSeq);
+ if (stat != ASN_OK) return stat;
+
+ /* encode digPhotoMedProg */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->digPhotoMedProg);
+ if (stat != ASN_OK) return stat;
+
+ /* encode digPhotoHighSeq */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->digPhotoHighSeq);
+ if (stat != ASN_OK) return stat;
+
+ /* encode digPhotoHighProg */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->digPhotoHighProg);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* T84Profile */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245T84Profile (OOCTXT* pctxt, H245T84Profile* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* t84Unrestricted */
+ case 1:
+ /* NULL */
+ break;
+
+ /* t84Restricted */
+ case 2:
+ stat = asn1PE_H245T84Profile_t84Restricted (pctxt, pvalue->u.t84Restricted);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability_application_t84 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DataApplicationCapability_application_t84 (OOCTXT* pctxt, H245DataApplicationCapability_application_t84* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode t84Protocol */
+
+ stat = asn1PE_H245DataProtocolCapability (pctxt, &pvalue->t84Protocol);
+ if (stat != ASN_OK) return stat;
+
+ /* encode t84Profile */
+
+ stat = asn1PE_H245T84Profile (pctxt, &pvalue->t84Profile);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability_application_nlpid */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DataApplicationCapability_application_nlpid (OOCTXT* pctxt, H245DataApplicationCapability_application_nlpid* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode nlpidProtocol */
+
+ stat = asn1PE_H245DataProtocolCapability (pctxt, &pvalue->nlpidProtocol);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nlpidData */
+
+ stat = encodeOctetString (pctxt, pvalue->nlpidData.numocts, pvalue->nlpidData.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability_application_t38fax */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DataApplicationCapability_application_t38fax (OOCTXT* pctxt, H245DataApplicationCapability_application_t38fax* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode t38FaxProtocol */
+
+ stat = asn1PE_H245DataProtocolCapability (pctxt, &pvalue->t38FaxProtocol);
+ if (stat != ASN_OK) return stat;
+
+ /* encode t38FaxProfile */
+
+ stat = asn1PE_H245T38FaxProfile (pctxt, &pvalue->t38FaxProfile);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapabilityIdentifier_uuid */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CapabilityIdentifier_uuid (OOCTXT* pctxt, H245CapabilityIdentifier_uuid* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapabilityIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CapabilityIdentifier (OOCTXT* pctxt, H245CapabilityIdentifier* pvalue)
+{
+ static Asn1SizeCnst domainBased_lsize1 = { 0, 1, 64, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* standard */
+ case 1:
+ stat = encodeObjectIdentifier (pctxt, pvalue->u.standard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h221NonStandard */
+ case 2:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.h221NonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* uuid */
+ case 3:
+ stat = asn1PE_H245CapabilityIdentifier_uuid (pctxt, pvalue->u.uuid);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* domainBased */
+ case 4:
+ addSizeConstraint (pctxt, &domainBased_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->u.domainBased, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ParameterIdentifier_uuid */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ParameterIdentifier_uuid (OOCTXT* pctxt, H245ParameterIdentifier_uuid* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ParameterIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ParameterIdentifier (OOCTXT* pctxt, H245ParameterIdentifier* pvalue)
+{
+ static Asn1SizeCnst domainBased_lsize1 = { 0, 1, 64, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* standard */
+ case 1:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.standard, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* h221NonStandard */
+ case 2:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.h221NonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* uuid */
+ case 3:
+ stat = asn1PE_H245ParameterIdentifier_uuid (pctxt, pvalue->u.uuid);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* domainBased */
+ case 4:
+ addSizeConstraint (pctxt, &domainBased_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->u.domainBased, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ParameterValue */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ParameterValue (OOCTXT* pctxt, H245ParameterValue* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 8);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* logical */
+ case 1:
+ /* NULL */
+ break;
+
+ /* booleanArray */
+ case 2:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.booleanArray, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* unsignedMin */
+ case 3:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.unsignedMin, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* unsignedMax */
+ case 4:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.unsignedMax, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* unsigned32Min */
+ case 5:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.unsigned32Min, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* unsigned32Max */
+ case 6:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.unsigned32Max, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* octetString */
+ case 7:
+ stat = encodeOctetString (pctxt, pvalue->u.octetString->numocts, pvalue->u.octetString->data);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* genericParameter */
+ case 8:
+ stat = asn1PE_H245_SeqOfH245GenericParameter (pctxt, (H245_SeqOfH245GenericParameter*)pvalue->u.genericParameter);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 9);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245ParameterIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245_SeqOfH245ParameterIdentifier (OOCTXT* pctxt, H245_SeqOfH245ParameterIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H245ParameterIdentifier (pctxt, ((H245ParameterIdentifier*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GenericParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245GenericParameter (OOCTXT* pctxt, H245GenericParameter* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.supersedesPresent);
+
+ /* encode parameterIdentifier */
+
+ stat = asn1PE_H245ParameterIdentifier (pctxt, &pvalue->parameterIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode parameterValue */
+
+ stat = asn1PE_H245ParameterValue (pctxt, &pvalue->parameterValue);
+ if (stat != ASN_OK) return stat;
+
+ /* encode supersedes */
+
+ if (pvalue->m.supersedesPresent) {
+ stat = asn1PE_H245_SeqOfH245ParameterIdentifier (pctxt, &pvalue->supersedes);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245GenericParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245_SeqOfH245GenericParameter (OOCTXT* pctxt, H245_SeqOfH245GenericParameter* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H245GenericParameter (pctxt, ((H245GenericParameter*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GenericCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245GenericCapability (OOCTXT* pctxt, H245GenericCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.maxBitRatePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.collapsingPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonCollapsingPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonCollapsingRawPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.transportPresent);
+
+ /* encode capabilityIdentifier */
+
+ stat = asn1PE_H245CapabilityIdentifier (pctxt, &pvalue->capabilityIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maxBitRate */
+
+ if (pvalue->m.maxBitRatePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->maxBitRate, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode collapsing */
+
+ if (pvalue->m.collapsingPresent) {
+ stat = asn1PE_H245_SeqOfH245GenericParameter (pctxt, &pvalue->collapsing);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode nonCollapsing */
+
+ if (pvalue->m.nonCollapsingPresent) {
+ stat = asn1PE_H245_SeqOfH245GenericParameter (pctxt, &pvalue->nonCollapsing);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode nonCollapsingRaw */
+
+ if (pvalue->m.nonCollapsingRawPresent) {
+ stat = encodeOctetString (pctxt, pvalue->nonCollapsingRaw.numocts, pvalue->nonCollapsingRaw.data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode transport */
+
+ if (pvalue->m.transportPresent) {
+ stat = asn1PE_H245DataProtocolCapability (pctxt, &pvalue->transport);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability_application */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DataApplicationCapability_application (OOCTXT* pctxt, H245DataApplicationCapability_application* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 10);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 9);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* t120 */
+ case 2:
+ stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.t120);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* dsm_cc */
+ case 3:
+ stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.dsm_cc);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* userData */
+ case 4:
+ stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.userData);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* t84 */
+ case 5:
+ stat = asn1PE_H245DataApplicationCapability_application_t84 (pctxt, pvalue->u.t84);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* t434 */
+ case 6:
+ stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.t434);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h224 */
+ case 7:
+ stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.h224);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* nlpid */
+ case 8:
+ stat = asn1PE_H245DataApplicationCapability_application_nlpid (pctxt, pvalue->u.nlpid);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* dsvdControl */
+ case 9:
+ /* NULL */
+ break;
+
+ /* h222DataPartitioning */
+ case 10:
+ stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.h222DataPartitioning);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 11);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* t30fax */
+ case 11:
+ stat = asn1PE_H245DataProtocolCapability (&lctxt, pvalue->u.t30fax);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* t140 */
+ case 12:
+ stat = asn1PE_H245DataProtocolCapability (&lctxt, pvalue->u.t140);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* t38fax */
+ case 13:
+ stat = asn1PE_H245DataApplicationCapability_application_t38fax (&lctxt, pvalue->u.t38fax);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* genericDataCapability */
+ case 14:
+ stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericDataCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataApplicationCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DataApplicationCapability (OOCTXT* pctxt, H245DataApplicationCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode application */
+
+ stat = asn1PE_H245DataApplicationCapability_application (pctxt, &pvalue->application);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maxBitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maxBitRate, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245DataApplicationCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245_SeqOfH245DataApplicationCapability (OOCTXT* pctxt, H245_SeqOfH245DataApplicationCapability* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H245DataApplicationCapability (pctxt, ((H245DataApplicationCapability*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MediaDistributionCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MediaDistributionCapability (OOCTXT* pctxt, H245MediaDistributionCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.centralizedDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.distributedDataPresent);
+
+ /* encode centralizedControl */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->centralizedControl);
+ if (stat != ASN_OK) return stat;
+
+ /* encode distributedControl */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->distributedControl);
+ if (stat != ASN_OK) return stat;
+
+ /* encode centralizedAudio */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->centralizedAudio);
+ if (stat != ASN_OK) return stat;
+
+ /* encode distributedAudio */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->distributedAudio);
+ if (stat != ASN_OK) return stat;
+
+ /* encode centralizedVideo */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->centralizedVideo);
+ if (stat != ASN_OK) return stat;
+
+ /* encode distributedVideo */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->distributedVideo);
+ if (stat != ASN_OK) return stat;
+
+ /* encode centralizedData */
+
+ if (pvalue->m.centralizedDataPresent) {
+ stat = asn1PE_H245_SeqOfH245DataApplicationCapability (pctxt, &pvalue->centralizedData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode distributedData */
+
+ if (pvalue->m.distributedDataPresent) {
+ stat = asn1PE_H245_SeqOfH245DataApplicationCapability (pctxt, &pvalue->distributedData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245MediaDistributionCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245_SeqOfH245MediaDistributionCapability (OOCTXT* pctxt, H245_SeqOfH245MediaDistributionCapability* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H245MediaDistributionCapability (pctxt, ((H245MediaDistributionCapability*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultipointCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultipointCapability (OOCTXT* pctxt, H245MultipointCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode multicastCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->multicastCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multiUniCastConference */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->multiUniCastConference);
+ if (stat != ASN_OK) return stat;
+
+ /* encode mediaDistributionCapability */
+
+ stat = asn1PE_H245_SeqOfH245MediaDistributionCapability (pctxt, &pvalue->mediaDistributionCapability);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250Capability_mcCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H2250Capability_mcCapability (OOCTXT* pctxt, H245H2250Capability_mcCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode centralizedConferenceMC */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->centralizedConferenceMC);
+ if (stat != ASN_OK) return stat;
+
+ /* encode decentralizedConferenceMC */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->decentralizedConferenceMC);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPPayloadType_payloadDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RTPPayloadType_payloadDescriptor (OOCTXT* pctxt, H245RTPPayloadType_payloadDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandardIdentifier */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandardIdentifier);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* rfc_number */
+ case 2:
+ if ( (pvalue->u.rfc_number >= 1 && pvalue->u.rfc_number <= 32768) ) {
+ extbit = 0;
+ }
+ else extbit = 1;
+
+ /* extension bit */
+
+ encodeBit (pctxt, extbit);
+
+ if (extbit) {
+ stat = encodeUnconsInteger (pctxt, pvalue->u.rfc_number);
+ if (stat != ASN_OK) return stat;
+ }
+ else {
+ stat = encodeConsInteger (pctxt, pvalue->u.rfc_number, 1, 32768);
+ if (stat != ASN_OK) return stat;
+ }
+ break;
+
+ /* oid */
+ case 3:
+ stat = encodeObjectIdentifier (pctxt, pvalue->u.oid);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPPayloadType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RTPPayloadType (OOCTXT* pctxt, H245RTPPayloadType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.payloadTypePresent);
+
+ /* encode payloadDescriptor */
+
+ stat = asn1PE_H245RTPPayloadType_payloadDescriptor (pctxt, &pvalue->payloadDescriptor);
+ if (stat != ASN_OK) return stat;
+
+ /* encode payloadType */
+
+ if (pvalue->m.payloadTypePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->payloadType, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MediaPacketizationCapability_rtpPayloadType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MediaPacketizationCapability_rtpPayloadType (OOCTXT* pctxt, H245MediaPacketizationCapability_rtpPayloadType* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245RTPPayloadType (pctxt, ((H245RTPPayloadType*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MediaPacketizationCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MediaPacketizationCapability (OOCTXT* pctxt, H245MediaPacketizationCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.rtpPayloadTypePresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode h261aVideoPacketization */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->h261aVideoPacketization);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.rtpPayloadTypePresent);
+ /* encode extension elements */
+
+ if (pvalue->m.rtpPayloadTypePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245MediaPacketizationCapability_rtpPayloadType (&lctxt, &pvalue->rtpPayloadType);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* QOSMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245QOSMode (OOCTXT* pctxt, H245QOSMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* guaranteedQOS */
+ case 1:
+ /* NULL */
+ break;
+
+ /* controlledLoad */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RSVPParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RSVPParameters (OOCTXT* pctxt, H245RSVPParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.qosModePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokenRatePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.bucketSizePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.peakRatePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.minPolicedPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.maxPktSizePresent);
+
+ /* encode qosMode */
+
+ if (pvalue->m.qosModePresent) {
+ stat = asn1PE_H245QOSMode (pctxt, &pvalue->qosMode);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode tokenRate */
+
+ if (pvalue->m.tokenRatePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->tokenRate, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode bucketSize */
+
+ if (pvalue->m.bucketSizePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->bucketSize, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode peakRate */
+
+ if (pvalue->m.peakRatePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->peakRate, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode minPoliced */
+
+ if (pvalue->m.minPolicedPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->minPoliced, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode maxPktSize */
+
+ if (pvalue->m.maxPktSizePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->maxPktSize, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ATMParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ATMParameters (OOCTXT* pctxt, H245ATMParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode maxNTUSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maxNTUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode atmUBR */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->atmUBR);
+ if (stat != ASN_OK) return stat;
+
+ /* encode atmrtVBR */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->atmrtVBR);
+ if (stat != ASN_OK) return stat;
+
+ /* encode atmnrtVBR */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->atmnrtVBR);
+ if (stat != ASN_OK) return stat;
+
+ /* encode atmABR */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->atmABR);
+ if (stat != ASN_OK) return stat;
+
+ /* encode atmCBR */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->atmCBR);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* QOSCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245QOSCapability (OOCTXT* pctxt, H245QOSCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.rsvpParametersPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.atmParametersPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H245NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode rsvpParameters */
+
+ if (pvalue->m.rsvpParametersPresent) {
+ stat = asn1PE_H245RSVPParameters (pctxt, &pvalue->rsvpParameters);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode atmParameters */
+
+ if (pvalue->m.atmParametersPresent) {
+ stat = asn1PE_H245ATMParameters (pctxt, &pvalue->atmParameters);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportCapability_qOSCapabilities */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TransportCapability_qOSCapabilities (OOCTXT* pctxt, H245TransportCapability_qOSCapabilities* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245QOSCapability (pctxt, ((H245QOSCapability*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MediaTransportType_atm_AAL5_compressed */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MediaTransportType_atm_AAL5_compressed (OOCTXT* pctxt, H245MediaTransportType_atm_AAL5_compressed* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode variable_delta */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->variable_delta);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MediaTransportType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MediaTransportType (OOCTXT* pctxt, H245MediaTransportType* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* ip_UDP */
+ case 1:
+ /* NULL */
+ break;
+
+ /* ip_TCP */
+ case 2:
+ /* NULL */
+ break;
+
+ /* atm_AAL5_UNIDIR */
+ case 3:
+ /* NULL */
+ break;
+
+ /* atm_AAL5_BIDIR */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* atm_AAL5_compressed */
+ case 5:
+ stat = asn1PE_H245MediaTransportType_atm_AAL5_compressed (&lctxt, pvalue->u.atm_AAL5_compressed);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MediaChannelCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MediaChannelCapability (OOCTXT* pctxt, H245MediaChannelCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaTransportPresent);
+
+ /* encode mediaTransport */
+
+ if (pvalue->m.mediaTransportPresent) {
+ stat = asn1PE_H245MediaTransportType (pctxt, &pvalue->mediaTransport);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportCapability_mediaChannelCapabilities */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TransportCapability_mediaChannelCapabilities (OOCTXT* pctxt, H245TransportCapability_mediaChannelCapabilities* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245MediaChannelCapability (pctxt, ((H245MediaChannelCapability*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TransportCapability (OOCTXT* pctxt, H245TransportCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.qOSCapabilitiesPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaChannelCapabilitiesPresent);
+
+ /* encode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ stat = asn1PE_H245NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode qOSCapabilities */
+
+ if (pvalue->m.qOSCapabilitiesPresent) {
+ stat = asn1PE_H245TransportCapability_qOSCapabilities (pctxt, &pvalue->qOSCapabilities);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode mediaChannelCapabilities */
+
+ if (pvalue->m.mediaChannelCapabilitiesPresent) {
+ stat = asn1PE_H245TransportCapability_mediaChannelCapabilities (pctxt, &pvalue->mediaChannelCapabilities);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyFrameMapping_frameSequence */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RTPH263VideoRedundancyFrameMapping_frameSequence (OOCTXT* pctxt, H245RTPH263VideoRedundancyFrameMapping_frameSequence* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeConsUnsigned (pctxt, pvalue->elem[xx1], 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyFrameMapping */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RTPH263VideoRedundancyFrameMapping (OOCTXT* pctxt, H245RTPH263VideoRedundancyFrameMapping* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode threadNumber */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->threadNumber, 0U, 15U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode frameSequence */
+
+ stat = asn1PE_H245RTPH263VideoRedundancyFrameMapping_frameSequence (pctxt, &pvalue->frameSequence);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyEncoding_frameToThreadMapping_cust */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245RTPH263VideoRedundancyFrameMapping (pctxt, ((H245RTPH263VideoRedundancyFrameMapping*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyEncoding_frameToThreadMapping */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_frameToThreadMapping* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* roundrobin */
+ case 1:
+ /* NULL */
+ break;
+
+ /* custom */
+ case 2:
+ stat = asn1PE_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom (pctxt, pvalue->u.custom);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyEncoding_containedThreads */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RTPH263VideoRedundancyEncoding_containedThreads (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_containedThreads* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeConsUnsigned (pctxt, pvalue->elem[xx1], 0U, 15U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RTPH263VideoRedundancyEncoding */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RTPH263VideoRedundancyEncoding (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.containedThreadsPresent);
+
+ /* encode numberOfThreads */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->numberOfThreads, 1U, 16U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode framesBetweenSyncPoints */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->framesBetweenSyncPoints, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode frameToThreadMapping */
+
+ stat = asn1PE_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping (pctxt, &pvalue->frameToThreadMapping);
+ if (stat != ASN_OK) return stat;
+
+ /* encode containedThreads */
+
+ if (pvalue->m.containedThreadsPresent) {
+ stat = asn1PE_H245RTPH263VideoRedundancyEncoding_containedThreads (pctxt, &pvalue->containedThreads);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingMethod */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RedundancyEncodingMethod (OOCTXT* pctxt, H245RedundancyEncodingMethod* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* rtpAudioRedundancyEncoding */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* rtpH263VideoRedundancyEncoding */
+ case 3:
+ stat = asn1PE_H245RTPH263VideoRedundancyEncoding (&lctxt, pvalue->u.rtpH263VideoRedundancyEncoding);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapabilityTableEntryNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CapabilityTableEntryNumber (OOCTXT* pctxt, H245CapabilityTableEntryNumber value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConsUnsigned (pctxt, value, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingCapability_secondaryEncoding */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RedundancyEncodingCapability_secondaryEncoding (OOCTXT* pctxt, H245RedundancyEncodingCapability_secondaryEncoding* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H245CapabilityTableEntryNumber (pctxt, pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RedundancyEncodingCapability (OOCTXT* pctxt, H245RedundancyEncodingCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.secondaryEncodingPresent);
+
+ /* encode redundancyEncodingMethod */
+
+ stat = asn1PE_H245RedundancyEncodingMethod (pctxt, &pvalue->redundancyEncodingMethod);
+ if (stat != ASN_OK) return stat;
+
+ /* encode primaryEncoding */
+
+ stat = asn1PE_H245CapabilityTableEntryNumber (pctxt, pvalue->primaryEncoding);
+ if (stat != ASN_OK) return stat;
+
+ /* encode secondaryEncoding */
+
+ if (pvalue->m.secondaryEncodingPresent) {
+ stat = asn1PE_H245RedundancyEncodingCapability_secondaryEncoding (pctxt, &pvalue->secondaryEncoding);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250Capability_redundancyEncodingCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H2250Capability_redundancyEncodingCapability (OOCTXT* pctxt, H245H2250Capability_redundancyEncodingCapability* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245RedundancyEncodingCapability (pctxt, ((H245RedundancyEncodingCapability*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250Capability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H2250Capability (OOCTXT* pctxt, H245H2250Capability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.transportCapabilityPresent ||
+ pvalue->m.redundancyEncodingCapabilityPresent ||
+ pvalue->m.logicalChannelSwitchingCapabilityPresent ||
+ pvalue->m.t120DynamicPortCapabilityPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode maximumAudioDelayJitter */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maximumAudioDelayJitter, 0U, 1023U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode receiveMultipointCapability */
+
+ stat = asn1PE_H245MultipointCapability (pctxt, &pvalue->receiveMultipointCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode transmitMultipointCapability */
+
+ stat = asn1PE_H245MultipointCapability (pctxt, &pvalue->transmitMultipointCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode receiveAndTransmitMultipointCapability */
+
+ stat = asn1PE_H245MultipointCapability (pctxt, &pvalue->receiveAndTransmitMultipointCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode mcCapability */
+
+ stat = asn1PE_H245H2250Capability_mcCapability (pctxt, &pvalue->mcCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rtcpVideoControlCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->rtcpVideoControlCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode mediaPacketizationCapability */
+
+ stat = asn1PE_H245MediaPacketizationCapability (pctxt, &pvalue->mediaPacketizationCapability);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.transportCapabilityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.redundancyEncodingCapabilityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.logicalChannelSwitchingCapabilityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.t120DynamicPortCapabilityPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.transportCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245TransportCapability (&lctxt, &pvalue->transportCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.redundancyEncodingCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245H2250Capability_redundancyEncodingCapability (&lctxt, &pvalue->redundancyEncodingCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.logicalChannelSwitchingCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->logicalChannelSwitchingCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.t120DynamicPortCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->t120DynamicPortCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexCapability (OOCTXT* pctxt, H245MultiplexCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h222Capability */
+ case 2:
+ stat = asn1PE_H245H222Capability (pctxt, pvalue->u.h222Capability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h223Capability */
+ case 3:
+ stat = asn1PE_H245H223Capability (pctxt, pvalue->u.h223Capability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* v76Capability */
+ case 4:
+ stat = asn1PE_H245V76Capability (pctxt, pvalue->u.v76Capability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* h2250Capability */
+ case 5:
+ stat = asn1PE_H245H2250Capability (&lctxt, pvalue->u.h2250Capability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* genericMultiplexCapability */
+ case 6:
+ stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericMultiplexCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H261VideoCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H261VideoCapability (OOCTXT* pctxt, H245H261VideoCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.videoBadMBsCapPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.qcifMPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cifMPIPresent);
+
+ /* encode qcifMPI */
+
+ if (pvalue->m.qcifMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->qcifMPI, 1U, 4U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode cifMPI */
+
+ if (pvalue->m.cifMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->cifMPI, 1U, 4U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode temporalSpatialTradeOffCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->temporalSpatialTradeOffCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maxBitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maxBitRate, 1U, 19200U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode stillImageTransmission */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->stillImageTransmission);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBadMBsCapPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.videoBadMBsCapPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->videoBadMBsCap);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H262VideoCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H262VideoCapability (OOCTXT* pctxt, H245H262VideoCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.videoBadMBsCapPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBitRatePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.vbvBufferSizePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.samplesPerLinePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.linesPerFramePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.framesPerSecondPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.luminanceSampleRatePresent);
+
+ /* encode profileAndLevel_SPatML */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_SPatML);
+ if (stat != ASN_OK) return stat;
+
+ /* encode profileAndLevel_MPatLL */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_MPatLL);
+ if (stat != ASN_OK) return stat;
+
+ /* encode profileAndLevel_MPatML */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_MPatML);
+ if (stat != ASN_OK) return stat;
+
+ /* encode profileAndLevel_MPatH_14 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_MPatH_14);
+ if (stat != ASN_OK) return stat;
+
+ /* encode profileAndLevel_MPatHL */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_MPatHL);
+ if (stat != ASN_OK) return stat;
+
+ /* encode profileAndLevel_SNRatLL */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_SNRatLL);
+ if (stat != ASN_OK) return stat;
+
+ /* encode profileAndLevel_SNRatML */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_SNRatML);
+ if (stat != ASN_OK) return stat;
+
+ /* encode profileAndLevel_SpatialatH_14 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_SpatialatH_14);
+ if (stat != ASN_OK) return stat;
+
+ /* encode profileAndLevel_HPatML */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_HPatML);
+ if (stat != ASN_OK) return stat;
+
+ /* encode profileAndLevel_HPatH_14 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_HPatH_14);
+ if (stat != ASN_OK) return stat;
+
+ /* encode profileAndLevel_HPatHL */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_HPatHL);
+ if (stat != ASN_OK) return stat;
+
+ /* encode videoBitRate */
+
+ if (pvalue->m.videoBitRatePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->videoBitRate, 0U, 1073741823U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode vbvBufferSize */
+
+ if (pvalue->m.vbvBufferSizePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->vbvBufferSize, 0U, 262143U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode samplesPerLine */
+
+ if (pvalue->m.samplesPerLinePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->samplesPerLine, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode linesPerFrame */
+
+ if (pvalue->m.linesPerFramePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->linesPerFrame, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode framesPerSecond */
+
+ if (pvalue->m.framesPerSecondPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->framesPerSecond, 0U, 15U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode luminanceSampleRate */
+
+ if (pvalue->m.luminanceSampleRatePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->luminanceSampleRate, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBadMBsCapPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.videoBadMBsCapPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->videoBadMBsCap);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransparencyParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TransparencyParameters (OOCTXT* pctxt, H245TransparencyParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode presentationOrder */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->presentationOrder, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode offset_x */
+
+ stat = encodeConsInteger (pctxt, pvalue->offset_x, -262144, 262143);
+ if (stat != ASN_OK) return stat;
+
+ /* encode offset_y */
+
+ stat = encodeConsInteger (pctxt, pvalue->offset_y, -262144, 262143);
+ if (stat != ASN_OK) return stat;
+
+ /* encode scale_x */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->scale_x, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode scale_y */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->scale_y, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RefPictureSelection_additionalPictureMemory */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RefPictureSelection_additionalPictureMemory (OOCTXT* pctxt, H245RefPictureSelection_additionalPictureMemory* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sqcifAdditionalPictureMemoryPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.qcifAdditionalPictureMemoryPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cifAdditionalPictureMemoryPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif4AdditionalPictureMemoryPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif16AdditionalPictureMemoryPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.bigCpfAdditionalPictureMemoryPresent);
+
+ /* encode sqcifAdditionalPictureMemory */
+
+ if (pvalue->m.sqcifAdditionalPictureMemoryPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->sqcifAdditionalPictureMemory, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode qcifAdditionalPictureMemory */
+
+ if (pvalue->m.qcifAdditionalPictureMemoryPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->qcifAdditionalPictureMemory, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode cifAdditionalPictureMemory */
+
+ if (pvalue->m.cifAdditionalPictureMemoryPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->cifAdditionalPictureMemory, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode cif4AdditionalPictureMemory */
+
+ if (pvalue->m.cif4AdditionalPictureMemoryPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->cif4AdditionalPictureMemory, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode cif16AdditionalPictureMemory */
+
+ if (pvalue->m.cif16AdditionalPictureMemoryPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->cif16AdditionalPictureMemory, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode bigCpfAdditionalPictureMemory */
+
+ if (pvalue->m.bigCpfAdditionalPictureMemoryPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->bigCpfAdditionalPictureMemory, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RefPictureSelection_videoBackChannelSend */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RefPictureSelection_videoBackChannelSend (OOCTXT* pctxt, H245RefPictureSelection_videoBackChannelSend* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 5);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* none */
+ case 1:
+ /* NULL */
+ break;
+
+ /* ackMessageOnly */
+ case 2:
+ /* NULL */
+ break;
+
+ /* nackMessageOnly */
+ case 3:
+ /* NULL */
+ break;
+
+ /* ackOrNackMessageOnly */
+ case 4:
+ /* NULL */
+ break;
+
+ /* ackAndNackMessage */
+ case 5:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RefPictureSelection_enhancedReferencePicSelect_subPictur */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters (OOCTXT* pctxt, H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode mpuHorizMBs */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->mpuHorizMBs, 1U, 128U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode mpuVertMBs */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->mpuVertMBs, 1U, 72U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode mpuTotalNumber */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->mpuTotalNumber, 1U, 65536U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RefPictureSelection_enhancedReferencePicSelect */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RefPictureSelection_enhancedReferencePicSelect (OOCTXT* pctxt, H245RefPictureSelection_enhancedReferencePicSelect* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.subPictureRemovalParametersPresent);
+
+ /* encode subPictureRemovalParameters */
+
+ if (pvalue->m.subPictureRemovalParametersPresent) {
+ stat = asn1PE_H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters (pctxt, &pvalue->subPictureRemovalParameters);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RefPictureSelection */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RefPictureSelection (OOCTXT* pctxt, H245RefPictureSelection* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.enhancedReferencePicSelectPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.additionalPictureMemoryPresent);
+
+ /* encode additionalPictureMemory */
+
+ if (pvalue->m.additionalPictureMemoryPresent) {
+ stat = asn1PE_H245RefPictureSelection_additionalPictureMemory (pctxt, &pvalue->additionalPictureMemory);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode videoMux */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoMux);
+ if (stat != ASN_OK) return stat;
+
+ /* encode videoBackChannelSend */
+
+ stat = asn1PE_H245RefPictureSelection_videoBackChannelSend (pctxt, &pvalue->videoBackChannelSend);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.enhancedReferencePicSelectPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.enhancedReferencePicSelectPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245RefPictureSelection_enhancedReferencePicSelect (&lctxt, &pvalue->enhancedReferencePicSelect);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureClockFrequency */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CustomPictureClockFrequency (OOCTXT* pctxt, H245CustomPictureClockFrequency* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sqcifMPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.qcifMPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cifMPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif4MPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif16MPIPresent);
+
+ /* encode clockConversionCode */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->clockConversionCode, 1000U, 1001U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode clockDivisor */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->clockDivisor, 1U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode sqcifMPI */
+
+ if (pvalue->m.sqcifMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->sqcifMPI, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode qcifMPI */
+
+ if (pvalue->m.qcifMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->qcifMPI, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode cifMPI */
+
+ if (pvalue->m.cifMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->cifMPI, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode cif4MPI */
+
+ if (pvalue->m.cif4MPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->cif4MPI, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode cif16MPI */
+
+ if (pvalue->m.cif16MPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->cif16MPI, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263Options_customPictureClockFrequency */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H263Options_customPictureClockFrequency (OOCTXT* pctxt, H245H263Options_customPictureClockFrequency* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245CustomPictureClockFrequency (pctxt, ((H245CustomPictureClockFrequency*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_mPI_customPCF_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CustomPictureFormat_mPI_customPCF_element (OOCTXT* pctxt, H245CustomPictureFormat_mPI_customPCF_element* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode clockConversionCode */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->clockConversionCode, 1000U, 1001U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode clockDivisor */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->clockDivisor, 1U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode customMPI */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->customMPI, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_mPI_customPCF */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CustomPictureFormat_mPI_customPCF (OOCTXT* pctxt, H245CustomPictureFormat_mPI_customPCF* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245CustomPictureFormat_mPI_customPCF_element (pctxt, ((H245CustomPictureFormat_mPI_customPCF_element*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_mPI */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CustomPictureFormat_mPI (OOCTXT* pctxt, H245CustomPictureFormat_mPI* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.standardMPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.customPCFPresent);
+
+ /* encode standardMPI */
+
+ if (pvalue->m.standardMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->standardMPI, 1U, 31U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode customPCF */
+
+ if (pvalue->m.customPCFPresent) {
+ stat = asn1PE_H245CustomPictureFormat_mPI_customPCF (pctxt, &pvalue->customPCF);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_pixelAspectInformation_pixelAspectCo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 14, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = encodeConsUnsigned (pctxt, pvalue->elem[xx1], 1U, 14U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_pixelAspectInformation_extendedPAR_e */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode width */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->width, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode height */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->height, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_pixelAspectInformation_extendedPAR */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CustomPictureFormat_pixelAspectInformation_extendedPAR (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_extendedPAR* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element (pctxt, ((H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat_pixelAspectInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CustomPictureFormat_pixelAspectInformation (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* anyPixelAspectRatio */
+ case 1:
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->u.anyPixelAspectRatio);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* pixelAspectCode */
+ case 2:
+ stat = asn1PE_H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode (pctxt, pvalue->u.pixelAspectCode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* extendedPAR */
+ case 3:
+ stat = asn1PE_H245CustomPictureFormat_pixelAspectInformation_extendedPAR (pctxt, pvalue->u.extendedPAR);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CustomPictureFormat */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CustomPictureFormat (OOCTXT* pctxt, H245CustomPictureFormat* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode maxCustomPictureWidth */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maxCustomPictureWidth, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maxCustomPictureHeight */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maxCustomPictureHeight, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode minCustomPictureWidth */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->minCustomPictureWidth, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode minCustomPictureHeight */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->minCustomPictureHeight, 1U, 2048U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode mPI */
+
+ stat = asn1PE_H245CustomPictureFormat_mPI (pctxt, &pvalue->mPI);
+ if (stat != ASN_OK) return stat;
+
+ /* encode pixelAspectInformation */
+
+ stat = asn1PE_H245CustomPictureFormat_pixelAspectInformation (pctxt, &pvalue->pixelAspectInformation);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263Options_customPictureFormat */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H263Options_customPictureFormat (OOCTXT* pctxt, H245H263Options_customPictureFormat* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245CustomPictureFormat (pctxt, ((H245CustomPictureFormat*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263Version3Options */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H263Version3Options (OOCTXT* pctxt, H245H263Version3Options* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode dataPartitionedSlices */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dataPartitionedSlices);
+ if (stat != ASN_OK) return stat;
+
+ /* encode fixedPointIDCT0 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fixedPointIDCT0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode interlacedFields */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->interlacedFields);
+ if (stat != ASN_OK) return stat;
+
+ /* encode currentPictureHeaderRepetition */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->currentPictureHeaderRepetition);
+ if (stat != ASN_OK) return stat;
+
+ /* encode previousPictureHeaderRepetition */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->previousPictureHeaderRepetition);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nextPictureHeaderRepetition */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->nextPictureHeaderRepetition);
+ if (stat != ASN_OK) return stat;
+
+ /* encode pictureNumber */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->pictureNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode spareReferencePictures */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->spareReferencePictures);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263ModeComboFlags */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H263ModeComboFlags (OOCTXT* pctxt, H245H263ModeComboFlags* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.enhancedReferencePicSelectPresent ||
+ pvalue->m.h263Version3OptionsPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode unrestrictedVector */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->unrestrictedVector);
+ if (stat != ASN_OK) return stat;
+
+ /* encode arithmeticCoding */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->arithmeticCoding);
+ if (stat != ASN_OK) return stat;
+
+ /* encode advancedPrediction */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->advancedPrediction);
+ if (stat != ASN_OK) return stat;
+
+ /* encode pbFrames */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->pbFrames);
+ if (stat != ASN_OK) return stat;
+
+ /* encode advancedIntraCodingMode */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->advancedIntraCodingMode);
+ if (stat != ASN_OK) return stat;
+
+ /* encode deblockingFilterMode */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->deblockingFilterMode);
+ if (stat != ASN_OK) return stat;
+
+ /* encode unlimitedMotionVectors */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->unlimitedMotionVectors);
+ if (stat != ASN_OK) return stat;
+
+ /* encode slicesInOrder_NonRect */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesInOrder_NonRect);
+ if (stat != ASN_OK) return stat;
+
+ /* encode slicesInOrder_Rect */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesInOrder_Rect);
+ if (stat != ASN_OK) return stat;
+
+ /* encode slicesNoOrder_NonRect */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesNoOrder_NonRect);
+ if (stat != ASN_OK) return stat;
+
+ /* encode slicesNoOrder_Rect */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesNoOrder_Rect);
+ if (stat != ASN_OK) return stat;
+
+ /* encode improvedPBFramesMode */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->improvedPBFramesMode);
+ if (stat != ASN_OK) return stat;
+
+ /* encode referencePicSelect */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->referencePicSelect);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dynamicPictureResizingByFour */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicPictureResizingByFour);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dynamicPictureResizingSixteenthPel */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicPictureResizingSixteenthPel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dynamicWarpingHalfPel */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicWarpingHalfPel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dynamicWarpingSixteenthPel */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicWarpingSixteenthPel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode reducedResolutionUpdate */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->reducedResolutionUpdate);
+ if (stat != ASN_OK) return stat;
+
+ /* encode independentSegmentDecoding */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->independentSegmentDecoding);
+ if (stat != ASN_OK) return stat;
+
+ /* encode alternateInterVLCMode */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alternateInterVLCMode);
+ if (stat != ASN_OK) return stat;
+
+ /* encode modifiedQuantizationMode */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->modifiedQuantizationMode);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.enhancedReferencePicSelectPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h263Version3OptionsPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.enhancedReferencePicSelectPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->enhancedReferencePicSelect);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.h263Version3OptionsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245H263Version3Options (&lctxt, &pvalue->h263Version3Options);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263VideoModeCombos_h263VideoCoupledModes */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H263VideoModeCombos_h263VideoCoupledModes (OOCTXT* pctxt, H245H263VideoModeCombos_h263VideoCoupledModes* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245H263ModeComboFlags (pctxt, ((H245H263ModeComboFlags*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263VideoModeCombos */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H263VideoModeCombos (OOCTXT* pctxt, H245H263VideoModeCombos* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode h263VideoUncoupledModes */
+
+ stat = asn1PE_H245H263ModeComboFlags (pctxt, &pvalue->h263VideoUncoupledModes);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h263VideoCoupledModes */
+
+ stat = asn1PE_H245H263VideoModeCombos_h263VideoCoupledModes (pctxt, &pvalue->h263VideoCoupledModes);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263Options_modeCombos */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H263Options_modeCombos (OOCTXT* pctxt, H245H263Options_modeCombos* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245H263VideoModeCombos (pctxt, ((H245H263VideoModeCombos*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263Options */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H263Options (OOCTXT* pctxt, H245H263Options* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.videoBadMBsCapPresent ||
+ pvalue->m.h263Version3OptionsPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.transparencyParametersPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.refPictureSelectionPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.customPictureClockFrequencyPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.customPictureFormatPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.modeCombosPresent);
+
+ /* encode advancedIntraCodingMode */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->advancedIntraCodingMode);
+ if (stat != ASN_OK) return stat;
+
+ /* encode deblockingFilterMode */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->deblockingFilterMode);
+ if (stat != ASN_OK) return stat;
+
+ /* encode improvedPBFramesMode */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->improvedPBFramesMode);
+ if (stat != ASN_OK) return stat;
+
+ /* encode unlimitedMotionVectors */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->unlimitedMotionVectors);
+ if (stat != ASN_OK) return stat;
+
+ /* encode fullPictureFreeze */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fullPictureFreeze);
+ if (stat != ASN_OK) return stat;
+
+ /* encode partialPictureFreezeAndRelease */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->partialPictureFreezeAndRelease);
+ if (stat != ASN_OK) return stat;
+
+ /* encode resizingPartPicFreezeAndRelease */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->resizingPartPicFreezeAndRelease);
+ if (stat != ASN_OK) return stat;
+
+ /* encode fullPictureSnapshot */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fullPictureSnapshot);
+ if (stat != ASN_OK) return stat;
+
+ /* encode partialPictureSnapshot */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->partialPictureSnapshot);
+ if (stat != ASN_OK) return stat;
+
+ /* encode videoSegmentTagging */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoSegmentTagging);
+ if (stat != ASN_OK) return stat;
+
+ /* encode progressiveRefinement */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->progressiveRefinement);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dynamicPictureResizingByFour */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicPictureResizingByFour);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dynamicPictureResizingSixteenthPel */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicPictureResizingSixteenthPel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dynamicWarpingHalfPel */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicWarpingHalfPel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dynamicWarpingSixteenthPel */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicWarpingSixteenthPel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode independentSegmentDecoding */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->independentSegmentDecoding);
+ if (stat != ASN_OK) return stat;
+
+ /* encode slicesInOrder_NonRect */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesInOrder_NonRect);
+ if (stat != ASN_OK) return stat;
+
+ /* encode slicesInOrder_Rect */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesInOrder_Rect);
+ if (stat != ASN_OK) return stat;
+
+ /* encode slicesNoOrder_NonRect */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesNoOrder_NonRect);
+ if (stat != ASN_OK) return stat;
+
+ /* encode slicesNoOrder_Rect */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesNoOrder_Rect);
+ if (stat != ASN_OK) return stat;
+
+ /* encode alternateInterVLCMode */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alternateInterVLCMode);
+ if (stat != ASN_OK) return stat;
+
+ /* encode modifiedQuantizationMode */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->modifiedQuantizationMode);
+ if (stat != ASN_OK) return stat;
+
+ /* encode reducedResolutionUpdate */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->reducedResolutionUpdate);
+ if (stat != ASN_OK) return stat;
+
+ /* encode transparencyParameters */
+
+ if (pvalue->m.transparencyParametersPresent) {
+ stat = asn1PE_H245TransparencyParameters (pctxt, &pvalue->transparencyParameters);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode separateVideoBackChannel */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->separateVideoBackChannel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode refPictureSelection */
+
+ if (pvalue->m.refPictureSelectionPresent) {
+ stat = asn1PE_H245RefPictureSelection (pctxt, &pvalue->refPictureSelection);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode customPictureClockFrequency */
+
+ if (pvalue->m.customPictureClockFrequencyPresent) {
+ stat = asn1PE_H245H263Options_customPictureClockFrequency (pctxt, &pvalue->customPictureClockFrequency);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode customPictureFormat */
+
+ if (pvalue->m.customPictureFormatPresent) {
+ stat = asn1PE_H245H263Options_customPictureFormat (pctxt, &pvalue->customPictureFormat);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode modeCombos */
+
+ if (pvalue->m.modeCombosPresent) {
+ stat = asn1PE_H245H263Options_modeCombos (pctxt, &pvalue->modeCombos);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBadMBsCapPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h263Version3OptionsPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.videoBadMBsCapPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->videoBadMBsCap);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.h263Version3OptionsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245H263Version3Options (&lctxt, &pvalue->h263Version3Options);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EnhancementOptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EnhancementOptions (OOCTXT* pctxt, H245EnhancementOptions* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sqcifMPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.qcifMPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cifMPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif4MPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif16MPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowSqcifMPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowQcifMPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowCifMPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowCif4MPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowCif16MPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h263OptionsPresent);
+
+ /* encode sqcifMPI */
+
+ if (pvalue->m.sqcifMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->sqcifMPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode qcifMPI */
+
+ if (pvalue->m.qcifMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->qcifMPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode cifMPI */
+
+ if (pvalue->m.cifMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->cifMPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode cif4MPI */
+
+ if (pvalue->m.cif4MPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->cif4MPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode cif16MPI */
+
+ if (pvalue->m.cif16MPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->cif16MPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode maxBitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maxBitRate, 1U, 192400U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode unrestrictedVector */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->unrestrictedVector);
+ if (stat != ASN_OK) return stat;
+
+ /* encode arithmeticCoding */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->arithmeticCoding);
+ if (stat != ASN_OK) return stat;
+
+ /* encode temporalSpatialTradeOffCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->temporalSpatialTradeOffCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode slowSqcifMPI */
+
+ if (pvalue->m.slowSqcifMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->slowSqcifMPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode slowQcifMPI */
+
+ if (pvalue->m.slowQcifMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->slowQcifMPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode slowCifMPI */
+
+ if (pvalue->m.slowCifMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->slowCifMPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode slowCif4MPI */
+
+ if (pvalue->m.slowCif4MPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->slowCif4MPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode slowCif16MPI */
+
+ if (pvalue->m.slowCif16MPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->slowCif16MPI, 1U, 3600U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode errorCompensation */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->errorCompensation);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h263Options */
+
+ if (pvalue->m.h263OptionsPresent) {
+ stat = asn1PE_H245H263Options (pctxt, &pvalue->h263Options);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EnhancementLayerInfo_snrEnhancement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EnhancementLayerInfo_snrEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_snrEnhancement* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 14, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245EnhancementOptions (pctxt, ((H245EnhancementOptions*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EnhancementLayerInfo_spatialEnhancement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EnhancementLayerInfo_spatialEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_spatialEnhancement* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 14, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245EnhancementOptions (pctxt, ((H245EnhancementOptions*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BEnhancementParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245BEnhancementParameters (OOCTXT* pctxt, H245BEnhancementParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode enhancementOptions */
+
+ stat = asn1PE_H245EnhancementOptions (pctxt, &pvalue->enhancementOptions);
+ if (stat != ASN_OK) return stat;
+
+ /* encode numberOfBPictures */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->numberOfBPictures, 1U, 64U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EnhancementLayerInfo_bPictureEnhancement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EnhancementLayerInfo_bPictureEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_bPictureEnhancement* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 14, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245BEnhancementParameters (pctxt, ((H245BEnhancementParameters*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EnhancementLayerInfo */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EnhancementLayerInfo (OOCTXT* pctxt, H245EnhancementLayerInfo* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.snrEnhancementPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.spatialEnhancementPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.bPictureEnhancementPresent);
+
+ /* encode baseBitRateConstrained */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->baseBitRateConstrained);
+ if (stat != ASN_OK) return stat;
+
+ /* encode snrEnhancement */
+
+ if (pvalue->m.snrEnhancementPresent) {
+ stat = asn1PE_H245EnhancementLayerInfo_snrEnhancement (pctxt, &pvalue->snrEnhancement);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode spatialEnhancement */
+
+ if (pvalue->m.spatialEnhancementPresent) {
+ stat = asn1PE_H245EnhancementLayerInfo_spatialEnhancement (pctxt, &pvalue->spatialEnhancement);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode bPictureEnhancement */
+
+ if (pvalue->m.bPictureEnhancementPresent) {
+ stat = asn1PE_H245EnhancementLayerInfo_bPictureEnhancement (pctxt, &pvalue->bPictureEnhancement);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263VideoCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H263VideoCapability (OOCTXT* pctxt, H245H263VideoCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.slowSqcifMPIPresent ||
+ pvalue->m.slowQcifMPIPresent ||
+ pvalue->m.slowCifMPIPresent ||
+ pvalue->m.slowCif4MPIPresent ||
+ pvalue->m.slowCif16MPIPresent ||
+ pvalue->m.errorCompensationPresent ||
+ pvalue->m.enhancementLayerInfoPresent ||
+ pvalue->m.h263OptionsPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sqcifMPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.qcifMPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cifMPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif4MPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif16MPIPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.hrd_BPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.bppMaxKbPresent);
+
+ /* encode sqcifMPI */
+
+ if (pvalue->m.sqcifMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->sqcifMPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode qcifMPI */
+
+ if (pvalue->m.qcifMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->qcifMPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode cifMPI */
+
+ if (pvalue->m.cifMPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->cifMPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode cif4MPI */
+
+ if (pvalue->m.cif4MPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->cif4MPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode cif16MPI */
+
+ if (pvalue->m.cif16MPIPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->cif16MPI, 1U, 32U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode maxBitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maxBitRate, 1U, 192400U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode unrestrictedVector */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->unrestrictedVector);
+ if (stat != ASN_OK) return stat;
+
+ /* encode arithmeticCoding */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->arithmeticCoding);
+ if (stat != ASN_OK) return stat;
+
+ /* encode advancedPrediction */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->advancedPrediction);
+ if (stat != ASN_OK) return stat;
+
+ /* encode pbFrames */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->pbFrames);
+ if (stat != ASN_OK) return stat;
+
+ /* encode temporalSpatialTradeOffCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->temporalSpatialTradeOffCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode hrd_B */
+
+ if (pvalue->m.hrd_BPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->hrd_B, 0U, 524287U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode bppMaxKb */
+
+ if (pvalue->m.bppMaxKbPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->bppMaxKb, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 7);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowSqcifMPIPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowQcifMPIPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowCifMPIPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowCif4MPIPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowCif16MPIPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.errorCompensationPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.enhancementLayerInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h263OptionsPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.slowSqcifMPIPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->slowSqcifMPI, 1U, 3600U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.slowQcifMPIPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->slowQcifMPI, 1U, 3600U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.slowCifMPIPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->slowCifMPI, 1U, 3600U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.slowCif4MPIPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->slowCif4MPI, 1U, 3600U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.slowCif16MPIPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->slowCif16MPI, 1U, 3600U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.errorCompensationPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->errorCompensation);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.enhancementLayerInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245EnhancementLayerInfo (&lctxt, &pvalue->enhancementLayerInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.h263OptionsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245H263Options (&lctxt, &pvalue->h263Options);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS11172VideoCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245IS11172VideoCapability (OOCTXT* pctxt, H245IS11172VideoCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.videoBadMBsCapPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBitRatePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.vbvBufferSizePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.samplesPerLinePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.linesPerFramePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.pictureRatePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.luminanceSampleRatePresent);
+
+ /* encode constrainedBitstream */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->constrainedBitstream);
+ if (stat != ASN_OK) return stat;
+
+ /* encode videoBitRate */
+
+ if (pvalue->m.videoBitRatePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->videoBitRate, 0U, 1073741823U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode vbvBufferSize */
+
+ if (pvalue->m.vbvBufferSizePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->vbvBufferSize, 0U, 262143U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode samplesPerLine */
+
+ if (pvalue->m.samplesPerLinePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->samplesPerLine, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode linesPerFrame */
+
+ if (pvalue->m.linesPerFramePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->linesPerFrame, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode pictureRate */
+
+ if (pvalue->m.pictureRatePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->pictureRate, 0U, 15U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode luminanceSampleRate */
+
+ if (pvalue->m.luminanceSampleRatePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->luminanceSampleRate, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBadMBsCapPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.videoBadMBsCapPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->videoBadMBsCap);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VideoCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VideoCapability (OOCTXT* pctxt, H245VideoCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 5);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h261VideoCapability */
+ case 2:
+ stat = asn1PE_H245H261VideoCapability (pctxt, pvalue->u.h261VideoCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h262VideoCapability */
+ case 3:
+ stat = asn1PE_H245H262VideoCapability (pctxt, pvalue->u.h262VideoCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h263VideoCapability */
+ case 4:
+ stat = asn1PE_H245H263VideoCapability (pctxt, pvalue->u.h263VideoCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* is11172VideoCapability */
+ case 5:
+ stat = asn1PE_H245IS11172VideoCapability (pctxt, pvalue->u.is11172VideoCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* genericVideoCapability */
+ case 6:
+ stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericVideoCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AudioCapability_g7231 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245AudioCapability_g7231 (OOCTXT* pctxt, H245AudioCapability_g7231* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode maxAl_sduAudioFrames */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maxAl_sduAudioFrames, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode silenceSuppression */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->silenceSuppression);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS11172AudioCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245IS11172AudioCapability (OOCTXT* pctxt, H245IS11172AudioCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode audioLayer1 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioLayer1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioLayer2 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioLayer2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioLayer3 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioLayer3);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioSampling32k */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling32k);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioSampling44k1 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling44k1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioSampling48k */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling48k);
+ if (stat != ASN_OK) return stat;
+
+ /* encode singleChannel */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->singleChannel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode twoChannels */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->twoChannels);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 448U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS13818AudioCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245IS13818AudioCapability (OOCTXT* pctxt, H245IS13818AudioCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode audioLayer1 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioLayer1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioLayer2 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioLayer2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioLayer3 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioLayer3);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioSampling16k */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling16k);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioSampling22k05 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling22k05);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioSampling24k */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling24k);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioSampling32k */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling32k);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioSampling44k1 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling44k1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioSampling48k */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling48k);
+ if (stat != ASN_OK) return stat;
+
+ /* encode singleChannel */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->singleChannel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode twoChannels */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->twoChannels);
+ if (stat != ASN_OK) return stat;
+
+ /* encode threeChannels2_1 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->threeChannels2_1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode threeChannels3_0 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->threeChannels3_0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode fourChannels2_0_2_0 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fourChannels2_0_2_0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode fourChannels2_2 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fourChannels2_2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode fourChannels3_1 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fourChannels3_1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode fiveChannels3_0_2_0 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fiveChannels3_0_2_0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode fiveChannels3_2 */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fiveChannels3_2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode lowFrequencyEnhancement */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->lowFrequencyEnhancement);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multilingual */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->multilingual);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 1130U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* G7231AnnexCCapability_g723AnnexCAudioMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245G7231AnnexCCapability_g723AnnexCAudioMode (OOCTXT* pctxt, H245G7231AnnexCCapability_g723AnnexCAudioMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode highRateMode0 */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->highRateMode0, 27U, 78U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode highRateMode1 */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->highRateMode1, 27U, 78U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode lowRateMode0 */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->lowRateMode0, 23U, 66U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode lowRateMode1 */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->lowRateMode1, 23U, 66U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode sidMode0 */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->sidMode0, 6U, 17U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode sidMode1 */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->sidMode1, 6U, 17U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* G7231AnnexCCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245G7231AnnexCCapability (OOCTXT* pctxt, H245G7231AnnexCCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.g723AnnexCAudioModePresent);
+
+ /* encode maxAl_sduAudioFrames */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maxAl_sduAudioFrames, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode silenceSuppression */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->silenceSuppression);
+ if (stat != ASN_OK) return stat;
+
+ /* encode g723AnnexCAudioMode */
+
+ if (pvalue->m.g723AnnexCAudioModePresent) {
+ stat = asn1PE_H245G7231AnnexCCapability_g723AnnexCAudioMode (pctxt, &pvalue->g723AnnexCAudioMode);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GSMAudioCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245GSMAudioCapability (OOCTXT* pctxt, H245GSMAudioCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode audioUnitSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->audioUnitSize, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode comfortNoise */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->comfortNoise);
+ if (stat != ASN_OK) return stat;
+
+ /* encode scrambled */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->scrambled);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* G729Extensions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245G729Extensions (OOCTXT* pctxt, H245G729Extensions* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.audioUnitPresent);
+
+ /* encode audioUnit */
+
+ if (pvalue->m.audioUnitPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->audioUnit, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode annexA */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->annexA);
+ if (stat != ASN_OK) return stat;
+
+ /* encode annexB */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->annexB);
+ if (stat != ASN_OK) return stat;
+
+ /* encode annexD */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->annexD);
+ if (stat != ASN_OK) return stat;
+
+ /* encode annexE */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->annexE);
+ if (stat != ASN_OK) return stat;
+
+ /* encode annexF */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->annexF);
+ if (stat != ASN_OK) return stat;
+
+ /* encode annexG */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->annexG);
+ if (stat != ASN_OK) return stat;
+
+ /* encode annexH */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->annexH);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VBDCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VBDCapability (OOCTXT* pctxt, H245VBDCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode type */
+
+ stat = asn1PE_H245AudioCapability (pctxt, (H245AudioCapability*)pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NoPTAudioTelephonyEventCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NoPTAudioTelephonyEventCapability (OOCTXT* pctxt, H245NoPTAudioTelephonyEventCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode audioTelephoneEvent */
+
+ stat = encodeVarWidthCharString (pctxt, pvalue->audioTelephoneEvent);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NoPTAudioToneCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NoPTAudioToneCapability (OOCTXT* pctxt, H245NoPTAudioToneCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AudioCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245AudioCapability (OOCTXT* pctxt, H245AudioCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 14);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 13);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* g711Alaw64k */
+ case 2:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.g711Alaw64k, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* g711Alaw56k */
+ case 3:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.g711Alaw56k, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* g711Ulaw64k */
+ case 4:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.g711Ulaw64k, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* g711Ulaw56k */
+ case 5:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.g711Ulaw56k, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* g722_64k */
+ case 6:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.g722_64k, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* g722_56k */
+ case 7:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.g722_56k, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* g722_48k */
+ case 8:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.g722_48k, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* g7231 */
+ case 9:
+ stat = asn1PE_H245AudioCapability_g7231 (pctxt, pvalue->u.g7231);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* g728 */
+ case 10:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.g728, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* g729 */
+ case 11:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.g729, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* g729AnnexA */
+ case 12:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.g729AnnexA, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* is11172AudioCapability */
+ case 13:
+ stat = asn1PE_H245IS11172AudioCapability (pctxt, pvalue->u.is11172AudioCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* is13818AudioCapability */
+ case 14:
+ stat = asn1PE_H245IS13818AudioCapability (pctxt, pvalue->u.is13818AudioCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 15);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* g729wAnnexB */
+ case 15:
+ stat = encodeConsUnsigned (&lctxt, pvalue->u.g729wAnnexB, 1U, 256U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* g729AnnexAwAnnexB */
+ case 16:
+ stat = encodeConsUnsigned (&lctxt, pvalue->u.g729AnnexAwAnnexB, 1U, 256U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* g7231AnnexCCapability */
+ case 17:
+ stat = asn1PE_H245G7231AnnexCCapability (&lctxt, pvalue->u.g7231AnnexCCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* gsmFullRate */
+ case 18:
+ stat = asn1PE_H245GSMAudioCapability (&lctxt, pvalue->u.gsmFullRate);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* gsmHalfRate */
+ case 19:
+ stat = asn1PE_H245GSMAudioCapability (&lctxt, pvalue->u.gsmHalfRate);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* gsmEnhancedFullRate */
+ case 20:
+ stat = asn1PE_H245GSMAudioCapability (&lctxt, pvalue->u.gsmEnhancedFullRate);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* genericAudioCapability */
+ case 21:
+ stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericAudioCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* g729Extensions */
+ case 22:
+ stat = asn1PE_H245G729Extensions (&lctxt, pvalue->u.g729Extensions);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* vbd */
+ case 23:
+ stat = asn1PE_H245VBDCapability (&lctxt, pvalue->u.vbd);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* audioTelephonyEvent */
+ case 24:
+ stat = asn1PE_H245NoPTAudioTelephonyEventCapability (&lctxt, pvalue->u.audioTelephonyEvent);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* audioTone */
+ case 25:
+ stat = asn1PE_H245NoPTAudioToneCapability (&lctxt, pvalue->u.audioTone);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Capability_h233EncryptionReceiveCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245Capability_h233EncryptionReceiveCapability (OOCTXT* pctxt, H245Capability_h233EncryptionReceiveCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode h233IVResponseTime */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->h233IVResponseTime, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245NonStandardParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245_SeqOfH245NonStandardParameter (OOCTXT* pctxt, H245_SeqOfH245NonStandardParameter* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H245NonStandardParameter (pctxt, ((H245NonStandardParameter*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceCapability (OOCTXT* pctxt, H245ConferenceCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.videoIndicateMixingCapabilityPresent ||
+ pvalue->m.multipointVisualizationCapabilityPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
+
+ /* encode nonStandardData */
+
+ if (pvalue->m.nonStandardDataPresent) {
+ stat = asn1PE_H245_SeqOfH245NonStandardParameter (pctxt, &pvalue->nonStandardData);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode chairControlCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->chairControlCapability);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoIndicateMixingCapabilityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipointVisualizationCapabilityPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.videoIndicateMixingCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->videoIndicateMixingCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.multipointVisualizationCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipointVisualizationCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MediaEncryptionAlgorithm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MediaEncryptionAlgorithm (OOCTXT* pctxt, H245MediaEncryptionAlgorithm* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* algorithm */
+ case 2:
+ stat = encodeObjectIdentifier (pctxt, pvalue->u.algorithm);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EncryptionCapability (OOCTXT* pctxt, H245EncryptionCapability* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245MediaEncryptionAlgorithm (pctxt, ((H245MediaEncryptionAlgorithm*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AuthenticationCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245AuthenticationCapability (OOCTXT* pctxt, H245AuthenticationCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.antiSpamAlgorithmPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent);
+
+ /* encode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ stat = asn1PE_H245NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.antiSpamAlgorithmPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.antiSpamAlgorithmPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeObjectIdentifier (&lctxt, &pvalue->antiSpamAlgorithm);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IntegrityCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245IntegrityCapability (OOCTXT* pctxt, H245IntegrityCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent);
+
+ /* encode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ stat = asn1PE_H245NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionAuthenticationAndIntegrity */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EncryptionAuthenticationAndIntegrity (OOCTXT* pctxt, H245EncryptionAuthenticationAndIntegrity* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.encryptionCapabilityPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.authenticationCapabilityPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCapabilityPresent);
+
+ /* encode encryptionCapability */
+
+ if (pvalue->m.encryptionCapabilityPresent) {
+ stat = asn1PE_H245EncryptionCapability (pctxt, &pvalue->encryptionCapability);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode authenticationCapability */
+
+ if (pvalue->m.authenticationCapabilityPresent) {
+ stat = asn1PE_H245AuthenticationCapability (pctxt, &pvalue->authenticationCapability);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode integrityCapability */
+
+ if (pvalue->m.integrityCapabilityPresent) {
+ stat = asn1PE_H245IntegrityCapability (pctxt, &pvalue->integrityCapability);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H235SecurityCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H235SecurityCapability (OOCTXT* pctxt, H245H235SecurityCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode encryptionAuthenticationAndIntegrity */
+
+ stat = asn1PE_H245EncryptionAuthenticationAndIntegrity (pctxt, &pvalue->encryptionAuthenticationAndIntegrity);
+ if (stat != ASN_OK) return stat;
+
+ /* encode mediaCapability */
+
+ stat = asn1PE_H245CapabilityTableEntryNumber (pctxt, pvalue->mediaCapability);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputCapability_nonStandard */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UserInputCapability_nonStandard (OOCTXT* pctxt, H245UserInputCapability_nonStandard* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245NonStandardParameter (pctxt, ((H245NonStandardParameter*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UserInputCapability (OOCTXT* pctxt, H245UserInputCapability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 6);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245UserInputCapability_nonStandard (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* basicString */
+ case 2:
+ /* NULL */
+ break;
+
+ /* iA5String */
+ case 3:
+ /* NULL */
+ break;
+
+ /* generalString */
+ case 4:
+ /* NULL */
+ break;
+
+ /* dtmf */
+ case 5:
+ /* NULL */
+ break;
+
+ /* hookflash */
+ case 6:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* extendedAlphanumeric */
+ case 7:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexFormat */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexFormat (OOCTXT* pctxt, H245MultiplexFormat* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h222Capability */
+ case 2:
+ stat = asn1PE_H245H222Capability (pctxt, pvalue->u.h222Capability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h223Capability */
+ case 3:
+ stat = asn1PE_H245H223Capability (pctxt, pvalue->u.h223Capability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AlternativeCapabilitySet */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245AlternativeCapabilitySet (OOCTXT* pctxt, H245AlternativeCapabilitySet* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H245CapabilityTableEntryNumber (pctxt, pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexedStreamCapability_capabilityOnMuxStream */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexedStreamCapability_capabilityOnMuxStream (OOCTXT* pctxt, H245MultiplexedStreamCapability_capabilityOnMuxStream* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245AlternativeCapabilitySet (pctxt, ((H245AlternativeCapabilitySet*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexedStreamCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexedStreamCapability (OOCTXT* pctxt, H245MultiplexedStreamCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capabilityOnMuxStreamPresent);
+
+ /* encode multiplexFormat */
+
+ stat = asn1PE_H245MultiplexFormat (pctxt, &pvalue->multiplexFormat);
+ if (stat != ASN_OK) return stat;
+
+ /* encode controlOnMuxStream */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->controlOnMuxStream);
+ if (stat != ASN_OK) return stat;
+
+ /* encode capabilityOnMuxStream */
+
+ if (pvalue->m.capabilityOnMuxStreamPresent) {
+ stat = asn1PE_H245MultiplexedStreamCapability_capabilityOnMuxStream (pctxt, &pvalue->capabilityOnMuxStream);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AudioTelephonyEventCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245AudioTelephonyEventCapability (OOCTXT* pctxt, H245AudioTelephonyEventCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode dynamicRTPPayloadType */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->dynamicRTPPayloadType, 96U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioTelephoneEvent */
+
+ stat = encodeVarWidthCharString (pctxt, pvalue->audioTelephoneEvent);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AudioToneCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245AudioToneCapability (OOCTXT* pctxt, H245AudioToneCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode dynamicRTPPayloadType */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->dynamicRTPPayloadType, 96U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECCapability_rfc2733_separateStream */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECCapability_rfc2733_separateStream (OOCTXT* pctxt, H245FECCapability_rfc2733_separateStream* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode separatePort */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->separatePort);
+ if (stat != ASN_OK) return stat;
+
+ /* encode samePort */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->samePort);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECCapability_rfc2733 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECCapability_rfc2733 (OOCTXT* pctxt, H245FECCapability_rfc2733* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode redundancyEncoding */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->redundancyEncoding);
+ if (stat != ASN_OK) return stat;
+
+ /* encode separateStream */
+
+ stat = asn1PE_H245FECCapability_rfc2733_separateStream (pctxt, &pvalue->separateStream);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECCapability (OOCTXT* pctxt, H245FECCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 1);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* rfc2733 */
+ case 1:
+ stat = asn1PE_H245FECCapability_rfc2733 (pctxt, pvalue->u.rfc2733);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamCapability_capabilities */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplePayloadStreamCapability_capabilities (OOCTXT* pctxt, H245MultiplePayloadStreamCapability_capabilities* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245AlternativeCapabilitySet (pctxt, ((H245AlternativeCapabilitySet*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamCapability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplePayloadStreamCapability (OOCTXT* pctxt, H245MultiplePayloadStreamCapability* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode capabilities */
+
+ stat = asn1PE_H245MultiplePayloadStreamCapability_capabilities (pctxt, &pvalue->capabilities);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Capability */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245Capability (OOCTXT* pctxt, H245Capability* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 12);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 11);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* receiveVideoCapability */
+ case 2:
+ stat = asn1PE_H245VideoCapability (pctxt, pvalue->u.receiveVideoCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* transmitVideoCapability */
+ case 3:
+ stat = asn1PE_H245VideoCapability (pctxt, pvalue->u.transmitVideoCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* receiveAndTransmitVideoCapability */
+ case 4:
+ stat = asn1PE_H245VideoCapability (pctxt, pvalue->u.receiveAndTransmitVideoCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* receiveAudioCapability */
+ case 5:
+ stat = asn1PE_H245AudioCapability (pctxt, pvalue->u.receiveAudioCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* transmitAudioCapability */
+ case 6:
+ stat = asn1PE_H245AudioCapability (pctxt, pvalue->u.transmitAudioCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* receiveAndTransmitAudioCapability */
+ case 7:
+ stat = asn1PE_H245AudioCapability (pctxt, pvalue->u.receiveAndTransmitAudioCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* receiveDataApplicationCapability */
+ case 8:
+ stat = asn1PE_H245DataApplicationCapability (pctxt, pvalue->u.receiveDataApplicationCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* transmitDataApplicationCapability */
+ case 9:
+ stat = asn1PE_H245DataApplicationCapability (pctxt, pvalue->u.transmitDataApplicationCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* receiveAndTransmitDataApplicationCapability */
+ case 10:
+ stat = asn1PE_H245DataApplicationCapability (pctxt, pvalue->u.receiveAndTransmitDataApplicationCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h233EncryptionTransmitCapability */
+ case 11:
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->u.h233EncryptionTransmitCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h233EncryptionReceiveCapability */
+ case 12:
+ stat = asn1PE_H245Capability_h233EncryptionReceiveCapability (pctxt, pvalue->u.h233EncryptionReceiveCapability);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 13);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* conferenceCapability */
+ case 13:
+ stat = asn1PE_H245ConferenceCapability (&lctxt, pvalue->u.conferenceCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* h235SecurityCapability */
+ case 14:
+ stat = asn1PE_H245H235SecurityCapability (&lctxt, pvalue->u.h235SecurityCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* maxPendingReplacementFor */
+ case 15:
+ stat = encodeConsUnsigned (&lctxt, pvalue->u.maxPendingReplacementFor, 0U, 255U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* receiveUserInputCapability */
+ case 16:
+ stat = asn1PE_H245UserInputCapability (&lctxt, pvalue->u.receiveUserInputCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* transmitUserInputCapability */
+ case 17:
+ stat = asn1PE_H245UserInputCapability (&lctxt, pvalue->u.transmitUserInputCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* receiveAndTransmitUserInputCapability */
+ case 18:
+ stat = asn1PE_H245UserInputCapability (&lctxt, pvalue->u.receiveAndTransmitUserInputCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* genericControlCapability */
+ case 19:
+ stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericControlCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* receiveMultiplexedStreamCapability */
+ case 20:
+ stat = asn1PE_H245MultiplexedStreamCapability (&lctxt, pvalue->u.receiveMultiplexedStreamCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* transmitMultiplexedStreamCapability */
+ case 21:
+ stat = asn1PE_H245MultiplexedStreamCapability (&lctxt, pvalue->u.transmitMultiplexedStreamCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* receiveAndTransmitMultiplexedStreamCapability */
+ case 22:
+ stat = asn1PE_H245MultiplexedStreamCapability (&lctxt, pvalue->u.receiveAndTransmitMultiplexedStreamCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* receiveRTPAudioTelephonyEventCapability */
+ case 23:
+ stat = asn1PE_H245AudioTelephonyEventCapability (&lctxt, pvalue->u.receiveRTPAudioTelephonyEventCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* receiveRTPAudioToneCapability */
+ case 24:
+ stat = asn1PE_H245AudioToneCapability (&lctxt, pvalue->u.receiveRTPAudioToneCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* fecCapability */
+ case 25:
+ stat = asn1PE_H245FECCapability (&lctxt, pvalue->u.fecCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* multiplePayloadStreamCapability */
+ case 26:
+ stat = asn1PE_H245MultiplePayloadStreamCapability (&lctxt, pvalue->u.multiplePayloadStreamCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapabilityTableEntry */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CapabilityTableEntry (OOCTXT* pctxt, H245CapabilityTableEntry* pvalue)
+{
+ int stat = ASN_OK;
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capabilityPresent);
+
+ /* encode capabilityTableEntryNumber */
+
+ stat = asn1PE_H245CapabilityTableEntryNumber (pctxt, pvalue->capabilityTableEntryNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode capability */
+
+ if (pvalue->m.capabilityPresent) {
+ stat = asn1PE_H245Capability (pctxt, &pvalue->capability);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySet_capabilityTable */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TerminalCapabilitySet_capabilityTable (OOCTXT* pctxt, H245TerminalCapabilitySet_capabilityTable* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245CapabilityTableEntry (pctxt, ((H245CapabilityTableEntry*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapabilityDescriptorNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CapabilityDescriptorNumber (OOCTXT* pctxt, H245CapabilityDescriptorNumber value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConsUnsigned (pctxt, value, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapabilityDescriptor_simultaneousCapabilities */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CapabilityDescriptor_simultaneousCapabilities (OOCTXT* pctxt, H245CapabilityDescriptor_simultaneousCapabilities* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245AlternativeCapabilitySet (pctxt, ((H245AlternativeCapabilitySet*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CapabilityDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CapabilityDescriptor (OOCTXT* pctxt, H245CapabilityDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.simultaneousCapabilitiesPresent);
+
+ /* encode capabilityDescriptorNumber */
+
+ stat = asn1PE_H245CapabilityDescriptorNumber (pctxt, pvalue->capabilityDescriptorNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode simultaneousCapabilities */
+
+ if (pvalue->m.simultaneousCapabilitiesPresent) {
+ stat = asn1PE_H245CapabilityDescriptor_simultaneousCapabilities (pctxt, &pvalue->simultaneousCapabilities);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySet_capabilityDescriptors */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TerminalCapabilitySet_capabilityDescriptors (OOCTXT* pctxt, H245TerminalCapabilitySet_capabilityDescriptors* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245CapabilityDescriptor (pctxt, ((H245CapabilityDescriptor*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySet */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TerminalCapabilitySet (OOCTXT* pctxt, H245TerminalCapabilitySet* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multiplexCapabilityPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capabilityTablePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capabilityDescriptorsPresent);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode protocolIdentifier */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->protocolIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multiplexCapability */
+
+ if (pvalue->m.multiplexCapabilityPresent) {
+ stat = asn1PE_H245MultiplexCapability (pctxt, &pvalue->multiplexCapability);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode capabilityTable */
+
+ if (pvalue->m.capabilityTablePresent) {
+ stat = asn1PE_H245TerminalCapabilitySet_capabilityTable (pctxt, &pvalue->capabilityTable);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode capabilityDescriptors */
+
+ if (pvalue->m.capabilityDescriptorsPresent) {
+ stat = asn1PE_H245TerminalCapabilitySet_capabilityDescriptors (pctxt, &pvalue->capabilityDescriptors);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LogicalChannelNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245LogicalChannelNumber (OOCTXT* pctxt, H245LogicalChannelNumber value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConsUnsigned (pctxt, value, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EncryptionMode (OOCTXT* pctxt, H245EncryptionMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h233Encryption */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RedundancyEncodingElement (OOCTXT* pctxt, H245RedundancyEncodingElement* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.payloadTypePresent);
+
+ /* encode dataType */
+
+ stat = asn1PE_H245DataType (pctxt, (H245DataType*)pvalue->dataType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode payloadType */
+
+ if (pvalue->m.payloadTypePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->payloadType, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245RedundancyEncodingElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245_SeqOfH245RedundancyEncodingElement (OOCTXT* pctxt, H245_SeqOfH245RedundancyEncodingElement* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H245RedundancyEncodingElement (pctxt, ((H245RedundancyEncodingElement*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncoding_rtpRedundancyEncoding */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RedundancyEncoding_rtpRedundancyEncoding (OOCTXT* pctxt, H245RedundancyEncoding_rtpRedundancyEncoding* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.primaryPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.secondaryPresent);
+
+ /* encode primary */
+
+ if (pvalue->m.primaryPresent) {
+ stat = asn1PE_H245RedundancyEncodingElement (pctxt, &pvalue->primary);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode secondary */
+
+ if (pvalue->m.secondaryPresent) {
+ stat = asn1PE_H245_SeqOfH245RedundancyEncodingElement (pctxt, &pvalue->secondary);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncoding */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RedundancyEncoding (OOCTXT* pctxt, H245RedundancyEncoding* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.rtpRedundancyEncodingPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.secondaryEncodingPresent);
+
+ /* encode redundancyEncodingMethod */
+
+ stat = asn1PE_H245RedundancyEncodingMethod (pctxt, &pvalue->redundancyEncodingMethod);
+ if (stat != ASN_OK) return stat;
+
+ /* encode secondaryEncoding */
+
+ if (pvalue->m.secondaryEncodingPresent) {
+ stat = asn1PE_H245DataType (pctxt, (H245DataType*)pvalue->secondaryEncoding);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.rtpRedundancyEncodingPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.rtpRedundancyEncodingPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245RedundancyEncoding_rtpRedundancyEncoding (&lctxt, &pvalue->rtpRedundancyEncoding);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplePayloadStreamElement (OOCTXT* pctxt, H245MultiplePayloadStreamElement* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.payloadTypePresent);
+
+ /* encode dataType */
+
+ stat = asn1PE_H245DataType (pctxt, (H245DataType*)pvalue->dataType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode payloadType */
+
+ if (pvalue->m.payloadTypePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->payloadType, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245MultiplePayloadStreamElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245_SeqOfH245MultiplePayloadStreamElement (OOCTXT* pctxt, H245_SeqOfH245MultiplePayloadStreamElement* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H245MultiplePayloadStreamElement (pctxt, ((H245MultiplePayloadStreamElement*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStream */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplePayloadStream (OOCTXT* pctxt, H245MultiplePayloadStream* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode elements */
+
+ stat = asn1PE_H245_SeqOfH245MultiplePayloadStreamElement (pctxt, &pvalue->elements);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733_mode_separateStream_differentPort */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECData_rfc2733_mode_separateStream_differentPort (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream_differentPort* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.protectedPayloadTypePresent);
+
+ /* encode protectedSessionID */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->protectedSessionID, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode protectedPayloadType */
+
+ if (pvalue->m.protectedPayloadTypePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->protectedPayloadType, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733_mode_separateStream_samePort */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECData_rfc2733_mode_separateStream_samePort (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream_samePort* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode protectedPayloadType */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->protectedPayloadType, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733_mode_separateStream */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECData_rfc2733_mode_separateStream (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* differentPort */
+ case 1:
+ stat = asn1PE_H245FECData_rfc2733_mode_separateStream_differentPort (pctxt, pvalue->u.differentPort);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* samePort */
+ case 2:
+ stat = asn1PE_H245FECData_rfc2733_mode_separateStream_samePort (pctxt, pvalue->u.samePort);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733_mode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECData_rfc2733_mode (OOCTXT* pctxt, H245FECData_rfc2733_mode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* redundancyEncoding */
+ case 1:
+ /* NULL */
+ break;
+
+ /* separateStream */
+ case 2:
+ stat = asn1PE_H245FECData_rfc2733_mode_separateStream (pctxt, pvalue->u.separateStream);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECData_rfc2733 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECData_rfc2733 (OOCTXT* pctxt, H245FECData_rfc2733* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode mode */
+
+ stat = asn1PE_H245FECData_rfc2733_mode (pctxt, &pvalue->mode);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECData */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECData (OOCTXT* pctxt, H245FECData* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* rfc2733 */
+ case 1:
+ stat = asn1PE_H245FECData_rfc2733 (pctxt, pvalue->u.rfc2733);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H235Media_mediaType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H235Media_mediaType (OOCTXT* pctxt, H245H235Media_mediaType* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* videoData */
+ case 2:
+ stat = asn1PE_H245VideoCapability (pctxt, pvalue->u.videoData);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* audioData */
+ case 3:
+ stat = asn1PE_H245AudioCapability (pctxt, pvalue->u.audioData);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* data */
+ case 4:
+ stat = asn1PE_H245DataApplicationCapability (pctxt, pvalue->u.data);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* redundancyEncoding */
+ case 5:
+ stat = asn1PE_H245RedundancyEncoding (&lctxt, pvalue->u.redundancyEncoding);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* multiplePayloadStream */
+ case 6:
+ stat = asn1PE_H245MultiplePayloadStream (&lctxt, pvalue->u.multiplePayloadStream);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* fec */
+ case 7:
+ stat = asn1PE_H245FECData (&lctxt, pvalue->u.fec);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H235Media */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H235Media (OOCTXT* pctxt, H245H235Media* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode encryptionAuthenticationAndIntegrity */
+
+ stat = asn1PE_H245EncryptionAuthenticationAndIntegrity (pctxt, &pvalue->encryptionAuthenticationAndIntegrity);
+ if (stat != ASN_OK) return stat;
+
+ /* encode mediaType */
+
+ stat = asn1PE_H245H235Media_mediaType (pctxt, &pvalue->mediaType);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexedStreamParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexedStreamParameter (OOCTXT* pctxt, H245MultiplexedStreamParameter* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode multiplexFormat */
+
+ stat = asn1PE_H245MultiplexFormat (pctxt, &pvalue->multiplexFormat);
+ if (stat != ASN_OK) return stat;
+
+ /* encode controlOnMuxStream */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->controlOnMuxStream);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DataType (OOCTXT* pctxt, H245DataType* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 6);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* nullData */
+ case 2:
+ /* NULL */
+ break;
+
+ /* videoData */
+ case 3:
+ stat = asn1PE_H245VideoCapability (pctxt, pvalue->u.videoData);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* audioData */
+ case 4:
+ stat = asn1PE_H245AudioCapability (pctxt, pvalue->u.audioData);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* data */
+ case 5:
+ stat = asn1PE_H245DataApplicationCapability (pctxt, pvalue->u.data);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* encryptionData */
+ case 6:
+ stat = asn1PE_H245EncryptionMode (pctxt, pvalue->u.encryptionData);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* h235Control */
+ case 7:
+ stat = asn1PE_H245NonStandardParameter (&lctxt, pvalue->u.h235Control);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* h235Media */
+ case 8:
+ stat = asn1PE_H245H235Media (&lctxt, pvalue->u.h235Media);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* multiplexedStream */
+ case 9:
+ stat = asn1PE_H245MultiplexedStreamParameter (&lctxt, pvalue->u.multiplexedStream);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* redundancyEncoding */
+ case 10:
+ stat = asn1PE_H245RedundancyEncoding (&lctxt, pvalue->u.redundancyEncoding);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* multiplePayloadStream */
+ case 11:
+ stat = asn1PE_H245MultiplePayloadStream (&lctxt, pvalue->u.multiplePayloadStream);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* fec */
+ case 12:
+ stat = asn1PE_H245FECData (&lctxt, pvalue->u.fec);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H222LogicalChannelParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H222LogicalChannelParameters (OOCTXT* pctxt, H245H222LogicalChannelParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.pcr_pidPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.programDescriptorsPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.streamDescriptorsPresent);
+
+ /* encode resourceID */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->resourceID, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode subChannelID */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->subChannelID, 0U, 8191U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode pcr_pid */
+
+ if (pvalue->m.pcr_pidPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->pcr_pid, 0U, 8191U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode programDescriptors */
+
+ if (pvalue->m.programDescriptorsPresent) {
+ stat = encodeOctetString (pctxt, pvalue->programDescriptors.numocts, pvalue->programDescriptors.data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode streamDescriptors */
+
+ if (pvalue->m.streamDescriptorsPresent) {
+ stat = encodeOctetString (pctxt, pvalue->streamDescriptors.numocts, pvalue->streamDescriptors.data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223LogicalChannelParameters_adaptationLayerType_al3 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223LogicalChannelParameters_adaptationLayerType_al3 (OOCTXT* pctxt, H245H223LogicalChannelParameters_adaptationLayerType_al3* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode controlFieldOctets */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->controlFieldOctets, 0U, 2U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode sendBufferSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->sendBufferSize, 0U, 16777215U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters_transferMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223AL1MParameters_transferMode (OOCTXT* pctxt, H245H223AL1MParameters_transferMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* framed */
+ case 1:
+ /* NULL */
+ break;
+
+ /* unframed */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters_headerFEC */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223AL1MParameters_headerFEC (OOCTXT* pctxt, H245H223AL1MParameters_headerFEC* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* sebch16_7 */
+ case 1:
+ /* NULL */
+ break;
+
+ /* golay24_12 */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters_crcLength */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223AL1MParameters_crcLength (OOCTXT* pctxt, H245H223AL1MParameters_crcLength* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* crc4bit */
+ case 1:
+ /* NULL */
+ break;
+
+ /* crc12bit */
+ case 2:
+ /* NULL */
+ break;
+
+ /* crc20bit */
+ case 3:
+ /* NULL */
+ break;
+
+ /* crc28bit */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* crc8bit */
+ case 5:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* crc16bit */
+ case 6:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* crc32bit */
+ case 7:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* crcNotUsed */
+ case 8:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AnnexCArqParameters_numberOfRetransmissions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223AnnexCArqParameters_numberOfRetransmissions (OOCTXT* pctxt, H245H223AnnexCArqParameters_numberOfRetransmissions* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* finite */
+ case 1:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.finite, 0U, 16U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* infinite */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AnnexCArqParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223AnnexCArqParameters (OOCTXT* pctxt, H245H223AnnexCArqParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode numberOfRetransmissions */
+
+ stat = asn1PE_H245H223AnnexCArqParameters_numberOfRetransmissions (pctxt, &pvalue->numberOfRetransmissions);
+ if (stat != ASN_OK) return stat;
+
+ /* encode sendBufferSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->sendBufferSize, 0U, 16777215U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters_arqType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223AL1MParameters_arqType (OOCTXT* pctxt, H245H223AL1MParameters_arqType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* noArq */
+ case 1:
+ /* NULL */
+ break;
+
+ /* typeIArq */
+ case 2:
+ stat = asn1PE_H245H223AnnexCArqParameters (pctxt, pvalue->u.typeIArq);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* typeIIArq */
+ case 3:
+ stat = asn1PE_H245H223AnnexCArqParameters (pctxt, pvalue->u.typeIIArq);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL1MParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223AL1MParameters (OOCTXT* pctxt, H245H223AL1MParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.rsCodeCorrectionPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode transferMode */
+
+ stat = asn1PE_H245H223AL1MParameters_transferMode (pctxt, &pvalue->transferMode);
+ if (stat != ASN_OK) return stat;
+
+ /* encode headerFEC */
+
+ stat = asn1PE_H245H223AL1MParameters_headerFEC (pctxt, &pvalue->headerFEC);
+ if (stat != ASN_OK) return stat;
+
+ /* encode crcLength */
+
+ stat = asn1PE_H245H223AL1MParameters_crcLength (pctxt, &pvalue->crcLength);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rcpcCodeRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->rcpcCodeRate, 8U, 32U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode arqType */
+
+ stat = asn1PE_H245H223AL1MParameters_arqType (pctxt, &pvalue->arqType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode alpduInterleaving */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alpduInterleaving);
+ if (stat != ASN_OK) return stat;
+
+ /* encode alsduSplitting */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alsduSplitting);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.rsCodeCorrectionPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.rsCodeCorrectionPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->rsCodeCorrection, 0U, 127U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL2MParameters_headerFEC */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223AL2MParameters_headerFEC (OOCTXT* pctxt, H245H223AL2MParameters_headerFEC* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* sebch16_5 */
+ case 1:
+ /* NULL */
+ break;
+
+ /* golay24_12 */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL2MParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223AL2MParameters (OOCTXT* pctxt, H245H223AL2MParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode headerFEC */
+
+ stat = asn1PE_H245H223AL2MParameters_headerFEC (pctxt, &pvalue->headerFEC);
+ if (stat != ASN_OK) return stat;
+
+ /* encode alpduInterleaving */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alpduInterleaving);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL3MParameters_headerFormat */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223AL3MParameters_headerFormat (OOCTXT* pctxt, H245H223AL3MParameters_headerFormat* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* sebch16_7 */
+ case 1:
+ /* NULL */
+ break;
+
+ /* golay24_12 */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL3MParameters_crcLength */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223AL3MParameters_crcLength (OOCTXT* pctxt, H245H223AL3MParameters_crcLength* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* crc4bit */
+ case 1:
+ /* NULL */
+ break;
+
+ /* crc12bit */
+ case 2:
+ /* NULL */
+ break;
+
+ /* crc20bit */
+ case 3:
+ /* NULL */
+ break;
+
+ /* crc28bit */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* crc8bit */
+ case 5:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* crc16bit */
+ case 6:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* crc32bit */
+ case 7:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* crcNotUsed */
+ case 8:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL3MParameters_arqType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223AL3MParameters_arqType (OOCTXT* pctxt, H245H223AL3MParameters_arqType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* noArq */
+ case 1:
+ /* NULL */
+ break;
+
+ /* typeIArq */
+ case 2:
+ stat = asn1PE_H245H223AnnexCArqParameters (pctxt, pvalue->u.typeIArq);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* typeIIArq */
+ case 3:
+ stat = asn1PE_H245H223AnnexCArqParameters (pctxt, pvalue->u.typeIIArq);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223AL3MParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223AL3MParameters (OOCTXT* pctxt, H245H223AL3MParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.rsCodeCorrectionPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode headerFormat */
+
+ stat = asn1PE_H245H223AL3MParameters_headerFormat (pctxt, &pvalue->headerFormat);
+ if (stat != ASN_OK) return stat;
+
+ /* encode crcLength */
+
+ stat = asn1PE_H245H223AL3MParameters_crcLength (pctxt, &pvalue->crcLength);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rcpcCodeRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->rcpcCodeRate, 8U, 32U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode arqType */
+
+ stat = asn1PE_H245H223AL3MParameters_arqType (pctxt, &pvalue->arqType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode alpduInterleaving */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alpduInterleaving);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.rsCodeCorrectionPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.rsCodeCorrectionPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->rsCodeCorrection, 0U, 127U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223LogicalChannelParameters_adaptationLayerType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223LogicalChannelParameters_adaptationLayerType (OOCTXT* pctxt, H245H223LogicalChannelParameters_adaptationLayerType* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 6);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* al1Framed */
+ case 2:
+ /* NULL */
+ break;
+
+ /* al1NotFramed */
+ case 3:
+ /* NULL */
+ break;
+
+ /* al2WithoutSequenceNumbers */
+ case 4:
+ /* NULL */
+ break;
+
+ /* al2WithSequenceNumbers */
+ case 5:
+ /* NULL */
+ break;
+
+ /* al3 */
+ case 6:
+ stat = asn1PE_H245H223LogicalChannelParameters_adaptationLayerType_al3 (pctxt, pvalue->u.al3);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* al1M */
+ case 7:
+ stat = asn1PE_H245H223AL1MParameters (&lctxt, pvalue->u.al1M);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* al2M */
+ case 8:
+ stat = asn1PE_H245H223AL2MParameters (&lctxt, pvalue->u.al2M);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* al3M */
+ case 9:
+ stat = asn1PE_H245H223AL3MParameters (&lctxt, pvalue->u.al3M);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223LogicalChannelParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223LogicalChannelParameters (OOCTXT* pctxt, H245H223LogicalChannelParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode adaptationLayerType */
+
+ stat = asn1PE_H245H223LogicalChannelParameters_adaptationLayerType (pctxt, &pvalue->adaptationLayerType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode segmentableFlag */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->segmentableFlag);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CRCLength */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CRCLength (OOCTXT* pctxt, H245CRCLength* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* crc8bit */
+ case 1:
+ /* NULL */
+ break;
+
+ /* crc16bit */
+ case 2:
+ /* NULL */
+ break;
+
+ /* crc32bit */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76HDLCParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245V76HDLCParameters (OOCTXT* pctxt, H245V76HDLCParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode crcLength */
+
+ stat = asn1PE_H245CRCLength (pctxt, &pvalue->crcLength);
+ if (stat != ASN_OK) return stat;
+
+ /* encode n401 */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->n401, 1U, 4095U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode loopbackTestProcedure */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->loopbackTestProcedure);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters_suspendResume */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245V76LogicalChannelParameters_suspendResume (OOCTXT* pctxt, H245V76LogicalChannelParameters_suspendResume* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* noSuspendResume */
+ case 1:
+ /* NULL */
+ break;
+
+ /* suspendResumewAddress */
+ case 2:
+ /* NULL */
+ break;
+
+ /* suspendResumewoAddress */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters_mode_eRM_recovery */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245V76LogicalChannelParameters_mode_eRM_recovery (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode_eRM_recovery* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* rej */
+ case 1:
+ /* NULL */
+ break;
+
+ /* sREJ */
+ case 2:
+ /* NULL */
+ break;
+
+ /* mSREJ */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters_mode_eRM */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245V76LogicalChannelParameters_mode_eRM (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode_eRM* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode windowSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->windowSize, 1U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode recovery */
+
+ stat = asn1PE_H245V76LogicalChannelParameters_mode_eRM_recovery (pctxt, &pvalue->recovery);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters_mode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245V76LogicalChannelParameters_mode (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* eRM */
+ case 1:
+ stat = asn1PE_H245V76LogicalChannelParameters_mode_eRM (pctxt, pvalue->u.eRM);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* uNERM */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V75Parameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245V75Parameters (OOCTXT* pctxt, H245V75Parameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode audioHeaderPresent */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioHeaderPresent);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76LogicalChannelParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245V76LogicalChannelParameters (OOCTXT* pctxt, H245V76LogicalChannelParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode hdlcParameters */
+
+ stat = asn1PE_H245V76HDLCParameters (pctxt, &pvalue->hdlcParameters);
+ if (stat != ASN_OK) return stat;
+
+ /* encode suspendResume */
+
+ stat = asn1PE_H245V76LogicalChannelParameters_suspendResume (pctxt, &pvalue->suspendResume);
+ if (stat != ASN_OK) return stat;
+
+ /* encode uIH */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->uIH);
+ if (stat != ASN_OK) return stat;
+
+ /* encode mode */
+
+ stat = asn1PE_H245V76LogicalChannelParameters_mode (pctxt, &pvalue->mode);
+ if (stat != ASN_OK) return stat;
+
+ /* encode v75Parameters */
+
+ stat = asn1PE_H245V75Parameters (pctxt, &pvalue->v75Parameters);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPAddress_network */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress_iPAddress_network (OOCTXT* pctxt, H245UnicastAddress_iPAddress_network* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress_iPAddress (OOCTXT* pctxt, H245UnicastAddress_iPAddress* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode network */
+
+ stat = asn1PE_H245UnicastAddress_iPAddress_network (pctxt, &pvalue->network);
+ if (stat != ASN_OK) return stat;
+
+ /* encode tsapIdentifier */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->tsapIdentifier, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPXAddress_node */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress_iPXAddress_node (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_node* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 6, 6, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPXAddress_netnum */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress_iPXAddress_netnum (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_netnum* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPXAddress_tsapIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress_iPXAddress_tsapIdentifier (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_tsapIdentifier* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 2, 2, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPXAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress_iPXAddress (OOCTXT* pctxt, H245UnicastAddress_iPXAddress* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode node */
+
+ stat = asn1PE_H245UnicastAddress_iPXAddress_node (pctxt, &pvalue->node);
+ if (stat != ASN_OK) return stat;
+
+ /* encode netnum */
+
+ stat = asn1PE_H245UnicastAddress_iPXAddress_netnum (pctxt, &pvalue->netnum);
+ if (stat != ASN_OK) return stat;
+
+ /* encode tsapIdentifier */
+
+ stat = asn1PE_H245UnicastAddress_iPXAddress_tsapIdentifier (pctxt, &pvalue->tsapIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iP6Address_network */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress_iP6Address_network (OOCTXT* pctxt, H245UnicastAddress_iP6Address_network* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iP6Address */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress_iP6Address (OOCTXT* pctxt, H245UnicastAddress_iP6Address* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode network */
+
+ stat = asn1PE_H245UnicastAddress_iP6Address_network (pctxt, &pvalue->network);
+ if (stat != ASN_OK) return stat;
+
+ /* encode tsapIdentifier */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->tsapIdentifier, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_netBios */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress_netBios (OOCTXT* pctxt, H245UnicastAddress_netBios* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPSourceRouteAddress_routing */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress_iPSourceRouteAddress_routing (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_routing* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* strict */
+ case 1:
+ /* NULL */
+ break;
+
+ /* loose */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPSourceRouteAddress_network */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress_iPSourceRouteAddress_network (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_network* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPSourceRouteAddress_route_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress_iPSourceRouteAddress_route_element (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_route_element* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245UnicastAddress_iPSourceRouteAddress_route_elem */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element (OOCTXT* pctxt, H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H245UnicastAddress_iPSourceRouteAddress_route_element (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_iPSourceRouteAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress_iPSourceRouteAddress (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode routing */
+
+ stat = asn1PE_H245UnicastAddress_iPSourceRouteAddress_routing (pctxt, &pvalue->routing);
+ if (stat != ASN_OK) return stat;
+
+ /* encode network */
+
+ stat = asn1PE_H245UnicastAddress_iPSourceRouteAddress_network (pctxt, &pvalue->network);
+ if (stat != ASN_OK) return stat;
+
+ /* encode tsapIdentifier */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->tsapIdentifier, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode route */
+
+ stat = asn1PE_H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element (pctxt, &pvalue->route);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress_nsap */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress_nsap (OOCTXT* pctxt, H245UnicastAddress_nsap* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UnicastAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UnicastAddress (OOCTXT* pctxt, H245UnicastAddress* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 5);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* iPAddress */
+ case 1:
+ stat = asn1PE_H245UnicastAddress_iPAddress (pctxt, pvalue->u.iPAddress);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* iPXAddress */
+ case 2:
+ stat = asn1PE_H245UnicastAddress_iPXAddress (pctxt, pvalue->u.iPXAddress);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* iP6Address */
+ case 3:
+ stat = asn1PE_H245UnicastAddress_iP6Address (pctxt, pvalue->u.iP6Address);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* netBios */
+ case 4:
+ stat = asn1PE_H245UnicastAddress_netBios (pctxt, pvalue->u.netBios);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* iPSourceRouteAddress */
+ case 5:
+ stat = asn1PE_H245UnicastAddress_iPSourceRouteAddress (pctxt, pvalue->u.iPSourceRouteAddress);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* nsap */
+ case 6:
+ stat = asn1PE_H245UnicastAddress_nsap (&lctxt, pvalue->u.nsap);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* nonStandardAddress */
+ case 7:
+ stat = asn1PE_H245NonStandardParameter (&lctxt, pvalue->u.nonStandardAddress);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MulticastAddress_iPAddress_network */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MulticastAddress_iPAddress_network (OOCTXT* pctxt, H245MulticastAddress_iPAddress_network* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MulticastAddress_iPAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MulticastAddress_iPAddress (OOCTXT* pctxt, H245MulticastAddress_iPAddress* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode network */
+
+ stat = asn1PE_H245MulticastAddress_iPAddress_network (pctxt, &pvalue->network);
+ if (stat != ASN_OK) return stat;
+
+ /* encode tsapIdentifier */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->tsapIdentifier, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MulticastAddress_iP6Address_network */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MulticastAddress_iP6Address_network (OOCTXT* pctxt, H245MulticastAddress_iP6Address_network* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MulticastAddress_iP6Address */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MulticastAddress_iP6Address (OOCTXT* pctxt, H245MulticastAddress_iP6Address* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode network */
+
+ stat = asn1PE_H245MulticastAddress_iP6Address_network (pctxt, &pvalue->network);
+ if (stat != ASN_OK) return stat;
+
+ /* encode tsapIdentifier */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->tsapIdentifier, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MulticastAddress_nsap */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MulticastAddress_nsap (OOCTXT* pctxt, H245MulticastAddress_nsap* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MulticastAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MulticastAddress (OOCTXT* pctxt, H245MulticastAddress* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* iPAddress */
+ case 1:
+ stat = asn1PE_H245MulticastAddress_iPAddress (pctxt, pvalue->u.iPAddress);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* iP6Address */
+ case 2:
+ stat = asn1PE_H245MulticastAddress_iP6Address (pctxt, pvalue->u.iP6Address);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* nsap */
+ case 3:
+ stat = asn1PE_H245MulticastAddress_nsap (&lctxt, pvalue->u.nsap);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* nonStandardAddress */
+ case 4:
+ stat = asn1PE_H245NonStandardParameter (&lctxt, pvalue->u.nonStandardAddress);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TransportAddress (OOCTXT* pctxt, H245TransportAddress* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* unicastAddress */
+ case 1:
+ stat = asn1PE_H245UnicastAddress (pctxt, pvalue->u.unicastAddress);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* multicastAddress */
+ case 2:
+ stat = asn1PE_H245MulticastAddress (pctxt, pvalue->u.multicastAddress);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* McuNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245McuNumber (OOCTXT* pctxt, H245McuNumber value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConsUnsigned (pctxt, value, 0U, 192U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TerminalNumber (OOCTXT* pctxt, H245TerminalNumber value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConsUnsigned (pctxt, value, 0U, 192U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalLabel */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TerminalLabel (OOCTXT* pctxt, H245TerminalLabel* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode mcuNumber */
+
+ stat = asn1PE_H245McuNumber (pctxt, pvalue->mcuNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode terminalNumber */
+
+ stat = asn1PE_H245TerminalNumber (pctxt, pvalue->terminalNumber);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250LogicalChannelParameters_mediaPacketization */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H2250LogicalChannelParameters_mediaPacketization (OOCTXT* pctxt, H245H2250LogicalChannelParameters_mediaPacketization* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 1);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* h261aVideoPacketization */
+ case 1:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* rtpPayloadType */
+ case 2:
+ stat = asn1PE_H245RTPPayloadType (&lctxt, pvalue->u.rtpPayloadType);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250LogicalChannelParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H2250LogicalChannelParameters (OOCTXT* pctxt, H245H2250LogicalChannelParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.transportCapabilityPresent ||
+ pvalue->m.redundancyEncodingPresent ||
+ pvalue->m.sourcePresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.associatedSessionIDPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaChannelPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaGuaranteedDeliveryPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaControlChannelPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaControlGuaranteedDeliveryPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.silenceSuppressionPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dynamicRTPPayloadTypePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaPacketizationPresent);
+
+ /* encode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ stat = asn1PE_H245_SeqOfH245NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode sessionID */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->sessionID, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode associatedSessionID */
+
+ if (pvalue->m.associatedSessionIDPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->associatedSessionID, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode mediaChannel */
+
+ if (pvalue->m.mediaChannelPresent) {
+ stat = asn1PE_H245TransportAddress (pctxt, &pvalue->mediaChannel);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode mediaGuaranteedDelivery */
+
+ if (pvalue->m.mediaGuaranteedDeliveryPresent) {
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->mediaGuaranteedDelivery);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode mediaControlChannel */
+
+ if (pvalue->m.mediaControlChannelPresent) {
+ stat = asn1PE_H245TransportAddress (pctxt, &pvalue->mediaControlChannel);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode mediaControlGuaranteedDelivery */
+
+ if (pvalue->m.mediaControlGuaranteedDeliveryPresent) {
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->mediaControlGuaranteedDelivery);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode silenceSuppression */
+
+ if (pvalue->m.silenceSuppressionPresent) {
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->silenceSuppression);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode destination */
+
+ if (pvalue->m.destinationPresent) {
+ stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->destination);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode dynamicRTPPayloadType */
+
+ if (pvalue->m.dynamicRTPPayloadTypePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->dynamicRTPPayloadType, 96U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode mediaPacketization */
+
+ if (pvalue->m.mediaPacketizationPresent) {
+ stat = asn1PE_H245H2250LogicalChannelParameters_mediaPacketization (pctxt, &pvalue->mediaPacketization);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.transportCapabilityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.redundancyEncodingPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sourcePresent);
+ /* encode extension elements */
+
+ if (pvalue->m.transportCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245TransportCapability (&lctxt, &pvalue->transportCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.redundancyEncodingPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245RedundancyEncoding (&lctxt, &pvalue->redundancyEncoding);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.sourcePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245TerminalLabel (&lctxt, &pvalue->source);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel_forwardLogicalChannelParameters_multi */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* h222LogicalChannelParameters */
+ case 1:
+ stat = asn1PE_H245H222LogicalChannelParameters (pctxt, pvalue->u.h222LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h223LogicalChannelParameters */
+ case 2:
+ stat = asn1PE_H245H223LogicalChannelParameters (pctxt, pvalue->u.h223LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* v76LogicalChannelParameters */
+ case 3:
+ stat = asn1PE_H245V76LogicalChannelParameters (pctxt, pvalue->u.v76LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* h2250LogicalChannelParameters */
+ case 4:
+ stat = asn1PE_H245H2250LogicalChannelParameters (&lctxt, pvalue->u.h2250LogicalChannelParameters);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* none */
+ case 5:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel_forwardLogicalChannelParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245OpenLogicalChannel_forwardLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannel_forwardLogicalChannelParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.forwardLogicalChannelDependencyPresent ||
+ pvalue->m.replacementForPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.portNumberPresent);
+
+ /* encode portNumber */
+
+ if (pvalue->m.portNumberPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->portNumber, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode dataType */
+
+ stat = asn1PE_H245DataType (pctxt, &pvalue->dataType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multiplexParameters */
+
+ stat = asn1PE_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters (pctxt, &pvalue->multiplexParameters);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.forwardLogicalChannelDependencyPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.replacementForPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.forwardLogicalChannelDependencyPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245LogicalChannelNumber (&lctxt, pvalue->forwardLogicalChannelDependency);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.replacementForPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245LogicalChannelNumber (&lctxt, pvalue->replacementFor);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel_reverseLogicalChannelParameters_multi */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* h223LogicalChannelParameters */
+ case 1:
+ stat = asn1PE_H245H223LogicalChannelParameters (pctxt, pvalue->u.h223LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* v76LogicalChannelParameters */
+ case 2:
+ stat = asn1PE_H245V76LogicalChannelParameters (pctxt, pvalue->u.v76LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* h2250LogicalChannelParameters */
+ case 3:
+ stat = asn1PE_H245H2250LogicalChannelParameters (&lctxt, pvalue->u.h2250LogicalChannelParameters);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel_reverseLogicalChannelParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245OpenLogicalChannel_reverseLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannel_reverseLogicalChannelParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.reverseLogicalChannelDependencyPresent ||
+ pvalue->m.replacementForPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multiplexParametersPresent);
+
+ /* encode dataType */
+
+ stat = asn1PE_H245DataType (pctxt, &pvalue->dataType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multiplexParameters */
+
+ if (pvalue->m.multiplexParametersPresent) {
+ stat = asn1PE_H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters (pctxt, &pvalue->multiplexParameters);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.reverseLogicalChannelDependencyPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.replacementForPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.reverseLogicalChannelDependencyPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245LogicalChannelNumber (&lctxt, pvalue->reverseLogicalChannelDependency);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.replacementForPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245LogicalChannelNumber (&lctxt, pvalue->replacementFor);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters_distribution */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NetworkAccessParameters_distribution (OOCTXT* pctxt, H245NetworkAccessParameters_distribution* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* unicast */
+ case 1:
+ /* NULL */
+ break;
+
+ /* multicast */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters_networkAddress */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_MULTIMEDIA_SYSTEM_CONTROL_NetworkAccessParameters_networkAddress_e164Address_CharSet;
+
+EXTERN int asn1PE_H245NetworkAccessParameters_networkAddress (OOCTXT* pctxt, H245NetworkAccessParameters_networkAddress* pvalue)
+{
+ static Asn1SizeCnst e164Address_lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* q2931Address */
+ case 1:
+ stat = asn1PE_H245Q2931Address (pctxt, pvalue->u.q2931Address);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* e164Address */
+ case 2:
+ addSizeConstraint (pctxt, &e164Address_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->u.e164Address, gs_MULTIMEDIA_SYSTEM_CONTROL_NetworkAccessParameters_networkAddress_e164Address_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* localAreaAddress */
+ case 3:
+ stat = asn1PE_H245TransportAddress (pctxt, pvalue->u.localAreaAddress);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters_externalReference */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NetworkAccessParameters_externalReference (OOCTXT* pctxt, H245NetworkAccessParameters_externalReference* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 255, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters_t120SetupProcedure */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NetworkAccessParameters_t120SetupProcedure (OOCTXT* pctxt, H245NetworkAccessParameters_t120SetupProcedure* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* originateCall */
+ case 1:
+ /* NULL */
+ break;
+
+ /* waitForCall */
+ case 2:
+ /* NULL */
+ break;
+
+ /* issueQuery */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NetworkAccessParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NetworkAccessParameters (OOCTXT* pctxt, H245NetworkAccessParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.t120SetupProcedurePresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.distributionPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.externalReferencePresent);
+
+ /* encode distribution */
+
+ if (pvalue->m.distributionPresent) {
+ stat = asn1PE_H245NetworkAccessParameters_distribution (pctxt, &pvalue->distribution);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode networkAddress */
+
+ stat = asn1PE_H245NetworkAccessParameters_networkAddress (pctxt, &pvalue->networkAddress);
+ if (stat != ASN_OK) return stat;
+
+ /* encode associateConference */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->associateConference);
+ if (stat != ASN_OK) return stat;
+
+ /* encode externalReference */
+
+ if (pvalue->m.externalReferencePresent) {
+ stat = asn1PE_H245NetworkAccessParameters_externalReference (pctxt, &pvalue->externalReference);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.t120SetupProcedurePresent);
+ /* encode extension elements */
+
+ if (pvalue->m.t120SetupProcedurePresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245NetworkAccessParameters_t120SetupProcedure (&lctxt, &pvalue->t120SetupProcedure);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EscrowData_escrowValue */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EscrowData_escrowValue (OOCTXT* pctxt, H245EscrowData_escrowValue* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 65535, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EscrowData */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EscrowData (OOCTXT* pctxt, H245EscrowData* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode escrowID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->escrowID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode escrowValue */
+
+ stat = asn1PE_H245EscrowData_escrowValue (pctxt, &pvalue->escrowValue);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionSync_escrowentry */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EncryptionSync_escrowentry (OOCTXT* pctxt, H245EncryptionSync_escrowentry* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245EscrowData (pctxt, ((H245EscrowData*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionSync */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EncryptionSync (OOCTXT* pctxt, H245EncryptionSync* pvalue)
+{
+ static Asn1SizeCnst h235Key_lsize1 = { 0, 1, 65535, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.escrowentryPresent);
+
+ /* encode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ stat = asn1PE_H245NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode synchFlag */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->synchFlag, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h235Key */
+
+ addSizeConstraint (pctxt, &h235Key_lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->h235Key.numocts, pvalue->h235Key.data);
+ if (stat != ASN_OK) return stat;
+
+ /* encode escrowentry */
+
+ if (pvalue->m.escrowentryPresent) {
+ stat = asn1PE_H245EncryptionSync_escrowentry (pctxt, &pvalue->escrowentry);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannel */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245OpenLogicalChannel (OOCTXT* pctxt, H245OpenLogicalChannel* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.separateStackPresent ||
+ pvalue->m.encryptionSyncPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.reverseLogicalChannelParametersPresent);
+
+ /* encode forwardLogicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode forwardLogicalChannelParameters */
+
+ stat = asn1PE_H245OpenLogicalChannel_forwardLogicalChannelParameters (pctxt, &pvalue->forwardLogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+
+ /* encode reverseLogicalChannelParameters */
+
+ if (pvalue->m.reverseLogicalChannelParametersPresent) {
+ stat = asn1PE_H245OpenLogicalChannel_reverseLogicalChannelParameters (pctxt, &pvalue->reverseLogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.separateStackPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.encryptionSyncPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.separateStackPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245NetworkAccessParameters (&lctxt, &pvalue->separateStack);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.encryptionSyncPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245EncryptionSync (&lctxt, &pvalue->encryptionSync);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CloseLogicalChannel_source */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CloseLogicalChannel_source (OOCTXT* pctxt, H245CloseLogicalChannel_source* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* user */
+ case 1:
+ /* NULL */
+ break;
+
+ /* lcse */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CloseLogicalChannel_reason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CloseLogicalChannel_reason (OOCTXT* pctxt, H245CloseLogicalChannel_reason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* unknown */
+ case 1:
+ /* NULL */
+ break;
+
+ /* reopen */
+ case 2:
+ /* NULL */
+ break;
+
+ /* reservationFailure */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CloseLogicalChannel */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CloseLogicalChannel (OOCTXT* pctxt, H245CloseLogicalChannel* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.reasonPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode forwardLogicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode source */
+
+ stat = asn1PE_H245CloseLogicalChannel_source (pctxt, &pvalue->source);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.reasonPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.reasonPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245CloseLogicalChannel_reason (&lctxt, &pvalue->reason);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestChannelClose_reason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestChannelClose_reason (OOCTXT* pctxt, H245RequestChannelClose_reason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* unknown */
+ case 1:
+ /* NULL */
+ break;
+
+ /* normal */
+ case 2:
+ /* NULL */
+ break;
+
+ /* reopen */
+ case 3:
+ /* NULL */
+ break;
+
+ /* reservationFailure */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestChannelClose */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestChannelClose (OOCTXT* pctxt, H245RequestChannelClose* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.qosCapabilityPresent ||
+ pvalue->m.reasonPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode forwardLogicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.qosCapabilityPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.reasonPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.qosCapabilityPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245QOSCapability (&lctxt, &pvalue->qosCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.reasonPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245RequestChannelClose_reason (&lctxt, &pvalue->reason);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexTableEntryNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexTableEntryNumber value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConsUnsigned (pctxt, value, 1U, 15U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexElement_type_subElementList */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexElement_type_subElementList (OOCTXT* pctxt, H245MultiplexElement_type_subElementList* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 2, 255, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245MultiplexElement (pctxt, (H245MultiplexElement*)((H245MultiplexElement*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexElement_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexElement_type (OOCTXT* pctxt, H245MultiplexElement_type* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* logicalChannelNumber */
+ case 1:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.logicalChannelNumber, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* subElementList */
+ case 2:
+ stat = asn1PE_H245MultiplexElement_type_subElementList (pctxt, pvalue->u.subElementList);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexElement_repeatCount */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexElement_repeatCount (OOCTXT* pctxt, H245MultiplexElement_repeatCount* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* finite */
+ case 1:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.finite, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* untilClosingFlag */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexElement (OOCTXT* pctxt, H245MultiplexElement* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode type */
+
+ stat = asn1PE_H245MultiplexElement_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ /* encode repeatCount */
+
+ stat = asn1PE_H245MultiplexElement_repeatCount (pctxt, &pvalue->repeatCount);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntryDescriptor_elementList */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexEntryDescriptor_elementList (OOCTXT* pctxt, H245MultiplexEntryDescriptor_elementList* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245MultiplexElement (pctxt, ((H245MultiplexElement*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntryDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexEntryDescriptor (OOCTXT* pctxt, H245MultiplexEntryDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.elementListPresent);
+
+ /* encode multiplexTableEntryNumber */
+
+ stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->multiplexTableEntryNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode elementList */
+
+ if (pvalue->m.elementListPresent) {
+ stat = asn1PE_H245MultiplexEntryDescriptor_elementList (pctxt, &pvalue->elementList);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySend_multiplexEntryDescriptors */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexEntrySend_multiplexEntryDescriptors (OOCTXT* pctxt, H245MultiplexEntrySend_multiplexEntryDescriptors* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245MultiplexEntryDescriptor (pctxt, ((H245MultiplexEntryDescriptor*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySend */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexEntrySend (OOCTXT* pctxt, H245MultiplexEntrySend* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multiplexEntryDescriptors */
+
+ stat = asn1PE_H245MultiplexEntrySend_multiplexEntryDescriptors (pctxt, &pvalue->multiplexEntryDescriptors);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntry_entryNumbers */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestMultiplexEntry_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntry_entryNumbers* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntry */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestMultiplexEntry (OOCTXT* pctxt, H245RequestMultiplexEntry* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode entryNumbers */
+
+ stat = asn1PE_H245RequestMultiplexEntry_entryNumbers (pctxt, &pvalue->entryNumbers);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H261VideoMode_resolution */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H261VideoMode_resolution (OOCTXT* pctxt, H245H261VideoMode_resolution* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* qcif */
+ case 1:
+ /* NULL */
+ break;
+
+ /* cif */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H261VideoMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H261VideoMode (OOCTXT* pctxt, H245H261VideoMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode resolution */
+
+ stat = asn1PE_H245H261VideoMode_resolution (pctxt, &pvalue->resolution);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 19200U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode stillImageTransmission */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->stillImageTransmission);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H262VideoMode_profileAndLevel */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H262VideoMode_profileAndLevel (OOCTXT* pctxt, H245H262VideoMode_profileAndLevel* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 11);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 10);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* profileAndLevel_SPatML */
+ case 1:
+ /* NULL */
+ break;
+
+ /* profileAndLevel_MPatLL */
+ case 2:
+ /* NULL */
+ break;
+
+ /* profileAndLevel_MPatML */
+ case 3:
+ /* NULL */
+ break;
+
+ /* profileAndLevel_MPatH_14 */
+ case 4:
+ /* NULL */
+ break;
+
+ /* profileAndLevel_MPatHL */
+ case 5:
+ /* NULL */
+ break;
+
+ /* profileAndLevel_SNRatLL */
+ case 6:
+ /* NULL */
+ break;
+
+ /* profileAndLevel_SNRatML */
+ case 7:
+ /* NULL */
+ break;
+
+ /* profileAndLevel_SpatialatH_14 */
+ case 8:
+ /* NULL */
+ break;
+
+ /* profileAndLevel_HPatML */
+ case 9:
+ /* NULL */
+ break;
+
+ /* profileAndLevel_HPatH_14 */
+ case 10:
+ /* NULL */
+ break;
+
+ /* profileAndLevel_HPatHL */
+ case 11:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 12);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H262VideoMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H262VideoMode (OOCTXT* pctxt, H245H262VideoMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBitRatePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.vbvBufferSizePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.samplesPerLinePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.linesPerFramePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.framesPerSecondPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.luminanceSampleRatePresent);
+
+ /* encode profileAndLevel */
+
+ stat = asn1PE_H245H262VideoMode_profileAndLevel (pctxt, &pvalue->profileAndLevel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode videoBitRate */
+
+ if (pvalue->m.videoBitRatePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->videoBitRate, 0U, 1073741823U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode vbvBufferSize */
+
+ if (pvalue->m.vbvBufferSizePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->vbvBufferSize, 0U, 262143U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode samplesPerLine */
+
+ if (pvalue->m.samplesPerLinePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->samplesPerLine, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode linesPerFrame */
+
+ if (pvalue->m.linesPerFramePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->linesPerFrame, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode framesPerSecond */
+
+ if (pvalue->m.framesPerSecondPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->framesPerSecond, 0U, 15U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode luminanceSampleRate */
+
+ if (pvalue->m.luminanceSampleRatePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->luminanceSampleRate, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263VideoMode_resolution */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H263VideoMode_resolution (OOCTXT* pctxt, H245H263VideoMode_resolution* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 5);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* sqcif */
+ case 1:
+ /* NULL */
+ break;
+
+ /* qcif */
+ case 2:
+ /* NULL */
+ break;
+
+ /* cif */
+ case 3:
+ /* NULL */
+ break;
+
+ /* cif4 */
+ case 4:
+ /* NULL */
+ break;
+
+ /* cif16 */
+ case 5:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* custom */
+ case 6:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H263VideoMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H263VideoMode (OOCTXT* pctxt, H245H263VideoMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.errorCompensationPresent ||
+ pvalue->m.enhancementLayerInfoPresent ||
+ pvalue->m.h263OptionsPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode resolution */
+
+ stat = asn1PE_H245H263VideoMode_resolution (pctxt, &pvalue->resolution);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 19200U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode unrestrictedVector */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->unrestrictedVector);
+ if (stat != ASN_OK) return stat;
+
+ /* encode arithmeticCoding */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->arithmeticCoding);
+ if (stat != ASN_OK) return stat;
+
+ /* encode advancedPrediction */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->advancedPrediction);
+ if (stat != ASN_OK) return stat;
+
+ /* encode pbFrames */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->pbFrames);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.errorCompensationPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.enhancementLayerInfoPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h263OptionsPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.errorCompensationPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->errorCompensation);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.enhancementLayerInfoPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245EnhancementLayerInfo (&lctxt, &pvalue->enhancementLayerInfo);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.h263OptionsPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245H263Options (&lctxt, &pvalue->h263Options);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS11172VideoMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245IS11172VideoMode (OOCTXT* pctxt, H245IS11172VideoMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBitRatePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.vbvBufferSizePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.samplesPerLinePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.linesPerFramePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.pictureRatePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.luminanceSampleRatePresent);
+
+ /* encode constrainedBitstream */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->constrainedBitstream);
+ if (stat != ASN_OK) return stat;
+
+ /* encode videoBitRate */
+
+ if (pvalue->m.videoBitRatePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->videoBitRate, 0U, 1073741823U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode vbvBufferSize */
+
+ if (pvalue->m.vbvBufferSizePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->vbvBufferSize, 0U, 262143U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode samplesPerLine */
+
+ if (pvalue->m.samplesPerLinePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->samplesPerLine, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode linesPerFrame */
+
+ if (pvalue->m.linesPerFramePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->linesPerFrame, 0U, 16383U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode pictureRate */
+
+ if (pvalue->m.pictureRatePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->pictureRate, 0U, 15U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode luminanceSampleRate */
+
+ if (pvalue->m.luminanceSampleRatePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->luminanceSampleRate, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VideoMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VideoMode (OOCTXT* pctxt, H245VideoMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 5);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h261VideoMode */
+ case 2:
+ stat = asn1PE_H245H261VideoMode (pctxt, pvalue->u.h261VideoMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h262VideoMode */
+ case 3:
+ stat = asn1PE_H245H262VideoMode (pctxt, pvalue->u.h262VideoMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h263VideoMode */
+ case 4:
+ stat = asn1PE_H245H263VideoMode (pctxt, pvalue->u.h263VideoMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* is11172VideoMode */
+ case 5:
+ stat = asn1PE_H245IS11172VideoMode (pctxt, pvalue->u.is11172VideoMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* genericVideoMode */
+ case 6:
+ stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericVideoMode);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AudioMode_g7231 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245AudioMode_g7231 (OOCTXT* pctxt, H245AudioMode_g7231* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* noSilenceSuppressionLowRate */
+ case 1:
+ /* NULL */
+ break;
+
+ /* noSilenceSuppressionHighRate */
+ case 2:
+ /* NULL */
+ break;
+
+ /* silenceSuppressionLowRate */
+ case 3:
+ /* NULL */
+ break;
+
+ /* silenceSuppressionHighRate */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS11172AudioMode_audioLayer */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245IS11172AudioMode_audioLayer (OOCTXT* pctxt, H245IS11172AudioMode_audioLayer* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* audioLayer1 */
+ case 1:
+ /* NULL */
+ break;
+
+ /* audioLayer2 */
+ case 2:
+ /* NULL */
+ break;
+
+ /* audioLayer3 */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS11172AudioMode_audioSampling */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245IS11172AudioMode_audioSampling (OOCTXT* pctxt, H245IS11172AudioMode_audioSampling* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* audioSampling32k */
+ case 1:
+ /* NULL */
+ break;
+
+ /* audioSampling44k1 */
+ case 2:
+ /* NULL */
+ break;
+
+ /* audioSampling48k */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS11172AudioMode_multichannelType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245IS11172AudioMode_multichannelType (OOCTXT* pctxt, H245IS11172AudioMode_multichannelType* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* singleChannel */
+ case 1:
+ /* NULL */
+ break;
+
+ /* twoChannelStereo */
+ case 2:
+ /* NULL */
+ break;
+
+ /* twoChannelDual */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS11172AudioMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245IS11172AudioMode (OOCTXT* pctxt, H245IS11172AudioMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode audioLayer */
+
+ stat = asn1PE_H245IS11172AudioMode_audioLayer (pctxt, &pvalue->audioLayer);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioSampling */
+
+ stat = asn1PE_H245IS11172AudioMode_audioSampling (pctxt, &pvalue->audioSampling);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multichannelType */
+
+ stat = asn1PE_H245IS11172AudioMode_multichannelType (pctxt, &pvalue->multichannelType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 448U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS13818AudioMode_audioLayer */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245IS13818AudioMode_audioLayer (OOCTXT* pctxt, H245IS13818AudioMode_audioLayer* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* audioLayer1 */
+ case 1:
+ /* NULL */
+ break;
+
+ /* audioLayer2 */
+ case 2:
+ /* NULL */
+ break;
+
+ /* audioLayer3 */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS13818AudioMode_audioSampling */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245IS13818AudioMode_audioSampling (OOCTXT* pctxt, H245IS13818AudioMode_audioSampling* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* audioSampling16k */
+ case 1:
+ /* NULL */
+ break;
+
+ /* audioSampling22k05 */
+ case 2:
+ /* NULL */
+ break;
+
+ /* audioSampling24k */
+ case 3:
+ /* NULL */
+ break;
+
+ /* audioSampling32k */
+ case 4:
+ /* NULL */
+ break;
+
+ /* audioSampling44k1 */
+ case 5:
+ /* NULL */
+ break;
+
+ /* audioSampling48k */
+ case 6:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS13818AudioMode_multichannelType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245IS13818AudioMode_multichannelType (OOCTXT* pctxt, H245IS13818AudioMode_multichannelType* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 9);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* singleChannel */
+ case 1:
+ /* NULL */
+ break;
+
+ /* twoChannelStereo */
+ case 2:
+ /* NULL */
+ break;
+
+ /* twoChannelDual */
+ case 3:
+ /* NULL */
+ break;
+
+ /* threeChannels2_1 */
+ case 4:
+ /* NULL */
+ break;
+
+ /* threeChannels3_0 */
+ case 5:
+ /* NULL */
+ break;
+
+ /* fourChannels2_0_2_0 */
+ case 6:
+ /* NULL */
+ break;
+
+ /* fourChannels2_2 */
+ case 7:
+ /* NULL */
+ break;
+
+ /* fourChannels3_1 */
+ case 8:
+ /* NULL */
+ break;
+
+ /* fiveChannels3_0_2_0 */
+ case 9:
+ /* NULL */
+ break;
+
+ /* fiveChannels3_2 */
+ case 10:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IS13818AudioMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245IS13818AudioMode (OOCTXT* pctxt, H245IS13818AudioMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode audioLayer */
+
+ stat = asn1PE_H245IS13818AudioMode_audioLayer (pctxt, &pvalue->audioLayer);
+ if (stat != ASN_OK) return stat;
+
+ /* encode audioSampling */
+
+ stat = asn1PE_H245IS13818AudioMode_audioSampling (pctxt, &pvalue->audioSampling);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multichannelType */
+
+ stat = asn1PE_H245IS13818AudioMode_multichannelType (pctxt, &pvalue->multichannelType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode lowFrequencyEnhancement */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->lowFrequencyEnhancement);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multilingual */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->multilingual);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 1130U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* G7231AnnexCMode_g723AnnexCAudioMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245G7231AnnexCMode_g723AnnexCAudioMode (OOCTXT* pctxt, H245G7231AnnexCMode_g723AnnexCAudioMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode highRateMode0 */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->highRateMode0, 27U, 78U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode highRateMode1 */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->highRateMode1, 27U, 78U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode lowRateMode0 */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->lowRateMode0, 23U, 66U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode lowRateMode1 */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->lowRateMode1, 23U, 66U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode sidMode0 */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->sidMode0, 6U, 17U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode sidMode1 */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->sidMode1, 6U, 17U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* G7231AnnexCMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245G7231AnnexCMode (OOCTXT* pctxt, H245G7231AnnexCMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode maxAl_sduAudioFrames */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maxAl_sduAudioFrames, 1U, 256U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode silenceSuppression */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->silenceSuppression);
+ if (stat != ASN_OK) return stat;
+
+ /* encode g723AnnexCAudioMode */
+
+ stat = asn1PE_H245G7231AnnexCMode_g723AnnexCAudioMode (pctxt, &pvalue->g723AnnexCAudioMode);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VBDMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VBDMode (OOCTXT* pctxt, H245VBDMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode type */
+
+ stat = asn1PE_H245AudioMode (pctxt, (H245AudioMode*)pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AudioMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245AudioMode (OOCTXT* pctxt, H245AudioMode* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 14);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 13);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* g711Alaw64k */
+ case 2:
+ /* NULL */
+ break;
+
+ /* g711Alaw56k */
+ case 3:
+ /* NULL */
+ break;
+
+ /* g711Ulaw64k */
+ case 4:
+ /* NULL */
+ break;
+
+ /* g711Ulaw56k */
+ case 5:
+ /* NULL */
+ break;
+
+ /* g722_64k */
+ case 6:
+ /* NULL */
+ break;
+
+ /* g722_56k */
+ case 7:
+ /* NULL */
+ break;
+
+ /* g722_48k */
+ case 8:
+ /* NULL */
+ break;
+
+ /* g728 */
+ case 9:
+ /* NULL */
+ break;
+
+ /* g729 */
+ case 10:
+ /* NULL */
+ break;
+
+ /* g729AnnexA */
+ case 11:
+ /* NULL */
+ break;
+
+ /* g7231 */
+ case 12:
+ stat = asn1PE_H245AudioMode_g7231 (pctxt, pvalue->u.g7231);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* is11172AudioMode */
+ case 13:
+ stat = asn1PE_H245IS11172AudioMode (pctxt, pvalue->u.is11172AudioMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* is13818AudioMode */
+ case 14:
+ stat = asn1PE_H245IS13818AudioMode (pctxt, pvalue->u.is13818AudioMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 15);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* g729wAnnexB */
+ case 15:
+ stat = encodeConsUnsigned (&lctxt, pvalue->u.g729wAnnexB, 1U, 256U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* g729AnnexAwAnnexB */
+ case 16:
+ stat = encodeConsUnsigned (&lctxt, pvalue->u.g729AnnexAwAnnexB, 1U, 256U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* g7231AnnexCMode */
+ case 17:
+ stat = asn1PE_H245G7231AnnexCMode (&lctxt, pvalue->u.g7231AnnexCMode);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* gsmFullRate */
+ case 18:
+ stat = asn1PE_H245GSMAudioCapability (&lctxt, pvalue->u.gsmFullRate);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* gsmHalfRate */
+ case 19:
+ stat = asn1PE_H245GSMAudioCapability (&lctxt, pvalue->u.gsmHalfRate);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* gsmEnhancedFullRate */
+ case 20:
+ stat = asn1PE_H245GSMAudioCapability (&lctxt, pvalue->u.gsmEnhancedFullRate);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* genericAudioMode */
+ case 21:
+ stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericAudioMode);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* g729Extensions */
+ case 22:
+ stat = asn1PE_H245G729Extensions (&lctxt, pvalue->u.g729Extensions);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* vbd */
+ case 23:
+ stat = asn1PE_H245VBDMode (&lctxt, pvalue->u.vbd);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataMode_application_nlpid */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DataMode_application_nlpid (OOCTXT* pctxt, H245DataMode_application_nlpid* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode nlpidProtocol */
+
+ stat = asn1PE_H245DataProtocolCapability (pctxt, &pvalue->nlpidProtocol);
+ if (stat != ASN_OK) return stat;
+
+ /* encode nlpidData */
+
+ stat = encodeOctetString (pctxt, pvalue->nlpidData.numocts, pvalue->nlpidData.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataMode_application_t38fax */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DataMode_application_t38fax (OOCTXT* pctxt, H245DataMode_application_t38fax* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode t38FaxProtocol */
+
+ stat = asn1PE_H245DataProtocolCapability (pctxt, &pvalue->t38FaxProtocol);
+ if (stat != ASN_OK) return stat;
+
+ /* encode t38FaxProfile */
+
+ stat = asn1PE_H245T38FaxProfile (pctxt, &pvalue->t38FaxProfile);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataMode_application */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DataMode_application (OOCTXT* pctxt, H245DataMode_application* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 10);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 9);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* t120 */
+ case 2:
+ stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.t120);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* dsm_cc */
+ case 3:
+ stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.dsm_cc);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* userData */
+ case 4:
+ stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.userData);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* t84 */
+ case 5:
+ stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.t84);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* t434 */
+ case 6:
+ stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.t434);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h224 */
+ case 7:
+ stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.h224);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* nlpid */
+ case 8:
+ stat = asn1PE_H245DataMode_application_nlpid (pctxt, pvalue->u.nlpid);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* dsvdControl */
+ case 9:
+ /* NULL */
+ break;
+
+ /* h222DataPartitioning */
+ case 10:
+ stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.h222DataPartitioning);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 11);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* t30fax */
+ case 11:
+ stat = asn1PE_H245DataProtocolCapability (&lctxt, pvalue->u.t30fax);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* t140 */
+ case 12:
+ stat = asn1PE_H245DataProtocolCapability (&lctxt, pvalue->u.t140);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* t38fax */
+ case 13:
+ stat = asn1PE_H245DataMode_application_t38fax (&lctxt, pvalue->u.t38fax);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* genericDataMode */
+ case 14:
+ stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericDataMode);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DataMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DataMode (OOCTXT* pctxt, H245DataMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode application */
+
+ stat = asn1PE_H245DataMode_application (pctxt, &pvalue->application);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H235Mode_mediaMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H235Mode_mediaMode (OOCTXT* pctxt, H245H235Mode_mediaMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* videoMode */
+ case 2:
+ stat = asn1PE_H245VideoMode (pctxt, pvalue->u.videoMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* audioMode */
+ case 3:
+ stat = asn1PE_H245AudioMode (pctxt, pvalue->u.audioMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* dataMode */
+ case 4:
+ stat = asn1PE_H245DataMode (pctxt, pvalue->u.dataMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H235Mode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H235Mode (OOCTXT* pctxt, H245H235Mode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode encryptionAuthenticationAndIntegrity */
+
+ stat = asn1PE_H245EncryptionAuthenticationAndIntegrity (pctxt, &pvalue->encryptionAuthenticationAndIntegrity);
+ if (stat != ASN_OK) return stat;
+
+ /* encode mediaMode */
+
+ stat = asn1PE_H245H235Mode_mediaMode (pctxt, &pvalue->mediaMode);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingDTModeElement_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RedundancyEncodingDTModeElement_type (OOCTXT* pctxt, H245RedundancyEncodingDTModeElement_type* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 6);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* videoMode */
+ case 2:
+ stat = asn1PE_H245VideoMode (pctxt, pvalue->u.videoMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* audioMode */
+ case 3:
+ stat = asn1PE_H245AudioMode (pctxt, pvalue->u.audioMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* dataMode */
+ case 4:
+ stat = asn1PE_H245DataMode (pctxt, pvalue->u.dataMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* encryptionMode */
+ case 5:
+ stat = asn1PE_H245EncryptionMode (pctxt, pvalue->u.encryptionMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h235Mode */
+ case 6:
+ stat = asn1PE_H245H235Mode (pctxt, pvalue->u.h235Mode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingDTModeElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RedundancyEncodingDTModeElement (OOCTXT* pctxt, H245RedundancyEncodingDTModeElement* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode type */
+
+ stat = asn1PE_H245RedundancyEncodingDTModeElement_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245RedundancyEncodingDTModeElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245_SeqOfH245RedundancyEncodingDTModeElement (OOCTXT* pctxt, H245_SeqOfH245RedundancyEncodingDTModeElement* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H245RedundancyEncodingDTModeElement (pctxt, ((H245RedundancyEncodingDTModeElement*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingDTMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RedundancyEncodingDTMode (OOCTXT* pctxt, H245RedundancyEncodingDTMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode redundancyEncodingMethod */
+
+ stat = asn1PE_H245RedundancyEncodingMethod (pctxt, &pvalue->redundancyEncodingMethod);
+ if (stat != ASN_OK) return stat;
+
+ /* encode primary */
+
+ stat = asn1PE_H245RedundancyEncodingDTModeElement (pctxt, &pvalue->primary);
+ if (stat != ASN_OK) return stat;
+
+ /* encode secondary */
+
+ stat = asn1PE_H245_SeqOfH245RedundancyEncodingDTModeElement (pctxt, &pvalue->secondary);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamElementMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplePayloadStreamElementMode (OOCTXT* pctxt, H245MultiplePayloadStreamElementMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode type */
+
+ stat = asn1PE_H245ModeElementType (pctxt, (H245ModeElementType*)pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245MultiplePayloadStreamElementMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245_SeqOfH245MultiplePayloadStreamElementMode (OOCTXT* pctxt, H245_SeqOfH245MultiplePayloadStreamElementMode* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H245MultiplePayloadStreamElementMode (pctxt, ((H245MultiplePayloadStreamElementMode*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplePayloadStreamMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplePayloadStreamMode (OOCTXT* pctxt, H245MultiplePayloadStreamMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode elements */
+
+ stat = asn1PE_H245_SeqOfH245MultiplePayloadStreamElementMode (pctxt, &pvalue->elements);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode_mode_separateStream_differentPort */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECMode_rfc2733Mode_mode_separateStream_differentPort (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream_differentPort* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.protectedPayloadTypePresent);
+
+ /* encode protectedSessionID */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->protectedSessionID, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode protectedPayloadType */
+
+ if (pvalue->m.protectedPayloadTypePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->protectedPayloadType, 0U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode_mode_separateStream_samePort */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECMode_rfc2733Mode_mode_separateStream_samePort (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream_samePort* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode protectedType */
+
+ stat = asn1PE_H245ModeElementType (pctxt, (H245ModeElementType*)pvalue->protectedType);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode_mode_separateStream */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECMode_rfc2733Mode_mode_separateStream (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* differentPort */
+ case 1:
+ stat = asn1PE_H245FECMode_rfc2733Mode_mode_separateStream_differentPort (pctxt, pvalue->u.differentPort);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* samePort */
+ case 2:
+ stat = asn1PE_H245FECMode_rfc2733Mode_mode_separateStream_samePort (pctxt, pvalue->u.samePort);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode_mode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECMode_rfc2733Mode_mode (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* redundancyEncoding */
+ case 1:
+ /* NULL */
+ break;
+
+ /* separateStream */
+ case 2:
+ stat = asn1PE_H245FECMode_rfc2733Mode_mode_separateStream (pctxt, pvalue->u.separateStream);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECMode_rfc2733Mode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECMode_rfc2733Mode (OOCTXT* pctxt, H245FECMode_rfc2733Mode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode mode */
+
+ stat = asn1PE_H245FECMode_rfc2733Mode_mode (pctxt, &pvalue->mode);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FECMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FECMode (OOCTXT* pctxt, H245FECMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 1);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* rfc2733Mode */
+ case 1:
+ stat = asn1PE_H245FECMode_rfc2733Mode (pctxt, pvalue->u.rfc2733Mode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ModeElementType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ModeElementType (OOCTXT* pctxt, H245ModeElementType* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 5);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* videoMode */
+ case 2:
+ stat = asn1PE_H245VideoMode (pctxt, pvalue->u.videoMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* audioMode */
+ case 3:
+ stat = asn1PE_H245AudioMode (pctxt, pvalue->u.audioMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* dataMode */
+ case 4:
+ stat = asn1PE_H245DataMode (pctxt, pvalue->u.dataMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* encryptionMode */
+ case 5:
+ stat = asn1PE_H245EncryptionMode (pctxt, pvalue->u.encryptionMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* h235Mode */
+ case 6:
+ stat = asn1PE_H245H235Mode (&lctxt, pvalue->u.h235Mode);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* multiplexedStreamMode */
+ case 7:
+ stat = asn1PE_H245MultiplexedStreamParameter (&lctxt, pvalue->u.multiplexedStreamMode);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* redundancyEncodingDTMode */
+ case 8:
+ stat = asn1PE_H245RedundancyEncodingDTMode (&lctxt, pvalue->u.redundancyEncodingDTMode);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* multiplePayloadStreamMode */
+ case 9:
+ stat = asn1PE_H245MultiplePayloadStreamMode (&lctxt, pvalue->u.multiplePayloadStreamMode);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* fecMode */
+ case 10:
+ stat = asn1PE_H245FECMode (&lctxt, pvalue->u.fecMode);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223ModeParameters_adaptationLayerType_al3 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223ModeParameters_adaptationLayerType_al3 (OOCTXT* pctxt, H245H223ModeParameters_adaptationLayerType_al3* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode controlFieldOctets */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->controlFieldOctets, 0U, 2U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode sendBufferSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->sendBufferSize, 0U, 16777215U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223ModeParameters_adaptationLayerType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223ModeParameters_adaptationLayerType (OOCTXT* pctxt, H245H223ModeParameters_adaptationLayerType* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 6);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* al1Framed */
+ case 2:
+ /* NULL */
+ break;
+
+ /* al1NotFramed */
+ case 3:
+ /* NULL */
+ break;
+
+ /* al2WithoutSequenceNumbers */
+ case 4:
+ /* NULL */
+ break;
+
+ /* al2WithSequenceNumbers */
+ case 5:
+ /* NULL */
+ break;
+
+ /* al3 */
+ case 6:
+ stat = asn1PE_H245H223ModeParameters_adaptationLayerType_al3 (pctxt, pvalue->u.al3);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* al1M */
+ case 7:
+ stat = asn1PE_H245H223AL1MParameters (&lctxt, pvalue->u.al1M);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* al2M */
+ case 8:
+ stat = asn1PE_H245H223AL2MParameters (&lctxt, pvalue->u.al2M);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* al3M */
+ case 9:
+ stat = asn1PE_H245H223AL3MParameters (&lctxt, pvalue->u.al3M);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223ModeParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223ModeParameters (OOCTXT* pctxt, H245H223ModeParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode adaptationLayerType */
+
+ stat = asn1PE_H245H223ModeParameters_adaptationLayerType (pctxt, &pvalue->adaptationLayerType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode segmentableFlag */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->segmentableFlag);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* V76ModeParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245V76ModeParameters (OOCTXT* pctxt, H245V76ModeParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* suspendResumewAddress */
+ case 1:
+ /* NULL */
+ break;
+
+ /* suspendResumewoAddress */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingMode_secondaryEncoding */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RedundancyEncodingMode_secondaryEncoding (OOCTXT* pctxt, H245RedundancyEncodingMode_secondaryEncoding* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* audioData */
+ case 2:
+ stat = asn1PE_H245AudioMode (pctxt, pvalue->u.audioData);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RedundancyEncodingMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RedundancyEncodingMode (OOCTXT* pctxt, H245RedundancyEncodingMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.secondaryEncodingPresent);
+
+ /* encode redundancyEncodingMethod */
+
+ stat = asn1PE_H245RedundancyEncodingMethod (pctxt, &pvalue->redundancyEncodingMethod);
+ if (stat != ASN_OK) return stat;
+
+ /* encode secondaryEncoding */
+
+ if (pvalue->m.secondaryEncodingPresent) {
+ stat = asn1PE_H245RedundancyEncodingMode_secondaryEncoding (pctxt, &pvalue->secondaryEncoding);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250ModeParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H2250ModeParameters (OOCTXT* pctxt, H245H2250ModeParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.redundancyEncodingModePresent);
+
+ /* encode redundancyEncodingMode */
+
+ if (pvalue->m.redundancyEncodingModePresent) {
+ stat = asn1PE_H245RedundancyEncodingMode (pctxt, &pvalue->redundancyEncodingMode);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexedStreamModeParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexedStreamModeParameters (OOCTXT* pctxt, H245MultiplexedStreamModeParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode logicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ModeElement */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ModeElement (OOCTXT* pctxt, H245ModeElement* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.v76ModeParametersPresent ||
+ pvalue->m.h2250ModeParametersPresent ||
+ pvalue->m.genericModeParametersPresent ||
+ pvalue->m.multiplexedStreamModeParametersPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h223ModeParametersPresent);
+
+ /* encode type */
+
+ stat = asn1PE_H245ModeElementType (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ /* encode h223ModeParameters */
+
+ if (pvalue->m.h223ModeParametersPresent) {
+ stat = asn1PE_H245H223ModeParameters (pctxt, &pvalue->h223ModeParameters);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.v76ModeParametersPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.h2250ModeParametersPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericModeParametersPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multiplexedStreamModeParametersPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.v76ModeParametersPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245V76ModeParameters (&lctxt, &pvalue->v76ModeParameters);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.h2250ModeParametersPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245H2250ModeParameters (&lctxt, &pvalue->h2250ModeParameters);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.genericModeParametersPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245GenericCapability (&lctxt, &pvalue->genericModeParameters);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.multiplexedStreamModeParametersPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245MultiplexedStreamModeParameters (&lctxt, &pvalue->multiplexedStreamModeParameters);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ModeDescription */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ModeDescription (OOCTXT* pctxt, H245ModeDescription* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245ModeElement (pctxt, ((H245ModeElement*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMode_requestedModes */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestMode_requestedModes (OOCTXT* pctxt, H245RequestMode_requestedModes* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245ModeDescription (pctxt, ((H245ModeDescription*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestMode (OOCTXT* pctxt, H245RequestMode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode requestedModes */
+
+ stat = asn1PE_H245RequestMode_requestedModes (pctxt, &pvalue->requestedModes);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RoundTripDelayRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RoundTripDelayRequest (OOCTXT* pctxt, H245RoundTripDelayRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopRequest_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MaintenanceLoopRequest_type (OOCTXT* pctxt, H245MaintenanceLoopRequest_type* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* systemLoop */
+ case 1:
+ /* NULL */
+ break;
+
+ /* mediaLoop */
+ case 2:
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.mediaLoop);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* logicalChannelLoop */
+ case 3:
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.logicalChannelLoop);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MaintenanceLoopRequest (OOCTXT* pctxt, H245MaintenanceLoopRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode type */
+
+ stat = asn1PE_H245MaintenanceLoopRequest_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommunicationModeRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CommunicationModeRequest (OOCTXT* pctxt, H245CommunicationModeRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Criteria */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245Criteria (OOCTXT* pctxt, H245Criteria* pvalue)
+{
+ static Asn1SizeCnst value_lsize1 = { 0, 1, 65535, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode field */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->field);
+ if (stat != ASN_OK) return stat;
+
+ /* encode value */
+
+ addSizeConstraint (pctxt, &value_lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->value.numocts, pvalue->value.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CertSelectionCriteria */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CertSelectionCriteria (OOCTXT* pctxt, H245CertSelectionCriteria* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245Criteria (pctxt, ((H245Criteria*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceRequest_requestTerminalCertificate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceRequest_requestTerminalCertificate (OOCTXT* pctxt, H245ConferenceRequest_requestTerminalCertificate* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalLabelPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.certSelectionCriteriaPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sRandomPresent);
+
+ /* encode terminalLabel */
+
+ if (pvalue->m.terminalLabelPresent) {
+ stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode certSelectionCriteria */
+
+ if (pvalue->m.certSelectionCriteriaPresent) {
+ stat = asn1PE_H245CertSelectionCriteria (pctxt, &pvalue->certSelectionCriteria);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode sRandom */
+
+ if (pvalue->m.sRandomPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->sRandom, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RemoteMCRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RemoteMCRequest (OOCTXT* pctxt, H245RemoteMCRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* masterActivate */
+ case 1:
+ /* NULL */
+ break;
+
+ /* slaveActivate */
+ case 2:
+ /* NULL */
+ break;
+
+ /* deActivate */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceRequest (OOCTXT* pctxt, H245ConferenceRequest* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 8);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* terminalListRequest */
+ case 1:
+ /* NULL */
+ break;
+
+ /* makeMeChair */
+ case 2:
+ /* NULL */
+ break;
+
+ /* cancelMakeMeChair */
+ case 3:
+ /* NULL */
+ break;
+
+ /* dropTerminal */
+ case 4:
+ stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.dropTerminal);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* requestTerminalID */
+ case 5:
+ stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.requestTerminalID);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* enterH243Password */
+ case 6:
+ /* NULL */
+ break;
+
+ /* enterH243TerminalID */
+ case 7:
+ /* NULL */
+ break;
+
+ /* enterH243ConferenceID */
+ case 8:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 9);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* enterExtensionAddress */
+ case 9:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* requestChairTokenOwner */
+ case 10:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* requestTerminalCertificate */
+ case 11:
+ stat = asn1PE_H245ConferenceRequest_requestTerminalCertificate (&lctxt, pvalue->u.requestTerminalCertificate);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* broadcastMyLogicalChannel */
+ case 12:
+ stat = asn1PE_H245LogicalChannelNumber (&lctxt, pvalue->u.broadcastMyLogicalChannel);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* makeTerminalBroadcaster */
+ case 13:
+ stat = asn1PE_H245TerminalLabel (&lctxt, pvalue->u.makeTerminalBroadcaster);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* sendThisSource */
+ case 14:
+ stat = asn1PE_H245TerminalLabel (&lctxt, pvalue->u.sendThisSource);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* requestAllTerminalIDs */
+ case 15:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* remoteMCRequest */
+ case 16:
+ stat = asn1PE_H245RemoteMCRequest (&lctxt, pvalue->u.remoteMCRequest);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_callInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkRequest_callInformation (OOCTXT* pctxt, H245MultilinkRequest_callInformation* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode maxNumberOfAdditionalConnections */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maxNumberOfAdditionalConnections, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DialingInformationNetworkType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DialingInformationNetworkType (OOCTXT* pctxt, H245DialingInformationNetworkType* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* n_isdn */
+ case 2:
+ /* NULL */
+ break;
+
+ /* gstn */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* mobile */
+ case 4:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DialingInformationNumber_networkType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DialingInformationNumber_networkType (OOCTXT* pctxt, H245DialingInformationNumber_networkType* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 255, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245DialingInformationNetworkType (pctxt, ((H245DialingInformationNetworkType*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DialingInformationNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DialingInformationNumber (OOCTXT* pctxt, H245DialingInformationNumber* pvalue)
+{
+ static Asn1SizeCnst networkAddress_lsize1 = { 0, 0, 40, 0 };
+ static Asn1SizeCnst subAddress_lsize1 = { 0, 1, 40, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.subAddressPresent);
+
+ /* encode networkAddress */
+
+ addSizeConstraint (pctxt, &networkAddress_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->networkAddress, NUM_CANSET, 4, 4, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* encode subAddress */
+
+ if (pvalue->m.subAddressPresent) {
+ addSizeConstraint (pctxt, &subAddress_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->subAddress, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode networkType */
+
+ stat = asn1PE_H245DialingInformationNumber_networkType (pctxt, &pvalue->networkType);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DialingInformation_differential */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DialingInformation_differential (OOCTXT* pctxt, H245DialingInformation_differential* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 65535, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245DialingInformationNumber (pctxt, ((H245DialingInformationNumber*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DialingInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245DialingInformation (OOCTXT* pctxt, H245DialingInformation* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* differential */
+ case 2:
+ stat = asn1PE_H245DialingInformation_differential (pctxt, pvalue->u.differential);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* infoNotAvailable */
+ case 3:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.infoNotAvailable, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_addConnection */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkRequest_addConnection (OOCTXT* pctxt, H245MultilinkRequest_addConnection* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dialingInformation */
+
+ stat = asn1PE_H245DialingInformation (pctxt, &pvalue->dialingInformation);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConnectionIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConnectionIdentifier (OOCTXT* pctxt, H245ConnectionIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode channelTag */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->channelTag, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ /* encode sequenceNumber */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->sequenceNumber, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_removeConnection */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkRequest_removeConnection (OOCTXT* pctxt, H245MultilinkRequest_removeConnection* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode connectionIdentifier */
+
+ stat = asn1PE_H245ConnectionIdentifier (pctxt, &pvalue->connectionIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_maximumHeaderInterval_requestType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkRequest_maximumHeaderInterval_requestType (OOCTXT* pctxt, H245MultilinkRequest_maximumHeaderInterval_requestType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* currentIntervalInformation */
+ case 1:
+ /* NULL */
+ break;
+
+ /* requestedInterval */
+ case 2:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.requestedInterval, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkRequest_maximumHeaderInterval */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkRequest_maximumHeaderInterval (OOCTXT* pctxt, H245MultilinkRequest_maximumHeaderInterval* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode requestType */
+
+ stat = asn1PE_H245MultilinkRequest_maximumHeaderInterval_requestType (pctxt, &pvalue->requestType);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkRequest (OOCTXT* pctxt, H245MultilinkRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 5);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* callInformation */
+ case 2:
+ stat = asn1PE_H245MultilinkRequest_callInformation (pctxt, pvalue->u.callInformation);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* addConnection */
+ case 3:
+ stat = asn1PE_H245MultilinkRequest_addConnection (pctxt, pvalue->u.addConnection);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* removeConnection */
+ case 4:
+ stat = asn1PE_H245MultilinkRequest_removeConnection (pctxt, pvalue->u.removeConnection);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* maximumHeaderInterval */
+ case 5:
+ stat = asn1PE_H245MultilinkRequest_maximumHeaderInterval (pctxt, pvalue->u.maximumHeaderInterval);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaximumBitRate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MaximumBitRate (OOCTXT* pctxt, H245MaximumBitRate value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConsUnsigned (pctxt, value, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245LogicalChannelRateRequest (OOCTXT* pctxt, H245LogicalChannelRateRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode logicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maximumBitRate */
+
+ stat = asn1PE_H245MaximumBitRate (pctxt, pvalue->maximumBitRate);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestMessage (OOCTXT* pctxt, H245RequestMessage* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 11);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 10);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* masterSlaveDetermination */
+ case 2:
+ stat = asn1PE_H245MasterSlaveDetermination (pctxt, pvalue->u.masterSlaveDetermination);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* terminalCapabilitySet */
+ case 3:
+ stat = asn1PE_H245TerminalCapabilitySet (pctxt, pvalue->u.terminalCapabilitySet);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* openLogicalChannel */
+ case 4:
+ stat = asn1PE_H245OpenLogicalChannel (pctxt, pvalue->u.openLogicalChannel);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* closeLogicalChannel */
+ case 5:
+ stat = asn1PE_H245CloseLogicalChannel (pctxt, pvalue->u.closeLogicalChannel);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* requestChannelClose */
+ case 6:
+ stat = asn1PE_H245RequestChannelClose (pctxt, pvalue->u.requestChannelClose);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* multiplexEntrySend */
+ case 7:
+ stat = asn1PE_H245MultiplexEntrySend (pctxt, pvalue->u.multiplexEntrySend);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* requestMultiplexEntry */
+ case 8:
+ stat = asn1PE_H245RequestMultiplexEntry (pctxt, pvalue->u.requestMultiplexEntry);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* requestMode */
+ case 9:
+ stat = asn1PE_H245RequestMode (pctxt, pvalue->u.requestMode);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* roundTripDelayRequest */
+ case 10:
+ stat = asn1PE_H245RoundTripDelayRequest (pctxt, pvalue->u.roundTripDelayRequest);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* maintenanceLoopRequest */
+ case 11:
+ stat = asn1PE_H245MaintenanceLoopRequest (pctxt, pvalue->u.maintenanceLoopRequest);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 12);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* communicationModeRequest */
+ case 12:
+ stat = asn1PE_H245CommunicationModeRequest (&lctxt, pvalue->u.communicationModeRequest);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* conferenceRequest */
+ case 13:
+ stat = asn1PE_H245ConferenceRequest (&lctxt, pvalue->u.conferenceRequest);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* multilinkRequest */
+ case 14:
+ stat = asn1PE_H245MultilinkRequest (&lctxt, pvalue->u.multilinkRequest);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* logicalChannelRateRequest */
+ case 15:
+ stat = asn1PE_H245LogicalChannelRateRequest (&lctxt, pvalue->u.logicalChannelRateRequest);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationAck_decision */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MasterSlaveDeterminationAck_decision (OOCTXT* pctxt, H245MasterSlaveDeterminationAck_decision* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* master */
+ case 1:
+ /* NULL */
+ break;
+
+ /* slave */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MasterSlaveDeterminationAck (OOCTXT* pctxt, H245MasterSlaveDeterminationAck* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode decision */
+
+ stat = asn1PE_H245MasterSlaveDeterminationAck_decision (pctxt, &pvalue->decision);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationReject_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MasterSlaveDeterminationReject_cause (OOCTXT* pctxt, H245MasterSlaveDeterminationReject_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 1);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* identicalNumbers */
+ case 1:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MasterSlaveDeterminationReject (OOCTXT* pctxt, H245MasterSlaveDeterminationReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode cause */
+
+ stat = asn1PE_H245MasterSlaveDeterminationReject_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TerminalCapabilitySetAck (OOCTXT* pctxt, H245TerminalCapabilitySetAck* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetReject_cause_tableEntryCapacityExce */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded (OOCTXT* pctxt, H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* highestEntryNumberProcessed */
+ case 1:
+ stat = asn1PE_H245CapabilityTableEntryNumber (pctxt, pvalue->u.highestEntryNumberProcessed);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* noneProcessed */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetReject_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TerminalCapabilitySetReject_cause (OOCTXT* pctxt, H245TerminalCapabilitySetReject_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* unspecified */
+ case 1:
+ /* NULL */
+ break;
+
+ /* undefinedTableEntryUsed */
+ case 2:
+ /* NULL */
+ break;
+
+ /* descriptorCapacityExceeded */
+ case 3:
+ /* NULL */
+ break;
+
+ /* tableEntryCapacityExceeded */
+ case 4:
+ stat = asn1PE_H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded (pctxt, pvalue->u.tableEntryCapacityExceeded);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TerminalCapabilitySetReject (OOCTXT* pctxt, H245TerminalCapabilitySetReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode cause */
+
+ stat = asn1PE_H245TerminalCapabilitySetReject_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelAck_reverseLogicalChannelParameters_mu */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 1);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* h222LogicalChannelParameters */
+ case 1:
+ stat = asn1PE_H245H222LogicalChannelParameters (pctxt, pvalue->u.h222LogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* h2250LogicalChannelParameters */
+ case 2:
+ stat = asn1PE_H245H2250LogicalChannelParameters (&lctxt, pvalue->u.h2250LogicalChannelParameters);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelAck_reverseLogicalChannelParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245OpenLogicalChannelAck_reverseLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_reverseLogicalChannelParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.replacementForPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.portNumberPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.multiplexParametersPresent);
+
+ /* encode reverseLogicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->reverseLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode portNumber */
+
+ if (pvalue->m.portNumberPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->portNumber, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode multiplexParameters */
+
+ if (pvalue->m.multiplexParametersPresent) {
+ stat = asn1PE_H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters (pctxt, &pvalue->multiplexParameters);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.replacementForPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.replacementForPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245LogicalChannelNumber (&lctxt, pvalue->replacementFor);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250LogicalChannelAckParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H2250LogicalChannelAckParameters (OOCTXT* pctxt, H245H2250LogicalChannelAckParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.flowControlToZeroPresent ||
+ pvalue->m.portNumberPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sessionIDPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaChannelPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaControlChannelPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dynamicRTPPayloadTypePresent);
+
+ /* encode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ stat = asn1PE_H245_SeqOfH245NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode sessionID */
+
+ if (pvalue->m.sessionIDPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->sessionID, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode mediaChannel */
+
+ if (pvalue->m.mediaChannelPresent) {
+ stat = asn1PE_H245TransportAddress (pctxt, &pvalue->mediaChannel);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode mediaControlChannel */
+
+ if (pvalue->m.mediaControlChannelPresent) {
+ stat = asn1PE_H245TransportAddress (pctxt, &pvalue->mediaControlChannel);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode dynamicRTPPayloadType */
+
+ if (pvalue->m.dynamicRTPPayloadTypePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->dynamicRTPPayloadType, 96U, 127U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.flowControlToZeroPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.portNumberPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.flowControlToZeroPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->flowControlToZero);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.portNumberPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->portNumber, 0U, 65535U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelAck_forwardMultiplexAckParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245OpenLogicalChannelAck_forwardMultiplexAckParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_forwardMultiplexAckParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 1);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* h2250LogicalChannelAckParameters */
+ case 1:
+ stat = asn1PE_H245H2250LogicalChannelAckParameters (pctxt, pvalue->u.h2250LogicalChannelAckParameters);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245OpenLogicalChannelAck (OOCTXT* pctxt, H245OpenLogicalChannelAck* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.separateStackPresent ||
+ pvalue->m.forwardMultiplexAckParametersPresent ||
+ pvalue->m.encryptionSyncPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.reverseLogicalChannelParametersPresent);
+
+ /* encode forwardLogicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode reverseLogicalChannelParameters */
+
+ if (pvalue->m.reverseLogicalChannelParametersPresent) {
+ stat = asn1PE_H245OpenLogicalChannelAck_reverseLogicalChannelParameters (pctxt, &pvalue->reverseLogicalChannelParameters);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.separateStackPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.forwardMultiplexAckParametersPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.encryptionSyncPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.separateStackPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245NetworkAccessParameters (&lctxt, &pvalue->separateStack);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.forwardMultiplexAckParametersPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245OpenLogicalChannelAck_forwardMultiplexAckParameters (&lctxt, &pvalue->forwardMultiplexAckParameters);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.encryptionSyncPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245EncryptionSync (&lctxt, &pvalue->encryptionSync);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelReject_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245OpenLogicalChannelReject_cause (OOCTXT* pctxt, H245OpenLogicalChannelReject_cause* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 6);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* unspecified */
+ case 1:
+ /* NULL */
+ break;
+
+ /* unsuitableReverseParameters */
+ case 2:
+ /* NULL */
+ break;
+
+ /* dataTypeNotSupported */
+ case 3:
+ /* NULL */
+ break;
+
+ /* dataTypeNotAvailable */
+ case 4:
+ /* NULL */
+ break;
+
+ /* unknownDataType */
+ case 5:
+ /* NULL */
+ break;
+
+ /* dataTypeALCombinationNotSupported */
+ case 6:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* multicastChannelNotAllowed */
+ case 7:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* insufficientBandwidth */
+ case 8:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* separateStackEstablishmentFailed */
+ case 9:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* invalidSessionID */
+ case 10:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* masterSlaveConflict */
+ case 11:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* waitForCommunicationMode */
+ case 12:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* invalidDependentChannel */
+ case 13:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* replacementForRejected */
+ case 14:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245OpenLogicalChannelReject (OOCTXT* pctxt, H245OpenLogicalChannelReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode forwardLogicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode cause */
+
+ stat = asn1PE_H245OpenLogicalChannelReject_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CloseLogicalChannelAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CloseLogicalChannelAck (OOCTXT* pctxt, H245CloseLogicalChannelAck* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode forwardLogicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestChannelCloseAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestChannelCloseAck (OOCTXT* pctxt, H245RequestChannelCloseAck* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode forwardLogicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestChannelCloseReject_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestChannelCloseReject_cause (OOCTXT* pctxt, H245RequestChannelCloseReject_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 1);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* unspecified */
+ case 1:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestChannelCloseReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestChannelCloseReject (OOCTXT* pctxt, H245RequestChannelCloseReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode forwardLogicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode cause */
+
+ stat = asn1PE_H245RequestChannelCloseReject_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendAck_multiplexTableEntryNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexEntrySendAck_multiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexEntrySendAck_multiplexTableEntryNumber* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexEntrySendAck (OOCTXT* pctxt, H245MultiplexEntrySendAck* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multiplexTableEntryNumber */
+
+ stat = asn1PE_H245MultiplexEntrySendAck_multiplexTableEntryNumber (pctxt, &pvalue->multiplexTableEntryNumber);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntryRejectionDescriptions_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexEntryRejectionDescriptions_cause (OOCTXT* pctxt, H245MultiplexEntryRejectionDescriptions_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* unspecifiedCause */
+ case 1:
+ /* NULL */
+ break;
+
+ /* descriptorTooComplex */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntryRejectionDescriptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexEntryRejectionDescriptions (OOCTXT* pctxt, H245MultiplexEntryRejectionDescriptions* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode multiplexTableEntryNumber */
+
+ stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->multiplexTableEntryNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode cause */
+
+ stat = asn1PE_H245MultiplexEntryRejectionDescriptions_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendReject_rejectionDescriptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexEntrySendReject_rejectionDescriptions (OOCTXT* pctxt, H245MultiplexEntrySendReject_rejectionDescriptions* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245MultiplexEntryRejectionDescriptions (pctxt, ((H245MultiplexEntryRejectionDescriptions*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexEntrySendReject (OOCTXT* pctxt, H245MultiplexEntrySendReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rejectionDescriptions */
+
+ stat = asn1PE_H245MultiplexEntrySendReject_rejectionDescriptions (pctxt, &pvalue->rejectionDescriptions);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryAck_entryNumbers */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestMultiplexEntryAck_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryAck_entryNumbers* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestMultiplexEntryAck (OOCTXT* pctxt, H245RequestMultiplexEntryAck* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode entryNumbers */
+
+ stat = asn1PE_H245RequestMultiplexEntryAck_entryNumbers (pctxt, &pvalue->entryNumbers);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryReject_entryNumbers */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestMultiplexEntryReject_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryReject_entryNumbers* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryRejectionDescriptions_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestMultiplexEntryRejectionDescriptions_cause (OOCTXT* pctxt, H245RequestMultiplexEntryRejectionDescriptions_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 1);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* unspecifiedCause */
+ case 1:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryRejectionDescriptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestMultiplexEntryRejectionDescriptions (OOCTXT* pctxt, H245RequestMultiplexEntryRejectionDescriptions* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode multiplexTableEntryNumber */
+
+ stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->multiplexTableEntryNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode cause */
+
+ stat = asn1PE_H245RequestMultiplexEntryRejectionDescriptions_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryReject_rejectionDescriptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestMultiplexEntryReject_rejectionDescriptions (OOCTXT* pctxt, H245RequestMultiplexEntryReject_rejectionDescriptions* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245RequestMultiplexEntryRejectionDescriptions (pctxt, ((H245RequestMultiplexEntryRejectionDescriptions*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestMultiplexEntryReject (OOCTXT* pctxt, H245RequestMultiplexEntryReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode entryNumbers */
+
+ stat = asn1PE_H245RequestMultiplexEntryReject_entryNumbers (pctxt, &pvalue->entryNumbers);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rejectionDescriptions */
+
+ stat = asn1PE_H245RequestMultiplexEntryReject_rejectionDescriptions (pctxt, &pvalue->rejectionDescriptions);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestModeAck_response */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestModeAck_response (OOCTXT* pctxt, H245RequestModeAck_response* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* willTransmitMostPreferredMode */
+ case 1:
+ /* NULL */
+ break;
+
+ /* willTransmitLessPreferredMode */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestModeAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestModeAck (OOCTXT* pctxt, H245RequestModeAck* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode response */
+
+ stat = asn1PE_H245RequestModeAck_response (pctxt, &pvalue->response);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestModeReject_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestModeReject_cause (OOCTXT* pctxt, H245RequestModeReject_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* modeUnavailable */
+ case 1:
+ /* NULL */
+ break;
+
+ /* multipointConstraint */
+ case 2:
+ /* NULL */
+ break;
+
+ /* requestDenied */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestModeReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestModeReject (OOCTXT* pctxt, H245RequestModeReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode cause */
+
+ stat = asn1PE_H245RequestModeReject_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RoundTripDelayResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RoundTripDelayResponse (OOCTXT* pctxt, H245RoundTripDelayResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopAck_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MaintenanceLoopAck_type (OOCTXT* pctxt, H245MaintenanceLoopAck_type* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* systemLoop */
+ case 1:
+ /* NULL */
+ break;
+
+ /* mediaLoop */
+ case 2:
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.mediaLoop);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* logicalChannelLoop */
+ case 3:
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.logicalChannelLoop);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopAck */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MaintenanceLoopAck (OOCTXT* pctxt, H245MaintenanceLoopAck* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode type */
+
+ stat = asn1PE_H245MaintenanceLoopAck_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopReject_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MaintenanceLoopReject_type (OOCTXT* pctxt, H245MaintenanceLoopReject_type* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* systemLoop */
+ case 1:
+ /* NULL */
+ break;
+
+ /* mediaLoop */
+ case 2:
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.mediaLoop);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* logicalChannelLoop */
+ case 3:
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.logicalChannelLoop);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopReject_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MaintenanceLoopReject_cause (OOCTXT* pctxt, H245MaintenanceLoopReject_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 1);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* canNotPerformLoop */
+ case 1:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MaintenanceLoopReject (OOCTXT* pctxt, H245MaintenanceLoopReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode type */
+
+ stat = asn1PE_H245MaintenanceLoopReject_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ /* encode cause */
+
+ stat = asn1PE_H245MaintenanceLoopReject_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommunicationModeTableEntry_dataType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CommunicationModeTableEntry_dataType (OOCTXT* pctxt, H245CommunicationModeTableEntry_dataType* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* videoData */
+ case 1:
+ stat = asn1PE_H245VideoCapability (pctxt, pvalue->u.videoData);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* audioData */
+ case 2:
+ stat = asn1PE_H245AudioCapability (pctxt, pvalue->u.audioData);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* data */
+ case 3:
+ stat = asn1PE_H245DataApplicationCapability (pctxt, pvalue->u.data);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommunicationModeTableEntry */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CommunicationModeTableEntry (OOCTXT* pctxt, H245CommunicationModeTableEntry* pvalue)
+{
+ static Asn1SizeCnst sessionDescription_lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.redundancyEncodingPresent ||
+ pvalue->m.sessionDependencyPresent ||
+ pvalue->m.destinationPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.associatedSessionIDPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalLabelPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaChannelPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaGuaranteedDeliveryPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaControlChannelPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaControlGuaranteedDeliveryPresent);
+
+ /* encode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ stat = asn1PE_H245_SeqOfH245NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode sessionID */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->sessionID, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode associatedSessionID */
+
+ if (pvalue->m.associatedSessionIDPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->associatedSessionID, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode terminalLabel */
+
+ if (pvalue->m.terminalLabelPresent) {
+ stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode sessionDescription */
+
+ addSizeConstraint (pctxt, &sessionDescription_lsize1);
+
+ stat = encodeBMPString (pctxt, pvalue->sessionDescription, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode dataType */
+
+ stat = asn1PE_H245CommunicationModeTableEntry_dataType (pctxt, &pvalue->dataType);
+ if (stat != ASN_OK) return stat;
+
+ /* encode mediaChannel */
+
+ if (pvalue->m.mediaChannelPresent) {
+ stat = asn1PE_H245TransportAddress (pctxt, &pvalue->mediaChannel);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode mediaGuaranteedDelivery */
+
+ if (pvalue->m.mediaGuaranteedDeliveryPresent) {
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->mediaGuaranteedDelivery);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode mediaControlChannel */
+
+ if (pvalue->m.mediaControlChannelPresent) {
+ stat = asn1PE_H245TransportAddress (pctxt, &pvalue->mediaControlChannel);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode mediaControlGuaranteedDelivery */
+
+ if (pvalue->m.mediaControlGuaranteedDeliveryPresent) {
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->mediaControlGuaranteedDelivery);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.redundancyEncodingPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sessionDependencyPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.redundancyEncodingPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245RedundancyEncoding (&lctxt, &pvalue->redundancyEncoding);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.sessionDependencyPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeConsUnsigned (&lctxt, pvalue->sessionDependency, 1U, 255U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.destinationPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245TerminalLabel (&lctxt, &pvalue->destination);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommunicationModeResponse_communicationModeTable */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CommunicationModeResponse_communicationModeTable (OOCTXT* pctxt, H245CommunicationModeResponse_communicationModeTable* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245CommunicationModeTableEntry (pctxt, ((H245CommunicationModeTableEntry*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommunicationModeResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CommunicationModeResponse (OOCTXT* pctxt, H245CommunicationModeResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 1);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* communicationModeTable */
+ case 1:
+ stat = asn1PE_H245CommunicationModeResponse_communicationModeTable (pctxt, pvalue->u.communicationModeTable);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalID */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TerminalID (OOCTXT* pctxt, H245TerminalID* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_mCTerminalIDResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceResponse_mCTerminalIDResponse (OOCTXT* pctxt, H245ConferenceResponse_mCTerminalIDResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode terminalLabel */
+
+ stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode terminalID */
+
+ stat = asn1PE_H245TerminalID (pctxt, &pvalue->terminalID);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_terminalIDResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceResponse_terminalIDResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalIDResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode terminalLabel */
+
+ stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode terminalID */
+
+ stat = asn1PE_H245TerminalID (pctxt, &pvalue->terminalID);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceID */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceID (OOCTXT* pctxt, H245ConferenceID* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 32, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_conferenceIDResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceResponse_conferenceIDResponse (OOCTXT* pctxt, H245ConferenceResponse_conferenceIDResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode terminalLabel */
+
+ stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode conferenceID */
+
+ stat = asn1PE_H245ConferenceID (pctxt, &pvalue->conferenceID);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Password */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245Password (OOCTXT* pctxt, H245Password* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 32, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_passwordResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceResponse_passwordResponse (OOCTXT* pctxt, H245ConferenceResponse_passwordResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode terminalLabel */
+
+ stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode password */
+
+ stat = asn1PE_H245Password (pctxt, &pvalue->password);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_terminalListResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceResponse_terminalListResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalListResponse* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245TerminalLabel (pctxt, ((H245TerminalLabel*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_makeMeChairResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceResponse_makeMeChairResponse (OOCTXT* pctxt, H245ConferenceResponse_makeMeChairResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* grantedChairToken */
+ case 1:
+ /* NULL */
+ break;
+
+ /* deniedChairToken */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_extensionAddressResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceResponse_extensionAddressResponse (OOCTXT* pctxt, H245ConferenceResponse_extensionAddressResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode extensionAddress */
+
+ stat = asn1PE_H245TerminalID (pctxt, &pvalue->extensionAddress);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_chairTokenOwnerResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceResponse_chairTokenOwnerResponse (OOCTXT* pctxt, H245ConferenceResponse_chairTokenOwnerResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode terminalLabel */
+
+ stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode terminalID */
+
+ stat = asn1PE_H245TerminalID (pctxt, &pvalue->terminalID);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_terminalCertificateResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceResponse_terminalCertificateResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalCertificateResponse* pvalue)
+{
+ static Asn1SizeCnst certificateResponse_lsize1 = { 0, 1, 65535, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalLabelPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.certificateResponsePresent);
+
+ /* encode terminalLabel */
+
+ if (pvalue->m.terminalLabelPresent) {
+ stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode certificateResponse */
+
+ if (pvalue->m.certificateResponsePresent) {
+ addSizeConstraint (pctxt, &certificateResponse_lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->certificateResponse.numocts, pvalue->certificateResponse.data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_broadcastMyLogicalChannelResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceResponse_broadcastMyLogicalChannelResponse (OOCTXT* pctxt, H245ConferenceResponse_broadcastMyLogicalChannelResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* grantedBroadcastMyLogicalChannel */
+ case 1:
+ /* NULL */
+ break;
+
+ /* deniedBroadcastMyLogicalChannel */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_makeTerminalBroadcasterResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceResponse_makeTerminalBroadcasterResponse (OOCTXT* pctxt, H245ConferenceResponse_makeTerminalBroadcasterResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* grantedMakeTerminalBroadcaster */
+ case 1:
+ /* NULL */
+ break;
+
+ /* deniedMakeTerminalBroadcaster */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse_sendThisSourceResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceResponse_sendThisSourceResponse (OOCTXT* pctxt, H245ConferenceResponse_sendThisSourceResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* grantedSendThisSource */
+ case 1:
+ /* NULL */
+ break;
+
+ /* deniedSendThisSource */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TerminalInformation (OOCTXT* pctxt, H245TerminalInformation* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode terminalLabel */
+
+ stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode terminalID */
+
+ stat = asn1PE_H245TerminalID (pctxt, &pvalue->terminalID);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245TerminalInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245_SeqOfH245TerminalInformation (OOCTXT* pctxt, H245_SeqOfH245TerminalInformation* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H245TerminalInformation (pctxt, ((H245TerminalInformation*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestAllTerminalIDsResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestAllTerminalIDsResponse (OOCTXT* pctxt, H245RequestAllTerminalIDsResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode terminalInformation */
+
+ stat = asn1PE_H245_SeqOfH245TerminalInformation (pctxt, &pvalue->terminalInformation);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RemoteMCResponse_reject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RemoteMCResponse_reject (OOCTXT* pctxt, H245RemoteMCResponse_reject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* unspecified */
+ case 1:
+ /* NULL */
+ break;
+
+ /* functionNotSupported */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RemoteMCResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RemoteMCResponse (OOCTXT* pctxt, H245RemoteMCResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* accept */
+ case 1:
+ /* NULL */
+ break;
+
+ /* reject */
+ case 2:
+ stat = asn1PE_H245RemoteMCResponse_reject (pctxt, pvalue->u.reject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceResponse (OOCTXT* pctxt, H245ConferenceResponse* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 8);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 7);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* mCTerminalIDResponse */
+ case 1:
+ stat = asn1PE_H245ConferenceResponse_mCTerminalIDResponse (pctxt, pvalue->u.mCTerminalIDResponse);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* terminalIDResponse */
+ case 2:
+ stat = asn1PE_H245ConferenceResponse_terminalIDResponse (pctxt, pvalue->u.terminalIDResponse);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* conferenceIDResponse */
+ case 3:
+ stat = asn1PE_H245ConferenceResponse_conferenceIDResponse (pctxt, pvalue->u.conferenceIDResponse);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* passwordResponse */
+ case 4:
+ stat = asn1PE_H245ConferenceResponse_passwordResponse (pctxt, pvalue->u.passwordResponse);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* terminalListResponse */
+ case 5:
+ stat = asn1PE_H245ConferenceResponse_terminalListResponse (pctxt, pvalue->u.terminalListResponse);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* videoCommandReject */
+ case 6:
+ /* NULL */
+ break;
+
+ /* terminalDropReject */
+ case 7:
+ /* NULL */
+ break;
+
+ /* makeMeChairResponse */
+ case 8:
+ stat = asn1PE_H245ConferenceResponse_makeMeChairResponse (pctxt, pvalue->u.makeMeChairResponse);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 9);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* extensionAddressResponse */
+ case 9:
+ stat = asn1PE_H245ConferenceResponse_extensionAddressResponse (&lctxt, pvalue->u.extensionAddressResponse);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* chairTokenOwnerResponse */
+ case 10:
+ stat = asn1PE_H245ConferenceResponse_chairTokenOwnerResponse (&lctxt, pvalue->u.chairTokenOwnerResponse);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* terminalCertificateResponse */
+ case 11:
+ stat = asn1PE_H245ConferenceResponse_terminalCertificateResponse (&lctxt, pvalue->u.terminalCertificateResponse);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* broadcastMyLogicalChannelResponse */
+ case 12:
+ stat = asn1PE_H245ConferenceResponse_broadcastMyLogicalChannelResponse (&lctxt, pvalue->u.broadcastMyLogicalChannelResponse);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* makeTerminalBroadcasterResponse */
+ case 13:
+ stat = asn1PE_H245ConferenceResponse_makeTerminalBroadcasterResponse (&lctxt, pvalue->u.makeTerminalBroadcasterResponse);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* sendThisSourceResponse */
+ case 14:
+ stat = asn1PE_H245ConferenceResponse_sendThisSourceResponse (&lctxt, pvalue->u.sendThisSourceResponse);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* requestAllTerminalIDsResponse */
+ case 15:
+ stat = asn1PE_H245RequestAllTerminalIDsResponse (&lctxt, pvalue->u.requestAllTerminalIDsResponse);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* remoteMCResponse */
+ case 16:
+ stat = asn1PE_H245RemoteMCResponse (&lctxt, pvalue->u.remoteMCResponse);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_callInformation */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkResponse_callInformation (OOCTXT* pctxt, H245MultilinkResponse_callInformation* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode dialingInformation */
+
+ stat = asn1PE_H245DialingInformation (pctxt, &pvalue->dialingInformation);
+ if (stat != ASN_OK) return stat;
+
+ /* encode callAssociationNumber */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->callAssociationNumber, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_addConnection_responseCode_rejected */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkResponse_addConnection_responseCode_rejected (OOCTXT* pctxt, H245MultilinkResponse_addConnection_responseCode_rejected* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* connectionsNotAvailable */
+ case 1:
+ /* NULL */
+ break;
+
+ /* userRejected */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_addConnection_responseCode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkResponse_addConnection_responseCode (OOCTXT* pctxt, H245MultilinkResponse_addConnection_responseCode* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* accepted */
+ case 1:
+ /* NULL */
+ break;
+
+ /* rejected */
+ case 2:
+ stat = asn1PE_H245MultilinkResponse_addConnection_responseCode_rejected (pctxt, pvalue->u.rejected);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_addConnection */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkResponse_addConnection (OOCTXT* pctxt, H245MultilinkResponse_addConnection* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode responseCode */
+
+ stat = asn1PE_H245MultilinkResponse_addConnection_responseCode (pctxt, &pvalue->responseCode);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_removeConnection */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkResponse_removeConnection (OOCTXT* pctxt, H245MultilinkResponse_removeConnection* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode connectionIdentifier */
+
+ stat = asn1PE_H245ConnectionIdentifier (pctxt, &pvalue->connectionIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkResponse_maximumHeaderInterval */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkResponse_maximumHeaderInterval (OOCTXT* pctxt, H245MultilinkResponse_maximumHeaderInterval* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode currentInterval */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->currentInterval, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkResponse */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkResponse (OOCTXT* pctxt, H245MultilinkResponse* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 5);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* callInformation */
+ case 2:
+ stat = asn1PE_H245MultilinkResponse_callInformation (pctxt, pvalue->u.callInformation);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* addConnection */
+ case 3:
+ stat = asn1PE_H245MultilinkResponse_addConnection (pctxt, pvalue->u.addConnection);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* removeConnection */
+ case 4:
+ stat = asn1PE_H245MultilinkResponse_removeConnection (pctxt, pvalue->u.removeConnection);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* maximumHeaderInterval */
+ case 5:
+ stat = asn1PE_H245MultilinkResponse_maximumHeaderInterval (pctxt, pvalue->u.maximumHeaderInterval);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateAcknowledge */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245LogicalChannelRateAcknowledge (OOCTXT* pctxt, H245LogicalChannelRateAcknowledge* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode logicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maximumBitRate */
+
+ stat = asn1PE_H245MaximumBitRate (pctxt, pvalue->maximumBitRate);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateRejectReason */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245LogicalChannelRateRejectReason (OOCTXT* pctxt, H245LogicalChannelRateRejectReason* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* undefinedReason */
+ case 1:
+ /* NULL */
+ break;
+
+ /* insufficientResources */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateReject */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245LogicalChannelRateReject (OOCTXT* pctxt, H245LogicalChannelRateReject* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.currentMaximumBitRatePresent);
+
+ /* encode sequenceNumber */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode logicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rejectReason */
+
+ stat = asn1PE_H245LogicalChannelRateRejectReason (pctxt, &pvalue->rejectReason);
+ if (stat != ASN_OK) return stat;
+
+ /* encode currentMaximumBitRate */
+
+ if (pvalue->m.currentMaximumBitRatePresent) {
+ stat = asn1PE_H245MaximumBitRate (pctxt, pvalue->currentMaximumBitRate);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ResponseMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ResponseMessage (OOCTXT* pctxt, H245ResponseMessage* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 19);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 18);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* masterSlaveDeterminationAck */
+ case 2:
+ stat = asn1PE_H245MasterSlaveDeterminationAck (pctxt, pvalue->u.masterSlaveDeterminationAck);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* masterSlaveDeterminationReject */
+ case 3:
+ stat = asn1PE_H245MasterSlaveDeterminationReject (pctxt, pvalue->u.masterSlaveDeterminationReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* terminalCapabilitySetAck */
+ case 4:
+ stat = asn1PE_H245TerminalCapabilitySetAck (pctxt, pvalue->u.terminalCapabilitySetAck);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* terminalCapabilitySetReject */
+ case 5:
+ stat = asn1PE_H245TerminalCapabilitySetReject (pctxt, pvalue->u.terminalCapabilitySetReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* openLogicalChannelAck */
+ case 6:
+ stat = asn1PE_H245OpenLogicalChannelAck (pctxt, pvalue->u.openLogicalChannelAck);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* openLogicalChannelReject */
+ case 7:
+ stat = asn1PE_H245OpenLogicalChannelReject (pctxt, pvalue->u.openLogicalChannelReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* closeLogicalChannelAck */
+ case 8:
+ stat = asn1PE_H245CloseLogicalChannelAck (pctxt, pvalue->u.closeLogicalChannelAck);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* requestChannelCloseAck */
+ case 9:
+ stat = asn1PE_H245RequestChannelCloseAck (pctxt, pvalue->u.requestChannelCloseAck);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* requestChannelCloseReject */
+ case 10:
+ stat = asn1PE_H245RequestChannelCloseReject (pctxt, pvalue->u.requestChannelCloseReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* multiplexEntrySendAck */
+ case 11:
+ stat = asn1PE_H245MultiplexEntrySendAck (pctxt, pvalue->u.multiplexEntrySendAck);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* multiplexEntrySendReject */
+ case 12:
+ stat = asn1PE_H245MultiplexEntrySendReject (pctxt, pvalue->u.multiplexEntrySendReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* requestMultiplexEntryAck */
+ case 13:
+ stat = asn1PE_H245RequestMultiplexEntryAck (pctxt, pvalue->u.requestMultiplexEntryAck);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* requestMultiplexEntryReject */
+ case 14:
+ stat = asn1PE_H245RequestMultiplexEntryReject (pctxt, pvalue->u.requestMultiplexEntryReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* requestModeAck */
+ case 15:
+ stat = asn1PE_H245RequestModeAck (pctxt, pvalue->u.requestModeAck);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* requestModeReject */
+ case 16:
+ stat = asn1PE_H245RequestModeReject (pctxt, pvalue->u.requestModeReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* roundTripDelayResponse */
+ case 17:
+ stat = asn1PE_H245RoundTripDelayResponse (pctxt, pvalue->u.roundTripDelayResponse);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* maintenanceLoopAck */
+ case 18:
+ stat = asn1PE_H245MaintenanceLoopAck (pctxt, pvalue->u.maintenanceLoopAck);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* maintenanceLoopReject */
+ case 19:
+ stat = asn1PE_H245MaintenanceLoopReject (pctxt, pvalue->u.maintenanceLoopReject);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 20);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* communicationModeResponse */
+ case 20:
+ stat = asn1PE_H245CommunicationModeResponse (&lctxt, pvalue->u.communicationModeResponse);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* conferenceResponse */
+ case 21:
+ stat = asn1PE_H245ConferenceResponse (&lctxt, pvalue->u.conferenceResponse);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* multilinkResponse */
+ case 22:
+ stat = asn1PE_H245MultilinkResponse (&lctxt, pvalue->u.multilinkResponse);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* logicalChannelRateAcknowledge */
+ case 23:
+ stat = asn1PE_H245LogicalChannelRateAcknowledge (&lctxt, pvalue->u.logicalChannelRateAcknowledge);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* logicalChannelRateReject */
+ case 24:
+ stat = asn1PE_H245LogicalChannelRateReject (&lctxt, pvalue->u.logicalChannelRateReject);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MaintenanceLoopOffCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MaintenanceLoopOffCommand (OOCTXT* pctxt, H245MaintenanceLoopOffCommand* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SendTerminalCapabilitySet_specificRequest_capabilityTabl */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 65535, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H245CapabilityTableEntryNumber (pctxt, pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SendTerminalCapabilitySet_specificRequest_capabilityDesc */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H245CapabilityDescriptorNumber (pctxt, pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SendTerminalCapabilitySet_specificRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245SendTerminalCapabilitySet_specificRequest (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capabilityTableEntryNumbersPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.capabilityDescriptorNumbersPresent);
+
+ /* encode multiplexCapability */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->multiplexCapability);
+ if (stat != ASN_OK) return stat;
+
+ /* encode capabilityTableEntryNumbers */
+
+ if (pvalue->m.capabilityTableEntryNumbersPresent) {
+ stat = asn1PE_H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers (pctxt, &pvalue->capabilityTableEntryNumbers);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode capabilityDescriptorNumbers */
+
+ if (pvalue->m.capabilityDescriptorNumbersPresent) {
+ stat = asn1PE_H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers (pctxt, &pvalue->capabilityDescriptorNumbers);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SendTerminalCapabilitySet */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245SendTerminalCapabilitySet (OOCTXT* pctxt, H245SendTerminalCapabilitySet* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* specificRequest */
+ case 1:
+ stat = asn1PE_H245SendTerminalCapabilitySet_specificRequest (pctxt, pvalue->u.specificRequest);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* genericRequest */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionCommand_encryptionAlgorithmID */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EncryptionCommand_encryptionAlgorithmID (OOCTXT* pctxt, H245EncryptionCommand_encryptionAlgorithmID* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode h233AlgorithmIdentifier */
+
+ stat = asn1PE_H245SequenceNumber (pctxt, pvalue->h233AlgorithmIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode associatedAlgorithm */
+
+ stat = asn1PE_H245NonStandardParameter (pctxt, &pvalue->associatedAlgorithm);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EncryptionCommand (OOCTXT* pctxt, H245EncryptionCommand* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* encryptionSE */
+ case 1:
+ stat = encodeOctetString (pctxt, pvalue->u.encryptionSE->numocts, pvalue->u.encryptionSE->data);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* encryptionIVRequest */
+ case 2:
+ /* NULL */
+ break;
+
+ /* encryptionAlgorithmID */
+ case 3:
+ stat = asn1PE_H245EncryptionCommand_encryptionAlgorithmID (pctxt, pvalue->u.encryptionAlgorithmID);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FlowControlCommand_scope */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FlowControlCommand_scope (OOCTXT* pctxt, H245FlowControlCommand_scope* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* logicalChannelNumber */
+ case 1:
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* resourceID */
+ case 2:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.resourceID, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* wholeMultiplex */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FlowControlCommand_restriction */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FlowControlCommand_restriction (OOCTXT* pctxt, H245FlowControlCommand_restriction* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* maximumBitRate */
+ case 1:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.maximumBitRate, 0U, 16777215U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* noRestriction */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FlowControlCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FlowControlCommand (OOCTXT* pctxt, H245FlowControlCommand* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode scope */
+
+ stat = asn1PE_H245FlowControlCommand_scope (pctxt, &pvalue->scope);
+ if (stat != ASN_OK) return stat;
+
+ /* encode restriction */
+
+ stat = asn1PE_H245FlowControlCommand_restriction (pctxt, &pvalue->restriction);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EndSessionCommand_gstnOptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EndSessionCommand_gstnOptions (OOCTXT* pctxt, H245EndSessionCommand_gstnOptions* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 5);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* telephonyMode */
+ case 1:
+ /* NULL */
+ break;
+
+ /* v8bis */
+ case 2:
+ /* NULL */
+ break;
+
+ /* v34DSVD */
+ case 3:
+ /* NULL */
+ break;
+
+ /* v34DuplexFAX */
+ case 4:
+ /* NULL */
+ break;
+
+ /* v34H324 */
+ case 5:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EndSessionCommand_isdnOptions */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EndSessionCommand_isdnOptions (OOCTXT* pctxt, H245EndSessionCommand_isdnOptions* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* telephonyMode */
+ case 1:
+ /* NULL */
+ break;
+
+ /* v140 */
+ case 2:
+ /* NULL */
+ break;
+
+ /* terminalOnHold */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EndSessionCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EndSessionCommand (OOCTXT* pctxt, H245EndSessionCommand* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* disconnect */
+ case 2:
+ /* NULL */
+ break;
+
+ /* gstnOptions */
+ case 3:
+ stat = asn1PE_H245EndSessionCommand_gstnOptions (pctxt, pvalue->u.gstnOptions);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* isdnOptions */
+ case 4:
+ stat = asn1PE_H245EndSessionCommand_isdnOptions (&lctxt, pvalue->u.isdnOptions);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_videoFastUpdateGOB */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MiscellaneousCommand_type_videoFastUpdateGOB (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoFastUpdateGOB* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode firstGOB */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->firstGOB, 0U, 17U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode numberOfGOBs */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->numberOfGOBs, 1U, 18U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_videoFastUpdateMB */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MiscellaneousCommand_type_videoFastUpdateMB (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoFastUpdateMB* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.firstGOBPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.firstMBPresent);
+
+ /* encode firstGOB */
+
+ if (pvalue->m.firstGOBPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->firstGOB, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode firstMB */
+
+ if (pvalue->m.firstMBPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->firstMB, 1U, 8192U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode numberOfMBs */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->numberOfMBs, 1U, 8192U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* KeyProtectionMethod */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245KeyProtectionMethod (OOCTXT* pctxt, H245KeyProtectionMethod* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode secureChannel */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->secureChannel);
+ if (stat != ASN_OK) return stat;
+
+ /* encode sharedSecret */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->sharedSecret);
+ if (stat != ASN_OK) return stat;
+
+ /* encode certProtectedKey */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->certProtectedKey);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncryptionUpdateRequest */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245EncryptionUpdateRequest (OOCTXT* pctxt, H245EncryptionUpdateRequest* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.keyProtectionMethodPresent);
+
+ /* encode keyProtectionMethod */
+
+ if (pvalue->m.keyProtectionMethodPresent) {
+ stat = asn1PE_H245KeyProtectionMethod (pctxt, &pvalue->keyProtectionMethod);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_progressiveRefinementStart_rep */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount (OOCTXT* pctxt, H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* doOneProgression */
+ case 1:
+ /* NULL */
+ break;
+
+ /* doContinuousProgressions */
+ case 2:
+ /* NULL */
+ break;
+
+ /* doOneIndependentProgression */
+ case 3:
+ /* NULL */
+ break;
+
+ /* doContinuousIndependentProgressions */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_progressiveRefinementStart */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MiscellaneousCommand_type_progressiveRefinementStart (OOCTXT* pctxt, H245MiscellaneousCommand_type_progressiveRefinementStart* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode repeatCount */
+
+ stat = asn1PE_H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount (pctxt, &pvalue->repeatCount);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_videoBadMBs */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MiscellaneousCommand_type_videoBadMBs (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoBadMBs* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode firstMB */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->firstMB, 1U, 9216U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode numberOfMBs */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->numberOfMBs, 1U, 9216U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode temporalReference */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->temporalReference, 0U, 1023U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PictureReference */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245PictureReference (OOCTXT* pctxt, H245PictureReference* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* pictureNumber */
+ case 1:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.pictureNumber, 0U, 1023U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* longTermPictureIndex */
+ case 2:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.longTermPictureIndex, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH245PictureReference */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245_SeqOfH245PictureReference (OOCTXT* pctxt, H245_SeqOfH245PictureReference* pvalue)
+{
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+ ASN1UINT enclen, fraglen;
+
+ enclen = fraglen = xx1 = 0;
+ pnode = pvalue->head;
+ for (;;) {
+ /* encode length determinant */
+
+ stat = encodeLength (pctxt, (pvalue->count - enclen));
+ if (stat < 0) return stat;
+
+ fraglen = stat;
+ enclen += fraglen;
+ /* encode elements */
+
+ for (; xx1 < enclen; xx1++) {
+ stat = asn1PE_H245PictureReference (pctxt, ((H245PictureReference*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+ if ( pvalue->count == enclen && fraglen < 16384) {
+ break;
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type_lostPartialPicture */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MiscellaneousCommand_type_lostPartialPicture (OOCTXT* pctxt, H245MiscellaneousCommand_type_lostPartialPicture* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode pictureReference */
+
+ stat = asn1PE_H245PictureReference (pctxt, &pvalue->pictureReference);
+ if (stat != ASN_OK) return stat;
+
+ /* encode firstMB */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->firstMB, 1U, 9216U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode numberOfMBs */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->numberOfMBs, 1U, 9216U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MiscellaneousCommand_type (OOCTXT* pctxt, H245MiscellaneousCommand_type* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 10);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 9);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* equaliseDelay */
+ case 1:
+ /* NULL */
+ break;
+
+ /* zeroDelay */
+ case 2:
+ /* NULL */
+ break;
+
+ /* multipointModeCommand */
+ case 3:
+ /* NULL */
+ break;
+
+ /* cancelMultipointModeCommand */
+ case 4:
+ /* NULL */
+ break;
+
+ /* videoFreezePicture */
+ case 5:
+ /* NULL */
+ break;
+
+ /* videoFastUpdatePicture */
+ case 6:
+ /* NULL */
+ break;
+
+ /* videoFastUpdateGOB */
+ case 7:
+ stat = asn1PE_H245MiscellaneousCommand_type_videoFastUpdateGOB (pctxt, pvalue->u.videoFastUpdateGOB);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* videoTemporalSpatialTradeOff */
+ case 8:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.videoTemporalSpatialTradeOff, 0U, 31U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* videoSendSyncEveryGOB */
+ case 9:
+ /* NULL */
+ break;
+
+ /* videoSendSyncEveryGOBCancel */
+ case 10:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 11);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* videoFastUpdateMB */
+ case 11:
+ stat = asn1PE_H245MiscellaneousCommand_type_videoFastUpdateMB (&lctxt, pvalue->u.videoFastUpdateMB);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* maxH223MUXPDUsize */
+ case 12:
+ stat = encodeConsUnsigned (&lctxt, pvalue->u.maxH223MUXPDUsize, 1U, 65535U);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* encryptionUpdate */
+ case 13:
+ stat = asn1PE_H245EncryptionSync (&lctxt, pvalue->u.encryptionUpdate);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* encryptionUpdateRequest */
+ case 14:
+ stat = asn1PE_H245EncryptionUpdateRequest (&lctxt, pvalue->u.encryptionUpdateRequest);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* switchReceiveMediaOff */
+ case 15:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* switchReceiveMediaOn */
+ case 16:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* progressiveRefinementStart */
+ case 17:
+ stat = asn1PE_H245MiscellaneousCommand_type_progressiveRefinementStart (&lctxt, pvalue->u.progressiveRefinementStart);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* progressiveRefinementAbortOne */
+ case 18:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* progressiveRefinementAbortContinuous */
+ case 19:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* videoBadMBs */
+ case 20:
+ stat = asn1PE_H245MiscellaneousCommand_type_videoBadMBs (&lctxt, pvalue->u.videoBadMBs);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* lostPicture */
+ case 21:
+ stat = asn1PE_H245_SeqOfH245PictureReference (&lctxt, pvalue->u.lostPicture);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* lostPartialPicture */
+ case 22:
+ stat = asn1PE_H245MiscellaneousCommand_type_lostPartialPicture (&lctxt, pvalue->u.lostPartialPicture);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* recoveryReferencePicture */
+ case 23:
+ stat = asn1PE_H245_SeqOfH245PictureReference (&lctxt, pvalue->u.recoveryReferencePicture);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MiscellaneousCommand (OOCTXT* pctxt, H245MiscellaneousCommand* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode logicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode type */
+
+ stat = asn1PE_H245MiscellaneousCommand_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommunicationModeCommand_communicationModeTable */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CommunicationModeCommand_communicationModeTable (OOCTXT* pctxt, H245CommunicationModeCommand_communicationModeTable* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+ DListNode* pnode;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->count);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+ pnode = pvalue->head;
+
+ for (xx1 = 0; xx1 < pvalue->count; xx1++) {
+ stat = asn1PE_H245CommunicationModeTableEntry (pctxt, ((H245CommunicationModeTableEntry*)pnode->data));
+ if (stat != ASN_OK) return stat;
+ pnode = pnode->next;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommunicationModeCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CommunicationModeCommand (OOCTXT* pctxt, H245CommunicationModeCommand* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode communicationModeTable */
+
+ stat = asn1PE_H245CommunicationModeCommand_communicationModeTable (pctxt, &pvalue->communicationModeTable);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SubstituteConferenceIDCommand_conferenceIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245SubstituteConferenceIDCommand_conferenceIdentifier (OOCTXT* pctxt, H245SubstituteConferenceIDCommand_conferenceIdentifier* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* SubstituteConferenceIDCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245SubstituteConferenceIDCommand (OOCTXT* pctxt, H245SubstituteConferenceIDCommand* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode conferenceIdentifier */
+
+ stat = asn1PE_H245SubstituteConferenceIDCommand_conferenceIdentifier (pctxt, &pvalue->conferenceIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceCommand (OOCTXT* pctxt, H245ConferenceCommand* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 7);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* broadcastMyLogicalChannel */
+ case 1:
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.broadcastMyLogicalChannel);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cancelBroadcastMyLogicalChannel */
+ case 2:
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.cancelBroadcastMyLogicalChannel);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* makeTerminalBroadcaster */
+ case 3:
+ stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.makeTerminalBroadcaster);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cancelMakeTerminalBroadcaster */
+ case 4:
+ /* NULL */
+ break;
+
+ /* sendThisSource */
+ case 5:
+ stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.sendThisSource);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cancelSendThisSource */
+ case 6:
+ /* NULL */
+ break;
+
+ /* dropConference */
+ case 7:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 8);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* substituteConferenceIDCommand */
+ case 8:
+ stat = asn1PE_H245SubstituteConferenceIDCommand (&lctxt, pvalue->u.substituteConferenceIDCommand);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223MultiplexReconfiguration_h223ModeChange */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223MultiplexReconfiguration_h223ModeChange (OOCTXT* pctxt, H245H223MultiplexReconfiguration_h223ModeChange* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* toLevel0 */
+ case 1:
+ /* NULL */
+ break;
+
+ /* toLevel1 */
+ case 2:
+ /* NULL */
+ break;
+
+ /* toLevel2 */
+ case 3:
+ /* NULL */
+ break;
+
+ /* toLevel2withOptionalHeader */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223MultiplexReconfiguration_h223AnnexADoubleFlag */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223MultiplexReconfiguration_h223AnnexADoubleFlag (OOCTXT* pctxt, H245H223MultiplexReconfiguration_h223AnnexADoubleFlag* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* start */
+ case 1:
+ /* NULL */
+ break;
+
+ /* stop */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223MultiplexReconfiguration */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223MultiplexReconfiguration (OOCTXT* pctxt, H245H223MultiplexReconfiguration* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* h223ModeChange */
+ case 1:
+ stat = asn1PE_H245H223MultiplexReconfiguration_h223ModeChange (pctxt, pvalue->u.h223ModeChange);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h223AnnexADoubleFlag */
+ case 2:
+ stat = asn1PE_H245H223MultiplexReconfiguration_h223AnnexADoubleFlag (pctxt, pvalue->u.h223AnnexADoubleFlag);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal_aal1_clockRecovery */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCCommand_aal_aal1_clockRecovery (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1_clockRecovery* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nullClockRecovery */
+ case 1:
+ /* NULL */
+ break;
+
+ /* srtsClockRecovery */
+ case 2:
+ /* NULL */
+ break;
+
+ /* adaptiveClockRecovery */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal_aal1_errorCorrection */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCCommand_aal_aal1_errorCorrection (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1_errorCorrection* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nullErrorCorrection */
+ case 1:
+ /* NULL */
+ break;
+
+ /* longInterleaver */
+ case 2:
+ /* NULL */
+ break;
+
+ /* shortInterleaver */
+ case 3:
+ /* NULL */
+ break;
+
+ /* errorCorrectionOnly */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal_aal1 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCCommand_aal_aal1 (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode clockRecovery */
+
+ stat = asn1PE_H245NewATMVCCommand_aal_aal1_clockRecovery (pctxt, &pvalue->clockRecovery);
+ if (stat != ASN_OK) return stat;
+
+ /* encode errorCorrection */
+
+ stat = asn1PE_H245NewATMVCCommand_aal_aal1_errorCorrection (pctxt, &pvalue->errorCorrection);
+ if (stat != ASN_OK) return stat;
+
+ /* encode structuredDataTransfer */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->structuredDataTransfer);
+ if (stat != ASN_OK) return stat;
+
+ /* encode partiallyFilledCells */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->partiallyFilledCells);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal_aal5 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCCommand_aal_aal5 (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal5* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode forwardMaximumSDUSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->forwardMaximumSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode backwardMaximumSDUSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->backwardMaximumSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_aal */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCCommand_aal (OOCTXT* pctxt, H245NewATMVCCommand_aal* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* aal1 */
+ case 1:
+ stat = asn1PE_H245NewATMVCCommand_aal_aal1 (pctxt, pvalue->u.aal1);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* aal5 */
+ case 2:
+ stat = asn1PE_H245NewATMVCCommand_aal_aal5 (pctxt, pvalue->u.aal5);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_multiplex */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCCommand_multiplex (OOCTXT* pctxt, H245NewATMVCCommand_multiplex* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* noMultiplex */
+ case 1:
+ /* NULL */
+ break;
+
+ /* transportStream */
+ case 2:
+ /* NULL */
+ break;
+
+ /* programStream */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_reverseParameters_multiplex */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCCommand_reverseParameters_multiplex (OOCTXT* pctxt, H245NewATMVCCommand_reverseParameters_multiplex* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* noMultiplex */
+ case 1:
+ /* NULL */
+ break;
+
+ /* transportStream */
+ case 2:
+ /* NULL */
+ break;
+
+ /* programStream */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand_reverseParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCCommand_reverseParameters (OOCTXT* pctxt, H245NewATMVCCommand_reverseParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode bitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRateLockedToPCRClock */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToPCRClock);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRateLockedToNetworkClock */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToNetworkClock);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multiplex */
+
+ stat = asn1PE_H245NewATMVCCommand_reverseParameters_multiplex (pctxt, &pvalue->multiplex);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCCommand (OOCTXT* pctxt, H245NewATMVCCommand* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode resourceID */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->resourceID, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRateLockedToPCRClock */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToPCRClock);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRateLockedToNetworkClock */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToNetworkClock);
+ if (stat != ASN_OK) return stat;
+
+ /* encode aal */
+
+ stat = asn1PE_H245NewATMVCCommand_aal (pctxt, &pvalue->aal);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multiplex */
+
+ stat = asn1PE_H245NewATMVCCommand_multiplex (pctxt, &pvalue->multiplex);
+ if (stat != ASN_OK) return stat;
+
+ /* encode reverseParameters */
+
+ stat = asn1PE_H245NewATMVCCommand_reverseParameters (pctxt, &pvalue->reverseParameters);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MobileMultilinkReconfigurationCommand_status */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MobileMultilinkReconfigurationCommand_status (OOCTXT* pctxt, H245MobileMultilinkReconfigurationCommand_status* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* synchronized_ */
+ case 1:
+ /* NULL */
+ break;
+
+ /* reconfiguration */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MobileMultilinkReconfigurationCommand */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MobileMultilinkReconfigurationCommand (OOCTXT* pctxt, H245MobileMultilinkReconfigurationCommand* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sampleSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->sampleSize, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode samplesPerFrame */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->samplesPerFrame, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode status */
+
+ stat = asn1PE_H245MobileMultilinkReconfigurationCommand_status (pctxt, &pvalue->status);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CommandMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245CommandMessage (OOCTXT* pctxt, H245CommandMessage* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 7);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* maintenanceLoopOffCommand */
+ case 2:
+ stat = asn1PE_H245MaintenanceLoopOffCommand (pctxt, pvalue->u.maintenanceLoopOffCommand);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* sendTerminalCapabilitySet */
+ case 3:
+ stat = asn1PE_H245SendTerminalCapabilitySet (pctxt, pvalue->u.sendTerminalCapabilitySet);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* encryptionCommand */
+ case 4:
+ stat = asn1PE_H245EncryptionCommand (pctxt, pvalue->u.encryptionCommand);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* flowControlCommand */
+ case 5:
+ stat = asn1PE_H245FlowControlCommand (pctxt, pvalue->u.flowControlCommand);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* endSessionCommand */
+ case 6:
+ stat = asn1PE_H245EndSessionCommand (pctxt, pvalue->u.endSessionCommand);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* miscellaneousCommand */
+ case 7:
+ stat = asn1PE_H245MiscellaneousCommand (pctxt, pvalue->u.miscellaneousCommand);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 8);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* communicationModeCommand */
+ case 8:
+ stat = asn1PE_H245CommunicationModeCommand (&lctxt, pvalue->u.communicationModeCommand);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* conferenceCommand */
+ case 9:
+ stat = asn1PE_H245ConferenceCommand (&lctxt, pvalue->u.conferenceCommand);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* h223MultiplexReconfiguration */
+ case 10:
+ stat = asn1PE_H245H223MultiplexReconfiguration (&lctxt, pvalue->u.h223MultiplexReconfiguration);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* newATMVCCommand */
+ case 11:
+ stat = asn1PE_H245NewATMVCCommand (&lctxt, pvalue->u.newATMVCCommand);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* mobileMultilinkReconfigurationCommand */
+ case 12:
+ stat = asn1PE_H245MobileMultilinkReconfigurationCommand (&lctxt, pvalue->u.mobileMultilinkReconfigurationCommand);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FunctionNotUnderstood */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FunctionNotUnderstood (OOCTXT* pctxt, H245FunctionNotUnderstood* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* request */
+ case 1:
+ stat = asn1PE_H245RequestMessage (pctxt, pvalue->u.request);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* response */
+ case 2:
+ stat = asn1PE_H245ResponseMessage (pctxt, pvalue->u.response);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* command */
+ case 3:
+ stat = asn1PE_H245CommandMessage (pctxt, pvalue->u.command);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MasterSlaveDeterminationRelease */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MasterSlaveDeterminationRelease (OOCTXT* pctxt, H245MasterSlaveDeterminationRelease* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalCapabilitySetRelease */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TerminalCapabilitySetRelease (OOCTXT* pctxt, H245TerminalCapabilitySetRelease* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* OpenLogicalChannelConfirm */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245OpenLogicalChannelConfirm (OOCTXT* pctxt, H245OpenLogicalChannelConfirm* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode forwardLogicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestChannelCloseRelease */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestChannelCloseRelease (OOCTXT* pctxt, H245RequestChannelCloseRelease* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode forwardLogicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendRelease_multiplexTableEntryNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexEntrySendRelease_multiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexEntrySendRelease_multiplexTableEntryNumber* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultiplexEntrySendRelease */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultiplexEntrySendRelease (OOCTXT* pctxt, H245MultiplexEntrySendRelease* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode multiplexTableEntryNumber */
+
+ stat = asn1PE_H245MultiplexEntrySendRelease_multiplexTableEntryNumber (pctxt, &pvalue->multiplexTableEntryNumber);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryRelease_entryNumbers */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestMultiplexEntryRelease_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryRelease_entryNumbers* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 };
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* encode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeLength (pctxt, pvalue->n);
+ if (stat < 0) return stat;
+
+ /* encode elements */
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestMultiplexEntryRelease */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestMultiplexEntryRelease (OOCTXT* pctxt, H245RequestMultiplexEntryRelease* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode entryNumbers */
+
+ stat = asn1PE_H245RequestMultiplexEntryRelease_entryNumbers (pctxt, &pvalue->entryNumbers);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestModeRelease */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245RequestModeRelease (OOCTXT* pctxt, H245RequestModeRelease* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousIndication_type_videoNotDecodedMBs */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MiscellaneousIndication_type_videoNotDecodedMBs (OOCTXT* pctxt, H245MiscellaneousIndication_type_videoNotDecodedMBs* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode firstMB */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->firstMB, 1U, 8192U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode numberOfMBs */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->numberOfMBs, 1U, 8192U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode temporalReference */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->temporalReference, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousIndication_type */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MiscellaneousIndication_type (OOCTXT* pctxt, H245MiscellaneousIndication_type* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 10);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 9);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* logicalChannelActive */
+ case 1:
+ /* NULL */
+ break;
+
+ /* logicalChannelInactive */
+ case 2:
+ /* NULL */
+ break;
+
+ /* multipointConference */
+ case 3:
+ /* NULL */
+ break;
+
+ /* cancelMultipointConference */
+ case 4:
+ /* NULL */
+ break;
+
+ /* multipointZeroComm */
+ case 5:
+ /* NULL */
+ break;
+
+ /* cancelMultipointZeroComm */
+ case 6:
+ /* NULL */
+ break;
+
+ /* multipointSecondaryStatus */
+ case 7:
+ /* NULL */
+ break;
+
+ /* cancelMultipointSecondaryStatus */
+ case 8:
+ /* NULL */
+ break;
+
+ /* videoIndicateReadyToActivate */
+ case 9:
+ /* NULL */
+ break;
+
+ /* videoTemporalSpatialTradeOff */
+ case 10:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.videoTemporalSpatialTradeOff, 0U, 31U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 11);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* videoNotDecodedMBs */
+ case 11:
+ stat = asn1PE_H245MiscellaneousIndication_type_videoNotDecodedMBs (&lctxt, pvalue->u.videoNotDecodedMBs);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* transportCapability */
+ case 12:
+ stat = asn1PE_H245TransportCapability (&lctxt, pvalue->u.transportCapability);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MiscellaneousIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MiscellaneousIndication (OOCTXT* pctxt, H245MiscellaneousIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode logicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode type */
+
+ stat = asn1PE_H245MiscellaneousIndication_type (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* JitterIndication_scope */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245JitterIndication_scope (OOCTXT* pctxt, H245JitterIndication_scope* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* logicalChannelNumber */
+ case 1:
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* resourceID */
+ case 2:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.resourceID, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* wholeMultiplex */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* JitterIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245JitterIndication (OOCTXT* pctxt, H245JitterIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.skippedFrameCountPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.additionalDecoderBufferPresent);
+
+ /* encode scope */
+
+ stat = asn1PE_H245JitterIndication_scope (pctxt, &pvalue->scope);
+ if (stat != ASN_OK) return stat;
+
+ /* encode estimatedReceivedJitterMantissa */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->estimatedReceivedJitterMantissa, 0U, 3U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode estimatedReceivedJitterExponent */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->estimatedReceivedJitterExponent, 0U, 7U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode skippedFrameCount */
+
+ if (pvalue->m.skippedFrameCountPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->skippedFrameCount, 0U, 15U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode additionalDecoderBuffer */
+
+ if (pvalue->m.additionalDecoderBufferPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->additionalDecoderBuffer, 0U, 262143U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H223SkewIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H223SkewIndication (OOCTXT* pctxt, H245H223SkewIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode logicalChannelNumber1 */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode logicalChannelNumber2 */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode skew */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->skew, 0U, 4095U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal_aal1_clockRecovery */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCIndication_aal_aal1_clockRecovery (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1_clockRecovery* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nullClockRecovery */
+ case 1:
+ /* NULL */
+ break;
+
+ /* srtsClockRecovery */
+ case 2:
+ /* NULL */
+ break;
+
+ /* adaptiveClockRecovery */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal_aal1_errorCorrection */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCIndication_aal_aal1_errorCorrection (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1_errorCorrection* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nullErrorCorrection */
+ case 1:
+ /* NULL */
+ break;
+
+ /* longInterleaver */
+ case 2:
+ /* NULL */
+ break;
+
+ /* shortInterleaver */
+ case 3:
+ /* NULL */
+ break;
+
+ /* errorCorrectionOnly */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal_aal1 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCIndication_aal_aal1 (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode clockRecovery */
+
+ stat = asn1PE_H245NewATMVCIndication_aal_aal1_clockRecovery (pctxt, &pvalue->clockRecovery);
+ if (stat != ASN_OK) return stat;
+
+ /* encode errorCorrection */
+
+ stat = asn1PE_H245NewATMVCIndication_aal_aal1_errorCorrection (pctxt, &pvalue->errorCorrection);
+ if (stat != ASN_OK) return stat;
+
+ /* encode structuredDataTransfer */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->structuredDataTransfer);
+ if (stat != ASN_OK) return stat;
+
+ /* encode partiallyFilledCells */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->partiallyFilledCells);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal_aal5 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCIndication_aal_aal5 (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal5* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode forwardMaximumSDUSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->forwardMaximumSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode backwardMaximumSDUSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->backwardMaximumSDUSize, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_aal */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCIndication_aal (OOCTXT* pctxt, H245NewATMVCIndication_aal* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* aal1 */
+ case 1:
+ stat = asn1PE_H245NewATMVCIndication_aal_aal1 (pctxt, pvalue->u.aal1);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* aal5 */
+ case 2:
+ stat = asn1PE_H245NewATMVCIndication_aal_aal5 (pctxt, pvalue->u.aal5);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_multiplex */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCIndication_multiplex (OOCTXT* pctxt, H245NewATMVCIndication_multiplex* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* noMultiplex */
+ case 1:
+ /* NULL */
+ break;
+
+ /* transportStream */
+ case 2:
+ /* NULL */
+ break;
+
+ /* programStream */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_reverseParameters_multiplex */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCIndication_reverseParameters_multiplex (OOCTXT* pctxt, H245NewATMVCIndication_reverseParameters_multiplex* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* noMultiplex */
+ case 1:
+ /* NULL */
+ break;
+
+ /* transportStream */
+ case 2:
+ /* NULL */
+ break;
+
+ /* programStream */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication_reverseParameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCIndication_reverseParameters (OOCTXT* pctxt, H245NewATMVCIndication_reverseParameters* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode bitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRateLockedToPCRClock */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToPCRClock);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRateLockedToNetworkClock */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToNetworkClock);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multiplex */
+
+ stat = asn1PE_H245NewATMVCIndication_reverseParameters_multiplex (pctxt, &pvalue->multiplex);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NewATMVCIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245NewATMVCIndication (OOCTXT* pctxt, H245NewATMVCIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.reverseParametersPresent);
+
+ encodeBit (pctxt, extbit);
+
+ /* encode resourceID */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->resourceID, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRate */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRateLockedToPCRClock */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToPCRClock);
+ if (stat != ASN_OK) return stat;
+
+ /* encode bitRateLockedToNetworkClock */
+
+ stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToNetworkClock);
+ if (stat != ASN_OK) return stat;
+
+ /* encode aal */
+
+ stat = asn1PE_H245NewATMVCIndication_aal (pctxt, &pvalue->aal);
+ if (stat != ASN_OK) return stat;
+
+ /* encode multiplex */
+
+ stat = asn1PE_H245NewATMVCIndication_multiplex (pctxt, &pvalue->multiplex);
+ if (stat != ASN_OK) return stat;
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.reverseParametersPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.reverseParametersPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H245NewATMVCIndication_reverseParameters (&lctxt, &pvalue->reverseParameters);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputIndication_userInputSupportIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UserInputIndication_userInputSupportIndication (OOCTXT* pctxt, H245UserInputIndication_userInputSupportIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* basicString */
+ case 2:
+ /* NULL */
+ break;
+
+ /* iA5String */
+ case 3:
+ /* NULL */
+ break;
+
+ /* generalString */
+ case 4:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputIndication_signal_rtp */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UserInputIndication_signal_rtp (OOCTXT* pctxt, H245UserInputIndication_signal_rtp* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.timestampPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.expirationTimePresent);
+
+ /* encode timestamp */
+
+ if (pvalue->m.timestampPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->timestamp, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode expirationTime */
+
+ if (pvalue->m.expirationTimePresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->expirationTime, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode logicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputIndication_signal */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_MULTIMEDIA_SYSTEM_CONTROL_UserInputIndication_signal_signalType_CharSet;
+
+EXTERN int asn1PE_H245UserInputIndication_signal (OOCTXT* pctxt, H245UserInputIndication_signal* pvalue)
+{
+ static Asn1SizeCnst signalType_lsize1 = { 0, 1, 1, 0 };
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.rtpPayloadIndicationPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.durationPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.rtpPresent);
+
+ /* encode signalType */
+
+ addSizeConstraint (pctxt, &signalType_lsize1);
+
+ stat = encodeConstrainedStringEx (pctxt, pvalue->signalType, gs_MULTIMEDIA_SYSTEM_CONTROL_UserInputIndication_signal_signalType_CharSet, 8, 5, 7);
+ if (stat != ASN_OK) return stat;
+
+ /* encode duration */
+
+ if (pvalue->m.durationPresent) {
+ stat = encodeConsUnsigned (pctxt, pvalue->duration, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ /* encode rtp */
+
+ if (pvalue->m.rtpPresent) {
+ stat = asn1PE_H245UserInputIndication_signal_rtp (pctxt, &pvalue->rtp);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.rtpPayloadIndicationPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.rtpPayloadIndicationPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ /* NULL */
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputIndication_signalUpdate_rtp */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UserInputIndication_signalUpdate_rtp (OOCTXT* pctxt, H245UserInputIndication_signalUpdate_rtp* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode logicalChannelNumber */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputIndication_signalUpdate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UserInputIndication_signalUpdate (OOCTXT* pctxt, H245UserInputIndication_signalUpdate* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.rtpPresent);
+
+ /* encode duration */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->duration, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rtp */
+
+ if (pvalue->m.rtpPresent) {
+ stat = asn1PE_H245UserInputIndication_signalUpdate_rtp (pctxt, &pvalue->rtp);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputIndication_extendedAlphanumeric */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UserInputIndication_extendedAlphanumeric (OOCTXT* pctxt, H245UserInputIndication_extendedAlphanumeric* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.rtpPayloadIndicationPresent);
+
+ /* encode alphanumeric */
+
+ stat = encodeVarWidthCharString (pctxt, pvalue->alphanumeric);
+ if (stat != ASN_OK) return stat;
+
+ /* encode rtpPayloadIndication */
+
+ if (pvalue->m.rtpPayloadIndicationPresent) {
+ /* NULL */
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* UserInputIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245UserInputIndication (OOCTXT* pctxt, H245UserInputIndication* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* alphanumeric */
+ case 2:
+ stat = encodeVarWidthCharString (pctxt, pvalue->u.alphanumeric);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* userInputSupportIndication */
+ case 3:
+ stat = asn1PE_H245UserInputIndication_userInputSupportIndication (&lctxt, pvalue->u.userInputSupportIndication);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* signal */
+ case 4:
+ stat = asn1PE_H245UserInputIndication_signal (&lctxt, pvalue->u.signal);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* signalUpdate */
+ case 5:
+ stat = asn1PE_H245UserInputIndication_signalUpdate (&lctxt, pvalue->u.signalUpdate);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* extendedAlphanumeric */
+ case 6:
+ stat = asn1PE_H245UserInputIndication_extendedAlphanumeric (&lctxt, pvalue->u.extendedAlphanumeric);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H2250MaximumSkewIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245H2250MaximumSkewIndication (OOCTXT* pctxt, H245H2250MaximumSkewIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode logicalChannelNumber1 */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode logicalChannelNumber2 */
+
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber2);
+ if (stat != ASN_OK) return stat;
+
+ /* encode maximumSkew */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->maximumSkew, 0U, 4095U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MCLocationIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MCLocationIndication (OOCTXT* pctxt, H245MCLocationIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode signalAddress */
+
+ stat = asn1PE_H245TransportAddress (pctxt, &pvalue->signalAddress);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TerminalYouAreSeeingInSubPictureNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245TerminalYouAreSeeingInSubPictureNumber (OOCTXT* pctxt, H245TerminalYouAreSeeingInSubPictureNumber* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode terminalNumber */
+
+ stat = asn1PE_H245TerminalNumber (pctxt, pvalue->terminalNumber);
+ if (stat != ASN_OK) return stat;
+
+ /* encode subPictureNumber */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->subPictureNumber, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VideoIndicateCompose */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VideoIndicateCompose (OOCTXT* pctxt, H245VideoIndicateCompose* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode compositionNumber */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->compositionNumber, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245ConferenceIndication (OOCTXT* pctxt, H245ConferenceIndication* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 10);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 9);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* sbeNumber */
+ case 1:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.sbeNumber, 0U, 9U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* terminalNumberAssign */
+ case 2:
+ stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.terminalNumberAssign);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* terminalJoinedConference */
+ case 3:
+ stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.terminalJoinedConference);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* terminalLeftConference */
+ case 4:
+ stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.terminalLeftConference);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* seenByAtLeastOneOther */
+ case 5:
+ /* NULL */
+ break;
+
+ /* cancelSeenByAtLeastOneOther */
+ case 6:
+ /* NULL */
+ break;
+
+ /* seenByAll */
+ case 7:
+ /* NULL */
+ break;
+
+ /* cancelSeenByAll */
+ case 8:
+ /* NULL */
+ break;
+
+ /* terminalYouAreSeeing */
+ case 9:
+ stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.terminalYouAreSeeing);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* requestForFloor */
+ case 10:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 11);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* withdrawChairToken */
+ case 11:
+ /* NULL */
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* floorRequested */
+ case 12:
+ stat = asn1PE_H245TerminalLabel (&lctxt, pvalue->u.floorRequested);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* terminalYouAreSeeingInSubPictureNumber */
+ case 13:
+ stat = asn1PE_H245TerminalYouAreSeeingInSubPictureNumber (&lctxt, pvalue->u.terminalYouAreSeeingInSubPictureNumber);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* videoIndicateCompose */
+ case 14:
+ stat = asn1PE_H245VideoIndicateCompose (&lctxt, pvalue->u.videoIndicateCompose);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VendorIdentification_productNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VendorIdentification_productNumber (OOCTXT* pctxt, H245VendorIdentification_productNumber* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VendorIdentification_versionNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VendorIdentification_versionNumber (OOCTXT* pctxt, H245VendorIdentification_versionNumber* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VendorIdentification */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245VendorIdentification (OOCTXT* pctxt, H245VendorIdentification* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.productNumberPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.versionNumberPresent);
+
+ /* encode vendor */
+
+ stat = asn1PE_H245NonStandardIdentifier (pctxt, &pvalue->vendor);
+ if (stat != ASN_OK) return stat;
+
+ /* encode productNumber */
+
+ if (pvalue->m.productNumberPresent) {
+ stat = asn1PE_H245VendorIdentification_productNumber (pctxt, &pvalue->productNumber);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode versionNumber */
+
+ if (pvalue->m.versionNumberPresent) {
+ stat = asn1PE_H245VendorIdentification_versionNumber (pctxt, &pvalue->versionNumber);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FunctionNotSupported_cause */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FunctionNotSupported_cause (OOCTXT* pctxt, H245FunctionNotSupported_cause* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* syntaxError */
+ case 1:
+ /* NULL */
+ break;
+
+ /* semanticError */
+ case 2:
+ /* NULL */
+ break;
+
+ /* unknownFunction */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FunctionNotSupported */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FunctionNotSupported (OOCTXT* pctxt, H245FunctionNotSupported* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.returnedFunctionPresent);
+
+ /* encode cause */
+
+ stat = asn1PE_H245FunctionNotSupported_cause (pctxt, &pvalue->cause);
+ if (stat != ASN_OK) return stat;
+
+ /* encode returnedFunction */
+
+ if (pvalue->m.returnedFunctionPresent) {
+ stat = encodeOctetString (pctxt, pvalue->returnedFunction.numocts, pvalue->returnedFunction.data);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkIndication_crcDesired */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkIndication_crcDesired (OOCTXT* pctxt, H245MultilinkIndication_crcDesired* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkIndication_excessiveError */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkIndication_excessiveError (OOCTXT* pctxt, H245MultilinkIndication_excessiveError* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode connectionIdentifier */
+
+ stat = asn1PE_H245ConnectionIdentifier (pctxt, &pvalue->connectionIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultilinkIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultilinkIndication (OOCTXT* pctxt, H245MultilinkIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 3);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* crcDesired */
+ case 2:
+ stat = asn1PE_H245MultilinkIndication_crcDesired (pctxt, pvalue->u.crcDesired);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* excessiveError */
+ case 3:
+ stat = asn1PE_H245MultilinkIndication_excessiveError (pctxt, pvalue->u.excessiveError);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* LogicalChannelRateRelease */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245LogicalChannelRateRelease (OOCTXT* pctxt, H245LogicalChannelRateRelease* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FlowControlIndication_scope */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FlowControlIndication_scope (OOCTXT* pctxt, H245FlowControlIndication_scope* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* logicalChannelNumber */
+ case 1:
+ stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.logicalChannelNumber);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* resourceID */
+ case 2:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.resourceID, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* wholeMultiplex */
+ case 3:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FlowControlIndication_restriction */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FlowControlIndication_restriction (OOCTXT* pctxt, H245FlowControlIndication_restriction* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* maximumBitRate */
+ case 1:
+ stat = encodeConsUnsigned (pctxt, pvalue->u.maximumBitRate, 0U, 16777215U);
+ if (stat != ASN_OK) return stat;
+
+ break;
+
+ /* noRestriction */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FlowControlIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245FlowControlIndication (OOCTXT* pctxt, H245FlowControlIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode scope */
+
+ stat = asn1PE_H245FlowControlIndication_scope (pctxt, &pvalue->scope);
+ if (stat != ASN_OK) return stat;
+
+ /* encode restriction */
+
+ stat = asn1PE_H245FlowControlIndication_restriction (pctxt, &pvalue->restriction);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MobileMultilinkReconfigurationIndication */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MobileMultilinkReconfigurationIndication (OOCTXT* pctxt, H245MobileMultilinkReconfigurationIndication* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode sampleSize */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->sampleSize, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ /* encode samplesPerFrame */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->samplesPerFrame, 1U, 255U);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IndicationMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245IndicationMessage (OOCTXT* pctxt, H245IndicationMessage* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 14);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 13);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* nonStandard */
+ case 1:
+ stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* functionNotUnderstood */
+ case 2:
+ stat = asn1PE_H245FunctionNotUnderstood (pctxt, pvalue->u.functionNotUnderstood);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* masterSlaveDeterminationRelease */
+ case 3:
+ stat = asn1PE_H245MasterSlaveDeterminationRelease (pctxt, pvalue->u.masterSlaveDeterminationRelease);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* terminalCapabilitySetRelease */
+ case 4:
+ stat = asn1PE_H245TerminalCapabilitySetRelease (pctxt, pvalue->u.terminalCapabilitySetRelease);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* openLogicalChannelConfirm */
+ case 5:
+ stat = asn1PE_H245OpenLogicalChannelConfirm (pctxt, pvalue->u.openLogicalChannelConfirm);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* requestChannelCloseRelease */
+ case 6:
+ stat = asn1PE_H245RequestChannelCloseRelease (pctxt, pvalue->u.requestChannelCloseRelease);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* multiplexEntrySendRelease */
+ case 7:
+ stat = asn1PE_H245MultiplexEntrySendRelease (pctxt, pvalue->u.multiplexEntrySendRelease);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* requestMultiplexEntryRelease */
+ case 8:
+ stat = asn1PE_H245RequestMultiplexEntryRelease (pctxt, pvalue->u.requestMultiplexEntryRelease);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* requestModeRelease */
+ case 9:
+ stat = asn1PE_H245RequestModeRelease (pctxt, pvalue->u.requestModeRelease);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* miscellaneousIndication */
+ case 10:
+ stat = asn1PE_H245MiscellaneousIndication (pctxt, pvalue->u.miscellaneousIndication);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* jitterIndication */
+ case 11:
+ stat = asn1PE_H245JitterIndication (pctxt, pvalue->u.jitterIndication);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* h223SkewIndication */
+ case 12:
+ stat = asn1PE_H245H223SkewIndication (pctxt, pvalue->u.h223SkewIndication);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* newATMVCIndication */
+ case 13:
+ stat = asn1PE_H245NewATMVCIndication (pctxt, pvalue->u.newATMVCIndication);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* userInput */
+ case 14:
+ stat = asn1PE_H245UserInputIndication (pctxt, pvalue->u.userInput);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 15);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* h2250MaximumSkewIndication */
+ case 15:
+ stat = asn1PE_H245H2250MaximumSkewIndication (&lctxt, pvalue->u.h2250MaximumSkewIndication);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* mcLocationIndication */
+ case 16:
+ stat = asn1PE_H245MCLocationIndication (&lctxt, pvalue->u.mcLocationIndication);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* conferenceIndication */
+ case 17:
+ stat = asn1PE_H245ConferenceIndication (&lctxt, pvalue->u.conferenceIndication);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* vendorIdentification */
+ case 18:
+ stat = asn1PE_H245VendorIdentification (&lctxt, pvalue->u.vendorIdentification);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* functionNotSupported */
+ case 19:
+ stat = asn1PE_H245FunctionNotSupported (&lctxt, pvalue->u.functionNotSupported);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* multilinkIndication */
+ case 20:
+ stat = asn1PE_H245MultilinkIndication (&lctxt, pvalue->u.multilinkIndication);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* logicalChannelRateRelease */
+ case 21:
+ stat = asn1PE_H245LogicalChannelRateRelease (&lctxt, pvalue->u.logicalChannelRateRelease);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* flowControlIndication */
+ case 22:
+ stat = asn1PE_H245FlowControlIndication (&lctxt, pvalue->u.flowControlIndication);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ /* mobileMultilinkReconfigurationIndication */
+ case 23:
+ stat = asn1PE_H245MobileMultilinkReconfigurationIndication (&lctxt, pvalue->u.mobileMultilinkReconfigurationIndication);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MultimediaSystemControlMessage */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H245MultimediaSystemControlMessage (OOCTXT* pctxt, H245MultimediaSystemControlMessage* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* request */
+ case 1:
+ stat = asn1PE_H245RequestMessage (pctxt, pvalue->u.request);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* response */
+ case 2:
+ stat = asn1PE_H245ResponseMessage (pctxt, pvalue->u.response);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* command */
+ case 3:
+ stat = asn1PE_H245CommandMessage (pctxt, pvalue->u.command);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* indication */
+ case 4:
+ stat = asn1PE_H245IndicationMessage (pctxt, pvalue->u.indication);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+