📄 megaco_text_gen_v3.hrl
字号:
%% alternativeValue = ( VALUE / LSBRKT VALUE *(COMMA VALUE) RSBRKT / %% LSBRKT VALUE DOT DOT VALUE RSBRKT )enc_PropertyParm(Val, State) when record(Val, 'PropertyParm') -> PkgdName = ?META_ENC(property, Val#'PropertyParm'.name), [ enc_PkgdName(PkgdName, State), enc_propertyParmValues(Val#'PropertyParm'.value, Val#'PropertyParm'.extraInfo, State) ]. enc_propertyParmValues([Single], asn1_NOVALUE, State) -> [ ?EqualToken, enc_Value(Single, State) ];enc_propertyParmValues([Single], {relation, Rel}, State) -> case Rel of greaterThan -> [$>, enc_Value(Single, State)]; smallerThan -> [$<, enc_Value(Single, State)]; unequalTo -> [$#, enc_Value(Single, State)] end;enc_propertyParmValues([Low, High], {range, true}, State)-> %% Exact two values [ ?EQUAL, ?LSBRKT, enc_Value(Low, State), ?COLON, enc_Value(High, State), ?RSBRKT ];enc_propertyParmValues(Values, {sublist, true}, State)-> %% sublist (i.e. A AND B AND ...) [ ?EQUAL, ?LSBRKT_INDENT(State), enc_list([{Values, fun enc_Value/2}], ?INC_INDENT(State)), ?RSBRKT_INDENT(State) ];enc_propertyParmValues(Values, {sublist, false}, State) -> %% alternatives (i.e. A OR B OR ...) [ ?EQUAL, ?LBRKT_INDENT(State), enc_list([{Values, fun enc_Value/2}], ?INC_INDENT(State)), ?RBRKT_INDENT(State) ];enc_propertyParmValues(V, EI, _State) -> error({invalid_property_parm_values, V, EI}).enc_TerminationStateDescriptor(Val, State) when record(Val, 'TerminationStateDescriptor') -> [ ?TerminationStateToken, ?LBRKT_INDENT(State), enc_list([{Val#'TerminationStateDescriptor'.propertyParms, fun enc_PropertyParm/2}, {[Val#'TerminationStateDescriptor'.eventBufferControl], fun enc_eventBufferControl/2}, {[Val#'TerminationStateDescriptor'.serviceState], fun enc_serviceState/2}], ?INC_INDENT(State)), ?RBRKT_INDENT(State) ].enc_eventBufferControl(Val, _State) -> [ ?BufferToken, ?EQUAL, case Val of off -> ?OffToken; lockStep -> ?LockStepToken end ]. enc_serviceState({'ServiceState',Val}, State) -> enc_serviceState(Val, State);enc_serviceState(Val, _State) -> [ ?ServiceStatesToken, ?EQUAL, case Val of test -> ?TestToken; outOfSvc -> ?OutOfSvcToken; inSvc -> ?InSvcToken end ].enc_MuxDescriptor(Val, State) when record(Val, 'MuxDescriptor') -> [ ?MuxToken, ?EQUAL, enc_MuxType(Val#'MuxDescriptor'.muxType, State), enc_TerminationIDList1(Val#'MuxDescriptor'.termList, State) ].enc_MuxType({'MuxType',Val}, State) -> enc_MuxType(Val, State);enc_MuxType(Val, _State) -> case Val of h221 -> ?H221Token; h223 -> ?H223Token; h226 -> ?H226Token; v76 -> ?V76Token; %% extensionParameter nx64k -> ?Nx64kToken % v2 end.enc_StreamID({'StreamID',Val}, State) -> enc_StreamID(Val, State);enc_StreamID(Val, State) -> enc_UINT16(Val, State).enc_EventsDescriptor(Val, State) when record(Val, 'EventsDescriptor') -> #'EventsDescriptor'{requestID = RequestId, eventList = Events} = Val, if RequestId == asn1_NOVALUE, Events == [] -> [ ?EventsToken ]; RequestId /= asn1_NOVALUE, Events /= [] -> [ ?EventsToken, ?EQUAL, enc_RequestID(RequestId, State), ?LBRKT_INDENT(State), enc_list([{Events, fun enc_RequestedEvent/2}], ?INC_INDENT(State)), ?RBRKT_INDENT(State) ] end.enc_RequestedEvent(Val, State) when record(Val, 'RequestedEvent') -> PkgdName = ?META_ENC(event, Val#'RequestedEvent'.pkgdName), [ enc_PkgdName(PkgdName, State), enc_opt_brackets( enc_list([{[Val#'RequestedEvent'.streamID], fun enc_eventStream/2}, {Val#'RequestedEvent'.evParList, fun enc_eventOther/2} | decompose_requestedActions(Val#'RequestedEvent'.eventAction)], ?INC_INDENT(State)), State) ].decompose_requestedActions(asn1_NOVALUE) -> [];%% %% This in the ABNF: %% at-most-once each of KeepActiveToken , eventDM and eventStream%% at most one of either embedWithSig or embedNoSig but not both%% KeepActiveToken and embedWithSig must not both be present%% %% embedWithSigdecompose_requestedActions(#'RequestedActions'{keepActive = KA, eventDM = EDM, secondEvent = SE, signalsDescriptor = SD}) when KA /= true, SD /= asn1_NOVALUE, SD /= [] -> [ {[EDM], fun enc_EventDM/2}, {[{SE, SD}], fun enc_embedWithSig/2} ];%% embedNoSigdecompose_requestedActions(#'RequestedActions'{keepActive = KA, eventDM = EDM, secondEvent = SE, signalsDescriptor = SD}) when SD == asn1_NOVALUE; SD == [] -> [ {[KA], fun enc_keepActive/2}, {[EDM], fun enc_EventDM/2}, {[SE], fun enc_embedNoSig/2} ];%% Fallback, if everything else failes....decompose_requestedActions(#'RequestedActions'{keepActive = KA, eventDM = EDM, secondEvent = SE, signalsDescriptor = SD}) -> [ {[KA], fun enc_keepActive/2}, {[EDM], fun enc_EventDM/2}, {[{SE, SD}], fun enc_embedWithSig/2} ].enc_embedNoSig(#'SecondEventsDescriptor'{requestID = RID, eventList = Evs}, State) -> [ ?EmbedToken, ?LBRKT_INDENT(State), enc_embedFirst(RID, Evs, ?INC_INDENT(State)), ?RBRKT_INDENT(State) ].enc_embedWithSig({asn1_NOVALUE, SD}, State) -> [ ?EmbedToken, ?LBRKT_INDENT(State), enc_SignalsDescriptor(SD, ?INC_INDENT(State)), ?RBRKT_INDENT(State) ];enc_embedWithSig({#'SecondEventsDescriptor'{requestID = RID, eventList = Evs}, SD}, State) -> [ ?EmbedToken, ?LBRKT_INDENT(State), enc_SignalsDescriptor(SD, ?INC_INDENT(State)), ?COMMA_INDENT(?INC_INDENT(State)), enc_embedFirst(RID, Evs, ?INC_INDENT(State)), ?RBRKT_INDENT(State) ].enc_keepActive(Val, _State) -> case Val of true -> [?KeepActiveToken]; false -> [] end. enc_EventDM({'EventDM',Val}, State) -> enc_EventDM(Val, State);enc_EventDM({Tag, Val}, State) -> case Tag of digitMapName -> [ ?DigitMapToken, ?EQUAL, enc_DigitMapName(Val, State) ]; digitMapValue -> [ ?DigitMapToken, ?LBRKT_INDENT(State), enc_DigitMapValue(Val, ?INC_INDENT(State)), ?RBRKT_INDENT(State) ]; _ -> error({invalid_EventDM_tag, Tag}) end.enc_embedFirst(RID, Evs, State) when RID /= asn1_NOVALUE, list(Evs), Evs /= [] -> %% d("enc_embedFirst -> entry with" %% "~n RID: ~p" %% "~n Evs: ~p", [RID, Evs]), [ ?EventsToken, ?EQUAL, enc_RequestID(RID, State), ?LBRKT_INDENT(State), enc_list([{Evs, fun enc_SecondRequestedEvent/2}], ?INC_INDENT(State)), ?RBRKT_INDENT(State) ];enc_embedFirst(_RID, _Evs, State) -> %% d("enc_embedFirst -> entry"), [ ?EventsToken ].enc_SecondRequestedEvent(#'SecondRequestedEvent'{pkgdName = N, streamID = SID, evParList = EPL, eventAction = EA}, State) -> PkgdName = ?META_ENC(event, N), [ enc_PkgdName(PkgdName, State), enc_opt_brackets( enc_list( [{[SID], fun enc_eventStream/2}, {EPL, fun enc_eventOther/2} | decompose_secondRequestedActions(EA)], ?INC_INDENT(State)), State) ].decompose_secondRequestedActions(asn1_NOVALUE) -> [];decompose_secondRequestedActions(Val) when record(Val, 'SecondRequestedActions') -> [ {[Val#'SecondRequestedActions'.keepActive], fun enc_keepActive/2}, {[Val#'SecondRequestedActions'.eventDM], fun enc_EventDM/2}, {[Val#'SecondRequestedActions'.signalsDescriptor], fun enc_embeddedSignalsDescriptor/2} ].enc_embeddedSignalsDescriptor(Val, State) -> [ ?EmbedToken, ?LBRKT_INDENT(State), enc_SignalsDescriptor(Val, ?INC_INDENT(State)), ?RBRKT_INDENT(State) ]. enc_EventBufferDescriptor({'EventBufferDescriptor',Val}, State) -> enc_EventBufferDescriptor(Val, State);enc_EventBufferDescriptor([Mand | Opt], State) -> [ ?EventBufferToken, ?LBRKT_INDENT(State), enc_eventSpecs([Mand | Opt], ?INC_INDENT(State)), ?RBRKT_INDENT(State) ].enc_eventSpecs([Mand | Opt], State) -> [enc_eventSpecs(Mand, State), [[?COMMA_INDENT(State), enc_eventSpec(Val, State)] || Val <- Opt]].enc_eventSpec(Val, State) when record(Val, 'EventSpec') -> [ enc_EventName(Val#'EventSpec'.eventName, State), enc_opt_brackets( enc_list([{[Val#'EventSpec'.streamID], fun enc_eventStream/2}, {Val#'EventSpec'.eventParList, fun enc_eventOther/2}], ?INC_INDENT(State)), State) ].enc_SignalsDescriptor({'SignalsDescriptor',Val}, State) -> enc_SignalsDescriptor(Val, State);enc_SignalsDescriptor([], _State) -> [ ?SignalsToken ];enc_SignalsDescriptor(List, State) when list(List) -> [ ?SignalsToken, ?LBRKT_INDENT(State), enc_list([{List, fun enc_SignalRequest/2}], ?INC_INDENT(State)), ?RBRKT_INDENT(State) ].enc_SignalRequest({'SignalRequest',Val}, State) -> enc_SignalRequest(Val, State);enc_SignalRequest({Tag, Val}, State) -> case Tag of signal -> enc_Signal(Val, State); seqSigList -> enc_SeqSigList(Val, State); _ -> error({invalid_SignalRequest_tag, Tag}) end.enc_SeqSigList(Val, State) when record(Val, 'SeqSigList') -> [ ?SignalListToken, ?EQUAL, enc_UINT16(Val#'SeqSigList'.id, State), ?LBRKT_INDENT(State), enc_list([{Val#'SeqSigList'.signalList, fun enc_Signal/2}], ?INC_INDENT(State)), ?RBRKT_INDENT(State) ].enc_Signal(Val, State) when record(Val, 'Signal') -> [ enc_SignalName(Val#'Signal'.signalName, State), enc_opt_brackets( enc_list([{[Val#'Signal'.streamID], fun enc_sigStream/2}, {[Val#'Signal'.sigType], fun enc_sigSignalType/2}, {[Val#'Signal'.duration], fun enc_sigDuration/2}, {[Val#'Signal'.notifyCompletion], fun enc_notifyCompletion/2}, {[Val#'Signal'.keepActive], fun enc_keepActive/2}, {Val#'Signal'.sigParList, fun enc_sigOther/2}, {[Val#'Signal'.direction], fun enc_SignalDirection/2}, {[Val#'Signal'.requestID], fun enc_sigRequestID/2}], ?INC_INDENT(State)), State) ].enc_sigStream(Val, State) -> [ ?StreamToken, ?EQUAL, enc_StreamID(Val, State) ].enc_sigSignalType(Val, State) -> [ ?SignalTypeToken, ?EQUAL, enc_SignalType(Val, State) ].enc_sigDuration(Val, State) -> [ ?DurationToken, ?EQUAL, enc_UINT16(Val, State) ].enc_notifyCompletion(List, State) when list(List) -> [ ?NotifyCompletionToken, ?EQUAL, ?LBRKT_INDENT(State), enc_list([{List, fun enc_notifyCompletionItem/2}], ?INC_INDENT(State)), ?RBRKT_INDENT(State) ].enc_notifyCompletionItem(Val, _State) -> case Val of onTimeOut -> ?TimeOutToken; onInterruptByEvent -> ?InterruptByEventToken; onInterruptByNewSignalDescr -> ?InterruptByNewSignalsDescrToken; otherReason -> ?OtherReasonToken end.enc_SignalType({'SignalType',Val}, State) -> enc_SignalType(Val, State);enc_SignalType(Val, _State) -> case Val of brief -> ?BriefToken; onOff -> ?OnOffToken; timeOut -> ?TimeOutToken end.enc_SignalName({'SignalName',Val}, State)-> enc_SignalName(Val, State);enc_SignalName(Val, State) -> PkgdName = ?META_ENC(signal, Val), enc_PkgdName(PkgdNam
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -