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() {