diff options
Diffstat (limited to 'src/ss7test_helper.erl')
-rw-r--r-- | src/ss7test_helper.erl | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/ss7test_helper.erl b/src/ss7test_helper.erl new file mode 100644 index 0000000..f6821b0 --- /dev/null +++ b/src/ss7test_helper.erl @@ -0,0 +1,48 @@ +-module(ss7test_helper). +-author('Daniel Mende <mail@c0decafe.de>'). + +-export([encode_phonenumber/4, encode_msisdn/4, + decode_imsi/1, + remove_firstN/2, + tup2bin/1]). + +decode_imsi(<<>>) -> + []; +decode_imsi(Imsi) -> + <<First:4,Second:4,Rest/bits>> = Imsi, + Dec = decode_imsi(Rest), + if + First==15 -> lists:append([Second], Dec); + true -> lists:append([Second,First], Dec) + end. + +%% =================================================================== +%% Phone Number helper +%% =================================================================== + +encode_phonenumber(Extension, NatureOfNumber, NumberPlan, Number) -> + {EncNumber, Digits} = encode_phonenumber(Number), + <<Digits:8, Extension:1, NatureOfNumber:3, NumberPlan:4, EncNumber/binary>>. +encode_phonenumber([First,Second|Tail]) -> + {EncNumber, Digits} = encode_phonenumber(Tail), + {<<Second:4, First:4, EncNumber/binary>>, Digits + 2}; +encode_phonenumber([Last]) -> + {<<15:4, Last:4>>, 1}; +encode_phonenumber([]) -> + {<<>>, 0}. + +encode_msisdn(Extension, NatureOfNumber, NumberPlan, Number) -> + {EncNumber, _} = encode_phonenumber(Number), + <<Extension:1, NatureOfNumber:3, NumberPlan:4, EncNumber/binary>>. + +%% =================================================================== +%% 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))]). |