forked from Archive/PX4-Autopilot
MPU6K: Allow stop
This commit is contained in:
parent
dfdf741b13
commit
2cf0aec332
|
@ -1881,6 +1881,7 @@ MPU6000 *g_dev_int; // on internal bus
|
||||||
MPU6000 *g_dev_ext; // on external bus
|
MPU6000 *g_dev_ext; // on external bus
|
||||||
|
|
||||||
void start(bool, enum Rotation);
|
void start(bool, enum Rotation);
|
||||||
|
void stop(bool);
|
||||||
void test(bool);
|
void test(bool);
|
||||||
void reset(bool);
|
void reset(bool);
|
||||||
void info(bool);
|
void info(bool);
|
||||||
|
@ -1946,6 +1947,20 @@ fail:
|
||||||
errx(1, "driver start failed");
|
errx(1, "driver start failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
stop(bool external_bus)
|
||||||
|
{
|
||||||
|
MPU6000 **g_dev_ptr = external_bus?&g_dev_ext:&g_dev_int;
|
||||||
|
if (*g_dev_ptr != nullptr) {
|
||||||
|
delete *g_dev_ptr;
|
||||||
|
*g_dev_ptr = nullptr;
|
||||||
|
} else {
|
||||||
|
/* warn, but not an error */
|
||||||
|
warnx("already stopped.");
|
||||||
|
}
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Perform some basic functional tests on the driver;
|
* Perform some basic functional tests on the driver;
|
||||||
* make sure we can collect data from the sensor in polled
|
* make sure we can collect data from the sensor in polled
|
||||||
|
@ -2111,7 +2126,7 @@ factorytest(bool external_bus)
|
||||||
void
|
void
|
||||||
usage()
|
usage()
|
||||||
{
|
{
|
||||||
warnx("missing command: try 'start', 'info', 'test', 'reset', 'regdump', 'factorytest', 'testerror'");
|
warnx("missing command: try 'start', 'info', 'test', 'stop',\n'reset', 'regdump', 'factorytest', 'testerror'");
|
||||||
warnx("options:");
|
warnx("options:");
|
||||||
warnx(" -X (external bus)");
|
warnx(" -X (external bus)");
|
||||||
warnx(" -R rotation");
|
warnx(" -R rotation");
|
||||||
|
@ -2147,38 +2162,50 @@ mpu6000_main(int argc, char *argv[])
|
||||||
* Start/load the driver.
|
* Start/load the driver.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
if (!strcmp(verb, "start"))
|
if (!strcmp(verb, "start")) {
|
||||||
mpu6000::start(external_bus, rotation);
|
mpu6000::start(external_bus, rotation);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcmp(verb, "stop")) {
|
||||||
|
mpu6000::stop(external_bus);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Test the driver/device.
|
* Test the driver/device.
|
||||||
*/
|
*/
|
||||||
if (!strcmp(verb, "test"))
|
if (!strcmp(verb, "test")) {
|
||||||
mpu6000::test(external_bus);
|
mpu6000::test(external_bus);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reset the driver.
|
* Reset the driver.
|
||||||
*/
|
*/
|
||||||
if (!strcmp(verb, "reset"))
|
if (!strcmp(verb, "reset")) {
|
||||||
mpu6000::reset(external_bus);
|
mpu6000::reset(external_bus);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print driver information.
|
* Print driver information.
|
||||||
*/
|
*/
|
||||||
if (!strcmp(verb, "info"))
|
if (!strcmp(verb, "info")) {
|
||||||
mpu6000::info(external_bus);
|
mpu6000::info(external_bus);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print register information.
|
* Print register information.
|
||||||
*/
|
*/
|
||||||
if (!strcmp(verb, "regdump"))
|
if (!strcmp(verb, "regdump")) {
|
||||||
mpu6000::regdump(external_bus);
|
mpu6000::regdump(external_bus);
|
||||||
|
}
|
||||||
|
|
||||||
if (!strcmp(verb, "factorytest"))
|
if (!strcmp(verb, "factorytest")) {
|
||||||
mpu6000::factorytest(external_bus);
|
mpu6000::factorytest(external_bus);
|
||||||
|
}
|
||||||
|
|
||||||
if (!strcmp(verb, "testerror"))
|
if (!strcmp(verb, "testerror")) {
|
||||||
mpu6000::testerror(external_bus);
|
mpu6000::testerror(external_bus);
|
||||||
|
}
|
||||||
|
|
||||||
errx(1, "unrecognized command, try 'start', 'test', 'reset', 'info', 'regdump', 'factorytest' or 'testerror'");
|
mpu6000::usage();
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue