📄 megaco_binary_transformer_prev3c.erl
字号:
LCD2 = case LCD of asn1_NOVALUE -> asn1_NOVALUE; _ -> tr_indAudLocalControlDescriptor(LCD, State) end, LD2 = case LD of asn1_NOVALUE -> asn1_NOVALUE; _ -> tr_indAudLocalRemoteDescriptor(LD, State) end, RD2 = case RD of asn1_NOVALUE -> asn1_NOVALUE; _ -> tr_indAudLocalRemoteDescriptor(RD, State) end, SD2 = case SD of asn1_NOVALUE -> asn1_NOVALUE; _ -> tr_indAudStatisticsDescriptor(SD, State) end, #'IndAudStreamParms'{localControlDescriptor = LCD2, localDescriptor = LD2, remoteDescriptor = RD2, statisticsDescriptor = SD2}. tr_indAudLocalControlDescriptor(Val, State) when record(Val, 'IndAudLocalControlDescriptor') -> #'IndAudLocalControlDescriptor'{streamMode = M, reserveValue = V, reserveGroup = G, propertyParms = P, streamModeSel = SMS} = Val, M2 = tr_opt_null(M, State), V2 = tr_opt_null(V, State), G2 = tr_opt_null(G, State), P2 = tr_indAudLocalControlDescriptor_propertyParms(P, State), SMS2 = tr_opt_StreamMode(SMS, State), #'IndAudLocalControlDescriptor'{streamMode = M2, reserveValue = V2, reserveGroup = G2, propertyParms = P2, streamModeSel = SMS2}.tr_indAudLocalControlDescriptor_propertyParms(Parms, State) when list(Parms), length(Parms) > 0 -> [tr_indAudPropertyParm(Parm, State) || Parm <- Parms];tr_indAudLocalControlDescriptor_propertyParms(asn1_NOVALUE, _State) -> asn1_NOVALUE.tr_indAudLocalRemoteDescriptor(#'IndAudLocalRemoteDescriptor'{propGroupID = ID, propGrps = Grps}, State) -> #'IndAudLocalRemoteDescriptor'{propGroupID = tr_opt_UINT16(ID, State), propGrps = tr_indAudPropertyGroup(Grps, State)}.tr_indAudPropertyGroup(Grps, State) when list(Grps) -> [tr_indAudPropertyParm(Parm, State) || Parm <- Grps].tr_indAudPropertyParm(#'IndAudPropertyParm'{name = Name0, propertyParms = Prop0}, State) -> Constraint = fun(Item) -> tr_PkgdName(Item, State) end, Name = resolve(property, Name0, State, Constraint), Prop = case Prop0 of asn1_NOVALUE -> asn1_NOVALUE; _ -> tr_PropertyParm(Prop0, State) end, #'IndAudPropertyParm'{name = Name, propertyParms = Prop}.tr_indAudStreamDescriptor(#'IndAudStreamDescriptor'{streamID = ID, streamParms = Parms}, State) -> #'IndAudStreamDescriptor'{streamID = tr_StreamID(ID, State), streamParms = tr_indAudStreamParms(Parms, State)}.%% -tr_indAudEventsDescriptor(#'IndAudEventsDescriptor'{requestID = RID, pkgdName = Name0, streamID = SID}, State) -> Constraint = fun(Item) -> tr_PkgdName(Item, State) end, Name = resolve(event, Name0, State, Constraint), #'IndAudEventsDescriptor'{requestID = tr_opt_RequestID(RID, State), pkgdName = Name, streamID = tr_opt_StreamID(SID, State)}.%% -tr_indAudSignalsDescriptor({Tag, Val}, State) -> case Tag of signal -> {signal, tr_indAudSignal(Val, State)}; seqSigList -> {seqSigList, tr_indAudSeqSigList(Val, State)} end.tr_opt_indAudSignal(asn1_NOVALUE, _State) -> asn1_NOVALUE;tr_opt_indAudSignal(Val, State) -> tr_indAudSignal(Val, State).tr_indAudSignal(#'IndAudSignal'{signalName = Name0, streamID = SID, signalRequestID = RID}, State) -> Constraint = fun(Item) -> tr_PkgdName(Item, State) end, Name = resolve(signal, Name0, State, Constraint), #'IndAudSignal'{signalName = Name, streamID = tr_opt_StreamID(SID, State), signalRequestID = tr_opt_RequestID(RID, State)}.tr_indAudSeqSigList(#'IndAudSeqSigList'{id = ID, signalList = SigList}, State) -> #'IndAudSeqSigList'{id = tr_integer(ID, State, 0, 65535), signalList = tr_opt_indAudSignal(SigList, State)}.%% -tr_indAudDigitMapDescriptor(#'IndAudDigitMapDescriptor'{digitMapName = Name}, State) -> #'IndAudDigitMapDescriptor'{digitMapName = tr_opt_DigitMapName(Name, State)}.%% -tr_indAudEventBufferDescriptor(#'IndAudEventBufferDescriptor'{eventName = N, streamID = SID}, State) -> ?d("tr_indAudEventBufferDescriptor -> entry with" "~n N: ~p" "~n SID: ~p", [N, SID]), Constraint = fun(Item) -> tr_PkgdName(Item, State) end, Name = resolve(event, N, State, Constraint), ?d("tr_indAudEventBufferDescriptor -> entry with" "~n Name: ~p", [Name]), #'IndAudEventBufferDescriptor'{eventName = Name, streamID = tr_opt_StreamID(SID, State)}.%% -tr_indAudStatisticsDescriptor(#'IndAudStatisticsDescriptor'{statName = N}, State) -> ?d("tr_indAudEventBufferDescriptor -> entry with" "~n N: ~p", [N]), Constraint = fun(Item) -> tr_PkgdName(Item, State) end, Name = resolve(statistics, N, State, Constraint), #'IndAudStatisticsDescriptor'{statName = Name}.%% -tr_indAudPackagesDescriptor(#'IndAudPackagesDescriptor'{packageName = N, packageVersion = V}, State) -> ?d("tr_indAudPackagesDescriptor -> entry with" "~n N: ~p" "~n V: ~p", [N, V]), Constraint = fun(Item) -> tr_Name(Item, State) end, Name = resolve(package, N, State, Constraint), ?d("tr_indAudPackagesDescriptor -> entry with" "~n Name: ~p", [Name]), #'IndAudPackagesDescriptor'{packageName = Name, packageVersion = tr_integer(V, State, 0, 99)}.%% -- v2 end --tr_TerminationAudit(ParmList, State) when list(ParmList) -> do_tr_TerminationAudit(ParmList, [], State).do_tr_TerminationAudit([], Acc, _State) -> lists:reverse(Acc);do_tr_TerminationAudit([Parm|ParmList], Acc, State) -> case tr_AuditReturnParameter(Parm, State) of {_, deprecated} when State#state.mode == encode -> error({deprecated, Parm}); {_, deprecated} when State#state.mode == decode -> %% SKIP do_tr_TerminationAudit(ParmList, Acc, State); {_, deprecated} -> %% SKIP do_tr_TerminationAudit(ParmList, Acc, State); NewParm -> do_tr_TerminationAudit(ParmList, [NewParm|Acc], State) end.tr_AuditReturnParameter({Tag, Val}, State) -> Val2 = case Tag of errorDescriptor -> tr_ErrorDescriptor(Val, State); mediaDescriptor -> tr_MediaDescriptor(Val, State); modemDescriptor -> tr_ModemDescriptor(Val, State); muxDescriptor -> tr_MuxDescriptor(Val, State); eventsDescriptor -> tr_EventsDescriptor(Val, State); eventBufferDescriptor -> tr_EventBufferDescriptor(Val, State); signalsDescriptor -> tr_SignalsDescriptor(Val, State); digitMapDescriptor -> tr_DigitMapDescriptor(Val, State); observedEventsDescriptor -> tr_ObservedEventsDescriptor(Val, State); statisticsDescriptor -> tr_StatisticsDescriptor(Val, State); packagesDescriptor -> tr_PackagesDescriptor(Val, State); emptyDescriptors -> tr_EmptyDescriptors(Val, State) end, {Tag, Val2}.tr_EmptyDescriptors(#'AuditDescriptor'{auditToken = Tokens}, State) -> Tokens2 = case Tokens of asn1_NOVALUE -> asn1_NOVALUE; _ -> [tr_auditItem(Token, State) || Token <- Tokens] end, #'AuditDescriptor'{auditToken = Tokens2}.tr_NotifyRequest(#'NotifyRequest'{terminationID = IdList, observedEventsDescriptor = ObsDesc, errorDescriptor = ErrDesc}, State) -> %% BUGBUG: Mismatch between ASN.1 and ABNF %% BUGBUG: The following ought to be a 'choice' #'NotifyRequest'{terminationID = [tr_TerminationID(Id, State) || Id <- IdList], observedEventsDescriptor = tr_ObservedEventsDescriptor(ObsDesc, State), errorDescriptor = tr_opt_ErrorDescriptor(ErrDesc, State)}.tr_NotifyReply(#'NotifyReply'{terminationID = IdList, errorDescriptor = ErrDesc}, State) -> #'NotifyReply'{terminationID = [tr_TerminationID(Id, State) || Id <- IdList], errorDescriptor = tr_opt_ErrorDescriptor(ErrDesc, State)}.tr_ObservedEventsDescriptor(#'ObservedEventsDescriptor'{requestId = Id, observedEventLst = Events}, State) when list (Events) -> #'ObservedEventsDescriptor'{requestId = tr_RequestID(Id, State), observedEventLst = [tr_ObservedEvent(E, State) || E <- Events]}.%% ;time per event, because it might be buffered%% observedEvent = [ TimeStamp LWSP COLON] LWSP %% pkgdName [ LBRKT observedEventParameter%% *(COMMA observedEventParameter) RBRKT ]%% %% ;at-most-once eventStream, every eventParameterName at most once%% observedEventParameter = eventStream / eventOthertr_ObservedEvent(#'ObservedEvent'{eventName = Name, streamID = Id, eventParList = Parms, timeNotation = Time}, State) -> #'ObservedEvent'{eventName = tr_EventName(Name, State), streamID = tr_opt_StreamID(Id, State), eventParList = [tr_EventParameter(P, Name, State) || P <- Parms], timeNotation = tr_opt_TimeNotation(Time, State)}.tr_EventName(Name, State) -> Constraint = fun(Item) -> tr_PkgdName(Item, State) end, resolve(event, Name, State, Constraint).tr_EventParameter(#'EventParameter'{eventParameterName = ParName, value = Value, extraInfo = Extra}, EventName, State) -> %% BUGBUG: event parameter name Constraint = fun(Item) -> tr_Name(Item, State) end, N = resolve({event_parameter, EventName}, ParName, State, Constraint), #'EventParameter'{eventParameterName = N, value = tr_Value(Value, State), extraInfo = tr_opt_extraInfo(Extra, State)}.tr_ServiceChangeRequest(#'ServiceChangeRequest'{terminationID = IdList, serviceChangeParms = Parms}, State) -> #'ServiceChangeRequest'{terminationID = [tr_TerminationID(Id, State) || Id <- IdList], serviceChangeParms = tr_ServiceChangeParm(Parms, State)}.%% serviceChangeReply = ServiceChangeToken EQUAL TerminationID%% [LBRKT (errorDescriptor / %% serviceChangeReplyDescriptor) RBRKT]%% serviceChangeReplyDescriptor = ServicesToken LBRKT%% servChgReplyParm *(COMMA servChgReplyParm) RBRKT%% %% ;at-most-once. Version is REQUIRED on first ServiceChange response%% servChgReplyParm = (serviceChangeAddress / serviceChangeMgcId /%% serviceChangeProfile / serviceChangeVersion )tr_ServiceChangeReply(#'ServiceChangeReply'{terminationID = IdList, serviceChangeResult = Res}, State) -> #'ServiceChangeReply'{terminationID = [tr_TerminationID(Id, State) || Id <- IdList], serviceChangeResult = tr_ServiceChangeResult(Res, State)}.tr_ServiceChangeResult({Tag, Val}, State) -> Val2 = case Tag of errorDescriptor -> tr_ErrorDescriptor(Val, State); serviceChangeResParms -> tr_ServiceChangeResParm(Val, State) end, {Tag, Val2}.%% TerminationID = "ROOT" / pathNAME / "$" / "*"%% ; Total length of pathNAME must not exceed 64 chars.%% pathNAME = ["*"] NAME *("/" / "*"/ ALPHA / DIGIT /"_" / "$" ) %% ["@" pathDomainName ]tr_TerminationID(TermId, State) when State#state.mode /= verify -> resolve(term_id, TermId, State, valid);tr_TerminationID(#'TerminationID'{wildcard = Wild, id = Id}, _State) -> #'TerminationID'{wildcard = Wild, id = Id};tr_TerminationID(#megaco_term_id{contains_wildcards = IsWild, id = Id}, State) -> #megaco_term_id{contains_wildcards = tr_bool(IsWild, State), id = [tr_term_id_component(Sub, State) || Sub <- Id]}.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -