diff --git a/src/drivers/differential_pressure/sdp3x/SDP3X_main.cpp b/src/drivers/differential_pressure/sdp3x/SDP3X_main.cpp index b15159a183..f49cb89e5b 100644 --- a/src/drivers/differential_pressure/sdp3x/SDP3X_main.cpp +++ b/src/drivers/differential_pressure/sdp3x/SDP3X_main.cpp @@ -32,6 +32,7 @@ ****************************************************************************/ #include "SDP3X.hpp" +#include // Driver 'main' command. extern "C" __EXPORT int sdp3x_airspeed_main(int argc, char *argv[]); @@ -164,36 +165,49 @@ sdp3x_airspeed_main(int argc, char *argv[]) { uint8_t i2c_bus = PX4_I2C_BUS_DEFAULT; - for (int i = 1; i < argc; i++) { - if (strcmp(argv[i], "-b") == 0 || strcmp(argv[i], "--bus") == 0) { - if (argc > i + 1) { - i2c_bus = atoi(argv[i + 1]); - } + int myoptind = 1; + int ch; + const char *myoptarg = nullptr; + + while ((ch = px4_getopt(argc, argv, "b:", &myoptind, &myoptarg)) != EOF) { + switch (ch) { + case 'b': + i2c_bus = atoi(myoptarg); + break; + + default: + sdp3x_airspeed_usage(); + return 0; } } + if (myoptind >= argc) { + sdp3x_airspeed_usage(); + return -1; + } + + /* * Start/load the driver. */ - if (!strcmp(argv[1], "start")) { + if (!strcmp(argv[myoptind], "start")) { return sdp3x_airspeed::start(i2c_bus); } /* * Stop the driver */ - if (!strcmp(argv[1], "stop")) { + if (!strcmp(argv[myoptind], "stop")) { return sdp3x_airspeed::stop(); } /* * Reset the driver. */ - if (!strcmp(argv[1], "reset")) { + if (!strcmp(argv[myoptind], "reset")) { return sdp3x_airspeed::reset(); } sdp3x_airspeed_usage(); - - return PX4_OK; + return 0; }