gravity_sensor::gravity_sensor()
: m_orientation_sensor(NULL)
-, m_x(INITIAL_VALUE)
-, m_y(INITIAL_VALUE)
-, m_z(INITIAL_VALUE)
, m_time(0)
{
cvirtual_sensor_config &config = cvirtual_sensor_config::get_instance();
if (m_time && (diff_time < m_interval * MIN_DELIVERY_DIFF_FACTOR))
return;
+ m_time = get_timestamp();
+
gravity_event.sensor_id = get_id();
gravity_event.event_type = GRAVITY_EVENT_RAW_DATA_REPORT_ON_TIME;
if ((roll >= (M_PI/2)-DEVIATION && roll <= (M_PI/2)+DEVIATION) ||
gravity_event.data.values[2] = m_gravity_sign_compensation[2] * GRAVITY * cos(roll) * cos(pitch);
}
gravity_event.data.value_count = 3;
- gravity_event.data.timestamp = get_timestamp();
+ gravity_event.data.timestamp = m_time;
gravity_event.data.accuracy = SENSOR_ACCURACY_GOOD;
push(gravity_event);
-
- {
- AUTOLOCK(m_value_mutex);
-
- m_time = gravity_event.data.timestamp;
- m_x = gravity_event.data.values[0];
- m_y = gravity_event.data.values[1];
- m_z = gravity_event.data.values[2];
- }
}
}
sensor_base *m_orientation_sensor;
cmutex m_value_mutex;
- float m_x;
- float m_y;
- float m_z;
int m_accuracy;
unsigned long long m_time;
unsigned int m_interval;
linear_accel_sensor::linear_accel_sensor()
: m_accel_sensor(NULL)
, m_gravity_sensor(NULL)
-, m_x(INITIAL_VALUE)
-, m_y(INITIAL_VALUE)
-, m_z(INITIAL_VALUE)
, m_time(0)
{
cvirtual_sensor_config &config = cvirtual_sensor_config::get_instance();
if (m_enable_linear_accel == LINEAR_ACCEL_ENABLED) {
m_enable_linear_accel = 0;
+ m_time = get_timestamp();
lin_accel_event.sensor_id = get_id();
lin_accel_event.event_type = LINEAR_ACCEL_EVENT_RAW_DATA_REPORT_ON_TIME;
lin_accel_event.data.value_count = 3;
- lin_accel_event.data.timestamp = get_timestamp();
+ lin_accel_event.data.timestamp = m_time;
lin_accel_event.data.accuracy = SENSOR_ACCURACY_GOOD;
lin_accel_event.data.values[0] = m_linear_accel_sign_compensation[0] * (m_accel.m_data.m_vec[0] - m_gravity.m_data.m_vec[0]);
lin_accel_event.data.values[1] = m_linear_accel_sign_compensation[1] * (m_accel.m_data.m_vec[1] - m_gravity.m_data.m_vec[1]);
lin_accel_event.data.values[2] = m_linear_accel_sign_compensation[2] * (m_accel.m_data.m_vec[2] - m_gravity.m_data.m_vec[2]);
push(lin_accel_event);
-
- {
- AUTOLOCK(m_value_mutex);
- m_time = lin_accel_event.data.timestamp;
- m_x = lin_accel_event.data.values[0];
- m_y = lin_accel_event.data.values[1];
- m_z = lin_accel_event.data.values[2];
- }
}
return;
sensor_data<float> m_accel;
sensor_data<float> m_gravity;
- float m_x;
- float m_y;
- float m_z;
unsigned long long m_time;
unsigned int m_interval;
: m_accel_sensor(NULL)
, m_gyro_sensor(NULL)
, m_magnetic_sensor(NULL)
-, m_roll(INITIAL_VALUE)
-, m_pitch(INITIAL_VALUE)
-, m_azimuth(INITIAL_VALUE)
, m_time(0)
{
cvirtual_sensor_config &config = cvirtual_sensor_config::get_instance();
azimuth_offset = AZIMUTH_OFFSET_RADIANS;
}
+ m_time = get_timestamp();
+
orientation_event.sensor_id = get_id();
orientation_event.event_type = ORIENTATION_EVENT_RAW_DATA_REPORT_ON_TIME;
orientation_event.data.accuracy = SENSOR_ACCURACY_GOOD;
- orientation_event.data.timestamp = get_timestamp();
+ orientation_event.data.timestamp = m_time;
orientation_event.data.value_count = 3;
orientation_event.data.values[1] = euler_orientation.m_ang.m_vec[0];
orientation_event.data.values[2] = euler_orientation.m_ang.m_vec[1];
else
orientation_event.data.values[0] = euler_orientation.m_ang.m_vec[2] + azimuth_offset;
- {
- AUTOLOCK(m_value_mutex);
- m_time = orientation_event.data.timestamp;
- m_azimuth = orientation_event.data.values[0];
- m_pitch = orientation_event.data.values[1];
- m_roll = orientation_event.data.values[2];
- }
-
push(orientation_event);
}
unsigned int m_enable_orientation;
- float m_roll;
- float m_pitch;
- float m_azimuth;
unsigned long long m_time;
unsigned int m_interval;
: m_accel_sensor(NULL)
, m_gyro_sensor(NULL)
, m_magnetic_sensor(NULL)
-, m_x(-1)
-, m_y(-1)
-, m_z(-1)
-, m_w(-1)
, m_accuracy(-1)
, m_time(0)
{
quaternion_orientation = m_orientation.get_9axis_quaternion(m_accel, m_gyro, m_magnetic);
}
+ m_time = get_timestamp();
+
rv_event.sensor_id = get_id();
rv_event.event_type = ROTATION_VECTOR_EVENT_RAW_DATA_REPORT_ON_TIME;
rv_event.data.accuracy = SENSOR_ACCURACY_GOOD;
- rv_event.data.timestamp = get_timestamp();
+ rv_event.data.timestamp = m_time;
rv_event.data.value_count = 4;
rv_event.data.values[0] = quaternion_orientation.m_quat.m_vec[1];
rv_event.data.values[1] = quaternion_orientation.m_quat.m_vec[2];
rv_event.data.values[3] = quaternion_orientation.m_quat.m_vec[0];
push(rv_event);
-
- {
- AUTOLOCK(m_value_mutex);
- m_time = rv_event.data.value_count;
- m_x = rv_event.data.values[0];
- m_y = rv_event.data.values[1];
- m_z = rv_event.data.values[2];
- m_w = rv_event.data.values[3];
- }
}
return;
unsigned int m_enable_orientation;
- float m_x;
- float m_y;
- float m_z;
- float m_w;
int m_accuracy;
unsigned long long m_time;
unsigned int m_interval;