[Sensor] Add acceleration sensor implementation 36/146036/4
authorPawel Wasowski <p.wasowski2@partner.samsung.com>
Fri, 21 Jul 2017 12:48:31 +0000 (14:48 +0200)
committerPawel Wasowski <p.wasowski2@partner.samsung.com>
Wed, 6 Sep 2017 09:03:04 +0000 (11:03 +0200)
[Verification] The code was tested in Chrome Dev Tools console and
               worked fine.

Change-Id: I56347e6f0ac2b71ff18d96d1b854b600a30a5dd2
Signed-off-by: Pawel Wasowski <p.wasowski2@partner.samsung.com>
src/sensor/sensor_api.js
src/sensor/sensor_service.cc

index 609780c83a7dc1dc9a0209c120a88013cdca55c9..65ef8988fda098350e5a5d0c7d09c79c5adc64d6 100755 (executable)
@@ -35,7 +35,8 @@ var SensorType = {
     GYROSCOPE_ROTATION_VECTOR : 'GYROSCOPE_ROTATION_VECTOR',
     LINEAR_ACCELERATION : 'LINEAR_ACCELERATION',
     MAGNETIC_UNCALIBRATED : 'MAGNETIC_UNCALIBRATED',
-    GYROSCOPE_UNCALIBRATED : 'GYROSCOPE_UNCALIBRATED'
+    GYROSCOPE_UNCALIBRATED : 'GYROSCOPE_UNCALIBRATED',
+    ACCELERATION : 'ACCELERATION'
 };
 
 var ProximityState = {
@@ -161,7 +162,8 @@ var _sensorListeners = {
     'GYROSCOPE_ROTATION_VECTOR' : {},
     'LINEAR_ACCELERATION' : {},
     'MAGNETIC_UNCALIBRATED' : {},
-    'GYROSCOPE_UNCALIBRATED' : {}
+    'GYROSCOPE_UNCALIBRATED' : {},
+    'ACCELERATION' : {}
 };
 
 var errorWrapper = function (err) {
@@ -234,7 +236,9 @@ function getDefaultSensor() {
     } else if (_supportedSensors[index] === SensorType.MAGNETIC_UNCALIBRATED) {
         return new MagneticUncalibratedSensor();
     } else if (_supportedSensors[index] === SensorType.GYROSCOPE_UNCALIBRATED) {
-       return new GyroscopeUncalibratedSensor();
+        return new GyroscopeUncalibratedSensor();
+    } else if (_supportedSensors[index] === SensorType.ACCELERATION) {
+        return new AccelerationSensor();
     }
 };
 
@@ -659,6 +663,32 @@ GyroscopeUncalibratedSensor.prototype.getGyroscopeUncalibratedSensorData = funct
     _sensorListeners[this.sensorType].getData(args.successCallback, errorWrapper.bind(args));
 };
 
+//// AccelerationSensor
+var AccelerationSensor = function(data) {
+    Sensor.call(this, SensorType.ACCELERATION);
+};
+
+AccelerationSensor.prototype = new Sensor();
+
+AccelerationSensor.prototype.constructor = Sensor;
+
+AccelerationSensor.prototype.getAccelerationSensorData = function() {
+    var args = validator_.validateArgs(arguments, [
+       {
+           name : 'successCallback',
+           type : types_.FUNCTION
+       },
+       {
+           name : 'errorCallback',
+           type : types_.FUNCTION,
+           optional : true,
+           nullable : true
+       }
+    ]);
+
+    _sensorListeners[this.sensorType].getData(args.successCallback, errorWrapper.bind(args));
+};
+
 ////////////////////// Sensor Data classes/////////////////////////////////////////////////////
 ////Base SensorData class
 var SensorData = function () {
@@ -870,6 +900,23 @@ SensorGyroscopeUncalibratedData.prototype.constructor = SensorData;
 _sensorListeners[SensorType.GYROSCOPE_UNCALIBRATED] = new SensorListener(SensorType.GYROSCOPE_UNCALIBRATED,
     SensorGyroscopeUncalibratedData);
 
+//// SensorAccelerationData
+var SensorAccelerationData = 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},
+    });
+};
+
+SensorAccelerationData.prototype = new SensorData();
+
+SensorAccelerationData.prototype.constructor = SensorData;
+
+_sensorListeners[SensorType.ACCELERATION] = new SensorListener(SensorType.ACCELERATION,
+        SensorAccelerationData);
+
 //////////////////////SensorHardwareInfo classes//////////////////////////////////////////////////////////
 function SensorHardwareInfo(data) {
     Object.defineProperties(this, {
index 9e3164af8c9529383dd0fe3f861cf85220b46d20..dd59b8ad7050481d49720ce969f487de97797afc 100755 (executable)
@@ -146,6 +146,12 @@ void ReportSensorData(sensor_type_e sensor_type, sensor_event_s* sensor_event,
       (*out)["zAxisDrift"] = picojson::value(static_cast<double>(sensor_event->values[5]));
       break;
     }
+    case SENSOR_ACCELEROMETER: {
+      (*out)["x"] = picojson::value(static_cast<double>(sensor_event->values[0]));
+      (*out)["y"] = picojson::value(static_cast<double>(sensor_event->values[1]));
+      (*out)["z"] = picojson::value(static_cast<double>(sensor_event->values[2]));
+      break;
+    }
     default: {
       LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unsupported type"), out);
       return;
@@ -848,6 +854,7 @@ SensorService::SensorService(SensorInstance& instance)
   AddSensor(new SensorData(instance, SENSOR_LINEAR_ACCELERATION, "LINEAR_ACCELERATION", 3));
   AddSensor(new SensorData(instance, SENSOR_GEOMAGNETIC_UNCALIBRATED, "MAGNETIC_UNCALIBRATED", 6));
   AddSensor(new SensorData(instance, SENSOR_GYROSCOPE_UNCALIBRATED, "GYROSCOPE_UNCALIBRATED", 6));
+  AddSensor(new SensorData(instance, SENSOR_ACCELEROMETER, "ACCELERATION", 3));
 }
 
 SensorService::~SensorService() {