/** Returns a quaternion. * @param[out] data 9-axis quaternion. * @return Returns INV_SUCCESS if successful or an error code if not. */ inv_error_t inv_get_quaternion_float(float *data) { long ldata[4]; inv_error_t result = inv_get_quaternion(ldata); data[0] = inv_q30_to_float(ldata[0]); data[1] = inv_q30_to_float(ldata[1]); data[2] = inv_q30_to_float(ldata[2]); data[3] = inv_q30_to_float(ldata[3]); return result; }
/** Sets the 3x3 compass transform matrix in 32 bit Q30 fixed point format. * @param[in] the pointer of the 3x3 matrix in Q30 format */ void inv_set_compass_soft_iron_matrix_d(long *matrix) { int i; for (i=0; i<9; i++) { // set the floating point matrix sensors.soft_iron.matrix_d[i] = matrix[i]; // convert to Q30 format sensors.soft_iron.matrix_f[i] = inv_q30_to_float(matrix[i]); } }