From 6e4d80d801535cf1cd2d1c57414a35542c2a6ee7 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 2 Nov 2015 17:56:09 +0100 Subject: Add make call --- src/make_call.erl | 16 ++++++++++++++++ src/rose.erl | 5 +++++ src/tda.erl | 5 ++++- 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 src/make_call.erl (limited to 'src') diff --git a/src/make_call.erl b/src/make_call.erl new file mode 100644 index 0000000..3e60172 --- /dev/null +++ b/src/make_call.erl @@ -0,0 +1,16 @@ +-module(make_call). + +-export([decode/1, encode/2]). + +-include("CSTA-make-call.hrl"). +-include("CSTA-device-identifiers.hrl"). + +decode(Data) -> + 'CSTA-make-call':decode('MakeCallResult', Data). + +encode(From, To) -> + 'CSTA-make-call':encode('MakeCallArgument', #'MakeCallArgument'{ + callingDevice = #'DeviceID'{ + deviceIdentifier = {dialingNumber, From}}, + calledDirectoryNumber = #'DeviceID'{ + deviceIdentifier = {dialingNumber, To}}}). diff --git a/src/rose.erl b/src/rose.erl index 0870e72..6ec035a 100644 --- a/src/rose.erl +++ b/src/rose.erl @@ -21,6 +21,8 @@ invoke(Op, {ok, Data}) -> dispatch({invoke, #'Invoke'{invokeId = Id, opcode = Op, argument = Data}}) -> counter:set(Id), case Op of + ?MAKECALL -> + ok; ?BUTTON -> ok; ?EVENT -> @@ -56,6 +58,9 @@ dispatch({reject, #'Reject'{invokeId = Id, problem = Problem}}) -> dispatch(#'ReturnResult_result'{opcode = Op, result = Data}) -> case Op of + ?MAKECALL -> + {ok, Result} = make_call:decode(Data), + io:format("Make call: ~p~n", [Result]); ?BUTTON -> {ok, List} = button:decode(Data), io:format("List: ~p~n", [List]); diff --git a/src/tda.erl b/src/tda.erl index e99fb93..fe1589b 100644 --- a/src/tda.erl +++ b/src/tda.erl @@ -1,7 +1,7 @@ -module(tda). -export([start/0, client/1, stop/0, decode/1]). --export([send/1, ext/0, co/0, snapshot/1, monitor/1, button/1]). +-export([send/1, ext/0, co/0, snapshot/1, monitor/1, button/1, make_call/2]). -include("config.hrl"). -include("opcodes.hrl"). @@ -31,6 +31,9 @@ button(Device) -> monitor(Device) -> ?MODULE ! rose:invoke(?MONITOR, monitor:encode(Device)). +make_call(From, To) -> + ?MODULE ! rose:invoke(?MAKECALL, make_call:encode(From, To)). + client({dial, Host, Port}) -> io:format("Dial ~p:~p~n", [Host, Port]), Conn = gen_tcp:connect(Host, Port, [binary, {packet, 2}], ?TIMEOUT), -- cgit v1.2.3