diff --git a/conf/settings/modules/airspeed_analog.xml b/conf/settings/modules/airspeed_analog.xml
new file mode 100644
index 0000000000..ae6b4c22be
--- /dev/null
+++ b/conf/settings/modules/airspeed_analog.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sw/airborne/modules/sensors/airspeed_adc.c b/sw/airborne/modules/sensors/airspeed_adc.c
index af9955437e..1cfc3a7764 100644
--- a/sw/airborne/modules/sensors/airspeed_adc.c
+++ b/sw/airborne/modules/sensors/airspeed_adc.c
@@ -26,6 +26,9 @@
#include "generated/airframe.h"
#include "state.h"
+uint16_t airspeed_offset = AIRSPEED_BIAS;
+float airspeed_quadratic_scale = AIRSPEED_QUADRATIC_SCALE;
+
uint16_t adc_airspeed_val;
#ifndef SITL // Use ADC if not in simulation
@@ -52,12 +55,12 @@ void airspeed_adc_update( void ) {
#ifndef SITL
adc_airspeed_val = buf_airspeed.sum / buf_airspeed.av_nb_sample;
#ifdef AIRSPEED_QUADRATIC_SCALE
- float airspeed = (adc_airspeed_val - AIRSPEED_BIAS);
+ float airspeed = (adc_airspeed_val - airspeed_offset);
if (airspeed <= 0.0f)
airspeed = 0.0f;
- airspeed = sqrtf(airspeed) * AIRSPEED_QUADRATIC_SCALE;
+ airspeed = sqrtf(airspeed) * airspeed_quadratic_scale;
#else
- float airspeed = AIRSPEED_SCALE * (adc_airspeed_val - AIRSPEED_BIAS);
+ float airspeed = AIRSPEED_SCALE * (adc_airspeed_val - airspeed_offset);
#endif
stateSetAirspeed_f(&airspeed);
#elif !defined USE_NPS
diff --git a/sw/airborne/modules/sensors/airspeed_adc.h b/sw/airborne/modules/sensors/airspeed_adc.h
index 2636a024e0..939bd4375c 100644
--- a/sw/airborne/modules/sensors/airspeed_adc.h
+++ b/sw/airborne/modules/sensors/airspeed_adc.h
@@ -25,6 +25,9 @@
#include
+extern uint16_t airspeed_offset;
+extern float airspeed_quadratic_scale;
+
extern uint16_t adc_airspeed_val;
void airspeed_adc_init( void );