summaryrefslogtreecommitdiff
path: root/src/pbx_acse.erl
blob: d7d11145894c44b858db3f07d6538542295c399f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
-module(pbx_acse).

-include("ACSE-1.hrl").
-include("CSTA-application-context-information-csta3.hrl").

-export([encode/1, decode/1, dispatch/1]).

encode(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}}]}});
encode(release) ->
	'ACSE-1':encode('ACSE-apdu', {rlrq, #'RLRQ-apdu'{}});
encode(Data) ->
	'ACSE-1':encode('ACSE-apdu', Data).

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).