[Sensor] Added additional check for HRM sensor
authorPiotr Kosko <p.kosko@samsung.com>
Fri, 26 Jun 2015 12:25:14 +0000 (14:25 +0200)
committerPiotr Kosko <p.kosko@samsung.com>
Fri, 26 Jun 2015 13:36:31 +0000 (15:36 +0200)
[Feature] Added additional 'is supported' check for HRM_RAW sensor.
  Added returning default values when no available HRM sensors.

[Verification] Code compiles without errors.
  TCT passrate 100%.

Change-Id: I77e65de28a97fe8984edb96d42bf4d6396877b2b
Signed-off-by: Piotr Kosko <p.kosko@samsung.com>
src/sensor/sensor_service.cc

index f1cfa8ef12bda32fbcd9efd2cefbb7456495a051..d23ec67fd71fc35430be81c2c3663475977c38e3 100644 (file)
@@ -286,6 +286,7 @@ PlatformResult SensorData::IsSupportedImpl(bool* supported) const {
     return GetSensorPlatformResult(ret, "sensor_is_supported");
   } else {
     *supported = is_supported;
+    LoggerD("supported: %d", is_supported);
     return PlatformResult(ErrorCode::NO_ERROR);
   }
 }
@@ -470,15 +471,23 @@ PlatformResult HrmSensorData::IsSupportedImpl(bool* supported) const {
   LoggerD("Entered: %s", type_to_string_map[type()].c_str());
   bool result = false;
 
+  bool hrm_supported = false;
+  int ret = sensor_is_supported(SENSOR_HRM, &hrm_supported);
+  if (ret == SENSOR_ERROR_NONE){
+    LoggerD("HRM support is: %d", hrm_supported);
+    result |= hrm_supported;
+  }
+
   for (const auto& sensor : hrm_sensors_) {
     bool is_supported = false;
     auto res = sensor.second->IsSupported(&is_supported);
+    LoggerD("supported: %d", is_supported);
     if (!res) {
       return res;
     }
     result |= is_supported;
   }
-
+  LoggerD("result supported: %d", result);
   *supported = result;
   return PlatformResult(ErrorCode::NO_ERROR);
 }
@@ -513,7 +522,16 @@ PlatformResult HrmSensorData::GetSensorData(picojson::object* data) {
     }
   }
 
-  return PlatformResult(ErrorCode::UNKNOWN_ERR, "There are no supported HRM sensors.");
+  // use default values when are no available HRM sensors
+  const sensor_type_e default_sensor_type = SENSOR_HRM_LED_IR;
+  const double default_sensor_value = 0.0;
+
+  LoggerD("There are no supported HRM sensors - returning default values");
+  (*data)["lightType"] = picojson::value(type_to_string_map[default_sensor_type]);
+  (*data)["lightIntensity"] = picojson::value(default_sensor_value);
+  (*data)[kListenerId] = picojson::value(kSensorChangedListener);
+  (*data)[kSensorTypeTag] = picojson::value(type_to_string_map[default_sensor_type]);
+  return PlatformResult(ErrorCode::NO_ERROR);
 }
 
 SensorService::SensorService(SensorInstance& instance)