Add ability to set custom ACC/GYRO/MAG with BOARD=0; Avoid creating sensors if *_I2CADDR is -1
This commit is contained in:
17
tests/imu.c
17
tests/imu.c
@ -7,7 +7,7 @@ bool test_imu_enabled = true;
|
|||||||
|
|
||||||
static struct mgos_imu *s_imu = NULL;
|
static struct mgos_imu *s_imu = NULL;
|
||||||
|
|
||||||
#define BOARD 2
|
#define BOARD 0
|
||||||
|
|
||||||
#if BOARD == 1
|
#if BOARD == 1
|
||||||
// LSM303D_L3GD20_COMBO -- sold as GY-89
|
// LSM303D_L3GD20_COMBO -- sold as GY-89
|
||||||
@ -25,7 +25,7 @@ static struct mgos_imu *s_imu = NULL;
|
|||||||
#define GYRO_TYPE GYRO_ITG3205
|
#define GYRO_TYPE GYRO_ITG3205
|
||||||
#define MAG_I2CADDR 0x1d
|
#define MAG_I2CADDR 0x1d
|
||||||
#define MAG_TYPE MAG_HMC5883L
|
#define MAG_TYPE MAG_HMC5883L
|
||||||
#else
|
#elif BOARD == 3
|
||||||
// Sold as M5 Stack (ESP32 + MPU9250)
|
// Sold as M5 Stack (ESP32 + MPU9250)
|
||||||
#define ACC_I2CADDR 0x68
|
#define ACC_I2CADDR 0x68
|
||||||
#define ACC_TYPE ACC_MPU9250
|
#define ACC_TYPE ACC_MPU9250
|
||||||
@ -33,6 +33,13 @@ static struct mgos_imu *s_imu = NULL;
|
|||||||
#define GYRO_TYPE GYRO_MPU9250
|
#define GYRO_TYPE GYRO_MPU9250
|
||||||
#define MAG_I2CADDR 0x0c
|
#define MAG_I2CADDR 0x0c
|
||||||
#define MAG_TYPE MAG_AK8963
|
#define MAG_TYPE MAG_AK8963
|
||||||
|
#else
|
||||||
|
#define ACC_I2CADDR 0x1d
|
||||||
|
#define ACC_TYPE ACC_MMA8451
|
||||||
|
#define GYRO_I2CADDR -1
|
||||||
|
#define GYRO_TYPE -1
|
||||||
|
#define MAG_I2CADDR -1
|
||||||
|
#define MAG_TYPE -1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool test_imu_create(void) {
|
bool test_imu_create(void) {
|
||||||
@ -41,13 +48,13 @@ bool test_imu_create(void) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mgos_imu_accelerometer_create_i2c(s_imu, mgos_i2c_get_global(), ACC_I2CADDR, ACC_TYPE)) {
|
if (ACC_I2CADDR > 0 && !mgos_imu_accelerometer_create_i2c(s_imu, mgos_i2c_get_global(), ACC_I2CADDR, ACC_TYPE)) {
|
||||||
LOG(LL_ERROR, ("Cannot create accelerometer on IMU"));
|
LOG(LL_ERROR, ("Cannot create accelerometer on IMU"));
|
||||||
}
|
}
|
||||||
if (!mgos_imu_gyroscope_create_i2c(s_imu, mgos_i2c_get_global(), GYRO_I2CADDR, GYRO_TYPE)) {
|
if (GYRO_I2CADDR > 0 && !mgos_imu_gyroscope_create_i2c(s_imu, mgos_i2c_get_global(), GYRO_I2CADDR, GYRO_TYPE)) {
|
||||||
LOG(LL_ERROR, ("Cannot create gyroscope on IMU"));
|
LOG(LL_ERROR, ("Cannot create gyroscope on IMU"));
|
||||||
}
|
}
|
||||||
if (!mgos_imu_magnetometer_create_i2c(s_imu, mgos_i2c_get_global(), MAG_I2CADDR, MAG_TYPE)) {
|
if (MAG_I2CADDR > 0 && !mgos_imu_magnetometer_create_i2c(s_imu, mgos_i2c_get_global(), MAG_I2CADDR, MAG_TYPE)) {
|
||||||
LOG(LL_ERROR, ("Cannot create magnetometer on IMU"));
|
LOG(LL_ERROR, ("Cannot create magnetometer on IMU"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user