+++ /dev/null
-/**\r
- * Sensor.js\r
- * \r
- * Nokia Web Runtime Service API emulation \r
- * WRT v1.1\r
- * \r
- * Copyright 2009 Nokia Corporation. All rights reserved.\r
-*/\r
-\r
-(function(){\r
-\r
- var provider = 'Service.Sensor',\r
- Interface = 'ISensor';\r
- var transID = new Array();\r
- /**\r
- * Sensor service\r
- */\r
- var SensorService = function(){\r
- this.FindSensorChannel = __FindSensorChannel;\r
- this.RegisterForNotification = __RegisterForNotification;\r
- this.Cancel = __Cancel;\r
- this.GetChannelProperty = __GetChannelProperty; \r
- }\r
-\r
- device.implementation.extend(provider, Interface, new SensorService() );\r
-\r
- /******************************************************/ \r
- /******************************************************/ \r
- /******************************************************/ \r
-\r
- var context = device.implementation.context,\r
- _t = context._t,\r
- method = '',\r
- result = false,\r
- DBase = null;\r
-\r
-\r
- /**\r
- * Sensor: FindSensorChannel\r
- * @param {Object} criteria\r
- */\r
- function __FindSensorChannel(criteria){\r
- method = 'FindSensorChannel';\r
- if(!criteria)\r
- return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgCriteriaMissing);\r
- \r
- if(typeof criteria != 'object')\r
- return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgCriteriaMissing);\r
- \r
- if(typeof criteria.SearchCriterion == 'undefined')\r
- return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgDataMissing);\r
-\r
- if(typeof criteria.SearchCriterion != 'string')\r
- return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgidInvalid);\r
-\r
- if(!(criteria.SearchCriterion== "All" || criteria.SearchCriterion== "AccelerometerAxis" || criteria.SearchCriterion=="AccelerometerDoubleTapping" || criteria.SearchCriterion=="Orientation" || criteria.SearchCriterion=="Rotation"))\r
- return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgSearchParamInvalid);\r
-\r
- if(arguments.length > 1)\r
- return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgCriteriaMissing); \r
-\r
- DBase = context.getData(provider);\r
- var returnValue;\r
- returnValue = DBase[criteria.SearchCriterion] || [] ;\r
- \r
- return context.Result(returnValue,0); \r
- }\r
-\r
-\r
-\r
- /**\r
- * Sensor: RegisterForNotification\r
- * @param {Object} criteria, callback\r
- */\r
- function __RegisterForNotification(criteria, callback, flag){\r
- flag = flag || false;\r
- method = 'RegisterForNotification';\r
- context.notify(_t('%s:: RegisterForNotification not implemented in preview').arg(provider));\r
- \r
- if(arguments.length >2 && (typeof flag != "undefined" && typeof flag != "boolean"))\r
- return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgCriteriaMissing);\r
-\r
- if(typeof callback != 'function')\r
- return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgInsufficentArgument);\r
- \r
- \r
- if(!criteria)\r
- return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgIncompleteInput);\r
- \r
- if(typeof criteria != 'object')\r
- return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgIncompleteInput);\r
- \r
- if(typeof criteria.ListeningType == 'undefined' || typeof criteria.ChannelInfoMap == 'undefined')\r
- return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgIncompleteInput);\r
-\r
- if(typeof criteria.ListeningType != 'string')\r
- return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgListenTypeInvalid);\r
- \r
- if(typeof criteria.ChannelInfoMap != 'object')\r
- return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgChannelInfoMapInvalid);\r
- \r
- if(!(criteria.ListeningType== "ChannelData" ))\r
- return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgOutofRange);\r
-\r
- if(typeof callback == 'function')\r
- {\r
- var result = context.callAsync(this, arguments.callee, criteria, callback);\r
- transID.push(result.TransactionID);\r
- return result;\r
- }\r
- if(flag)\r
- transID.shift();\r
- \r
- return context.ErrorResult();\r
- }\r
-\r
-\r
- /**\r
- * Sensor: Cancel\r
- * @param {Object} criteria\r
- */\r
- function __Cancel(criteria){\r
- method = 'Cancel';\r
-\r
- if(arguments.length > 1 && typeof criteria != "object" && typeof criteria.TransactionID != "number" && arguments[1])\r
- return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgCriteriaMissing);\r
-\r
- if (!criteria || typeof criteria.TransactionID == 'undefined') \r
- return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgTransIDMissing);\r
-\r
- if (criteria.TransactionID == Infinity || criteria.TransactionID == -Infinity) \r
- return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgTransIDMissing);\r
- \r
- if (typeof criteria.TransactionID != 'number') \r
- return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgIncorrectTransID); \r
-\r
- for (var i=0; i<transID.length; i++) {
- if (criteria.TransactionID == transID[i]){\r
- clearTimeout(criteria.TransactionID);\r
- return context.ErrorResult();\r
- }
- };\r
- \r
- return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgInvalidTransID);\r
-\r
- }\r
-\r
-\r
- /**\r
- * Sensor: GetChannelProperty\r
- * @param {Object} criteria\r
- */\r
- function __GetChannelProperty(criteria){\r
- method = 'GetChannelProperty';\r
-\r
- if(!criteria)\r
- return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgIncompleteInput);\r
- \r
- if(typeof criteria != 'object')\r
- return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgIncompleteInput);\r
-\r
- if(typeof criteria.ChannelInfoMap == 'undefined' || typeof criteria.PropertyId == 'undefined')\r
- return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgIncompleteInput);\r
- \r
- if(typeof criteria.ChannelInfoMap != 'object')\r
- return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgChannelInfoMapInvalid);\r
- \r
- if(typeof criteria.PropertyId != 'string')\r
- return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgInvalidPropertyID);\r
- \r
- if(criteria.PropertyId != 'Availability' && criteria.PropertyId != "ChannelAccuracy" && criteria.PropertyId != "ChannelDataFormat" && criteria.PropertyId != "ChannelScale" && criteria.PropertyId != "ChannelUnit" && criteria.PropertyId != "ConnectionType" && criteria.PropertyId != "DataRate" && criteria.PropertyId != "Description" && criteria.PropertyId != "MeasureRange" && criteria.PropertyId != "ScaledRange" && criteria.PropertyId != "SensorModel")\r
- return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgInvalidPropertyID);\r
-\r
- if(arguments.length > 1)\r
- return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgCriteriaMissing); \r
-\r
- DBase = context.getData(provider);\r
- var property = DBase['SensorProperty'];\r
- if(typeof criteria.ChannelInfoMap['ChannelId'] == 'undefined' || typeof criteria.ChannelInfoMap['ChannelId'] != 'number')\r
- return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgChannelInfoMapInvalid);\r
-\r
- var channel = null;\r
- if(criteria.ChannelInfoMap['ChannelId'] == 7)\r
- {\r
- channel = 'AccelerometerAxis';\r
- }\r
- else if(criteria.ChannelInfoMap['ChannelId'] == 8)\r
- {\r
- channel = 'AccelerometerDoubleTapping';\r
- }\r
- else if(criteria.ChannelInfoMap['ChannelId'] == 10)\r
- {\r
- channel = 'Orientation';\r
- }\r
- else if(criteria.ChannelInfoMap['ChannelId'] == 11)\r
- {\r
- channel = 'Rotation';\r
- }\r
- \r
- if(channel == null)\r
- return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgChannelInfoMapInvalid);\r
- \r
- var returnValue = property[channel][criteria.PropertyId];\r
- if(typeof returnValue == 'undefined')\r
- return context.ErrorResult(device.implementation.ERR_NOT_FOUND);\r
- return context.Result(returnValue,0)\r
- }\r
-\r
- /**\r
- * Sensor: error\r
- * @param {number,string} ErrorCode and ErrorString\r
- * Replaces Error String with method name\r
- */\r
- function error(code, msg /*, args...*/){\r
-\r
- var args = ['Sensors',method].concat([].slice.call(arguments,2));\r
- msg = msg ? _t().arg.apply(msg,args) : undefined;\r
- return context.ErrorResult(code, msg);\r
- }\r
-\r
-\r
- /** \r
- * error messages\r
- * order of %s args: Service name, method name, parameter name \r
- */\r
- var msg = { \r
- msgInterfaceNotSupported : '%s:Requested interface not supported by the provider',\r
- msgInterfaceMissing : '%s:Interface name missing',\r
- msgInsufficentArgument : '%s:%s:Insufficent argument for asynchronous request',\r
- msgListenTypeMissing : '%s:%s:Listening type missing',\r
- msgListenTypeInvalid : '%s:%s:Listening type is invalid',\r
- msgChannelInfoMissing : '%s:%s:ChannelInfoMap missing',\r
- msgIncompleteInput : '%s:%s:Incomplete input param list',\r
- msgOutofRange : '%s:%s:Listening type is out of allowed range',\r
- msgCallbackMissing : '%s:%s:Callback missing',\r
- msgAlreadyRegistered : '%s:%s:Notification is already registered on this channel',\r
- msgCriteriaMissing : '%s:%s:Search criterion is missing',\r
- msgInvalidSearchCriteria : '%s:%s:Invalid Search Criterion',\r
- msgChannelSearchInvalid : '%s:%s:Channel search param type invalid',\r
- msgSearchParamInvalid : '%s:%s:Invalid channel search param',\r
- msgTransIDMissing : '%s:%s:Transaction id is missing',\r
- msgIncorrectTransID : '%s:%s:Incorrect TransactionID',\r
- msgInvalidTransID : '%s:%s:Invalid TransactionID',\r
- msgPropertyIDMissing : '%s:%s:Property id missing',\r
- msgInvalidPropertyID : '%s:%s:Property id is invalid',\r
- msgChannelNotSupported : '%s:%s:Channel property not supported',\r
- msgChannelInfoMapInvalid : '%s:%s:ChannelInfoMap Type Invalid'\r
- };\r
-\r
-}) ()
\ No newline at end of file