/* sensor fw read the data when is_data_ready() is true */
virtual bool is_data_ready() = 0;
virtual bool get_sensor_data(uint32_t id, sensor_data_t &data) = 0;
+ virtual int get_sensor_event(uint32_t id, sensor_event_t **event) = 0;
/* TODO: use get_sensors() instead of get_properties() */
virtual bool get_properties(uint32_t id, sensor_properties_s &properties) = 0;
return true;
}
+int accel_sensor_hal::get_sensor_event(uint32_t id, sensor_event_t **event)
+{
+ sensor_event_t *sensor_event;
+ sensor_event = (sensor_event_t *)malloc(sizeof(sensor_event_t));
+
+ sensor_event->data.accuracy = SENSOR_ACCURACY_GOOD;
+ sensor_event->data.timestamp = m_fired_time;
+ sensor_event->data.value_count = 3;
+ sensor_event->data.values[0] = m_x;
+ sensor_event->data.values[1] = m_y;
+ sensor_event->data.values[2] = m_z;
+
+ raw_to_base(sensor_event->data);
+
+ *event = sensor_event;
+
+ return sizeof(sensor_event_t);
+}
+
void accel_sensor_hal::raw_to_base(sensor_data_t &data)
{
data.value_count = 3;
bool set_command(uint32_t id, std::string command, std::string value);
bool is_data_ready(void);
bool get_sensor_data(uint32_t id, sensor_data_t &data);
+ int get_sensor_event(uint32_t id, sensor_event_t **event);
bool get_properties(uint32_t id, sensor_properties_s &properties);
private: