Skip to content
Snippets Groups Projects
Commit c323a719 authored by Craig Elder's avatar Craig Elder
Browse files

AP_InertialSensor: Return product ID from sensor initialization

this exposes the product ID to the IMU Layer
parent a22b15ad
No related branches found
No related tags found
No related merge requests found
...@@ -13,7 +13,7 @@ class AP_InertialSensor ...@@ -13,7 +13,7 @@ class AP_InertialSensor
public: public:
AP_InertialSensor() {} AP_InertialSensor() {}
virtual void init( AP_PeriodicProcess * scheduler ) = 0; virtual uint16_t init( AP_PeriodicProcess * scheduler ) = 0;
/* Update the sensor data, so that getters are nonblocking. /* Update the sensor data, so that getters are nonblocking.
* Returns a bool of whether data was updated or not. * Returns a bool of whether data was updated or not.
......
...@@ -119,14 +119,15 @@ AP_InertialSensor_MPU6000::AP_InertialSensor_MPU6000( uint8_t cs_pin ) ...@@ -119,14 +119,15 @@ AP_InertialSensor_MPU6000::AP_InertialSensor_MPU6000( uint8_t cs_pin )
_initialised = 0; _initialised = 0;
} }
void AP_InertialSensor_MPU6000::init( AP_PeriodicProcess * scheduler ) uint16_t AP_InertialSensor_MPU6000::init( AP_PeriodicProcess * scheduler )
{ {
if (_initialised) return; if (_initialised) return _product_id;
_initialised = 1; _initialised = 1;
scheduler->suspend_timer(); scheduler->suspend_timer();
hardware_init(); hardware_init();
scheduler->resume_timer(); scheduler->resume_timer();
scheduler->register_process( &AP_InertialSensor_MPU6000::read ); scheduler->register_process( &AP_InertialSensor_MPU6000::read );
return _product_id;
} }
// accumulation in ISR - must be read with interrupts disabled // accumulation in ISR - must be read with interrupts disabled
......
...@@ -16,7 +16,7 @@ class AP_InertialSensor_MPU6000 : public AP_InertialSensor ...@@ -16,7 +16,7 @@ class AP_InertialSensor_MPU6000 : public AP_InertialSensor
AP_InertialSensor_MPU6000( uint8_t cs_pin ); AP_InertialSensor_MPU6000( uint8_t cs_pin );
void init( AP_PeriodicProcess * scheduler ); uint16_t init( AP_PeriodicProcess * scheduler );
/* Concrete implementation of AP_InertialSensor functions: */ /* Concrete implementation of AP_InertialSensor functions: */
bool update(); bool update();
......
...@@ -48,9 +48,17 @@ AP_InertialSensor_Oilpan::AP_InertialSensor_Oilpan( AP_ADC * adc ) : ...@@ -48,9 +48,17 @@ AP_InertialSensor_Oilpan::AP_InertialSensor_Oilpan( AP_ADC * adc ) :
_accel.z = 0; _accel.z = 0;
} }
void AP_InertialSensor_Oilpan::init( AP_PeriodicProcess * scheduler) uint16_t AP_InertialSensor_Oilpan::init( AP_PeriodicProcess * scheduler)
{ {
_adc->Init(scheduler); _adc->Init(scheduler);
#if defined(DESKTOP_BUILD)
return AP_PRODUCT_ID_SITL;
#elif defined(__AVR_ATmega1280__)
return AP_PRODUCT_ID_APM1_1280;
#else
return AP_PRODUCT_ID_APM1_2560;
#endif
} }
bool AP_InertialSensor_Oilpan::update() bool AP_InertialSensor_Oilpan::update()
......
...@@ -17,7 +17,7 @@ class AP_InertialSensor_Oilpan : public AP_InertialSensor ...@@ -17,7 +17,7 @@ class AP_InertialSensor_Oilpan : public AP_InertialSensor
AP_InertialSensor_Oilpan( AP_ADC * adc ); AP_InertialSensor_Oilpan( AP_ADC * adc );
/* Concrete implementation of AP_InertialSensor functions: */ /* Concrete implementation of AP_InertialSensor functions: */
void init(AP_PeriodicProcess * scheduler); uint16_t init(AP_PeriodicProcess * scheduler);
bool update(); bool update();
bool new_data_available(); bool new_data_available();
float gx(); float gx();
......
...@@ -2,7 +2,9 @@ ...@@ -2,7 +2,9 @@
#include "AP_InertialSensor_Stub.h" #include "AP_InertialSensor_Stub.h"
void AP_InertialSensor_Stub::init( AP_PeriodicProcess * scheduler ) {} uint16_t AP_InertialSensor_Stub::init( AP_PeriodicProcess * scheduler ) {
return AP_PRODUCT_ID_NONE;
}
/*================ AP_INERTIALSENSOR PUBLIC INTERFACE ==================== */ /*================ AP_INERTIALSENSOR PUBLIC INTERFACE ==================== */
......
...@@ -15,7 +15,7 @@ class AP_InertialSensor_Stub : public AP_InertialSensor ...@@ -15,7 +15,7 @@ class AP_InertialSensor_Stub : public AP_InertialSensor
AP_InertialSensor_Stub() {} AP_InertialSensor_Stub() {}
void init( AP_PeriodicProcess * scheduler ); uint16_t init( AP_PeriodicProcess * scheduler );
/* Concrete implementation of AP_InertialSensor functions: */ /* Concrete implementation of AP_InertialSensor functions: */
bool update(); bool update();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment