From f20412b9607d9cae365925a9b25a50bb9de3ed79 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 26 Oct 2015 12:13:06 +0100 Subject: WIP --- tda.erl | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) (limited to 'tda.erl') diff --git a/tda.erl b/tda.erl index fc2367e..bccf84b 100644 --- a/tda.erl +++ b/tda.erl @@ -1,6 +1,6 @@ -module(tda). --export([start_client/0, client/1]). +-export([start/0, client/1, stop/0]). -include("acse.hrl"). -include("rose.hrl"). @@ -8,6 +8,7 @@ -define(TIMEOUT, 300000). -define(CONNECT_TIMEOUT, 3000). -define(HOST, "192.168.240.20"). +-define(PORT, 33333). associate_request() -> {ok, UI} = acse:encode('ACSEUserInformationForCSTA', {newDefinition, @@ -20,29 +21,47 @@ associate_request() -> encoding = {'single-ASN1-type', UI}}]}, acse:encode('ACSE-apdu', {aarq, Pdu}). -start_client() -> - register(tda_client, spawn(?MODULE, client, [?HOST])). +start() -> + register(tda_client, spawn(?MODULE, client, [{dial, ?HOST, ?PORT}])). -client(Host) -> - case gen_tcp:connect(Host, 33333, [binary, {active, true}, {packet, 2}], - ?CONNECT_TIMEOUT) of - {ok, Sock} -> - {ok, Hello} = associate_request(), - gen_tcp:send(Sock, Hello), - loop(Sock); - {error, Reason} -> {error, Reason} - end. +stop() -> + tda_client ! {logout}. + +client({dial, Host, Port}) -> + io:format("Dial ~p:~p~n", [Host, Port]), + Conn = gen_tcp:connect(Host, Port, + [binary, {active, once}, {packet, 2}], + ?CONNECT_TIMEOUT), + client(Conn); +client({ok, Sock}) -> + io:format("Connected~n", []), + tda_client ! {login}, + loop(Sock); +client({error, Reason}) -> + io:format("Error: ~p~n", [Reason]), + {error, Reason}. loop(Sock) -> - io:format("loop~n", []), + inet:setopts(Sock, [{active, once}]), + io:format("Loop~n", []), receive + {login} -> + io:format("Login~n", []), + {ok, Hello} = associate_request(), + gen_tcp:send(Sock, Hello), + loop(Sock); + {logout} -> + io:format("Logout~n", []), + gen_tcp:close(Sock); {tcp, Sock, Msg} -> + io:format("Reply ~p~n", [Msg]), case decode(Sock, Msg) of ok -> loop(Sock); error -> gen_tcp:close(Sock), error end; {tcp_closed, _} -> + io:format("Connection closed~n", []), closed after ?TIMEOUT -> gen_tcp:close(Sock), -- cgit v1.2.3