From: Pawel Andruszkiewicz Date: Fri, 8 Jan 2016 15:00:27 +0000 (+0100) Subject: [Iotcon] Stubs of JS interface (Iotcon and client). X-Git-Tag: submit/tizen/20160128.083419^2~8^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e5f92aa9aea922dd72761fb86ef5e14f1e5a7421;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Iotcon] Stubs of JS interface (Iotcon and client). Change-Id: Ic9cc25cbbfd0e03e4665f4b90f2658c35029726a Signed-off-by: Pawel Andruszkiewicz --- diff --git a/src/iotcon/iotcon_api.js b/src/iotcon/iotcon_api.js index c0322eeb..013bd45b 100644 --- a/src/iotcon/iotcon_api.js +++ b/src/iotcon/iotcon_api.js @@ -17,9 +17,308 @@ var native = new xwalk.utils.NativeManager(extension); var validator = xwalk.utils.validator; var types = validator.Types; +var T = xwalk.utils.type; + +var ResponseResult = { + SUCCESS: 'SUCCESS', + ERROR: 'ERROR', + RESOURCE_CREATED: 'RESOURCE_CREATED', + RESOURCE_DELETED: 'RESOURCE_DELETED', + SLOW: 'SLOW' +}; + +var PresenceResponseResultType = { + SUCCESS: 'SUCCESS', + STOPPED: 'STOPPED', + TIMEOUT: 'TIMEOUT' +}; + +var PresenceTriggerType = { + CREATED: 'CREATED', + UPDATED: 'UPDATED', + DESTROYED: 'DESTROYED' +}; + +var ConnectivityType = { + IPV4: 'IPV4', + IPV6: 'IPV6', + BT_EDR: 'BT_EDR', + BT_LE: 'BT_LE', + ALL: 'ALL' +}; + +var ResourceInterface = { + DEFAULT: 'DEFAULT', + LINK: 'LINK', + BATCH: 'BATCH', + GROUP: 'GROUP' +}; + +var ObservePolicy = { + IGNORE_OUT_OF_ORDER: 'IGNORE_OUT_OF_ORDER', + ACCEPT_OUT_OF_ORDER: 'ACCEPT_OUT_OF_ORDER' +}; + +var PresenceTriggerType = { + NO_TYPE: 'NO_TYPE', + REGISTER: 'REGISTER', + DEREGISTER: 'DEREGISTER' +}; + +function Client() { +} + +Client.prototype.findResource = function() { + var args = validator.validateMethod(arguments, [{ + name: 'hostAddress', + type: types.STRING, + nullable: true + }, { + name: 'resourceType', + type: types.STRING, + nullable: true + }, { + name: 'connectivityType', + type: types.ENUM, + values: T.getValues(ConnectivityType) + }, { + name: 'successCallback', + type: types.FUNCTION + }, { + name: 'errorCallback', + type: types.FUNCTION, + optional: true, + nullable: true + }]); + + var callArgs = {}; + callArgs.hostAddress = args.hostAddress; + callArgs.resourceType = args.resourceType; + callArgs.connectivityType = args.connectivityType; + + var callback = function(result) { + if (native.isFailure(result)) { + native.callIfPossible(args.errorCallback, native.getErrorObject(result)); + } else { + // TODO: implement + args.successCallback(); + } + }; + + var result = native.call('IotconClient_findResource', callArgs, callback); + + if (native.isFailure(result)) { + throw native.getErrorObject(result); + } +}; + +var presenceEventListener = (function() { + var listenerName = 'PresenceEventListener'; + var listeners = {}; + var jsListenerRegistered = false; + + function callback(response) { + if (listeners[response.id]) { + // TODO: implement + listeners[response.id](); + } + } + + function addListener(id, func) { + if (!jsListenerRegistered) { + native.addListener(listenerName, callback); + jsListenerRegistered = true; + } + + listeners[id] = func; + } + + function removeListener(id) { + if (listeners[id]) { + delete listeners[id]; + } + + if (jsListenerRegistered && T.isEmptyObject(listeners)) { + native.removeListener(listenerName, callback); + jsListenerRegistered = false; + } + } + + return { + addListener: addListener, + removeListener: removeListener + }; +})(); + +Client.prototype.addPresenceEventListener = function() { + var args = validator.validateMethod(arguments, [{ + name: 'hostAddress', + type: types.STRING, + nullable: true + }, { + name: 'resourceType', + type: types.STRING + }, { + name: 'connectivityType', + type: types.ENUM, + values: T.getValues(ConnectivityType) + }, { + name: 'successCallback', + type: types.FUNCTION + }]); + + var callArgs = {}; + callArgs.hostAddress = args.hostAddress; + callArgs.resourceType = args.resourceType; + callArgs.connectivityType = args.connectivityType; + + var result = native.callSync('IotconClient_addPresenceEventListener', callArgs); + + if (native.isFailure(result)) { + throw native.getErrorObject(result); + } else { + var id = native.getResultObject(result); + presenceEventListener.addListener(id, args.successCallback); + return id; + } +}; + +Client.prototype.removePresenceEventListener = function() { + var args = validator.validateMethod(arguments, [{ + name: 'watchId', + type: types.LONG + }]); + + var callArgs = {}; + callArgs.id = args.watchId; + + var result = native.callSync('IotconClient_removePresenceEventListener', callArgs); + + if (native.isFailure(result)) { + throw native.getErrorObject(result); + } else { + presenceEventListener.removeListener(args.watchId); + } +}; + +Client.prototype.getDeviceInfo = function() { + var args = validator.validateMethod(arguments, [{ + name: 'hostAddress', + type: types.STRING + }, { + name: 'connectivityType', + type: types.ENUM, + values: T.getValues(ConnectivityType) + }, { + name: 'successCallback', + type: types.FUNCTION + }, { + name: 'errorCallback', + type: types.FUNCTION, + optional: true, + nullable: true + }]); + + var callArgs = {}; + callArgs.hostAddress = args.hostAddress; + callArgs.connectivityType = args.connectivityType; + + var callback = function(result) { + if (native.isFailure(result)) { + native.callIfPossible(args.errorCallback, native.getErrorObject(result)); + } else { + // TODO: implement + args.successCallback(); + } + }; + + var result = native.call('IotconClient_getDeviceInfo', callArgs, callback); + + if (native.isFailure(result)) { + throw native.getErrorObject(result); + } +}; + +Client.prototype.getPlatformInfo = function() { + var args = validator.validateMethod(arguments, [{ + name: 'hostAddress', + type: types.STRING + }, { + name: 'connectivityType', + type: types.ENUM, + values: T.getValues(ConnectivityType) + }, { + name: 'successCallback', + type: types.FUNCTION + }, { + name: 'errorCallback', + type: types.FUNCTION, + optional: true, + nullable: true + }]); + + var callArgs = {}; + callArgs.hostAddress = args.hostAddress; + callArgs.connectivityType = args.connectivityType; + + var callback = function(result) { + if (native.isFailure(result)) { + native.callIfPossible(args.errorCallback, native.getErrorObject(result)); + } else { + // TODO: implement + args.successCallback(); + } + }; + + var result = native.call('IotconClient_getPlatformInfo', callArgs, callback); + + if (native.isFailure(result)) { + throw native.getErrorObject(result); + } +}; + +function Server() { +} + +var client = new Client(); +var server = new Server(); function Iotcon() { } +Iotcon.prototype.getClient = function() { + return client; +}; + +Iotcon.prototype.getServer = function() { + return server; +}; + +Iotcon.prototype.getTimeout = function() { + var result = native.callSync('Iotcon_getTimeout', {}); + + if (native.isFailure(result)) { + throw native.getErrorObject(result); + } else { + return native.getResultObject(result); + } +}; + +Iotcon.prototype.setTimeout = function() { + var args = validator.validateMethod(arguments, [{ + name: 'timeout', + type: types.LONG + }]); + + var callArgs = {}; + callArgs.timeout = args.timeout; + + var result = native.callSync('Iotcon_setTimeout', callArgs); + + if (native.isFailure(result)) { + throw native.getErrorObject(result); + } +}; + // Exports exports = new Iotcon();