From 23d8b69e3ddd3df55d1383f77751882c915466d0 Mon Sep 17 00:00:00 2001 From: px4dev Date: Sat, 25 Aug 2012 11:52:44 -0700 Subject: Sensor drivers should run all the time, not just when their device is open. Disable this for the mpu6000 driver though, as it's currently busted in that regard. --- apps/drivers/ms5611/ms5611.cpp | 55 ++++++++++++------------------------------ 1 file changed, 16 insertions(+), 39 deletions(-) (limited to 'apps/drivers/ms5611/ms5611.cpp') diff --git a/apps/drivers/ms5611/ms5611.cpp b/apps/drivers/ms5611/ms5611.cpp index 40448511d..4921efb28 100644 --- a/apps/drivers/ms5611/ms5611.cpp +++ b/apps/drivers/ms5611/ms5611.cpp @@ -64,6 +64,12 @@ #include +/* oddly, ERROR is not defined for c++ */ +#ifdef ERROR +# undef ERROR +#endif +static const int ERROR = -1; + /** * Calibration PROM as reported by the device. */ @@ -99,9 +105,6 @@ public: 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 open_first(struct file *filp); - virtual int close_last(struct file *filp); - /** * Diagnostics - print some basic information about the driver. */ @@ -259,7 +262,7 @@ MS5611::MS5611(int bus) : _debug_enabled = true; // work_cancel in the dtor will explode if we don't do this... - _work.worker = nullptr; + memset(&_work, 0, sizeof(_work)); } MS5611::~MS5611() @@ -275,43 +278,23 @@ MS5611::~MS5611() int MS5611::init() { - int ret; + int ret = ERROR; /* do I2C init (and probe) first */ - ret = I2C::init(); - - return ret; -} - -int -MS5611::open_first(struct file *filp) -{ - /* reset to manual-poll mode */ - _measure_ticks = 0; + if (I2C::init() != OK) + goto out; /* allocate basic report buffers */ _num_reports = 2; _reports = new struct baro_report[_num_reports]; - _oldest_report = _next_report = 0; - - return OK; -} - -int -MS5611::close_last(struct file *filp) -{ - /* stop measurement */ - stop(); - - /* free report buffers */ - if (_reports != nullptr) { - delete[] _reports; - _num_reports = 0; - } + if (_reports == nullptr) + goto out; - _measure_ticks = 0; + _oldest_report = _next_report = 0; - return OK; + ret = OK; +out: + return ret; } int @@ -807,12 +790,6 @@ MS5611::print_info() namespace ms5611 { -/* oddly, ERROR is not defined for c++ */ -#ifdef ERROR -# undef ERROR -#endif -const int ERROR = -1; - MS5611 *g_dev; void start(); -- cgit v1.2.3