From d3dd5e9da1fb2be088d6e56599c7486842adae0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Fri, 24 Apr 2020 11:19:56 +0200 Subject: [PATCH] i2c_spi_buses: improve info output for external buses --- platforms/common/i2c_spi_buses.cpp | 37 ++++++++++++++++--- .../common/include/px4_platform_common/i2c.h | 2 + .../px4_platform_common/i2c_spi_buses.h | 1 + .../common/include/px4_platform_common/spi.h | 2 + 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/platforms/common/i2c_spi_buses.cpp b/platforms/common/i2c_spi_buses.cpp index 8bfb2378fa..93ed8473b0 100644 --- a/platforms/common/i2c_spi_buses.cpp +++ b/platforms/common/i2c_spi_buses.cpp @@ -392,6 +392,19 @@ bool BusInstanceIterator::external() const } } +int BusInstanceIterator::externalBusIndex() const +{ + if (busType() == BOARD_INVALID_BUS) { + return 0; + + } else if (busType() == BOARD_SPI_BUS) { + return _spi_bus_iterator.externalBusIndex(); + + } else { + return _i2c_bus_iterator.externalBusIndex(); + } +} + I2CBusIterator::FilterType BusInstanceIterator::i2cFilter(I2CSPIBusOption bus_option) { switch (bus_option) { @@ -486,14 +499,28 @@ int I2CSPIDriverBase::module_start(const BusCLIArguments &cli, BusInstanceIterat // print some info that we are running switch (iterator.busType()) { case BOARD_I2C_BUS: - PX4_INFO_RAW("%s #%i on I2C bus %d%s\n", - instance->ItemName(), runtime_instance, iterator.bus(), iterator.external() ? " (external)" : ""); + PX4_INFO_RAW("%s #%i on I2C bus %d", instance->ItemName(), runtime_instance, iterator.bus()); + + if (iterator.external()) { + PX4_INFO_RAW(" (external, equal to '-b %i')\n", iterator.externalBusIndex()); + + } else { + PX4_INFO_RAW("\n"); + } + break; case BOARD_SPI_BUS: - PX4_INFO_RAW("%s #%i on SPI bus %d (devid=0x%x)%s\n", - instance->ItemName(), runtime_instance, iterator.bus(), PX4_SPI_DEV_ID(iterator.devid()), - iterator.external() ? " (external)" : ""); + PX4_INFO_RAW("%s #%i on SPI bus %d (devid=0x%x)", + instance->ItemName(), runtime_instance, iterator.bus(), PX4_SPI_DEV_ID(iterator.devid())); + + if (iterator.external()) { + PX4_INFO_RAW(" (external, equal to '-b %i')\n", iterator.externalBusIndex()); + + } else { + PX4_INFO_RAW("\n"); + } + break; case BOARD_INVALID_BUS: diff --git a/platforms/common/include/px4_platform_common/i2c.h b/platforms/common/include/px4_platform_common/i2c.h index 36c1020656..0390687df0 100644 --- a/platforms/common/include/px4_platform_common/i2c.h +++ b/platforms/common/include/px4_platform_common/i2c.h @@ -89,6 +89,8 @@ public: const px4_i2c_bus_t &bus() const { return px4_i2c_buses[_index]; } + int externalBusIndex() const { return _external_bus_counter; } + bool external() const { return px4_i2c_bus_external(bus()); } private: diff --git a/platforms/common/include/px4_platform_common/i2c_spi_buses.h b/platforms/common/include/px4_platform_common/i2c_spi_buses.h index 367b85b47a..0fab276a14 100644 --- a/platforms/common/include/px4_platform_common/i2c_spi_buses.h +++ b/platforms/common/include/px4_platform_common/i2c_spi_buses.h @@ -153,6 +153,7 @@ public: uint32_t devid() const; spi_drdy_gpio_t DRDYGPIO() const; bool external() const; + int externalBusIndex() const; void addInstance(I2CSPIInstance *instance); diff --git a/platforms/common/include/px4_platform_common/spi.h b/platforms/common/include/px4_platform_common/spi.h index ee9ae350a4..aa71895744 100644 --- a/platforms/common/include/px4_platform_common/spi.h +++ b/platforms/common/include/px4_platform_common/spi.h @@ -154,6 +154,8 @@ public: uint32_t devid() const { return px4_spi_buses[_index].devices[_bus_device_index].devid; } + int externalBusIndex() const { return _external_bus_counter; } + bool external() const { return px4_spi_bus_external(bus()); } private: