-module(pbx_escape). -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). 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, {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). 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. 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}]).