From 02f4ad61ec8eb4f7906dd06b4eb1fd6abb994244 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Wed, 1 Apr 2020 12:24:22 -0400 Subject: [PATCH] I2C/SPI require device type in constructor --- boards/airmind/mindpx-v2/src/spi.cpp | 2 +- .../intel/aerofc-v1/aerofc_adc/AEROFC_ADC.cpp | 2 +- .../intel/aerofc-v1/aerofc_adc/AEROFC_ADC.hpp | 1 - boards/px4/fmu-v2/src/spi.cpp | 4 ++-- boards/px4/fmu-v3/src/spi.cpp | 4 ++-- src/drivers/barometer/bmp280/BMP280.cpp | 1 - src/drivers/barometer/bmp280/BMP280_I2C.cpp | 2 +- src/drivers/barometer/bmp280/BMP280_SPI.cpp | 2 +- src/drivers/barometer/bmp388/bmp388.cpp | 1 - src/drivers/barometer/bmp388/bmp388_i2c.cpp | 2 +- src/drivers/barometer/bmp388/bmp388_spi.cpp | 2 +- src/drivers/barometer/dps310/DPS310.cpp | 1 - src/drivers/barometer/dps310/DPS310_I2C.cpp | 2 +- src/drivers/barometer/dps310/DPS310_SPI.cpp | 2 +- src/drivers/barometer/lps22hb/LPS22HB.cpp | 6 ++--- src/drivers/barometer/lps22hb/LPS22HB_I2C.cpp | 2 +- src/drivers/barometer/lps22hb/LPS22HB_SPI.cpp | 3 +-- src/drivers/barometer/lps25h/LPS25H.cpp | 2 -- src/drivers/barometer/lps25h/lps25h_i2c.cpp | 3 +-- src/drivers/barometer/lps25h/lps25h_spi.cpp | 3 +-- src/drivers/barometer/mpl3115a2/MPL3115A2.cpp | 4 +--- src/drivers/barometer/ms5611/ms5611_i2c.cpp | 2 +- src/drivers/barometer/ms5611/ms5611_spi.cpp | 2 +- .../distance_sensor/leddar_one/LeddarOne.cpp | 2 -- .../distance_sensor/ll40ls/LidarLiteI2C.cpp | 4 ++-- .../distance_sensor/mappydot/MappyDot.cpp | 3 +-- src/drivers/distance_sensor/mb12xx/mb12xx.cpp | 3 +-- src/drivers/distance_sensor/pga460/pga460.cpp | 4 ++-- src/drivers/distance_sensor/pga460/pga460.h | 2 +- src/drivers/distance_sensor/sf0x/SF0X.cpp | 2 -- src/drivers/distance_sensor/sf1xx/sf1xx.cpp | 4 +--- src/drivers/distance_sensor/srf02/SRF02.cpp | 4 ++-- .../distance_sensor/teraranger/TERARANGER.cpp | 4 ++-- .../distance_sensor/vl53l0x/VL53L0X.cpp | 2 +- src/drivers/drv_sensor.h | 4 ++-- src/drivers/imu/adis16448/ADIS16448.cpp | 7 +----- src/drivers/imu/adis16477/ADIS16477.cpp | 8 +++---- src/drivers/imu/adis16497/ADIS16497.cpp | 9 +++----- src/drivers/imu/bma180/bma180.cpp | 4 +--- src/drivers/imu/bmi055/BMI055.hpp | 2 +- src/drivers/imu/bmi055/BMI055_accel.cpp | 4 +--- src/drivers/imu/bmi055/BMI055_gyro.cpp | 4 +--- src/drivers/imu/bmi055/bmi055_main.cpp | 9 ++++---- src/drivers/imu/bmi088/BMI088.hpp | 2 +- src/drivers/imu/bmi088/BMI088_accel.cpp | 1 - src/drivers/imu/bmi088/BMI088_gyro.cpp | 1 - src/drivers/imu/bmi088/bmi088_main.cpp | 5 ++-- src/drivers/imu/bmi160/bmi160.cpp | 4 +--- src/drivers/imu/fxas21002c/FXAS21002C.cpp | 3 +-- src/drivers/imu/fxos8701cq/FXOS8701CQ.cpp | 7 +----- src/drivers/imu/icm20948/ICM20948_mag.cpp | 7 +++--- src/drivers/imu/icm20948/icm20948.cpp | 2 -- src/drivers/imu/icm20948/icm20948_i2c.cpp | 3 +-- src/drivers/imu/icm20948/icm20948_spi.cpp | 3 +-- src/drivers/imu/icm20948/mag_i2c.cpp | 3 +-- .../imu/invensense/icm20602/ICM20602.cpp | 7 +----- .../imu/invensense/icm20608g/ICM20608G.cpp | 7 +----- .../imu/invensense/icm20689/ICM20689.cpp | 7 +----- .../imu/invensense/icm40609d/ICM40609D.cpp | 7 +----- .../imu/invensense/icm42688p/ICM42688P.cpp | 7 +----- .../imu/invensense/mpu6000/MPU6000.cpp | 7 +----- .../imu/invensense/mpu6500/MPU6500.cpp | 7 +----- .../imu/invensense/mpu9250/MPU9250.cpp | 7 +----- src/drivers/imu/l3gd20/L3GD20.cpp | 3 +-- src/drivers/imu/lsm303d/LSM303D.cpp | 4 +--- src/drivers/imu/lsm303d/lsm303d_main.cpp | 2 +- src/drivers/imu/mpu6000/MPU6000.cpp | 4 ++++ src/drivers/imu/mpu6000/MPU6000_I2C.cpp | 2 +- src/drivers/imu/mpu6000/MPU6000_SPI.cpp | 2 +- src/drivers/imu/mpu9250/AK8963_I2C.cpp | 4 ++-- src/drivers/imu/mpu9250/MPU9250_mag.cpp | 8 +++---- src/drivers/imu/mpu9250/mpu9250.cpp | 2 -- src/drivers/imu/mpu9250/mpu9250_i2c.cpp | 3 +-- src/drivers/imu/mpu9250/mpu9250_spi.cpp | 3 +-- src/drivers/imu/st/ism330dlc/ISM330DLC.cpp | 6 +---- src/drivers/imu/st/lsm9ds1/LSM9DS1.cpp | 6 +---- src/drivers/imu/st/lsm9ds1/lsm9ds1_main.cpp | 3 +-- src/drivers/irlock/irlock.cpp | 5 +--- src/drivers/lights/blinkm/blinkm.cpp | 11 +++++++-- src/drivers/lights/rgbled/rgbled.cpp | 2 +- .../rgbled_ncp5623c/rgbled_ncp5623c.cpp | 2 +- src/drivers/magnetometer/ak09916/ak09916.cpp | 5 +--- src/drivers/magnetometer/bmm150/bmm150.cpp | 5 +--- src/drivers/magnetometer/hmc5883/HMC5883.cpp | 2 -- .../magnetometer/hmc5883/hmc5883_i2c.cpp | 3 +-- .../magnetometer/hmc5883/hmc5883_spi.cpp | 3 +-- .../magnetometer/isentek/ist8308/IST8308.cpp | 5 +--- src/drivers/magnetometer/ist8310/ist8310.cpp | 5 +--- src/drivers/magnetometer/lis3mdl/lis3mdl.cpp | 3 --- .../magnetometer/lis3mdl/lis3mdl_i2c.cpp | 3 +-- .../magnetometer/lis3mdl/lis3mdl_spi.cpp | 3 +-- .../magnetometer/lsm303agr/LSM303AGR.cpp | 5 +--- .../magnetometer/lsm9ds1_mag/LSM9DS1_MAG.cpp | 5 +--- src/drivers/magnetometer/qmc5883/QMC5883.cpp | 3 --- .../magnetometer/qmc5883/QMC5883_I2C.cpp | 3 +-- src/drivers/magnetometer/rm3100/rm3100.cpp | 3 --- .../magnetometer/rm3100/rm3100_i2c.cpp | 3 +-- .../magnetometer/rm3100/rm3100_spi.cpp | 3 +-- src/drivers/mkblctrl/mkblctrl.cpp | 2 +- src/drivers/optical_flow/paw3902/PAW3902.cpp | 8 +++---- src/drivers/optical_flow/pmw3901/PMW3901.cpp | 2 +- src/drivers/optical_flow/pmw3901/PMW3901.hpp | 3 --- src/drivers/optical_flow/px4flow/px4flow.cpp | 8 +++---- src/drivers/osd/atxxxx/atxxxx.cpp | 2 +- src/drivers/pca9685/pca9685.cpp | 5 ++-- src/drivers/pca9685_pwm_out/PCA9685.cpp | 2 +- src/drivers/power_monitor/ina226/ina226.cpp | 2 +- src/drivers/power_monitor/voxlpm/voxlpm.cpp | 4 ++-- src/drivers/rpm/pcf8583/PCF8583.cpp | 2 +- src/drivers/tap_esc/drv_tap_esc.h | 2 -- src/drivers/tap_esc/tap_esc.cpp | 2 +- src/drivers/telemetry/bst/bst.cpp | 2 +- src/lib/drivers/airspeed/airspeed.cpp | 2 +- src/lib/drivers/device/Device.hpp | 23 ++++--------------- src/lib/drivers/device/nuttx/I2C.cpp | 8 +++---- src/lib/drivers/device/nuttx/I2C.hpp | 4 ++-- src/lib/drivers/device/nuttx/SPI.cpp | 10 ++++---- src/lib/drivers/device/nuttx/SPI.hpp | 6 ++--- src/lib/drivers/device/posix/I2C.cpp | 8 +++---- src/lib/drivers/device/posix/I2C.hpp | 4 ++-- src/lib/drivers/device/posix/SPI.cpp | 9 +++----- src/lib/drivers/device/posix/SPI.hpp | 4 ++-- src/lib/drivers/device/qurt/I2C.cpp | 8 +++---- src/lib/drivers/device/qurt/I2C.hpp | 4 ++-- src/lib/drivers/device/qurt/SPI.cpp | 9 +++----- src/lib/drivers/device/qurt/SPI.hpp | 10 +++----- src/lib/drivers/smbus/SMBus.cpp | 2 +- src/lib/parameters/param_translation.cpp | 4 ++++ 128 files changed, 181 insertions(+), 351 deletions(-) diff --git a/boards/airmind/mindpx-v2/src/spi.cpp b/boards/airmind/mindpx-v2/src/spi.cpp index 9cc9a2e0e4ef..2d44f1d8ef6f 100644 --- a/boards/airmind/mindpx-v2/src/spi.cpp +++ b/boards/airmind/mindpx-v2/src/spi.cpp @@ -44,7 +44,7 @@ constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = { }), initSPIBus(SPI::Bus::SPI4, { initSPIDevice(DRV_GYR_DEVTYPE_L3GD20, SPI::CS{GPIO::PortB, GPIO::Pin2}, SPI::DRDY{GPIO::PortE, GPIO::Pin4}), - initSPIDevice(DRV_ACC_DEVTYPE_LSM303D, SPI::CS{GPIO::PortD, GPIO::Pin11}), + initSPIDevice(DRV_IMU_DEVTYPE_LSM303D, SPI::CS{GPIO::PortD, GPIO::Pin11}), initSPIDevice(DRV_BARO_DEVTYPE_MS5611, SPI::CS{GPIO::PortC, GPIO::Pin15}), initSPIDevice(DRV_IMU_DEVTYPE_MPU6000, SPI::CS{GPIO::PortE, GPIO::Pin3}, SPI::DRDY{GPIO::PortE, GPIO::Pin10}), initSPIDevice(DRV_IMU_DEVTYPE_MPU6500, SPI::CS{GPIO::PortE, GPIO::Pin3}, SPI::DRDY{GPIO::PortE, GPIO::Pin10}), diff --git a/boards/intel/aerofc-v1/aerofc_adc/AEROFC_ADC.cpp b/boards/intel/aerofc-v1/aerofc_adc/AEROFC_ADC.cpp index bd82b4c4bccc..7c184d2fa208 100644 --- a/boards/intel/aerofc-v1/aerofc_adc/AEROFC_ADC.cpp +++ b/boards/intel/aerofc-v1/aerofc_adc/AEROFC_ADC.cpp @@ -36,7 +36,7 @@ using namespace time_literals; AEROFC_ADC::AEROFC_ADC(I2CSPIBusOption bus_option, int bus_number, int bus_frequency) : - I2C("AEROFC_ADC", AEROFC_ADC_DEVICE_PATH, bus_number, SLAVE_ADDR, bus_frequency), + I2C(DRV_ADC_DEVTYPE_AEROFC, MODULE_NAME, bus_number, SLAVE_ADDR, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus_number), _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": sample")) { diff --git a/boards/intel/aerofc-v1/aerofc_adc/AEROFC_ADC.hpp b/boards/intel/aerofc-v1/aerofc_adc/AEROFC_ADC.hpp index 9d7fe849cff0..8638495d526a 100644 --- a/boards/intel/aerofc-v1/aerofc_adc/AEROFC_ADC.hpp +++ b/boards/intel/aerofc-v1/aerofc_adc/AEROFC_ADC.hpp @@ -50,7 +50,6 @@ #define ADC_ENABLE_REG 0x00 #define ADC_CHANNEL_REG 0x03 #define MAX_CHANNEL 5 -#define AEROFC_ADC_DEVICE_PATH "/dev/aerofc_adc" class AEROFC_ADC : public device::I2C, public I2CSPIDriver { diff --git a/boards/px4/fmu-v2/src/spi.cpp b/boards/px4/fmu-v2/src/spi.cpp index 8196dee0405c..57f55e09e897 100644 --- a/boards/px4/fmu-v2/src/spi.cpp +++ b/boards/px4/fmu-v2/src/spi.cpp @@ -151,7 +151,7 @@ constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSION initSPIDevice(DRV_IMU_DEVTYPE_MPU6000, SPI::CS{GPIO::PortC, GPIO::Pin2}, SPI::DRDY{GPIO::PortD, GPIO::Pin15}), initSPIDevice(DRV_IMU_DEVTYPE_MPU9250, SPI::CS{GPIO::PortC, GPIO::Pin2}, SPI::DRDY{GPIO::PortD, GPIO::Pin15}), initSPIDevice(DRV_GYR_DEVTYPE_L3GD20, SPI::CS{GPIO::PortC, GPIO::Pin13}, SPI::DRDY{GPIO::PortB, GPIO::Pin0}), - initSPIDevice(DRV_ACC_DEVTYPE_LSM303D, SPI::CS{GPIO::PortC, GPIO::Pin15}), + initSPIDevice(DRV_IMU_DEVTYPE_LSM303D, SPI::CS{GPIO::PortC, GPIO::Pin15}), initSPIDevice(DRV_BARO_DEVTYPE_MS5611, SPI::CS{GPIO::PortD, GPIO::Pin7}), initSPIDevice(DRV_BARO_DEVTYPE_MS5607, SPI::CS{GPIO::PortD, GPIO::Pin7}), }, {GPIO::PortE, GPIO::Pin3}), @@ -180,7 +180,7 @@ constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSION initSPIDevice(DRV_IMU_DEVTYPE_MPU9250, SPI::CS{GPIO::PortE, GPIO::Pin4}), initSPIDevice(DRV_GYR_DEVTYPE_L3GD20, SPI::CS{GPIO::PortC, GPIO::Pin13}), initSPIDevice(DRV_BARO_DEVTYPE_MS5611, SPI::CS{GPIO::PortC, GPIO::Pin14}), - initSPIDevice(DRV_ACC_DEVTYPE_LSM303D, SPI::CS{GPIO::PortC, GPIO::Pin15}), + initSPIDevice(DRV_IMU_DEVTYPE_LSM303D, SPI::CS{GPIO::PortC, GPIO::Pin15}), }), }), diff --git a/boards/px4/fmu-v3/src/spi.cpp b/boards/px4/fmu-v3/src/spi.cpp index 8196dee0405c..57f55e09e897 100644 --- a/boards/px4/fmu-v3/src/spi.cpp +++ b/boards/px4/fmu-v3/src/spi.cpp @@ -151,7 +151,7 @@ constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSION initSPIDevice(DRV_IMU_DEVTYPE_MPU6000, SPI::CS{GPIO::PortC, GPIO::Pin2}, SPI::DRDY{GPIO::PortD, GPIO::Pin15}), initSPIDevice(DRV_IMU_DEVTYPE_MPU9250, SPI::CS{GPIO::PortC, GPIO::Pin2}, SPI::DRDY{GPIO::PortD, GPIO::Pin15}), initSPIDevice(DRV_GYR_DEVTYPE_L3GD20, SPI::CS{GPIO::PortC, GPIO::Pin13}, SPI::DRDY{GPIO::PortB, GPIO::Pin0}), - initSPIDevice(DRV_ACC_DEVTYPE_LSM303D, SPI::CS{GPIO::PortC, GPIO::Pin15}), + initSPIDevice(DRV_IMU_DEVTYPE_LSM303D, SPI::CS{GPIO::PortC, GPIO::Pin15}), initSPIDevice(DRV_BARO_DEVTYPE_MS5611, SPI::CS{GPIO::PortD, GPIO::Pin7}), initSPIDevice(DRV_BARO_DEVTYPE_MS5607, SPI::CS{GPIO::PortD, GPIO::Pin7}), }, {GPIO::PortE, GPIO::Pin3}), @@ -180,7 +180,7 @@ constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSION initSPIDevice(DRV_IMU_DEVTYPE_MPU9250, SPI::CS{GPIO::PortE, GPIO::Pin4}), initSPIDevice(DRV_GYR_DEVTYPE_L3GD20, SPI::CS{GPIO::PortC, GPIO::Pin13}), initSPIDevice(DRV_BARO_DEVTYPE_MS5611, SPI::CS{GPIO::PortC, GPIO::Pin14}), - initSPIDevice(DRV_ACC_DEVTYPE_LSM303D, SPI::CS{GPIO::PortC, GPIO::Pin15}), + initSPIDevice(DRV_IMU_DEVTYPE_LSM303D, SPI::CS{GPIO::PortC, GPIO::Pin15}), }), }), diff --git a/src/drivers/barometer/bmp280/BMP280.cpp b/src/drivers/barometer/bmp280/BMP280.cpp index 99547a3c9e92..8a2d43ec3dd6 100644 --- a/src/drivers/barometer/bmp280/BMP280.cpp +++ b/src/drivers/barometer/bmp280/BMP280.cpp @@ -42,7 +42,6 @@ BMP280::BMP280(I2CSPIBusOption bus_option, int bus, bmp280::IBMP280 *interface) _measure_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": measure")), _comms_errors(perf_alloc(PC_COUNT, MODULE_NAME": comms errors")) { - _px4_baro.set_device_type(DRV_BARO_DEVTYPE_BMP280); } BMP280::~BMP280() diff --git a/src/drivers/barometer/bmp280/BMP280_I2C.cpp b/src/drivers/barometer/bmp280/BMP280_I2C.cpp index 136fe2f2a148..51bc4e906765 100644 --- a/src/drivers/barometer/bmp280/BMP280_I2C.cpp +++ b/src/drivers/barometer/bmp280/BMP280_I2C.cpp @@ -71,7 +71,7 @@ bmp280::IBMP280 *bmp280_i2c_interface(uint8_t busnum, uint32_t device, int bus_f } BMP280_I2C::BMP280_I2C(uint8_t bus, uint32_t device, int bus_frequency) : - I2C("BMP280_I2C", nullptr, bus, device, bus_frequency) + I2C(DRV_BARO_DEVTYPE_BMP280, MODULE_NAME, bus, device, bus_frequency) { } diff --git a/src/drivers/barometer/bmp280/BMP280_SPI.cpp b/src/drivers/barometer/bmp280/BMP280_SPI.cpp index 68461b180cba..0bc4f1d9d3a0 100644 --- a/src/drivers/barometer/bmp280/BMP280_SPI.cpp +++ b/src/drivers/barometer/bmp280/BMP280_SPI.cpp @@ -87,7 +87,7 @@ bmp280_spi_interface(uint8_t busnum, uint32_t device, int bus_frequency, spi_mod } BMP280_SPI::BMP280_SPI(uint8_t bus, uint32_t device, int bus_frequency, spi_mode_e spi_mode) : - SPI("BMP280_SPI", nullptr, bus, device, spi_mode, bus_frequency) + SPI(DRV_BARO_DEVTYPE_BMP280, MODULE_NAME, bus, device, spi_mode, bus_frequency) { } diff --git a/src/drivers/barometer/bmp388/bmp388.cpp b/src/drivers/barometer/bmp388/bmp388.cpp index 2e5cb0f33f5f..fcc5973b2f9c 100644 --- a/src/drivers/barometer/bmp388/bmp388.cpp +++ b/src/drivers/barometer/bmp388/bmp388.cpp @@ -50,7 +50,6 @@ BMP388::BMP388(I2CSPIBusOption bus_option, int bus, IBMP388 *interface) : _measure_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": measure")), _comms_errors(perf_alloc(PC_COUNT, MODULE_NAME": comms errors")) { - _px4_baro.set_device_type(DRV_BARO_DEVTYPE_BMP388); } BMP388::~BMP388() diff --git a/src/drivers/barometer/bmp388/bmp388_i2c.cpp b/src/drivers/barometer/bmp388/bmp388_i2c.cpp index eb0725fd057a..5a3ea5e5be30 100644 --- a/src/drivers/barometer/bmp388/bmp388_i2c.cpp +++ b/src/drivers/barometer/bmp388/bmp388_i2c.cpp @@ -68,7 +68,7 @@ IBMP388 *bmp388_i2c_interface(uint8_t busnum, uint32_t device, int bus_frequency } BMP388_I2C::BMP388_I2C(uint8_t bus, uint32_t device, int bus_frequency) : - I2C("BMP388_I2C", nullptr, bus, device, bus_frequency) + I2C(DRV_BARO_DEVTYPE_BMP388, MODULE_NAME, bus, device, bus_frequency) { } diff --git a/src/drivers/barometer/bmp388/bmp388_spi.cpp b/src/drivers/barometer/bmp388/bmp388_spi.cpp index 94e0e25db5cf..2943c0369274 100644 --- a/src/drivers/barometer/bmp388/bmp388_spi.cpp +++ b/src/drivers/barometer/bmp388/bmp388_spi.cpp @@ -84,7 +84,7 @@ IBMP388 *bmp388_spi_interface(uint8_t busnum, uint32_t device, int bus_frequency } BMP388_SPI::BMP388_SPI(uint8_t bus, uint32_t device, int bus_frequency, spi_mode_e spi_mode) : - SPI("BMP388_SPI", nullptr, bus, device, spi_mode, bus_frequency) + SPI(DRV_BARO_DEVTYPE_BMP388, MODULE_NAME, bus, device, spi_mode, bus_frequency) { } diff --git a/src/drivers/barometer/dps310/DPS310.cpp b/src/drivers/barometer/dps310/DPS310.cpp index b732b41ca660..978481c3860f 100644 --- a/src/drivers/barometer/dps310/DPS310.cpp +++ b/src/drivers/barometer/dps310/DPS310.cpp @@ -54,7 +54,6 @@ DPS310::DPS310(I2CSPIBusOption bus_option, int bus, device::Device *interface) : _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": read")), _comms_errors(perf_alloc(PC_COUNT, MODULE_NAME": comm errors")) { - _px4_barometer.set_device_type(DRV_BARO_DEVTYPE_DPS310); } DPS310::~DPS310() diff --git a/src/drivers/barometer/dps310/DPS310_I2C.cpp b/src/drivers/barometer/dps310/DPS310_I2C.cpp index 870f3484c3ff..55c2acb2bdcd 100644 --- a/src/drivers/barometer/dps310/DPS310_I2C.cpp +++ b/src/drivers/barometer/dps310/DPS310_I2C.cpp @@ -62,7 +62,7 @@ DPS310_I2C_interface(uint8_t bus, uint32_t address, int bus_frequency) } DPS310_I2C::DPS310_I2C(uint8_t bus, uint32_t address, int bus_frequency) : - I2C("DPS310_I2C", nullptr, bus, address, bus_frequency) + I2C(DRV_BARO_DEVTYPE_DPS310, MODULE_NAME, bus, address, bus_frequency) { } diff --git a/src/drivers/barometer/dps310/DPS310_SPI.cpp b/src/drivers/barometer/dps310/DPS310_SPI.cpp index f33f6df6aa27..1251691595c6 100644 --- a/src/drivers/barometer/dps310/DPS310_SPI.cpp +++ b/src/drivers/barometer/dps310/DPS310_SPI.cpp @@ -66,7 +66,7 @@ DPS310_SPI_interface(uint8_t bus, uint32_t device, int bus_frequency, spi_mode_e } DPS310_SPI::DPS310_SPI(uint8_t bus, uint32_t device, int bus_frequency, spi_mode_e spi_mode) : - SPI("DPS310_SPI", nullptr, bus, device, spi_mode, bus_frequency) + SPI(DRV_BARO_DEVTYPE_DPS310, MODULE_NAME, bus, device, spi_mode, bus_frequency) { } diff --git a/src/drivers/barometer/lps22hb/LPS22HB.cpp b/src/drivers/barometer/lps22hb/LPS22HB.cpp index e425634c824e..667122a18941 100644 --- a/src/drivers/barometer/lps22hb/LPS22HB.cpp +++ b/src/drivers/barometer/lps22hb/LPS22HB.cpp @@ -46,11 +46,9 @@ LPS22HB::LPS22HB(I2CSPIBusOption bus_option, int bus, device::Device *interface) CDev(nullptr), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(interface->get_device_id()), bus_option, bus), _interface(interface), - _sample_perf(perf_alloc(PC_ELAPSED, "lps22hb_read")), - _comms_errors(perf_alloc(PC_COUNT, "lps22hb_comms_errors")) + _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": read")), + _comms_errors(perf_alloc(PC_COUNT, MODULE_NAME": comms_errors")) { - // set the interface device type - _interface->set_device_type(DRV_BARO_DEVTYPE_LPS22HB); } LPS22HB::~LPS22HB() diff --git a/src/drivers/barometer/lps22hb/LPS22HB_I2C.cpp b/src/drivers/barometer/lps22hb/LPS22HB_I2C.cpp index dd643c5ebcad..f929e5245251 100644 --- a/src/drivers/barometer/lps22hb/LPS22HB_I2C.cpp +++ b/src/drivers/barometer/lps22hb/LPS22HB_I2C.cpp @@ -64,7 +64,7 @@ LPS22HB_I2C_interface(int bus, int bus_frequency) } LPS22HB_I2C::LPS22HB_I2C(int bus, int bus_frequency) : - I2C("LPS22HB_I2C", nullptr, bus, LPS22HB_ADDRESS, bus_frequency) + I2C(DRV_BARO_DEVTYPE_LPS22HB, MODULE_NAME, bus, LPS22HB_ADDRESS, bus_frequency) { } diff --git a/src/drivers/barometer/lps22hb/LPS22HB_SPI.cpp b/src/drivers/barometer/lps22hb/LPS22HB_SPI.cpp index 5999a696c61a..5211b014c985 100644 --- a/src/drivers/barometer/lps22hb/LPS22HB_SPI.cpp +++ b/src/drivers/barometer/lps22hb/LPS22HB_SPI.cpp @@ -64,9 +64,8 @@ LPS22HB_SPI_interface(int bus, uint32_t devid, int bus_frequency, spi_mode_e spi } LPS22HB_SPI::LPS22HB_SPI(int bus, uint32_t device, int bus_frequency, spi_mode_e spi_mode) - : SPI("LPS22HB_SPI", nullptr, bus, device, spi_mode, bus_frequency) + : SPI(DRV_BARO_DEVTYPE_LPS22HB, MODULE_NAME, bus, device, spi_mode, bus_frequency) { - _device_id.devid_s.devtype = DRV_BARO_DEVTYPE_LPS22HB; } int diff --git a/src/drivers/barometer/lps25h/LPS25H.cpp b/src/drivers/barometer/lps25h/LPS25H.cpp index fbb5f126953b..e68b37a4978e 100644 --- a/src/drivers/barometer/lps25h/LPS25H.cpp +++ b/src/drivers/barometer/lps25h/LPS25H.cpp @@ -40,8 +40,6 @@ LPS25H::LPS25H(I2CSPIBusOption bus_option, int bus, device::Device *interface) : _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": read")), _comms_errors(perf_alloc(PC_COUNT, MODULE_NAME": comms_errors")) { - _interface->set_device_type(DRV_BARO_DEVTYPE_LPS25H); - _px4_barometer.set_device_type(DRV_BARO_DEVTYPE_LPS25H); } LPS25H::~LPS25H() diff --git a/src/drivers/barometer/lps25h/lps25h_i2c.cpp b/src/drivers/barometer/lps25h/lps25h_i2c.cpp index 5f1bd1b4c309..03ecf2c9e50f 100644 --- a/src/drivers/barometer/lps25h/lps25h_i2c.cpp +++ b/src/drivers/barometer/lps25h/lps25h_i2c.cpp @@ -65,9 +65,8 @@ device::Device *LPS25H_I2C_interface(int bus, int bus_frequency) } LPS25H_I2C::LPS25H_I2C(int bus, int bus_frequency) : - I2C("LPS25H_I2C", nullptr, bus, LPS25H_ADDRESS, bus_frequency) + I2C(DRV_BARO_DEVTYPE_LPS25H, MODULE_NAME, bus, LPS25H_ADDRESS, bus_frequency) { - set_device_type(DRV_BARO_DEVTYPE_LPS25H); } int LPS25H_I2C::probe() diff --git a/src/drivers/barometer/lps25h/lps25h_spi.cpp b/src/drivers/barometer/lps25h/lps25h_spi.cpp index c8364d266a0e..61dac459c262 100644 --- a/src/drivers/barometer/lps25h/lps25h_spi.cpp +++ b/src/drivers/barometer/lps25h/lps25h_spi.cpp @@ -65,9 +65,8 @@ device::Device *LPS25H_SPI_interface(int bus, uint32_t devid, int bus_frequency, } LPS25H_SPI::LPS25H_SPI(int bus, uint32_t device, int bus_frequency, spi_mode_e spi_mode) : - SPI("LPS25H_SPI", nullptr, bus, device, spi_mode, bus_frequency) + SPI(DRV_BARO_DEVTYPE_LPS25H, MODULE_NAME, bus, device, spi_mode, bus_frequency) { - set_device_type(DRV_BARO_DEVTYPE_LPS25H); } int LPS25H_SPI::init() diff --git a/src/drivers/barometer/mpl3115a2/MPL3115A2.cpp b/src/drivers/barometer/mpl3115a2/MPL3115A2.cpp index 6d8159f5137a..804efafa5ab8 100644 --- a/src/drivers/barometer/mpl3115a2/MPL3115A2.cpp +++ b/src/drivers/barometer/mpl3115a2/MPL3115A2.cpp @@ -55,15 +55,13 @@ #define MPL3115A2_CTRL_TRIGGER (CTRL_REG1_OST | CTRL_REG1_OS(MPL3115A2_OSR)) MPL3115A2::MPL3115A2(I2CSPIBusOption bus_option, const int bus, int bus_frequency) : - I2C("MPL3115A2", nullptr, bus, MPL3115A2_ADDRESS, bus_frequency), + I2C(DRV_BARO_DEVTYPE_MPL3115A2, MODULE_NAME, bus, MPL3115A2_ADDRESS, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_barometer(get_device_id()), _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": read")), _measure_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": measure")), _comms_errors(perf_alloc(PC_COUNT, MODULE_NAME": com_err")) { - set_device_type(DRV_BARO_DEVTYPE_MPL3115A2); - _px4_barometer.set_device_type(DRV_BARO_DEVTYPE_MPL3115A2); } MPL3115A2::~MPL3115A2() diff --git a/src/drivers/barometer/ms5611/ms5611_i2c.cpp b/src/drivers/barometer/ms5611/ms5611_i2c.cpp index 63b04dd5cfb4..d5fbab39c331 100644 --- a/src/drivers/barometer/ms5611/ms5611_i2c.cpp +++ b/src/drivers/barometer/ms5611/ms5611_i2c.cpp @@ -91,7 +91,7 @@ MS5611_i2c_interface(ms5611::prom_u &prom_buf, uint32_t devid, uint8_t busnum, i } MS5611_I2C::MS5611_I2C(uint8_t bus, ms5611::prom_u &prom, int bus_frequency) : - I2C("MS5611_I2C", nullptr, bus, 0, bus_frequency), + I2C(DRV_BARO_DEVTYPE_MS5611, MODULE_NAME, bus, 0, bus_frequency), _prom(prom) { } diff --git a/src/drivers/barometer/ms5611/ms5611_spi.cpp b/src/drivers/barometer/ms5611/ms5611_spi.cpp index 544a38863851..88401b0d5dba 100644 --- a/src/drivers/barometer/ms5611/ms5611_spi.cpp +++ b/src/drivers/barometer/ms5611/ms5611_spi.cpp @@ -103,7 +103,7 @@ MS5611_spi_interface(ms5611::prom_u &prom_buf, uint32_t devid, uint8_t busnum, i } MS5611_SPI::MS5611_SPI(uint8_t bus, uint32_t device, ms5611::prom_u &prom_buf, int bus_frequency, spi_mode_e spi_mode) : - SPI("MS5611_SPI", nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_BARO_DEVTYPE_MS5611, MODULE_NAME, bus, device, spi_mode, bus_frequency), _prom(prom_buf) { } diff --git a/src/drivers/distance_sensor/leddar_one/LeddarOne.cpp b/src/drivers/distance_sensor/leddar_one/LeddarOne.cpp index 6c6368ef0d8a..410c04f84384 100644 --- a/src/drivers/distance_sensor/leddar_one/LeddarOne.cpp +++ b/src/drivers/distance_sensor/leddar_one/LeddarOne.cpp @@ -42,11 +42,9 @@ LeddarOne::LeddarOne(const char *serial_port, uint8_t device_orientation): { _serial_port = strdup(serial_port); - _px4_rangefinder.set_device_type(distance_sensor_s::MAV_DISTANCE_SENSOR_LASER); _px4_rangefinder.set_max_distance(LEDDAR_ONE_MAX_DISTANCE); _px4_rangefinder.set_min_distance(LEDDAR_ONE_MIN_DISTANCE); _px4_rangefinder.set_fov(LEDDAR_ONE_FIELD_OF_VIEW); - _px4_rangefinder.set_orientation(device_orientation); } LeddarOne::~LeddarOne() diff --git a/src/drivers/distance_sensor/ll40ls/LidarLiteI2C.cpp b/src/drivers/distance_sensor/ll40ls/LidarLiteI2C.cpp index e8b45b0f2c74..777442733400 100644 --- a/src/drivers/distance_sensor/ll40ls/LidarLiteI2C.cpp +++ b/src/drivers/distance_sensor/ll40ls/LidarLiteI2C.cpp @@ -43,9 +43,9 @@ LidarLiteI2C::LidarLiteI2C(I2CSPIBusOption bus_option, const int bus, const uint8_t rotation, int bus_frequency, const int address) : - I2C("LL40LS", nullptr, bus, address, bus_frequency), + I2C(DRV_RNG_DEVTYPE_LL40LS, MODULE_NAME, bus, address, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), - _px4_rangefinder(0 /* device id not yet used */, ORB_PRIO_DEFAULT, rotation) + _px4_rangefinder(get_device_id(), ORB_PRIO_DEFAULT, rotation) { _px4_rangefinder.set_min_distance(LL40LS_MIN_DISTANCE); _px4_rangefinder.set_max_distance(LL40LS_MAX_DISTANCE); diff --git a/src/drivers/distance_sensor/mappydot/MappyDot.cpp b/src/drivers/distance_sensor/mappydot/MappyDot.cpp index 836b1b199174..f394b11d77b0 100644 --- a/src/drivers/distance_sensor/mappydot/MappyDot.cpp +++ b/src/drivers/distance_sensor/mappydot/MappyDot.cpp @@ -135,7 +135,6 @@ #define MAPPYDOT_MAX_DISTANCE (4.f) // meters #define MAPPYDOT_BUS_CLOCK 400000 // 400kHz bus speed -#define MAPPYDOT_DEVICE_PATH "/dev/mappydot" /* Configuration Constants */ #define MAPPYDOT_BASE_ADDR 0x08 @@ -222,7 +221,7 @@ class MappyDot : public device::I2C, public ModuleParams, public I2CSPIDriver /** @orb_advert_t orb_advert_t uORB advertisement topic. */ orb_advert_t _distance_sensor_topic{nullptr}; - /** @param _fd Returns the file descriptor from px4_open(). */ + /** @param _fd Returns the file descriptor from open(). */ int _fd{-1}; /** @param _port Stores the port name. */ diff --git a/src/drivers/distance_sensor/sf0x/SF0X.cpp b/src/drivers/distance_sensor/sf0x/SF0X.cpp index c05d129e02cb..45800e10f407 100644 --- a/src/drivers/distance_sensor/sf0x/SF0X.cpp +++ b/src/drivers/distance_sensor/sf0x/SF0X.cpp @@ -49,8 +49,6 @@ SF0X::SF0X(const char *port, uint8_t rotation) : /* enforce null termination */ _port[sizeof(_port) - 1] = '\0'; - - _px4_rangefinder.set_device_type(distance_sensor_s::MAV_DISTANCE_SENSOR_LASER); } SF0X::~SF0X() diff --git a/src/drivers/distance_sensor/sf1xx/sf1xx.cpp b/src/drivers/distance_sensor/sf1xx/sf1xx.cpp index 1cc01a351d77..659c99b0377c 100644 --- a/src/drivers/distance_sensor/sf1xx/sf1xx.cpp +++ b/src/drivers/distance_sensor/sf1xx/sf1xx.cpp @@ -75,8 +75,6 @@ /* Configuration Constants */ #define SF1XX_BASEADDR 0x66 -#define SF1XX_DEVICE_PATH "/dev/sf1xx" - class SF1XX : public device::I2C, public I2CSPIDriver { @@ -166,7 +164,7 @@ class SF1XX : public device::I2C, public I2CSPIDriver extern "C" __EXPORT int sf1xx_main(int argc, char *argv[]); SF1XX::SF1XX(I2CSPIBusOption bus_option, const int bus, const uint8_t rotation, int bus_frequency, int address) : - I2C("SF1XX", SF1XX_DEVICE_PATH, bus, address, bus_frequency), + I2C(DRV_DIST_DEVTYPE_SF1XX, MODULE_NAME, bus, address, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _rotation(rotation) { diff --git a/src/drivers/distance_sensor/srf02/SRF02.cpp b/src/drivers/distance_sensor/srf02/SRF02.cpp index 5e29af029e56..9be84e6e5263 100644 --- a/src/drivers/distance_sensor/srf02/SRF02.cpp +++ b/src/drivers/distance_sensor/srf02/SRF02.cpp @@ -34,9 +34,9 @@ #include "SRF02.hpp" SRF02::SRF02(I2CSPIBusOption bus_option, const int bus, const uint8_t rotation, int bus_frequency, int address) : - I2C("SRF02", nullptr, bus, address, bus_frequency), + I2C(DRV_DIST_DEVTYPE_SRF02, MODULE_NAME, bus, address, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), - _px4_rangefinder(0 /* device id not yet used */, ORB_PRIO_DEFAULT, rotation) + _px4_rangefinder(get_device_id(), ORB_PRIO_DEFAULT, rotation) { _px4_rangefinder.set_max_distance(SRF02_MAX_DISTANCE); _px4_rangefinder.set_min_distance(SRF02_MIN_DISTANCE); diff --git a/src/drivers/distance_sensor/teraranger/TERARANGER.cpp b/src/drivers/distance_sensor/teraranger/TERARANGER.cpp index 386f2888717f..c5f566a4b114 100644 --- a/src/drivers/distance_sensor/teraranger/TERARANGER.cpp +++ b/src/drivers/distance_sensor/teraranger/TERARANGER.cpp @@ -74,9 +74,9 @@ static uint8_t crc8(uint8_t *p, uint8_t len) } TERARANGER::TERARANGER(I2CSPIBusOption bus_option, const int bus, const uint8_t rotation, int bus_frequency) : - I2C("TERARANGER", nullptr, bus, TERARANGER_ONE_BASEADDR, bus_frequency), + I2C(DRV_DIST_DEVTYPE_TERARANGER, MODULE_NAME, bus, TERARANGER_ONE_BASEADDR, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), - _px4_rangefinder(0 /* device id not yet used */, ORB_PRIO_DEFAULT, rotation) + _px4_rangefinder(get_device_id(), ORB_PRIO_DEFAULT, rotation) { // up the retries since the device misses the first measure attempts I2C::_retries = 3; diff --git a/src/drivers/distance_sensor/vl53l0x/VL53L0X.cpp b/src/drivers/distance_sensor/vl53l0x/VL53L0X.cpp index f70743fbfa48..5ac848606f77 100644 --- a/src/drivers/distance_sensor/vl53l0x/VL53L0X.cpp +++ b/src/drivers/distance_sensor/vl53l0x/VL53L0X.cpp @@ -60,7 +60,7 @@ #define VL53L0X_BUS_CLOCK 400000 // 400kHz bus clock speed VL53L0X::VL53L0X(I2CSPIBusOption bus_option, const int bus, const uint8_t rotation, int bus_frequency, int address) : - I2C("VL53L0X", nullptr, bus, address, bus_frequency), + I2C(DRV_DIST_DEVTYPE_VL53L0X, MODULE_NAME, bus, address, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_rangefinder(0 /* device id not yet used */, ORB_PRIO_DEFAULT, rotation) { diff --git a/src/drivers/drv_sensor.h b/src/drivers/drv_sensor.h index 03921f5656e9..8bad9292cef1 100644 --- a/src/drivers/drv_sensor.h +++ b/src/drivers/drv_sensor.h @@ -53,7 +53,7 @@ */ #define DRV_MAG_DEVTYPE_HMC5883 0x01 -#define DRV_MAG_DEVTYPE_LSM303D 0x02 +#define DRV_MAG_DEVTYPE_LSM303D_LEGACY 0x02 #define DRV_MAG_DEVTYPE_MAGSIM 0x03 #define DRV_MAG_DEVTYPE_AK8963 0x04 #define DRV_MAG_DEVTYPE_LIS3MDL 0x05 @@ -64,7 +64,7 @@ #define DRV_IMU_DEVTYPE_ICM20948 0x0A #define DRV_MAG_DEVTYPE_IST8308 0x0B -#define DRV_ACC_DEVTYPE_LSM303D 0x11 +#define DRV_IMU_DEVTYPE_LSM303D 0x11 #define DRV_ACC_DEVTYPE_BMA180 0x12 #define DRV_ACC_DEVTYPE_MPU6000_LEGACY 0x13 #define DRV_ACC_DEVTYPE_ACCELSIM 0x14 diff --git a/src/drivers/imu/adis16448/ADIS16448.cpp b/src/drivers/imu/adis16448/ADIS16448.cpp index e0b7c3c19d5c..0555820a4592 100644 --- a/src/drivers/imu/adis16448/ADIS16448.cpp +++ b/src/drivers/imu/adis16448/ADIS16448.cpp @@ -39,18 +39,13 @@ ADIS16448::ADIS16448(I2CSPIBusOption bus_option, int bus, int32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode) : - SPI("ADIS16448", nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_ADIS16448, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_accel(get_device_id(), ORB_PRIO_MAX, rotation), _px4_baro(get_device_id(), ORB_PRIO_MAX), _px4_gyro(get_device_id(), ORB_PRIO_MAX, rotation), _px4_mag(get_device_id(), ORB_PRIO_MAX, rotation) { - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_ADIS16448); - _px4_baro.set_device_type(DRV_IMU_DEVTYPE_ADIS16448); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_ADIS16448); - _px4_mag.set_device_type(DRV_IMU_DEVTYPE_ADIS16448); - _px4_accel.set_scale(ADIS16448_ACCEL_SENSITIVITY); _px4_gyro.set_scale(ADIS16448_GYRO_INITIAL_SENSITIVITY); _px4_mag.set_scale(ADIS16448_MAG_SENSITIVITY); diff --git a/src/drivers/imu/adis16477/ADIS16477.cpp b/src/drivers/imu/adis16477/ADIS16477.cpp index 8f7c6720e719..7477ba38fe95 100644 --- a/src/drivers/imu/adis16477/ADIS16477.cpp +++ b/src/drivers/imu/adis16477/ADIS16477.cpp @@ -55,12 +55,12 @@ using namespace time_literals; ADIS16477::ADIS16477(I2CSPIBusOption bus_option, int bus, int32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode, spi_drdy_gpio_t drdy_gpio) : - SPI("ADIS16477", nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_ADIS16477, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_accel(get_device_id(), ORB_PRIO_MAX, rotation), _px4_gyro(get_device_id(), ORB_PRIO_MAX, rotation), - _sample_perf(perf_alloc(PC_ELAPSED, "adis16477: read")), - _bad_transfers(perf_alloc(PC_COUNT, "adis16477: bad transfers")), + _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": read")), + _bad_transfers(perf_alloc(PC_COUNT, MODULE_NAME": bad transfers")), _drdy_gpio(drdy_gpio) { #ifdef GPIO_SPI1_RESET_ADIS16477 @@ -68,10 +68,8 @@ ADIS16477::ADIS16477(I2CSPIBusOption bus_option, int bus, int32_t device, enum R px4_arch_configgpio(GPIO_SPI1_RESET_ADIS16477); #endif // GPIO_SPI1_RESET_ADIS16477 - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_ADIS16477); _px4_accel.set_scale(1.25f * CONSTANTS_ONE_G / 1000.0f); // accel 1.25 mg/LSB - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_ADIS16477); _px4_gyro.set_scale(math::radians(0.025f)); // gyro 0.025 °/sec/LSB } diff --git a/src/drivers/imu/adis16497/ADIS16497.cpp b/src/drivers/imu/adis16497/ADIS16497.cpp index 515a220f60c3..38aa2c58647d 100644 --- a/src/drivers/imu/adis16497/ADIS16497.cpp +++ b/src/drivers/imu/adis16497/ADIS16497.cpp @@ -72,21 +72,18 @@ using namespace time_literals; ADIS16497::ADIS16497(I2CSPIBusOption bus_option, int bus, int32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode, spi_drdy_gpio_t drdy_gpio) : - SPI("ADIS16497", nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_ADIS16497, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_accel(get_device_id(), ORB_PRIO_MAX, rotation), _px4_gyro(get_device_id(), ORB_PRIO_MAX, rotation), - _sample_perf(perf_alloc(PC_ELAPSED, "adis16497: read")), - _bad_transfers(perf_alloc(PC_COUNT, "adis16497: bad transfers")), + _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": read")), + _bad_transfers(perf_alloc(PC_COUNT, MODULE_NAME": bad transfers")), _drdy_gpio(drdy_gpio) { #ifdef GPIO_SPI1_RESET_ADIS16497 // Configure hardware reset line px4_arch_configgpio(GPIO_SPI1_RESET_ADIS16497); #endif // GPIO_SPI1_RESET_ADIS16497 - - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_ADIS16497); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_ADIS16497); } ADIS16497::~ADIS16497() diff --git a/src/drivers/imu/bma180/bma180.cpp b/src/drivers/imu/bma180/bma180.cpp index 39cbeb8240dd..2c1d8183ff0e 100644 --- a/src/drivers/imu/bma180/bma180.cpp +++ b/src/drivers/imu/bma180/bma180.cpp @@ -220,7 +220,7 @@ class BMA180 : public device::SPI, public I2CSPIDriver BMA180::BMA180(I2CSPIBusOption bus_option, int bus, int32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode) : - SPI("BMA180", ACCEL_DEVICE_PATH, bus, device, spi_mode, bus_frequency), + SPI(DRV_ACC_DEVTYPE_BMA180, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _call_interval(0), _reports(nullptr), @@ -232,8 +232,6 @@ BMA180::BMA180(I2CSPIBusOption bus_option, int bus, int32_t device, enum Rotatio _current_range(0), _sample_perf(perf_alloc(PC_ELAPSED, "bma180_read")) { - _device_id.devid_s.devtype = DRV_ACC_DEVTYPE_BMA180; - // default scale factors _accel_scale.x_offset = 0; _accel_scale.x_scale = 1.0f; diff --git a/src/drivers/imu/bmi055/BMI055.hpp b/src/drivers/imu/bmi055/BMI055.hpp index 7772806eb5c3..041b17a78dcc 100644 --- a/src/drivers/imu/bmi055/BMI055.hpp +++ b/src/drivers/imu/bmi055/BMI055.hpp @@ -53,7 +53,7 @@ class BMI055 : public device::SPI, public I2CSPIDriver { public: - BMI055(const char *name, const char *devname, I2CSPIBusOption bus_option, int bus, int type, uint32_t device, + BMI055(uint8_t devtype, const char *name, const char *devname, I2CSPIBusOption bus_option, int bus, uint32_t device, enum spi_mode_e mode, uint32_t frequency, enum Rotation rotation); virtual ~BMI055() = default; diff --git a/src/drivers/imu/bmi055/BMI055_accel.cpp b/src/drivers/imu/bmi055/BMI055_accel.cpp index 050448c78126..6534c6b7aaa1 100644 --- a/src/drivers/imu/bmi055/BMI055_accel.cpp +++ b/src/drivers/imu/bmi055/BMI055_accel.cpp @@ -46,8 +46,7 @@ const uint8_t BMI055_accel::_checked_registers[BMI055_ACCEL_NUM_CHECKED_REGISTER BMI055_accel::BMI055_accel(I2CSPIBusOption bus_option, int bus, const char *path_accel, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode) : - BMI055("bmi055_accel", path_accel, bus_option, bus, DRV_ACC_DEVTYPE_BMI055, device, spi_mode, bus_frequency, - rotation), + BMI055(DRV_ACC_DEVTYPE_BMI055, "bmi055_accel", path_accel, bus_option, bus, device, spi_mode, bus_frequency, rotation), _px4_accel(get_device_id(), (external() ? ORB_PRIO_MAX - 1 : ORB_PRIO_HIGH - 1), rotation), _sample_perf(perf_alloc(PC_ELAPSED, "bmi055_accel_read")), _bad_transfers(perf_alloc(PC_COUNT, "bmi055_accel_bad_transfers")), @@ -55,7 +54,6 @@ BMI055_accel::BMI055_accel(I2CSPIBusOption bus_option, int bus, const char *path _duplicates(perf_alloc(PC_COUNT, "bmi055_accel_duplicates")), _got_duplicate(false) { - _px4_accel.set_device_type(DRV_ACC_DEVTYPE_BMI055); } BMI055_accel::~BMI055_accel() diff --git a/src/drivers/imu/bmi055/BMI055_gyro.cpp b/src/drivers/imu/bmi055/BMI055_gyro.cpp index 69581fc42aff..3f04a673fad3 100644 --- a/src/drivers/imu/bmi055/BMI055_gyro.cpp +++ b/src/drivers/imu/bmi055/BMI055_gyro.cpp @@ -51,14 +51,12 @@ const uint8_t BMI055_gyro::_checked_registers[BMI055_GYRO_NUM_CHECKED_REGISTERS] BMI055_gyro::BMI055_gyro(I2CSPIBusOption bus_option, int bus, const char *path_gyro, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode) : - BMI055("bmi055_gyro", path_gyro, bus_option, bus, DRV_GYR_DEVTYPE_BMI055, device, spi_mode, bus_frequency, - rotation), + BMI055(DRV_GYR_DEVTYPE_BMI055, "bmi055_gyro", path_gyro, bus_option, bus, device, spi_mode, bus_frequency, rotation), _px4_gyro(get_device_id(), (external() ? ORB_PRIO_MAX - 1 : ORB_PRIO_HIGH - 1), rotation), _sample_perf(perf_alloc(PC_ELAPSED, "bmi055_gyro_read")), _bad_transfers(perf_alloc(PC_COUNT, "bmi055_gyro_bad_transfers")), _bad_registers(perf_alloc(PC_COUNT, "bmi055_gyro_bad_registers")) { - _px4_gyro.set_device_type(DRV_GYR_DEVTYPE_BMI055); } BMI055_gyro::~BMI055_gyro() diff --git a/src/drivers/imu/bmi055/bmi055_main.cpp b/src/drivers/imu/bmi055/bmi055_main.cpp index 52075d932c24..5a0b74ac2438 100644 --- a/src/drivers/imu/bmi055/bmi055_main.cpp +++ b/src/drivers/imu/bmi055/bmi055_main.cpp @@ -97,11 +97,10 @@ BMI055::custom_method(const BusCLIArguments &cli) } } -BMI055::BMI055(const char *name, const char *devname, I2CSPIBusOption bus_option, int bus, int type, uint32_t device, - enum spi_mode_e mode, - uint32_t frequency, enum Rotation rotation): - SPI(name, devname, bus, device, mode, frequency), - I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus, type), +BMI055::BMI055(uint8_t devtype, const char *name, const char *devname, I2CSPIBusOption bus_option, int bus, + uint32_t device, enum spi_mode_e mode, uint32_t frequency, enum Rotation rotation): + SPI(devtype, name, bus, device, mode, frequency), + I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus, devtype), _whoami(0), _register_wait(0), _reset_wait(0), diff --git a/src/drivers/imu/bmi088/BMI088.hpp b/src/drivers/imu/bmi088/BMI088.hpp index 145591554c50..8ac39971af09 100644 --- a/src/drivers/imu/bmi088/BMI088.hpp +++ b/src/drivers/imu/bmi088/BMI088.hpp @@ -53,7 +53,7 @@ class BMI088 : public device::SPI, public I2CSPIDriver { public: - BMI088(const char *name, const char *devname, I2CSPIBusOption bus_option, int bus, int type, uint32_t device, + BMI088(const char *name, const char *devname, I2CSPIBusOption bus_option, int bus, uint8_t type, uint32_t device, enum spi_mode_e mode, uint32_t frequency, enum Rotation rotation); virtual ~BMI088() = default; diff --git a/src/drivers/imu/bmi088/BMI088_accel.cpp b/src/drivers/imu/bmi088/BMI088_accel.cpp index 10391d03b6d8..035f2e2e2a2a 100644 --- a/src/drivers/imu/bmi088/BMI088_accel.cpp +++ b/src/drivers/imu/bmi088/BMI088_accel.cpp @@ -63,7 +63,6 @@ BMI088_accel::BMI088_accel(I2CSPIBusOption bus_option, int bus, const char *path _duplicates(perf_alloc(PC_COUNT, "bmi088_accel_duplicates")), _got_duplicate(false) { - _px4_accel.set_device_type(DRV_ACC_DEVTYPE_BMI088); } BMI088_accel::~BMI088_accel() diff --git a/src/drivers/imu/bmi088/BMI088_gyro.cpp b/src/drivers/imu/bmi088/BMI088_gyro.cpp index d5952c812541..d4ed11522d7d 100644 --- a/src/drivers/imu/bmi088/BMI088_gyro.cpp +++ b/src/drivers/imu/bmi088/BMI088_gyro.cpp @@ -65,7 +65,6 @@ BMI088_gyro::BMI088_gyro(I2CSPIBusOption bus_option, int bus, const char *path_g _bad_transfers(perf_alloc(PC_COUNT, "bmi088_gyro_bad_transfers")), _bad_registers(perf_alloc(PC_COUNT, "bmi088_gyro_bad_registers")) { - _px4_gyro.set_device_type(DRV_GYR_DEVTYPE_BMI088); } BMI088_gyro::~BMI088_gyro() diff --git a/src/drivers/imu/bmi088/bmi088_main.cpp b/src/drivers/imu/bmi088/bmi088_main.cpp index bbfb681936e2..fcc5cd51a03a 100644 --- a/src/drivers/imu/bmi088/bmi088_main.cpp +++ b/src/drivers/imu/bmi088/bmi088_main.cpp @@ -96,10 +96,11 @@ BMI088::custom_method(const BusCLIArguments &cli) } } -BMI088::BMI088(const char *name, const char *devname, I2CSPIBusOption bus_option, int bus, int type, uint32_t device, +BMI088::BMI088(const char *name, const char *devname, I2CSPIBusOption bus_option, int bus, uint8_t type, + uint32_t device, enum spi_mode_e mode, uint32_t frequency, enum Rotation rotation): - SPI(name, devname, bus, device, mode, frequency), + SPI(type, MODULE_NAME, bus, device, mode, frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus, type), _whoami(0), _register_wait(0), diff --git a/src/drivers/imu/bmi160/bmi160.cpp b/src/drivers/imu/bmi160/bmi160.cpp index b6aa16adc556..2e55d1de3b6e 100644 --- a/src/drivers/imu/bmi160/bmi160.cpp +++ b/src/drivers/imu/bmi160/bmi160.cpp @@ -51,7 +51,7 @@ const uint8_t BMI160::_checked_registers[BMI160_NUM_CHECKED_REGISTERS] = { BM BMI160::BMI160(I2CSPIBusOption bus_option, int bus, int32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode) : - SPI("BMI160", nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_BMI160, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_accel(get_device_id(), (external() ? ORB_PRIO_MAX - 1 : ORB_PRIO_HIGH - 1), rotation), _px4_gyro(get_device_id(), (external() ? ORB_PRIO_MAX - 1 : ORB_PRIO_HIGH - 1), rotation), @@ -64,8 +64,6 @@ BMI160::BMI160(I2CSPIBusOption bus_option, int bus, int32_t device, enum Rotatio _reset_retries(perf_alloc(PC_COUNT, "bmi160_reset_retries")), _duplicates(perf_alloc(PC_COUNT, "bmi160_duplicates")) { - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_BMI160); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_BMI160); } BMI160::~BMI160() diff --git a/src/drivers/imu/fxas21002c/FXAS21002C.cpp b/src/drivers/imu/fxas21002c/FXAS21002C.cpp index 46e1d90d1521..378509ec56d5 100644 --- a/src/drivers/imu/fxas21002c/FXAS21002C.cpp +++ b/src/drivers/imu/fxas21002c/FXAS21002C.cpp @@ -188,7 +188,7 @@ using namespace time_literals; FXAS21002C::FXAS21002C(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode) : - SPI("FXAS21002C", nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_GYR_DEVTYPE_FXAS2100C, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_gyro(get_device_id(), (external() ? ORB_PRIO_VERY_HIGH : ORB_PRIO_DEFAULT), rotation), _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": read")), @@ -196,7 +196,6 @@ FXAS21002C::FXAS21002C(I2CSPIBusOption bus_option, int bus, uint32_t device, enu _bad_registers(perf_alloc(PC_COUNT, MODULE_NAME": bad register")), _duplicates(perf_alloc(PC_COUNT, MODULE_NAME": duplicate reading")) { - _px4_gyro.set_device_type(DRV_GYR_DEVTYPE_FXAS2100C); } FXAS21002C::~FXAS21002C() diff --git a/src/drivers/imu/fxos8701cq/FXOS8701CQ.cpp b/src/drivers/imu/fxos8701cq/FXOS8701CQ.cpp index 83a23df432a1..ac08fb5fff4c 100644 --- a/src/drivers/imu/fxos8701cq/FXOS8701CQ.cpp +++ b/src/drivers/imu/fxos8701cq/FXOS8701CQ.cpp @@ -55,7 +55,7 @@ const uint8_t FXOS8701CQ::_checked_registers[FXOS8701C_NUM_CHECKED_REGISTERS] = FXOS8701CQ::FXOS8701CQ(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode) : - SPI("FXOS8701CQ", nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_ACC_DEVTYPE_FXOS8701C, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_accel(get_device_id(), ORB_PRIO_LOW, rotation), #if !defined(BOARD_HAS_NOISY_FXOS8700_MAG) @@ -66,12 +66,7 @@ FXOS8701CQ::FXOS8701CQ(I2CSPIBusOption bus_option, int bus, uint32_t device, enu _bad_registers(perf_alloc(PC_COUNT, MODULE_NAME": bad reg")), _accel_duplicates(perf_alloc(PC_COUNT, MODULE_NAME": acc dupe")) { - set_device_type(DRV_ACC_DEVTYPE_FXOS8701C); - - _px4_accel.set_device_type(DRV_ACC_DEVTYPE_FXOS8701C); - #if !defined(BOARD_HAS_NOISY_FXOS8700_MAG) - _px4_mag.set_device_type(DRV_ACC_DEVTYPE_FXOS8701C); _px4_mag.set_scale(0.001f); #endif } diff --git a/src/drivers/imu/icm20948/ICM20948_mag.cpp b/src/drivers/imu/icm20948/ICM20948_mag.cpp index 240e9b11fa95..35fb2d9e6811 100644 --- a/src/drivers/imu/icm20948/ICM20948_mag.cpp +++ b/src/drivers/imu/icm20948/ICM20948_mag.cpp @@ -56,11 +56,12 @@ ICM20948_mag::ICM20948_mag(ICM20948 *parent, device::Device *interface, enum Rot _px4_mag(parent->_interface->get_device_id(), (parent->_interface->external() ? ORB_PRIO_MAX : ORB_PRIO_HIGH), rotation), _parent(parent), - _mag_overruns(perf_alloc(PC_COUNT, MODULE_NAME": mag_overruns")), - _mag_overflows(perf_alloc(PC_COUNT, MODULE_NAME": mag_overflows")), - _mag_errors(perf_alloc(PC_COUNT, MODULE_NAME": mag_errors")) + _mag_overruns(perf_alloc(PC_COUNT, MODULE_NAME": mag overruns")), + _mag_overflows(perf_alloc(PC_COUNT, MODULE_NAME": mag overflows")), + _mag_errors(perf_alloc(PC_COUNT, MODULE_NAME": mag errors")) { _px4_mag.set_device_type(DRV_MAG_DEVTYPE_AK09916); + _px4_mag.set_external(_parent->is_external()); _px4_mag.set_scale(ICM20948_MAG_RANGE_GA); } diff --git a/src/drivers/imu/icm20948/icm20948.cpp b/src/drivers/imu/icm20948/icm20948.cpp index a0f11fc27cbf..4756b8d0d517 100644 --- a/src/drivers/imu/icm20948/icm20948.cpp +++ b/src/drivers/imu/icm20948/icm20948.cpp @@ -102,8 +102,6 @@ ICM20948::ICM20948(device::Device *interface, device::Device *mag_interface, enu _good_transfers(perf_alloc(PC_COUNT, MODULE_NAME": good_trans")), _duplicates(perf_alloc(PC_COUNT, MODULE_NAME": dupe")) { - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_ICM20948); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_ICM20948); } ICM20948::~ICM20948() diff --git a/src/drivers/imu/icm20948/icm20948_i2c.cpp b/src/drivers/imu/icm20948/icm20948_i2c.cpp index e01dc39f673e..60205f700cc6 100644 --- a/src/drivers/imu/icm20948/icm20948_i2c.cpp +++ b/src/drivers/imu/icm20948/icm20948_i2c.cpp @@ -68,9 +68,8 @@ ICM20948_I2C_interface(int bus, uint32_t address, int bus_frequency) } ICM20948_I2C::ICM20948_I2C(int bus, uint32_t address, int bus_frequency) : - I2C("ICM20948_I2C", nullptr, bus, address, bus_frequency) + I2C(DRV_IMU_DEVTYPE_ICM20948, MODULE_NAME, bus, address, bus_frequency) { - _device_id.devid_s.devtype = DRV_IMU_DEVTYPE_ICM20948; } int diff --git a/src/drivers/imu/icm20948/icm20948_spi.cpp b/src/drivers/imu/icm20948/icm20948_spi.cpp index d086fddff78e..0b8affb2500e 100644 --- a/src/drivers/imu/icm20948/icm20948_spi.cpp +++ b/src/drivers/imu/icm20948/icm20948_spi.cpp @@ -86,9 +86,8 @@ ICM20948_SPI_interface(int bus, uint32_t devid, int bus_frequency, spi_mode_e sp } ICM20948_SPI::ICM20948_SPI(int bus, uint32_t device, int bus_frequency, spi_mode_e spi_mode) : - SPI("ICM20948", nullptr, bus, device, spi_mode, bus_frequency) + SPI(DRV_IMU_DEVTYPE_ICM20948, MODULE_NAME, bus, device, spi_mode, bus_frequency) { - _device_id.devid_s.devtype = DRV_IMU_DEVTYPE_ICM20948; } void diff --git a/src/drivers/imu/icm20948/mag_i2c.cpp b/src/drivers/imu/icm20948/mag_i2c.cpp index 57c6c11f0b6a..ab98db1a520e 100644 --- a/src/drivers/imu/icm20948/mag_i2c.cpp +++ b/src/drivers/imu/icm20948/mag_i2c.cpp @@ -65,9 +65,8 @@ AK09916_I2C_interface(int bus, int bus_frequency) } AK09916_I2C::AK09916_I2C(int bus, int bus_frequency) : - I2C("AK09916_I2C", nullptr, bus, AK09916_I2C_ADDR, bus_frequency) + I2C(DRV_IMU_DEVTYPE_ICM20948, "AK09916_I2C", bus, AK09916_I2C_ADDR, bus_frequency) { - _device_id.devid_s.devtype = DRV_IMU_DEVTYPE_ICM20948; } int diff --git a/src/drivers/imu/invensense/icm20602/ICM20602.cpp b/src/drivers/imu/invensense/icm20602/ICM20602.cpp index 34965c351b2c..c0452c56b463 100644 --- a/src/drivers/imu/invensense/icm20602/ICM20602.cpp +++ b/src/drivers/imu/invensense/icm20602/ICM20602.cpp @@ -42,17 +42,12 @@ static constexpr int16_t combine(uint8_t msb, uint8_t lsb) ICM20602::ICM20602(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode, spi_drdy_gpio_t drdy_gpio) : - SPI(MODULE_NAME, nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_ICM20602, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _drdy_gpio(drdy_gpio), _px4_accel(get_device_id(), ORB_PRIO_HIGH, rotation), _px4_gyro(get_device_id(), ORB_PRIO_HIGH, rotation) { - set_device_type(DRV_IMU_DEVTYPE_ICM20602); - - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_ICM20602); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_ICM20602); - ConfigureSampleRate(_px4_gyro.get_max_rate_hz()); } diff --git a/src/drivers/imu/invensense/icm20608g/ICM20608G.cpp b/src/drivers/imu/invensense/icm20608g/ICM20608G.cpp index c182634fb399..80e75c30dbfe 100644 --- a/src/drivers/imu/invensense/icm20608g/ICM20608G.cpp +++ b/src/drivers/imu/invensense/icm20608g/ICM20608G.cpp @@ -42,17 +42,12 @@ static constexpr int16_t combine(uint8_t msb, uint8_t lsb) ICM20608G::ICM20608G(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode, spi_drdy_gpio_t drdy_gpio) : - SPI(MODULE_NAME, nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_ICM20608G, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _drdy_gpio(drdy_gpio), _px4_accel(get_device_id(), ORB_PRIO_HIGH, rotation), _px4_gyro(get_device_id(), ORB_PRIO_HIGH, rotation) { - set_device_type(DRV_IMU_DEVTYPE_ICM20608G); - - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_ICM20608G); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_ICM20608G); - ConfigureSampleRate(_px4_gyro.get_max_rate_hz()); } diff --git a/src/drivers/imu/invensense/icm20689/ICM20689.cpp b/src/drivers/imu/invensense/icm20689/ICM20689.cpp index 8b33608dd15e..f58522481935 100644 --- a/src/drivers/imu/invensense/icm20689/ICM20689.cpp +++ b/src/drivers/imu/invensense/icm20689/ICM20689.cpp @@ -42,17 +42,12 @@ static constexpr int16_t combine(uint8_t msb, uint8_t lsb) ICM20689::ICM20689(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode, spi_drdy_gpio_t drdy_gpio) : - SPI(MODULE_NAME, nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_ICM20689, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _drdy_gpio(drdy_gpio), _px4_accel(get_device_id(), ORB_PRIO_HIGH, rotation), _px4_gyro(get_device_id(), ORB_PRIO_HIGH, rotation) { - set_device_type(DRV_IMU_DEVTYPE_ICM20689); - - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_ICM20689); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_ICM20689); - ConfigureSampleRate(_px4_gyro.get_max_rate_hz()); } diff --git a/src/drivers/imu/invensense/icm40609d/ICM40609D.cpp b/src/drivers/imu/invensense/icm40609d/ICM40609D.cpp index c5aa4441e69a..92a55835e4e2 100644 --- a/src/drivers/imu/invensense/icm40609d/ICM40609D.cpp +++ b/src/drivers/imu/invensense/icm40609d/ICM40609D.cpp @@ -42,17 +42,12 @@ static constexpr int16_t combine(uint8_t msb, uint8_t lsb) ICM40609D::ICM40609D(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode, spi_drdy_gpio_t drdy_gpio) : - SPI(MODULE_NAME, nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_ICM40609D, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _drdy_gpio(drdy_gpio), _px4_accel(get_device_id(), ORB_PRIO_HIGH, rotation), _px4_gyro(get_device_id(), ORB_PRIO_HIGH, rotation) { - set_device_type(DRV_IMU_DEVTYPE_ICM40609D); - - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_ICM40609D); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_ICM40609D); - ConfigureSampleRate(_px4_gyro.get_max_rate_hz()); } diff --git a/src/drivers/imu/invensense/icm42688p/ICM42688P.cpp b/src/drivers/imu/invensense/icm42688p/ICM42688P.cpp index b9c30cfb99a9..b2d16725bab4 100644 --- a/src/drivers/imu/invensense/icm42688p/ICM42688P.cpp +++ b/src/drivers/imu/invensense/icm42688p/ICM42688P.cpp @@ -42,17 +42,12 @@ static constexpr int16_t combine(uint8_t msb, uint8_t lsb) ICM42688P::ICM42688P(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode, spi_drdy_gpio_t drdy_gpio) : - SPI(MODULE_NAME, nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_ICM42688P, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _drdy_gpio(drdy_gpio), _px4_accel(get_device_id(), ORB_PRIO_HIGH, rotation), _px4_gyro(get_device_id(), ORB_PRIO_HIGH, rotation) { - set_device_type(DRV_IMU_DEVTYPE_ICM42688P); - - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_ICM42688P); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_ICM42688P); - ConfigureSampleRate(_px4_gyro.get_max_rate_hz()); } diff --git a/src/drivers/imu/invensense/mpu6000/MPU6000.cpp b/src/drivers/imu/invensense/mpu6000/MPU6000.cpp index d700c60188ab..5a5808680a3d 100644 --- a/src/drivers/imu/invensense/mpu6000/MPU6000.cpp +++ b/src/drivers/imu/invensense/mpu6000/MPU6000.cpp @@ -42,17 +42,12 @@ static constexpr int16_t combine(uint8_t msb, uint8_t lsb) MPU6000::MPU6000(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode, spi_drdy_gpio_t drdy_gpio) : - SPI(MODULE_NAME, nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_MPU6000, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _drdy_gpio(drdy_gpio), _px4_accel(get_device_id(), ORB_PRIO_HIGH, rotation), _px4_gyro(get_device_id(), ORB_PRIO_HIGH, rotation) { - set_device_type(DRV_IMU_DEVTYPE_MPU6000); - - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_MPU6000); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_MPU6000); - ConfigureSampleRate(_px4_gyro.get_max_rate_hz()); } diff --git a/src/drivers/imu/invensense/mpu6500/MPU6500.cpp b/src/drivers/imu/invensense/mpu6500/MPU6500.cpp index d774d127184f..21dba4b1af16 100644 --- a/src/drivers/imu/invensense/mpu6500/MPU6500.cpp +++ b/src/drivers/imu/invensense/mpu6500/MPU6500.cpp @@ -42,17 +42,12 @@ static constexpr int16_t combine(uint8_t msb, uint8_t lsb) MPU6500::MPU6500(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode, spi_drdy_gpio_t drdy_gpio) : - SPI(MODULE_NAME, nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_MPU6500, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _drdy_gpio(drdy_gpio), _px4_accel(get_device_id(), ORB_PRIO_HIGH, rotation), _px4_gyro(get_device_id(), ORB_PRIO_HIGH, rotation) { - set_device_type(DRV_IMU_DEVTYPE_MPU6500); - - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_MPU6500); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_MPU6500); - ConfigureSampleRate(_px4_gyro.get_max_rate_hz()); } diff --git a/src/drivers/imu/invensense/mpu9250/MPU9250.cpp b/src/drivers/imu/invensense/mpu9250/MPU9250.cpp index aa4088755a08..9b637b876903 100644 --- a/src/drivers/imu/invensense/mpu9250/MPU9250.cpp +++ b/src/drivers/imu/invensense/mpu9250/MPU9250.cpp @@ -44,17 +44,12 @@ static constexpr int16_t combine(uint8_t msb, uint8_t lsb) MPU9250::MPU9250(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode, spi_drdy_gpio_t drdy_gpio, bool enable_magnetometer) : - SPI(MODULE_NAME, nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_MPU9250, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _drdy_gpio(drdy_gpio), _px4_accel(get_device_id(), ORB_PRIO_HIGH, rotation), _px4_gyro(get_device_id(), ORB_PRIO_HIGH, rotation) { - set_device_type(DRV_IMU_DEVTYPE_MPU9250); - - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_MPU9250); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_MPU9250); - ConfigureSampleRate(_px4_gyro.get_max_rate_hz()); if (enable_magnetometer) { diff --git a/src/drivers/imu/l3gd20/L3GD20.cpp b/src/drivers/imu/l3gd20/L3GD20.cpp index e12b3e0b9f2c..7cabc4c72815 100644 --- a/src/drivers/imu/l3gd20/L3GD20.cpp +++ b/src/drivers/imu/l3gd20/L3GD20.cpp @@ -37,7 +37,7 @@ constexpr uint8_t L3GD20::_checked_registers[]; L3GD20::L3GD20(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode) : - SPI("L3GD20", nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_GYR_DEVTYPE_L3GD20, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_gyro(get_device_id(), ORB_PRIO_DEFAULT, rotation), _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": read")), @@ -45,7 +45,6 @@ L3GD20::L3GD20(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotati _bad_registers(perf_alloc(PC_COUNT, MODULE_NAME": bad_reg")), _duplicates(perf_alloc(PC_COUNT, MODULE_NAME": dupe")) { - _px4_gyro.set_device_type(DRV_GYR_DEVTYPE_L3GD20); } L3GD20::~L3GD20() diff --git a/src/drivers/imu/lsm303d/LSM303D.cpp b/src/drivers/imu/lsm303d/LSM303D.cpp index c3f4305c31f6..38be5e408318 100644 --- a/src/drivers/imu/lsm303d/LSM303D.cpp +++ b/src/drivers/imu/lsm303d/LSM303D.cpp @@ -55,7 +55,7 @@ static constexpr uint8_t _checked_registers[] = { LSM303D::LSM303D(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode) : - SPI("LSM303D", nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_LSM303D, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_accel(get_device_id(), ORB_PRIO_DEFAULT, rotation), _px4_mag(get_device_id(), ORB_PRIO_LOW, rotation), @@ -65,8 +65,6 @@ LSM303D::LSM303D(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rota _bad_values(perf_alloc(PC_COUNT, "lsm303d: bad_val")), _accel_duplicates(perf_alloc(PC_COUNT, "lsm303d: acc_dupe")) { - _px4_accel.set_device_type(DRV_ACC_DEVTYPE_LSM303D); - _px4_mag.set_device_type(DRV_MAG_DEVTYPE_LSM303D); _px4_mag.set_external(external()); } diff --git a/src/drivers/imu/lsm303d/lsm303d_main.cpp b/src/drivers/imu/lsm303d/lsm303d_main.cpp index 692690b0c5d8..b80868c574dd 100644 --- a/src/drivers/imu/lsm303d/lsm303d_main.cpp +++ b/src/drivers/imu/lsm303d/lsm303d_main.cpp @@ -93,7 +93,7 @@ extern "C" int lsm303d_main(int argc, char *argv[]) return -1; } - BusInstanceIterator iterator(MODULE_NAME, cli, DRV_ACC_DEVTYPE_LSM303D); + BusInstanceIterator iterator(MODULE_NAME, cli, DRV_IMU_DEVTYPE_LSM303D); if (!strcmp(verb, "start")) { return ThisDriver::module_start(cli, iterator); diff --git a/src/drivers/imu/mpu6000/MPU6000.cpp b/src/drivers/imu/mpu6000/MPU6000.cpp index 49100394f26b..b815a63af19a 100644 --- a/src/drivers/imu/mpu6000/MPU6000.cpp +++ b/src/drivers/imu/mpu6000/MPU6000.cpp @@ -55,21 +55,25 @@ MPU6000::MPU6000(device::Device *interface, enum Rotation rotation, int device_t switch (_device_type) { default: case MPU_DEVICE_TYPE_MPU6000: + _interface->set_device_type(DRV_IMU_DEVTYPE_MPU6000); _px4_accel.set_device_type(DRV_IMU_DEVTYPE_MPU6000); _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_MPU6000); break; case MPU_DEVICE_TYPE_ICM20602: + _interface->set_device_type(DRV_IMU_DEVTYPE_ICM20602); _px4_accel.set_device_type(DRV_IMU_DEVTYPE_ICM20602); _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_ICM20602); break; case MPU_DEVICE_TYPE_ICM20608: + _interface->set_device_type(DRV_IMU_DEVTYPE_ICM20608G); _px4_accel.set_device_type(DRV_IMU_DEVTYPE_ICM20608G); _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_ICM20608G); break; case MPU_DEVICE_TYPE_ICM20689: + _interface->set_device_type(DRV_IMU_DEVTYPE_ICM20689); _px4_accel.set_device_type(DRV_IMU_DEVTYPE_ICM20689); _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_ICM20689); break; diff --git a/src/drivers/imu/mpu6000/MPU6000_I2C.cpp b/src/drivers/imu/mpu6000/MPU6000_I2C.cpp index 799c72739a58..13eb5e98aedc 100644 --- a/src/drivers/imu/mpu6000/MPU6000_I2C.cpp +++ b/src/drivers/imu/mpu6000/MPU6000_I2C.cpp @@ -70,7 +70,7 @@ MPU6000_I2C_interface(int bus, uint32_t devid, int device_type, bool external_bu } MPU6000_I2C::MPU6000_I2C(int bus, int device_type, int bus_frequency) : - I2C("MPU6000_I2C", nullptr, bus, PX4_I2C_MPU6050_ADDR, bus_frequency), + I2C(DRV_IMU_DEVTYPE_MPU6000, MODULE_NAME, bus, PX4_I2C_MPU6050_ADDR, bus_frequency) _device_type(device_type) { } diff --git a/src/drivers/imu/mpu6000/MPU6000_SPI.cpp b/src/drivers/imu/mpu6000/MPU6000_SPI.cpp index 55c682990cc8..9da8f1392905 100644 --- a/src/drivers/imu/mpu6000/MPU6000_SPI.cpp +++ b/src/drivers/imu/mpu6000/MPU6000_SPI.cpp @@ -105,7 +105,7 @@ MPU6000_SPI_interface(int bus, uint32_t devid, int device_type, bool external_bu } MPU6000_SPI::MPU6000_SPI(int bus, uint32_t device, int device_type, int bus_frequency, spi_mode_e spi_mode) : - SPI("MPU6000", nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_MPU6000, MODULE_NAME, bus, device, spi_mode, bus_frequency), _device_type(device_type) { } diff --git a/src/drivers/imu/mpu9250/AK8963_I2C.cpp b/src/drivers/imu/mpu9250/AK8963_I2C.cpp index 6bc5763c8c24..a7c2f225d17f 100644 --- a/src/drivers/imu/mpu9250/AK8963_I2C.cpp +++ b/src/drivers/imu/mpu9250/AK8963_I2C.cpp @@ -68,9 +68,9 @@ AK8963_I2C_interface(int bus, int bus_frequency) return new AK8963_I2C(bus, bus_frequency); } -AK8963_I2C::AK8963_I2C(int bus, int bus_frequency) : I2C("AK8963_I2C", nullptr, bus, AK8963_I2C_ADDR, bus_frequency) +AK8963_I2C::AK8963_I2C(int bus, int bus_frequency) : + I2C(DRV_MAG_DEVTYPE_AK8963, "AK8963_I2C", bus, AK8963_I2C_ADDR, bus_frequency) { - _device_id.devid_s.devtype = DRV_MAG_DEVTYPE_AK8963; } int diff --git a/src/drivers/imu/mpu9250/MPU9250_mag.cpp b/src/drivers/imu/mpu9250/MPU9250_mag.cpp index 9a54359d8a9f..f67240c22b01 100644 --- a/src/drivers/imu/mpu9250/MPU9250_mag.cpp +++ b/src/drivers/imu/mpu9250/MPU9250_mag.cpp @@ -56,11 +56,12 @@ MPU9250_mag::MPU9250_mag(MPU9250 *parent, device::Device *interface, enum Rotati _px4_mag(parent->_interface->get_device_id(), (parent->_interface->external() ? ORB_PRIO_MAX : ORB_PRIO_HIGH), rotation), _parent(parent), - _mag_overruns(perf_alloc(PC_COUNT, MODULE_NAME": mag_overruns")), - _mag_overflows(perf_alloc(PC_COUNT, MODULE_NAME": mag_overflows")), - _mag_errors(perf_alloc(PC_COUNT, MODULE_NAME": mag_errors")) + _mag_overruns(perf_alloc(PC_COUNT, MODULE_NAME": mag overruns")), + _mag_overflows(perf_alloc(PC_COUNT, MODULE_NAME": mag overflows")), + _mag_errors(perf_alloc(PC_COUNT, MODULE_NAME": mag errors")) { _px4_mag.set_device_type(DRV_MAG_DEVTYPE_AK8963); + _px4_mag.set_external(_parent->is_external()); _px4_mag.set_scale(MPU9250_MAG_RANGE_GA); } @@ -138,7 +139,6 @@ bool MPU9250_mag::_measure(const hrt_abstime ×tamp_sample, const ak8963_reg return false; } - _px4_mag.set_external(_parent->is_external()); _px4_mag.set_temperature(_parent->_last_temperature); /* diff --git a/src/drivers/imu/mpu9250/mpu9250.cpp b/src/drivers/imu/mpu9250/mpu9250.cpp index c2916bafabe0..280c1fb1549a 100644 --- a/src/drivers/imu/mpu9250/mpu9250.cpp +++ b/src/drivers/imu/mpu9250/mpu9250.cpp @@ -82,8 +82,6 @@ MPU9250::MPU9250(device::Device *interface, device::Device *mag_interface, enum _bad_registers(perf_alloc(PC_COUNT, MODULE_NAME": bad_reg")), _duplicates(perf_alloc(PC_COUNT, MODULE_NAME": dupe")) { - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_MPU9250); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_MPU9250); } MPU9250::~MPU9250() diff --git a/src/drivers/imu/mpu9250/mpu9250_i2c.cpp b/src/drivers/imu/mpu9250/mpu9250_i2c.cpp index adb301612806..943684765e10 100644 --- a/src/drivers/imu/mpu9250/mpu9250_i2c.cpp +++ b/src/drivers/imu/mpu9250/mpu9250_i2c.cpp @@ -68,9 +68,8 @@ MPU9250_I2C_interface(int bus, uint32_t address, int bus_frequency) } MPU9250_I2C::MPU9250_I2C(int bus, uint32_t address, int bus_frequency) : - I2C("MPU9250_I2C", nullptr, bus, address, bus_frequency) + I2C(DRV_IMU_DEVTYPE_MPU9250, MODULE_NAME, bus, address, bus_frequency) { - set_device_type(DRV_IMU_DEVTYPE_MPU9250); } int diff --git a/src/drivers/imu/mpu9250/mpu9250_spi.cpp b/src/drivers/imu/mpu9250/mpu9250_spi.cpp index 0c3c65d7f7c1..e3bce98ac2d5 100644 --- a/src/drivers/imu/mpu9250/mpu9250_spi.cpp +++ b/src/drivers/imu/mpu9250/mpu9250_spi.cpp @@ -86,9 +86,8 @@ MPU9250_SPI_interface(int bus, uint32_t cs, int bus_frequency, spi_mode_e spi_mo } MPU9250_SPI::MPU9250_SPI(int bus, uint32_t device, int bus_frequency, spi_mode_e spi_mode) : - SPI("MPU9250", nullptr, bus, device, spi_mode, bus_frequency) + SPI(DRV_IMU_DEVTYPE_MPU9250, MODULE_NAME, bus, device, spi_mode, bus_frequency) { - set_device_type(DRV_IMU_DEVTYPE_MPU9250); } void diff --git a/src/drivers/imu/st/ism330dlc/ISM330DLC.cpp b/src/drivers/imu/st/ism330dlc/ISM330DLC.cpp index c8ca96e8c2b9..97945b679df6 100644 --- a/src/drivers/imu/st/ism330dlc/ISM330DLC.cpp +++ b/src/drivers/imu/st/ism330dlc/ISM330DLC.cpp @@ -41,16 +41,12 @@ static constexpr uint32_t FIFO_INTERVAL{1000}; // 1000 us / 1000 Hz interval ISM330DLC::ISM330DLC(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode, spi_drdy_gpio_t drdy_gpio) : - SPI(MODULE_NAME, nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_ST_ISM330DLC, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _drdy_gpio(drdy_gpio), _px4_accel(get_device_id(), ORB_PRIO_DEFAULT, rotation), _px4_gyro(get_device_id(), ORB_PRIO_DEFAULT, rotation) { - set_device_type(DRV_IMU_DEVTYPE_ST_ISM330DLC); - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_ST_ISM330DLC); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_ST_ISM330DLC); - _px4_accel.set_update_rate(1000000 / FIFO_INTERVAL); _px4_gyro.set_update_rate(1000000 / FIFO_INTERVAL); } diff --git a/src/drivers/imu/st/lsm9ds1/LSM9DS1.cpp b/src/drivers/imu/st/lsm9ds1/LSM9DS1.cpp index 913de7b97eeb..747842ff70b4 100644 --- a/src/drivers/imu/st/lsm9ds1/LSM9DS1.cpp +++ b/src/drivers/imu/st/lsm9ds1/LSM9DS1.cpp @@ -40,15 +40,11 @@ static constexpr int16_t combine(uint8_t lsb, uint8_t msb) { return (msb << 8u) LSM9DS1::LSM9DS1(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode) : - SPI(MODULE_NAME, nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_IMU_DEVTYPE_ST_LSM9DS1_AG, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_accel(get_device_id(), ORB_PRIO_DEFAULT, rotation), _px4_gyro(get_device_id(), ORB_PRIO_DEFAULT, rotation) { - set_device_type(DRV_IMU_DEVTYPE_ST_LSM9DS1_AG); - _px4_accel.set_device_type(DRV_IMU_DEVTYPE_ST_LSM9DS1_AG); - _px4_gyro.set_device_type(DRV_IMU_DEVTYPE_ST_LSM9DS1_AG); - _px4_accel.set_update_rate(1000000 / _fifo_interval); _px4_gyro.set_update_rate(1000000 / _fifo_interval); } diff --git a/src/drivers/imu/st/lsm9ds1/lsm9ds1_main.cpp b/src/drivers/imu/st/lsm9ds1/lsm9ds1_main.cpp index 8b868c2d1af9..c1a55ffc2e5a 100644 --- a/src/drivers/imu/st/lsm9ds1/lsm9ds1_main.cpp +++ b/src/drivers/imu/st/lsm9ds1/lsm9ds1_main.cpp @@ -88,8 +88,7 @@ extern "C" __EXPORT int lsm9ds1_main(int argc, char *argv[]) return -1; } - BusInstanceIterator iterator(MODULE_NAME, cli, - DRV_IMU_DEVTYPE_ST_LSM9DS1_AG); + BusInstanceIterator iterator(MODULE_NAME, cli, DRV_IMU_DEVTYPE_ST_LSM9DS1_AG); if (!strcmp(verb, "start")) { return ThisDriver::module_start(cli, iterator); diff --git a/src/drivers/irlock/irlock.cpp b/src/drivers/irlock/irlock.cpp index cbd3b600a859..1c80bb871849 100644 --- a/src/drivers/irlock/irlock.cpp +++ b/src/drivers/irlock/irlock.cpp @@ -75,9 +75,6 @@ #define IRLOCK_TAN_ANG_PER_PIXEL_X (2*IRLOCK_TAN_HALF_FOV_X/IRLOCK_RES_X) #define IRLOCK_TAN_ANG_PER_PIXEL_Y (2*IRLOCK_TAN_HALF_FOV_Y/IRLOCK_RES_Y) -#define IRLOCK_BASE_DEVICE_PATH "/dev/irlock" -#define IRLOCK0_DEVICE_PATH "/dev/irlock0" - #define IRLOCK_OBJECTS_MAX 5 /** up to 5 objects can be detected/reported **/ struct irlock_target_s { @@ -139,7 +136,7 @@ class IRLOCK : public device::I2C, public I2CSPIDriver extern "C" __EXPORT int irlock_main(int argc, char *argv[]); IRLOCK::IRLOCK(I2CSPIBusOption bus_option, const int bus, int bus_frequency, const int address) : - I2C("irlock", IRLOCK0_DEVICE_PATH, bus, address, bus_frequency), + I2C(DRV_SENS_DEVTYPE_IRLOCK, MODULE_NAME, bus, address, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus, address), _reports(nullptr), _sensor_ok(false), diff --git a/src/drivers/lights/blinkm/blinkm.cpp b/src/drivers/lights/blinkm/blinkm.cpp index 175b1d049513..7678b0e04f48 100644 --- a/src/drivers/lights/blinkm/blinkm.cpp +++ b/src/drivers/lights/blinkm/blinkm.cpp @@ -118,7 +118,7 @@ class BlinkM : public device::I2C, public I2CSPIDriver { public: BlinkM(I2CSPIBusOption bus_option, const int bus, int bus_frequency, const int address); - virtual ~BlinkM() = default; + ~BlinkM() override; static I2CSPIDriverBase *instantiate(const BusCLIArguments &cli, const BusInstanceIterator &iterator, int runtime_instance); @@ -254,7 +254,7 @@ const char *const BlinkM::script_names[] = { extern "C" __EXPORT int blinkm_main(int argc, char *argv[]); BlinkM::BlinkM(I2CSPIBusOption bus_option, const int bus, int bus_frequency, const int address) : - I2C("blinkm", BLINKM0_DEVICE_PATH, bus, address, bus_frequency), + I2C(DRV_LED_DEVTYPE_BLINKM, MODULE_NAME, bus, address, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), led_color_1(LED_OFF), led_color_2(LED_OFF), @@ -276,6 +276,13 @@ BlinkM::BlinkM(I2CSPIBusOption bus_option, const int bus, int bus_frequency, con led_thread_ready(true), num_of_used_sats(0) { + // now register the driver + register_driver(BLINKM0_DEVICE_PATH, &fops, 0666, (void *)this); +} + +BlinkM::~BlinkM() +{ + unregister_driver(BLINKM0_DEVICE_PATH); } int diff --git a/src/drivers/lights/rgbled/rgbled.cpp b/src/drivers/lights/rgbled/rgbled.cpp index 974c6ada61eb..e290dc9787c4 100644 --- a/src/drivers/lights/rgbled/rgbled.cpp +++ b/src/drivers/lights/rgbled/rgbled.cpp @@ -100,7 +100,7 @@ class RGBLED : public device::I2C, public I2CSPIDriver }; RGBLED::RGBLED(I2CSPIBusOption bus_option, const int bus, int bus_frequency, const int address) : - I2C("rgbled", nullptr, bus, address, bus_frequency), + I2C(DRV_LED_DEVTYPE_RGBLED, MODULE_NAME, bus, address, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus) { } diff --git a/src/drivers/lights/rgbled_ncp5623c/rgbled_ncp5623c.cpp b/src/drivers/lights/rgbled_ncp5623c/rgbled_ncp5623c.cpp index adba01ad3946..46fcfff1c5bf 100755 --- a/src/drivers/lights/rgbled_ncp5623c/rgbled_ncp5623c.cpp +++ b/src/drivers/lights/rgbled_ncp5623c/rgbled_ncp5623c.cpp @@ -100,7 +100,7 @@ class RGBLED_NPC5623C : public device::I2C, public I2CSPIDriver }; RGBLED_NPC5623C::RGBLED_NPC5623C(I2CSPIBusOption bus_option, const int bus, int bus_frequency, const int address) : - I2C("rgbled1", nullptr, bus, address, bus_frequency), + I2C(DRV_LED_DEVTYPE_RGBLED_NCP5623C, MODULE_NAME, bus, address, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus) { } diff --git a/src/drivers/magnetometer/ak09916/ak09916.cpp b/src/drivers/magnetometer/ak09916/ak09916.cpp index 858ef28102c7..28d9a6a6d06d 100644 --- a/src/drivers/magnetometer/ak09916/ak09916.cpp +++ b/src/drivers/magnetometer/ak09916/ak09916.cpp @@ -48,7 +48,7 @@ extern "C" __EXPORT int ak09916_main(int argc, char *argv[]); AK09916::AK09916(I2CSPIBusOption bus_option, const int bus, int bus_frequency, enum Rotation rotation) : - I2C("AK09916", nullptr, bus, AK09916_I2C_ADDR, bus_frequency), + I2C(DRV_MAG_DEVTYPE_AK09916, MODULE_NAME, bus, AK09916_I2C_ADDR, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_mag(get_device_id(), external() ? ORB_PRIO_VERY_HIGH : ORB_PRIO_DEFAULT, rotation), _mag_reads(perf_alloc(PC_COUNT, MODULE_NAME": mag_reads")), @@ -56,10 +56,7 @@ AK09916::AK09916(I2CSPIBusOption bus_option, const int bus, int bus_frequency, e _mag_overruns(perf_alloc(PC_COUNT, MODULE_NAME": mag_overruns")), _mag_overflows(perf_alloc(PC_COUNT, MODULE_NAME": mag_overflows")) { - set_device_type(DRV_MAG_DEVTYPE_AK09916); - _px4_mag.set_device_type(DRV_MAG_DEVTYPE_AK09916); _px4_mag.set_external(external()); - _px4_mag.set_scale(AK09916_MAG_RANGE_GA); } diff --git a/src/drivers/magnetometer/bmm150/bmm150.cpp b/src/drivers/magnetometer/bmm150/bmm150.cpp index 67e7bb7b4a89..a94cdefe3eae 100644 --- a/src/drivers/magnetometer/bmm150/bmm150.cpp +++ b/src/drivers/magnetometer/bmm150/bmm150.cpp @@ -41,7 +41,7 @@ #include BMM150::BMM150(I2CSPIBusOption bus_option, const int bus, int bus_frequency, enum Rotation rotation) : - I2C("BMM150", nullptr, bus, BMM150_SLAVE_ADDRESS, bus_frequency), + I2C(DRV_MAG_DEVTYPE_BMM150, MODULE_NAME, bus, BMM150_SLAVE_ADDRESS, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_mag(get_device_id(), external() ? ORB_PRIO_VERY_HIGH : ORB_PRIO_DEFAULT, rotation), _call_interval(0), @@ -67,9 +67,6 @@ BMM150::BMM150(I2CSPIBusOption bus_option, const int bus, int bus_frequency, enu _duplicates(perf_alloc(PC_COUNT, MODULE_NAME": duplicates")), _got_duplicate(false) { - set_device_type(DRV_MAG_DEVTYPE_BMM150); - - _px4_mag.set_device_type(DRV_MAG_DEVTYPE_BMM150); _px4_mag.set_external(external()); // default range scale from from uT to gauss diff --git a/src/drivers/magnetometer/hmc5883/HMC5883.cpp b/src/drivers/magnetometer/hmc5883/HMC5883.cpp index 3c2deeaa8e8c..ddad7213b872 100644 --- a/src/drivers/magnetometer/hmc5883/HMC5883.cpp +++ b/src/drivers/magnetometer/hmc5883/HMC5883.cpp @@ -48,8 +48,6 @@ HMC5883::HMC5883(device::Device *interface, enum Rotation rotation, I2CSPIBusOpt _temperature_counter(0), _temperature_error_count(0) { - _interface->set_device_type(DRV_MAG_DEVTYPE_HMC5883); - _px4_mag.set_device_type(DRV_MAG_DEVTYPE_HMC5883); _px4_mag.set_external(_interface->external()); } diff --git a/src/drivers/magnetometer/hmc5883/hmc5883_i2c.cpp b/src/drivers/magnetometer/hmc5883/hmc5883_i2c.cpp index d60982bddb29..d873578e7cf9 100644 --- a/src/drivers/magnetometer/hmc5883/hmc5883_i2c.cpp +++ b/src/drivers/magnetometer/hmc5883/hmc5883_i2c.cpp @@ -68,9 +68,8 @@ HMC5883_I2C_interface(int bus, int bus_frequency) } HMC5883_I2C::HMC5883_I2C(int bus, int bus_frequency) : - I2C("HMC5883_I2C", nullptr, bus, HMC5883L_ADDRESS, bus_frequency) + I2C(DRV_MAG_DEVTYPE_HMC5883, MODULE_NAME, bus, HMC5883L_ADDRESS, bus_frequency) { - _device_id.devid_s.devtype = DRV_MAG_DEVTYPE_HMC5883; } int HMC5883_I2C::probe() diff --git a/src/drivers/magnetometer/hmc5883/hmc5883_spi.cpp b/src/drivers/magnetometer/hmc5883/hmc5883_spi.cpp index 197b8a15c466..514269e6dee7 100644 --- a/src/drivers/magnetometer/hmc5883/hmc5883_spi.cpp +++ b/src/drivers/magnetometer/hmc5883/hmc5883_spi.cpp @@ -72,9 +72,8 @@ HMC5883_SPI_interface(int bus, uint32_t devid, int bus_frequency, spi_mode_e spi } HMC5883_SPI::HMC5883_SPI(int bus, uint32_t device, int bus_frequency, spi_mode_e spi_mode) : - SPI("HMC5883_SPI", nullptr, bus, device, spi_mode, bus_frequency) + SPI(DRV_MAG_DEVTYPE_HMC5883, MODULE_NAME, bus, device, spi_mode, bus_frequency) { - _device_id.devid_s.devtype = DRV_MAG_DEVTYPE_HMC5883; } int HMC5883_SPI::init() diff --git a/src/drivers/magnetometer/isentek/ist8308/IST8308.cpp b/src/drivers/magnetometer/isentek/ist8308/IST8308.cpp index 6f3495854a4f..fad021c3b261 100644 --- a/src/drivers/magnetometer/isentek/ist8308/IST8308.cpp +++ b/src/drivers/magnetometer/isentek/ist8308/IST8308.cpp @@ -41,13 +41,10 @@ static constexpr int16_t combine(uint8_t msb, uint8_t lsb) } IST8308::IST8308(I2CSPIBusOption bus_option, int bus, enum Rotation rotation, int bus_frequency) : - I2C(MODULE_NAME, nullptr, bus, I2C_ADDRESS_DEFAULT, bus_frequency), + I2C(DRV_MAG_DEVTYPE_IST8308, MODULE_NAME, bus, I2C_ADDRESS_DEFAULT, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_mag(get_device_id(), external() ? ORB_PRIO_VERY_HIGH : ORB_PRIO_DEFAULT, rotation) { - set_device_type(DRV_MAG_DEVTYPE_IST8308); - - _px4_mag.set_device_type(DRV_MAG_DEVTYPE_IST8308); _px4_mag.set_external(external()); } diff --git a/src/drivers/magnetometer/ist8310/ist8310.cpp b/src/drivers/magnetometer/ist8310/ist8310.cpp index 1161895f68c6..698c4d42548e 100644 --- a/src/drivers/magnetometer/ist8310/ist8310.cpp +++ b/src/drivers/magnetometer/ist8310/ist8310.cpp @@ -269,7 +269,7 @@ class IST8310 : public device::I2C, public I2CSPIDriver }; IST8310::IST8310(I2CSPIBusOption bus_option, int bus_number, int address, enum Rotation rotation, int bus_frequency) : - I2C("IST8310", nullptr, bus_number, address, bus_frequency), + I2C(DRV_MAG_DEVTYPE_IST8310, MODULE_NAME, bus_number, address, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus_number, address), _px4_mag(get_device_id(), external() ? ORB_PRIO_VERY_HIGH : ORB_PRIO_DEFAULT, rotation), _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": read")), @@ -277,9 +277,6 @@ IST8310::IST8310(I2CSPIBusOption bus_option, int bus_number, int address, enum R _range_errors(perf_alloc(PC_COUNT, MODULE_NAME": rng_err")), _conf_errors(perf_alloc(PC_COUNT, MODULE_NAME": conf_err")) { - set_device_type(DRV_MAG_DEVTYPE_IST8310); - - _px4_mag.set_device_type(DRV_MAG_DEVTYPE_IST8310); _px4_mag.set_external(external()); // default range scale from counts to gauss diff --git a/src/drivers/magnetometer/lis3mdl/lis3mdl.cpp b/src/drivers/magnetometer/lis3mdl/lis3mdl.cpp index 0e4d7306c52d..e11fcf47c874 100644 --- a/src/drivers/magnetometer/lis3mdl/lis3mdl.cpp +++ b/src/drivers/magnetometer/lis3mdl/lis3mdl.cpp @@ -65,9 +65,6 @@ LIS3MDL::LIS3MDL(device::Device *interface, enum Rotation rotation, I2CSPIBusOpt _temperature_counter(0), _temperature_error_count(0) { - _interface->set_device_type(DRV_MAG_DEVTYPE_IST8310); - - _px4_mag.set_device_type(DRV_MAG_DEVTYPE_IST8310); _px4_mag.set_external(_interface->external()); } diff --git a/src/drivers/magnetometer/lis3mdl/lis3mdl_i2c.cpp b/src/drivers/magnetometer/lis3mdl/lis3mdl_i2c.cpp index e0a72d2bc4d7..65d1a3ac139e 100644 --- a/src/drivers/magnetometer/lis3mdl/lis3mdl_i2c.cpp +++ b/src/drivers/magnetometer/lis3mdl/lis3mdl_i2c.cpp @@ -81,9 +81,8 @@ LIS3MDL_I2C_interface(int bus, int bus_frequency) } LIS3MDL_I2C::LIS3MDL_I2C(int bus, int bus_frequency) : - I2C("LIS3MDL_I2C", nullptr, bus, LIS3MDLL_ADDRESS, bus_frequency) + I2C(DRV_MAG_DEVTYPE_LIS3MDL, MODULE_NAME, bus, LIS3MDLL_ADDRESS, bus_frequency) { - _device_id.devid_s.devtype = DRV_MAG_DEVTYPE_LIS3MDL; } int LIS3MDL_I2C::probe() diff --git a/src/drivers/magnetometer/lis3mdl/lis3mdl_spi.cpp b/src/drivers/magnetometer/lis3mdl/lis3mdl_spi.cpp index a1c5f6a51364..056f154378bb 100644 --- a/src/drivers/magnetometer/lis3mdl/lis3mdl_spi.cpp +++ b/src/drivers/magnetometer/lis3mdl/lis3mdl_spi.cpp @@ -81,9 +81,8 @@ LIS3MDL_SPI_interface(int bus, uint32_t devid, int bus_frequency, spi_mode_e spi } LIS3MDL_SPI::LIS3MDL_SPI(int bus, uint32_t devid, int bus_frequency, spi_mode_e spi_mode) : - SPI("LIS3MDL_SPI", nullptr, bus, devid, spi_mode, bus_frequency) + SPI(DRV_MAG_DEVTYPE_LIS3MDL, MODULE_NAME, bus, devid, spi_mode, bus_frequency) { - _device_id.devid_s.devtype = DRV_MAG_DEVTYPE_LIS3MDL; } int diff --git a/src/drivers/magnetometer/lsm303agr/LSM303AGR.cpp b/src/drivers/magnetometer/lsm303agr/LSM303AGR.cpp index 292619787b47..1d12aa927fc2 100644 --- a/src/drivers/magnetometer/lsm303agr/LSM303AGR.cpp +++ b/src/drivers/magnetometer/lsm303agr/LSM303AGR.cpp @@ -63,16 +63,13 @@ static constexpr uint8_t LSM303AGR_WHO_AM_I_M = 0x40; LSM303AGR::LSM303AGR(I2CSPIBusOption bus_option, int bus, int device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode) : - SPI("LSM303AGR", nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_MAG_DEVTYPE_LSM303AGR, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_mag(get_device_id(), external() ? ORB_PRIO_VERY_HIGH : ORB_PRIO_DEFAULT, rotation), _mag_sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": mag_read")), _bad_registers(perf_alloc(PC_COUNT, MODULE_NAME": bad_reg")), _bad_values(perf_alloc(PC_COUNT, MODULE_NAME": bad_val")) { - set_device_type(DRV_MAG_DEVTYPE_LSM303AGR); - - _px4_mag.set_device_type(DRV_MAG_DEVTYPE_LSM303AGR); _px4_mag.set_external(external()); _px4_mag.set_scale(1.5f / 1000.f); // 1.5 milligauss/LSB diff --git a/src/drivers/magnetometer/lsm9ds1_mag/LSM9DS1_MAG.cpp b/src/drivers/magnetometer/lsm9ds1_mag/LSM9DS1_MAG.cpp index 05ded8532a61..435ff794599d 100644 --- a/src/drivers/magnetometer/lsm9ds1_mag/LSM9DS1_MAG.cpp +++ b/src/drivers/magnetometer/lsm9ds1_mag/LSM9DS1_MAG.cpp @@ -42,13 +42,10 @@ static constexpr int16_t combine(uint8_t lsb, uint8_t msb) { return (msb << 8u) LSM9DS1_MAG::LSM9DS1_MAG(I2CSPIBusOption bus_option, int bus, uint32_t device, enum Rotation rotation, int bus_frequency, spi_mode_e spi_mode) : - SPI(MODULE_NAME, nullptr, bus, device, spi_mode, bus_frequency), + SPI(DRV_MAG_DEVTYPE_ST_LSM9DS1_M, MODULE_NAME, bus, device, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _px4_mag(get_device_id(), external() ? ORB_PRIO_VERY_HIGH : ORB_PRIO_DEFAULT, rotation) { - set_device_type(DRV_MAG_DEVTYPE_ST_LSM9DS1_M); - - _px4_mag.set_device_type(DRV_MAG_DEVTYPE_ST_LSM9DS1_M); _px4_mag.set_external(external()); } diff --git a/src/drivers/magnetometer/qmc5883/QMC5883.cpp b/src/drivers/magnetometer/qmc5883/QMC5883.cpp index be072ce57e46..834ca85431dc 100644 --- a/src/drivers/magnetometer/qmc5883/QMC5883.cpp +++ b/src/drivers/magnetometer/qmc5883/QMC5883.cpp @@ -47,9 +47,6 @@ QMC5883::QMC5883(device::Device *interface, enum Rotation rotation, I2CSPIBusOpt _temperature_counter(0), _temperature_error_count(0) { - _interface->set_device_type(DRV_MAG_DEVTYPE_QMC5883); - - _px4_mag.set_device_type(DRV_MAG_DEVTYPE_QMC5883); _px4_mag.set_external(_interface->external()); } diff --git a/src/drivers/magnetometer/qmc5883/QMC5883_I2C.cpp b/src/drivers/magnetometer/qmc5883/QMC5883_I2C.cpp index fb980e212f97..9586bad02b0b 100644 --- a/src/drivers/magnetometer/qmc5883/QMC5883_I2C.cpp +++ b/src/drivers/magnetometer/qmc5883/QMC5883_I2C.cpp @@ -66,9 +66,8 @@ QMC5883_I2C_interface(int bus, int bus_frequency, int i2c_address) } QMC5883_I2C::QMC5883_I2C(int bus, int bus_frequency, int i2c_address) : - I2C("QMC5883_I2C", nullptr, bus, i2c_address, bus_frequency) + I2C(DRV_MAG_DEVTYPE_QMC5883, MODULE_NAME, bus, i2c_address, bus_frequency) { - _device_id.devid_s.devtype = DRV_MAG_DEVTYPE_QMC5883; } int QMC5883_I2C::probe() diff --git a/src/drivers/magnetometer/rm3100/rm3100.cpp b/src/drivers/magnetometer/rm3100/rm3100.cpp index 6f7d3b9fe467..5ade19dca1df 100644 --- a/src/drivers/magnetometer/rm3100/rm3100.cpp +++ b/src/drivers/magnetometer/rm3100/rm3100.cpp @@ -54,9 +54,6 @@ RM3100::RM3100(device::Device *interface, enum Rotation rotation, I2CSPIBusOptio _measure_interval(0), _check_state_cnt(0) { - _interface->set_device_type(DRV_MAG_DEVTYPE_RM3100); - - _px4_mag.set_device_type(DRV_MAG_DEVTYPE_RM3100); _px4_mag.set_external(_interface->external()); _px4_mag.set_scale(1.f / (RM3100_SENSITIVITY * UTESLA_TO_GAUSS)); diff --git a/src/drivers/magnetometer/rm3100/rm3100_i2c.cpp b/src/drivers/magnetometer/rm3100/rm3100_i2c.cpp index 9a16d6fcff9d..7133f8df4169 100644 --- a/src/drivers/magnetometer/rm3100/rm3100_i2c.cpp +++ b/src/drivers/magnetometer/rm3100/rm3100_i2c.cpp @@ -80,9 +80,8 @@ RM3100_I2C_interface(int bus, int bus_frequency) } RM3100_I2C::RM3100_I2C(int bus, int bus_frequency) : - I2C("RM300_I2C", nullptr, bus, RM3100_ADDRESS, bus_frequency) + I2C(DRV_MAG_DEVTYPE_RM3100, MODULE_NAME, bus, RM3100_ADDRESS, bus_frequency) { - _device_id.devid_s.devtype = DRV_MAG_DEVTYPE_RM3100; } int RM3100_I2C::probe() diff --git a/src/drivers/magnetometer/rm3100/rm3100_spi.cpp b/src/drivers/magnetometer/rm3100/rm3100_spi.cpp index 8858c4fad10d..f39d524d3124 100644 --- a/src/drivers/magnetometer/rm3100/rm3100_spi.cpp +++ b/src/drivers/magnetometer/rm3100/rm3100_spi.cpp @@ -80,9 +80,8 @@ RM3100_SPI_interface(int bus, uint32_t devid, int bus_frequency, spi_mode_e spi_ } RM3100_SPI::RM3100_SPI(int bus, uint32_t devid, int bus_frequency, spi_mode_e spi_mode) : - SPI("RM3100_SPI", nullptr, bus, devid, spi_mode, bus_frequency) + SPI(DRV_MAG_DEVTYPE_RM3100, MODULE_NAME, bus, devid, spi_mode, bus_frequency) { - _device_id.devid_s.devtype = DRV_MAG_DEVTYPE_RM3100; } int RM3100_SPI::init() diff --git a/src/drivers/mkblctrl/mkblctrl.cpp b/src/drivers/mkblctrl/mkblctrl.cpp index 2d1a94e4a756..d2da4376e765 100644 --- a/src/drivers/mkblctrl/mkblctrl.cpp +++ b/src/drivers/mkblctrl/mkblctrl.cpp @@ -218,7 +218,7 @@ MK *g_mk; } // namespace MK::MK(int bus, const char *_device_path) : - I2C("mkblctrl", "/dev/mkblctrl0", bus, 0, I2C_BUS_SPEED), + I2C(0, "mkblctrl", bus, 0, I2C_BUS_SPEED), _update_rate(UPDATE_RATE), _task(-1), _t_actuators(-1), diff --git a/src/drivers/optical_flow/paw3902/PAW3902.cpp b/src/drivers/optical_flow/paw3902/PAW3902.cpp index cae13d028b1a..9d431f0c0548 100644 --- a/src/drivers/optical_flow/paw3902/PAW3902.cpp +++ b/src/drivers/optical_flow/paw3902/PAW3902.cpp @@ -35,11 +35,11 @@ PAW3902::PAW3902(I2CSPIBusOption bus_option, int bus, int devid, enum Rotation yaw_rotation, int bus_frequency, spi_mode_e spi_mode) : - SPI("PAW3902", nullptr, bus, devid, spi_mode, bus_frequency), + SPI(DRV_FLOW_DEVTYPE_PAW3902, MODULE_NAME, bus, devid, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), - _sample_perf(perf_alloc(PC_ELAPSED, "paw3902: read")), - _comms_errors(perf_alloc(PC_COUNT, "paw3902: com_err")), - _dupe_count_perf(perf_alloc(PC_COUNT, "paw3902: duplicate reading")), + _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": read")), + _comms_errors(perf_alloc(PC_COUNT, MODULE_NAME": com_err")), + _dupe_count_perf(perf_alloc(PC_COUNT, MODULE_NAME": duplicate reading")), _yaw_rotation(yaw_rotation) { } diff --git a/src/drivers/optical_flow/pmw3901/PMW3901.cpp b/src/drivers/optical_flow/pmw3901/PMW3901.cpp index 93b64de153d9..df9b83d1b742 100644 --- a/src/drivers/optical_flow/pmw3901/PMW3901.cpp +++ b/src/drivers/optical_flow/pmw3901/PMW3901.cpp @@ -37,7 +37,7 @@ static constexpr uint32_t TIME_us_TSWW = 11; // - actually 10.5us PMW3901::PMW3901(I2CSPIBusOption bus_option, int bus, int devid, enum Rotation yaw_rotation, int bus_frequency, spi_mode_e spi_mode) : - SPI("PMW3901", PMW3901_DEVICE_PATH, bus, devid, spi_mode, bus_frequency), + SPI(DRV_FLOW_DEVTYPE_PMW3901, MODULE_NAME, bus, devid, spi_mode, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _sample_perf(perf_alloc(PC_ELAPSED, "pmw3901: read")), _comms_errors(perf_alloc(PC_COUNT, "pmw3901: com err")), diff --git a/src/drivers/optical_flow/pmw3901/PMW3901.hpp b/src/drivers/optical_flow/pmw3901/PMW3901.hpp index 3500b9f49115..6840f87bf501 100644 --- a/src/drivers/optical_flow/pmw3901/PMW3901.hpp +++ b/src/drivers/optical_flow/pmw3901/PMW3901.hpp @@ -58,13 +58,10 @@ #define DIR_WRITE(a) ((a) | (1 << 7)) #define DIR_READ(a) ((a) & 0x7f) -#define PMW3901_DEVICE_PATH "/dev/pmw3901" - /* PMW3901 Registers addresses */ #define PMW3901_US 1000 /* 1 ms */ #define PMW3901_SAMPLE_INTERVAL 10000 /* 10 ms */ - class PMW3901 : public device::SPI, public I2CSPIDriver { public: diff --git a/src/drivers/optical_flow/px4flow/px4flow.cpp b/src/drivers/optical_flow/px4flow/px4flow.cpp index 86b232ffbfd5..9111bf7a9290 100644 --- a/src/drivers/optical_flow/px4flow/px4flow.cpp +++ b/src/drivers/optical_flow/px4flow/px4flow.cpp @@ -55,8 +55,6 @@ #include #include -#define PX4FLOW0_DEVICE_PATH "/dev/px4flow0" - /* Configuration Constants */ #define I2C_FLOW_ADDRESS_DEFAULT 0x42 ///< 7-bit address. 8-bit address is 0x84, range 0x42 - 0x49 #define I2C_FLOW_ADDRESS_MIN 0x42 ///< 7-bit address. @@ -147,11 +145,11 @@ extern "C" __EXPORT int px4flow_main(int argc, char *argv[]); PX4FLOW::PX4FLOW(I2CSPIBusOption bus_option, int bus, int address, uint8_t sonar_rotation, int bus_frequency, int conversion_interval, enum Rotation rotation) : - I2C("PX4FLOW", PX4FLOW0_DEVICE_PATH, bus, address, bus_frequency), + I2C(DRV_FLOW_DEVTYPE_PX4FLOW, MODULE_NAME, bus, address, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus, address), _sonar_rotation(sonar_rotation), - _sample_perf(perf_alloc(PC_ELAPSED, "px4f_read")), - _comms_errors(perf_alloc(PC_COUNT, "px4f_com_err")), + _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": read")), + _comms_errors(perf_alloc(PC_COUNT, MODULE_NAME": com_err")), _sensor_rotation(rotation) { } diff --git a/src/drivers/osd/atxxxx/atxxxx.cpp b/src/drivers/osd/atxxxx/atxxxx.cpp index b016a880144e..6709dc93343c 100644 --- a/src/drivers/osd/atxxxx/atxxxx.cpp +++ b/src/drivers/osd/atxxxx/atxxxx.cpp @@ -47,7 +47,7 @@ using namespace time_literals; static constexpr uint32_t OSD_UPDATE_RATE{50_ms}; // 20 Hz OSDatxxxx::OSDatxxxx(I2CSPIBusOption bus_option, int bus, int devid, int bus_frequency, spi_mode_e spi_mode) : - SPI("OSD", nullptr, bus, devid, spi_mode, bus_frequency), + SPI(DRV_OSD_DEVTYPE_ATXXXX, MODULE_NAME, bus, devid, spi_mode, bus_frequency), ModuleParams(nullptr), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus) { diff --git a/src/drivers/pca9685/pca9685.cpp b/src/drivers/pca9685/pca9685.cpp index 934b253bd24a..84b7604b1dbe 100644 --- a/src/drivers/pca9685/pca9685.cpp +++ b/src/drivers/pca9685/pca9685.cpp @@ -93,7 +93,6 @@ #define ADDR 0x40 // I2C adress -#define PCA9685_DEVICE_PATH "/dev/pca9685" #define PCA9685_PWMFREQ 60.0f #define PCA9685_NCHANS 16 // total amount of pwm outputs @@ -179,11 +178,11 @@ class PCA9685 : public device::I2C, public I2CSPIDriver }; PCA9685::PCA9685(I2CSPIBusOption bus_option, int bus, int bus_frequency) : - I2C("pca9685", PCA9685_DEVICE_PATH, bus, ADDR, bus_frequency), + I2C(DRV_PWM_DEVTYPE_PCA9685, MODULE_NAME, bus, ADDR, bus_frequency), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _mode(IOX_MODE_ON), _i2cpwm_interval(1_s / 60.0f), - _comms_errors(perf_alloc(PC_COUNT, "pca9685_com_err")), + _comms_errors(perf_alloc(PC_COUNT, MODULE_NAME": com_err")), _actuator_controls_sub(-1), _actuator_controls(), _mode_on_initialized(false) diff --git a/src/drivers/pca9685_pwm_out/PCA9685.cpp b/src/drivers/pca9685_pwm_out/PCA9685.cpp index 32b03b0eecf6..25a1aa5e4e47 100644 --- a/src/drivers/pca9685_pwm_out/PCA9685.cpp +++ b/src/drivers/pca9685_pwm_out/PCA9685.cpp @@ -38,7 +38,7 @@ using namespace drv_pca9685_pwm; PCA9685::PCA9685(int bus, int addr): - I2C("PCA9685", PWM_OUTPUT0_DEVICE_PATH, bus, addr, 400000) + I2C(DRV_PWM_DEVTYPE_PCA9685, MODULE_NAME, bus, addr, 400000) { } diff --git a/src/drivers/power_monitor/ina226/ina226.cpp b/src/drivers/power_monitor/ina226/ina226.cpp index 900e80c72b40..17e724eb93c9 100644 --- a/src/drivers/power_monitor/ina226/ina226.cpp +++ b/src/drivers/power_monitor/ina226/ina226.cpp @@ -42,7 +42,7 @@ INA226::INA226(I2CSPIBusOption bus_option, const int bus, int bus_frequency, int address, int battery_index) : - I2C("INA226", nullptr, bus, address, bus_frequency), + I2C(DRV_POWER_DEVTYPE_INA226, MODULE_NAME, bus, address, bus_frequency), ModuleParams(nullptr), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus, address), _sample_perf(perf_alloc(PC_ELAPSED, "ina226_read")), diff --git a/src/drivers/power_monitor/voxlpm/voxlpm.cpp b/src/drivers/power_monitor/voxlpm/voxlpm.cpp index f08d176e61c6..bad222681e61 100644 --- a/src/drivers/power_monitor/voxlpm/voxlpm.cpp +++ b/src/drivers/power_monitor/voxlpm/voxlpm.cpp @@ -44,8 +44,8 @@ * Address 0x6B - measures 5VDC ouptut voltage and current */ VOXLPM::VOXLPM(I2CSPIBusOption bus_option, const int bus, int bus_frequency, VOXLPM_CH_TYPE ch_type) : - I2C("voxlpm", nullptr, bus, (ch_type == VOXLPM_CH_TYPE_VBATT) ? VOXLPM_LTC2946_ADDR_VBATT : VOXLPM_LTC2946_ADDR_P5VD, - bus_frequency), + I2C(DRV_POWER_DEVTYPE_VOXLPM, MODULE_NAME, bus, + (ch_type == VOXLPM_CH_TYPE_VBATT) ? VOXLPM_LTC2946_ADDR_VBATT : VOXLPM_LTC2946_ADDR_P5VD, bus_frequency), ModuleParams(nullptr), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus), _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": sample")), diff --git a/src/drivers/rpm/pcf8583/PCF8583.cpp b/src/drivers/rpm/pcf8583/PCF8583.cpp index 5a28978db636..118d09e1319c 100644 --- a/src/drivers/rpm/pcf8583/PCF8583.cpp +++ b/src/drivers/rpm/pcf8583/PCF8583.cpp @@ -34,7 +34,7 @@ #include "PCF8583.hpp" PCF8583::PCF8583(I2CSPIBusOption bus_option, const int bus, int bus_frequency) : - I2C("PCF8583", nullptr, bus, PCF8583_BASEADDR_DEFAULT, bus_frequency), + I2C(DRV_SENS_DEVTYPE_PCF8583, MODULE_NAME, bus, PCF8583_BASEADDR_DEFAULT, bus_frequency), ModuleParams(nullptr), I2CSPIDriver(MODULE_NAME, px4::device_bus_to_wq(get_device_id()), bus_option, bus) { diff --git a/src/drivers/tap_esc/drv_tap_esc.h b/src/drivers/tap_esc/drv_tap_esc.h index f025199c0a36..37aa5cdaf58c 100644 --- a/src/drivers/tap_esc/drv_tap_esc.h +++ b/src/drivers/tap_esc/drv_tap_esc.h @@ -37,8 +37,6 @@ #include -#define TAP_ESC_DEVICE_PATH "/dev/tap_esc" - /* At the moment the only known use is with a current sensor */ #define ESC_HAVE_CURRENT_SENSOR diff --git a/src/drivers/tap_esc/tap_esc.cpp b/src/drivers/tap_esc/tap_esc.cpp index fe50925929a1..7e8abfc7ee01 100644 --- a/src/drivers/tap_esc/tap_esc.cpp +++ b/src/drivers/tap_esc/tap_esc.cpp @@ -156,7 +156,7 @@ const uint8_t TAP_ESC::_device_mux_map[TAP_ESC_MAX_MOTOR_NUM] = ESC_POS; const uint8_t TAP_ESC::_device_dir_map[TAP_ESC_MAX_MOTOR_NUM] = ESC_DIR; TAP_ESC::TAP_ESC(char const *const device, uint8_t channels_count): - CDev(TAP_ESC_DEVICE_PATH), + CDev(nullptr), ModuleParams(nullptr), _perf_control_latency(perf_alloc(PC_ELAPSED, "tap_esc control latency")), _channels_count(channels_count) diff --git a/src/drivers/telemetry/bst/bst.cpp b/src/drivers/telemetry/bst/bst.cpp index 479b8129cfeb..fccf100cee58 100644 --- a/src/drivers/telemetry/bst/bst.cpp +++ b/src/drivers/telemetry/bst/bst.cpp @@ -180,7 +180,7 @@ class BST : public device::I2C, public I2CSPIDriver }; BST::BST(I2CSPIBusOption bus_option, const int bus, int address, int bus_frequency) : - I2C("bst", nullptr, bus, address, bus_frequency), + I2C(DRV_TEL_DEVTYPE_BST, MODULE_NAME, bus, address, bus_frequency), 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 ddb830f4e1d6..70d1ffef1fc6 100644 --- a/src/lib/drivers/airspeed/airspeed.cpp +++ b/src/lib/drivers/airspeed/airspeed.cpp @@ -57,7 +57,7 @@ #include Airspeed::Airspeed(int bus, int bus_frequency, int address, unsigned conversion_interval) : - I2C("Airspeed", nullptr, bus, address, bus_frequency), + I2C(0, "Airspeed", bus, address, bus_frequency), _sensor_ok(false), _measure_interval(conversion_interval), _collect_phase(false), diff --git a/src/lib/drivers/device/Device.hpp b/src/lib/drivers/device/Device.hpp index 860f4145c5ba..9245ff63b66a 100644 --- a/src/lib/drivers/device/Device.hpp +++ b/src/lib/drivers/device/Device.hpp @@ -166,7 +166,6 @@ class __EXPORT Device * @return The bus type */ DeviceBusType get_device_bus_type() const { return _device_id.devid_s.bus_type; } - void set_device_bus_type(DeviceBusType bus_type) { _device_id.devid_s.bus_type = bus_type; } static const char *get_device_bus_string(DeviceBusType bus) { @@ -195,7 +194,6 @@ class __EXPORT Device * @return The bus ID */ uint8_t get_device_bus() const { return _device_id.devid_s.bus; } - void set_device_bus(uint8_t bus) { _device_id.devid_s.bus = bus; } /** * Return the bus address of the device. @@ -242,26 +240,15 @@ class __EXPORT Device const char *_name{nullptr}; /**< driver name */ bool _debug_enabled{false}; /**< if true, debug messages are printed */ - explicit Device(const char *name) : _name(name) - { - set_device_bus_type(DeviceBusType_UNKNOWN); - } + Device() = delete; + explicit Device(const char *name) : _name(name) {} - Device(const char *name, DeviceBusType bus_type, uint8_t bus, uint8_t address, uint8_t devtype = 0) - : _name(name) + Device(uint8_t devtype, const char *name, DeviceBusType bus_type, uint8_t bus, uint8_t address) : _name(name) { - set_device_bus_type(bus_type); - set_device_bus(bus); - set_device_address(address); set_device_type(devtype); - } - - Device(DeviceBusType bus_type, uint8_t bus, uint8_t address, uint8_t devtype = 0) - { - set_device_bus_type(bus_type); - set_device_bus(bus); + _device_id.devid_s.bus_type = bus_type; + _device_id.devid_s.bus = bus; set_device_address(address); - set_device_type(devtype); } }; diff --git a/src/lib/drivers/device/nuttx/I2C.cpp b/src/lib/drivers/device/nuttx/I2C.cpp index 128bd40c6ab1..e3b163492b77 100644 --- a/src/lib/drivers/device/nuttx/I2C.cpp +++ b/src/lib/drivers/device/nuttx/I2C.cpp @@ -53,17 +53,15 @@ namespace device unsigned int I2C::_bus_clocks[PX4_NUMBER_I2C_BUSES] = PX4_I2C_BUS_CLOCK_INIT; -I2C::I2C(const char *name, const char *devname, const int bus, const uint16_t address, const uint32_t frequency) : - CDev(name, devname), +I2C::I2C(uint8_t device_type, const char *name, const int bus, const uint16_t address, const uint32_t frequency) : + CDev(name, nullptr), _frequency(frequency) { - DEVICE_DEBUG("I2C::I2C name = %s devname = %s", name, devname); // fill in _device_id fields for a I2C device + _device_id.devid_s.devtype = device_type; _device_id.devid_s.bus_type = DeviceBusType_I2C; _device_id.devid_s.bus = bus; _device_id.devid_s.address = address; - // devtype needs to be filled in by the driver - _device_id.devid_s.devtype = 0; } I2C::~I2C() diff --git a/src/lib/drivers/device/nuttx/I2C.hpp b/src/lib/drivers/device/nuttx/I2C.hpp index 124a3a1a680c..beac354876b0 100644 --- a/src/lib/drivers/device/nuttx/I2C.hpp +++ b/src/lib/drivers/device/nuttx/I2C.hpp @@ -80,13 +80,13 @@ class __EXPORT I2C : public CDev /** * @ Constructor * + * @param device_type The device type (see drv_sensor.h) * @param name Driver name - * @param devname Device node name * @param bus I2C bus on which the device lives * @param address I2C bus address, or zero if set_address will be used * @param frequency I2C bus frequency for the device (currently not used) */ - I2C(const char *name, const char *devname, const int bus, const uint16_t address, const uint32_t frequency); + I2C(uint8_t device_type, const char *name, const int bus, const uint16_t address, const uint32_t frequency); virtual ~I2C(); /** diff --git a/src/lib/drivers/device/nuttx/SPI.cpp b/src/lib/drivers/device/nuttx/SPI.cpp index cf7336934f22..93a2d76f84d4 100644 --- a/src/lib/drivers/device/nuttx/SPI.cpp +++ b/src/lib/drivers/device/nuttx/SPI.cpp @@ -57,21 +57,19 @@ namespace device { -SPI::SPI(const char *name, const char *devname, int bus, uint32_t device, enum spi_mode_e mode, uint32_t frequency) : - CDev(name, devname), +SPI::SPI(uint8_t device_type, const char *name, int bus, uint32_t device, enum spi_mode_e mode, uint32_t frequency) : + CDev(name, nullptr), _device(device), _mode(mode), - _frequency(frequency), - _dev(nullptr) + _frequency(frequency) { + _device_id.devid_s.devtype = device_type; // fill in _device_id fields for a SPI device _device_id.devid_s.bus_type = DeviceBusType_SPI; _device_id.devid_s.bus = bus; // Use the 2. LSB byte as SPI address. This is currently 0, but will allow to extend // for multiple instances of the same device on a bus, should that ever be required. _device_id.devid_s.address = (uint8_t)(device >> 8); - // devtype needs to be filled in by the driver - _device_id.devid_s.devtype = 0; if (!px4_spi_bus_requires_locking(bus)) { _locking_mode = LOCK_NONE; diff --git a/src/lib/drivers/device/nuttx/SPI.hpp b/src/lib/drivers/device/nuttx/SPI.hpp index 0029185757ab..a325d8f319df 100644 --- a/src/lib/drivers/device/nuttx/SPI.hpp +++ b/src/lib/drivers/device/nuttx/SPI.hpp @@ -64,14 +64,14 @@ class __EXPORT SPI : public CDev /** * Constructor * + * @param device_type The device type (see drv_sensor.h) * @param name Driver name - * @param devname Device node name * @param bus SPI bus on which the device lives * @param device Device handle (used by SPI_SELECT) * @param mode SPI clock/data mode * @param frequency SPI clock frequency */ - SPI(const char *name, const char *devname, int bus, uint32_t device, enum spi_mode_e mode, uint32_t frequency); + SPI(uint8_t device_type, const char *name, int bus, uint32_t device, enum spi_mode_e mode, uint32_t frequency); virtual ~SPI(); /** @@ -158,7 +158,7 @@ class __EXPORT SPI : public CDev uint32_t _device; enum spi_mode_e _mode; uint32_t _frequency; - struct spi_dev_s *_dev; + struct spi_dev_s *_dev {nullptr}; LockMode _locking_mode{LOCK_THREADS}; /**< selected locking mode */ diff --git a/src/lib/drivers/device/posix/I2C.cpp b/src/lib/drivers/device/posix/I2C.cpp index 5719681f43f4..60fe4a25dd52 100644 --- a/src/lib/drivers/device/posix/I2C.cpp +++ b/src/lib/drivers/device/posix/I2C.cpp @@ -50,16 +50,14 @@ namespace device { -I2C::I2C(const char *name, const char *devname, const int bus, const uint16_t address, const uint32_t frequency) : - CDev(name, devname) +I2C::I2C(uint8_t device_type, const char *name, const int bus, const uint16_t address, const uint32_t frequency) : + CDev(name, nullptr) { - DEVICE_DEBUG("I2C::I2C name = %s devname = %s", name, devname); // fill in _device_id fields for a I2C device + _device_id.devid_s.devtype = device_type; _device_id.devid_s.bus_type = DeviceBusType_I2C; _device_id.devid_s.bus = bus; _device_id.devid_s.address = address; - // devtype needs to be filled in by the driver - _device_id.devid_s.devtype = 0; } I2C::~I2C() diff --git a/src/lib/drivers/device/posix/I2C.hpp b/src/lib/drivers/device/posix/I2C.hpp index aa8bf1f27567..369b97bd9368 100644 --- a/src/lib/drivers/device/posix/I2C.hpp +++ b/src/lib/drivers/device/posix/I2C.hpp @@ -72,13 +72,13 @@ class __EXPORT I2C : public CDev /** * @ Constructor * + * @param device_type The device type (see drv_sensor.h) * @param name Driver name - * @param devname Device node name * @param bus I2C bus on which the device lives * @param address I2C bus address, or zero if set_address will be used * @param frequency I2C bus frequency for the device (currently not used) */ - I2C(const char *name, const char *devname, const int bus, const uint16_t address, const uint32_t frequency); + I2C(uint8_t device_type, const char *name, const int bus, const uint16_t address, const uint32_t frequency); virtual ~I2C(); /** diff --git a/src/lib/drivers/device/posix/SPI.cpp b/src/lib/drivers/device/posix/SPI.cpp index 36a3fe96654c..56147ba5b9bf 100644 --- a/src/lib/drivers/device/posix/SPI.cpp +++ b/src/lib/drivers/device/posix/SPI.cpp @@ -53,20 +53,17 @@ namespace device { -SPI::SPI(const char *name, const char *devname, int bus, uint32_t device, enum spi_mode_e mode, uint32_t frequency) : - CDev(name, devname), +SPI::SPI(uint8_t device_type, const char *name, int bus, uint32_t device, enum spi_mode_e mode, uint32_t frequency) : + CDev(name, nullptr), _device(device), _mode(mode), _frequency(frequency) { - DEVICE_DEBUG("SPI::SPI name = %s devname = %s", name, devname); - + _device_id.devid_s.devtype = device_type; // fill in _device_id fields for a SPI device _device_id.devid_s.bus_type = DeviceBusType_SPI; _device_id.devid_s.bus = bus; _device_id.devid_s.address = (uint8_t)device; - // devtype needs to be filled in by the driver - _device_id.devid_s.devtype = 0; } SPI::~SPI() diff --git a/src/lib/drivers/device/posix/SPI.hpp b/src/lib/drivers/device/posix/SPI.hpp index 7220181897b4..f33210d51fbb 100644 --- a/src/lib/drivers/device/posix/SPI.hpp +++ b/src/lib/drivers/device/posix/SPI.hpp @@ -77,14 +77,14 @@ class __EXPORT SPI : public CDev /** * Constructor * + * @param device_type The device type (see drv_sensor.h) * @param name Driver name - * @param devname Device node name * @param bus SPI bus on which the device lives * @param device Device handle (used by SPI_SELECT) * @param mode SPI clock/data mode * @param frequency SPI clock frequency */ - SPI(const char *name, const char *devname, int bus, uint32_t device, enum spi_mode_e mode, uint32_t frequency); + SPI(uint8_t device_type, const char *name, int bus, uint32_t device, enum spi_mode_e mode, uint32_t frequency); virtual ~SPI(); /** diff --git a/src/lib/drivers/device/qurt/I2C.cpp b/src/lib/drivers/device/qurt/I2C.cpp index 848e5603c8eb..1eb7a8dde401 100644 --- a/src/lib/drivers/device/qurt/I2C.cpp +++ b/src/lib/drivers/device/qurt/I2C.cpp @@ -47,17 +47,15 @@ namespace device { -I2C::I2C(const char *name, const char *devname, const int bus, const uint16_t address, const uint32_t frequency) : - CDev(name, devname), +I2C::I2C(uint8_t device_type, const char *name, const int bus, const uint16_t address, const uint32_t frequency) : + CDev(name, nullptr), _frequency(frequency) { - DEVICE_DEBUG("I2C::I2C name = %s devname = %s", name, devname); // fill in _device_id fields for a I2C device + _device_id.devid_s.devtype = device_type; _device_id.devid_s.bus_type = DeviceBusType_I2C; _device_id.devid_s.bus = bus; _device_id.devid_s.address = address; - // devtype needs to be filled in by the driver - _device_id.devid_s.devtype = 0; } I2C::~I2C() diff --git a/src/lib/drivers/device/qurt/I2C.hpp b/src/lib/drivers/device/qurt/I2C.hpp index 4129021e6a48..8dc7bd3578f0 100644 --- a/src/lib/drivers/device/qurt/I2C.hpp +++ b/src/lib/drivers/device/qurt/I2C.hpp @@ -71,13 +71,13 @@ class __EXPORT I2C : public CDev /** * @ Constructor * + * @param device_type The device type (see drv_sensor.h) * @param name Driver name - * @param devname Device node name * @param bus I2C bus on which the device lives * @param address I2C bus address, or zero if set_address will be used * @param frequency I2C bus frequency for the device (currently not used) */ - I2C(const char *name, const char *devname, const int bus, const uint16_t address, const uint32_t frequency); + I2C(uint8_t device_type, const char *name, const int bus, const uint16_t address, const uint32_t frequency); virtual ~I2C(); /** diff --git a/src/lib/drivers/device/qurt/SPI.cpp b/src/lib/drivers/device/qurt/SPI.cpp index 8bec20756b64..137e59456b83 100644 --- a/src/lib/drivers/device/qurt/SPI.cpp +++ b/src/lib/drivers/device/qurt/SPI.cpp @@ -51,20 +51,17 @@ namespace device { -SPI::SPI(const char *name, const char *devname, int bus, uint32_t device, enum spi_mode_e mode, uint32_t frequency) : - CDev(name, devname), +SPI::SPI(uint8_t device_type, const char *name, int bus, uint32_t device, enum spi_mode_e mode, uint32_t frequency) : + CDev(name, nullptr), _device(device), _mode(mode), _frequency(frequency) { - DEVICE_DEBUG("SPI::SPI name = %s devname = %s", name, devname); - + _device_id.devid_s.devtype = device_type; // fill in _device_id fields for a SPI device _device_id.devid_s.bus_type = DeviceBusType_SPI; _device_id.devid_s.bus = bus; _device_id.devid_s.address = (uint8_t)device; - // devtype needs to be filled in by the driver - _device_id.devid_s.devtype = 0; } SPI::~SPI() diff --git a/src/lib/drivers/device/qurt/SPI.hpp b/src/lib/drivers/device/qurt/SPI.hpp index 93c307581cdf..a54610bec9c6 100644 --- a/src/lib/drivers/device/qurt/SPI.hpp +++ b/src/lib/drivers/device/qurt/SPI.hpp @@ -62,14 +62,14 @@ class __EXPORT SPI : public CDev /** * Constructor * + * @param device_type The device type (see drv_sensor.h) * @param name Driver name - * @param devname Device node name * @param bus SPI bus on which the device lives * @param device Device handle (used by SPI_SELECT) * @param mode SPI clock/data mode * @param frequency SPI clock frequency */ - SPI(const char *name, const char *devname, int bus, uint32_t device, enum spi_mode_e mode, uint32_t frequency); + SPI(uint8_t device_type, const char *name, int bus, uint32_t device, enum spi_mode_e mode, uint32_t frequency); virtual ~SPI(); /** @@ -140,7 +140,7 @@ class __EXPORT SPI : public CDev * @param frequency Frequency to set (Hz) */ void set_frequency(uint32_t frequency) { _frequency = frequency; } - uint32_t get_frequency() { return _frequency; } + uint32_t get_frequency() { return _frequency; } /** * Set the SPI bus locking mode @@ -159,10 +159,6 @@ class __EXPORT SPI : public CDev enum spi_mode_e _mode; uint32_t _frequency; - /* this class does not allow copying */ - SPI(const SPI &); - SPI operator=(const SPI &); - protected: bool external() { return px4_spi_bus_external(get_device_bus()); } diff --git a/src/lib/drivers/smbus/SMBus.cpp b/src/lib/drivers/smbus/SMBus.cpp index 9b95e1c99922..4da7f5b7e563 100644 --- a/src/lib/drivers/smbus/SMBus.cpp +++ b/src/lib/drivers/smbus/SMBus.cpp @@ -46,7 +46,7 @@ #include "SMBus.hpp" SMBus::SMBus(int bus_num, uint16_t address) : - I2C("BATT_SMBUS_I2C", nullptr, bus_num, address, 100000) + I2C(DRV_BAT_DEVTYPE_SMBUS, MODULE_NAME, bus_num, address, 100000) { } diff --git a/src/lib/parameters/param_translation.cpp b/src/lib/parameters/param_translation.cpp index a9c8136966a4..a4e28fbc9de8 100644 --- a/src/lib/parameters/param_translation.cpp +++ b/src/lib/parameters/param_translation.cpp @@ -138,6 +138,10 @@ bool param_modify_on_import(const char *name, bson_type_t type, void *value) device_id.devid_s.devtype = DRV_IMU_DEVTYPE_ICM20689; } + if (device_id.devid_s.devtype == DRV_MAG_DEVTYPE_LSM303D_LEGACY) { + device_id.devid_s.devtype = DRV_IMU_DEVTYPE_LSM303D; + } + int32_t new_value = (int32_t)device_id.devid; if (new_value != *ivalue) {