mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-24 07:09:48 +08:00
distance_sensor/vl53l0x: move to PX4Rangefinder and cleanup
This commit is contained in:
@@ -8,7 +8,7 @@ px4_add_board(
|
||||
ROMFSROOT px4fmu_common
|
||||
DRIVERS
|
||||
barometer/lps25h
|
||||
distance_sensor/vl53lxx
|
||||
distance_sensor/vl53l0x
|
||||
gps
|
||||
imu/mpu9250
|
||||
optical_flow/pmw3901
|
||||
|
||||
@@ -12,4 +12,4 @@ mpu9250 -I -R 12 start
|
||||
lps25h -I start
|
||||
|
||||
# Optical flow deck
|
||||
vl53lxx start -X
|
||||
vl53l0x start -X
|
||||
|
||||
@@ -44,4 +44,4 @@ add_subdirectory(srf02)
|
||||
add_subdirectory(teraranger)
|
||||
add_subdirectory(tfmini)
|
||||
add_subdirectory(ulanding_radar)
|
||||
add_subdirectory(vl53lxx)
|
||||
add_subdirectory(vl53l0x)
|
||||
|
||||
+7
-5
@@ -32,10 +32,12 @@
|
||||
############################################################################
|
||||
|
||||
px4_add_module(
|
||||
MODULE drivers__vl53lxx
|
||||
MAIN vl53lxx
|
||||
COMPILE_FLAGS
|
||||
-Wno-cast-align # TODO: fix and enable
|
||||
MODULE drivers__distance_sensor__vl53l0x
|
||||
MAIN vl53l0x
|
||||
SRCS
|
||||
vl53lxx.cpp
|
||||
VL53L0X.cpp
|
||||
VL53L0X.hpp
|
||||
DEPENDS
|
||||
drivers_rangefinder
|
||||
px4_work_queue
|
||||
)
|
||||
+52
-304
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,116 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2018-2020 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name PX4 nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @file VL53L0X.hpp
|
||||
*
|
||||
* Driver for the ST VL53L0X ToF Sensor connected via I2C.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <px4_platform_common/px4_config.h>
|
||||
#include <px4_platform_common/getopt.h>
|
||||
#include <px4_platform_common/i2c_spi_buses.h>
|
||||
#include <px4_platform_common/module.h>
|
||||
#include <drivers/device/i2c.h>
|
||||
#include <drivers/drv_hrt.h>
|
||||
#include <lib/perf/perf_counter.h>
|
||||
#include <lib/drivers/rangefinder/PX4Rangefinder.hpp>
|
||||
|
||||
/* Configuration Constants */
|
||||
#define VL53L0X_BASEADDR 0x29
|
||||
|
||||
class VL53L0X : public device::I2C, public I2CSPIDriver<VL53L0X>
|
||||
{
|
||||
public:
|
||||
VL53L0X(I2CSPIBusOption bus_option, const int bus, const uint8_t rotation, int bus_frequency,
|
||||
int address = VL53L0X_BASEADDR);
|
||||
|
||||
~VL53L0X() override;
|
||||
|
||||
static I2CSPIDriverBase *instantiate(const BusCLIArguments &cli, const BusInstanceIterator &iterator,
|
||||
int runtime_instance);
|
||||
static void print_usage();
|
||||
|
||||
/**
|
||||
* Diagnostics - print some basic information about the driver.
|
||||
*/
|
||||
void print_status() override;
|
||||
|
||||
/**
|
||||
* Initialise the automatic measurement state machine and start it.
|
||||
*/
|
||||
void start();
|
||||
|
||||
/**
|
||||
* Perform a poll cycle; collect from the previous measurement
|
||||
* and start a new one.
|
||||
*/
|
||||
void RunImpl();
|
||||
|
||||
private:
|
||||
int probe() override;
|
||||
|
||||
/**
|
||||
* Collects the most recent sensor measurement data from the i2c bus.
|
||||
*/
|
||||
int collect();
|
||||
|
||||
/**
|
||||
* Sends an i2c measure command to the sensor.
|
||||
*/
|
||||
int measure();
|
||||
|
||||
int readRegister(const uint8_t reg_address, uint8_t &value);
|
||||
int readRegisterMulti(const uint8_t reg_address, uint8_t *value, const uint8_t length);
|
||||
|
||||
int writeRegister(const uint8_t reg_address, const uint8_t value);
|
||||
int writeRegisterMulti(const uint8_t reg_address, const uint8_t *value, const uint8_t length);
|
||||
|
||||
int sensorInit();
|
||||
int sensorTuning();
|
||||
int singleRefCalibration(const uint8_t byte);
|
||||
int spadCalculations();
|
||||
|
||||
PX4Rangefinder _px4_rangefinder;
|
||||
|
||||
bool _collect_phase{false};
|
||||
bool _measurement_started{false};
|
||||
bool _new_measurement{true};
|
||||
|
||||
uint8_t _stop_variable{0};
|
||||
|
||||
perf_counter_t _comms_errors{perf_alloc(PC_COUNT, MODULE_NAME": com_err")};
|
||||
perf_counter_t _sample_perf{perf_alloc(PC_ELAPSED, MODULE_NAME": read")};
|
||||
};
|
||||
@@ -137,7 +137,7 @@
|
||||
#define DRV_DIST_DEVTYPE_SF1XX 0x73
|
||||
#define DRV_DIST_DEVTYPE_SRF02 0x74
|
||||
#define DRV_DIST_DEVTYPE_TERARANGER 0x75
|
||||
#define DRV_DIST_DEVTYPE_VL53LXX 0x76
|
||||
#define DRV_DIST_DEVTYPE_VL53L0X 0x76
|
||||
#define DRV_POWER_DEVTYPE_INA226 0x77
|
||||
#define DRV_POWER_DEVTYPE_VOXLPM 0x78
|
||||
#define DRV_LED_DEVTYPE_BLINKM 0x79
|
||||
|
||||
Reference in New Issue
Block a user