forked from Archive/PX4-Autopilot
lsm303d: added 'lsm303d regdump' command
useful for diagnosing issues
This commit is contained in:
parent
39634d1001
commit
93f3398dfe
|
@ -201,6 +201,11 @@ public:
|
||||||
*/
|
*/
|
||||||
void print_info();
|
void print_info();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* dump register values
|
||||||
|
*/
|
||||||
|
void print_registers();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual int probe();
|
virtual int probe();
|
||||||
|
|
||||||
|
@ -1380,6 +1385,30 @@ LSM303D::print_info()
|
||||||
_mag_reports->print_info("mag reports");
|
_mag_reports->print_info("mag reports");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
LSM303D::print_registers()
|
||||||
|
{
|
||||||
|
const struct {
|
||||||
|
uint8_t reg;
|
||||||
|
const char *name;
|
||||||
|
} regmap[] = {
|
||||||
|
{ ADDR_WHO_AM_I, "WHO_AM_I" },
|
||||||
|
{ ADDR_STATUS_A, "STATUS_A" },
|
||||||
|
{ ADDR_STATUS_M, "STATUS_M" },
|
||||||
|
{ ADDR_CTRL_REG0, "CTRL_REG0" },
|
||||||
|
{ ADDR_CTRL_REG1, "CTRL_REG1" },
|
||||||
|
{ ADDR_CTRL_REG2, "CTRL_REG2" },
|
||||||
|
{ ADDR_CTRL_REG3, "CTRL_REG3" },
|
||||||
|
{ ADDR_CTRL_REG4, "CTRL_REG4" },
|
||||||
|
{ ADDR_CTRL_REG5, "CTRL_REG5" },
|
||||||
|
{ ADDR_CTRL_REG6, "CTRL_REG6" },
|
||||||
|
{ ADDR_CTRL_REG7, "CTRL_REG7" },
|
||||||
|
};
|
||||||
|
for (uint8_t i=0; i<sizeof(regmap)/sizeof(regmap[0]); i++) {
|
||||||
|
printf("0x%02x %s\n", read_reg(regmap[i].reg), regmap[i].name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
LSM303D_mag::LSM303D_mag(LSM303D *parent) :
|
LSM303D_mag::LSM303D_mag(LSM303D *parent) :
|
||||||
CDev("LSM303D_mag", MAG_DEVICE_PATH),
|
CDev("LSM303D_mag", MAG_DEVICE_PATH),
|
||||||
_parent(parent)
|
_parent(parent)
|
||||||
|
@ -1432,6 +1461,7 @@ void start();
|
||||||
void test();
|
void test();
|
||||||
void reset();
|
void reset();
|
||||||
void info();
|
void info();
|
||||||
|
void regdump();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start the driver.
|
* Start the driver.
|
||||||
|
@ -1603,6 +1633,21 @@ info()
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* dump registers from device
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
regdump()
|
||||||
|
{
|
||||||
|
if (g_dev == nullptr)
|
||||||
|
errx(1, "driver not running\n");
|
||||||
|
|
||||||
|
printf("regdump @ %p\n", g_dev);
|
||||||
|
g_dev->print_registers();
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
@ -1634,5 +1679,11 @@ lsm303d_main(int argc, char *argv[])
|
||||||
if (!strcmp(argv[1], "info"))
|
if (!strcmp(argv[1], "info"))
|
||||||
lsm303d::info();
|
lsm303d::info();
|
||||||
|
|
||||||
errx(1, "unrecognized command, try 'start', 'test', 'reset' or 'info'");
|
/*
|
||||||
|
* dump device registers
|
||||||
|
*/
|
||||||
|
if (!strcmp(argv[1], "regdump"))
|
||||||
|
lsm303d::regdump();
|
||||||
|
|
||||||
|
errx(1, "unrecognized command, try 'start', 'test', 'reset', 'info' or 'regdump'");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue