summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-11-03 14:15:30 +0100
committerDimitri Sokolyuk <demon@dim13.org>2015-11-03 14:15:30 +0100
commitc4a7ccb448f270b8ea05efecb14be6c66231d3fd (patch)
treee2f281d745c04fe0e00a30c5318a22ad0fbb00fb
parentd2e8a2c02abe05214bb77496121d9a0277f3e95f (diff)
Use fallback asn1_ExtAlt for dispatching
-rw-r--r--src/acse.erl10
-rw-r--r--src/tapi.erl37
2 files changed, 12 insertions, 35 deletions
diff --git a/src/acse.erl b/src/acse.erl
index cb0af0e..1112345 100644
--- a/src/acse.erl
+++ b/src/acse.erl
@@ -20,8 +20,8 @@ associate() ->
release() ->
'ACSE-1':encode('ACSE-apdu', {rlrq, #'RLRQ-apdu'{}}).
-decode(Msg) ->
- 'ACSE-1':decode('ACSE-apdu', Msg).
+decode(Data) ->
+ 'ACSE-1':decode('ACSE-apdu', Data).
dispatch({aare, #'AARE-apdu'{result = Result}}) ->
case Result of
@@ -33,4 +33,8 @@ dispatch({rlre, _}) ->
ok;
dispatch({abrt, _}) ->
- error.
+ error;
+
+dispatch({asn1_ExtAlt, Data}) ->
+ {ok, Rose} = rose:decode(Data),
+ rose:dispatch(Rose).
diff --git a/src/tapi.erl b/src/tapi.erl
index 517b7be..88f6f31 100644
--- a/src/tapi.erl
+++ b/src/tapi.erl
@@ -16,6 +16,7 @@ start_link() ->
gen_server:start_link({local, ?SERVER}, ?MODULE, [?HOST, ?PORT], []).
init(Args) ->
+ io:format("INIT~n", []),
[Host, Port] = Args,
gen_tcp:connect(Host, Port, [binary, {packet, 2}], ?TIMEOUT).
@@ -27,20 +28,17 @@ handle_cast({ok, Reply}, Socket) ->
{noreply, Socket}.
handle_info({tcp, _, Data}, Socket) ->
- case kind(Data) of
- rose ->
+ case acse:decode(Data) of
+ {ok, {asn1_ExtAlt, Data}} ->
{ok, Rose} = rose:decode(Data),
- io:format("ROSE> ~p~n", [Rose]),
rose:dispatch(Rose);
- acse ->
- {ok, Acse} = acse:decode(Data),
- io:format("ACSE> ~p~n", [Acse]),
+ {ok, Acse} ->
acse:dispatch(Acse)
end,
{noreply, Socket};
handle_info({tcp_closed, _}, Socket) ->
- {stop, closed, Socket}.
+ {stop, normal, Socket}.
terminate(_Reason, State) ->
gen_tcp:close(State).
@@ -76,28 +74,3 @@ login() ->
logout() ->
gen_server:cast(?SERVER, acse:release()).
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-kind(<<Head:8,_/binary>>) ->
- proplists:get_value(Head, [{96, acse}, {97, acse}, {98, acse},
- {99, acse}, {100, acse}, {161, rose},
- {162, rose}, {163, rose}, {164, rose}]).
-
-%loop(Sock) ->
-% %inet:setopts(Sock, [{active, once}]),
-% receive
-% {ok, Reply} ->
-% io:format("Send ~p~n", [Reply]),
-% spawn(gen_tcp, send, [Sock, Reply]);
-% {tcp, Sock, Data} ->
-% io:format("Recv ~p~n", [Data]),
-% spawn(?MODULE, decode, [Data]);
-% {tcp_closed, _} ->
-% io:format("Connection closed~n", []),
-% exit(closed)
-% after ?TIMEOUT ->
-% io:format("Connection timed out~n", []),
-% exit(timeout)
-% end,
-% loop(Sock).