mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-28 12:43:33 +08:00
I2C/SPI require device type in constructor
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -80,13 +80,13 @@ protected:
|
||||
/**
|
||||
* @ 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();
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -64,14 +64,14 @@ protected:
|
||||
/**
|
||||
* 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 @@ private:
|
||||
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 */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user