summaryrefslogtreecommitdiff
path: root/src/pbx_pdu.erl
blob: 3ca5df378fdda5988cc9c86ff285bcd2f8d40b8b (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
-module(pbx_pdu).

-export([start_link/0, add_handler/2, delete_handler/2, notify/1, call/2]).
-export([decode/1]).

-include("Remote-Operations-Generic-ROS-PDUs.hrl").
-include("ACSE-1.hrl").

start_link() ->
	gen_event:start_link({local, ?MODULE}).

add_handler(Handler, Args) ->
	gen_event:add_handler(?MODULE, Handler, Args).

delete_handler(Handler, Args) ->
	gen_event:delete_handler(?MODULE, Handler, Args).

notify(Args) ->
	gen_event:notify(?MODULE, Args).

call(Handler, Args) ->
	gen_event:call(?MODULE, Handler, Args).

%%%

decode({asn1_ExtAlt, <<Data/binary>>}) ->
	{ok, Pdu} = 'Remote-Operations-Generic-ROS-PDUs':decode('ROS', Data),
	Pdu;
decode(<<Data/binary>>) ->
	{ok, Pdu} = 'ACSE-1':decode('ACSE-apdu', Data),
	decode(Pdu);
decode(Pdu) ->
	Pdu.