From 230e7bdbc6836c20f91484dbbc6f778e59bcf549 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Wed, 20 Apr 2022 16:19:41 -0400 Subject: [PATCH] WIP --- src/drivers/magnetometer/akm/ak09916/AK09916.cpp | 5 ++++- src/drivers/magnetometer/akm/ak8963/AK8963.cpp | 5 ++++- src/drivers/magnetometer/bosch/bmm150/BMM150.cpp | 6 ++++-- src/drivers/magnetometer/isentek/ist8310/IST8310.cpp | 5 ++++- src/drivers/magnetometer/qmc5883l/QMC5883L.cpp | 6 ++++-- src/drivers/magnetometer/vtrantech/vcm1193l/VCM1193L.cpp | 6 ++++-- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/drivers/magnetometer/akm/ak09916/AK09916.cpp b/src/drivers/magnetometer/akm/ak09916/AK09916.cpp index 51f241a01b..84c6b28b08 100644 --- a/src/drivers/magnetometer/akm/ak09916/AK09916.cpp +++ b/src/drivers/magnetometer/akm/ak09916/AK09916.cpp @@ -92,7 +92,6 @@ int AK09916::probe() const uint8_t WIA2 = RegisterRead(Register::WIA2); if ((WIA1 == Company_ID) && (WIA2 == Device_ID)) { - _retries = 1; return PX4_OK; } else if (WIA1 != Company_ID) { @@ -101,6 +100,10 @@ int AK09916::probe() } else if (WIA2 != Device_ID) { DEVICE_DEBUG("unexpected WIA2 0x%02x", WIA2); } + + if (retry > 0) { + _retries = 1; + } } return PX4_ERROR; diff --git a/src/drivers/magnetometer/akm/ak8963/AK8963.cpp b/src/drivers/magnetometer/akm/ak8963/AK8963.cpp index da0db41aca..049d6172af 100644 --- a/src/drivers/magnetometer/akm/ak8963/AK8963.cpp +++ b/src/drivers/magnetometer/akm/ak8963/AK8963.cpp @@ -91,12 +91,15 @@ int AK8963::probe() const uint8_t WIA = RegisterRead(Register::WIA); if (WIA == Device_ID) { - _retries = 1; return PX4_OK; } else { DEVICE_DEBUG("unexpected WIA 0x%02x", WIA); } + + if (retry > 0) { + _retries = 1; + } } return PX4_ERROR; diff --git a/src/drivers/magnetometer/bosch/bmm150/BMM150.cpp b/src/drivers/magnetometer/bosch/bmm150/BMM150.cpp index bd61c6160f..936479e76f 100644 --- a/src/drivers/magnetometer/bosch/bmm150/BMM150.cpp +++ b/src/drivers/magnetometer/bosch/bmm150/BMM150.cpp @@ -93,14 +93,16 @@ int BMM150::probe() PX4_DEBUG("POWER_CONTROL: 0x%02hhX, CHIP_ID: 0x%02hhX", POWER_CONTROL, CHIP_ID); if (CHIP_ID == chip_identification_number) { - _retries = 1; return PX4_OK; } else if ((CHIP_ID == 0) && !(POWER_CONTROL & POWER_CONTROL_BIT::PowerControl)) { // in suspend Chip ID read (register 0x40) returns “0x00” (I²C) or high-Z (SPI). - _retries = 1; return PX4_OK; } + + if (retry > 0) { + _retries = 1; + } } return PX4_ERROR; diff --git a/src/drivers/magnetometer/isentek/ist8310/IST8310.cpp b/src/drivers/magnetometer/isentek/ist8310/IST8310.cpp index 8117d0b52b..0679894b31 100644 --- a/src/drivers/magnetometer/isentek/ist8310/IST8310.cpp +++ b/src/drivers/magnetometer/isentek/ist8310/IST8310.cpp @@ -89,12 +89,15 @@ int IST8310::probe() const uint8_t WAI = RegisterRead(Register::WAI); if (WAI == Device_ID) { - _retries = 1; return PX4_OK; } else { DEVICE_DEBUG("unexpected WAI 0x%02x", WAI); } + + if (retry > 0) { + _retries = 1; + } } return PX4_ERROR; diff --git a/src/drivers/magnetometer/qmc5883l/QMC5883L.cpp b/src/drivers/magnetometer/qmc5883l/QMC5883L.cpp index 1976b24588..c3daaec82d 100644 --- a/src/drivers/magnetometer/qmc5883l/QMC5883L.cpp +++ b/src/drivers/magnetometer/qmc5883l/QMC5883L.cpp @@ -85,8 +85,6 @@ void QMC5883L::print_status() int QMC5883L::probe() { - _retries = 1; - for (int retry = 0; retry < 3; retry++) { // first read 0x0 once const uint8_t cmd = 0; @@ -99,6 +97,10 @@ int QMC5883L::probe() return PX4_OK; } } + + if (retry > 0) { + _retries = 1; + } } return PX4_ERROR; diff --git a/src/drivers/magnetometer/vtrantech/vcm1193l/VCM1193L.cpp b/src/drivers/magnetometer/vtrantech/vcm1193l/VCM1193L.cpp index e419962855..c33abf2d00 100644 --- a/src/drivers/magnetometer/vtrantech/vcm1193l/VCM1193L.cpp +++ b/src/drivers/magnetometer/vtrantech/vcm1193l/VCM1193L.cpp @@ -85,8 +85,6 @@ void VCM1193L::print_status() int VCM1193L::probe() { - _retries = 1; - for (int retry = 0; retry < 3; retry++) { // first read 0x0 once const uint8_t cmd = 0; @@ -99,6 +97,10 @@ int VCM1193L::probe() return PX4_OK; } } + + if (retry > 0) { + _retries = 1; + } } return PX4_ERROR;