module System.Orientation.BNO055.Internal where #include "bno055.h" import System.IO.I2C (I2CAddress) import Data.Word -- Device addresses #{enum I2CAddress, , BNO055_I2C_ADDR1, BNO055_I2C_ADDR2} -- Page register address #{enum Word8, , BNO055_PAGE_ID_ADDR} -- Page 0 Register addresses #{enum Word8, , BNO055_CHIP_ID_ADDR , BNO055_ACCEL_REV_ID_ADDR , BNO055_MAG_REV_ID_ADDR , BNO055_GYRO_REV_ID_ADDR , BNO055_SW_REV_ID_LSB_ADDR , BNO055_SW_REV_ID_MSB_ADDR , BNO055_BL_REV_ID_ADDR} -- Accel data register #{enum Word8, , BNO055_ACCEL_DATA_X_LSB_ADDR , BNO055_ACCEL_DATA_X_MSB_ADDR , BNO055_ACCEL_DATA_Y_LSB_ADDR , BNO055_ACCEL_DATA_Y_MSB_ADDR , BNO055_ACCEL_DATA_Z_LSB_ADDR , BNO055_ACCEL_DATA_Z_MSB_ADDR} -- Mag data register #{enum Word8, , BNO055_MAG_DATA_X_LSB_ADDR , BNO055_MAG_DATA_X_MSB_ADDR , BNO055_MAG_DATA_Y_LSB_ADDR , BNO055_MAG_DATA_Y_MSB_ADDR , BNO055_MAG_DATA_Z_LSB_ADDR , BNO055_MAG_DATA_Z_MSB_ADDR} -- Gyro data registers #{enum Word8, , BNO055_GYRO_DATA_X_LSB_ADDR , BNO055_GYRO_DATA_X_MSB_ADDR , BNO055_GYRO_DATA_Y_LSB_ADDR , BNO055_GYRO_DATA_Y_MSB_ADDR , BNO055_GYRO_DATA_Z_LSB_ADDR , BNO055_GYRO_DATA_Z_MSB_ADDR} -- Euler data registers #{enum Word8, , BNO055_EULER_H_LSB_ADDR , BNO055_EULER_H_MSB_ADDR , BNO055_EULER_R_LSB_ADDR , BNO055_EULER_R_MSB_ADDR , BNO055_EULER_P_LSB_ADDR , BNO055_EULER_P_MSB_ADDR} -- Quaternion data registers #{enum Word8, , BNO055_QUATERNION_DATA_W_LSB_ADDR , BNO055_QUATERNION_DATA_W_MSB_ADDR , BNO055_QUATERNION_DATA_X_LSB_ADDR , BNO055_QUATERNION_DATA_X_MSB_ADDR , BNO055_QUATERNION_DATA_Y_LSB_ADDR , BNO055_QUATERNION_DATA_Y_MSB_ADDR , BNO055_QUATERNION_DATA_Z_LSB_ADDR , BNO055_QUATERNION_DATA_Z_MSB_ADDR} -- Linear acceleration data registers #{enum Word8, , BNO055_LINEAR_ACCEL_DATA_X_LSB_ADDR , BNO055_LINEAR_ACCEL_DATA_X_MSB_ADDR , BNO055_LINEAR_ACCEL_DATA_Y_LSB_ADDR , BNO055_LINEAR_ACCEL_DATA_Y_MSB_ADDR , BNO055_LINEAR_ACCEL_DATA_Z_LSB_ADDR , BNO055_LINEAR_ACCEL_DATA_Z_MSB_ADDR} -- Gravity data registers #{enum Word8, , BNO055_GRAVITY_DATA_X_LSB_ADDR , BNO055_GRAVITY_DATA_X_MSB_ADDR , BNO055_GRAVITY_DATA_Y_LSB_ADDR , BNO055_GRAVITY_DATA_Y_MSB_ADDR , BNO055_GRAVITY_DATA_Z_LSB_ADDR , BNO055_GRAVITY_DATA_Z_MSB_ADDR} -- Temperature data register #{enum Word8, , BNO055_TEMP_ADDR} -- Status registers #{enum Word8, , BNO055_CALIB_STAT_ADDR , BNO055_SELFTEST_RESULT_ADDR , BNO055_INTR_STAT_ADDR , BNO055_SYS_CLK_STAT_ADDR , BNO055_SYS_STAT_ADDR , BNO055_SYS_ERR_ADDR} -- Unit selection register #{enum Word8, , BNO055_UNIT_SEL_ADDR , BNO055_DATA_SELECT_ADDR} -- Mode registers #{enum Word8, , BNO055_OPR_MODE_ADDR , BNO055_PWR_MODE_ADDR , BNO055_SYS_TRIGGER_ADDR , BNO055_TEMP_SOURCE_ADDR} -- Axis remap registers #{enum Word8, , BNO055_AXIS_MAP_CONFIG_ADDR , BNO055_AXIS_MAP_SIGN_ADDR} -- SIC registers #{enum Word8, , BNO055_SIC_MATRIX_0_LSB_ADDR , BNO055_SIC_MATRIX_0_MSB_ADDR , BNO055_SIC_MATRIX_1_LSB_ADDR , BNO055_SIC_MATRIX_1_MSB_ADDR , BNO055_SIC_MATRIX_2_LSB_ADDR , BNO055_SIC_MATRIX_2_MSB_ADDR , BNO055_SIC_MATRIX_3_LSB_ADDR , BNO055_SIC_MATRIX_3_MSB_ADDR , BNO055_SIC_MATRIX_4_LSB_ADDR , BNO055_SIC_MATRIX_4_MSB_ADDR , BNO055_SIC_MATRIX_5_LSB_ADDR , BNO055_SIC_MATRIX_5_MSB_ADDR , BNO055_SIC_MATRIX_6_LSB_ADDR , BNO055_SIC_MATRIX_6_MSB_ADDR , BNO055_SIC_MATRIX_7_LSB_ADDR , BNO055_SIC_MATRIX_7_MSB_ADDR , BNO055_SIC_MATRIX_8_LSB_ADDR , BNO055_SIC_MATRIX_8_MSB_ADDR} -- Accelerometer Offset registers #{enum Word8, , BNO055_ACCEL_OFFSET_X_LSB_ADDR , BNO055_ACCEL_OFFSET_X_MSB_ADDR , BNO055_ACCEL_OFFSET_Y_LSB_ADDR , BNO055_ACCEL_OFFSET_Y_MSB_ADDR , BNO055_ACCEL_OFFSET_Z_LSB_ADDR , BNO055_ACCEL_OFFSET_Z_MSB_ADDR} -- Magnetometer Offset registers #{enum Word8, , BNO055_MAG_OFFSET_X_LSB_ADDR , BNO055_MAG_OFFSET_X_MSB_ADDR , BNO055_MAG_OFFSET_Y_LSB_ADDR , BNO055_MAG_OFFSET_Y_MSB_ADDR , BNO055_MAG_OFFSET_Z_LSB_ADDR , BNO055_MAG_OFFSET_Z_MSB_ADDR} -- Gyroscope Offset registers #{enum Word8, , BNO055_GYRO_OFFSET_X_LSB_ADDR , BNO055_GYRO_OFFSET_X_MSB_ADDR , BNO055_GYRO_OFFSET_Y_LSB_ADDR , BNO055_GYRO_OFFSET_Y_MSB_ADDR , BNO055_GYRO_OFFSET_Z_LSB_ADDR , BNO055_GYRO_OFFSET_Z_MSB_ADDR} -- Radius registers #{enum Word8, , BNO055_ACCEL_RADIUS_LSB_ADDR , BNO055_ACCEL_RADIUS_MSB_ADDR , BNO055_MAG_RADIUS_LSB_ADDR , BNO055_MAG_RADIUS_MSB_ADDR} -- Page 1 Register addresses -- Configuration registers #{enum Word8, , BNO055_ACCEL_CONFIG_ADDR , BNO055_MAG_CONFIG_ADDR , BNO055_GYRO_CONFIG_ADDR , BNO055_GYRO_MODE_CONFIG_ADDR , BNO055_ACCEL_SLEEP_CONFIG_ADDR , BNO055_GYRO_SLEEP_CONFIG_ADDR , BNO055_MAG_SLEEP_CONFIG_ADDR} -- Interrupt registers #{enum Word8, , BNO055_INT_MASK_ADDR , BNO055_INT_ADDR , BNO055_ACCEL_ANY_MOTION_THRES_ADDR , BNO055_ACCEL_INTR_SETTINGS_ADDR , BNO055_ACCEL_HIGH_G_DURN_ADDR , BNO055_ACCEL_HIGH_G_THRES_ADDR , BNO055_ACCEL_NO_MOTION_THRES_ADDR , BNO055_ACCEL_NO_MOTION_SET_ADDR , BNO055_GYRO_INTR_SETING_ADDR , BNO055_GYRO_HIGHRATE_X_SET_ADDR , BNO055_GYRO_DURN_X_ADDR , BNO055_GYRO_HIGHRATE_Y_SET_ADDR , BNO055_GYRO_DURN_Y_ADDR , BNO055_GYRO_HIGHRATE_Z_SET_ADDR , BNO055_GYRO_DURN_Z_ADDR , BNO055_GYRO_ANY_MOTION_THRES_ADDR , BNO055_GYRO_ANY_MOTION_SET_ADDR} -- Miscellaneous constants #{enum Word8, , BNO055_INIT_VALUE , BNO055_GEN_READ_WRITE_LENGTH , BNO055_LSB_MSB_READ_LENGTH , BNO055_MAG_POWER_MODE_RANGE , BNO055_MAG_OPR_MODE_RANGE , BNO055_ACCEL_POWER_MODE_RANGE , BNO055_ACCEL_SLEEP_DURATION_RANGE , BNO055_GYRO_AUTO_SLEEP_DURATION_RANGE , BNO055_ACCEL_GYRO_BW_RANGE , BNO055_MAG_OUTPUT_RANGE , BNO055_ACCEL_RANGE , BNO055_SHIFT_EIGHT_BITS , BNO055_GYRO_RANGE , BNO055_ACCEL_SLEEP_MODE_RANGE} -- Selection for bit enable and disable #{enum Word8, , BNO055_BIT_ENABLE , BNO055_BIT_DISABLE} -- Page ID #{enum Word8, , BNO055_PAGE_ZERO , BNO055_PAGE_ONE} -- Enable the temperature source #{enum Word8, , BNO055_ACCEL_TEMP_EN , BNO055_GYRO_TEMP_EN , BNO055_MCU_TEMP_EN} -- Accel unit #{enum Word8, , BNO055_ACCEL_UNIT_MSQ , BNO055_ACCEL_UNIT_MG} -- Gyro unit #{enum Word8, , BNO055_GYRO_UNIT_DPS , BNO055_GYRO_UNIT_RPS} -- Euler unit #{enum Word8, , BNO055_EULER_UNIT_DEG , BNO055_EULER_UNIT_RAD} -- Temperature unit #{enum Word8, , BNO055_TEMP_UNIT_CELSIUS, BNO055_TEMP_UNIT_FAHRENHEIT} -- Accel division factor #{enum Double, , BNO055_ACCEL_DIV_MSQ, BNO055_ACCEL_DIV_MG} -- Mag division factor #{enum Double, , BNO055_MAG_DIV_UT} -- Gyro division factor #{enum Double, , BNO055_GYRO_DIV_DPS, BNO055_GYRO_DIV_RPS} -- Euler division factor #{enum Double, , BNO055_EULER_DIV_DEG , BNO055_EULER_DIV_RAD} -- Linear accel division factor #{enum Double, , BNO055_LINEAR_ACCEL_DIV_MSQ} -- Gravity accel division factor #{enum Double, , BNO055_GRAVITY_DIV_MSQ} -- Temperature division factor #{enum Double, , BNO055_TEMP_DIV_FAHRENHEIT , BNO055_TEMP_DIV_CELSIUS , BNO055_MODE_SWITCHING_DELAY , BNO055_CONFIG_MODE_SWITCHING_DELAY} -- Operation mode settings #{enum Word8, , BNO055_OPERATION_MODE_CONFIG , BNO055_OPERATION_MODE_ACCONLY , BNO055_OPERATION_MODE_MAGONLY , BNO055_OPERATION_MODE_GYRONLY , BNO055_OPERATION_MODE_ACCMAG , BNO055_OPERATION_MODE_ACCGYRO , BNO055_OPERATION_MODE_MAGGYRO , BNO055_OPERATION_MODE_AMG , BNO055_OPERATION_MODE_IMUPLUS , BNO055_OPERATION_MODE_COMPASS , BNO055_OPERATION_MODE_M4G , BNO055_OPERATION_MODE_NDOF_FMC_OFF , BNO055_OPERATION_MODE_NDOF} -- Power mode #{enum Word8, , BNO055_POWER_MODE_NORMAL , BNO055_POWER_MODE_LOWPOWER , BNO055_POWER_MODE_SUSPEND} -- Accel Range #{enum Word8, , BNO055_ACCEL_RANGE_2G , BNO055_ACCEL_RANGE_4G , BNO055_ACCEL_RANGE_8G , BNO055_ACCEL_RANGE_16G} -- Accel Bandwidth #{enum Word8, , BNO055_ACCEL_BW_7_81HZ , BNO055_ACCEL_BW_15_63HZ , BNO055_ACCEL_BW_31_25HZ , BNO055_ACCEL_BW_62_5HZ , BNO055_ACCEL_BW_125HZ , BNO055_ACCEL_BW_250HZ , BNO055_ACCEL_BW_500HZ , BNO055_ACCEL_BW_1000HZ} -- Accel Power mode #{enum Word8, , BNO055_ACCEL_NORMAL , BNO055_ACCEL_SUSPEND , BNO055_ACCEL_LOWPOWER_1 , BNO055_ACCEL_STANDBY , BNO055_ACCEL_LOWPOWER_2 , BNO055_ACCEL_DEEPSUSPEND} -- Mag data output rate #{enum Word8, , BNO055_MAG_DATA_OUTRATE_2HZ , BNO055_MAG_DATA_OUTRATE_6HZ , BNO055_MAG_DATA_OUTRATE_8HZ , BNO055_MAG_DATA_OUTRATE_10HZ , BNO055_MAG_DATA_OUTRATE_15HZ , BNO055_MAG_DATA_OUTRATE_20HZ , BNO055_MAG_DATA_OUTRATE_25HZ , BNO055_MAG_DATA_OUTRATE_30HZ} -- Mag Operation mode #{enum Word8, , BNO055_MAG_OPERATION_MODE_LOWPOWER , BNO055_MAG_OPERATION_MODE_REGULAR , BNO055_MAG_OPERATION_MODE_ENHANCED_REGULAR , BNO055_MAG_OPERATION_MODE_HIGH_ACCURACY} -- Mag power mode #{enum Word8, , BNO055_MAG_POWER_MODE_NORMAL , BNO055_MAG_POWER_MODE_SLEEP , BNO055_MAG_POWER_MODE_SUSPEND , BNO055_MAG_POWER_MODE_FORCE_MODE} -- Gyro range #{enum Word8, , BNO055_GYRO_RANGE_2000DPS , BNO055_GYRO_RANGE_1000DPS , BNO055_GYRO_RANGE_500DPS , BNO055_GYRO_RANGE_250DPS , BNO055_GYRO_RANGE_125DPS} -- Gyro Bandwidth #{enum Word8, , BNO055_GYRO_BW_523HZ , BNO055_GYRO_BW_230HZ , BNO055_GYRO_BW_116HZ , BNO055_GYRO_BW_47HZ , BNO055_GYRO_BW_23HZ , BNO055_GYRO_BW_12HZ , BNO055_GYRO_BW_64HZ , BNO055_GYRO_BW_32HZ} -- Gyro power mode #{enum Word8, , BNO055_GYRO_POWER_MODE_NORMAL , BNO055_GYRO_POWER_MODE_FASTPOWERUP , BNO055_GYRO_POWER_MODE_DEEPSUSPEND , BNO055_GYRO_POWER_MODE_SUSPEND , BNO055_GYRO_POWER_MODE_ADVANCE_POWERSAVE} -- Accel Sleep Duration #{enum Word8, , BNO055_ACCEL_SLEEP_DURN_0_5MS , BNO055_ACCEL_SLEEP_DURN_1MS , BNO055_ACCEL_SLEEP_DURN_2MS , BNO055_ACCEL_SLEEP_DURN_4MS , BNO055_ACCEL_SLEEP_DURN_6MS , BNO055_ACCEL_SLEEP_DURN_10MS , BNO055_ACCEL_SLEEP_DURN_25MS , BNO055_ACCEL_SLEEP_DURN_50MS , BNO055_ACCEL_SLEEP_DURN_100MS , BNO055_ACCEL_SLEEP_DURN_500MS , BNO055_ACCEL_SLEEP_DURN_1S} -- Gyro Auto sleep duration #{enum Word8, , BNO055_GYRO_No_AUTOSLPDUR , BNO055_GYRO_4MS_AUTOSLPDUR , BNO055_GYRO_5MS_AUTOSLPDUR , BNO055_GYRO_8MS_AUTOSLPDUR , BNO055_GYRO_10MS_AUTOSLPDUR , BNO055_GYRO_15MS_AUTOSLPDUR , BNO055_GYRO_20MS_AUTOSLPDUR , BNO055_GYRO_40MS_AUTOSLPDUR} -- Accel Any/No motion axis selection #{enum Word8, , BNO055_ACCEL_ANY_MOTION_NO_MOTION_X_AXIS , BNO055_ACCEL_ANY_MOTION_NO_MOTION_Y_AXIS , BNO055_ACCEL_ANY_MOTION_NO_MOTION_Z_AXIS} -- Accel High g axis selection #{enum Word8, , BNO055_ACCEL_HIGH_G_X_AXIS , BNO055_ACCEL_HIGH_G_Y_AXIS , BNO055_ACCEL_HIGH_G_Z_AXIS} -- Gyro Any motion axis selection #{enum Word8, , BNO055_GYRO_ANY_MOTION_X_AXIS , BNO055_GYRO_ANY_MOTION_Y_AXIS , BNO055_GYRO_ANY_MOTION_Z_AXIS} -- Gyro High rate axis selection #{enum Word8, , BNO055_GYRO_HIGHRATE_X_AXIS , BNO055_GYRO_HIGHRATE_Y_AXIS , BNO055_GYRO_HIGHRATE_Z_AXIS} -- Axis remap values #{enum Word8, , BNO055_REMAP_X_Y , BNO055_REMAP_Y_Z , BNO055_REMAP_Z_X , BNO055_REMAP_X_Y_Z_TYPE0 , BNO055_REMAP_X_Y_Z_TYPE1 , BNO055_DEFAULT_AXIS} -- Axis remap sign #{enum Word8, , BNO055_REMAP_AXIS_POSITIVE , BNO055_REMAP_AXIS_NEGATIVE} -- Gyro anymotion and high rate filter configuration #{enum Word8, , BNO055_GYRO_FILTERED_CONFIG , BNO055_GYRO_UNFILTERED_CONFIG} -- mask definitions #{enum Word16, , BNO055_SIC_HEX_0_0_F_F_DATA} -- Array size definitions #{enum Int, , BNO055_REV_ID_SIZE , BNO055_ACCEL_DATA_SIZE , BNO055_ACCEL_XYZ_DATA_SIZE , BNO055_MAG_DATA_SIZE , BNO055_MAG_XYZ_DATA_SIZE , BNO055_GYRO_DATA_SIZE , BNO055_GYRO_XYZ_DATA_SIZE , BNO055_EULER_DATA_SIZE , BNO055_EULER_HRP_DATA_SIZE , BNO055_QUATERNION_DATA_SIZE , BNO055_QUATERNION_WXYZ_DATA_SIZE , BNO055_GRAVITY_DATA_SIZE , BNO055_GRAVITY_XYZ_DATA_SIZE , BNO055_ACCEL_OFFSET_ARRAY , BNO055_MAG_OFFSET_ARRAY , BNO055_GYRO_OFFSET_ARRAY , BNO055_SOFT_IRON_CALIBRATION_MATRIX_SIZE} -- Array index definitions #{enum Int, , BNO055_SW_ID_LSB , BNO055_SW_ID_MSB , BNO055_SENSOR_DATA_LSB , BNO055_SENSOR_DATA_MSB , BNO055_SENSOR_DATA_EULER_LSB , BNO055_SENSOR_DATA_EULER_MSB , BNO055_SENSOR_DATA_QUATERNION_LSB , BNO055_SENSOR_DATA_QUATERNION_MSB, BNO055_SENSOR_DATA_QUATERNION_WXYZ_W_LSB , BNO055_SENSOR_DATA_QUATERNION_WXYZ_W_MSB , BNO055_SENSOR_DATA_QUATERNION_WXYZ_X_LSB , BNO055_SENSOR_DATA_QUATERNION_WXYZ_X_MSB , BNO055_SENSOR_DATA_QUATERNION_WXYZ_Y_LSB , BNO055_SENSOR_DATA_QUATERNION_WXYZ_Y_MSB , BNO055_SENSOR_DATA_QUATERNION_WXYZ_Z_LSB , BNO055_SENSOR_DATA_QUATERNION_WXYZ_Z_MSB , BNO055_SENSOR_DATA_XYZ_X_LSB , BNO055_SENSOR_DATA_XYZ_X_MSB , BNO055_SENSOR_DATA_XYZ_Y_LSB , BNO055_SENSOR_DATA_XYZ_Y_MSB , BNO055_SENSOR_DATA_XYZ_Z_LSB , BNO055_SENSOR_DATA_XYZ_Z_MSB , BNO055_SENSOR_DATA_EULER_HRP_H_LSB , BNO055_SENSOR_DATA_EULER_HRP_H_MSB , BNO055_SENSOR_DATA_EULER_HRP_R_LSB , BNO055_SENSOR_DATA_EULER_HRP_R_MSB , BNO055_SENSOR_DATA_EULER_HRP_P_LSB , BNO055_SENSOR_DATA_EULER_HRP_P_MSB , BNO055_SOFT_IRON_CALIB_0_LSB , BNO055_SOFT_IRON_CALIB_0_MSB , BNO055_SOFT_IRON_CALIB_1_LSB , BNO055_SOFT_IRON_CALIB_1_MSB , BNO055_SOFT_IRON_CALIB_2_LSB , BNO055_SOFT_IRON_CALIB_2_MSB , BNO055_SOFT_IRON_CALIB_3_LSB , BNO055_SOFT_IRON_CALIB_3_MSB , BNO055_SOFT_IRON_CALIB_4_LSB , BNO055_SOFT_IRON_CALIB_4_MSB , BNO055_SOFT_IRON_CALIB_5_LSB , BNO055_SOFT_IRON_CALIB_5_MSB , BNO055_SOFT_IRON_CALIB_6_LSB , BNO055_SOFT_IRON_CALIB_6_MSB , BNO055_SOFT_IRON_CALIB_7_LSB , BNO055_SOFT_IRON_CALIB_7_MSB , BNO055_SOFT_IRON_CALIB_8_LSB , BNO055_SOFT_IRON_CALIB_8_MSB , BNO055_SENSOR_OFFSET_DATA_X_LSB , BNO055_SENSOR_OFFSET_DATA_X_MSB , BNO055_SENSOR_OFFSET_DATA_Y_LSB , BNO055_SENSOR_OFFSET_DATA_Y_MSB , BNO055_SENSOR_OFFSET_DATA_Z_LSB , BNO055_SENSOR_OFFSET_DATA_Z_MSB , BNO055_OFFSET_RADIUS_LSB , BNO055_OFFSET_RADIUS_MSB}