From: Szymon Jastrzebski Date: Thu, 17 Aug 2017 07:05:15 +0000 (+0200) Subject: [Sensor] Fix for HRM Sensor X-Git-Tag: submit/tizen_3.0/20170821.110224~2^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F94%2F144294%2F5;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Sensor] Fix for HRM Sensor Currently, successCallback nor errorCallback functions are invoked after calling start() method for HRM sensor. This occurs only on platforms that do not support HRM sensor. Thus, it's better to invoke errorCallback in above case instead of successCallback. [Verification] Code compiles, TCT 100% pass rate (TM1, TW1), except emulators, which do not support HRM sensor. Sensor startSuccessCallbacks are invoked after receiving an event from sensors. Change-Id: I6484b44fd66f966c72b29fbc277b14f9006ca205 Signed-off-by: Szymon Jastrzebski --- diff --git a/src/sensor/sensor_service.cc b/src/sensor/sensor_service.cc index 2a7510a5..88f68b20 100755 --- a/src/sensor/sensor_service.cc +++ b/src/sensor/sensor_service.cc @@ -680,15 +680,21 @@ void HrmSensorData::AddSensor(SensorData* sensor) { PlatformResult HrmSensorData::CallMember(PlatformResult (SensorData::*member) ()) { LoggerD("Entered: %s", type_to_string_map[type()].c_str()); + bool is_any_supported = false; for (const auto& sensor : hrm_sensors_) { if (sensor.second->is_supported()) { + is_any_supported = true; auto res = (sensor.second.get()->*member)(); if (!res) { return res; } } } - return PlatformResult(ErrorCode::NO_ERROR); + if (is_any_supported) { + return PlatformResult(ErrorCode::NO_ERROR); + } else { + return PlatformResult(ErrorCode::NOT_SUPPORTED_ERR, "None HRM LED sensor is supported."); + } } PlatformResult HrmSensorData::CallMember( @@ -698,15 +704,21 @@ PlatformResult HrmSensorData::CallMember( const std::shared_ptr& result, const std::function&)>& work) { LoggerD("Entered: %s", type_to_string_map[type()].c_str()); + bool is_any_supported = false; for (const auto& sensor : hrm_sensors_) { if (sensor.second->is_supported()) { + is_any_supported = true; auto res = (sensor.second.get()->*member)(result, work); if (!res) { return res; } } } - return PlatformResult(ErrorCode::NO_ERROR); + if (is_any_supported) { + return PlatformResult(ErrorCode::NO_ERROR); + } else { + return PlatformResult(ErrorCode::NOT_SUPPORTED_ERR, "None HRM LED sensor is supported."); + } } PlatformResult HrmSensorData::IsSupportedImpl(bool* supported) const {