%%% File : blah.erl %%% Author : mogorman %%% Description : lets see if we can terminate an iax2 call %%% Created : 11 Sep 2006 by mogorman %0x06 = username. -module(blah). -export([start/0]). start() -> case gen_udp:open(4569,[binary,{active,false}]) of {ok, LSock} -> loop(LSock); _ -> stop end. loop(Socket) -> case gen_udp:recv(Socket, 4000,1000) of {ok, {Ip,Port,Data}} -> parse(Ip, Port, Data), loop(Socket); _-> loop(Socket) end. parse(Ip, Port,<>) -> %parse full frame io:format("fullframe = ~p~nSourceCall = ~p~nRetransmit = ~p~nDestCall = ~p~nTimestamp = ~p~nOSeqno = ~p~nISeqno = ~p~nFrametype = ~p~nCbit = ~p~nSubclass = ~p~nData = ~p~n",[FullFrame, SourceCall, Retransmit, DestCall, TimeStamp, OSeqno, ISeqno, FrameType, CBit,SubClass, Data]), parse(Ip, Port, Data); parse(_Ip, _Port, <>) -> %parse mini frame io:format("FullFrame = ~p~nSourceCall = ~p~nTimeStamp = ~p~nData ~p~n",[FullFrame,SourceCall,TimeStamp,Data]); parse(Ip, Port, <<6:8, Length:8, Data/binary>>) -> % Parse Username ByteLength = Length * 8, <> = Data, io:format("Length = ~p~nUsername = ~p~nData = ~p~n",[Length,Username,Data]); % parse(Ip,Port,RealData); parse(Ip, Port, <<19:8, 2:8, Refresh:16, Data/binary>>) -> io:format("Refresh = ~p~nData ~p~n", [Refresh, Data]), parse(Ip,Port,Data); parse(_Ip, _Port, <<>>) -> io:format("Nothing less to parse~n").