summaryrefslogtreecommitdiff
path: root/src/pbx_acse.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/pbx_acse.erl')
-rw-r--r--src/pbx_acse.erl40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/pbx_acse.erl b/src/pbx_acse.erl
new file mode 100644
index 0000000..5b37964
--- /dev/null
+++ b/src/pbx_acse.erl
@@ -0,0 +1,40 @@
+-module(pbx_acse).
+
+-include("ACSE-1.hrl").
+-include("CSTA-application-context-information-csta3.hrl").
+
+-export([associate/0, release/0]).
+-export([decode/1, dispatch/1]).
+
+associate() ->
+ {ok, UI} = 'CSTA-application-context-information-csta3':encode(
+ 'ACSEUserInformationForCSTA', {newDefinition,
+ #'NewACSEUserInformationForCSTA'{cSTAVersion = [versionFive]}}),
+ 'ACSE-1':encode('ACSE-apdu', {aarq, #'AARQ-apdu'{
+ 'protocol-version' = [version1], % required
+ '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() ->
+ 'ACSE-1':encode('ACSE-apdu', {rlrq, #'RLRQ-apdu'{}}).
+
+decode(Data) ->
+ 'ACSE-1':decode('ACSE-apdu', Data).
+
+dispatch({aare, #'AARE-apdu'{result = accepted}}) ->
+ ok;
+
+dispatch({aare, #'AARE-apdu'{}}) ->
+ error;
+
+dispatch({rlre, _}) ->
+ ok;
+
+dispatch({abrt, _}) ->
+ error;
+
+dispatch({asn1_ExtAlt, Data}) ->
+ {ok, Rose} = pbx_rose:decode(Data),
+ pbx_rose:dispatch(Rose).