mypackage_wrt/preview/script/lib/sapi/Sensor.js
author victorp@symbian.org
Fri, 30 Apr 2010 15:01:03 +0100
changeset 42 20be4dd42b12
permissions -rwxr-xr-x
My package widget code
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     1
/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     2
 * Sensor.js
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     3
 * 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     4
 * Nokia Web Runtime Service API emulation 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     5
 * WRT v1.1
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     6
 * 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     7
 * Copyright 2009 Nokia Corporation. All rights reserved.
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     8
*/
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     9
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    10
(function(){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    11
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    12
	var provider = 'Service.Sensor',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    13
		Interface = 'ISensor';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    14
	var transID = new Array();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    15
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    16
	 * Sensor service
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    17
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    18
	var SensorService = function(){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    19
		this.FindSensorChannel 			= __FindSensorChannel;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    20
		this.RegisterForNotification	= __RegisterForNotification;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    21
		this.Cancel						= __Cancel;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    22
		this.GetChannelProperty			= __GetChannelProperty;		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    23
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    24
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    25
	device.implementation.extend(provider, Interface, new SensorService() );
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    26
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    27
	/******************************************************/	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    28
	/******************************************************/	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    29
	/******************************************************/	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    30
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    31
	var	context = device.implementation.context,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    32
		_t = context._t,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    33
		method = '',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    34
		result = false,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    35
		DBase = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    36
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    37
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    38
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    39
	 * Sensor: FindSensorChannel
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    40
	 * @param {Object} criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    41
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    42
	function __FindSensorChannel(criteria){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    43
		method = 'FindSensorChannel';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    44
		if(!criteria)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    45
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgCriteriaMissing);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    46
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    47
		if(typeof criteria != 'object')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    48
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgCriteriaMissing);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    49
						
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    50
		if(typeof criteria.SearchCriterion == 'undefined')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    51
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgDataMissing);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    52
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    53
		if(typeof criteria.SearchCriterion != 'string')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    54
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgidInvalid);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    55
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    56
		if(!(criteria.SearchCriterion== "All" || criteria.SearchCriterion== "AccelerometerAxis" || criteria.SearchCriterion=="AccelerometerDoubleTapping" || criteria.SearchCriterion=="Orientation" || criteria.SearchCriterion=="Rotation"))
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    57
		 	return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgSearchParamInvalid);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    58
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    59
		if(arguments.length > 1)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    60
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgCriteriaMissing);			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    61
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    62
		DBase = context.getData(provider);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    63
		var returnValue;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    64
		returnValue = DBase[criteria.SearchCriterion] || [] ;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    65
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    66
		return context.Result(returnValue,0);			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    67
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    68
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    69
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    70
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    71
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    72
	 * Sensor: RegisterForNotification
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    73
	 * @param {Object} criteria, callback
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    74
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    75
	function __RegisterForNotification(criteria, callback, flag){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    76
		flag = flag || false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    77
		method = 'RegisterForNotification';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    78
		context.notify(_t('%s:: RegisterForNotification not implemented in preview').arg(provider));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    79
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    80
		if(arguments.length >2 && (typeof flag != "undefined" && typeof flag != "boolean"))
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    81
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgCriteriaMissing);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    82
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    83
		if(typeof callback != 'function')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    84
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgInsufficentArgument);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    85
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    86
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    87
		if(!criteria)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    88
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgIncompleteInput);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    89
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    90
		if(typeof criteria != 'object')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    91
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgIncompleteInput);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    92
						
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    93
		if(typeof criteria.ListeningType == 'undefined' || typeof criteria.ChannelInfoMap == 'undefined')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    94
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgIncompleteInput);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    95
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    96
		if(typeof criteria.ListeningType != 'string')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    97
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgListenTypeInvalid);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    98
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    99
		if(typeof criteria.ChannelInfoMap != 'object')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   100
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgChannelInfoMapInvalid);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   101
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   102
		if(!(criteria.ListeningType== "ChannelData" ))
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   103
		 	return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgOutofRange);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   104
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   105
		if(typeof callback == 'function')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   106
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   107
			var result = context.callAsync(this, arguments.callee, criteria, callback);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   108
			transID.push(result.TransactionID);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   109
			return result;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   110
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   111
		if(flag)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   112
			transID.shift();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   113
				
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   114
		return context.ErrorResult();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   115
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   116
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   117
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   118
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   119
	 * Sensor: Cancel
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   120
	 * @param {Object} criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   121
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   122
	function __Cancel(criteria){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   123
		method = 'Cancel';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   124
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   125
		if(arguments.length > 1 && typeof criteria != "object" && typeof criteria.TransactionID != "number" && arguments[1])
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   126
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgCriteriaMissing);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   127
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   128
		if (!criteria || typeof criteria.TransactionID == 'undefined') 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   129
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgTransIDMissing);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   130
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   131
		if (criteria.TransactionID == Infinity || criteria.TransactionID == -Infinity) 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   132
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgTransIDMissing);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   133
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   134
		if (typeof criteria.TransactionID != 'number') 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   135
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgIncorrectTransID);		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   136
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   137
		for (var i=0; i<transID.length; i++) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   138
			if (criteria.TransactionID == transID[i]){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   139
				clearTimeout(criteria.TransactionID);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   140
				return context.ErrorResult();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   141
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   142
		};
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   143
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   144
		return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgInvalidTransID);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   145
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   146
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   147
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   148
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   149
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   150
	 * Sensor: GetChannelProperty
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   151
	 * @param {Object} criteria
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   152
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   153
	function __GetChannelProperty(criteria){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   154
		method = 'GetChannelProperty';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   155
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   156
		if(!criteria)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   157
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgIncompleteInput);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   158
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   159
		if(typeof criteria != 'object')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   160
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgIncompleteInput);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   161
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   162
		if(typeof criteria.ChannelInfoMap == 'undefined' || typeof criteria.PropertyId == 'undefined')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   163
			return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgIncompleteInput);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   164
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   165
		if(typeof criteria.ChannelInfoMap != 'object')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   166
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgChannelInfoMapInvalid);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   167
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   168
		if(typeof criteria.PropertyId != 'string')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   169
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgInvalidPropertyID);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   170
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   171
		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")
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   172
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgInvalidPropertyID);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   173
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   174
		if(arguments.length > 1)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   175
			return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgCriteriaMissing);			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   176
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   177
		DBase = context.getData(provider);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   178
		var property = DBase['SensorProperty'];
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   179
		if(typeof criteria.ChannelInfoMap['ChannelId'] == 'undefined' || typeof criteria.ChannelInfoMap['ChannelId'] != 'number')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   180
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgChannelInfoMapInvalid);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   181
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   182
		var channel = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   183
		if(criteria.ChannelInfoMap['ChannelId'] == 7)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   184
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   185
			channel = 'AccelerometerAxis';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   186
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   187
		else if(criteria.ChannelInfoMap['ChannelId'] == 8)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   188
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   189
			channel = 'AccelerometerDoubleTapping';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   190
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   191
		else if(criteria.ChannelInfoMap['ChannelId'] == 10)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   192
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   193
			channel = 'Orientation';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   194
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   195
		else if(criteria.ChannelInfoMap['ChannelId'] == 11)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   196
		{
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   197
			channel = 'Rotation';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   198
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   199
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   200
		if(channel == null)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   201
			return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgChannelInfoMapInvalid);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   202
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   203
		var returnValue = property[channel][criteria.PropertyId];
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   204
		if(typeof returnValue == 'undefined')
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   205
			return context.ErrorResult(device.implementation.ERR_NOT_FOUND);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   206
		return context.Result(returnValue,0)
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   207
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   208
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   209
	/**
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   210
	 * Sensor: error
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   211
	 * @param {number,string} ErrorCode and ErrorString
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   212
	 * Replaces Error String with method name
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   213
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   214
	function error(code, msg /*, args...*/){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   215
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   216
		var args = ['Sensors',method].concat([].slice.call(arguments,2));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   217
		msg = msg ? _t().arg.apply(msg,args) : undefined;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   218
		return context.ErrorResult(code, msg);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   219
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   220
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   221
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   222
	/** 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   223
	 * error messages
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   224
	 * order of %s args: Service name, method name, parameter name 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   225
	 */
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   226
	var msg = {	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   227
		msgInterfaceNotSupported 	: '%s:Requested interface not supported by the provider',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   228
		msgInterfaceMissing 		: '%s:Interface name missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   229
		msgInsufficentArgument 		: '%s:%s:Insufficent argument for asynchronous request',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   230
		msgListenTypeMissing 		: '%s:%s:Listening type missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   231
		msgListenTypeInvalid		: '%s:%s:Listening type is invalid',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   232
		msgChannelInfoMissing		: '%s:%s:ChannelInfoMap missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   233
		msgIncompleteInput			: '%s:%s:Incomplete input param list',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   234
		msgOutofRange				: '%s:%s:Listening type is out of allowed range',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   235
		msgCallbackMissing			: '%s:%s:Callback missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   236
		msgAlreadyRegistered		: '%s:%s:Notification is already registered on this channel',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   237
		msgCriteriaMissing			: '%s:%s:Search criterion is missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   238
		msgInvalidSearchCriteria	: '%s:%s:Invalid Search Criterion',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   239
		msgChannelSearchInvalid		: '%s:%s:Channel search param type invalid',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   240
		msgSearchParamInvalid		: '%s:%s:Invalid channel search param',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   241
		msgTransIDMissing			: '%s:%s:Transaction id is missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   242
		msgIncorrectTransID			: '%s:%s:Incorrect TransactionID',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   243
		msgInvalidTransID			: '%s:%s:Invalid TransactionID',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   244
		msgPropertyIDMissing		: '%s:%s:Property id missing',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   245
		msgInvalidPropertyID		: '%s:%s:Property id is invalid',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   246
		msgChannelNotSupported		: '%s:%s:Channel property not supported',
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   247
		msgChannelInfoMapInvalid	: '%s:%s:ChannelInfoMap Type Invalid'
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   248
	};
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   249
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   250
}) ()