From: kibak.yoon Date: Fri, 9 Sep 2016 06:13:01 +0000 (+0900) Subject: sensor-hal-tm2: check if the light event value is invalid X-Git-Tag: submit/tizen_mobile/20160909.095211^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=30a053706ff83c209f833982ee03146a8441e87f;p=platform%2Fadaptation%2Ftm2%2Fsensor-hal-tm2.git sensor-hal-tm2: check if the light event value is invalid Change-Id: I927bb0485e624679490aa4a99bd55af9782173a1 Signed-off-by: kibak.yoon --- diff --git a/src/light/light_device.cpp b/src/light/light_device.cpp index c98ed3c..bfebe3e 100644 --- a/src/light/light_device.cpp +++ b/src/light/light_device.cpp @@ -238,7 +238,11 @@ bool light_device::update_value_lux(void) return false; } - compute_lux_tmg399x(raw_red, raw_green, raw_blue, raw_white, raw_ir_cmp, raw_amb_pga); + if (!compute_lux_tmg399x(raw_red, raw_green, raw_blue, raw_white, raw_ir_cmp, raw_amb_pga)) { + _E("Failed to compute lux"); + return false; + } + m_fired_time = fired_time; _D("update_value_lux, lux : %d", m_lux); @@ -279,7 +283,7 @@ int light_device::get_data(uint32_t id, sensor_data_t **data, int *length) return 0; } -void light_device::compute_lux_tmg399x(size_t red, size_t green, size_t blue, size_t clear, size_t a_time, size_t a_gain) +bool light_device::compute_lux_tmg399x(size_t red, size_t green, size_t blue, size_t clear, size_t a_time, size_t a_gain) { const int luxgain[4] = {1, 4, 16, 64}; size_t rp1, gp1, bp1, cp1; @@ -288,6 +292,11 @@ void light_device::compute_lux_tmg399x(size_t red, size_t green, size_t blue, si int ir; int sat; + if (a_gain > 3) { + _E("Invalid a_gain value : %d", a_gain); + return false; + } + sat = min_t(MAX_ALS_VALUE, ((256 - a_time) << 10)); sat = sat * 7 / 10; @@ -303,7 +312,7 @@ void light_device::compute_lux_tmg399x(size_t red, size_t green, size_t blue, si "RED : %d, GREEN : %d, BLUE : %d, CLEAR : %d," "Lux = %f, CCT = %f, sat = %d", red, green, blue, clear, calculated_lux, m_cct, sat); - return; + return true; } ir = red + green + blue - clear + 1; @@ -400,5 +409,7 @@ void light_device::compute_lux_tmg399x(size_t red, size_t green, size_t blue, si a_time, gain, ir, rp1, gp1, bp1, cp1, cpl); } + + return true; } diff --git a/src/light/light_device.h b/src/light/light_device.h index c21e4fc..bac7648 100644 --- a/src/light/light_device.h +++ b/src/light/light_device.h @@ -58,6 +58,6 @@ private: bool update_value_lux(void); - void compute_lux_tmg399x(size_t red, size_t green, size_t blue, size_t clear, size_t a_time, size_t a_gain); + bool compute_lux_tmg399x(size_t red, size_t green, size_t blue, size_t clear, size_t a_time, size_t a_gain); }; #endif /* _LIGHT_DEVICE_H_ */