ultraviolet_sensor::ultraviolet_sensor()
: m_sensor_hal(NULL)
-, m_resolution(0.0f)
{
m_name = string(SENSOR_NAME);
return false;
}
- m_resolution = properties.resolution;
-
INFO("%s is created!", sensor_base::get_name());
return true;
void ultraviolet_sensor::raw_to_base(sensor_data_t &data)
{
- data.values[0] = data.values[0] * m_resolution;
- data.value_count = 1;
+
}
extern "C" sensor_module* create(void)
virtual int get_sensor_data(unsigned int type, sensor_data_t &data);
private:
sensor_hal *m_sensor_hal;
- float m_resolution;
virtual bool on_start(void);
virtual bool on_stop(void);
bool ultraviolet_sensor_hal::update_value(bool wait)
{
int ultraviolet_raw = -1;
+ bool ultraviolet_sign = false;
bool ultraviolet = false;
int read_input_cnt = 0;
const int INPUT_MAX_BEFORE_SYN = 10;
++read_input_cnt;
if (ultraviolet_event.type == EV_REL && ultraviolet_event.code == REL_X) {
- ultraviolet_raw = (int)ultraviolet_event.value - BIAS;
+ ultraviolet_raw = (int)ultraviolet_event.value;
ultraviolet = true;
+ } else if (ultraviolet_event.type == EV_REL && ultraviolet_event.code == REL_Y) {
+ ultraviolet_sign = ((int)ultraviolet_event.value < 0) ? false : true;
} else if (ultraviolet_event.type == EV_SYN) {
syn = true;
fired_time = sensor_hal::get_timestamp(&ultraviolet_event.time);
AUTOLOCK(m_value_mutex);
- if (ultraviolet)
- m_ultraviolet = ultraviolet_raw;
+ if (ultraviolet && ultraviolet_sign)
+ m_ultraviolet = ultraviolet_raw - BIAS;
+ else
+ return false;
m_fired_time = fired_time;