summaryrefslogtreecommitdiff
path: root/tda.erl
diff options
context:
space:
mode:
Diffstat (limited to 'tda.erl')
-rw-r--r--tda.erl47
1 files changed, 13 insertions, 34 deletions
diff --git a/tda.erl b/tda.erl
index d72739f..58efe09 100644
--- a/tda.erl
+++ b/tda.erl
@@ -1,28 +1,16 @@
-module(tda).
-export([start/0, client/1, stop/0, co_lines/0]).
+-export([rose/1]).
--include("acse.hrl").
--include("rose.hrl").
--include("kme.hrl").
+-include("KME-specific-types.hrl").
+-include("Remote-Operations-Generic-ROS-PDUs.hrl").
-define(TIMEOUT, 300000).
-define(CONNECT_TIMEOUT, 3000).
-define(HOST, "192.168.240.20").
-define(PORT, 33333).
-associate_request() ->
- {ok, UI} = acse:encode('ACSEUserInformationForCSTA', {newDefinition,
- #'NewACSEUserInformationForCSTA'{cSTAVersion = [versionFive]}}),
- acse:encode('ACSE-apdu', {aarq, #'AARQ-apdu'{
- 'protocol-version' = [version1],
- 'application-context-name' = {1, 3, 12, 0, 218},
- 'user-information' = [#'EXTERNAL'{
- 'direct-reference' = {1, 3, 12, 0, 285, 200},
- encoding = {'single-ASN1-type', UI}}]}}).
-
-release_request() -> acse:encode('ACSE-apdu', {rlrq, #'RLRQ-apdu'{}}).
-
start() -> register(tda_client, spawn(?MODULE, client, [{dial, ?HOST, ?PORT}])).
stop() -> tda_client ! {logout}.
@@ -47,12 +35,12 @@ loop(Sock) ->
receive
{login} ->
io:format("Login~n", []),
- {ok, Hello} = associate_request(),
+ {ok, Hello} = acse:associate_request(),
gen_tcp:send(Sock, Hello),
loop(Sock);
{logout} ->
io:format("Logout~n", []),
- {ok, Bye} = release_request(),
+ {ok, Bye} = acse:release_request(),
gen_tcp:send(Sock, Bye),
loop(Sock);
{tcp, Sock, Msg} ->
@@ -70,16 +58,18 @@ loop(Sock) ->
timeout
end.
+rose(Msg) -> 'Remote-Operations-Generic-ROS-PDUs':decode('ROS', Msg).
+
decode(Sock, Msg) ->
case dispatch(Msg) of
rose ->
- {ok, Rose} = rose:decode('ROS', Msg),
+ {ok, Rose} = rose(Msg),
io:format("ROSE> ~p~n", [Rose]),
rose_handler(Sock, Rose);
acse ->
- {ok, Acse} = acse:decode('ACSE-apdu', Msg),
+ {ok, Acse} = acse:decode(Msg),
io:format("ACSE> ~p~n", [Acse]),
- acse_handler(Acse)
+ acse:accepted(Acse)
end.
rose_handler(Sock, {invoke, Rose}) ->
@@ -105,25 +95,14 @@ dispatch(<<Head:8,_/binary>>) ->
system_status(Id, Op) ->
RR = #'ReturnResult_result'{opcode = Op, result = <<5,0>>},
R = #'ReturnResult'{invokeId = Id, result = RR},
- case rose:encode('ROS', {returnResult, R}) of
+ case 'Remote-Operations-Generic-ROS-PDUs':encode('ROS', {returnResult, R}) of
{ok, Invoke} -> Invoke;
{error, Reason} -> Reason
end.
-acse_handler({aarq, _}) -> error;
-acse_handler({aare, Apdu}) ->
- case Apdu#'AARE-apdu'.result of
- accepted -> ok;
- 'rejected-permanent' -> error;
- 'rejected-transient' -> error
- end;
-acse_handler({rlrq, _}) -> error;
-acse_handler({rlre, _}) -> error;
-acse_handler({abrt, _}) -> error.
-
co_lines() ->
- {ok, CO} = kme:encode('KMESpecificPrivateData', {kmeSystemData,
+ {ok, CO} = 'KME-specific-types':encode('KMESpecificPrivateData', {kmeSystemData,
{getSystemData, {request, {deviceList, {category,
{standardDevice, networkInterface}}}}}}),
CO.
- %kme:encode('EscapeArgument', #'EscapeArgument'{privateData = CO}).
+ %'KME-specific-types':encode('EscapeArgument', #'EscapeArgument'{privateData = CO}).