88
99#include < math.h>
1010
11- namespace {
12- constexpr uint8_t kLsm303agrAccelDefaultAddr = LSM303_ADDRESS_ACCEL;
13- constexpr uint8_t kLsm303agrMagDefaultAddr = 0x1E ; // LIS2MDL address
14- }
11+ #define LSM303AGR_ACCEL_DEFAULT_ADDR LSM303_ADDRESS_ACCEL
12+ #define LSM303AGR_MAG_DEFAULT_ADDR 0x1E // /< LIS2MDL default address
1513
1614/* *****************************************************************************/
17- /* !
15+ /* !
1816 @brief Destructor for the LSM303AGR driver wrapper.
1917*/
2018/* *****************************************************************************/
2119drvLsm303agr::~drvLsm303agr () { teardown (); }
2220
2321/* *****************************************************************************/
24- /* !
22+ /* !
2523 @brief Releases any allocated accelerometer or magnetometer instances.
2624*/
2725/* *****************************************************************************/
@@ -37,7 +35,7 @@ void drvLsm303agr::teardown() {
3735}
3836
3937/* *****************************************************************************/
40- /* !
38+ /* !
4139 @brief Initializes the LSM303AGR accelerometer and LIS2MDL magnetometer.
4240 @returns True if initialization succeeded, False otherwise.
4341*/
@@ -52,8 +50,10 @@ bool drvLsm303agr::begin() {
5250 return false ;
5351 }
5452
53+ // TODO: if _address isn't default (or alt), shift mag by same offset.
54+ // to support adress translators. Alternatively compound components.
5555 const uint8_t accel_addr =
56- _address == 0 ? kLsm303agrAccelDefaultAddr : (uint8_t )_address;
56+ _address == 0 ? LSM303AGR_ACCEL_DEFAULT_ADDR : (uint8_t )_address;
5757
5858 WS_DEBUG_PRINT (" [drvLsm303agr] Initialising accel @ 0x" );
5959 WS_DEBUG_PRINTHEX (accel_addr);
@@ -67,9 +67,9 @@ bool drvLsm303agr::begin() {
6767 _accel->setMode (LSM303_MODE_HIGH_RESOLUTION);
6868
6969 WS_DEBUG_PRINT (" [drvLsm303agr] Initialising magnetometer @ 0x" );
70- WS_DEBUG_PRINTHEX (kLsm303agrMagDefaultAddr );
70+ WS_DEBUG_PRINTHEX (LSM303AGR_MAG_DEFAULT_ADDR );
7171 WS_DEBUG_PRINTLN (" ..." );
72- if (!_mag->begin (kLsm303agrMagDefaultAddr , _i2c)) {
72+ if (!_mag->begin (LSM303AGR_MAG_DEFAULT_ADDR , _i2c)) {
7373 WS_DEBUG_PRINTLN (" [drvLsm303agr] Failed to initialise LIS2MDL" );
7474 teardown ();
7575 return false ;
@@ -83,7 +83,7 @@ bool drvLsm303agr::begin() {
8383}
8484
8585/* *****************************************************************************/
86- /* !
86+ /* !
8787 @brief Computes the magnitude of the accelerometer vector.
8888 @param magnitude Reference to store the computed m/s^2 value.
8989 @returns True if the accelerometer event was retrieved successfully.
@@ -104,7 +104,7 @@ bool drvLsm303agr::computeAccelMagnitude(float &magnitude) {
104104}
105105
106106/* *****************************************************************************/
107- /* !
107+ /* !
108108 @brief Fills the raw event with the accelerometer magnitude in data[0].
109109 @param rawEvent Pointer to the destination sensor event.
110110 @returns True if the magnitude was computed successfully.
@@ -120,7 +120,7 @@ bool drvLsm303agr::getEventRaw(sensors_event_t *rawEvent) {
120120}
121121
122122/* *****************************************************************************/
123- /* !
123+ /* !
124124 @brief Retrieves the 3-axis accelerometer event.
125125 @param accelEvent Pointer to the destination sensor event.
126126 @returns True if the event was populated successfully.
@@ -134,7 +134,7 @@ bool drvLsm303agr::getEventAccelerometer(sensors_event_t *accelEvent) {
134134}
135135
136136/* *****************************************************************************/
137- /* !
137+ /* !
138138 @brief Retrieves the 3-axis magnetic field event.
139139 @param magEvent Pointer to the destination sensor event.
140140 @returns True if the event was populated successfully.
@@ -148,7 +148,7 @@ bool drvLsm303agr::getEventMagneticField(sensors_event_t *magEvent) {
148148}
149149
150150/* *****************************************************************************/
151- /* !
151+ /* !
152152 @brief Registers the driver's default accelerometer and magnetometer types.
153153*/
154154/* *****************************************************************************/
0 commit comments