aboutsummaryrefslogtreecommitdiffstats
path: root/lib/megaco/src/engine/megaco_erl_dist_encoder_mc.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/megaco/src/engine/megaco_erl_dist_encoder_mc.erl')
-rw-r--r--lib/megaco/src/engine/megaco_erl_dist_encoder_mc.erl1894
1 files changed, 1894 insertions, 0 deletions
diff --git a/lib/megaco/src/engine/megaco_erl_dist_encoder_mc.erl b/lib/megaco/src/engine/megaco_erl_dist_encoder_mc.erl
new file mode 100644
index 0000000000..52395ae516
--- /dev/null
+++ b/lib/megaco/src/engine/megaco_erl_dist_encoder_mc.erl
@@ -0,0 +1,1894 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2007-2009. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+
+%%
+%%----------------------------------------------------------------------
+%% Purpose: Externalize/internalize Megaco/H.248 messages
+%%----------------------------------------------------------------------
+
+-module(megaco_erl_dist_encoder_mc).
+
+-behaviour(megaco_edist_compress).
+
+-export([
+ encode/1, encode/2,
+ decode/1, decode/2
+ ]).
+
+
+-include("megaco_message_internal.hrl").
+-include_lib("megaco/src/app/megaco_internal.hrl").
+
+
+%%----------------------------------------------------------------------
+%% Megaco compress a Megaco record into a binary
+%% Return {ok, DeepIoList} | {error, Reason}
+%%----------------------------------------------------------------------
+
+encode(M) ->
+ e(M, 1).
+
+encode(M, Vsn) ->
+ ?d("encode -> entry with"
+ "~n M: ~p"
+ "~n Vsn: ~p", [M, Vsn]),
+ Result = e(M, Vsn),
+ ?d("encode -> "
+ "~n Result: ~p", [Result]),
+ Result.
+
+decode(M) ->
+ d(M, 1).
+
+decode(M, Vsn) ->
+ ?d("decode -> entry with"
+ "~n M: ~p"
+ "~n Vsn: ~p", [M, Vsn]),
+ Result = d(M, Vsn),
+ ?d("decode -> "
+ "~n Result: ~p", [Result]),
+ Result.
+
+
+el(L, V) when is_list(L) -> [e(T, V) || T <- L];
+el(L, _V) -> L.
+dl(L, V) when is_list(L) -> [d(T, V) || T <- L];
+dl(L, _V) -> L.
+
+ell(L, V) when is_list(L) -> [el(T, V) || T <- L];
+ell(L, _V) -> L.
+dll(L, V) when is_list(L) -> [dl(T, V) || T <- L];
+dll(L, _V) -> L.
+
+e(asn1_NOVALUE, _) ->
+ {1};
+e('NULL', _V) ->
+ {2};
+e(sendRecv, _V) ->
+ {3};
+e(recvOnly, _V) ->
+ {4};
+e(restart, _V) ->
+ {5};
+e(mediaToken, _V) ->
+ {6};
+e(eventsToken, _V) ->
+ {7};
+e(signalsToken, _V) ->
+ {8};
+e(digitMapToken, _V) ->
+ {9};
+e(statsToken, _V) ->
+ {10};
+e(packagesToken, _V) ->
+ {11};
+e(h221, _V) ->
+ {12};
+e(h223, _V) ->
+ {13};
+e(h226, _V) ->
+ {14};
+e(v76, _V) ->
+ {15};
+
+e({'MegacoMessage', asn1_NOVALUE, {'Message', 1 = V, Mid, Body}}, _) ->
+ {20, e(Mid, V), e(Body, V)};
+e({'MegacoMessage', asn1_NOVALUE, {'Message', 2 = V, Mid, Body}}, _) ->
+ {21, e(Mid, V), e(Body, V)};
+e({'MegacoMessage', asn1_NOVALUE, {'Message', V, Mid, Body}}, _) ->
+ {22, V, e(Mid, V), e(Body, V)};
+e({'MegacoMessage', AuthHeader, {'Message', 1 = V, Mid, Body}}, _) ->
+ {23, e(AuthHeader, V), V, e(Mid, V), e(Body, V)};
+e({'MegacoMessage', AuthHeader, {'Message', 2 = V, Mid, Body}}, _) ->
+ {24, e(AuthHeader, V), V, e(Mid, V), e(Body, V)};
+e({'MegacoMessage', AuthHeader, {'Message', V, Mid, Body}}, _) ->
+ {25, V, e(AuthHeader, V), V, e(Mid, V), e(Body, V)};
+e({'MegacoMessage', AuthHeader, Mess}, V) ->
+ {26, e(AuthHeader, V), e(Mess, V)};
+e({'Message', V, Mid, Body}, _) ->
+ {27, V, e(Mid, V), e(Body, V)};
+
+e({domainName, {'DomainName', Name, asn1_NOVALUE}}, _V) ->
+ {30, Name};
+e({domainName, {'DomainName', Name, PortNumber}}, _V) ->
+ {31, Name, PortNumber};
+e({domainName, N}, V) ->
+ {32, e(N, V)};
+e({'DomainName', Name, asn1_NOVALUE}, _V) ->
+ {33, Name};
+e({'DomainName', Name, PortNumber}, _V) ->
+ {34, Name, PortNumber};
+e({ip4Address, {'IP4Address', Addr, asn1_NOVALUE}}, _V) ->
+ {35, Addr};
+e({ip4Address, {'IP4Address', Addr, PortNumber}}, _V) ->
+ {36, Addr, PortNumber};
+e({ip4Address, A}, V) ->
+ {37, e(A, V)};
+e({'IP4Address', Addr, asn1_NOVALUE}, _V) ->
+ {38, Addr};
+e({'IP4Address', Addr, PortNumber}, _V) ->
+ {39, Addr, PortNumber};
+e({ip6Address, {'IP6Address', Addr, asn1_NOVALUE}}, _V) ->
+ {40, Addr};
+e({ip6Address, {'IP6Address', Addr, PortNumber}}, _V) ->
+ {41, Addr, PortNumber};
+e({ip6Address, A}, V) ->
+ {42, e(A, V)};
+e({'IP6Address', Addr, asn1_NOVALUE}, _V) ->
+ {43, Addr};
+e({'IP6Address', Addr, PortNumber}, _V) ->
+ {44, Addr, PortNumber};
+
+e({transactions, [Transaction]}, V) ->
+ {50, e(Transaction, V)};
+e({transactions, Transactions}, V) ->
+ {51, el(Transactions, V)};
+e({messageError, {'ErrorDescriptor', EC, asn1_NOVALUE}}, _V) ->
+ {52, EC};
+e({messageError, {'ErrorDescriptor', EC, ET}}, _V) ->
+ {53, EC, ET};
+e({messageError, Error}, V) ->
+ {54, e(Error, V)};
+e({transactionRequest, {'TransactionRequest', TransId, Actions}}, V) ->
+ {55, TransId, el(Actions, V)};
+e({transactionPending, {'TransactionPending', TransId}}, _V) ->
+ {56, TransId};
+e({transactionReply, {'TransactionReply', TransId, asn1_NOVALUE, TransRes}}, V) ->
+ {57, TransId, e(TransRes, V)};
+e({transactionReply, {'TransactionReply', TransId, 'NULL', TransRes}}, V) ->
+ {58, TransId, e(TransRes, V)};
+e({transactionReply, {'TransactionReply', TransId, ImmAckReq, TransRes}}, V) ->
+ {59, TransId, e(ImmAckReq, V), e(TransRes, V)};
+e({transactionResponseAck, T}, V) ->
+ {60, el(T, V)};
+e({'TransactionAck', FirstAck, asn1_NOVALUE}, _V) ->
+ {61, FirstAck};
+e({'TransactionAck', FirstAck, LastAck}, _V) ->
+ {62, FirstAck, LastAck};
+
+e({'ErrorDescriptor', EC, asn1_NOVALUE}, _V) ->
+ {70, EC};
+e({'ErrorDescriptor', EC, ET}, _V) ->
+ {71, EC, ET};
+
+e({'ActionRequest', Cid, CtxReq, CtxAAR, [CmdReq]}, V) ->
+ {80, Cid, e(CtxReq, V), e(CtxAAR, V), e(CmdReq, V)};
+e({'ActionRequest', Cid, CtxReq, CtxAAR, CmdReqs}, V) ->
+ {81, Cid, e(CtxReq, V), e(CtxAAR, V), el(CmdReqs, V)};
+
+e({'ContextRequest', P, E, T}, V) when V < 3 ->
+ {90, e(P, V), e(E, V), el(T, V)};
+e({'ContextRequest', P, E, T, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {91, e(P, V), e(E, V), el(T, V)};
+e({'ContextRequest', P, E, T, IC, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {92, e(P, V), e(E, V), el(T, V), e(IC, V)};
+e({'ContextRequest', P, E, T, IC, CP, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {93, e(P, V), e(E, V), el(T, V), e(IC, V), el(CP, V)};
+e({'ContextRequest', P, E, T, IC, CP, CL}, V)
+ when V >= 3 ->
+ {94, e(P, V), e(E, V), el(T, V), e(IC, V), el(CP, V), el(CL, V)};
+
+e({'ContextAttrAuditRequest', P, E, T}, V) when V < 3 ->
+ {100, e(P, V), e(E, V), e(T, V)};
+e({'ContextAttrAuditRequest', P, E, T,
+ asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {101, e(P, V), e(E, V), e(T, V)};
+e({'ContextAttrAuditRequest', P, E, T,
+ IC, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {102, e(P, V), e(E, V), e(T, V),
+ e(IC, V)};
+e({'ContextAttrAuditRequest', P, E, T,
+ IC, CPA, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {103, e(P, V), e(E, V), e(T, V),
+ e(IC, V), el(CPA, V)};
+e({'ContextAttrAuditRequest', P, E, T,
+ IC, CPA, SP, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {104, e(P, V), e(E, V), e(T, V),
+ e(IC, V), el(CPA, V), e(SP, V)};
+e({'ContextAttrAuditRequest', P, E, T,
+ IC, CPA, SP, SE, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {105, e(P, V), e(E, V), e(T, V),
+ e(IC, V), el(CPA, V), e(SP, V), e(SE, V)};
+e({'ContextAttrAuditRequest', P, E, T,
+ IC, CPA, SP, SE, SIC, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {106, e(P, V), e(E, V), e(T, V),
+ e(IC, V), el(CPA, V), e(SP, V), e(SE, V), e(SIC, V)};
+e({'ContextAttrAuditRequest', P, E, T,
+ IC, CPA, SP, SE, SIC, SL}, V)
+ when V >= 3 ->
+ {107, e(P, V), e(E, V), e(T, V),
+ e(IC, V), el(CPA, V), e(SP, V), e(SE, V), e(SIC, V), e(SL, V)};
+
+e({'CommandRequest', Cmd, asn1_NOVALUE, asn1_NOVALUE}, V) ->
+ {110, e(Cmd, V)};
+e({'CommandRequest', Cmd, 'NULL', asn1_NOVALUE}, V) ->
+ {111, e(Cmd, V)};
+e({'CommandRequest', Cmd, asn1_NOVALUE, 'NULL'}, V) ->
+ {112, e(Cmd, V)};
+e({'CommandRequest', Cmd, 'NULL', 'NULL'}, V) ->
+ {113, e(Cmd, V)};
+e({'CommandRequest', Cmd, Opt, WR}, V) ->
+ {114, e(Cmd, V), e(Opt, V), e(WR, V)};
+
+e({'TopologyRequest', From, To, Dir}, 1 = V) ->
+ {120, e(From, V), e(To, V), e(Dir, V)};
+e({'TopologyRequest', From, To, Dir, SID}, 2 = V) ->
+ {121, e(From, V), e(To, V), e(Dir, V), e(SID, V)};
+e({'TopologyRequest', From, To, Dir, SID, asn1_NOVALUE}, V) when (V >= 3) ->
+ {122, e(From, V), e(To, V), e(Dir, V), e(SID, V)};
+e({'TopologyRequest', From, To, Dir, SID, TDE}, V) when (V >= 3) ->
+ {123, e(From, V), e(To, V), e(Dir, V), e(SID, V), e(TDE, V)};
+
+e({modReq, {'AmmRequest', TID, []}}, V) ->
+ {130, el(TID, V)};
+e({modReq, {'AmmRequest', TID, [Desc]}}, V) ->
+ {131, el(TID, V), e(Desc, V)};
+e({modReq, {'AmmRequest', TID, Descs}}, V) ->
+ {132, el(TID, V), el(Descs, V)};
+e({addReq, {'AmmRequest', TID, []}}, V) ->
+ {133, el(TID, V)};
+e({addReq, {'AmmRequest', TID, [Desc]}}, V) ->
+ {134, el(TID, V), e(Desc, V)};
+e({addReq, {'AmmRequest', TID, Descs}}, V) ->
+ {135, el(TID, V), el(Descs, V)};
+e({'AmmRequest', TID, Descs}, V) ->
+ {136, el(TID, V), el(Descs, V)};
+
+e({subtractReq, {'SubtractRequest', TID, asn1_NOVALUE}}, V) ->
+ {140, el(TID, V)};
+e({subtractReq, {'SubtractRequest', TID, AudDesc}}, V) ->
+ {141, el(TID, V), e(AudDesc, V)};
+e({'SubtractRequest', TID, asn1_NOVALUE}, V) ->
+ {142, el(TID, V)};
+e({'SubtractRequest', TID, AudDesc}, V) ->
+ {143, el(TID, V), e(AudDesc, V)};
+
+e({auditValueRequest, AR}, V) ->
+ {150, e(AR, V)};
+
+e({'AuditRequest', TID, AudDesc}, V) when V < 3 ->
+ {160, e(TID, V), e(AudDesc, V)};
+e({'AuditRequest', TID, AudDesc, asn1_NOVALUE}, V) when V >= 3 ->
+ {161, e(TID, V), e(AudDesc, V)};
+e({'AuditRequest', TID, AudDesc, TIDs}, V) when V >= 3 ->
+ {162, e(TID, V), e(AudDesc, V), el(TIDs, V)};
+
+e({actionReplies, [AR]}, V) ->
+ {170, e(AR, V)};
+e({actionReplies, ARs}, V) ->
+ {171, el(ARs, V)};
+
+e({'ActionReply', CID, asn1_NOVALUE, asn1_NOVALUE, [CmdRep]}, V) ->
+ {180, CID, e(CmdRep, V)};
+e({'ActionReply', CID, asn1_NOVALUE, asn1_NOVALUE, CmdRep}, V) ->
+ {181, CID, el(CmdRep, V)};
+e({'ActionReply', CID, asn1_NOVALUE, CtxRep, [CmdRep]}, V) ->
+ {182, CID, e(CtxRep, V), e(CmdRep, V)};
+e({'ActionReply', CID, asn1_NOVALUE, CtxRep, CmdRep}, V) ->
+ {183, CID, e(CtxRep, V), el(CmdRep, V)};
+e({'ActionReply', CID, ED, asn1_NOVALUE, [CmdRep]}, V) ->
+ {184, CID, e(ED, V), e(CmdRep, V)};
+e({'ActionReply', CID, ED, asn1_NOVALUE, CmdRep}, V) ->
+ {185, CID, e(ED, V), el(CmdRep, V)};
+e({'ActionReply', CID, ED, CtxRep, [CmdRep]}, V) ->
+ {186, CID, e(ED, V), e(CtxRep, V), e(CmdRep, V)};
+e({'ActionReply', CID, ED, CtxRep, CmdRep}, V) ->
+ {187, CID, e(ED, V), e(CtxRep, V), el(CmdRep, V)};
+
+e({'AuditDescriptor', asn1_NOVALUE}, 1 = _V) ->
+ {190};
+e({'AuditDescriptor', AT}, 1 = V) ->
+ {191, el(AT, V)};
+e({'AuditDescriptor', asn1_NOVALUE, asn1_NOVALUE}, V) when V >= 2 ->
+ {192};
+e({'AuditDescriptor', AT, APT}, V)
+ when is_list(AT) andalso is_list(APT) andalso (V >= 2) ->
+ {193, el(AT, V), el(APT, V)};
+e({'AuditDescriptor', AT, APT}, V)
+ when is_list(APT) andalso (V >= 2) ->
+ {194, e(AT, V), el(APT, V)};
+e({'AuditDescriptor', AT, APT}, V)
+ when is_list(AT) andalso (V >= 2) ->
+ {195, el(AT, V), e(APT, V)};
+e({'AuditDescriptor', AT, APT}, V) when (V >= 2) ->
+ {196, e(AT, V), e(APT, V)};
+
+e({notifyReq, {'NotifyRequest', TID, OED, asn1_NOVALUE}}, V) ->
+ {200, el(TID, V), e(OED, V)};
+e({notifyReq, {'NotifyRequest', TID, OED, ED}}, V) ->
+ {201, el(TID, V), e(OED, V), e(ED, V)};
+e({'NotifyRequest', TID, OED}, V) ->
+ {202, el(TID, V), e(OED, V)};
+e({'NotifyRequest', TID, OED, ED}, V) ->
+ {203, el(TID, V), e(OED, V), e(ED, V)};
+
+e({'ObservedEventsDescriptor', RID, OEL}, V) ->
+ {210, RID, el(OEL, V)};
+
+e({'ObservedEvent', EN, SID, EPL, TN}, V) ->
+ {220, EN, e(SID, V), el(EPL, V), e(TN, V)};
+
+e({'EventParameter', "type", ["est"], asn1_NOVALUE}, _V) ->
+ {230};
+e({'EventParameter', "type", [Val], asn1_NOVALUE}, _V) ->
+ {231, Val};
+e({'EventParameter', "type", Val, asn1_NOVALUE}, _V) ->
+ {232, Val};
+e({'EventParameter', "Generalcause", ["NR"], asn1_NOVALUE}, _V) ->
+ {233};
+e({'EventParameter', "Generalcause", ["UR"], asn1_NOVALUE}, _V) ->
+ {234};
+e({'EventParameter', "Generalcause", ["FT"], asn1_NOVALUE}, _V) ->
+ {235};
+e({'EventParameter', "Generalcause", ["FP"], asn1_NOVALUE}, _V) ->
+ {236};
+e({'EventParameter', "Generalcause", ["IW"], asn1_NOVALUE}, _V) ->
+ {237};
+e({'EventParameter', "Generalcause", ["UN"], asn1_NOVALUE}, _V) ->
+ {238};
+e({'EventParameter', "Generalcause", [Val], asn1_NOVALUE}, _V) ->
+ {239, Val};
+e({'EventParameter', "Generalcause", Val, asn1_NOVALUE}, _V) ->
+ {240, Val};
+e({'EventParameter', "Failurecause", [Val], asn1_NOVALUE}, _V) ->
+ {241, Val};
+e({'EventParameter', "Failurecause", Val, asn1_NOVALUE}, _V) ->
+ {242, Val};
+e({'EventParameter', EPN, Val, asn1_NOVALUE}, _V) ->
+ {243, EPN, Val};
+e({'EventParameter', EPN, Val, EI}, _V) ->
+ {244, EPN, Val, EI};
+
+e({serviceChangeReq, {'ServiceChangeRequest', TID, SCPs}}, V) ->
+ {260, el(TID, V), e(SCPs, V)};
+e({serviceChangeReq, SCR}, V) ->
+ {261, e(SCR, V)};
+e({'ServiceChangeRequest', TID, SCPs}, V) ->
+ {262, el(TID, V), e(SCPs, V)};
+
+e({serviceChangeReply, {'ServiceChangeReply', TID, SCR}}, V) ->
+ {270, el(TID, V), e(SCR, V)};
+e({serviceChangeReply, SCR}, V) ->
+ {271, e(SCR, V)};
+e({'ServiceChangeReply', TID, SCR}, V) -> %% KOLLA
+ {272, el(TID, V), e(SCR, V)};
+
+e({mediaDescriptor, {'MediaDescriptor', TSD, S}}, V) ->
+ {280, e(TSD, V), e(S, V)};
+e({mediaDescriptor, MD}, V) ->
+ {281, e(MD, V)};
+e({'MediaDescriptor', TSD, S}, V) ->
+ {282, e(TSD, V), e(S, V)};
+
+e({oneStream, S}, V) ->
+ {290, e(S, V)};
+e({multiStream, S}, V) ->
+ {291, el(S, V)};
+e({'StreamDescriptor', SID, SP}, V) ->
+ {292, e(SID, V), e(SP, V)};
+
+e({'StreamParms', LCD, asn1_NOVALUE, asn1_NOVALUE}, V) when V < 3 ->
+ {300, e(LCD, V)};
+e({'StreamParms', LCD, LD, asn1_NOVALUE}, V) when V < 3 ->
+ {301, e(LCD, V), e(LD, V)};
+e({'StreamParms', LCD, LD, RD}, V) when V < 3 ->
+ {302, e(LCD, V), e(LD, V), e(RD, V)};
+
+e({'StreamParms', LCD, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {303, e(LCD, V)};
+e({'StreamParms', LCD, LD, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {304, e(LCD, V), e(LD, V)};
+e({'StreamParms', LCD, LD, RD, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {305, e(LCD, V), e(LD, V), e(RD, V)};
+e({'StreamParms', LCD, LD, RD, SD}, V)
+ when V >= 3 ->
+ {306, e(LCD, V), e(LD, V), e(RD, V), el(SD, V)};
+
+e({'LocalControlDescriptor', SM, RV, RG, PP}, V) ->
+ {310, e(SM, V), e(RV, V), e(RG, V), el(PP, V)};
+
+e({'PropertyParm', "v", [Val], asn1_NOVALUE}, _V) ->
+ {320, Val};
+e({'PropertyParm', "v", Val, asn1_NOVALUE}, _V) ->
+ {321, Val};
+e({'PropertyParm', "o", [Val], asn1_NOVALUE}, _V) ->
+ {332, Val};
+e({'PropertyParm', "o", Val, asn1_NOVALUE}, _V) ->
+ {333, Val};
+e({'PropertyParm', "s", [Val], asn1_NOVALUE}, _V) ->
+ {334, Val};
+e({'PropertyParm', "s", Val, asn1_NOVALUE}, _V) ->
+ {335, Val};
+e({'PropertyParm', "i", [Val], asn1_NOVALUE}, _V) ->
+ {336, Val};
+e({'PropertyParm', "i", Val, asn1_NOVALUE}, _V) ->
+ {337, Val};
+e({'PropertyParm', "u", [Val], asn1_NOVALUE}, _V) ->
+ {338, Val};
+e({'PropertyParm', "u", Val, asn1_NOVALUE}, _V) ->
+ {339, Val};
+e({'PropertyParm', "e", [Val], asn1_NOVALUE}, _V) ->
+ {340, Val};
+e({'PropertyParm', "e", Val, asn1_NOVALUE}, _V) ->
+ {341, Val};
+e({'PropertyParm', "p", [Val], asn1_NOVALUE}, _V) ->
+ {342, Val};
+e({'PropertyParm', "p", Val, asn1_NOVALUE}, _V) ->
+ {343, Val};
+e({'PropertyParm', "c", [Val], asn1_NOVALUE}, _V) ->
+ {344, Val};
+e({'PropertyParm', "c", Val, asn1_NOVALUE}, _V) ->
+ {345, Val};
+e({'PropertyParm', "b", [Val], asn1_NOVALUE}, _V) ->
+ {346, Val};
+e({'PropertyParm', "b", Val, asn1_NOVALUE}, _V) ->
+ {347, Val};
+e({'PropertyParm', "z", [Val], asn1_NOVALUE}, _V) ->
+ {348, Val};
+e({'PropertyParm', "z", Val, asn1_NOVALUE}, _V) ->
+ {349, Val};
+e({'PropertyParm', "k", [Val], asn1_NOVALUE}, _V) ->
+ {350, Val};
+e({'PropertyParm', "k", Val, asn1_NOVALUE}, _V) ->
+ {351, Val};
+e({'PropertyParm', "a", [Val], asn1_NOVALUE}, _V) ->
+ {352, Val};
+e({'PropertyParm', "a", Val, asn1_NOVALUE}, _V) ->
+ {353, Val};
+e({'PropertyParm', "t", [Val], asn1_NOVALUE}, _V) ->
+ {354, Val};
+e({'PropertyParm', "t", Val, asn1_NOVALUE}, _V) ->
+ {355, Val};
+e({'PropertyParm', "r", [Val], asn1_NOVALUE}, _V) ->
+ {356, Val};
+e({'PropertyParm', "r", Val, asn1_NOVALUE}, _V) ->
+ {357, Val};
+e({'PropertyParm', "m", [Val], asn1_NOVALUE}, _V) ->
+ {358, Val};
+e({'PropertyParm', "m", Val, asn1_NOVALUE}, _V) ->
+ {359, Val};
+e({'PropertyParm', "nt/jit", [Val], asn1_NOVALUE}, _V) ->
+ {360, Val};
+e({'PropertyParm', "nt/jit", Val, asn1_NOVALUE}, _V) ->
+ {361, Val};
+e({'PropertyParm', "tdmc/ec", ["on"], asn1_NOVALUE}, _V) ->
+ {362};
+e({'PropertyParm', "tdmc/ec", ["off"], asn1_NOVALUE}, _V) ->
+ {363};
+e({'PropertyParm', "tdmc/gain", ["automatic"], asn1_NOVALUE}, _V) ->
+ {364};
+e({'PropertyParm', "tdmc/gain", [Val], asn1_NOVALUE}, _V) ->
+ {365, Val};
+e({'PropertyParm', "tdmc/gain", Val, asn1_NOVALUE}, _V) ->
+ {366, Val};
+e({'PropertyParm', "maxNumberOfContexts", [Val], asn1_NOVALUE}, _V) ->
+ {367, Val};
+e({'PropertyParm', "maxNumberOfContexts", Val, asn1_NOVALUE}, _V) ->
+ {368, Val};
+e({'PropertyParm', "maxTerminationsPerContext", [Val], asn1_NOVALUE}, _V) ->
+ {369, Val};
+e({'PropertyParm', "maxTerminationsPerContext", Val, asn1_NOVALUE}, _V) ->
+ {370, Val};
+e({'PropertyParm', "normalMGExecutionTime", [Val], asn1_NOVALUE}, _V) ->
+ {371, Val};
+e({'PropertyParm', "normalMGExecutionTime", Val, asn1_NOVALUE}, _V) ->
+ {372, Val};
+e({'PropertyParm', "normalMGCExecutionTime", [Val], asn1_NOVALUE}, _V) ->
+ {373, Val};
+e({'PropertyParm', "normalMGCExecutionTime", Val, asn1_NOVALUE}, _V) ->
+ {374, Val};
+e({'PropertyParm', "MGProvisionalResponseTimerValue", [Val], asn1_NOVALUE}, _V) ->
+ {375, Val};
+e({'PropertyParm', "MGProvisionalResponseTimerValue", Val, asn1_NOVALUE}, _V) ->
+ {376, Val};
+e({'PropertyParm', "MGCProvisionalResponseTimerValue", [Val], asn1_NOVALUE}, _V) ->
+ {377, Val};
+e({'PropertyParm', "MGCProvisionalResponseTimerValue", Val, asn1_NOVALUE}, _V) ->
+ {378, Val};
+e({'PropertyParm', N, [Val], asn1_NOVALUE}, _V) ->
+ {379, N, Val};
+e({'PropertyParm', N, Val, asn1_NOVALUE}, _V) ->
+ {380, N, Val};
+e({'PropertyParm', N, Val, EI}, _V) ->
+ {381, N, Val, EI};
+
+e({'LocalRemoteDescriptor', [[PG]]}, V) ->
+ {400, e(PG, V)};
+e({'LocalRemoteDescriptor', [PG]}, V) ->
+ {401, el(PG, V)};
+e({'LocalRemoteDescriptor', PG}, V) ->
+ {402, ell(PG, V)};
+
+e({'TerminationStateDescriptor', PP, EBC, SS}, V) ->
+ {410, el(PP, V), e(EBC, V), e(SS, V)};
+
+e({eventsDescriptor, {'EventsDescriptor', RID, [E]}}, V) ->
+ {420, e(RID, V), e(E, V)};
+e({eventsDescriptor, {'EventsDescriptor', RID, EL}}, V) ->
+ {421, e(RID, V), el(EL, V)};
+e({eventsDescriptor, ED}, V) ->
+ {422, e(ED, V)};
+e({'EventsDescriptor', RID, [E]}, V) ->
+ {423, e(RID, V), e(E, V)};
+e({'EventsDescriptor', RID, EL}, V) ->
+ {424, e(RID, V), el(EL, V)};
+
+e({'RequestedEvent', PN, SID, EA, EPL}, V) ->
+ {425, PN, e(SID, V), e(EA, V), el(EPL, V)};
+
+e({'RegulatedEmbeddedDescriptor', SED, SD}, V) ->
+ {430, e(SED, V), el(SD, V)};
+
+e({notifyImmediate, NI}, V) ->
+ {435, e(NI, V)};
+e({notifyRegulated, NR}, V) ->
+ {436, e(NR, V)};
+e({neverNotify, NN}, V) ->
+ {437, e(NN, V)};
+
+e({'RequestedActions', KA, EDM, SE, SD}, V) ->
+ {440, e(KA, V), e(EDM, V), e(SE, V), e(SD, V)};
+
+e({'RequestedActions', KA, EDM, SE, SD, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {441, e(KA, V), e(EDM, V), e(SE, V), e(SD, V)};
+e({'RequestedActions', KA, EDM, SE, SD, NB, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {442, e(KA, V), e(EDM, V), e(SE, V), e(SD, V), e(NB, V)};
+e({'RequestedActions', KA, EDM, SE, SD, NB, RED}, V)
+ when V >= 3 ->
+ {443, e(KA, V), e(EDM, V), e(SE, V), e(SD, V), e(NB, V), e(RED, V)};
+
+e({'SecondEventsDescriptor', RID, [E]}, V) ->
+ {450, e(RID, V), e(E, V)};
+e({'SecondEventsDescriptor', RID, EL}, V) ->
+ {451, e(RID, V), el(EL, V)};
+
+e({'SecondRequestedEvent', PN, SID, EA, EPL}, V) ->
+ {460, PN, e(SID, V), e(EA, V), e(EPL, V)};
+
+e({'SecondRequestedActions', KA, EDM, SD}, V) ->
+ {470, e(KA, V), e(EDM, V), e(SD, V)};
+
+e({'SecondRequestedActions', KA, EDM, SD, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {471, e(KA, V), e(EDM, V), e(SD, V)};
+e({'SecondRequestedActions', KA, EDM, SD, NB, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {472, e(KA, V), e(EDM, V), e(SD, V), e(NB, V)};
+e({'SecondRequestedActions', KA, EDM, SD, NB, RED}, V)
+ when V >= 3 ->
+ {473, e(KA, V), e(EDM, V), e(SD, V), e(NB, V), e(RED, V)};
+
+e({'EventSpec', EN, SID, EPL}, V) ->
+ {480, EN, e(SID, V), el(EPL, V)};
+
+e({'SeqSigList', ID, SL}, V) ->
+ {490, ID, el(SL, V)};
+
+e({signalsDescriptor, S}, V) ->
+ {500, el(S, V)};
+e({signal, S}, V) ->
+ {510, e(S, V)};
+
+e({'Signal', SN, SID, ST, D, NC, KA, SPL}, V) ->
+ {520, SN, e(SID, V), e(ST, V), e(D, V), e(NC, V), e(KA, V), el(SPL, V)};
+
+e({'Signal', SN, SID, ST, D, NC, KA, SPL,
+ asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {521, SN, e(SID, V), e(ST, V), e(D, V), e(NC, V), e(KA, V), el(SPL, V)};
+e({'Signal', SN, SID, ST, D, NC, KA, SPL,
+ SD, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {522, SN, e(SID, V), e(ST, V), e(D, V), e(NC, V), e(KA, V), el(SPL, V),
+ e(SD, V)};
+e({'Signal', SN, SID, ST, D, NC, KA, SPL,
+ SD, RID, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {523, SN, e(SID, V), e(ST, V), e(D, V), e(NC, V), e(KA, V), el(SPL, V),
+ e(SD, V), e(RID, V)};
+e({'Signal', SN, SID, ST, D, NC, KA, SPL,
+ SD, RID, IsD}, V)
+ when V >= 3 ->
+ {524, SN, e(SID, V), e(ST, V), e(D, V), e(NC, V), e(KA, V), el(SPL, V),
+ e(SD, V), e(RID, V), e(IsD, V)};
+
+e({'SigParameter', SPN, Val, asn1_NOVALUE}, _V) ->
+ {530, SPN, Val};
+e({'SigParameter', SPN, Val, EI}, _V) ->
+ {531, SPN, Val, EI};
+
+e({modemDescriptor, MD}, V) ->
+ {550, e(MD, V)};
+e({'ModemDescriptor', MTL, MPL, asn1_NOVALUE}, _V) ->
+ {551, MTL, MPL};
+e({'ModemDescriptor', MTL, MPL, NSD}, _V) ->
+ {552, MTL, MPL, NSD};
+
+e({digitMapDescriptor, {'DigitMapDescriptor', DMN, DMV}}, V) ->
+ {560, DMN, e(DMV, V)};
+e({digitMapDescriptor, DMD}, V) ->
+ {561, e(DMD, V)};
+e({'DigitMapDescriptor', DMN, DMV}, V) ->
+ {562, DMN, e(DMV, V)};
+
+e({'DigitMapValue', Start, Stop, Long, DMB}, 1 = V) ->
+ {570, e(Start, V), e(Stop, V), e(Long, V), DMB};
+e({'DigitMapValue', Start, Stop, Long, DMB, Dur}, V) when V >= 2 ->
+ {571, e(Start, V), e(Stop, V), e(Long, V), DMB, e(Dur, V)};
+
+e({'ServiceChangeParm', M, A, Ver, Prof, R, D, Id, asn1_NOVALUE, asn1_NOVALUE}, V) ->
+ {580, e(M, V), e(A, V), e(Ver, V), e(Prof, V), R, e(D, V), e(Id, V)};
+e({'ServiceChangeParm', M, A, Ver, Prof, R, D, Id, TS, asn1_NOVALUE}, V) ->
+ {581, e(M, V), e(A, V), e(Ver, V), e(Prof, V), R, e(D, V), e(Id, V),
+ e(TS, V)};
+e({'ServiceChangeParm', M, A, Ver, Prof, R, D, Id, TS, NSD}, V) ->
+ {582, e(M, V), e(A, V), e(Ver, V), e(Prof, V), R, e(D, V), e(Id, V),
+ e(TS, V), NSD};
+
+e({'ServiceChangeParm', M, A, Ver, Prof, R, D, Id, TS, NSD, asn1_NOVALUE}, V)
+ when V == 2 ->
+ {583, e(M, V), e(A, V), e(Ver, V), e(Prof, V), R, e(D, V), e(Id, V),
+ e(TS, V), NSD};
+e({'ServiceChangeParm', M, A, Ver, Prof, R, D, Id, TS, NSD, Info}, V)
+ when V == 2 ->
+ {584, e(M, V), e(A, V), e(Ver, V), e(Prof, V), R, e(D, V), e(Id, V),
+ e(TS, V), NSD, e(Info, V)};
+
+e({'ServiceChangeParm', M, A, Ver, Prof, R, D, Id, TS, NSD,
+ asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {585, e(M, V), e(A, V), e(Ver, V), e(Prof, V), R, e(D, V), e(Id, V),
+ e(TS, V), NSD};
+e({'ServiceChangeParm', M, A, Ver, Prof, R, D, Id, TS, NSD, Info,
+ asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {586, e(M, V), e(A, V), e(Ver, V), e(Prof, V), R, e(D, V), e(Id, V),
+ e(TS, V), e(TS, V), NSD, e(Info, V)};
+e({'ServiceChangeParm', M, A, Ver, Prof, R, D, Id, TS, NSD, Info, Flag}, V)
+ when V >= 3 ->
+ {587, e(M, V), e(A, V), e(Ver, V), e(Prof, V), R, e(D, V), e(Id, V),
+ e(TS, V), NSD, e(Info, V), e(Flag, V)};
+
+e({serviceChangeResParms, {'ServiceChangeResParm', Id, A, Ver, Prof, TS}}, V) ->
+ {590, Id, e(A, V), Ver, e(Prof, V), TS};
+e({serviceChangeResParms, SCRP}, V) ->
+ {591, e(SCRP, V)};
+e({'ServiceChangeResParm', Id, A, Ver, Prof, TS}, V) ->
+ {592, Id, e(A, V), Ver, e(Prof, V), TS};
+
+e({portNumber, N}, _V) ->
+ {600, N};
+
+e({'TimeNotation', D, T}, _V) ->
+ {610, D, T};
+
+e({'ServiceChangeProfile', N, Ver}, _V) ->
+ {620, N, Ver};
+
+e({digitMapName, N}, _V) ->
+ {630, N};
+
+e({megaco_term_id, false, Id}, _V) ->
+ {640, Id};
+e({megaco_term_id, true, [[$*]]}, _V) ->
+ {641};
+e({megaco_term_id, true, [[$$]]}, _V) ->
+ {642};
+e({megaco_term_id, true, Id}, _V) ->
+ {643, Id};
+e({'TerminationID', W, ID}, _V) ->
+ {644, W, ID};
+
+e({modReply, {'AmmsReply', TID, asn1_NOVALUE}}, V) ->
+ {650, el(TID, V)};
+e({modReply, {'AmmsReply', TID, [TA]}}, V) ->
+ {651, el(TID, V), e(TA, V)};
+e({modReply, {'AmmsReply', TID, TA}}, V) when is_list(TA) ->
+ {652, el(TID, V), el(TA, V)};
+e({modReply, R}, V) ->
+ {653, e(R, V)};
+
+e({moveReply, AR}, V) ->
+ {655, e(AR, V)};
+
+e({addReply, {'AmmsReply', TID, asn1_NOVALUE}}, V) ->
+ {660, el(TID, V)};
+e({addReply, {'AmmsReply', TID, [TA]}}, V) ->
+ {661, el(TID, V), e(TA, V)};
+e({addReply, {'AmmsReply', TID, TA}}, V) when is_list(TA) ->
+ {662, el(TID, V), el(TA, V)};
+e({addReply, R}, V) ->
+ {663, e(R, V)};
+
+e({subtractReply, {'AmmsReply', TID, asn1_NOVALUE}}, V) ->
+ {670, el(TID, V)};
+e({subtractReply, {'AmmsReply', TID, [TA]}}, V) ->
+ {671, el(TID, V), e(TA, V)};
+e({subtractReply, {'AmmsReply', TID, TA}}, V) when is_list(TA) ->
+ {672, el(TID, V), el(TA, V)};
+e({subtractReply, R}, V) ->
+ {673, e(R, V)};
+
+e({'AmmsReply', TID, asn1_NOVALUE}, V) ->
+ {680, el(TID, V)};
+e({'AmmsReply', TID, [TA]}, V) ->
+ {681, el(TID, V), e(TA, V)};
+e({'AmmsReply', TID, TA}, V) when is_list(TA) ->
+ {682, el(TID, V), el(TA, V)};
+
+e({notifyReply, {'NotifyReply', TID, asn1_NOVALUE}}, V) ->
+ {690, el(TID, V)};
+e({notifyReply, {'NotifyReply', TID, ED}}, V) ->
+ {691, el(TID, V), e(ED, V)};
+e({notifyReply, R}, V) ->
+ {692, e(R, V)};
+e({'NotifyReply', TID, asn1_NOVALUE}, V) ->
+ {693, el(TID, V)};
+e({'NotifyReply', TID, ED}, V) ->
+ {694, el(TID, V), e(ED, V)};
+
+e({auditValueReply, AVR}, V) ->
+ {700, e(AVR, V)};
+
+e({contextAuditResult, TIDs}, V) ->
+ {705, el(TIDs, V)};
+
+e({auditResult, {'AuditResult', TID, [TAR]}}, V) ->
+ {710, e(TID, V), e(TAR, V)};
+e({auditResult, {'AuditResult', TID, TAR}}, V) ->
+ {711, e(TID, V), el(TAR, V)};
+e({auditResult, AR}, V) ->
+ {712, e(AR, V)};
+e({'AuditResult', TID, [TAR]}, V) ->
+ {713, e(TID, V), e(TAR, V)};
+e({'AuditResult', TID, TAR}, V) ->
+ {714, e(TID, V), el(TAR, V)};
+
+e({auditResultTermList, {'TermListAuditResult', TIDs, [TAR]}}, V) ->
+ {715, el(TIDs, V), e(TAR, V)};
+e({auditResultTermList, {'TermListAuditResult', TIDs, TAR}}, V) ->
+ {716, el(TIDs, V), el(TAR, V)};
+
+e({packagesDescriptor, PsD}, V) ->
+ {720, el(PsD, V)};
+
+e({'PackagesItem', "g", 1}, _V) ->
+ {730};
+e({'PackagesItem', "tonegen", 1}, _V) ->
+ {731};
+e({'PackagesItem', "tonedet", 1}, _V) ->
+ {732};
+e({'PackagesItem', "tg", 1}, _V) ->
+ {733};
+e({'PackagesItem', "dd", 1}, _V) ->
+ {734};
+e({'PackagesItem', "cg", 1}, _V) ->
+ {735};
+e({'PackagesItem', "cd", 1}, _V) ->
+ {736};
+e({'PackagesItem', "al", 1}, _V) ->
+ {737};
+e({'PackagesItem', "ct", 1}, _V) ->
+ {738};
+e({'PackagesItem', "nt", 1}, _V) ->
+ {739};
+e({'PackagesItem', "rtp", 1}, _V) ->
+ {740};
+e({'PackagesItem', "tdmc", 1}, _V) ->
+ {741};
+e({'PackagesItem', Name, Ver}, _V) ->
+ {742, Name, Ver};
+
+e({emptyDescriptors, AD}, V) ->
+ {760, e(AD, V)};
+
+e({statisticsDescriptor, [SD]}, V) ->
+ {770, e(SD, V)};
+e({statisticsDescriptor, SsD}, V) ->
+ {771, el(SsD, V)};
+
+e({'StatisticsParameter', Name, asn1_NOVALUE}, _V) ->
+ {780, Name};
+e({'StatisticsParameter', Name, Value}, _V) ->
+ {781, Name, Value};
+
+e({'MuxDescriptor', MT, TL, asn1_NOVALUE}, V) ->
+ {800, e(MT, V), el(TL, V)};
+e({'MuxDescriptor', MT, TL, NSD}, V) ->
+ {801, e(MT, V), el(TL, V), NSD};
+
+e({indAudPackagesDescriptor, {'IndAudPackagesDescriptor', N, Ver}}, V)
+ when (V >= 2) ->
+ {900, N, Ver};
+e({indAudPackagesDescriptor, IAPD}, V)
+ when (V >= 2) ->
+ {900, e(IAPD, V)};
+e({'IndAudPackagesDescriptor', N, Ver}, V)
+ when (V >= 2) ->
+ {901, N, Ver};
+
+e({indAudStatisticsDescriptor, {'IndAudStatisticsDescriptor', N}}, V)
+ when (V >= 2) ->
+ {910, N};
+e({indAudStatisticsDescriptor, IASD}, V)
+ when (V >= 2) ->
+ {911, e(IASD, V)};
+e({'IndAudStatisticsDescriptor', N}, V)
+ when (V >= 2) ->
+ {912, N};
+
+e({indAudDigitMapDescriptor, {'IndAudDigitMapDescriptor', DMN}}, V)
+ when (V >= 2) ->
+ {920, DMN};
+e({indAudDigitMapDescriptor, IADMD}, V)
+ when (V >= 2) ->
+ {921, e(IADMD, V)};
+e({'IndAudDigitMapDescriptor', DMN}, V)
+ when (V >= 2) ->
+ {922, DMN};
+
+e({indAudSignalsDescriptor, {seqSigList, IASD}}, V)
+ when (V >= 2) ->
+ {930, e(IASD, V)};
+e({indAudSignalsDescriptor, {signal, IAS}}, V)
+ when (V >= 2) ->
+ {931, e(IAS, V)};
+
+e({'IndAudSeqSigList', Id, SL}, V)
+ when (V >= 2) ->
+ {940, Id, e(SL, V)};
+
+e({'IndAudSignal', N, SID}, 2 = V) ->
+ {950, N, e(SID, V)};
+e({'IndAudSignal', N, SID, asn1_NOVALUE}, V)
+ when (V >= 3) ->
+ {951, N, e(SID, V)};
+e({'IndAudSignal', N, SID, RID}, V)
+ when (V >= 3) ->
+ {952, N, e(SID, V), e(RID, V)};
+
+e({indAudEventBufferDescriptor, {'IndAudEventBufferDescriptor', EN, SID}}, V)
+ when (V >= 2) ->
+ {960, EN, e(SID, V)};
+e({indAudEventBufferDescriptor, IAEBD}, V)
+ when (V >= 2) ->
+ {961, e(IAEBD, V)};
+e({'IndAudEventBufferDescriptor', EN, SID}, V)
+ when (V >= 2) ->
+ {962, EN, e(SID, V)};
+
+e({indAudEventsDescriptor, {'IndAudEventsDescriptor', RID, N, SID}}, V)
+ when (V >= 2) ->
+ {970, e(RID, V), N, e(SID, V)};
+e({indAudEventsDescriptor, IAED}, V)
+ when (V >= 2) ->
+ {971, e(IAED, V)};
+e({'IndAudEventsDescriptor', RID, N, SID}, V)
+ when (V >= 2) ->
+ {972, e(RID, V), N, e(SID, V)};
+
+e({indAudMediaDescriptor, {'IndAudMediaDescriptor', TSD, S}}, V) when V >= 2 ->
+ {980, e(TSD, V), e(S, V)};
+e({indAudMediaDescriptor, IAMD}, V) when V >= 2 ->
+ {981, e(IAMD, V)};
+e({'IndAudMediaDescriptor', TSD, S}, V) when V >= 2 ->
+ {982, e(TSD, V), e(S, V)};
+
+e({'IndAudTerminationStateDescriptor', PP, EBC, SS}, 2 = V) ->
+ {990, el(PP, V), e(EBC, V), e(SS, V)};
+e({'IndAudTerminationStateDescriptor', PP, EBC, SS, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {991, el(PP, V), e(EBC, V), e(SS, V)};
+e({'IndAudTerminationStateDescriptor', PP, EBC, SS, SSS}, V)
+ when V >= 3 ->
+ {992, el(PP, V), e(EBC, V), e(SS, V), e(SSS, V)};
+
+e({'IndAudStreamDescriptor', SID, SP}, V) ->
+ {1000, e(SID, V), e(SP, V)};
+
+e({'IndAudStreamParms', LCD, asn1_NOVALUE, asn1_NOVALUE}, 2 = V) ->
+ {1010, e(LCD, V)};
+e({'IndAudStreamParms', LCD, LD, RD}, 2 = V) ->
+ {1011, e(LCD, V), e(LD, V), e(RD, V)};
+e({'IndAudStreamParms', LCD, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {1012, e(LCD, V)};
+e({'IndAudStreamParms', LCD, LD, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {1013, e(LCD, V), e(LD, V)};
+e({'IndAudStreamParms', LCD, LD, RD, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {1014, e(LCD, V), e(LD, V), e(RD, V)};
+e({'IndAudStreamParms', LCD, LD, RD, SD}, V)
+ when V >= 3 ->
+ {1015, e(LCD, V), e(LD, V), e(RD, V), e(SD, V)};
+
+e({'IndAudLocalControlDescriptor', SM, RV, RG, asn1_NOVALUE}, 2 = V) ->
+ {1020, e(SM, V), e(RV, V), e(RG, V)};
+e({'IndAudLocalControlDescriptor', SM, RV, RG, PP}, 2 = V) when is_list(PP) ->
+ {1021, e(SM, V), e(RV, V), e(RG, V), el(PP, V)};
+e({'IndAudLocalControlDescriptor', SM, RV, RG, asn1_NOVALUE, asn1_NOVALUE}, V)
+ when V >= 3 ->
+ {1022, e(SM, V), e(RV, V), e(RG, V)};
+e({'IndAudLocalControlDescriptor', SM, RV, RG, PP, asn1_NOVALUE}, V)
+ when is_list(PP) andalso (V >= 3) ->
+ {1023, e(SM, V), e(RV, V), e(RG, V), el(PP, V)};
+e({'IndAudLocalControlDescriptor', SM, RV, RG, PP, SMS}, V)
+ when is_list(PP) andalso (V >= 3) ->
+ {1024, e(SM, V), e(RV, V), e(RG, V), el(PP, V), e(SMS, V)};
+
+e({'IndAudPropertyParm', N}, 2 = _V) ->
+ {1030, N};
+e({'IndAudPropertyParm', N, asn1_NOVALUE}, V) when V >= 3 ->
+ {1031, N};
+e({'IndAudPropertyParm', N, PP}, V) when V >= 3 ->
+ {1032, N, e(PP, V)};
+
+e(oneway, _V) ->
+ {1100};
+e(bothway, _V) ->
+ {1101};
+e(isolate, _V) ->
+ {1102};
+e(onewayexternal, _V) ->
+ {1103};
+e(onewayboth, _V) ->
+ {1104};
+
+e(T, _V) ->
+ %% io:format("e(~w) -> ~nT: ~w~n", [_V, T]),
+ T.
+
+
+d({1}, _) ->
+ asn1_NOVALUE;
+d({2}, _V) ->
+ 'NULL';
+d({3}, _V) ->
+ sendRecv;
+d({4}, _V) ->
+ recvOnly;
+d({5}, _V) ->
+ restart;
+d({6}, _) ->
+ mediaToken;
+d({7}, _) ->
+ eventsToken;
+d({8}, _) ->
+ signalsToken;
+d({9}, _) ->
+ digitMapToken;
+d({10}, _) ->
+ statsToken;
+d({11}, _) ->
+ packagesToken;
+d({12}, _V) ->
+ h221;
+d({13}, _V) ->
+ h223;
+d({14}, _V) ->
+ h226;
+d({15}, _V) ->
+ v76;
+
+d({20, Mid, Body}, _) ->
+ {'MegacoMessage', asn1_NOVALUE, {'Message', 1, d(Mid, 1), d(Body, 1)}};
+d({21, Mid, Body}, _) ->
+ {'MegacoMessage', asn1_NOVALUE, {'Message', 2, d(Mid, 2), d(Body, 2)}};
+d({22, V, Mid, Body}, _) ->
+ {'MegacoMessage', asn1_NOVALUE, {'Message', V, d(Mid, V), d(Body, V)}};
+d({23, AuthHeader, Mid, Body}, _) ->
+ {'MegacoMessage', d(AuthHeader, 1), {'Message', 1, d(Mid, 1), d(Body, 1)}};
+d({24, AuthHeader, Mid, Body}, _) ->
+ {'MegacoMessage', d(AuthHeader, 2), {'Message', 2, d(Mid, 2), d(Body, 2)}};
+d({25, V, AuthHeader, Mid, Body}, _) ->
+ {'MegacoMessage', d(AuthHeader, V), {'Message', V, d(Mid, V), d(Body, V)}};
+d({26, AuthHeader, Mess}, V) ->
+ {'MegacoMessage', d(AuthHeader, V), d(Mess, V)};
+d({27, V, Mid, Body}, _) ->
+ {'Message', V, d(Mid, V), d(Body, V)};
+
+d({30, Name}, _V) ->
+ {domainName, {'DomainName', Name, asn1_NOVALUE}};
+d({31, Name, PortNumber}, _V) ->
+ {domainName, {'DomainName', Name, PortNumber}};
+d({32, N}, V) ->
+ {domainName, d(N, V)};
+d({33, Name}, _V) ->
+ {'DomainName', Name, asn1_NOVALUE};
+d({34, Name, PortNumber}, _V) ->
+ {'DomainName', Name, PortNumber};
+d({35, Addr}, _V) ->
+ {ip4Address, {'IP4Address', Addr, asn1_NOVALUE}};
+d({36, Addr, PortNumber}, _V) ->
+ {ip4Address, {'IP4Address', Addr, PortNumber}};
+d({37, A}, V) ->
+ {ip4Address, d(A, V)};
+d({38, Addr}, _V) ->
+ {'IP4Address', Addr, asn1_NOVALUE};
+d({39, Addr, PortNumber}, _V) ->
+ {'IP4Address', Addr, PortNumber};
+d({40, Addr}, _V) ->
+ {ip6Address, {'IP6Address', Addr, asn1_NOVALUE}};
+d({41, Addr, PortNumber}, _V) ->
+ {ip6Address, {'IP6Address', Addr, PortNumber}};
+d({42, A}, V) ->
+ {ip6Address, d(A, V)};
+d({43, Addr}, _V) ->
+ {'IP6Address', Addr, asn1_NOVALUE};
+d({44, Addr, PortNumber}, _V) ->
+ {'IP6Address', Addr, PortNumber};
+
+d({50, Transaction}, V) ->
+ {transactions, [d(Transaction, V)]};
+d({51, Transactions}, V) ->
+ {transactions, dl(Transactions, V)};
+d({52, EC}, _V) ->
+ {messageError, {'ErrorDescriptor', EC, asn1_NOVALUE}};
+d({53, EC, ET}, _V) ->
+ {messageError, {'ErrorDescriptor', EC, ET}};
+d({54, Error}, V) ->
+ {messageError, d(Error, V)};
+d({55, TransId, Actions}, V) ->
+ {transactionRequest, {'TransactionRequest', TransId, dl(Actions, V)}};
+d({56, TransId}, _V) ->
+ {transactionPending, {'TransactionPending', TransId}};
+d({57, TransId, TransRes}, V) ->
+ {transactionReply, {'TransactionReply', TransId, asn1_NOVALUE, d(TransRes, V)}};
+d({58, TransId, TransRes}, V) ->
+ {transactionReply, {'TransactionReply', TransId, 'NULL', d(TransRes, V)}};
+d({59, TransId, ImmAckReq, TransRes}, V) ->
+ {transactionReply, {'TransactionReply', TransId, d(ImmAckReq, V), d(TransRes, V)}};
+d({60, T}, V) ->
+ {transactionResponseAck, dl(T, V)};
+d({61, FirstAck}, _V) ->
+ {'TransactionAck', FirstAck, asn1_NOVALUE};
+d({62, FirstAck, LastAck}, _V) ->
+ {'TransactionAck', FirstAck, LastAck};
+
+d({70, EC}, _V) ->
+ {'ErrorDescriptor', EC, asn1_NOVALUE};
+d({71, EC, ET}, _V) ->
+ {'ErrorDescriptor', EC, ET};
+
+d({80, Cid, CtxReq, CtxAAR, CmdReq}, V) ->
+ {'ActionRequest', Cid, d(CtxReq, V), d(CtxAAR, V), [d(CmdReq, V)]};
+d({81, Cid, CtxReq, CtxAAR, CmdReqs}, V) ->
+ {'ActionRequest', Cid, d(CtxReq, V), d(CtxAAR, V), dl(CmdReqs, V)};
+
+d({90, P, E, T}, V) ->
+ {'ContextRequest', d(P, V), d(E, V), dl(T, V)};
+d({91, P, E, T}, V) ->
+ {'ContextRequest', d(P, V), d(E, V), dl(T, V),
+ asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE};
+d({92, P, E, T, IC}, V) ->
+ {'ContextRequest', d(P, V), d(E, V), dl(T, V),
+ d(IC, V), asn1_NOVALUE, asn1_NOVALUE};
+d({93, P, E, T, IC, CP}, V) ->
+ {'ContextRequest', d(P, V), d(E, V), dl(T, V),
+ d(IC, V), dl(CP, V), asn1_NOVALUE};
+d({94, P, E, T, IC, CP, CL}, V) ->
+ {'ContextRequest', d(P, V), d(E, V), dl(T, V),
+ d(IC, V), dl(CP, V), dl(CL, V)};
+
+d({100, P, E, T}, V) ->
+ {'ContextAttrAuditRequest', d(P, V), d(E, V), d(T, V)};
+d({101, P, E, T}, V) ->
+ {'ContextAttrAuditRequest', d(P, V), d(E, V), d(T, V),
+ asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE};
+d({102, P, E, T, IC}, V) ->
+ {'ContextAttrAuditRequest', d(P, V), d(E, V), d(T, V),
+ d(IC, V), asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE};
+d({103, P, E, T, IC, CPA}, V) ->
+ {'ContextAttrAuditRequest', d(P, V), d(E, V), d(T, V),
+ d(IC, V), dl(CPA, V), asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE};
+d({104, P, E, T, IC, CPA, SP}, V) ->
+ {'ContextAttrAuditRequest', d(P, V), d(E, V), d(T, V),
+ d(IC, V), dl(CPA, V), d(SP, V), asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE};
+d({105, P, E, T, IC, CPA, SP, SE}, V) ->
+ {'ContextAttrAuditRequest', d(P, V), d(E, V), d(T, V),
+ d(IC, V), dl(CPA, V), d(SP, V), d(SE, V), asn1_NOVALUE, asn1_NOVALUE};
+d({106, P, E, T, IC, CPA, SP, SE, SIC}, V) ->
+ {'ContextAttrAuditRequest', d(P, V), d(E, V), d(T, V),
+ d(IC, V), dl(CPA, V), d(SP, V), d(SE, V), d(SIC, V), asn1_NOVALUE};
+d({107, P, E, T, IC, CPA, SP, SE, SIC, SL}, V) ->
+ {'ContextAttrAuditRequest', d(P, V), d(E, V), d(T, V),
+ d(IC, V), dl(CPA, V), d(SP, V), d(SE, V), d(SIC, V), d(SL, V)};
+
+d({110, Cmd}, V) ->
+ {'CommandRequest', d(Cmd, V), asn1_NOVALUE, asn1_NOVALUE};
+d({111, Cmd}, V) ->
+ {'CommandRequest', d(Cmd, V), 'NULL', asn1_NOVALUE};
+d({112, Cmd}, V) ->
+ {'CommandRequest', d(Cmd, V), asn1_NOVALUE, 'NULL'};
+d({113, Cmd}, V) ->
+ {'CommandRequest', d(Cmd, V), 'NULL', 'NULL'};
+d({114, Cmd, Opt, WR}, V) ->
+ {'CommandRequest', d(Cmd, V), d(Opt, V), d(WR, V)};
+
+d({120, From, To, Dir}, 1 = V) ->
+ {'TopologyRequest', d(From, V), d(To, V), d(Dir, V)};
+d({121, From, To, Dir, SID}, 2 = V) ->
+ {'TopologyRequest', d(From, V), d(To, V), d(Dir, V), d(SID, V)};
+d({122, From, To, Dir, SID}, V) when (V >= 3) ->
+ {'TopologyRequest', d(From, V), d(To, V), d(Dir, V), d(SID, V), asn1_NOVALUE};
+d({123, From, To, Dir, SID, TDE}, V) when (V >= 3) ->
+ {'TopologyRequest', d(From, V), d(To, V), d(Dir, V), d(SID, V), d(TDE, V)};
+
+d({130, TID}, V) ->
+ {modReq, {'AmmRequest', dl(TID, V), []}};
+d({131, TID, Desc}, V) ->
+ {modReq, {'AmmRequest', dl(TID, V), [d(Desc, V)]}};
+d({132, TID, Descs}, V) ->
+ {modReq, {'AmmRequest', dl(TID, V), dl(Descs, V)}};
+d({133, TID}, V) ->
+ {addReq, {'AmmRequest', dl(TID, V), []}};
+d({134, TID, Desc}, V) ->
+ {addReq, {'AmmRequest', dl(TID, V), [d(Desc, V)]}};
+d({135, TID, Descs}, V) ->
+ {addReq, {'AmmRequest', dl(TID, V), dl(Descs, V)}};
+d({136, TID, Descs}, V) ->
+ {'AmmRequest', dl(TID, V), dl(Descs, V)};
+
+d({140, TID}, V) ->
+ {subtractReq, {'SubtractRequest', dl(TID, V), asn1_NOVALUE}};
+d({141, TID, AudDesc}, V) ->
+ {subtractReq, {'SubtractRequest', dl(TID, V), d(AudDesc, V)}};
+d({142, TID}, V) ->
+ {'SubtractRequest', dl(TID, V), asn1_NOVALUE};
+d({143, TID, AudDesc}, V) ->
+ {'SubtractRequest', dl(TID, V), d(AudDesc, V)};
+
+d({150, AR}, V) ->
+ {auditValueRequest, d(AR, V)};
+
+d({160, TID, AudDesc}, V) when V < 3 ->
+ {'AuditRequest', d(TID, V), d(AudDesc, V)};
+d({161, TID, AudDesc}, V) when V >= 3 ->
+ {'AuditRequest', d(TID, V), d(AudDesc, V), asn1_NOVALUE};
+d({162, TID, AudDesc, TIDs}, V) when V >= 3 ->
+ {'AuditRequest', d(TID, V), d(AudDesc, V), dl(TIDs, V)};
+
+d({170, AR}, V) ->
+ {actionReplies, [d(AR, V)]};
+d({171, ARs}, V) ->
+ {actionReplies, dl(ARs, V)};
+
+d({180, CID, CmdRep}, V) ->
+ {'ActionReply', CID, asn1_NOVALUE, asn1_NOVALUE, [d(CmdRep, V)]};
+d({181, CID, CmdRep}, V) ->
+ {'ActionReply', CID, asn1_NOVALUE, asn1_NOVALUE, dl(CmdRep, V)};
+d({182, CID, CtxRep, CmdRep}, V) ->
+ {'ActionReply', CID, asn1_NOVALUE, d(CtxRep, V), [d(CmdRep, V)]};
+d({183, CID, CtxRep, CmdRep}, V) ->
+ {'ActionReply', CID, asn1_NOVALUE, d(CtxRep, V), dl(CmdRep, V)};
+d({184, CID, ED, CmdRep}, V) ->
+ {'ActionReply', CID, d(ED, V), asn1_NOVALUE, [d(CmdRep, V)]};
+d({185, CID, ED, CmdRep}, V) ->
+ {'ActionReply', CID, d(ED, V), asn1_NOVALUE, dl(CmdRep, V)};
+d({186, CID, ED, CtxRep, CmdRep}, V) ->
+ {'ActionReply', CID, d(ED, V), d(CtxRep, V), [d(CmdRep, V)]};
+d({187, CID, ED, CtxRep, CmdRep}, V) ->
+ {'ActionReply', CID, d(ED, V), d(CtxRep, V), dl(CmdRep, V)};
+
+d({190}, 1 = _V) ->
+ {'AuditDescriptor', asn1_NOVALUE};
+d({191, AT}, 1 = V) ->
+ {'AuditDescriptor', dl(AT, V)};
+d({192}, V) when (V >= 2) ->
+ {'AuditDescriptor', asn1_NOVALUE, asn1_NOVALUE};
+d({193, AT, APT}, V) when is_list(AT) andalso is_list(APT) andalso (V >= 2) ->
+ {'AuditDescriptor', dl(AT, V), dl(APT, V)};
+d({194, AT, APT}, V) when is_list(APT) andalso (V >= 2) ->
+ {'AuditDescriptor', d(AT, V), dl(APT, V)};
+d({195, AT, APT}, V) when is_list(AT) andalso (V >= 2) ->
+ {'AuditDescriptor', dl(AT, V), d(APT, V)};
+d({196, AT, APT}, V) when (V >= 2) ->
+ {'AuditDescriptor', d(AT, V), d(APT, V)};
+
+d({200, TID, OED}, V) ->
+ {notifyReq, {'NotifyRequest', dl(TID, V), d(OED, V), asn1_NOVALUE}};
+d({201, TID, OED, ED}, V) ->
+ {notifyReq, {'NotifyRequest', dl(TID, V), d(OED, V), d(ED, V)}};
+d({202, TID, OED}, V) ->
+ {'NotifyRequest', dl(TID, V), d(OED, V), asn1_NOVALUE};
+d({203, TID, OED, ED}, V) ->
+ {'NotifyRequest', dl(TID, V), d(OED, V), d(ED, V)};
+
+d({210, RID, OEL}, V) ->
+ {'ObservedEventsDescriptor', RID, dl(OEL, V)};
+
+d({220, EN, SID, EPL, TN}, V) ->
+ {'ObservedEvent', EN, d(SID, V), dl(EPL, V), d(TN, V)};
+
+d({230}, _V) ->
+ {'EventParameter', "type", ["est"], asn1_NOVALUE};
+d({231, Val}, _V) ->
+ {'EventParameter', "type", [Val], asn1_NOVALUE};
+d({232, Val}, _V) ->
+ {'EventParameter', "type", Val, asn1_NOVALUE};
+d({233}, _V) ->
+ {'EventParameter', "Generalcause", ["NR"], asn1_NOVALUE};
+d({234}, _V) ->
+ {'EventParameter', "Generalcause", ["UR"], asn1_NOVALUE};
+d({235}, _V) ->
+ {'EventParameter', "Generalcause", ["FT"], asn1_NOVALUE};
+d({236}, _V) ->
+ {'EventParameter', "Generalcause", ["FP"], asn1_NOVALUE};
+d({237}, _V) ->
+ {'EventParameter', "Generalcause", ["IW"], asn1_NOVALUE};
+d({238}, _V) ->
+ {'EventParameter', "Generalcause", ["UN"], asn1_NOVALUE};
+d({239, Val}, _V) ->
+ {'EventParameter', "Generalcause", [Val], asn1_NOVALUE};
+d({240, Val}, _V) ->
+ {'EventParameter', "Generalcause", Val, asn1_NOVALUE};
+d({241, Val}, _V) ->
+ {'EventParameter', "Failurecause", [Val], asn1_NOVALUE};
+d({242, Val}, _V) ->
+ {'EventParameter', "Failurecause", Val, asn1_NOVALUE};
+d({243, EPN, Val}, _V) ->
+ {'EventParameter', EPN, Val, asn1_NOVALUE};
+d({244, EPN, Val, EI}, _V) ->
+ {'EventParameter', EPN, Val, EI};
+
+d({260, TID, SCPs}, V) ->
+ {serviceChangeReq, {'ServiceChangeRequest', dl(TID, V), d(SCPs, V)}};
+d({261, SCR}, V) ->
+ {serviceChangeReq, d(SCR, V)};
+d({262, TID, SCPs}, V) ->
+ {'ServiceChangeRequest', dl(TID, V), d(SCPs, V)};
+
+d({270, TID, SCR}, V) ->
+ {serviceChangeReply, {'ServiceChangeReply', dl(TID, V), d(SCR, V)}};
+d({271, SCR}, V) ->
+ {serviceChangeReply, d(SCR, V)};
+d({272, TID, SCR}, V) -> %% KOLLA
+ {'ServiceChangeReply', dl(TID, V), d(SCR, V)};
+
+d({280, TSD, S}, V) ->
+ {mediaDescriptor, {'MediaDescriptor', d(TSD, V), d(S, V)}};
+d({281, MD}, V) ->
+ {mediaDescriptor, d(MD, V)};
+d({282, TSD, S}, V) ->
+ {'MediaDescriptor', d(TSD, V), d(S, V)};
+
+d({290, S}, V) ->
+ {oneStream, d(S, V)};
+d({291, S}, V) ->
+ {multiStream, dl(S, V)};
+d({292, SID, SP}, V) ->
+ {'StreamDescriptor', d(SID, V), d(SP, V)};
+
+d({300, LCD}, V) ->
+ {'StreamParms', d(LCD, V), asn1_NOVALUE, asn1_NOVALUE};
+d({301, LCD, LD}, V) ->
+ {'StreamParms', d(LCD, V), d(LD, V), asn1_NOVALUE};
+d({302, LCD, LD, RD}, V) ->
+ {'StreamParms', d(LCD, V), d(LD, V), d(RD, V)};
+
+d({303, LCD}, V)
+ when V >= 3 ->
+ {'StreamParms', d(LCD, V), asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE};
+d({304, LCD, LD}, V)
+ when V >= 3 ->
+ {'StreamParms', d(LCD, V), d(LD, V), asn1_NOVALUE, asn1_NOVALUE};
+d({305, LCD, LD, RD}, V)
+ when V >= 3 ->
+ {'StreamParms', d(LCD, V), d(LD, V), d(RD, V), asn1_NOVALUE};
+d({306, LCD, LD, RD, SD}, V)
+ when V >= 3 ->
+ {'StreamParms', d(LCD, V), d(LD, V), d(RD, V), dl(SD, V)};
+
+d({310, SM, RV, RG, PP}, V) ->
+ {'LocalControlDescriptor', d(SM, V), d(RV, V), d(RG, V), dl(PP, V)};
+
+d({320, Val}, _V) ->
+ {'PropertyParm', "v", [Val], asn1_NOVALUE};
+d({321, Val}, _V) ->
+ {'PropertyParm', "v", Val, asn1_NOVALUE};
+d({332, Val}, _V) ->
+ {'PropertyParm', "o", [Val], asn1_NOVALUE};
+d({333, Val}, _V) ->
+ {'PropertyParm', "o", Val, asn1_NOVALUE};
+d({334, Val}, _V) ->
+ {'PropertyParm', "s", [Val], asn1_NOVALUE};
+d({335, Val}, _V) ->
+ {'PropertyParm', "s", Val, asn1_NOVALUE};
+d({336, Val}, _V) ->
+ {'PropertyParm', "i", [Val], asn1_NOVALUE};
+d({337, Val}, _V) ->
+ {'PropertyParm', "i", Val, asn1_NOVALUE};
+d({338, Val}, _V) ->
+ {'PropertyParm', "u", [Val], asn1_NOVALUE};
+d({339, Val}, _V) ->
+ {'PropertyParm', "u", Val, asn1_NOVALUE};
+d({340, Val}, _V) ->
+ {'PropertyParm', "e", [Val], asn1_NOVALUE};
+d({341, Val}, _V) ->
+ {'PropertyParm', "e", Val, asn1_NOVALUE};
+d({342, Val}, _V) ->
+ {'PropertyParm', "p", [Val], asn1_NOVALUE};
+d({343, Val}, _V) ->
+ {'PropertyParm', "p", Val, asn1_NOVALUE};
+d({344, Val}, _V) ->
+ {'PropertyParm', "c", [Val], asn1_NOVALUE};
+d({345, Val}, _V) ->
+ {'PropertyParm', "c", Val, asn1_NOVALUE};
+d({346, Val}, _V) ->
+ {'PropertyParm', "b", [Val], asn1_NOVALUE};
+d({347, Val}, _V) ->
+ {'PropertyParm', "b", Val, asn1_NOVALUE};
+d({348, Val}, _V) ->
+ {'PropertyParm', "z", [Val], asn1_NOVALUE};
+d({349, Val}, _V) ->
+ {'PropertyParm', "z", Val, asn1_NOVALUE};
+d({350, Val}, _V) ->
+ {'PropertyParm', "k", [Val], asn1_NOVALUE};
+d({351, Val}, _V) ->
+ {'PropertyParm', "k", Val, asn1_NOVALUE};
+d({352, Val}, _V) ->
+ {'PropertyParm', "a", [Val], asn1_NOVALUE};
+d({353, Val}, _V) ->
+ {'PropertyParm', "a", Val, asn1_NOVALUE};
+d({354, Val}, _V) ->
+ {'PropertyParm', "t", [Val], asn1_NOVALUE};
+d({355, Val}, _V) ->
+ {'PropertyParm', "t", Val, asn1_NOVALUE};
+d({356, Val}, _V) ->
+ {'PropertyParm', "r", [Val], asn1_NOVALUE};
+d({357, Val}, _V) ->
+ {'PropertyParm', "r", Val, asn1_NOVALUE};
+d({358, Val}, _V) ->
+ {'PropertyParm', "m", [Val], asn1_NOVALUE};
+d({359, Val}, _V) ->
+ {'PropertyParm', "m", Val, asn1_NOVALUE};
+d({360, Val}, _V) ->
+ {'PropertyParm', "nt/jit", [Val], asn1_NOVALUE};
+d({361, Val}, _V) ->
+ {'PropertyParm', "nt/jit", Val, asn1_NOVALUE};
+d({362}, _V) ->
+ {'PropertyParm', "tdmc/ec", ["on"], asn1_NOVALUE};
+d({363}, _V) ->
+ {'PropertyParm', "tdmc/ec", ["off"], asn1_NOVALUE};
+d({364}, _V) ->
+ {'PropertyParm', "tdmc/gain", ["automatic"], asn1_NOVALUE};
+d({365, Val}, _V) ->
+ {'PropertyParm', "tdmc/gain", [Val], asn1_NOVALUE};
+d({366, Val}, _V) ->
+ {'PropertyParm', "tdmc/gain", Val, asn1_NOVALUE};
+d({367, Val}, _V) ->
+ {'PropertyParm', "maxNumberOfContexts", [Val], asn1_NOVALUE};
+d({368, Val}, _V) ->
+ {'PropertyParm', "maxNumberOfContexts", Val, asn1_NOVALUE};
+d({369, Val}, _V) ->
+ {'PropertyParm', "maxTerminationsPerContext", [Val], asn1_NOVALUE};
+d({370, Val}, _V) ->
+ {'PropertyParm', "maxTerminationsPerContext", Val, asn1_NOVALUE};
+d({371, Val}, _V) ->
+ {'PropertyParm', "normalMGExecutionTime", [Val], asn1_NOVALUE};
+d({372, Val}, _V) ->
+ {'PropertyParm', "normalMGExecutionTime", Val, asn1_NOVALUE};
+d({373, Val}, _V) ->
+ {'PropertyParm', "normalMGCExecutionTime", [Val], asn1_NOVALUE};
+d({374, Val}, _V) ->
+ {'PropertyParm', "normalMGCExecutionTime", Val, asn1_NOVALUE};
+d({375, Val}, _V) ->
+ {'PropertyParm', "MGProvisionalResponseTimerValue", [Val], asn1_NOVALUE};
+d({376, Val}, _V) ->
+ {'PropertyParm', "MGProvisionalResponseTimerValue", Val, asn1_NOVALUE};
+d({377, Val}, _V) ->
+ {'PropertyParm', "MGCProvisionalResponseTimerValue", [Val], asn1_NOVALUE};
+d({378, Val}, _V) ->
+ {'PropertyParm', "MGCProvisionalResponseTimerValue", Val, asn1_NOVALUE};
+d({379, N, Val}, _V) ->
+ {'PropertyParm', N, [Val], asn1_NOVALUE};
+d({380, N, Val}, _V) ->
+ {'PropertyParm', N, Val, asn1_NOVALUE};
+d({381, N, Val, EI}, _V) ->
+ {'PropertyParm', N, Val, EI};
+
+d({400, PG}, V) ->
+ {'LocalRemoteDescriptor', [[d(PG, V)]]};
+d({401, PG}, V) ->
+ {'LocalRemoteDescriptor', [dl(PG, V)]};
+d({402, PG}, V) ->
+ {'LocalRemoteDescriptor', dll(PG, V)};
+
+d({410, PP, EBC, SS}, V) ->
+ {'TerminationStateDescriptor', dl(PP, V), d(EBC, V), d(SS, V)};
+
+d({420, RID, E}, V) ->
+ {eventsDescriptor, {'EventsDescriptor', d(RID, V), [d(E, V)]}};
+d({421, RID, EL}, V) ->
+ {eventsDescriptor, {'EventsDescriptor', d(RID, V), dl(EL, V)}};
+d({422, ED}, V) ->
+ {eventsDescriptor, d(ED, V)};
+d({423, RID, E}, V) ->
+ {'EventsDescriptor', d(RID, V), [d(E, V)]};
+d({424, RID, EL}, V) ->
+ {'EventsDescriptor', d(RID, V), dl(EL, V)};
+
+d({425, PN, SID, EA, EPL}, V) ->
+ {'RequestedEvent', PN, d(SID, V), d(EA, V), dl(EPL, V)};
+
+d({430, SED, SD}, V) ->
+ {'RegulatedEmbeddedDescriptor', d(SED, V), dl(SD, V)};
+
+d({435, NI}, V) ->
+ {notifyImmediate, d(NI, V)};
+d({436, NR}, V) ->
+ {notifyRegulated, d(NR, V)};
+d({437, NN}, V) ->
+ {neverNotify, d(NN, V)};
+
+d({440, KA, EDM, SE, SD}, V) ->
+ {'RequestedActions', d(KA, V), d(EDM, V), d(SE, V), d(SD, V)};
+d({441, KA, EDM, SE, SD}, V)
+ when V >= 3 ->
+ {'RequestedActions', d(KA, V), d(EDM, V), d(SE, V), d(SD, V),
+ asn1_NOVALUE, asn1_NOVALUE};
+d({442, KA, EDM, SE, SD, NB}, V)
+ when V >= 3 ->
+ {'RequestedActions', d(KA, V), d(EDM, V), d(SE, V), d(SD, V),
+ d(NB, V), asn1_NOVALUE};
+d({443, KA, EDM, SE, SD, NB, RED}, V)
+ when V >= 3 ->
+ {'RequestedActions', d(KA, V), d(EDM, V), d(SE, V), d(SD, V),
+ d(NB, V), d(RED, V)};
+
+d({450, RID, E}, V) ->
+ {'SecondEventsDescriptor', d(RID, V), [d(E, V)]};
+d({451, RID, EL}, V) ->
+ {'SecondEventsDescriptor', d(RID, V), dl(EL, V)};
+
+d({460, PN, SID, EA, EPL}, V) ->
+ {'SecondRequestedEvent', PN, d(SID, V), d(EA, V), d(EPL, V)};
+
+d({470, KA, EDM, SD}, V) ->
+ {'SecondRequestedActions', d(KA, V), d(EDM, V), d(SD, V)};
+d({471, KA, EDM, SD}, V)
+ when V >= 3 ->
+ {'SecondRequestedActions', d(KA, V), d(EDM, V), d(SD, V),
+ asn1_NOVALUE, asn1_NOVALUE};
+d({472, KA, EDM, SD, NB}, V)
+ when V >= 3 ->
+ {'SecondRequestedActions', d(KA, V), d(EDM, V), d(SD, V),
+ d(NB, V), asn1_NOVALUE};
+d({473, KA, EDM, SD, NB, RED}, V)
+ when V >= 3 ->
+ {'SecondRequestedActions', d(KA, V), d(EDM, V), d(SD, V),
+ d(NB, V), d(RED, V)};
+
+d({480, EN, SID, EPL}, V) ->
+ {'EventSpec', EN, d(SID, V), dl(EPL, V)};
+
+d({490, ID, SL}, V) ->
+ {'SeqSigList', ID, dl(SL, V)};
+
+d({500, S}, V) ->
+ {signalsDescriptor, dl(S, V)};
+
+d({510, S}, V) ->
+ {signal, d(S, V)};
+
+d({520, SN, SID, ST, D, NC, KA, SPL}, V) ->
+ {'Signal',
+ SN, d(SID, V), d(ST, V), d(D, V), d(NC, V), d(KA, V), dl(SPL, V)};
+d({521, SN, SID, ST, D, NC, KA, SPL}, V)
+ when V >= 3 ->
+ {'Signal',
+ SN, d(SID, V), d(ST, V), d(D, V), d(NC, V), d(KA, V), dl(SPL, V),
+ asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE};
+d({522, SN, SID, ST, D, NC, KA, SPL, SD}, V)
+ when V >= 3 ->
+ {'Signal',
+ SN, d(SID, V), d(ST, V), d(D, V), d(NC, V), d(KA, V), dl(SPL, V),
+ d(SD, V), asn1_NOVALUE, asn1_NOVALUE};
+d({523, SN, SID, ST, D, NC, KA, SPL, SD, RID}, V)
+ when V >= 3 ->
+ {'Signal',
+ SN, d(SID, V), d(ST, V), d(D, V), d(NC, V), d(KA, V), dl(SPL, V),
+ d(SD, V), d(RID, V), asn1_NOVALUE};
+d({524, SN, SID, ST, D, NC, KA, SPL, SD, RID, IsD}, V)
+ when V >= 3 ->
+ {'Signal',
+ SN, d(SID, V), d(ST, V), d(D, V), d(NC, V), d(KA, V), dl(SPL, V),
+ d(SD, V), d(RID, V), d(IsD, V)};
+
+d({530, SPN, Val}, _V) ->
+ {'SigParameter', SPN, Val, asn1_NOVALUE};
+d({531, SPN, Val, EI}, _V) ->
+ {'SigParameter', SPN, Val, EI};
+
+d({550, MD}, V) ->
+ {modemDescriptor, d(MD, V)};
+d({551, MTL, MPL}, _V) ->
+ {'ModemDescriptor', MTL, MPL, asn1_NOVALUE};
+d({552, MTL, MPL, NSD}, _V) ->
+ {'ModemDescriptor', MTL, MPL, NSD};
+
+d({560, DMN, DMV}, V) ->
+ {digitMapDescriptor, {'DigitMapDescriptor', DMN, d(DMV, V)}};
+d({561, DMD}, V) ->
+ {digitMapDescriptor, d(DMD, V)};
+d({562, DMN, DMV}, V) ->
+ {'DigitMapDescriptor', DMN, d(DMV, V)};
+
+d({570, Start, Stop, Long, DMB}, 1 = V) ->
+ {'DigitMapValue', d(Start, V), d(Stop, V), d(Long, V), DMB};
+d({571, Start, Stop, Long, DMB, Dur}, V) when V >= 2 ->
+ {'DigitMapValue', d(Start, V), d(Stop, V), d(Long, V), DMB, d(Dur, V)};
+
+d({580, M, A, Ver, Prof, R, D, Id}, V) ->
+ {'ServiceChangeParm',
+ d(M, V), d(A, V), d(Ver, V), d(Prof, V), R, d(D, V), d(Id, V),
+ asn1_NOVALUE, asn1_NOVALUE};
+d({581, M, A, Ver, Prof, R, D, Id, TS}, V) ->
+ {'ServiceChangeParm',
+ d(M, V), d(A, V), d(Ver, V), d(Prof, V), R, d(D, V), d(Id, V),
+ d(TS, V), asn1_NOVALUE};
+d({582, M, A, Ver, Prof, R, D, Id, TS, NSD}, V) ->
+ {'ServiceChangeParm',
+ d(M, V), d(A, V), d(Ver, V), d(Prof, V), R, d(D, V), d(Id, V),
+ d(TS, V), NSD};
+
+d({583, M, A, Ver, Prof, R, D, Id, TS, NSD}, V)
+ when V == 2 ->
+ {'ServiceChangeParm',
+ d(M, V), d(A, V), d(Ver, V), d(Prof, V), R, d(D, V), d(Id, V),
+ d(TS, V), NSD, asn1_NOVALUE};
+d({584, M, A, Ver, Prof, R, D, Id, TS, NSD, Info}, V)
+ when V == 2 ->
+ {'ServiceChangeParm',
+ d(M, V), d(A, V), d(Ver, V), d(Prof, V), R, d(D, V), d(Id, V),
+ d(TS, V), NSD, d(Info, V)};
+
+d({585, M, A, Ver, Prof, R, D, Id, TS, NSD}, V)
+ when V >= 3 ->
+ {'ServiceChangeParm',
+ d(M, V), d(A, V), d(Ver, V), d(Prof, V), R, d(D, V), d(Id, V),
+ d(TS, V), NSD, asn1_NOVALUE, asn1_NOVALUE};
+d({586, M, A, Ver, Prof, R, D, Id, TS, NSD, Info}, V)
+ when V >= 3 ->
+ {'ServiceChangeParm',
+ d(M, V), d(A, V), d(Ver, V), d(Prof, V), R, d(D, V), d(Id, V),
+ d(TS, V), NSD, d(Info, V), asn1_NOVALUE};
+d({587, M, A, Ver, Prof, R, D, Id, TS, NSD, Info, Flag}, V)
+ when V >= 3 ->
+ {'ServiceChangeParm',
+ d(M, V), d(A, V), d(Ver, V), d(Prof, V), R, d(D, V), d(Id, V),
+ d(TS, V), NSD, d(Info, V), d(Flag, V)};
+
+d({590, Id, A, Ver, Prof, TS}, V) ->
+ {serviceChangeResParms, {'ServiceChangeResParm', Id, d(A, V), Ver, d(Prof, V), TS}};
+d({591, SCRP}, V) ->
+ {serviceChangeResParms, d(SCRP, V)};
+d({592, Id, A, Ver, Prof, TS}, V) ->
+ {'ServiceChangeResParm', Id, d(A, V), Ver, d(Prof, V), TS};
+
+d({600, N}, _V) ->
+ {portNumber, N};
+
+d({610, D, T}, _V) ->
+ {'TimeNotation', D, T};
+
+d({620, N, Ver}, _V) ->
+ {'ServiceChangeProfile', N, Ver};
+
+d({630, N}, _) ->
+ {digitMapName, N};
+
+d({640, Id}, _V) ->
+ {megaco_term_id, false, Id};
+d({641}, _V) ->
+ {megaco_term_id, true, [[$*]]};
+d({642}, _V) ->
+ {megaco_term_id, true, [[$$]]};
+d({643, Id}, _V) ->
+ {megaco_term_id, true, Id};
+d({644, W, ID}, _V) ->
+ {'TerminationID', W, ID};
+
+d({650, TID}, V) ->
+ {modReply, {'AmmsReply', dl(TID, V), asn1_NOVALUE}};
+d({651, TID, TA}, V) ->
+ {modReply, {'AmmsReply', dl(TID, V), [d(TA, V)]}};
+d({652, TID, TA}, V) ->
+ {modReply, {'AmmsReply', dl(TID, V), dl(TA, V)}};
+d({653, R}, V) ->
+ {modReply, d(R, V)};
+
+d({655, AR}, V) ->
+ {moveReply, d(AR, V)};
+
+d({660, TID}, V) ->
+ {addReply, {'AmmsReply', dl(TID, V), asn1_NOVALUE}};
+d({661, TID, TA}, V) ->
+ {addReply, {'AmmsReply', dl(TID, V), [d(TA, V)]}};
+d({662, TID, TA}, V) ->
+ {addReply, {'AmmsReply', dl(TID, V), dl(TA, V)}};
+d({663, R}, V) ->
+ {addReply, d(R, V)};
+
+d({670, TID}, V) ->
+ {subtractReply, {'AmmsReply', dl(TID, V), asn1_NOVALUE}};
+d({671, TID, TA}, V) ->
+ {subtractReply, {'AmmsReply', dl(TID, V), [d(TA, V)]}};
+d({672, TID, TA}, V) ->
+ {subtractReply, {'AmmsReply', dl(TID, V), dl(TA, V)}};
+d({673, R}, V) ->
+ {subtractReply, d(R, V)};
+
+d({680, TID}, V) ->
+ {'AmmsReply', dl(TID, V), asn1_NOVALUE};
+d({681, TID, TA}, V) ->
+ {'AmmsReply', dl(TID, V), [d(TA, V)]};
+d({682, TID, TA}, V) ->
+ {'AmmsReply', dl(TID, V), dl(TA, V)};
+
+d({690, TID}, V) ->
+ {notifyReply, {'NotifyReply', dl(TID, V), asn1_NOVALUE}};
+d({691, TID, ED}, V) ->
+ {notifyReply, {'NotifyReply', dl(TID, V), d(ED, V)}};
+d({692, R}, V) ->
+ {notifyReply, d(R, V)};
+d({693, TID}, V) ->
+ {'NotifyReply', dl(TID, V), asn1_NOVALUE};
+d({694, TID, ED}, V) ->
+ {'NotifyReply', dl(TID, V), d(ED, V)};
+
+d({700, AVR}, V) ->
+ {auditValueReply, d(AVR, V)};
+
+d({705, TIDs}, V) ->
+ {contextAuditResult, dl(TIDs, V)};
+
+d({710, TID, TAR}, V) ->
+ {auditResult, {'AuditResult', d(TID, V), [d(TAR, V)]}};
+d({711, TID, TAR}, V) ->
+ {auditResult, {'AuditResult', d(TID, V), dl(TAR, V)}};
+d({712, AR}, V) ->
+ {auditResult, d(AR, V)};
+d({713, TID, TAR}, V) ->
+ {'AuditResult', d(TID, V), [d(TAR, V)]};
+d({714, TID, TAR}, V) ->
+ {'AuditResult', d(TID, V), dl(TAR, V)};
+
+d({715, TIDs, [TAR]}, V) ->
+ {auditResultTermList, {'TermListAuditResult', dl(TIDs, V), [d(TAR, V)]}};
+d({716, TIDs, TAR}, V) ->
+ {auditResultTermList, {'TermListAuditResult', dl(TIDs, V), dl(TAR, V)}};
+
+d({720, PsD}, V) ->
+ {packagesDescriptor, dl(PsD, V)};
+
+d({730}, _V) ->
+ {'PackagesItem', "g", 1};
+d({731}, _V) ->
+ {'PackagesItem', "tonegen", 1};
+d({732}, _V) ->
+ {'PackagesItem', "tonedet", 1};
+d({733}, _V) ->
+ {'PackagesItem', "tg", 1};
+d({734}, _V) ->
+ {'PackagesItem', "dd", 1};
+d({735}, _V) ->
+ {'PackagesItem', "cg", 1};
+d({736}, _V) ->
+ {'PackagesItem', "cd", 1};
+d({737}, _V) ->
+ {'PackagesItem', "al", 1};
+d({738}, _V) ->
+ {'PackagesItem', "ct", 1};
+d({739}, _V) ->
+ {'PackagesItem', "nt", 1};
+d({740}, _V) ->
+ {'PackagesItem', "rtp", 1};
+d({741}, _V) ->
+ {'PackagesItem', "tdmc", 1};
+d({742, Name, Ver}, _V) ->
+ {'PackagesItem', Name, Ver};
+
+d({760, AD}, V) ->
+ {emptyDescriptors, d(AD, V)};
+
+d({770, SD}, V) ->
+ {statisticsDescriptor, [d(SD, V)]};
+d({771, SsD}, V) ->
+ {statisticsDescriptor, dl(SsD, V)};
+
+d({780, Name}, _V) ->
+ {'StatisticsParameter', Name, asn1_NOVALUE};
+d({781, Name, Value}, _V) ->
+ {'StatisticsParameter', Name, Value};
+
+d({800, MT, TL}, V) ->
+ {'MuxDescriptor', d(MT, V), dl(TL, V), asn1_NOVALUE};
+d({801, MT, TL, NSD}, V) ->
+ {'MuxDescriptor', d(MT, V), dl(TL, V), NSD};
+
+d({900, N, Ver}, V) when (V >= 2) ->
+ {indAudPackagesDescriptor, {'IndAudPackagesDescriptor', N, Ver}};
+d({900, IAPD}, V) when (V >= 2) ->
+ {indAudPackagesDescriptor, d(IAPD, V)};
+d({901, N, Ver}, V) when (V >= 2) ->
+ {'IndAudPackagesDescriptor', N, Ver};
+
+d({910, N}, V) when (V >= 2) ->
+ {indAudStatisticsDescriptor, {'IndAudStatisticsDescriptor', N}};
+d({911, IASD}, V) when (V >= 2) ->
+ {indAudStatisticsDescriptor, d(IASD, V)};
+d({912, N}, V) when (V >= 2) ->
+ {'IndAudStatisticsDescriptor', N};
+
+d({920, DMN}, V) when (V >= 2) ->
+ {indAudDigitMapDescriptor, {'IndAudDigitMapDescriptor', DMN}};
+d({921, IADMD}, V) when (V >= 2) ->
+ {indAudDigitMapDescriptor, d(IADMD, V)};
+d({922, DMN}, V) when (V >= 2) ->
+ {'IndAudDigitMapDescriptor', DMN};
+
+d({930, IASD}, V) when (V >= 2) ->
+ {indAudSignalsDescriptor, {seqSigList, d(IASD, V)}};
+d({931, IAS}, V) when (V >= 2) ->
+ {indAudSignalsDescriptor, {signal, d(IAS, V)}};
+
+d({940, Id, SL}, V) when (V >= 2) ->
+ {'IndAudSeqSigList', Id, d(SL, V)};
+
+d({950, N, SID}, 2 = V) ->
+ {'IndAudSignal', N, d(SID, V)};
+d({951, N, SID}, V) when (V >= 3) ->
+ {'IndAudSignal', N, d(SID, V), asn1_NOVALUE};
+d({952, N, SID, RID}, V) when (V >= 3) ->
+ {'IndAudSignal', N, d(SID, V), d(RID, V)};
+
+d({960, EN, SID}, V) when (V >= 2) ->
+ {indAudEventBufferDescriptor,
+ {'IndAudEventBufferDescriptor', EN, d(SID, V)}};
+d({961, IAEBD}, V) when (V >= 2) ->
+ {indAudEventBufferDescriptor, d(IAEBD, V)};
+d({962, EN, SID}, V) when (V >= 2) ->
+ {'IndAudEventBufferDescriptor', EN, d(SID, V)};
+
+d({970, RID, N, SID}, V) when (V >= 2) ->
+ {indAudEventsDescriptor,
+ {'IndAudEventsDescriptor', d(RID, V), N, d(SID, V)}};
+d({971, IAED}, V) when (V >= 2) ->
+ {indAudEventsDescriptor, d(IAED, V)};
+d({972, RID, N, SID}, V) when (V >= 2) ->
+ {'IndAudEventsDescriptor', d(RID, V), N, d(SID, V)};
+
+d({980, TSD, S}, V) when (V >= 2) ->
+ {indAudMediaDescriptor, {'IndAudMediaDescriptor', d(TSD, V), d(S, V)}};
+d({981, IAMD}, V) when (V >= 2) ->
+ {indAudMediaDescriptor, d(IAMD, V)};
+d({982, TSD, S}, V) when (V >= 2) ->
+ {'IndAudMediaDescriptor', d(TSD, V), d(S, V)};
+
+d({990, PP, EBC, SS}, 2 = V) ->
+ {'IndAudTerminationStateDescriptor', dl(PP, V), d(EBC, V), d(SS, V)};
+d({991, PP, EBC, SS}, V) when V >= 3 ->
+ {'IndAudTerminationStateDescriptor', dl(PP, V), d(EBC, V), d(SS, V),
+ asn1_NOVALUE};
+d({992, PP, EBC, SS, SSS}, V) when V >= 3 ->
+ {'IndAudTerminationStateDescriptor', dl(PP, V), d(EBC, V), d(SS, V),
+ d(SSS, V)};
+
+d({1000, SID, SP}, V) ->
+ {'IndAudStreamDescriptor', d(SID, V), d(SP, V)};
+
+d({1010, LCD}, 2 = V) ->
+ {'IndAudStreamParms', d(LCD, V), asn1_NOVALUE, asn1_NOVALUE};
+d({1011, LCD, LD, RD}, 2 = V) ->
+ {'IndAudStreamParms', d(LCD, V), d(LD, V), d(RD, V)};
+d({1012, LCD}, V) when V >= 3 ->
+ {'IndAudStreamParms', d(LCD, V), asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE};
+d({1013, LCD, LD}, V) when V >= 3 ->
+ {'IndAudStreamParms', d(LCD, V), d(LD, V), asn1_NOVALUE, asn1_NOVALUE};
+d({1014, LCD, LD, RD}, V) when V >= 3 ->
+ {'IndAudStreamParms', d(LCD, V), d(LD, V), d(RD, V), asn1_NOVALUE};
+d({1015, LCD, LD, RD, SD}, V) when V >= 3 ->
+ {'IndAudStreamParms', d(LCD, V), d(LD, V), d(RD, V), d(SD, V)};
+
+d({1020, SM, RV, RG}, 2 = V) ->
+ {'IndAudLocalControlDescriptor',
+ d(SM, V), d(RV, V), d(RG, V), asn1_NOVALUE};
+d({1021, SM, RV, RG, PP}, 2 = V)
+ when is_list(PP) ->
+ {'IndAudLocalControlDescriptor', d(SM, V), d(RV, V), d(RG, V), dl(PP, V)};
+d({1022, SM, RV, RG}, V) when (V >= 3) ->
+ {'IndAudLocalControlDescriptor',
+ d(SM, V), d(RV, V), d(RG, V), asn1_NOVALUE, asn1_NOVALUE};
+d({1023, SM, RV, RG, PP}, V)
+ when is_list(PP) andalso (V >= 3) ->
+ {'IndAudLocalControlDescriptor', d(SM, V), d(RV, V), d(RG, V), dl(PP, V),
+ asn1_NOVALUE};
+d({1024, SM, RV, RG, PP, SMS}, V)
+ when is_list(PP) andalso (V >= 3) ->
+ {'IndAudLocalControlDescriptor', d(SM, V), d(RV, V), d(RG, V), dl(PP, V),
+ d(SMS, V)};
+
+d({1030, N}, 2 = _V) ->
+ {'IndAudPropertyParm', N};
+d({1031, N}, V) when V >= 3 ->
+ {'IndAudPropertyParm', N, asn1_NOVALUE};
+d({1032, N, PP}, V) when V >= 3 ->
+ {'IndAudPropertyParm', N, d(PP, V)};
+
+d({1100}, _V) ->
+ oneway;
+d({1101}, _V) ->
+ bothway;
+d({1102}, _V) ->
+ isolate;
+d({1103}, _V) ->
+ onewayexternal;
+d({1104}, _V) ->
+ onewayboth;
+
+d(T, _V) ->
+ %% io:format("d(~w) -> ~nT: ~w~n", [_V, T]),
+ T.
+
+
+%% i(F, A) ->
+%% %% i(get(dbg), F, A).
+%% i(true, F, A).
+
+%% i(true, F, A) ->
+%% io:format("DBG:" ++ F ++ "~n", A);
+%% i(_, _, _) ->
+%% ok.
+