lsm6dso
loveshipting opened this issue · comments
Device part numbers
lsm6dso
Type of bug
func
static int32_t lsm6dso_write_lis2mdl_cx(void *ctx, uint8_t reg,
const uint8_t *data, uint16_t len)
Describe the bug
the param "len" doesn't use in func "lsm6dso_write_lis2mdl_cx"
Additional context
static int32_t lsm6dso_write_lis2mdl_cx(void *ctx, uint8_t reg,
const uint8_t *data, uint16_t len)
{
axis3bit16_t data_raw_acceleration;
int32_t ret;
uint8_t drdy;
lsm6dso_status_master_t master_status;
lsm6dso_sh_cfg_write_t sh_cfg_write;
/* Configure Sensor Hub to read LIS2MDL. */
sh_cfg_write.slv0_add = (LIS2MDL_I2C_ADD & 0xFEU) >>
1; /* 7bit I2C address */
sh_cfg_write.slv0_subadd = reg,
sh_cfg_write.slv0_data = *data,
ret = lsm6dso_sh_cfg_write(&ag_ctx, &sh_cfg_write);
/* Disable accelerometer. */
lsm6dso_xl_data_rate_set(&ag_ctx, LSM6DSO_XL_ODR_OFF);
/* Enable I2C Master. */
lsm6dso_sh_master_set(&ag_ctx, PROPERTY_ENABLE);
/* Enable accelerometer to trigger Sensor Hub operation. */
lsm6dso_xl_data_rate_set(&ag_ctx, LSM6DSO_XL_ODR_104Hz);
/* Wait Sensor Hub operation flag set. */
lsm6dso_acceleration_raw_get(&ag_ctx, data_raw_acceleration.i16bit);
do {
HAL_Delay(20);
lsm6dso_xl_flag_data_ready_get(&ag_ctx, &drdy);
} while (!drdy);
do {
HAL_Delay(20);
lsm6dso_sh_status_get(&ag_ctx, &master_status);
} while (!master_status.sens_hub_endop);
/* Disable I2C master and XL (trigger). */
lsm6dso_sh_master_set(&ag_ctx, PROPERTY_DISABLE);
lsm6dso_xl_data_rate_set(&ag_ctx, LSM6DSO_XL_ODR_OFF);
return ret;
}
that will cause the API write len is not 1, issue coming, like func "lis2mdl_mag_user_offset_set".