summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-11-02 17:56:09 +0100
committerDimitri Sokolyuk <demon@dim13.org>2015-11-02 17:56:09 +0100
commit6e4d80d801535cf1cd2d1c57414a35542c2a6ee7 (patch)
tree40c58192fcbdcf869c5cb0867f2706f19329f00b
parenta9386ca15215172bc597896df8cf59bf41255636 (diff)
Add make call
-rw-r--r--include/opcodes.hrl1
-rw-r--r--src/make_call.erl16
-rw-r--r--src/rose.erl5
-rw-r--r--src/tda.erl5
4 files changed, 26 insertions, 1 deletions
diff --git a/include/opcodes.hrl b/include/opcodes.hrl
index dfddbfe..6f0b123 100644
--- a/include/opcodes.hrl
+++ b/include/opcodes.hrl
@@ -1,3 +1,4 @@
+-define(MAKECALL, {local, 10}).
-define(EVENT, {local, 21}).
-define(ESCAPE, {local, 51}).
-define(MONITOR, {local, 71}).
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),