📄 megaco_binary_transformer_prev3c.erl
字号:
contextList = CtxList2}.tr_opt_ContextAttrAuditRequest(asn1_NOVALUE, _State) -> asn1_NOVALUE;tr_opt_ContextAttrAuditRequest(CAAR, State) -> tr_ContextAttrAuditRequest(CAAR, State).tr_ContextAttrAuditRequest(#'ContextAttrAuditRequest'{topology = Top, emergency = Em, priority = Prio, iepscallind = Ind, contextPropAud = Props, selectpriority = SPrio, selectemergency = SEm, selectiepscallind = SInd, selectLogic = SLog}, State) -> Top2 = tr_opt_null(Top, State), Em2 = tr_opt_null(Em, State), Prio2 = tr_opt_null(Prio, State), Ind2 = tr_opt_null(Ind, State), Props2 = case Props of asn1_NOVALUE -> asn1_NOVALUE; _ -> [tr_indAudPropertyParm(Prop, State) || Prop <- Props] end, SPrio2 = case SPrio of asn1_NOVALUE -> asn1_NOVALUE; _ -> tr_integer(SPrio, State, 0, 15) end, SEm2 = case SEm of asn1_NOVALUE -> asn1_NOVALUE; false -> false; true -> true end, SInd2 = case SInd of asn1_NOVALUE -> asn1_NOVALUE; false -> false; true -> true end, SLog2 = case SLog of asn1_NOVALUE -> asn1_NOVALUE; _ -> tr_SelectLogic(SLog, State) end, #'ContextAttrAuditRequest'{topology = Top2, emergency = Em2, priority = Prio2, iepscallind = Ind2, contextPropAud = Props2, selectpriority = SPrio2, selectemergency = SEm2, selectiepscallind = SInd2, selectLogic = SLog2}.tr_SelectLogic({andAUDITSelect, 'NULL'} = Val, _State) -> Val;tr_SelectLogic({orAUDITSelect, 'NULL'} = Val, _State) -> Val. tr_CommandRequest(#'CommandRequest'{command = Cmd, optional = Opt, wildcardReturn = Wild}, State) -> #'CommandRequest'{optional = tr_opt_null(Opt, State), wildcardReturn = tr_opt_null(Wild, State), command = tr_Command(Cmd, State)}.tr_Command({Tag, Val}, State) -> Val2 = case Tag of addReq -> tr_AmmRequest(Val, State); moveReq -> tr_AmmRequest(Val, State); modReq -> tr_AmmRequest(Val, State); subtractReq -> tr_SubtractRequest(Val, State); auditCapRequest -> tr_AuditRequest(Val, State); auditValueRequest -> tr_AuditRequest(Val, State); notifyReq -> tr_NotifyRequest(Val, State); serviceChangeReq -> tr_ServiceChangeRequest(Val, State) end, {Tag, Val2}.tr_CommandReply({Tag, Val}, State) -> Val2 = case Tag of addReply -> tr_AmmsReply(Val, State); moveReply -> tr_AmmsReply(Val, State); modReply -> tr_AmmsReply(Val, State); subtractReply -> tr_AmmsReply(Val, State); auditCapReply -> tr_AuditReply(Val, State); auditValueReply -> tr_AuditReply(Val, State); notifyReply -> tr_NotifyReply(Val, State); serviceChangeReply -> tr_ServiceChangeReply(Val, State) end, {Tag, Val2}.tr_TopologyRequest(#'TopologyRequest'{terminationFrom = From, terminationTo = To, topologyDirection = Dir, streamID = SID, topologyDirectionExtension = TDE}, State) -> Dir2 = case Dir of bothway -> bothway; isolate -> isolate; oneway -> oneway end, TDE2 = case TDE of onewayexternal -> onewayexternal; onewayboth -> onewayboth; asn1_NOVALUE -> asn1_NOVALUE end, #'TopologyRequest'{terminationFrom = tr_TerminationID(From, State), terminationTo = tr_TerminationID(To, State), topologyDirection = Dir2, streamID = tr_opt_StreamID(SID, State), topologyDirectionExtension = TDE2}.tr_AmmRequest(#'AmmRequest'{terminationID = IdList, descriptors = DescList}, State) -> #'AmmRequest'{terminationID = [tr_TerminationID(Id, State) || Id <- IdList], descriptors = tr_ammDescriptors(DescList, [], State)}.tr_ammDescriptors([], Acc, _State) -> lists:reverse(Acc);tr_ammDescriptors([Desc|Descs], Acc, State) -> case tr_ammDescriptor(Desc, State) of {_, deprecated} when State#state.mode == encode -> error({deprecated, Desc}); {_, deprecated} when State#state.mode == decode -> %% SKIP tr_ammDescriptors(Descs, Acc, State); {_, deprecated} -> %% SKIP tr_ammDescriptors(Descs, Acc, State); NewDesc -> tr_ammDescriptors(Descs, [NewDesc|Acc], State) end.tr_ammDescriptor({Tag, Desc}, State) -> Desc2 = case Tag of mediaDescriptor -> tr_MediaDescriptor(Desc, State); modemDescriptor -> tr_ModemDescriptor(Desc, State); muxDescriptor -> tr_MuxDescriptor(Desc, State); eventsDescriptor -> tr_EventsDescriptor(Desc, State); eventBufferDescriptor -> tr_EventBufferDescriptor(Desc, State); signalsDescriptor -> tr_SignalsDescriptor(Desc, State); digitMapDescriptor -> tr_DigitMapDescriptor(Desc, State); auditDescriptor -> tr_AuditDescriptor(Desc, State); statisticsDescriptor -> tr_StatisticsDescriptor(Desc, State) end, {Tag, Desc2}.tr_AmmsReply(#'AmmsReply'{terminationID = IdList, terminationAudit = TermAudit}, State) -> TermAudit2 = case TermAudit of asn1_NOVALUE -> asn1_NOVALUE; _ -> tr_TerminationAudit(TermAudit, State) end, #'AmmsReply'{terminationID = [tr_TerminationID(Id, State) || Id <- IdList], terminationAudit = TermAudit2}.tr_SubtractRequest(#'SubtractRequest'{terminationID = IdList, auditDescriptor = Desc}, State) -> #'SubtractRequest'{terminationID = [tr_TerminationID(Id, State) || Id <- IdList], auditDescriptor = tr_opt_AuditDescriptor(Desc, State)}.tr_AuditRequest(#'AuditRequest'{terminationID = Id, auditDescriptor = Desc, terminationIDList = TIDList}, State) -> TIDList2 = case TIDList of asn1_NOVALUE -> asn1_NOVALUE; _ -> [tr_TerminationID(TID, State) || TID <- TIDList] end, #'AuditRequest'{terminationID = tr_TerminationID(Id, State), auditDescriptor = tr_AuditDescriptor(Desc, State), terminationIDList = TIDList2}.%% auditReply = (AuditValueToken / AuditCapToken ) %% ( contextTerminationAudit / auditOther)%% auditOther = EQUAL TerminationID LBRKT %% terminationAudit RBRKT%% terminationAudit = auditReturnParameter *(COMMA auditReturnParameter) %% %% contextTerminationAudit = EQUAL CtxToken ( terminationIDList / %% LBRKT errorDescriptor RBRKT )tr_AuditReply({Tag, Val}, State) -> Val2 = case Tag of contextAuditResult -> [tr_TerminationID(Id, State) || Id <- Val]; error -> tr_ErrorDescriptor(Val, State); auditResult -> tr_AuditResult(Val, State); auditResultTermList -> tr_TermListAuditResult(Val, State) end, {Tag, Val2}.tr_AuditResult(#'AuditResult'{terminationID = Id, terminationAuditResult = AuditRes}, State) -> #'AuditResult'{terminationID = tr_TerminationID(Id, State), terminationAuditResult = tr_TerminationAudit(AuditRes, State)}.tr_TermListAuditResult( #'TermListAuditResult'{terminationIDList = TIDList, terminationAuditResult = TAR}, State) -> TIDList2 = [tr_TerminationID(TID, State) || TID <- TIDList], TAR2 = tr_TerminationAudit(TAR, State), #'TermListAuditResult'{terminationIDList = TIDList2, terminationAuditResult = TAR2}.tr_opt_AuditDescriptor(asn1_NOVALUE, _State) -> asn1_NOVALUE;tr_opt_AuditDescriptor(Desc, State) -> tr_AuditDescriptor(Desc, State).%% BUGBUG BUGBUG BUGBUG %% With this construction it is possible to have both auditToken%% and auditPropertyToken, but it is actually valid?tr_AuditDescriptor(#'AuditDescriptor'{auditToken = Tokens, auditPropertyToken = APTs}, State) -> Tokens2 = case Tokens of asn1_NOVALUE -> asn1_NOVALUE; _ -> [tr_auditItem(Token, State) || Token <- Tokens] end, %% v2 APTs2 = case APTs of asn1_NOVALUE -> asn1_NOVALUE; _ -> [tr_indAuditParameter(APT, State) || APT <- APTs] end, #'AuditDescriptor'{auditToken = Tokens2, auditPropertyToken = APTs2}. tr_auditItem(Token, _State) -> case Token of muxToken -> muxToken; modemToken -> modemToken; mediaToken -> mediaToken; eventsToken -> eventsToken; signalsToken -> signalsToken; digitMapToken -> digitMapToken; statsToken -> statsToken; observedEventsToken -> observedEventsToken; packagesToken -> packagesToken; eventBufferToken -> eventBufferToken end.%% --- v2 begin ---tr_indAuditParameter({Tag, Val}, State) -> Val2 = case Tag of indAudMediaDescriptor -> tr_indAudMediaDescriptor(Val, State); indAudEventsDescriptor -> tr_indAudEventsDescriptor(Val, State); indAudSignalsDescriptor -> tr_indAudSignalsDescriptor(Val, State); indAudDigitMapDescriptor -> tr_indAudDigitMapDescriptor(Val, State); indAudEventBufferDescriptor -> tr_indAudEventBufferDescriptor(Val, State); indAudStatisticsDescriptor -> tr_indAudStatisticsDescriptor(Val, State); indAudPackagesDescriptor -> tr_indAudPackagesDescriptor(Val, State) end, {Tag, Val2}.%% -tr_indAudMediaDescriptor(#'IndAudMediaDescriptor'{termStateDescr = TSD, streams = S}, State) -> TSD2 = case TSD of asn1_NOVALUE -> asn1_NOVALUE; _ -> tr_indAudTerminationStateDescriptor(TSD, State) end, S2 = case S of asn1_NOVALUE -> asn1_NOVALUE; {oneStream, OS} -> {oneStream, tr_indAudStreamParms(OS, State)}; {multiStream, MS} -> MS2 = [tr_indAudStreamDescriptor(MS1, State) || MS1 <- MS], {multiStream, MS2} end, #'IndAudMediaDescriptor'{termStateDescr = TSD2, streams = S2}.tr_indAudTerminationStateDescriptor(Val, State) when record(Val, 'IndAudTerminationStateDescriptor') -> #'IndAudTerminationStateDescriptor'{propertyParms = Parms, eventBufferControl = EBC, serviceState = SS, serviceStateSel = SSS} = Val, Parms2 = [tr_indAudPropertyParm(Parm, State) || Parm <- Parms], EBC2 = tr_opt_null(EBC, State), SS2 = tr_opt_null(SS, State), SSS2 = tr_opt_ServiceState(SSS, State), #'IndAudTerminationStateDescriptor'{propertyParms = Parms2, eventBufferControl = EBC2, serviceState = SS2, serviceStateSel = SSS2}. tr_indAudStreamParms(#'IndAudStreamParms'{localControlDescriptor = LCD, localDescriptor = LD, remoteDescriptor = RD, statisticsDescriptor = SD}, State) ->
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -