To use the same path for the 9-axis readings, we need to implement a extractMotion6() function in the driver.
The implementation currently lives in the updateImuData() function in EmotiBit.cpp. We need to move this into the IMU driver.
Alternatively, we can explore using the getMotion6() function in the driver, which currently does not work. Need further investigation on why that is.
Note: We have seen a case where an emotibit with a faulty cold solder BMM150 still managed to get and stream data with the standard firmware, which seems to point that extractMotion9 should still work with no BMM. This is not reflected on the Agave Board.
One hypothesis is it may be because the AUX comm i2c lines (BMI160 and BMM150) are pulled high on EmotiBit but not on the Agave RevB board. If we can verify that pulling up the AUX i2c lines solves the problem, the we can use the same stock EmotiBit code and not care about implementing the driver changes suggested above by modifying the hardware to have pull-ups on the aux. i2c line.
Note: We have seen a case where an emotibit with a faulty cold solder BMM150 still managed to get and stream data with the standard firmware, which seems to point that
extractMotion9
should still work with no BMM. This is not reflected on the Agave Board.