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

📄 megaco_binary_name_resolver_v1.erl

📁 OTP是开放电信平台的简称
💻 ERL
📖 第 1 页 / 共 4 页
字号:
    decode_item({Scope, Item}, [A, B], SubItem).decode_item(Scope, [A, B], Item) ->    ?d("decode_item -> entry",[]),    case A of        16#00 ->             case B of                16#01 -> decode_g(Scope, Item);                16#02 -> decode_root(Scope, Item);                16#03 -> decode_tonegen(Scope, Item);                16#04 -> decode_tonedet(Scope, Item);                16#05 -> decode_dg(Scope, Item);                16#06 -> decode_dd(Scope, Item);                16#07 -> decode_cg(Scope, Item);                16#08 -> decode_cd(Scope, Item);                16#09 -> decode_al(Scope, Item);                16#0a -> decode_ct(Scope, Item);                16#0b -> decode_nt(Scope, Item);                16#0c -> decode_rtp(Scope, Item);                16#0d -> decode_tdmc(Scope, Item);                16#00 -> decode_native(Scope, Item)            end;        16#fe ->            case B of                %% Proprietary extension                16#fe -> decode_swb(Scope, Item)            end;        16#ff ->            case B of                16#ff when Item == [16#ff, 16#ff] -> "*"            end    end.decode_package(Package) ->    ?d("decode_package -> entry with"       "~n   Package: ~p", [Package]),    [A, B] = Package,    case A of        16#00 ->             case B of                16#01 -> "g";                16#02 -> "root";                16#03 -> "tonegen";                16#04 -> "tonedet";                16#05 -> "dg";                16#06 -> "dd";                16#07 -> "cg";                16#08 -> "cd";                16#09 -> "al";                16#0a -> "ct";                16#0b -> "nt";                16#0c -> "rtp";                16#0d -> "tdmc";                16#00 -> ""            end;        16#fe ->            case B of                16#fe ->  "swb"            end;        16#ff ->            case B of                16#ff -> "*"            end    end.decode_profile([A, B]) ->    case A of        16#00 ->             case B of                16#fe -> "resgw";		_     -> "profile" ++ [A + $0, B + $0]            end;	_ ->	    "profile" ++ [A + $0, B + $0]    end.decode_dialplan([A, B]) ->    "dialplan" ++ [A + $0, B + $0].decode_mid(Mid) ->    case Mid of	{domainName, DN} ->	    Lower = to_lower(DN#'DomainName'.name),	    	    {domainName, DN#'DomainName'{name = Lower}};	{deviceName, PathName} ->	    Lower = to_lower(PathName),	    {deviceName, Lower};	Other ->	    Other    end.to_lower(Chars) ->    [?LOWER(Char) || Char <- Chars].%%----------------------------------------------------------------------%% Encode package name from internal form%% Scope  ::= property | event | signal | statistics%%----------------------------------------------------------------------encode(mid, Package) ->    encode_mid(Package);encode(package, Package) ->    encode_package(Package);encode(profile, Profile) ->    encode_profile(Profile);encode(dialplan, Dialplan) ->    encode_dialplan(Dialplan);encode(Scope, PackageItem) when atom(Scope) ->    ?d("encode(~p) -> entry with"       "~n   PackageItem: ~p", [Scope, PackageItem]),    case string:tokens(PackageItem, [$/]) of	[Package, Item] ->	    ?d("encode -> "	       "~n   Package: ~p"	       "~n   Item:    ~p", [Package, Item]),	    encode_package(Package) ++ encode_item(Scope, Package, Item);	[Item] ->	    ?d("encode -> Item: ~p", [Item]),	    [16#00, 16#00 | encode_native(Scope, Item)]    end;encode({Scope, PackageItem}, SubItem) when atom(Scope) ->    ?d("encode(~p) -> entry with"       "~n   PackageItem: ~p"       "~n   SubItem:     ~p", [Scope, PackageItem, SubItem]),    case string:tokens(PackageItem, [$/]) of	[Package, Item] ->	    ?d("encode -> "	       "~n   Package: ~p"	       "~n   Item:    ~p", [Package, Item]),	    encode_item({Scope, Item}, Package, SubItem);	[_Item] ->	    ?d("encode -> _Item: ~p", [_Item]),	    encode_native(Scope, SubItem)    end.encode_item(_Scope, _Package, "*") ->    [16#ff, 16#ff];encode_item(Scope, Package, Item) ->    ?d("encode_item(~s) -> entry", [Package]),    case Package of        "g"       -> encode_g(Scope, Item);        "root"    -> encode_root(Scope, Item);        "tonegen" -> encode_tonegen(Scope, Item);        "tonedet" -> encode_tonedet(Scope, Item);        "dg"      -> encode_dg(Scope, Item);        "dd"      -> encode_dd(Scope, Item);        "cg"      -> encode_cg(Scope, Item);        "cd"      -> encode_cd(Scope, Item);        "al"      -> encode_al(Scope, Item);        "ct"      -> encode_ct(Scope, Item);        "nt"      -> encode_nt(Scope, Item);        "rtp"     -> encode_rtp(Scope, Item);        "tdmc"    -> encode_tdmc(Scope, Item);        "swb"     -> encode_swb(Scope, Item)    end.encode_package(Package) ->    case Package of        "g"       -> [16#00, 16#01];        "root"    -> [16#00, 16#02];        "tonegen" -> [16#00, 16#03];        "tonedet" -> [16#00, 16#04];        "dg"      -> [16#00, 16#05];        "dd"      -> [16#00, 16#06];        "cg"      -> [16#00, 16#07];        "cd"      -> [16#00, 16#08];        "al"      -> [16#00, 16#09];        "ct"      -> [16#00, 16#0a];        "nt"      -> [16#00, 16#0b];        "rtp"     -> [16#00, 16#0c];        "tdmc"    -> [16#00, 16#0d];        ""        -> [16#00, 16#00];	"*"       -> [16#ff, 16#ff];        "swb"     -> [16#fe, 16#fe]    end.encode_profile(Profile) ->    case Profile of        "resgw" ->	    [16#00, 16#fe];	[$p, $r, $o, $f, $i, $l, $e | Name] ->	    case Name of		[A, B] -> [A - $0, B - $0];		[B]    -> [0, B - $0];		[]     -> [0, 0]	    end    end.encode_dialplan(Dialplan) ->    case Dialplan of	[$d, $i, $a, $l, $p, $l, $a, $n | Name] ->	    case Name of		[A, B] -> [A - $0, B - $0];		[B]    -> [0, B - $0];		[]     -> [0, 0]	    end    end.encode_mid(Mid) ->    Mid.%%----------------------------------------------------------------------%% Name:    g - Generic%% Version: 1%% Extends: None%% Purpose: Generic package for commonly encountered items%%----------------------------------------------------------------------capabilities_g() ->    [     {event, "cause"},     {event, "sc"}    ].encode_g(event, Item) ->    case Item of	"cause"  -> [16#00, 16#01];	"sc"     -> [16#00, 16#02]    end;encode_g({event_parameter, Item}, SubItem) ->    case Item of	"cause"  -> 	    case SubItem of		"Generalcause" -> [16#00, 16#01];		"Failurecause" -> [16#00, 16#02]	    end;	"sc" ->	    case SubItem of		"SigID" -> [16#00, 16#01];		"Meth"  -> [16#00, 16#02];		"SLID"  -> [16#00, 16#03]	    end    end.decode_g(event, Item) ->    case Item of	[16#00, 16#01] -> "cause";	[16#00, 16#02] -> "sc"    end;decode_g({event_parameter, Item}, SubItem) ->    case Item of        [16#00, 16#01] -> % Event: cause            case SubItem of                [16#00, 16#01] -> "Generalcause";		[16#00, 16#02] -> "Failurecause"            end;        [16#00, 16#02] -> % Event: sc            case SubItem of                [16#00, 16#01] -> "SigID";                [16#00, 16#02] -> "Meth";		[16#00, 16#03] -> "SLID"            end    end.%%----------------------------------------------------------------------%% Name:    root - Base Root Package%% Version: 1%% Extends: None%% Purpose: This package defines Gateway wide properties.%%----------------------------------------------------------------------capabilities_root() ->    [     {property, "maxNumberOfContexts"},     {property, "maxTerminationsPerContext"},     {property, "normalMGExecutionTime"},     {property, "normalMGCExecutionTime"},     {property, "MGProvisionalResponseTimerValue"},     {property, "MGCProvisionalResponseTimerValue"}    ].encode_root(Scope, Item) ->    case Scope of        property ->            case Item of                "maxNumberOfContexts"              -> [16#00, 16#01];                "maxTerminationsPerContext"        -> [16#00, 16#02];                "normalMGExecutionTime"            -> [16#00, 16#03];                "normalMGCExecutionTime"           -> [16#00, 16#04];                "MGProvisionalResponseTimerValue"  -> [16#00, 16#05];                "MGCProvisionalResponseTimerValue" -> [16#00, 16#06]            end    end.decode_root(Scope, Item) ->    case Scope of        property ->            case Item of                [16#00, 16#01] -> "maxNumberOfContexts";                [16#00, 16#02] -> "maxTerminationsPerContext";                [16#00, 16#03] -> "normalMGExecutionTime";                [16#00, 16#04] -> "normalMGCExecutionTime";                [16#00, 16#05] -> "MGProvisionalResponseTimerValue";		[16#00, 16#06] -> "MGCProvisionalResponseTimerValue"            end    end.%%----------------------------------------------------------------------%% Name:    tonegen - Tone Generator Package%% Version: 1%% Extends: None%% Purpose: This package defines signals to generate audio tones.%%          This package does not specify parameter values. It is%%          intended to be extendable. Generally, tones are defined%%          as an individual signal with a parameter, ind,%%          representing "interdigit" time delay, and a tone id to%%          be used with playtones.  A tone id should be kept%%          consistent with any tone generation for the same tone.%%          MGs are expected to be provisioned with the characteristics%%          of appropriate tones for the country in which the MG is located.%%----------------------------------------------------------------------capabilities_tonegen() ->    [     {signal, "pt"}    ].encode_tonegen(signal, Item) ->    case Item of	"pt" -> [16#00, 16#01]    end;encode_tonegen({signal_parameter, Item}, SubItem) ->    case Item of        "pt" ->            case SubItem of                "tl"  -> [16#00, 16#01];                "ind" -> [16#00, 16#02]            end    end.decode_tonegen(signal, Item) ->    case Item of	[16#00, 16#01] -> "pt"    end;decode_tonegen({signal_parameter, Item}, SubItem) ->    case Item of        [16#00, 16#01] -> % Event: pt            case SubItem of                [16#00, 16#01] -> "tl";                [16#00, 16#02] -> "ind"            end    end.%%----------------------------------------------------------------------%% Name:    tonedet - Tone Detection Package%% Version: 1%% Extends: None%% Purpose: This Package defines events for audio tone detection.%%          Tones are selected by name (tone id). MGs are expected%%          to be provisioned with the characteristics of appropriate%%          tones for the country in which the MG is located.%%          %%          This package does not specify parameter values.%%          It is intended to be extendable.%%----------------------------------------------------------------------capabilities_tonedet() ->    [     {event, "std"},     {event, "etd"},     {event, "ltd"}    ].encode_tonedet(event, Item) ->    case Item of	"std" -> [16#00, 16#01];	"etd" -> [16#00, 16#02];	"ltd" -> [16#00, 16#03]    end;encode_tonedet({event_parameter, Item}, SubItem) ->    case Item of        "std" ->            case SubItem of                "tl"  -> [16#00, 16#01];                "tid" -> [16#00, 16#03]            end;        "etd" ->            case SubItem of                "tl"  -> [16#00, 16#01];                "tid" -> [16#00, 16#03];                "dur" -> [16#00, 16#02]            end;        "ltd" ->            case SubItem of                "tl"  -> [16#00, 16#01];                "dur" -> [16#00, 16#02];                "tid" -> [16#00, 16#03]            end    end.decode_tonedet(event, Item) ->    case Item of	[16#00, 16#01] -> "std";

⌨️ 快捷键说明

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