From 34735b30df186bffbc20e16f283e6fe8b9897e6e Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Fri, 21 Feb 2025 21:05:31 +1100 Subject: [PATCH] AP_HAL: move parsing of BARO lines up to AP_HAL hwdef.py --- libraries/AP_HAL/board/linux.h | 1 - libraries/AP_HAL/hwdef/scripts/hwdef.py | 35 +++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/libraries/AP_HAL/board/linux.h b/libraries/AP_HAL/board/linux.h index 3ff6065992..18caa82e8c 100644 --- a/libraries/AP_HAL/board/linux.h +++ b/libraries/AP_HAL/board/linux.h @@ -26,7 +26,6 @@ #if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NONE // nothing to do here #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBOARD - #define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611") #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP #define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 1, 0x77, AP_Baro_MS56XX::BARO_MS5607) #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_VNAV diff --git a/libraries/AP_HAL/hwdef/scripts/hwdef.py b/libraries/AP_HAL/hwdef/scripts/hwdef.py index 2b1e417e73..6e714f5cd8 100644 --- a/libraries/AP_HAL/hwdef/scripts/hwdef.py +++ b/libraries/AP_HAL/hwdef/scripts/hwdef.py @@ -44,6 +44,7 @@ class HWDef: # sensor lists self.imu_list = [] self.compass_list = [] + self.baro_list = [] def is_int(self, str): '''check if a string is an integer''' @@ -204,6 +205,9 @@ class HWDef: elif a[0] == 'COMPASS': self.compass_list.append(a[1:]) + elif a[0] == 'BARO': + self.baro_list.append(a[1:]) + def process_line_undef(self, line, depth, a): for u in a[1:]: self.progress("Removing %s" % u) @@ -217,6 +221,8 @@ class HWDef: self.imu_list = [] if u == 'COMPASS': self.compass_list = [] + if u == 'BARO': + self.baro_list = [] def process_line_env(self, line, depth, a): self.progress("Adding environment %s" % ' '.join(a[1:])) @@ -340,3 +346,32 @@ class HWDef: % (n, wrapper, driver, driver, probe, ','.join(dev[1:]))) if len(devlist) > 0: f.write('#define HAL_MAG_PROBE_LIST %s\n\n' % ';'.join(devlist)) + + def write_BARO_config(self, f): + '''write barometer config defines''' + devlist = [] + seen = set() + for dev in self.baro_list: + if self.seen_str(dev) in seen: + self.error("Duplicate BARO: %s" % self.seen_str(dev)) + seen.add(self.seen_str(dev)) + driver = dev[0] + probe = 'probe' + wrapper = '' + a = driver.split(':') + driver = a[0] + if len(a) > 1 and a[1].startswith('probe'): + probe = a[1] + for i in range(1, len(dev)): + if dev[i].startswith("SPI:"): + dev[i] = self.parse_spi_device(dev[i]) + elif dev[i].startswith("I2C:"): + (wrapper, dev[i]) = self.parse_i2c_device(dev[i]) + n = len(devlist)+1 + devlist.append('HAL_BARO_PROBE%u' % n) + args = ['*this'] + dev[1:] + f.write( + '#define HAL_BARO_PROBE%u %s ADD_BACKEND(AP_Baro_%s::%s(%s))\n' + % (n, wrapper, driver, probe, ','.join(args))) + if len(devlist) > 0: + f.write('#define HAL_BARO_PROBE_LIST %s\n\n' % ';'.join(devlist))