summaryrefslogtreecommitdiff
path: root/src/pbx_escape.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/pbx_escape.erl')
-rw-r--r--src/pbx_escape.erl63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/pbx_escape.erl b/src/pbx_escape.erl
new file mode 100644
index 0000000..bc447d4
--- /dev/null
+++ b/src/pbx_escape.erl
@@ -0,0 +1,63 @@
+-module(pbx_escape).
+
+-export([decode/1, lines/1]).
+-export([privateData/1, deviceData/1, deviceBasic/1,
+ pbxType/0, pbxType/1]).
+
+-include("CSTA-escape-service.hrl").
+-include("CSTA-device-identifiers.hrl").
+-include("KME-specific-types.hrl").
+
+decode(Data) ->
+ 'CSTA-escape-service':decode('EscapeArgument', Data).
+
+lines(Device) ->
+ 'CSTA-escape-service':encode('EscapeArgument', #'EscapeArgument'{
+ privateData = {private, {kmeSystemData, {getSystemData, {request,
+ {deviceList, {category, {standardDevice, Device}}}}}}}}).
+
+privateData({ok, #'EscapeArgument'{privateData = Data}}) ->
+ private(Data).
+
+private({private, {kmeSystemData, Data}}) ->
+ List = linked(Data),
+ %Dev = lists:map(fun device/1, List),
+ io:format("kmeSystemData ~p~n", [List]).
+
+linked({systemDataLinkedReply, #'KmeSystemDataLinkedReply'{lastSegment = false, sysData = Data}}) ->
+ stateEntry(Data);
+linked({systemDataLinkedReply, #'KmeSystemDataLinkedReply'{lastSegment = true, sysData = Data}}) ->
+ stateEntry(Data).
+
+stateEntry(#'KmeGetSystemDataRsp'{deviceList = List}) when List =/= asn1_NOVALUE ->
+ lists:filter(fun stateEntryFilter/1, List);
+stateEntry(#'KmeGetSystemDataRsp'{pbxType = Type}) when Type =/= asn1_NOVALUE ->
+ pbxType(Type).
+
+stateEntryFilter(#'KmeDeviceStateEntry'{status = ins}) -> true;
+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},
+ {7, tde100}, {8, tde200}, {9, tde600},
+ {10, ncp500}, {11, ncp1000}, {12, ncp3000}]).