diff --git a/src/drivers/differential_pressure/ets/ets_airspeed.cpp b/src/drivers/differential_pressure/ets/ets_airspeed.cpp index 9612bb6ed9..5d10a8dd9f 100644 --- a/src/drivers/differential_pressure/ets/ets_airspeed.cpp +++ b/src/drivers/differential_pressure/ets/ets_airspeed.cpp @@ -47,7 +47,6 @@ /* I2C bus address */ #define I2C_ADDRESS 0x75 /* 7-bit address. 8-bit address is 0xEA */ -#define ETS_PATH "/dev/ets_airspeed" /* Register address */ #define READ_CMD 0x07 /* Read the data */ @@ -64,8 +63,7 @@ class ETSAirspeed : public Airspeed, public I2CSPIDriver { public: - ETSAirspeed(I2CSPIBusOption bus_option, const int bus, int bus_frequency, int address = I2C_ADDRESS, - const char *path = ETS_PATH); + ETSAirspeed(I2CSPIBusOption bus_option, const int bus, int bus_frequency, int address = I2C_ADDRESS); virtual ~ETSAirspeed() = default; @@ -84,8 +82,8 @@ protected: */ extern "C" __EXPORT int ets_airspeed_main(int argc, char *argv[]); -ETSAirspeed::ETSAirspeed(I2CSPIBusOption bus_option, const int bus, int bus_frequency, int address, const char *path) - : Airspeed(bus, bus_frequency, address, CONVERSION_INTERVAL, path), +ETSAirspeed::ETSAirspeed(I2CSPIBusOption bus_option, const int bus, int bus_frequency, int address) + : Airspeed(bus, bus_frequency, address, CONVERSION_INTERVAL), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus, address) { _device_id.devid_s.devtype = DRV_DIFF_PRESS_DEVTYPE_MS4525; diff --git a/src/drivers/differential_pressure/ms4525/ms4525_airspeed.cpp b/src/drivers/differential_pressure/ms4525/ms4525_airspeed.cpp index a935b6ad28..69b09e75b3 100644 --- a/src/drivers/differential_pressure/ms4525/ms4525_airspeed.cpp +++ b/src/drivers/differential_pressure/ms4525/ms4525_airspeed.cpp @@ -65,7 +65,6 @@ enum MS_DEVICE_TYPE { /* I2C bus address is 1010001x */ #define I2C_ADDRESS_MS4515DO 0x46 #define I2C_ADDRESS_MS4525DO 0x28 /**< 7-bit address. Depends on the order code (this is for code "I") */ -#define PATH_MS4525 "/dev/ms4525" /* Register address */ #define ADDR_READ_MR 0x00 /* write to this address to start conversion */ @@ -79,8 +78,7 @@ enum MS_DEVICE_TYPE { class MEASAirspeed : public Airspeed, public I2CSPIDriver { public: - MEASAirspeed(I2CSPIBusOption bus_option, const int bus, int bus_frequency, int address = I2C_ADDRESS_MS4525DO, - const char *path = PATH_MS4525); + MEASAirspeed(I2CSPIBusOption bus_option, const int bus, int bus_frequency, int address = I2C_ADDRESS_MS4525DO); virtual ~MEASAirspeed() = default; @@ -111,8 +109,8 @@ protected: */ extern "C" __EXPORT int ms4525_airspeed_main(int argc, char *argv[]); -MEASAirspeed::MEASAirspeed(I2CSPIBusOption bus_option, const int bus, int bus_frequency, int address, const char *path) - : Airspeed(bus, bus_frequency, address, CONVERSION_INTERVAL, path), +MEASAirspeed::MEASAirspeed(I2CSPIBusOption bus_option, const int bus, int bus_frequency, int address) + : Airspeed(bus, bus_frequency, address, CONVERSION_INTERVAL), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus, address) { _device_id.devid_s.devtype = DRV_DIFF_PRESS_DEVTYPE_MS4525; diff --git a/src/drivers/differential_pressure/ms5525/MS5525.hpp b/src/drivers/differential_pressure/ms5525/MS5525.hpp index 46480d6529..de05204123 100644 --- a/src/drivers/differential_pressure/ms5525/MS5525.hpp +++ b/src/drivers/differential_pressure/ms5525/MS5525.hpp @@ -43,8 +43,6 @@ /* The MS5525DSO address is 111011Cx, where C is the complementary value of the pin CSB */ static constexpr uint8_t I2C_ADDRESS_1_MS5525DSO = 0x76; -static constexpr const char PATH_MS5525[] = "/dev/ms5525"; - /* Measurement rate is 100Hz */ static constexpr unsigned MEAS_RATE = 100; static constexpr float MEAS_DRIVER_FILTER_FREQ = 1.2f; @@ -53,9 +51,8 @@ static constexpr int64_t CONVERSION_INTERVAL = (1000000 / MEAS_RATE); /* microse class MS5525 : public Airspeed, public I2CSPIDriver { public: - MS5525(I2CSPIBusOption bus_option, const int bus, int bus_frequency, int address = I2C_ADDRESS_1_MS5525DSO, - const char *path = PATH_MS5525) : - Airspeed(bus, bus_frequency, address, CONVERSION_INTERVAL, path), + MS5525(I2CSPIBusOption bus_option, const int bus, int bus_frequency, int address = I2C_ADDRESS_1_MS5525DSO) : + Airspeed(bus, bus_frequency, address, CONVERSION_INTERVAL), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus, address) { } diff --git a/src/drivers/differential_pressure/sdp3x/SDP3X.cpp b/src/drivers/differential_pressure/sdp3x/SDP3X.cpp index 56a8a90b7d..4b7dd065eb 100644 --- a/src/drivers/differential_pressure/sdp3x/SDP3X.cpp +++ b/src/drivers/differential_pressure/sdp3x/SDP3X.cpp @@ -57,21 +57,25 @@ int SDP3X::write_command(uint16_t command) bool SDP3X::init_sdp3x() { - // step 1 - reset on broadcast - uint16_t prev_addr = get_device_address(); - set_device_address(SDP3X_RESET_ADDR); - uint8_t reset_cmd = SDP3X_RESET_CMD; - int ret = transfer(&reset_cmd, 1, nullptr, 0); - set_device_address(prev_addr); + int ret; - if (ret != PX4_OK) { - perf_count(_comms_errors); - return false; + if (get_device_address() == I2C_ADDRESS_1_SDP3X) { // since we are broadcasting, only do it for the first device address + // step 1 - reset on broadcast + uint16_t prev_addr = get_device_address(); + set_device_address(SDP3X_RESET_ADDR); + uint8_t reset_cmd = SDP3X_RESET_CMD; + ret = transfer(&reset_cmd, 1, nullptr, 0); + set_device_address(prev_addr); + + if (ret != PX4_OK) { + perf_count(_comms_errors); + return false; + } + + // wait until sensor is ready + px4_usleep(20000); } - // wait until sensor is ready - px4_usleep(20000); - // step 2 - configure ret = write_command(SDP3X_CONT_MEAS_AVG_MODE); diff --git a/src/drivers/differential_pressure/sdp3x/SDP3X.hpp b/src/drivers/differential_pressure/sdp3x/SDP3X.hpp index b4dd41a5c7..769a27bd27 100644 --- a/src/drivers/differential_pressure/sdp3x/SDP3X.hpp +++ b/src/drivers/differential_pressure/sdp3x/SDP3X.hpp @@ -61,8 +61,6 @@ #define SDP3X_SCALE_PRESSURE_SDP32 240 #define SDP3X_SCALE_PRESSURE_SDP33 20 -#define PATH_SDP3X "/dev/sdp3x" - // Measurement rate is 20Hz #define SPD3X_MEAS_RATE 100 #define SDP3X_MEAS_DRIVER_FILTER_FREQ 3.0f @@ -71,9 +69,8 @@ class SDP3X : public Airspeed, public I2CSPIDriver { public: - SDP3X(I2CSPIBusOption bus_option, const int bus, int bus_frequency, int address = I2C_ADDRESS_1_SDP3X, - const char *path = PATH_SDP3X) : - Airspeed(bus, bus_frequency, address, CONVERSION_INTERVAL, path), + SDP3X(I2CSPIBusOption bus_option, const int bus, int bus_frequency, int address = I2C_ADDRESS_1_SDP3X) : + Airspeed(bus, bus_frequency, address, CONVERSION_INTERVAL), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus, address) { } diff --git a/src/lib/drivers/airspeed/airspeed.cpp b/src/lib/drivers/airspeed/airspeed.cpp index 3f52a956e7..ddb830f4e1 100644 --- a/src/lib/drivers/airspeed/airspeed.cpp +++ b/src/lib/drivers/airspeed/airspeed.cpp @@ -56,8 +56,8 @@ #include -Airspeed::Airspeed(int bus, int bus_frequency, int address, unsigned conversion_interval, const char *path) : - I2C("Airspeed", path, bus, address, bus_frequency), +Airspeed::Airspeed(int bus, int bus_frequency, int address, unsigned conversion_interval) : + I2C("Airspeed", nullptr, bus, address, bus_frequency), _sensor_ok(false), _measure_interval(conversion_interval), _collect_phase(false), diff --git a/src/lib/drivers/airspeed/airspeed.h b/src/lib/drivers/airspeed/airspeed.h index f905af3288..f60a59e511 100644 --- a/src/lib/drivers/airspeed/airspeed.h +++ b/src/lib/drivers/airspeed/airspeed.h @@ -46,7 +46,7 @@ class __EXPORT Airspeed : public device::I2C { public: - Airspeed(int bus, int bus_frequency, int address, unsigned conversion_interval, const char *path); + Airspeed(int bus, int bus_frequency, int address, unsigned conversion_interval); virtual ~Airspeed(); int init() override;