summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-11-11 19:14:57 +0100
committerDimitri Sokolyuk <demon@dim13.org>2015-11-11 19:14:57 +0100
commit4868c586a3ac3df13dc9e21c30d95c2efd52306d (patch)
tree613af660b9c1463b97e31692e228f6d09bdf12d4
parenta4a3955e4f9b6826dbb389bd0e5290815facb312 (diff)
Use macros
-rw-r--r--src/pbx_rose.erl115
1 files changed, 43 insertions, 72 deletions
diff --git a/src/pbx_rose.erl b/src/pbx_rose.erl
index 0c0f09d..b937115 100644
--- a/src/pbx_rose.erl
+++ b/src/pbx_rose.erl
@@ -8,92 +8,63 @@
-include("opcodes.hrl").
-include("Remote-Operations-Generic-ROS-PDUs.hrl").
-decode({invoke, #'Invoke'{invokeId = Id, opcode = Op, argument = Data}}) ->
- pbx_invoke:set(Id),
- case Op of
- ?MAKECALL ->
- ok;
- ?BUTTON ->
- ok;
- ?EVENT ->
- {ok, Event} = pbx_event:decode(Data),
- io:format("Event: ~p~n", [Event]),
- ok;
- ?ESCAPE ->
- pbx_escape:privateData(pbx_escape:decode(Data));
- ?MONITOR ->
- ok;
- ?SNAPSHOT ->
- ok;
- ?STATUS ->
- %io:format("Status: ~p~n", [pbx_status:value(Data)]),
- %%% pbx_conn:send(return(Id, Op, pbx_status:encode()));
- ok;
- _ ->
- error
- end;
-decode({returnResult, #'ReturnResult'{invokeId = Id, result = Data}}) ->
- pbx_invoke:set(Id),
- decode(Data);
-decode({returnError, #'ReturnError'{invokeId = Id, errcode = Op, parameter = Data}}) ->
- pbx_invoke:set(Id),
- case Op of
- ?ERROR ->
- {ok, Error} = error:decode(Data),
- io:format("Error: ~p~n", [Error])
- end,
- error;
-decode({reject, #'Reject'{invokeId = Id, problem = Problem}}) ->
- pbx_invoke:set(Id),
- io:format("Problem: ~p~n", [Problem]),
- error;
-decode(#'ReturnResult_result'{opcode = Op, result = Data}) ->
- case Op of
- ?MAKECALL ->
- {ok, Result} = pbx_dial:decode(Data),
- io:format("Make call: ~p~n", [Result]);
- ?BUTTON ->
- {ok, List} = pbx_button:decode(Data),
- io:format("List: ~p~n", [List]);
- ?MONITOR ->
- {ok, Status} = pbx_monitor:decode(Data),
- io:format("Result: ~p~n", [Status]);
- ?SNAPSHOT ->
- {ok, Status} = pbx_snapshot:decode(Data),
- io:format("Result: ~p~n", [Status]);
- _ ->
- io:format("Result: ~p~n", [Data])
- end,
- ok;
-decode(<<Data/binary>>) ->
- {ok, Pdu} = 'Remote-Operations-Generic-ROS-PDUs':decode('ROS', Data),
- decode(Pdu).
+-define(INVOKE(Id, Op, Data), #'Invoke'{invokeId = Id, opcode = Op, argument = Data}).
+-define(RESULT(Id, Op, Data), #'ReturnResult'{invokeId = Id, result = #'ReturnResult_result'{opcode = Op, result = Data}}).
%%%
init(_Args) ->
{ok, {present, 0}}.
-handle_event({invoke, Invoke = #'Invoke'{opcode = ?STATUS}}, _State) ->
- case pbx_status:decode(Invoke#'Invoke'.argument) of
+handle_event({invoke, Invoke = #'Invoke'{invokeId = Id, opcode = ?STATUS, argument = Data}}, _State) ->
+ case pbx_status:decode(Data) of
normal ->
reply(Invoke, pbx_status:encode());
_ ->
ok
end,
- {ok, Invoke#'Invoke'.invokeId};
-handle_event({invoke, Invoke = #'Invoke'{}}, _State) ->
+ {ok, Id};
+handle_event({invoke, ?INVOKE(Id, ?EVENT, Data)}, _State) ->
+ {ok, Event} = pbx_event:decode(Data),
+ io:format("Event: ~p~n", [Event]),
+ {ok, Id};
+handle_event({invoke, ?INVOKE(Id, ?ESCAPE, Data)}, _State) ->
+ Esc = pbx_escape:decode(Data),
+ Priv = pbx_escape:privateData(Esc),
+ io:format("Escape: ~p~n", [Priv]),
+ {ok, Id};
+handle_event({invoke, Invoke = #'Invoke'{invokeId = Id}}, _State) ->
io:format("Invoke ~p~n", [Invoke]),
- {ok, Invoke#'Invoke'.invokeId};
-handle_event({returnResult, ReturnResult = #'ReturnResult'{}}, _State) ->
- io:format("ReturnResult ~p~n", [ReturnResult]),
- {ok, ReturnResult#'ReturnResult'.invokeId};
-handle_event({returnError, ReturnError = #'ReturnError'{}}, _State) ->
+ {ok, Id};
+handle_event({returnResult, ?RESULT(Id, ?MAKECALL, Data)}, _State) ->
+ {ok, Result} = pbx_dial:decode(Data),
+ io:format("Makecall ~p~n", [Result]),
+ {ok, Id};
+handle_event({returnResult, ?RESULT(Id, ?BUTTON, Data)}, _State) ->
+ {ok, Result} = pbx_button:decode(Data),
+ io:format("Button ~p~n", [Result]),
+ {ok, Id};
+handle_event({returnResult, ?RESULT(Id, ?MONITOR, Data)}, _State) ->
+ {ok, Result} = pbx_monitor:decode(Data),
+ io:format("Monitor ~p~n", [Result]),
+ {ok, Id};
+handle_event({returnResult, ?RESULT(Id, ?SNAPSHOT, Data)}, _State) ->
+ {ok, Result} = pbx_snapshot:decode(Data),
+ io:format("Snapshot ~p~n", [Result]),
+ {ok, Id};
+handle_event({returnResult, #'ReturnResult'{invokeId = Id, result = Result}}, _State) ->
+ io:format("Result ~p~n", [Result]),
+ {ok, Id};
+handle_event({returnError, #'ReturnError'{invokeId = Id, errcode = ?ERROR, parameter = Par}}, _State) ->
+ {ok, Error} = error:decode(Par),
+ io:format("Error: ~p~n", [Error]),
+ {ok, Id};
+handle_event({returnError, ReturnError = #'ReturnError'{invokeId = Id}}, _State) ->
io:format("ReturnError ~p~n", [ReturnError]),
- {ok, ReturnError#'ReturnError'.invokeId};
-handle_event({reject, Reject = #'Reject'{problem = Problem}}, _State) ->
+ {ok, Id};
+handle_event({reject, #'Reject'{invokeId = Id, problem = Problem}}, _State) ->
io:format("Reject ~p~n", [Problem]),
- {ok, Reject#'Reject'.invokeId};
+ {ok, Id};
handle_event(_Event, State) ->
{ok, State}.