if (m_enable_orientation == ORIENTATION_ENABLED) {
m_enable_orientation = 0;
- m_orientation.m_pitch_phase_compensation = m_pitch_rotation_compensation;
- m_orientation.m_roll_phase_compensation = m_roll_rotation_compensation;
- m_orientation.m_azimuth_phase_compensation = m_azimuth_rotation_compensation;
- m_orientation.m_magnetic_alignment_factor = m_magnetic_alignment_factor;
-
- {
- AUTOLOCK(m_fusion_mutex);
- euler_orientation = m_orientation.get_orientation(m_accel, m_gyro, m_magnetic);
- }
+ m_orientation_filter.m_pitch_phase_compensation = m_pitch_rotation_compensation;
+ m_orientation_filter.m_roll_phase_compensation = m_roll_rotation_compensation;
+ m_orientation_filter.m_azimuth_phase_compensation = m_azimuth_rotation_compensation;
+ m_orientation_filter.m_magnetic_alignment_factor = m_magnetic_alignment_factor;
+
+ euler_orientation = m_orientation_filter.get_orientation(m_accel, m_gyro, m_magnetic);
if(m_raw_data_unit == "DEGREES") {
euler_orientation = rad2deg(euler_orientation);
gyro.m_time_stamp = gyro_data.timestamp;
magnetic.m_time_stamp = magnetic_data.timestamp;
- m_orientation.m_pitch_phase_compensation = m_pitch_rotation_compensation;
- m_orientation.m_roll_phase_compensation = m_roll_rotation_compensation;
- m_orientation.m_azimuth_phase_compensation = m_azimuth_rotation_compensation;
- m_orientation.m_magnetic_alignment_factor = m_magnetic_alignment_factor;
+ m_orientation_filter_poll.m_pitch_phase_compensation = m_pitch_rotation_compensation;
+ m_orientation_filter_poll.m_roll_phase_compensation = m_roll_rotation_compensation;
+ m_orientation_filter_poll.m_azimuth_phase_compensation = m_azimuth_rotation_compensation;
+ m_orientation_filter_poll.m_magnetic_alignment_factor = m_magnetic_alignment_factor;
- {
- AUTOLOCK(m_fusion_mutex);
- euler_orientation = m_orientation.get_orientation(m_accel, m_gyro, m_magnetic);
- }
+ euler_orientation = m_orientation_filter_poll.get_orientation(m_accel, m_gyro, m_magnetic);
if(m_raw_data_unit == "DEGREES") {
euler_orientation = rad2deg(euler_orientation);
cmutex m_value_mutex;
- orientation_filter<float> m_orientation;
+ orientation_filter<float> m_orientation_filter;
+ orientation_filter<float> m_orientation_filter_poll;
unsigned int m_enable_orientation;
if (m_enable_gaming_rv == GAMING_RV_ENABLED) {
m_enable_gaming_rv = 0;
- {
- AUTOLOCK(m_fusion_mutex);
- quaternion_gaming_rv = m_orientation_filter.get_gaming_quaternion(m_accel, m_gyro);
- }
+ quaternion_gaming_rv = m_orientation_filter.get_gaming_quaternion(m_accel, m_gyro);
m_time = get_timestamp();
rv_event.sensor_id = get_id();
accel.m_time_stamp = accel_data.timestamp;
gyro.m_time_stamp = gyro_data.timestamp;
- {
- AUTOLOCK(m_fusion_mutex);
- quaternion_gaming_rv = m_orientation_filter.get_gaming_quaternion(m_accel, m_gyro);
- }
+ quaternion_gaming_rv = m_orientation_filter_poll.get_gaming_quaternion(m_accel, m_gyro);
data.accuracy = SENSOR_ACCURACY_GOOD;
data.timestamp = get_timestamp();
cmutex m_value_mutex;
orientation_filter<float> m_orientation_filter;
+ orientation_filter<float> m_orientation_filter_poll;
unsigned int m_enable_gaming_rv;
m_orientation_filter.m_magnetic_alignment_factor = m_magnetic_alignment_factor;
- {
- AUTOLOCK(m_fusion_mutex);
- quaternion_geo_rv = m_orientation_filter.get_geomagnetic_quaternion(m_accel, m_magnetic);
- }
+ quaternion_geo_rv = m_orientation_filter.get_geomagnetic_quaternion(m_accel, m_magnetic);
m_time = get_timestamp();
rv_event.sensor_id = get_id();
accel.m_time_stamp = accel_data.timestamp;
magnetic.m_time_stamp = magnetic_data.timestamp;
- m_orientation_filter.m_magnetic_alignment_factor = m_magnetic_alignment_factor;
+ m_orientation_filter_poll.m_magnetic_alignment_factor = m_magnetic_alignment_factor;
- {
- AUTOLOCK(m_fusion_mutex);
- quaternion_geo_rv = m_orientation_filter.get_geomagnetic_quaternion(m_accel, m_magnetic);
- }
+ quaternion_geo_rv = m_orientation_filter_poll.get_geomagnetic_quaternion(m_accel, m_magnetic);
data.accuracy = SENSOR_ACCURACY_GOOD;
data.timestamp = get_timestamp();
cmutex m_value_mutex;
orientation_filter<float> m_orientation_filter;
+ orientation_filter<float> m_orientation_filter_poll;
unsigned int m_enable_geomagnetic_rv;
if (m_enable_orientation == ORIENTATION_ENABLED) {
m_enable_orientation = 0;
- m_orientation.m_pitch_phase_compensation = m_pitch_rotation_compensation;
- m_orientation.m_roll_phase_compensation = m_roll_rotation_compensation;
- m_orientation.m_azimuth_phase_compensation = m_azimuth_rotation_compensation;
- m_orientation.m_magnetic_alignment_factor = m_magnetic_alignment_factor;
+ m_orientation_filter.m_pitch_phase_compensation = m_pitch_rotation_compensation;
+ m_orientation_filter.m_roll_phase_compensation = m_roll_rotation_compensation;
+ m_orientation_filter.m_azimuth_phase_compensation = m_azimuth_rotation_compensation;
+ m_orientation_filter.m_magnetic_alignment_factor = m_magnetic_alignment_factor;
- {
- AUTOLOCK(m_fusion_mutex);
- quaternion_orientation = m_orientation.get_9axis_quaternion(m_accel, m_gyro, m_magnetic);
- }
+ quaternion_orientation = m_orientation_filter.get_9axis_quaternion(m_accel, m_gyro, m_magnetic);
m_time = get_timestamp();
rv_event.sensor_id = get_id();
gyro.m_time_stamp = gyro_data.timestamp;
magnetic.m_time_stamp = magnetic_data.timestamp;
- m_orientation.m_pitch_phase_compensation = m_pitch_rotation_compensation;
- m_orientation.m_roll_phase_compensation = m_roll_rotation_compensation;
- m_orientation.m_azimuth_phase_compensation = m_azimuth_rotation_compensation;
- m_orientation.m_magnetic_alignment_factor = m_magnetic_alignment_factor;
+ m_orientation_filter_poll.m_pitch_phase_compensation = m_pitch_rotation_compensation;
+ m_orientation_filter_poll.m_roll_phase_compensation = m_roll_rotation_compensation;
+ m_orientation_filter_poll.m_azimuth_phase_compensation = m_azimuth_rotation_compensation;
+ m_orientation_filter_poll.m_magnetic_alignment_factor = m_magnetic_alignment_factor;
- {
- AUTOLOCK(m_fusion_mutex);
- quaternion_orientation = m_orientation.get_9axis_quaternion(m_accel, m_gyro, m_magnetic);
- }
+ quaternion_orientation = m_orientation_filter_poll.get_9axis_quaternion(m_accel, m_gyro, m_magnetic);
data.accuracy = SENSOR_ACCURACY_GOOD;
data.timestamp = get_timestamp();
cmutex m_value_mutex;
- orientation_filter<float> m_orientation;
+ orientation_filter<float> m_orientation_filter;
+ orientation_filter<float> m_orientation_filter_poll;
unsigned int m_enable_orientation;
bool is_virtual(void);
protected:
- cmutex m_fusion_mutex;
bool activate(void);
bool deactivate(void);