From 427335c5264794d980623f0aa308d6e0b3ff0042 Mon Sep 17 00:00:00 2001 From: Michael Buesch Date: Fri, 29 May 2009 17:55:31 +0200 Subject: pressure-control: Fix APIs for multiple sensors Signed-off-by: Michael Buesch --- pressure_control/firmware/sensor.h | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'pressure_control/firmware/sensor.h') diff --git a/pressure_control/firmware/sensor.h b/pressure_control/firmware/sensor.h index a6230ad..8f3c4e5 100644 --- a/pressure_control/firmware/sensor.h +++ b/pressure_control/firmware/sensor.h @@ -4,10 +4,33 @@ #include -void sensor_trigger_read(void); -void sensor_init(void); +struct sensor { + /* ADMUX */ + uint8_t adc_mux; + /* The sensor value offset, in millivolts. + * This value is subtracted from the measured voltage before + * processing. */ + uint16_t mv_offset; + /* The Full Scale Output (maximum) output value of the sensor, + * in millivolts. */ + uint16_t full_scale_mv; + /* The pressure at Full Scale Output, in millibar. */ + uint16_t full_scale_mbar; +}; + +#define DEFINE_SENSOR(name, mux, _mv_offset, _full_scale_mv, _full_scale_mbar) \ + struct sensor name = { \ + .adc_mux = mux, \ + .mv_offset = _mv_offset, \ + .full_scale_mv = _full_scale_mv, \ + .full_scale_mbar = _full_scale_mbar, \ + } + +void sensor_trigger_read(struct sensor *s); +void sensor_init(struct sensor *s); /* Callback for sensor value reporting. */ -extern void sensor_result(uint16_t millibar_result_value); +extern void sensor_result(struct sensor *s, + uint16_t millibar_result_value); #endif /* SENSOR_H_ */ -- cgit v1.2.3