-module(ss7_helper). -author('Daniel Mende '). -include("ss7MAPer.hrl"). -export([encode_phonenumber/4, decode_phonenumber/1, encode_msisdn/4, decode_imsi/1, encode_imsi/1, remove_firstN/2, tup2bin/1]). decode_imsi(<<>>) -> []; decode_imsi(Imsi) -> <> = Imsi, Dec = decode_imsi(Rest), if First==15 -> lists:append([Second], Dec); true -> lists:append([Second,First], Dec) end. encode_imsi([]) -> <<>>; encode_imsi([Last]) -> <<15:4, Last:4>>; encode_imsi([First,Second|Tail]) -> EncImsi = encode_imsi(Tail), <>. %% =================================================================== %% Phone Number helper %% =================================================================== encode_phonenumber(Extension, NatureOfNumber, NumberPlan, Number) -> {EncNumber, Digits} = encode_phonenumber(Number), <>. encode_phonenumber([First,Second|Tail]) -> {EncNumber, Digits} = encode_phonenumber(Tail), {<>, Digits + 2}; encode_phonenumber([Last]) -> {<<15:4, Last:4>>, 1}; encode_phonenumber([]) -> {<<>>, 0}. decode_phonenumber(<<_Extension:1, _NatureOfNumber:1, _NumberPlan:4, Number/binary>>) -> decode_imsi(Number). encode_msisdn(Extension, NatureOfNumber, NumberPlan, Number) -> {EncNumber, _} = encode_phonenumber(Number), <>. %% =================================================================== %% List helper %% =================================================================== remove_firstN(_, []) -> []; remove_firstN(1, [_|T]) -> T; remove_firstN(N, [_|T]) -> remove_firstN(N-1, T). tup2bin(Tupel) -> binary:list_to_bin([element(I,Tupel) || I <- lists:seq(1,tuple_size(Tupel))]).