mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-03 13:58:53 +08:00
More formatting cleanups
This commit is contained in:
@@ -37,7 +37,7 @@
|
|||||||
*
|
*
|
||||||
* Driver for the Eagle Tree Airspeed V3 connected via I2C.
|
* Driver for the Eagle Tree Airspeed V3 connected via I2C.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <nuttx/config.h>
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
#include <drivers/device/i2c.h>
|
#include <drivers/device/i2c.h>
|
||||||
@@ -81,9 +81,9 @@
|
|||||||
|
|
||||||
/* Register address */
|
/* Register address */
|
||||||
#define READ_CMD 0x07 /* Read the data */
|
#define READ_CMD 0x07 /* Read the data */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Eagle Tree Airspeed V3 cannot provide accurate reading below speeds of 15km/h.
|
* The Eagle Tree Airspeed V3 cannot provide accurate reading below speeds of 15km/h.
|
||||||
*/
|
*/
|
||||||
#define MIN_ACCURATE_DIFF_PRES_PA 12
|
#define MIN_ACCURATE_DIFF_PRES_PA 12
|
||||||
|
|
||||||
@@ -105,38 +105,38 @@ class ETSAirspeed : public device::I2C
|
|||||||
public:
|
public:
|
||||||
ETSAirspeed(int bus, int address = I2C_ADDRESS);
|
ETSAirspeed(int bus, int address = I2C_ADDRESS);
|
||||||
virtual ~ETSAirspeed();
|
virtual ~ETSAirspeed();
|
||||||
|
|
||||||
virtual int init();
|
virtual int init();
|
||||||
|
|
||||||
virtual ssize_t read(struct file *filp, char *buffer, size_t buflen);
|
virtual ssize_t read(struct file *filp, char *buffer, size_t buflen);
|
||||||
virtual int ioctl(struct file *filp, int cmd, unsigned long arg);
|
virtual int ioctl(struct file *filp, int cmd, unsigned long arg);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Diagnostics - print some basic information about the driver.
|
* Diagnostics - print some basic information about the driver.
|
||||||
*/
|
*/
|
||||||
void print_info();
|
void print_info();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual int probe();
|
virtual int probe();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
work_s _work;
|
work_s _work;
|
||||||
unsigned _num_reports;
|
unsigned _num_reports;
|
||||||
volatile unsigned _next_report;
|
volatile unsigned _next_report;
|
||||||
volatile unsigned _oldest_report;
|
volatile unsigned _oldest_report;
|
||||||
differential_pressure_s *_reports;
|
differential_pressure_s *_reports;
|
||||||
bool _sensor_ok;
|
bool _sensor_ok;
|
||||||
int _measure_ticks;
|
int _measure_ticks;
|
||||||
bool _collect_phase;
|
bool _collect_phase;
|
||||||
int _diff_pres_offset;
|
int _diff_pres_offset;
|
||||||
|
|
||||||
orb_advert_t _airspeed_pub;
|
orb_advert_t _airspeed_pub;
|
||||||
|
|
||||||
|
perf_counter_t _sample_perf;
|
||||||
|
perf_counter_t _comms_errors;
|
||||||
|
perf_counter_t _buffer_overflows;
|
||||||
|
|
||||||
perf_counter_t _sample_perf;
|
|
||||||
perf_counter_t _comms_errors;
|
|
||||||
perf_counter_t _buffer_overflows;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test whether the device supported by the driver is present at a
|
* Test whether the device supported by the driver is present at a
|
||||||
* specific address.
|
* specific address.
|
||||||
@@ -144,28 +144,28 @@ private:
|
|||||||
* @param address The I2C bus address to probe.
|
* @param address The I2C bus address to probe.
|
||||||
* @return True if the device is present.
|
* @return True if the device is present.
|
||||||
*/
|
*/
|
||||||
int probe_address(uint8_t address);
|
int probe_address(uint8_t address);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialise the automatic measurement state machine and start it.
|
* Initialise the automatic measurement state machine and start it.
|
||||||
*
|
*
|
||||||
* @note This function is called at open and error time. It might make sense
|
* @note This function is called at open and error time. It might make sense
|
||||||
* to make it more aggressive about resetting the bus in case of errors.
|
* to make it more aggressive about resetting the bus in case of errors.
|
||||||
*/
|
*/
|
||||||
void start();
|
void start();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stop the automatic measurement state machine.
|
* Stop the automatic measurement state machine.
|
||||||
*/
|
*/
|
||||||
void stop();
|
void stop();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Perform a poll cycle; collect from the previous measurement
|
* Perform a poll cycle; collect from the previous measurement
|
||||||
* and start a new one.
|
* and start a new one.
|
||||||
*/
|
*/
|
||||||
void cycle();
|
void cycle();
|
||||||
int measure();
|
int measure();
|
||||||
int collect();
|
int collect();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Static trampoline from the workq context; because we don't have a
|
* Static trampoline from the workq context; because we don't have a
|
||||||
@@ -173,9 +173,9 @@ private:
|
|||||||
*
|
*
|
||||||
* @param arg Instance pointer for the driver that is polling.
|
* @param arg Instance pointer for the driver that is polling.
|
||||||
*/
|
*/
|
||||||
static void cycle_trampoline(void *arg);
|
static void cycle_trampoline(void *arg);
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* helper macro for handling report buffer indices */
|
/* helper macro for handling report buffer indices */
|
||||||
@@ -203,7 +203,7 @@ ETSAirspeed::ETSAirspeed(int bus, int address) :
|
|||||||
{
|
{
|
||||||
// enable debug() calls
|
// enable debug() calls
|
||||||
_debug_enabled = true;
|
_debug_enabled = true;
|
||||||
|
|
||||||
// work_cancel in the dtor will explode if we don't do this...
|
// work_cancel in the dtor will explode if we don't do this...
|
||||||
memset(&_work, 0, sizeof(_work));
|
memset(&_work, 0, sizeof(_work));
|
||||||
}
|
}
|
||||||
@@ -230,6 +230,7 @@ ETSAirspeed::init()
|
|||||||
/* allocate basic report buffers */
|
/* allocate basic report buffers */
|
||||||
_num_reports = 2;
|
_num_reports = 2;
|
||||||
_reports = new struct differential_pressure_s[_num_reports];
|
_reports = new struct differential_pressure_s[_num_reports];
|
||||||
|
|
||||||
for (unsigned i = 0; i < _num_reports; i++)
|
for (unsigned i = 0; i < _num_reports; i++)
|
||||||
_reports[i].max_differential_pressure_pa = 0;
|
_reports[i].max_differential_pressure_pa = 0;
|
||||||
|
|
||||||
@@ -351,11 +352,11 @@ ETSAirspeed::ioctl(struct file *filp, int cmd, unsigned long arg)
|
|||||||
|
|
||||||
case SENSORIOCGQUEUEDEPTH:
|
case SENSORIOCGQUEUEDEPTH:
|
||||||
return _num_reports - 1;
|
return _num_reports - 1;
|
||||||
|
|
||||||
case SENSORIOCRESET:
|
case SENSORIOCRESET:
|
||||||
/* XXX implement this */
|
/* XXX implement this */
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
/* give it to the superclass */
|
/* give it to the superclass */
|
||||||
return I2C::ioctl(filp, cmd, arg);
|
return I2C::ioctl(filp, cmd, arg);
|
||||||
@@ -432,14 +433,14 @@ ETSAirspeed::measure()
|
|||||||
uint8_t cmd = READ_CMD;
|
uint8_t cmd = READ_CMD;
|
||||||
ret = transfer(&cmd, 1, nullptr, 0);
|
ret = transfer(&cmd, 1, nullptr, 0);
|
||||||
|
|
||||||
if (OK != ret)
|
if (OK != ret) {
|
||||||
{
|
|
||||||
perf_count(_comms_errors);
|
perf_count(_comms_errors);
|
||||||
log("i2c::transfer returned %d", ret);
|
log("i2c::transfer returned %d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = OK;
|
ret = OK;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -447,27 +448,28 @@ int
|
|||||||
ETSAirspeed::collect()
|
ETSAirspeed::collect()
|
||||||
{
|
{
|
||||||
int ret = -EIO;
|
int ret = -EIO;
|
||||||
|
|
||||||
/* read from the sensor */
|
/* read from the sensor */
|
||||||
uint8_t val[2] = {0, 0};
|
uint8_t val[2] = {0, 0};
|
||||||
|
|
||||||
perf_begin(_sample_perf);
|
perf_begin(_sample_perf);
|
||||||
|
|
||||||
ret = transfer(nullptr, 0, &val[0], 2);
|
ret = transfer(nullptr, 0, &val[0], 2);
|
||||||
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
log("error reading from sensor: %d", ret);
|
log("error reading from sensor: %d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t diff_pres_pa = val[1] << 8 | val[0];
|
uint16_t diff_pres_pa = val[1] << 8 | val[0];
|
||||||
|
|
||||||
param_get(param_find("SENS_DPRES_OFF"), &_diff_pres_offset);
|
param_get(param_find("SENS_DPRES_OFF"), &_diff_pres_offset);
|
||||||
|
|
||||||
if (diff_pres_pa < _diff_pres_offset + MIN_ACCURATE_DIFF_PRES_PA) {
|
if (diff_pres_pa < _diff_pres_offset + MIN_ACCURATE_DIFF_PRES_PA) {
|
||||||
diff_pres_pa = 0;
|
diff_pres_pa = 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
diff_pres_pa -= _diff_pres_offset;
|
diff_pres_pa -= _diff_pres_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX we may want to smooth out the readings to remove noise.
|
// XXX we may want to smooth out the readings to remove noise.
|
||||||
@@ -498,7 +500,7 @@ ETSAirspeed::collect()
|
|||||||
ret = OK;
|
ret = OK;
|
||||||
|
|
||||||
perf_end(_sample_perf);
|
perf_end(_sample_perf);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -511,17 +513,19 @@ ETSAirspeed::start()
|
|||||||
|
|
||||||
/* schedule a cycle to start things */
|
/* schedule a cycle to start things */
|
||||||
work_queue(HPWORK, &_work, (worker_t)&ETSAirspeed::cycle_trampoline, this, 1);
|
work_queue(HPWORK, &_work, (worker_t)&ETSAirspeed::cycle_trampoline, this, 1);
|
||||||
|
|
||||||
/* notify about state change */
|
/* notify about state change */
|
||||||
struct subsystem_info_s info = {
|
struct subsystem_info_s info = {
|
||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
SUBSYSTEM_TYPE_DIFFPRESSURE};
|
SUBSYSTEM_TYPE_DIFFPRESSURE
|
||||||
|
};
|
||||||
static orb_advert_t pub = -1;
|
static orb_advert_t pub = -1;
|
||||||
|
|
||||||
if (pub > 0) {
|
if (pub > 0) {
|
||||||
orb_publish(ORB_ID(subsystem_info), pub, &info);
|
orb_publish(ORB_ID(subsystem_info), pub, &info);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
pub = orb_advertise(ORB_ID(subsystem_info), &info);
|
pub = orb_advertise(ORB_ID(subsystem_info), &info);
|
||||||
}
|
}
|
||||||
@@ -597,7 +601,7 @@ ETSAirspeed::print_info()
|
|||||||
perf_print_counter(_buffer_overflows);
|
perf_print_counter(_buffer_overflows);
|
||||||
printf("poll interval: %u ticks\n", _measure_ticks);
|
printf("poll interval: %u ticks\n", _measure_ticks);
|
||||||
printf("report queue: %u (%u/%u @ %p)\n",
|
printf("report queue: %u (%u/%u @ %p)\n",
|
||||||
_num_reports, _oldest_report, _next_report, _reports);
|
_num_reports, _oldest_report, _next_report, _reports);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -653,8 +657,7 @@ start(int i2c_bus)
|
|||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
|
||||||
if (g_dev != nullptr)
|
if (g_dev != nullptr) {
|
||||||
{
|
|
||||||
delete g_dev;
|
delete g_dev;
|
||||||
g_dev = nullptr;
|
g_dev = nullptr;
|
||||||
}
|
}
|
||||||
@@ -668,15 +671,14 @@ fail:
|
|||||||
void
|
void
|
||||||
stop()
|
stop()
|
||||||
{
|
{
|
||||||
if (g_dev != nullptr)
|
if (g_dev != nullptr) {
|
||||||
{
|
|
||||||
delete g_dev;
|
delete g_dev;
|
||||||
g_dev = nullptr;
|
g_dev = nullptr;
|
||||||
}
|
|
||||||
else
|
} else {
|
||||||
{
|
|
||||||
errx(1, "driver not running");
|
errx(1, "driver not running");
|
||||||
}
|
}
|
||||||
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -773,8 +775,8 @@ info()
|
|||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ets_airspeed_usage()
|
ets_airspeed_usage()
|
||||||
{
|
{
|
||||||
fprintf(stderr, "usage: ets_airspeed command [options]\n");
|
fprintf(stderr, "usage: ets_airspeed command [options]\n");
|
||||||
fprintf(stderr, "options:\n");
|
fprintf(stderr, "options:\n");
|
||||||
@@ -789,6 +791,7 @@ ets_airspeed_main(int argc, char *argv[])
|
|||||||
int i2c_bus = PX4_I2C_BUS_DEFAULT;
|
int i2c_bus = PX4_I2C_BUS_DEFAULT;
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
if (strcmp(argv[i], "-b") == 0 || strcmp(argv[i], "--bus") == 0) {
|
if (strcmp(argv[i], "-b") == 0 || strcmp(argv[i], "--bus") == 0) {
|
||||||
if (argc > i + 1) {
|
if (argc > i + 1) {
|
||||||
@@ -802,12 +805,12 @@ ets_airspeed_main(int argc, char *argv[])
|
|||||||
*/
|
*/
|
||||||
if (!strcmp(argv[1], "start"))
|
if (!strcmp(argv[1], "start"))
|
||||||
ets_airspeed::start(i2c_bus);
|
ets_airspeed::start(i2c_bus);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Stop the driver
|
* Stop the driver
|
||||||
*/
|
*/
|
||||||
if (!strcmp(argv[1], "stop"))
|
if (!strcmp(argv[1], "stop"))
|
||||||
ets_airspeed::stop();
|
ets_airspeed::stop();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Test the driver/device.
|
* Test the driver/device.
|
||||||
|
|||||||
Reference in New Issue
Block a user