From 756f495f49f1e58289726af38385722a4e42a831 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 11 Nov 2015 21:18:02 +0100 Subject: Experimental --- src/pbx_api.erl | 25 ++++++++----------------- src/pbx_button.erl | 6 +++++- src/pbx_dial.erl | 8 ++++++-- src/pbx_escape.erl | 44 ++++++++++++++++++++++---------------------- src/pbx_event.erl | 6 +++++- src/pbx_monitor.erl | 6 +++++- src/pbx_pdu.erl | 5 ++++- src/pbx_rose.erl | 5 +---- src/pbx_snapshot.erl | 6 +++++- 9 files changed, 61 insertions(+), 50 deletions(-) (limited to 'src') 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(<>) -> 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). -- cgit v1.2.3