From: Pawel Wasowski
Date: Wed, 19 Apr 2017 11:56:01 +0000 (+0200)
Subject: [Sensor] Add uncalibrated gyroscope and geomagnetic sensor types
X-Git-Tag: submit/tizen/20170802.090121~6
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c6de141d1a6eca681c0f881849869684be86945b;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[Sensor] Add uncalibrated gyroscope and geomagnetic sensor types
Change-Id: Ideac79341070ce075fec3d3baa509c88dbd117a2
Signed-off-by: Pawel Wasowski
---
diff --git a/src/sensor/sensor_api.js b/src/sensor/sensor_api.js
index f30b58da..fec5ed52 100755
--- a/src/sensor/sensor_api.js
+++ b/src/sensor/sensor_api.js
@@ -33,7 +33,9 @@ var SensorType = {
GRAVITY : 'GRAVITY',
GYROSCOPE : 'GYROSCOPE',
GYROSCOPE_ROTATION_VECTOR : 'GYROSCOPE_ROTATION_VECTOR',
- LINEAR_ACCELERATION : 'LINEAR_ACCELERATION'
+ LINEAR_ACCELERATION : 'LINEAR_ACCELERATION',
+ MAGNETIC_UNCALIBRATED : 'MAGNETIC_UNCALIBRATED',
+ GYROSCOPE_UNCALIBRATED : 'GYROSCOPE_UNCALIBRATED'
};
var ProximityState = {
@@ -157,7 +159,9 @@ var _sensorListeners = {
'GRAVITY' : {},
'GYROSCOPE' : {},
'GYROSCOPE_ROTATION_VECTOR' : {},
- 'LINEAR_ACCELERATION' : {}
+ 'LINEAR_ACCELERATION' : {},
+ 'MAGNETIC_UNCALIBRATED' : {},
+ 'GYROSCOPE_UNCALIBRATED' : {}
};
var _listener = function(object) {
@@ -216,6 +220,10 @@ function getDefaultSensor() {
return new GyroscopeRotationVectorSensor();
} else if (_supportedSensors[index] === SensorType.LINEAR_ACCELERATION){
return new LinearAccelerationSensor();
+ } else if (_supportedSensors[index] === SensorType.MAGNETIC_UNCALIBRATED) {
+ return new MagneticUncalibratedSensor();
+ } else if (_supportedSensors[index] === SensorType.GYROSCOPE_UNCALIBRATED) {
+ return new GyroscopeUncalibratedSensor();
}
};
@@ -616,6 +624,71 @@ LinearAccelerationSensor.prototype.getLinearAccelerationSensorData = function()
_sensorListeners[this.sensorType].getData(args.successCallback, errorWrapper);
};
+//// MagneticUncalibratedSensor
+var MagneticUncalibratedSensor = function(data) {
+ Sensor.call(this, SensorType.MAGNETIC_UNCALIBRATED);
+};
+
+MagneticUncalibratedSensor.prototype = new Sensor();
+
+MagneticUncalibratedSensor.prototype.constructor = new Sensor;
+
+MagneticUncalibratedSensor.prototype.getMagneticUncalibratedSensorData = function() {
+ var args = validator_.validateArgs(arguments, [
+ {
+ name : 'successCallback',
+ type : types_.FUNCTION
+ },
+ {
+ name : 'errorCallback',
+ type : types_.FUNCTION,
+ optional : true,
+ nullable : true
+ }
+ ]);
+
+ function errorWrapper(err) {
+ if (err.name === "UnknownError") {
+ args.errorCallback(new WebAPIException(WebAPIException.ABORT_ERR, err.message));
+ } else {
+ args.errorCallback(err);
+ }
+ }
+ _sensorListeners[this.sensorType].getData(args.successCallback, errorWrapper);
+}
+
+//// GyroscopeUncalibratedSensor
+var GyroscopeUncalibratedSensor = function(data) {
+ Sensor.call(this, SensorType.GYROSCOPE_UNCALIBRATED);
+};
+
+GyroscopeUncalibratedSensor.prototype = new Sensor();
+
+GyroscopeUncalibratedSensor.prototype.constructor = new Sensor;
+
+GyroscopeUncalibratedSensor.prototype.getGyroscopeUncalibratedSensorData = function() {
+ var args = validator_.validateArgs(arguments, [
+ {
+ name : 'successCallback',
+ type : types_.FUNCTION
+ },
+ {
+ name : 'errorCallback',
+ type : types_.FUNCTION,
+ optional : true,
+ nullable : true
+ }
+ ]);
+
+ function errorWrapper(err) {
+ if (err.name === "UnknownError") {
+ args.errorCallback(new WebAPIException(WebAPIException.ABORT_ERR, err.message));
+ } else {
+ args.errorCallback(err);
+ }
+ }
+ _sensorListeners[this.sensorType].getData(args.successCallback, errorWrapper);
+}
////////////////////// Sensor Data classes/////////////////////////////////////////////////////
////Base SensorData class
@@ -787,6 +860,46 @@ SensorLinearAccelerationData.prototype.constructor = SensorData;
_sensorListeners[SensorType.LINEAR_ACCELERATION] = new SensorListener(SensorType.LINEAR_ACCELERATION,
SensorLinearAccelerationData);
+//// SensorMagneticUncalibratedData
+var SensorMagneticUncalibratedData = function(data) {
+ SensorData.call(this);
+ Object.defineProperties(this, {
+ x : {value: data.x, writable: false, enumerable: true},
+ y : {value: data.y, writable: false, enumerable: true},
+ z : {value: data.z, writable: false, enumerable: true},
+ xAxisBias : {value: data.xAxisBias, writable: false, enumerable: true},
+ yAxisBias : {value: data.yAxisBias, writable: false, enumerable: true},
+ zAxisBias : {value: data.zAxisBias, writable: false, enumerable: true}
+ });
+};
+
+SensorMagneticUncalibratedData.prototype = new SensorData();
+
+SensorMagneticUncalibratedData.prototype.constructor = SensorData;
+
+_sensorListeners[SensorType.MAGNETIC_UNCALIBRATED] = new SensorListener(SensorType.MAGNETIC_UNCALIBRATED,
+ SensorMagneticUncalibratedData);
+
+//// SensorGyroscopeUncalibratedData
+var SensorGyroscopeUncalibratedData = function(data) {
+ SensorData.call(this);
+ Object.defineProperties(this, {
+ x : {value: data.x, writable: false, enumerable: true},
+ y : {value: data.y, writable: false, enumerable: true},
+ z : {value: data.z, writable: false, enumerable: true},
+ xAxisDrift : {value: data.xAxisDrift, writable: false, enumerable: true},
+ yAxisDrift : {value: data.yAxisDrift, writable: false, enumerable: true},
+ zAxisDrift : {value: data.zAxisDrift, writable: false, enumerable: true}
+ });
+
+};
+
+SensorGyroscopeUncalibratedData.prototype = new SensorData();
+
+SensorGyroscopeUncalibratedData.prototype.constructor = SensorData;
+
+_sensorListeners[SensorType.GYROSCOPE_UNCALIBRATED] = new SensorListener(SensorType.GYROSCOPE_UNCALIBRATED,
+ SensorGyroscopeUncalibratedData);
//////////////////////SensorHardwareInfo classes//////////////////////////////////////////////////////////
function SensorHardwareInfo(data) {
diff --git a/src/sensor/sensor_service.cc b/src/sensor/sensor_service.cc
index ae76ba08..09206ef1 100755
--- a/src/sensor/sensor_service.cc
+++ b/src/sensor/sensor_service.cc
@@ -128,6 +128,24 @@ void ReportSensorData(sensor_type_e sensor_type, sensor_event_s* sensor_event,
(*out)["z"] = picojson::value(static_cast(sensor_event->values[2]));
break;
}
+ case SENSOR_GEOMAGNETIC_UNCALIBRATED: {
+ (*out)["x"] = picojson::value(static_cast(sensor_event->values[0]));
+ (*out)["y"] = picojson::value(static_cast(sensor_event->values[1]));
+ (*out)["z"] = picojson::value(static_cast(sensor_event->values[2]));
+ (*out)["xAxisBias"] = picojson::value(static_cast(sensor_event->values[3]));
+ (*out)["yAxisBias"] = picojson::value(static_cast(sensor_event->values[4]));
+ (*out)["zAxisBias"] = picojson::value(static_cast(sensor_event->values[5]));
+ break;
+ }
+ case SENSOR_GYROSCOPE_UNCALIBRATED: {
+ (*out)["x"] = picojson::value(static_cast(sensor_event->values[0]));
+ (*out)["y"] = picojson::value(static_cast(sensor_event->values[1]));
+ (*out)["z"] = picojson::value(static_cast(sensor_event->values[2]));
+ (*out)["xAxisDrift"] = picojson::value(static_cast(sensor_event->values[3]));
+ (*out)["yAxisDrift"] = picojson::value(static_cast(sensor_event->values[4]));
+ (*out)["zAxisDrift"] = picojson::value(static_cast(sensor_event->values[5]));
+ break;
+ }
default: {
LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unsupported type"), out);
return;
@@ -706,6 +724,8 @@ SensorService::SensorService(SensorInstance& instance)
AddSensor(new SensorData(instance, SENSOR_GYROSCOPE, "GYROSCOPE"));
AddSensor(new SensorData(instance, SENSOR_GYROSCOPE_ROTATION_VECTOR, "GYROSCOPE_ROTATION_VECTOR"));
AddSensor(new SensorData(instance, SENSOR_LINEAR_ACCELERATION, "LINEAR_ACCELERATION"));
+ AddSensor(new SensorData(instance, SENSOR_GEOMAGNETIC_UNCALIBRATED, "MAGNETIC_UNCALIBRATED"));
+ AddSensor(new SensorData(instance, SENSOR_GYROSCOPE_UNCALIBRATED, "GYROSCOPE_UNCALIBRATED"));
}
SensorService::~SensorService() {