From 83b247d08b567daecc2ffc1233e2f7bcc386603d Mon Sep 17 00:00:00 2001 From: Szymon Jastrzebski Date: Thu, 17 Aug 2017 09:05:15 +0200 Subject: [PATCH] [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 --- src/sensor/sensor_service.cc | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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 { -- 2.34.1