summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-11-11 21:18:02 +0100
committerDimitri Sokolyuk <demon@dim13.org>2015-11-11 21:18:02 +0100
commit756f495f49f1e58289726af38385722a4e42a831 (patch)
tree0727c1466528199238250b125231259e77fab380
parent86cf1c33fb2b3258fd2b9dd3b093f2056111da47 (diff)
Experimental
-rw-r--r--src/pbx_api.erl25
-rw-r--r--src/pbx_button.erl6
-rw-r--r--src/pbx_dial.erl8
-rw-r--r--src/pbx_escape.erl44
-rw-r--r--src/pbx_event.erl6
-rw-r--r--src/pbx_monitor.erl6
-rw-r--r--src/pbx_pdu.erl5
-rw-r--r--src/pbx_rose.erl5
-rw-r--r--src/pbx_snapshot.erl6
9 files changed, 61 insertions, 50 deletions
diff --git a/src/pbx_api.erl b/src/pbx_api.erl
index 9d76ad4..7a204cb 100644
--- a/src/pbx_api.erl
+++ b/src/pbx_api.erl
@@ -4,35 +4,26 @@
-export([ext/0, co/0, snapshot/1, monitor/1, button/1, dial/2, fco/1, type/0]).
ext() ->
- pbx_pdu:notify({invoke, ?ESCAPE,
- pbx_escape:lines(station)}).
+ pbx_pdu:invoke(pbx_escape, {lines, station}).
co() ->
- pbx_pdu:notify({invoke, ?ESCAPE,
- pbx_escape:lines(networkInterface)}).
+ pbx_pdu:invoke(pbx_escape, {lines, networkInterface}).
snapshot(Device) ->
- pbx_pdu:notify({invoke, ?SNAPSHOT,
- pbx_snapshot:encode({dialingNumber, Device})}).
+ pbx_pdu:invoke(pbx_snapshot, {dialingNumber, Device}).
button(Device) ->
- pbx_pdu:notify({invoke, ?BUTTON,
- pbx_button:encode({dialingNumber, Device})}).
+ pbx_pdu:invoke(pbx_button, {dialingNumber, Device}).
monitor(Device) ->
- pbx_pdu:notify({invoke, ?MONITOR,
- pbx_monitor:encode({dialingNumber, Device})}).
+ pbx_pdu:invoke(pbx_monitor, {dialingNumber, Device}).
dial(From, To) ->
- pbx_pdu:notify({invoke, ?MAKECALL,
- pbx_dial:encode({dialingNumber, From},
- {dialingNumber, To})}).
+ pbx_pdu:invoke(pbx_dial, {{dialingNumber, From}, {dialingNumber, To}}).
fco(Device) ->
- pbx_pdu:notify({invoke, ?ESCAPE,
- pbx_escape:deviceData({dialingNumber, Device})}).
+ pbx_pdu:invoke(pbx_escape, {deviceData, {dialingNumber, Device}}).
type() ->
- pbx_pdu:notify({invoke, ?ESCAPE,
- pbx_escape:pbxType()}).
+ pbx_pdu:invoke(pbx_escape, {pbxType}).
diff --git a/src/pbx_button.erl b/src/pbx_button.erl
index 29d17ed..ba550c8 100644
--- a/src/pbx_button.erl
+++ b/src/pbx_button.erl
@@ -1,10 +1,14 @@
-module(pbx_button).
--export([decode/1, encode/1]).
+-export([decode/1, encode/1, opcode/0]).
+-include("opcodes.hrl").
-include("CSTA-get-button-information.hrl").
-include("CSTA-device-identifiers.hrl").
+opcode() ->
+ ?BUTTON.
+
decode(Data) ->
'CSTA-get-button-information':decode('GetButtonInformationResult',
Data).
diff --git a/src/pbx_dial.erl b/src/pbx_dial.erl
index 15eb768..a967ceb 100644
--- a/src/pbx_dial.erl
+++ b/src/pbx_dial.erl
@@ -1,14 +1,18 @@
-module(pbx_dial).
--export([decode/1, encode/2]).
+-export([decode/1, encode/1, opcode/0]).
+-include("opcodes.hrl").
-include("CSTA-make-call.hrl").
-include("CSTA-device-identifiers.hrl").
+opcode() ->
+ ?MAKECALL.
+
decode(Data) ->
'CSTA-make-call':decode('MakeCallResult', Data).
-encode(From, To) ->
+encode({From, To}) ->
'CSTA-make-call':encode('MakeCallArgument', #'MakeCallArgument'{
callingDevice = #'DeviceID'{ deviceIdentifier = From },
calledDirectoryNumber = #'DeviceID'{ deviceIdentifier = To }}).
diff --git a/src/pbx_escape.erl b/src/pbx_escape.erl
index bc447d4..9b2fad4 100644
--- a/src/pbx_escape.erl
+++ b/src/pbx_escape.erl
@@ -1,20 +1,37 @@
-module(pbx_escape).
--export([decode/1, lines/1]).
--export([privateData/1, deviceData/1, deviceBasic/1,
- pbxType/0, pbxType/1]).
+-export([decode/1, encode/1, opcode/0]).
+-export([privateData/1, device/1, pbxType/1]).
+-include("opcodes.hrl").
-include("CSTA-escape-service.hrl").
-include("CSTA-device-identifiers.hrl").
-include("KME-specific-types.hrl").
+opcode() ->
+ ?ESCAPE.
+
decode(Data) ->
'CSTA-escape-service':decode('EscapeArgument', Data).
-lines(Device) ->
+encode({lines, Device}) ->
+ 'CSTA-escape-service':encode('EscapeArgument', #'EscapeArgument'{
+ privateData = {private, {kmeSystemData, {getSystemData, {request,
+ {deviceList, {category, {standardDevice, Device}}}}}}}});
+encode({deviceData, Device}) ->
'CSTA-escape-service':encode('EscapeArgument', #'EscapeArgument'{
privateData = {private, {kmeSystemData, {getSystemData, {request,
- {deviceList, {category, {standardDevice, Device}}}}}}}}).
+ {deviceData, #'KmeGetSystemDataReq_deviceData'{
+ device = #'DeviceID'{deviceIdentifier = Device},
+ sysData = {fcoKey, []}}}}}}}});
+encode({deviceBasic, Device}) ->
+ 'CSTA-escape-service':encode('EscapeArgument', #'EscapeArgument'{
+ privateData = {private, {kmeSystemData, {systemDataChanged,
+ {deviceBasicInfo, #'DeviceID'{deviceIdentifier = Device}}}}}});
+encode({pbxType}) ->
+ 'CSTA-escape-service':encode('EscapeArgument', #'EscapeArgument'{
+ privateData = {private, {kmeSystemData, {getSystemData, {request,
+ {systemData, pbxType}}}}}}).
privateData({ok, #'EscapeArgument'{privateData = Data}}) ->
private(Data).
@@ -39,23 +56,6 @@ stateEntryFilter(#'KmeDeviceStateEntry'{status = ous}) -> false.
device(#'KmeDeviceStateEntry'{device = #'DeviceID'{deviceIdentifier = Device}}) -> Device.
-deviceData(Device) ->
- 'CSTA-escape-service':encode('EscapeArgument', #'EscapeArgument'{
- privateData = {private, {kmeSystemData, {getSystemData, {request,
- {deviceData, #'KmeGetSystemDataReq_deviceData'{
- device = #'DeviceID'{deviceIdentifier = Device},
- sysData = {fcoKey, []}}}}}}}}).
-
-deviceBasic(Device) ->
- 'CSTA-escape-service':encode('EscapeArgument', #'EscapeArgument'{
- privateData = {private, {kmeSystemData, {systemDataChanged,
- {deviceBasicInfo, #'DeviceID'{deviceIdentifier = Device}}}}}}).
-
-pbxType() ->
- 'CSTA-escape-service':encode('EscapeArgument', #'EscapeArgument'{
- privateData = {private, {kmeSystemData, {getSystemData, {request,
- {systemData, pbxType}}}}}}).
-
pbxType(Type) ->
proplists:get_value(Type, [{0, tda100}, {1, tda200}, {2, tda30},
{3, tda50}, {5, tda15}, {6, tda600},
diff --git a/src/pbx_event.erl b/src/pbx_event.erl
index cb29afd..dcbc02e 100644
--- a/src/pbx_event.erl
+++ b/src/pbx_event.erl
@@ -1,8 +1,12 @@
-module(pbx_event).
--export([decode/1]).
+-export([decode/1, opcode/0]).
+-include("opcodes.hrl").
-include("CSTA-event-report-definitions.hrl").
+opcode() ->
+ ?EVENT.
+
decode(Data) ->
'CSTA-event-report-definitions':decode('CSTAEventReportArgument', Data).
diff --git a/src/pbx_monitor.erl b/src/pbx_monitor.erl
index 0554caa..8b250fa 100644
--- a/src/pbx_monitor.erl
+++ b/src/pbx_monitor.erl
@@ -1,10 +1,14 @@
-module(pbx_monitor).
--export([decode/1, encode/1]).
+-export([decode/1, encode/1, opcode/0]).
+-include("opcodes.hrl").
-include("CSTA-monitor-start.hrl").
-include("CSTA-device-identifiers.hrl").
+opcode() ->
+ ?MONITOR.
+
decode(Data) ->
'CSTA-monitor-start':decode('MonitorStartResult', Data).
diff --git a/src/pbx_pdu.erl b/src/pbx_pdu.erl
index 3ca5df3..fa67bb7 100644
--- a/src/pbx_pdu.erl
+++ b/src/pbx_pdu.erl
@@ -1,7 +1,7 @@
-module(pbx_pdu).
-export([start_link/0, add_handler/2, delete_handler/2, notify/1, call/2]).
--export([decode/1]).
+-export([decode/1, invoke/2]).
-include("Remote-Operations-Generic-ROS-PDUs.hrl").
-include("ACSE-1.hrl").
@@ -31,3 +31,6 @@ decode(<<Data/binary>>) ->
decode(Pdu);
decode(Pdu) ->
Pdu.
+
+invoke(Module, Args) ->
+ pbx_pdu:notify({invoke, Module:opcode(), Module:encode(Args)}).
diff --git a/src/pbx_rose.erl b/src/pbx_rose.erl
index c858d9e..6bb7fe7 100644
--- a/src/pbx_rose.erl
+++ b/src/pbx_rose.erl
@@ -57,13 +57,10 @@ handle_event({returnResult, ?RESULT(Id, ?SNAPSHOT, Data)}, _State) ->
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 = Data}}, _State) ->
+handle_event({returnError, #'ReturnError'{invokeId = Id, parameter = Data}}, _State) ->
{ok, Error} = error:decode(Data),
io:format("Error: ~p~n", [Error]),
{ok, Id};
-handle_event({returnError, ReturnError = #'ReturnError'{invokeId = Id}}, _State) ->
- io:format("ReturnError ~p~n", [ReturnError]),
- {ok, Id};
handle_event({reject, #'Reject'{invokeId = Id, problem = Problem}}, _State) ->
io:format("Reject ~p~n", [Problem]),
{ok, Id};
diff --git a/src/pbx_snapshot.erl b/src/pbx_snapshot.erl
index 1d4a278..a2567d8 100644
--- a/src/pbx_snapshot.erl
+++ b/src/pbx_snapshot.erl
@@ -1,10 +1,14 @@
-module(pbx_snapshot).
--export([decode/1, encode/1]).
+-export([decode/1, encode/1, opcode/0]).
+-include("opcodes.hrl").
-include("CSTA-snapshot-device.hrl").
-include("CSTA-device-identifiers.hrl").
+opcode() ->
+ ?SNAPSHOT.
+
decode(Data) ->
'CSTA-snapshot-device':decode('SnapshotDeviceResult', Data).