diff --git a/src/drivers/differential_pressure/ms4525/ms4525_airspeed.cpp b/src/drivers/differential_pressure/ms4525/ms4525_airspeed.cpp index 3c087a6001..e944555f03 100644 --- a/src/drivers/differential_pressure/ms4525/ms4525_airspeed.cpp +++ b/src/drivers/differential_pressure/ms4525/ms4525_airspeed.cpp @@ -50,6 +50,7 @@ */ #include +#include #include @@ -493,38 +494,48 @@ ms4525_airspeed_main(int argc, char *argv[]) { int i2c_bus = PX4_I2C_BUS_DEFAULT; - int i; + int myoptind = 1; + int ch; + const char *myoptarg = nullptr; - for (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]); - } + while ((ch = px4_getopt(argc, argv, "b:", &myoptind, &myoptarg)) != EOF) { + switch (ch) { + case 'b': + i2c_bus = atoi(myoptarg); + break; + + default: + meas_airspeed_usage(); + return 0; } } + if (myoptind >= argc) { + meas_airspeed_usage(); + return -1; + } + /* * Start/load the driver. */ - if (!strcmp(argv[1], "start")) { + if (!strcmp(argv[myoptind], "start")) { return meas_airspeed::start(i2c_bus); } /* * Stop the driver */ - if (!strcmp(argv[1], "stop")) { + if (!strcmp(argv[myoptind], "stop")) { return meas_airspeed::stop(); } /* * Reset the driver. */ - if (!strcmp(argv[1], "reset")) { + if (!strcmp(argv[myoptind], "reset")) { return meas_airspeed::reset(); } meas_airspeed_usage(); - - return PX4_OK; + return 0; }