⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 megaco_binary_transformer_v1.erl

📁 OTP是开放电信平台的简称
💻 ERL
📖 第 1 页 / 共 4 页
字号:
tr_opt_NotifyCompletion(asn1_NOVALUE, _State) ->    asn1_NOVALUE;tr_opt_NotifyCompletion(Items, State) when list(Items) ->    [tr_notifyCompletionItem(I, State) || I <- Items].tr_notifyCompletionItem(Item, _State) ->    case Item of        onTimeOut                   -> onTimeOut;        onInterruptByEvent          -> onInterruptByEvent;        onInterruptByNewSignalDescr -> onInterruptByNewSignalDescr;        otherReason                 -> otherReason    end.tr_opt_SignalType(Type, _State) ->    case Type of        asn1_NOVALUE -> asn1_NOVALUE;        brief        ->   brief;        onOff        ->   onOff;        timeOut      -> timeOut    end.tr_SignalName(Name, State) ->    Constraint = fun(Item) -> tr_PkgdName(Item, State) end,    resolve(signal, Name, State, Constraint).tr_SigParameter(#'SigParameter'{sigParameterName = ParName,                                value            = Value,                                extraInfo        = Extra},                SigName,                State) ->    Constraint = fun(Item) -> tr_Name(Item, State) end,    N = resolve({signal_parameter, SigName}, ParName, State, Constraint),    #'SigParameter'{sigParameterName = N,                    value            = tr_Value(Value, State),                    extraInfo        = tr_opt_extraInfo(Extra, State)}.tr_opt_RequestID(asn1_NOVALUE, _State) ->    asn1_NOVALUE;tr_opt_RequestID(Id, State) ->    tr_RequestID(Id, State).tr_RequestID(Id, _State) when Id == ?megaco_all_request_id ->    ?megaco_all_request_id;tr_RequestID(Id, State) ->    tr_UINT32(Id, State).tr_ModemDescriptor(#'ModemDescriptor'{mtl = Types,                                      mpl = Props},                   State) when list(Types), list(Props) ->     %% BUGBUG: Does not handle extensionParameter    #'ModemDescriptor'{mtl = [tr_ModemType(T, State) || T <- Types],                       mpl = [tr_PropertyParm(P, State) || P <- Props]}.tr_ModemType(Type, _State) ->    %% BUGBUG: Does not handle extensionParameter    case Type of        v18       -> v18;        v22       -> v22;        v22bis    -> v22bis;        v32       -> v32;        v32bis    -> v32bis;        v34       -> v34;        v90       -> v90;        v91       -> v91;        synchISDN -> synchISDN    end.tr_DigitMapDescriptor(#'DigitMapDescriptor'{digitMapName  = Name,                                            digitMapValue = Value},                      State) ->    #'DigitMapDescriptor'{digitMapName  = tr_opt_DigitMapName(Name, State),                          digitMapValue = tr_opt_DigitMapValue(Value, State)}.tr_opt_DigitMapName(asn1_NOVALUE, _State) ->    asn1_NOVALUE;tr_opt_DigitMapName(Name, State) ->    tr_DigitMapName(Name, State).tr_DigitMapName(Name, State) ->    Constraint = fun(Item) -> tr_Name(Item, State) end,    resolve(dialplan, Name, State, Constraint).tr_opt_DigitMapValue(asn1_NOVALUE, _State) ->    asn1_NOVALUE;tr_opt_DigitMapValue(Value, State) ->    tr_DigitMapValue(Value, State).tr_DigitMapValue(#'DigitMapValue'{digitMapBody = Body,                                  startTimer   = Start,                                  shortTimer   = Short,                                  longTimer    = Long},                 State) ->    #'DigitMapValue'{startTimer   = tr_opt_timer(Start, State),                     shortTimer   = tr_opt_timer(Short, State),                     longTimer    = tr_opt_timer(Long, State),                     digitMapBody = tr_STRING(Body, State)}. %% BUGBUG: digitMapBody not handled at alltr_opt_timer(asn1_NOVALUE, _State) ->    asn1_NOVALUE;tr_opt_timer(Timer, State) ->    tr_DIGIT(Timer, State, 0, 99).tr_ServiceChangeParm(#'ServiceChangeParm'{serviceChangeMethod  = Method,                                           serviceChangeAddress = Addr,                                           serviceChangeVersion = Version,                                           serviceChangeProfile = Profile,                                           serviceChangeReason  = Reason,                                           serviceChangeDelay   = Delay,                                           serviceChangeMgcId   = MgcId,                                           timeStamp            = Time},                     State) ->    #'ServiceChangeParm'{serviceChangeMethod  = tr_ServiceChangeMethod(Method, State),                         serviceChangeAddress = tr_opt_ServiceChangeAddress(Addr, State),                         serviceChangeVersion = tr_opt_serviceChangeVersion(Version, State),                         serviceChangeProfile = tr_opt_ServiceChangeProfile(Profile, State),                         serviceChangeReason  = tr_serviceChangeReason(Reason, State),                         serviceChangeDelay   = tr_opt_serviceChangeDelay(Delay, State),                         serviceChangeMgcId   = tr_opt_serviceChangeMgcId(MgcId, State),                         timeStamp            = tr_opt_TimeNotation(Time, State)}.tr_ServiceChangeMethod(Method, _State) ->    case Method of        failover      -> failover;        forced        -> forced;        graceful      -> graceful;        restart       -> restart;        disconnected  -> disconnected;        handOff       -> handOff    end. %% BUGBUG: extensiontr_opt_ServiceChangeAddress(asn1_NOVALUE, _State) ->    asn1_NOVALUE;tr_opt_ServiceChangeAddress({Tag, Val}, State) ->    Val2 =         case Tag of            portNumber -> tr_portNumber(Val, State);            ip4Address -> tr_IP4Address(Val, State);            ip6Address -> tr_IP6Address(Val, State);            domainName -> tr_DomainName(Val, State);            deviceName -> tr_PathName(Val, State);            mtpAddress -> tr_mtpAddress(Val, State)        end,    {Tag, Val2}.tr_opt_serviceChangeVersion(asn1_NOVALUE, _State) ->    asn1_NOVALUE;tr_opt_serviceChangeVersion(Version, State) ->    tr_version(Version, State).tr_opt_ServiceChangeProfile(asn1_NOVALUE, _State) ->    asn1_NOVALUE;%% Decodetr_opt_ServiceChangeProfile({'ServiceChangeProfile', ProfileName}, State) ->    case string:tokens(ProfileName, "/") of        [Name0, Version0] ->	    Name    = tr_STRING(Name0, State, 1, 64),	    Version = tr_version(list_to_integer(Version0), State),	    #'ServiceChangeProfile'{profileName = Name, 				    version     = Version}    end;%% Encodetr_opt_ServiceChangeProfile(#'ServiceChangeProfile'{profileName = Name0, 						    version     = Version0},			    State) ->    Name        = tr_STRING(Name0, State, 1, 64),    Version     = tr_version(Version0, State),    ProfileName = lists:flatten(io_lib:format("~s/~w", [Name, Version])),    {'ServiceChangeProfile', ProfileName}.tr_serviceChangeReason([_] = Reason, State) ->    tr_Value(Reason, State).tr_opt_serviceChangeDelay(asn1_NOVALUE, _State) ->    asn1_NOVALUE;tr_opt_serviceChangeDelay(Delay, State) ->    tr_UINT32(Delay, State).tr_opt_serviceChangeMgcId(asn1_NOVALUE, _State) ->    asn1_NOVALUE;tr_opt_serviceChangeMgcId(MgcId, State) ->    tr_MId(MgcId, State).tr_opt_portNumber(asn1_NOVALUE, _State) ->    asn1_NOVALUE;tr_opt_portNumber(Port, State) ->    tr_portNumber(Port, State).tr_portNumber(Port, State) when integer(Port), Port >= 0 ->    tr_UINT16(Port, State).tr_ServiceChangeResParm(#'ServiceChangeResParm'{serviceChangeMgcId   = MgcId,                                                 serviceChangeAddress = Addr,                                                 serviceChangeVersion = Version,                                                 serviceChangeProfile = Profile,						timeStamp            = Time},                         State) ->    #'ServiceChangeResParm'{serviceChangeMgcId   = tr_opt_serviceChangeMgcId(MgcId, State),                            serviceChangeAddress = tr_opt_ServiceChangeAddress(Addr, State),                            serviceChangeVersion = tr_opt_serviceChangeVersion(Version, State),                            serviceChangeProfile = tr_opt_ServiceChangeProfile(Profile, State),			    timeStamp            = tr_opt_TimeNotation(Time, State)}.tr_PackagesDescriptor(Items, State) when list(Items) ->    [tr_PackagesItem(I, State) || I <- Items].tr_PackagesItem(#'PackagesItem'{packageName    = Name,                                packageVersion = Version},                State) ->    Constraint = fun(Item) -> tr_Name(Item, State) end,    #'PackagesItem'{packageName    = resolve(package, Name, State, Constraint),                    packageVersion = tr_UINT16(Version, State)}.tr_StatisticsDescriptor(Parms, State) when list(Parms) ->    [tr_StatisticsParameter(P, State) || P <- Parms].tr_StatisticsParameter(#'StatisticsParameter'{statName  = Name,                                              statValue = Value},                       State) ->    Constraint = fun(Item) -> tr_PkgdName(Item, State) end,    #'StatisticsParameter'{statName  = resolve(statistics, Name, State, Constraint),                           statValue = tr_opt_Value(Value, State)}.tr_opt_TimeNotation(asn1_NOVALUE, _State) ->    asn1_NOVALUE;tr_opt_TimeNotation(#'TimeNotation'{date = Date,                                    time = Time},                    State) ->    #'TimeNotation'{date = tr_STRING(Date, State, 8, 8), % "yyyymmdd"                    time = tr_STRING(Time, State, 8, 8)}.% "hhmmssss"%% BUGBUG: Does not verify that string must contain at least one char%% BUGBUG: This violation of the is required in order to comply with%% BUGBUG: the dd/ce ds parameter that may possibly be empty.tr_opt_Value(asn1_NOVALUE, _State) ->    asn1_NOVALUE;tr_opt_Value(Value, State) ->    tr_Value(Value, State).tr_Value(Strings, _State) when list(Strings) ->    [[Char || Char <- String] || String <- Strings].%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Encode an octet string, escape } by \ if necessary tr_OCTET_STRING(String, _State, Min, Max) when list(String) ->    verify_count(length(String), Min, Max),    String.tr_QUOTED_STRING(String, _State) when list(String) ->    verify_count(length(String), 1, infinity),    String.%% The internal format of hex digits is a list of octets%% Min and Max means #hexDigits%% Leading zeros are prepended in order to fulfill Mintr_HEXDIG(Octets, _State, Min, Max) when list(Octets) ->    verify_count(length(Octets), Min, Max),    Octets.tr_DIGIT(Val, State, Min, Max) ->    tr_integer(Val, State, Min, Max).tr_STRING(String, _State) when list(String) ->    String.tr_STRING(String, _State, Min, Max) when list(String) ->    verify_count(length(String), Min, Max),    String.tr_UINT16(Val, State) ->    tr_integer(Val, State, 0, 65535).tr_UINT32(Val, State) ->    tr_integer(Val, State, 0, 4294967295).tr_integer(Int, _State, Min, Max) ->    verify_count(Int, Min, Max),    Int.%% Verify that Count is within the range of Min and Maxverify_count(Count, Min, Max) ->    if        integer(Count) ->            if                integer(Min), Count >= Min ->                    if                        integer(Max), Count =< Max ->                            Count;                        Max == infinity ->                            Count;                        true ->                            ?error({count_too_large, Count, Max})                    end;                true ->                    ?error({count_too_small, Count, Min})            end;        true ->            ?error({count_not_an_integer, Count})    end.% i(F,A) ->%     %% i(true,F,A).%     i(get(dbg),F,A).% i(true,F,A) ->%     S1 = io_lib:format("TRANSF-v1: " ++ F ++ "~n",A),%     S2 = lists:flatten(S1),%     io:format("~s",[S2]);% i(_,_F,_A) ->%     ok.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -