diff --git a/src/drivers/bmi055/bmi055_accel.cpp b/src/drivers/bmi055/bmi055_accel.cpp index cc879caf24..6b9b88bff8 100644 --- a/src/drivers/bmi055/bmi055_accel.cpp +++ b/src/drivers/bmi055/bmi055_accel.cpp @@ -79,7 +79,6 @@ BMI055_accel::init() /* if probe/setup failed, bail now */ if (ret != OK) { - warnx("SPI error"); DEVICE_DEBUG("SPI setup failed"); return ret; } diff --git a/src/drivers/bmi055/bmi055_gyro.cpp b/src/drivers/bmi055/bmi055_gyro.cpp index df5ad8ebbc..123cdc9c8a 100644 --- a/src/drivers/bmi055/bmi055_gyro.cpp +++ b/src/drivers/bmi055/bmi055_gyro.cpp @@ -184,7 +184,7 @@ BMI055_gyro::probe() return OK; } - PX4_ERR("unexpected whoami 0x%02x", _whoami); + DEVICE_DEBUG("unexpected whoami 0x%02x", _whoami); return -EIO; } diff --git a/src/drivers/bmi055/bmi055_main.cpp b/src/drivers/bmi055/bmi055_main.cpp index ea3fc7da33..43547690be 100644 --- a/src/drivers/bmi055/bmi055_main.cpp +++ b/src/drivers/bmi055/bmi055_main.cpp @@ -133,7 +133,7 @@ start(bool external_bus, enum Rotation rotation, enum sensor_type sensor) close(fd_gyr); } - exit(0); + exit(PX4_OK); fail_accel: @@ -142,7 +142,8 @@ fail_accel: *g_dev_acc_ptr = nullptr; } - errx(1, "bmi055 accel driver start failed"); + PX4_WARN("No BMI055 accel found"); + exit(PX4_ERROR); fail_gyro: @@ -151,7 +152,8 @@ fail_gyro: *g_dev_gyr_ptr = nullptr; } - errx(1, "bmi055 gyro driver start failed"); + PX4_WARN("No BMI055 gyro found"); + exit(PX4_ERROR); } diff --git a/src/drivers/ets_airspeed/ets_airspeed.cpp b/src/drivers/ets_airspeed/ets_airspeed.cpp index a0da42cd55..9536843c43 100644 --- a/src/drivers/ets_airspeed/ets_airspeed.cpp +++ b/src/drivers/ets_airspeed/ets_airspeed.cpp @@ -243,11 +243,11 @@ namespace ets_airspeed ETSAirspeed *g_dev; -void start(int i2c_bus); -void stop(); -void test(); -void reset(); -void info(); +int start(int i2c_bus); +int stop(); +int test(); +int reset(); +int info(); /** * Start the driver. @@ -255,13 +255,14 @@ void info(); * This function only returns if the sensor is up and running * or could not be detected successfully. */ -void +int start(int i2c_bus) { int fd; if (g_dev != nullptr) { PX4_ERR("already started"); + return PX4_ERROR; } /* create the driver */ @@ -286,7 +287,7 @@ start(int i2c_bus) goto fail; } - return; + return PX4_OK; fail: @@ -295,13 +296,14 @@ fail: g_dev = nullptr; } - PX4_WARN("no ETS airspeed sensor connected"); + PX4_WARN("no ETS airspeed sensor connected on bus %d", i2c_bus); + return PX4_ERROR; } /** * Stop the driver */ -void +int stop() { if (g_dev != nullptr) { @@ -310,7 +312,10 @@ stop() } else { PX4_ERR("driver not running"); + return PX4_ERROR; } + + return PX4_OK; } /** @@ -318,7 +323,7 @@ stop() * make sure we can collect data from the sensor in polled * and automatic modes. */ -void +int test() { struct differential_pressure_s report; @@ -329,6 +334,7 @@ test() if (fd < 0) { PX4_ERR("%s open failed (try 'ets_airspeed start' if the driver is not running", ETS_PATH); + return PX4_ERROR; } /* do a simple demand read */ @@ -336,6 +342,7 @@ test() if (sz != sizeof(report)) { PX4_ERR("immediate read failed"); + return PX4_ERROR; } PX4_INFO("single read"); @@ -344,6 +351,7 @@ test() /* start the sensor polling at 2Hz */ if (OK != px4_ioctl(fd, SENSORIOCSPOLLRATE, 2)) { PX4_ERR("failed to set 2Hz poll rate"); + return PX4_ERROR; } /* read the sensor 5x and report each value */ @@ -373,44 +381,52 @@ test() /* reset the sensor polling to its default rate */ if (OK != px4_ioctl(fd, SENSORIOCSPOLLRATE, SENSOR_POLLRATE_DEFAULT)) { PX4_ERR("failed to set default rate"); + return PX4_ERROR; } - errx(0, "PASS"); + return PX4_OK; } /** * Reset the driver. */ -void +int reset() { int fd = px4_open(ETS_PATH, O_RDONLY); if (fd < 0) { PX4_ERR("failed "); + return PX4_ERROR; } if (px4_ioctl(fd, SENSORIOCRESET, 0) < 0) { PX4_ERR("driver reset failed"); + return PX4_ERROR; } if (px4_ioctl(fd, SENSORIOCSPOLLRATE, SENSOR_POLLRATE_DEFAULT) < 0) { PX4_ERR("driver poll restart failed"); + return PX4_ERROR; } + + return PX4_OK; } /** * Print a little info about the driver. */ -void +int info() { if (g_dev == nullptr) { PX4_ERR("driver not running"); + return PX4_ERROR; } PX4_INFO("state @ %p", g_dev); g_dev->print_info(); + return PX4_OK; } } // namespace @@ -445,35 +461,35 @@ ets_airspeed_main(int argc, char *argv[]) * Start/load the driver. */ if (!strcmp(argv[1], "start")) { - ets_airspeed::start(i2c_bus); + return ets_airspeed::start(i2c_bus); } /* * Stop the driver */ if (!strcmp(argv[1], "stop")) { - ets_airspeed::stop(); + return ets_airspeed::stop(); } /* * Test the driver/device. */ if (!strcmp(argv[1], "test")) { - ets_airspeed::test(); + return ets_airspeed::test(); } /* * Reset the driver. */ if (!strcmp(argv[1], "reset")) { - ets_airspeed::reset(); + return ets_airspeed::reset(); } /* * Print driver information. */ if (!strcmp(argv[1], "info") || !strcmp(argv[1], "status")) { - ets_airspeed::info(); + return ets_airspeed::info(); } ets_airspeed_usage(); diff --git a/src/drivers/ms4525_airspeed/ms4525_airspeed.cpp b/src/drivers/ms4525_airspeed/ms4525_airspeed.cpp index 2f32dd5b2e..0ca1ee7e90 100644 --- a/src/drivers/ms4525_airspeed/ms4525_airspeed.cpp +++ b/src/drivers/ms4525_airspeed/ms4525_airspeed.cpp @@ -382,11 +382,11 @@ namespace meas_airspeed MEASAirspeed *g_dev = nullptr; -void start(int i2c_bus); -void stop(); -void test(); -void reset(); -void info(); +int start(int i2c_bus); +int stop(); +int test(); +int reset(); +int info(); /** * Start the driver. @@ -394,13 +394,14 @@ void info(); * This function call only returns once the driver is up and running * or failed to detect the sensor. */ -void +int start(int i2c_bus) { int fd; if (g_dev != nullptr) { PX4_ERR("already started"); + return PX4_ERROR; } /* create the driver, try the MS4525DO first */ @@ -413,7 +414,6 @@ start(int i2c_bus) /* both versions failed if the init for the MS5525DSO fails, give up */ if (OK != g_dev->Airspeed::init()) { - PX4_ERR("init fail"); goto fail; } @@ -428,7 +428,7 @@ start(int i2c_bus) goto fail; } - return; + return PX4_OK; fail: @@ -437,13 +437,14 @@ fail: g_dev = nullptr; } - PX4_WARN("no MS4525 airspeed sensor connected"); + PX4_WARN("no MS4525 airspeed sensor connected on bus %d", i2c_bus); + return PX4_ERROR; } /** * Stop the driver */ -void +int stop() { if (g_dev != nullptr) { @@ -452,7 +453,10 @@ stop() } else { PX4_ERR("driver not running"); + return PX4_ERROR; } + + return PX4_OK; } /** @@ -460,7 +464,7 @@ stop() * make sure we can collect data from the sensor in polled * and automatic modes. */ -void +int test() { struct differential_pressure_s report; @@ -471,6 +475,7 @@ test() if (fd < 0) { PX4_ERR("%s open failed (try 'meas_airspeed start' if the driver is not running", PATH_MS4525); + return PX4_ERROR; } /* do a simple demand read */ @@ -478,6 +483,7 @@ test() if (sz != sizeof(report)) { PX4_ERR("immediate read failed"); + return PX4_ERROR; } PX4_INFO("single read"); @@ -486,6 +492,7 @@ test() /* start the sensor polling at 2Hz */ if (OK != px4_ioctl(fd, SENSORIOCSPOLLRATE, 2)) { PX4_ERR("failed to set 2Hz poll rate"); + return PX4_ERROR; } /* read the sensor 5x and report each value */ @@ -506,6 +513,7 @@ test() if (sz != sizeof(report)) { PX4_ERR("periodic read failed"); + return PX4_ERROR; } PX4_INFO("periodic read %u", i); @@ -516,42 +524,53 @@ test() /* reset the sensor polling to its default rate */ if (OK != px4_ioctl(fd, SENSORIOCSPOLLRATE, SENSOR_POLLRATE_DEFAULT)) { PX4_ERR("failed to set default rate"); + return PX4_ERROR; } + + return PX4_OK; } /** * Reset the driver. */ -void +int reset() { int fd = px4_open(PATH_MS4525, O_RDONLY); if (fd < 0) { PX4_ERR("failed "); + return PX4_ERROR; } if (px4_ioctl(fd, SENSORIOCRESET, 0) < 0) { PX4_ERR("driver reset failed"); + return PX4_ERROR; } if (px4_ioctl(fd, SENSORIOCSPOLLRATE, SENSOR_POLLRATE_DEFAULT) < 0) { PX4_ERR("driver poll restart failed"); + return PX4_ERROR; } + + return PX4_OK; } /** * Print a little info about the driver. */ -void +int info() { if (g_dev == nullptr) { PX4_ERR("driver not running"); + return PX4_ERROR; } PX4_INFO("state @ %p", g_dev); g_dev->print_info(); + + return PX4_OK; } } // namespace @@ -586,38 +605,38 @@ ms4525_airspeed_main(int argc, char *argv[]) * Start/load the driver. */ if (!strcmp(argv[1], "start")) { - meas_airspeed::start(i2c_bus); + return meas_airspeed::start(i2c_bus); } /* * Stop the driver */ if (!strcmp(argv[1], "stop")) { - meas_airspeed::stop(); + return meas_airspeed::stop(); } /* * Test the driver/device. */ if (!strcmp(argv[1], "test")) { - meas_airspeed::test(); + return meas_airspeed::test(); } /* * Reset the driver. */ if (!strcmp(argv[1], "reset")) { - meas_airspeed::reset(); + return meas_airspeed::reset(); } /* * Print driver information. */ if (!strcmp(argv[1], "info") || !strcmp(argv[1], "status")) { - meas_airspeed::info(); + return meas_airspeed::info(); } meas_airspeed_usage(); - return 0; + return PX4_OK; } diff --git a/src/drivers/ms5525_airspeed/MS5525_main.cpp b/src/drivers/ms5525_airspeed/MS5525_main.cpp index 99bb88a9dc..e186b55a1f 100644 --- a/src/drivers/ms5525_airspeed/MS5525_main.cpp +++ b/src/drivers/ms5525_airspeed/MS5525_main.cpp @@ -41,15 +41,15 @@ namespace ms5525_airspeed { MS5525 *g_dev = nullptr; -void start(uint8_t i2c_bus); -void stop(); -void test(); -void reset(); +int start(uint8_t i2c_bus); +int stop(); +int test(); +int reset(); // Start the driver. // This function call only returns once the driver is up and running // or failed to detect the sensor. -void +int start(uint8_t i2c_bus) { int fd = -1; @@ -70,8 +70,6 @@ start(uint8_t i2c_bus) if (OK != g_dev->Airspeed::init()) { delete g_dev; - PX4_WARN("trying MS5525 address 2"); - g_dev = new MS5525(i2c_bus, I2C_ADDRESS_2_MS5525DSO, PATH_MS5525); /* check if the MS5525DSO was instantiated */ @@ -82,7 +80,6 @@ start(uint8_t i2c_bus) /* both versions failed if the init for the MS5525DSO fails, give up */ if (OK != g_dev->Airspeed::init()) { - PX4_WARN("MS5525 init fail"); goto fail; } } @@ -98,7 +95,7 @@ start(uint8_t i2c_bus) goto fail; } - return; + return PX4_OK; fail: @@ -107,11 +104,12 @@ fail: g_dev = nullptr; } - PX4_WARN("no MS5525 airspeed sensor connected"); + PX4_WARN("no MS5525 airspeed sensor connected on bus %d", i2c_bus); + return PX4_ERROR; } // stop the driver -void stop() +int stop() { if (g_dev != nullptr) { delete g_dev; @@ -119,19 +117,22 @@ void stop() } else { PX4_ERR("driver not running"); + return PX4_ERROR; } + + return PX4_OK; } // perform some basic functional tests on the driver; // make sure we can collect data from the sensor in polled // and automatic modes. -void test() +int test() { int fd = px4_open(PATH_MS5525, O_RDONLY); if (fd < 0) { PX4_WARN("%s open failed (try 'ms5525_airspeed start' if the driver is not running", PATH_MS5525); - return; + return PX4_ERROR; } // do a simple demand read @@ -140,7 +141,7 @@ void test() if (sz != sizeof(report)) { PX4_WARN("immediate read failed"); - return; + return PX4_ERROR; } PX4_WARN("single read"); @@ -149,7 +150,7 @@ void test() /* start the sensor polling at 2Hz */ if (OK != px4_ioctl(fd, SENSORIOCSPOLLRATE, 2)) { PX4_WARN("failed to set 2Hz poll rate"); - return; + return PX4_ERROR; } /* read the sensor 5x and report each value */ @@ -163,6 +164,7 @@ void test() if (ret != 1) { PX4_ERR("timed out"); + return PX4_ERROR; } /* now go get it */ @@ -170,6 +172,7 @@ void test() if (sz != sizeof(report)) { PX4_ERR("periodic read failed"); + return PX4_ERROR; } PX4_WARN("periodic read %u", i); @@ -180,28 +183,33 @@ void test() /* reset the sensor polling to its default rate */ if (PX4_OK != px4_ioctl(fd, SENSORIOCSPOLLRATE, SENSOR_POLLRATE_DEFAULT)) { PX4_WARN("failed to set default rate"); + return PX4_ERROR; } + + return PX4_OK; } // reset the driver -void reset() +int reset() { int fd = px4_open(PATH_MS5525, O_RDONLY); if (fd < 0) { PX4_ERR("failed "); - return; + return PX4_ERROR; } if (px4_ioctl(fd, SENSORIOCRESET, 0) < 0) { PX4_ERR("driver reset failed"); - return; + return PX4_ERROR; } if (px4_ioctl(fd, SENSORIOCSPOLLRATE, SENSOR_POLLRATE_DEFAULT) < 0) { PX4_ERR("driver poll restart failed"); - return; + return PX4_ERROR; } + + return PX4_OK; } } // namespace ms5525_airspeed @@ -234,28 +242,28 @@ ms5525_airspeed_main(int argc, char *argv[]) * Start/load the driver. */ if (!strcmp(argv[1], "start")) { - ms5525_airspeed::start(i2c_bus); + return ms5525_airspeed::start(i2c_bus); } /* * Stop the driver */ if (!strcmp(argv[1], "stop")) { - ms5525_airspeed::stop(); + return ms5525_airspeed::stop(); } /* * Test the driver/device. */ if (!strcmp(argv[1], "test")) { - ms5525_airspeed::test(); + return ms5525_airspeed::test(); } /* * Reset the driver. */ if (!strcmp(argv[1], "reset")) { - ms5525_airspeed::reset(); + return ms5525_airspeed::reset(); } ms5525_airspeed_usage(); diff --git a/src/drivers/sdp3x_airspeed/SDP3X.cpp b/src/drivers/sdp3x_airspeed/SDP3X.cpp index 0cc28b6a0c..622a71d2d9 100644 --- a/src/drivers/sdp3x_airspeed/SDP3X.cpp +++ b/src/drivers/sdp3x_airspeed/SDP3X.cpp @@ -66,7 +66,6 @@ SDP3X::init_sdp3x() if (ret != PX4_OK) { perf_count(_comms_errors); - PX4_ERR("reset failed"); return false; } diff --git a/src/drivers/sdp3x_airspeed/SDP3X_main.cpp b/src/drivers/sdp3x_airspeed/SDP3X_main.cpp index aebc9ca52a..3ae776c732 100644 --- a/src/drivers/sdp3x_airspeed/SDP3X_main.cpp +++ b/src/drivers/sdp3x_airspeed/SDP3X_main.cpp @@ -41,22 +41,23 @@ namespace sdp3x_airspeed { SDP3X *g_dev = nullptr; -void start(int i2c_bus); -void stop(); -void test(); -void reset(); -void info(); +int start(int i2c_bus); +int stop(); +int test(); +int reset(); +int info(); // Start the driver. // This function call only returns once the driver is up and running // or failed to detect the sensor. -void +int start(int i2c_bus) { int fd = -1; if (g_dev != nullptr) { - errx(1, "already started"); + PX4_WARN("driver already started"); + return PX4_ERROR; } g_dev = new SDP3X(i2c_bus, I2C_ADDRESS_1_SDP3X, PATH_SDP3X); @@ -70,19 +71,16 @@ start(int i2c_bus) if (OK != g_dev->Airspeed::init()) { delete g_dev; - PX4_WARN("trying SDP3X 2"); - g_dev = new SDP3X(i2c_bus, I2C_ADDRESS_2_SDP3X, PATH_SDP3X); /* check if the SDP3XDSO was instantiated */ if (g_dev == nullptr) { - PX4_WARN("SDP3X was not instantiated"); + PX4_ERR("SDP3X was not instantiated (RAM)"); goto fail; } /* both versions failed if the init for the SDP3XDSO fails, give up */ if (OK != g_dev->Airspeed::init()) { - PX4_WARN("SDP3X init fail"); goto fail; } } @@ -98,7 +96,7 @@ start(int i2c_bus) goto fail; } - return; + return PX4_OK; fail: @@ -107,11 +105,12 @@ fail: g_dev = nullptr; } - PX4_WARN("no SDP3X airspeed sensor connected"); + PX4_WARN("no SDP3X airspeed sensor connected on bus %d", i2c_bus); + return PX4_ERROR; } // stop the driver -void stop() +int stop() { if (g_dev != nullptr) { delete g_dev; @@ -119,19 +118,22 @@ void stop() } else { PX4_ERR("driver not running"); + return PX4_ERROR; } + + return PX4_OK; } // perform some basic functional tests on the driver; // make sure we can collect data from the sensor in polled // and automatic modes. -void test() +int test() { int fd = px4_open(PATH_SDP3X, O_RDONLY); if (fd < 0) { PX4_WARN("%s open failed (try 'sdp3x_airspeed start' if the driver is not running", PATH_SDP3X); - return; + return PX4_ERROR; } // do a simple demand read @@ -140,7 +142,7 @@ void test() if (sz != sizeof(report)) { PX4_WARN("immediate read failed"); - return; + return PX4_ERROR; } PX4_WARN("single read"); @@ -149,7 +151,7 @@ void test() /* start the sensor polling at 2Hz */ if (OK != px4_ioctl(fd, SENSORIOCSPOLLRATE, 2)) { PX4_WARN("failed to set 2Hz poll rate"); - return; + return PX4_ERROR; } /* read the sensor 5x and report each value */ @@ -163,6 +165,7 @@ void test() if (ret != 1) { PX4_ERR("timed out"); + return PX4_ERROR; } /* now go get it */ @@ -170,6 +173,7 @@ void test() if (sz != sizeof(report)) { PX4_ERR("periodic read failed"); + return PX4_ERROR; } PX4_WARN("periodic read %u", i); @@ -180,41 +184,47 @@ void test() /* reset the sensor polling to its default rate */ if (PX4_OK != px4_ioctl(fd, SENSORIOCSPOLLRATE, SENSOR_POLLRATE_DEFAULT)) { PX4_WARN("failed to set default rate"); - return; + return PX4_ERROR; } + + return PX4_OK; } // reset the driver -void reset() +int reset() { int fd = px4_open(PATH_SDP3X, O_RDONLY); if (fd < 0) { PX4_ERR("failed "); - return; + return PX4_ERROR; } if (px4_ioctl(fd, SENSORIOCRESET, 0) < 0) { PX4_ERR("driver reset failed"); - return; + return PX4_ERROR; } if (px4_ioctl(fd, SENSORIOCSPOLLRATE, SENSOR_POLLRATE_DEFAULT) < 0) { PX4_ERR("driver poll restart failed"); - return; + return PX4_ERROR; } + + return PX4_OK; } // print a little info about the driver -void +int info() { if (g_dev == nullptr) { PX4_ERR("driver not running"); + return PX4_ERROR; } PX4_INFO("state @ %p", g_dev); g_dev->print_info(); + return PX4_OK; } } // namespace sdp3x_airspeed @@ -247,35 +257,35 @@ sdp3x_airspeed_main(int argc, char *argv[]) * Start/load the driver. */ if (!strcmp(argv[1], "start")) { - sdp3x_airspeed::start(i2c_bus); + return sdp3x_airspeed::start(i2c_bus); } /* * Stop the driver */ if (!strcmp(argv[1], "stop")) { - sdp3x_airspeed::stop(); + return sdp3x_airspeed::stop(); } /* * Test the driver/device. */ if (!strcmp(argv[1], "test")) { - sdp3x_airspeed::test(); + return sdp3x_airspeed::test(); } /* * Reset the driver. */ if (!strcmp(argv[1], "reset")) { - sdp3x_airspeed::reset(); + return sdp3x_airspeed::reset(); } /* * Print driver information. */ if (!strcmp(argv[1], "info") || !strcmp(argv[1], "status")) { - sdp3x_airspeed::info(); + return sdp3x_airspeed::info(); } sdp3x_airspeed_usage();