pre_process_data(accel_data, accel_data, bias_accel, sign_accel, scale_accel);
normalize(*accel_data);
- pre_process_data(gyro_data, gyro_data, bias_gyro, sign_gyro, scale_gyro);
- pre_process_data(magnetic_data, magnetic_data, bias_magnetic, sign_magnetic, scale_magnetic);
- normalize(*magnetic_data);
- orien_filter.m_magnetic_alignment_factor = magnetic_alignment_factor;
+ if (gyro_data != NULL) {
+ pre_process_data(gyro_data, gyro_data, bias_gyro, sign_gyro, scale_gyro);
+ }
+
+ if (magnetic_data != NULL) {
+ pre_process_data(magnetic_data, magnetic_data, bias_magnetic, sign_magnetic, scale_magnetic);
+ normalize(*magnetic_data);
+
+ orien_filter.m_magnetic_alignment_factor = magnetic_alignment_factor;
+ }
orien_filter.get_device_orientation(accel_data, gyro_data, magnetic_data);
- orien_filter.m_gyro_bias = orien_filter.m_gyro_bias + vec_bias_gyro;
}
#endif