mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-19 15:29:07 +08:00
batt_smbus_main: Fixed bus arguments from shell
- Added two external I2C bus options corresponding to newer Pixhawk hardware (px4fmu-v5) - Switched from getopt to px4_getopt - Fixed bus checking loop exiting early
This commit is contained in:
parent
6d3eb0450d
commit
c8632d9eee
@ -33,6 +33,7 @@
|
||||
|
||||
#include "batt_smbus.h"
|
||||
#include <px4_module.h>
|
||||
#include <px4_getopt.h>
|
||||
|
||||
extern "C" __EXPORT int batt_smbus_main(int argc, char *argv[]);
|
||||
|
||||
@ -57,6 +58,12 @@ struct batt_smbus_bus_option {
|
||||
BATT_SMBUS *dev;
|
||||
} bus_options[] = {
|
||||
{ BATT_SMBUS_BUS_I2C_EXTERNAL, "/dev/batt_smbus_ext", &BATT_SMBUS_I2C_interface, PX4_I2C_BUS_EXPANSION, nullptr },
|
||||
#ifdef PX4_I2C_BUS_EXPANSION1
|
||||
{ BATT_SMBUS_BUS_I2C_EXTERNAL, "/dev/batt_smbus_ext1", &BATT_SMBUS_I2C_interface, PX4_I2C_BUS_EXPANSION1, nullptr },
|
||||
#endif
|
||||
#ifdef PX4_I2C_BUS_EXPANSION2
|
||||
{ BATT_SMBUS_BUS_I2C_EXTERNAL, "/dev/batt_smbus_ext2", &BATT_SMBUS_I2C_interface, PX4_I2C_BUS_EXPANSION2, nullptr },
|
||||
#endif
|
||||
#ifdef PX4_I2C_BUS_ONBOARD
|
||||
{ BATT_SMBUS_BUS_I2C_INTERNAL, "/dev/batt_smbus_int", &BATT_SMBUS_I2C_interface, PX4_I2C_BUS_ONBOARD, nullptr },
|
||||
#endif
|
||||
@ -116,6 +123,7 @@ bool start_bus(struct batt_smbus_bus_option &bus)
|
||||
int start(enum BATT_SMBUS_BUS busid)
|
||||
{
|
||||
for (unsigned i = 0; i < NUM_BUS_OPTIONS; i++) {
|
||||
|
||||
if (busid == BATT_SMBUS_BUS_ALL && bus_options[i].dev != nullptr) {
|
||||
// This device is already started.
|
||||
PX4_INFO("Smart battery %d already started", bus_options[i].dev);
|
||||
@ -132,7 +140,11 @@ int start(enum BATT_SMBUS_BUS busid)
|
||||
}
|
||||
|
||||
PX4_INFO("Smart battery failed to start");
|
||||
return PX4_ERROR;
|
||||
|
||||
if (busid != BATT_SMBUS_BUS_ALL) {
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return PX4_ERROR;
|
||||
@ -285,11 +297,12 @@ int
|
||||
batt_smbus_main(int argc, char *argv[])
|
||||
{
|
||||
enum BATT_SMBUS_BUS busid = BATT_SMBUS_BUS_I2C_EXTERNAL;
|
||||
int myoptind = 1;
|
||||
int ch;
|
||||
|
||||
const char* myoptarg = nullptr;
|
||||
|
||||
// Jump over start/off/etc and look at options first.
|
||||
while ((ch = getopt(argc, argv, "XIA:")) != EOF) {
|
||||
while ((ch = px4_getopt(argc, argv, "XIA",&myoptind,&myoptarg)) != EOF) {
|
||||
switch (ch) {
|
||||
case 'X':
|
||||
busid = BATT_SMBUS_BUS_I2C_EXTERNAL;
|
||||
@ -309,7 +322,7 @@ batt_smbus_main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
const char *input = argv[optind];
|
||||
const char *input = argv[myoptind];
|
||||
|
||||
if(!input) {
|
||||
batt_smbus::usage("Please enter an appropriate command.");
|
||||
@ -518,4 +531,4 @@ batt_smbus_main(int argc, char *argv[])
|
||||
|
||||
batt_smbus::usage("unrecognized argument");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user