From c9e3118fea142e70167b2f5cf459d2704c38a29e Mon Sep 17 00:00:00 2001 From: Baardrw <98158027+Baardrw@users.noreply.github.com> Date: Thu, 22 Jan 2026 06:45:45 +0100 Subject: [PATCH] Driver: fix mb12xx driver set address feature (#26282) * fixed set_address function --- src/drivers/distance_sensor/mb12xx/mb12xx.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/drivers/distance_sensor/mb12xx/mb12xx.cpp b/src/drivers/distance_sensor/mb12xx/mb12xx.cpp index da8d5321b0..402b2a32e9 100644 --- a/src/drivers/distance_sensor/mb12xx/mb12xx.cpp +++ b/src/drivers/distance_sensor/mb12xx/mb12xx.cpp @@ -371,7 +371,9 @@ MB12XX::set_address(const uint8_t address) address == 80 || address == 164 || address == 170 || - address > 224) { + address > 224 || + (address % 2) != 0 || + address < MB12XX_MIN_ADDR) { PX4_ERR("incompatible address requested"); return PX4_ERROR; } @@ -386,6 +388,8 @@ MB12XX::set_address(const uint8_t address) } set_device_address(address); + _sensor_addresses[0] = address; + PX4_INFO("device address: %u", get_device_address()); return PX4_OK; } @@ -423,6 +427,7 @@ extern "C" __EXPORT int mb12xx_main(int argc, char *argv[]) using ThisDriver = MB12XX; BusCLIArguments cli{true, false}; cli.default_i2c_frequency = MB12XX_BUS_SPEED; + cli.i2c_address = MB12XX_BASE_ADDR; const char *verb = cli.parseDefaultArguments(argc, argv); @@ -431,8 +436,6 @@ extern "C" __EXPORT int mb12xx_main(int argc, char *argv[]) return -1; } - cli.i2c_address = MB12XX_BASE_ADDR; - BusInstanceIterator iterator(MODULE_NAME, cli, DRV_DIST_DEVTYPE_MB12XX); if (!strcmp(verb, "start")) {