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);
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;
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;
"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;
a_time, gain, ir,
rp1, gp1, bp1, cp1, cpl);
}
+
+ return true;
}
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_ */