diff --git a/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py b/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py index 8d6ec23f37..353523e913 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py +++ b/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py @@ -1488,6 +1488,11 @@ def write_IMU_config(f): error("Duplicate IMU: %s" % seen_str(dev)) seen.add(seen_str(dev)) driver = dev[0] + # get instance number if mentioned + instance = -1 + if dev[-1].startswith("INSTANCE:"): + instance = int(dev[-1][9:]) + dev = dev[:-1] for i in range(1, len(dev)): if dev[i].startswith("SPI:"): dev[i] = parse_spi_device(dev[i]) @@ -1495,7 +1500,11 @@ def write_IMU_config(f): (wrapper, dev[i]) = parse_i2c_device(dev[i]) n = len(devlist)+1 devlist.append('HAL_INS_PROBE%u' % n) - if dev[-1].startswith("BOARD_MATCH("): + if instance != -1: + f.write( + '#define HAL_INS_PROBE%u %s ADD_BACKEND_INSTANCE(AP_InertialSensor_%s::probe(*this,%s),%d)\n' + % (n, wrapper, driver, ','.join(dev[1:]), instance)) + elif dev[-1].startswith("BOARD_MATCH("): f.write( '#define HAL_INS_PROBE%u %s ADD_BACKEND_BOARD_MATCH(%s, AP_InertialSensor_%s::probe(*this,%s))\n' % (n, wrapper, dev[-1], driver, ','.join(dev[1:-1])))