summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2018-10-19 08:12:22 -0700
committerKeith Packard <keithp@keithp.com>2018-10-19 08:37:56 -0700
commit80affca535c5c43a5d9963dfafc74f9675c9b155 (patch)
tree7d479a5246552cc5e86a216099d1dc06361f5419
parentfacf790f469df374257440ba9482321cbab7cecb (diff)
altos: Create ao_data_fill shared function
This fills a data ring entry with all of the current sensor values other than the ADC. It is used in all of the adc completion functions. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--src/kernel/ao_data.h28
-rw-r--r--src/lpc/ao_adc_lpc.c18
-rw-r--r--src/stm/ao_adc_stm.c21
-rw-r--r--src/stmf0/ao_adc_stm.c18
4 files changed, 31 insertions, 54 deletions
diff --git a/src/kernel/ao_data.h b/src/kernel/ao_data.h
index f88b30c9..97f7e06e 100644
--- a/src/kernel/ao_data.h
+++ b/src/kernel/ao_data.h
@@ -400,4 +400,32 @@ typedef int16_t ao_mag_t; /* in raw sample units */
#endif
+#ifdef AO_DATA_RING
+
+static inline void
+ao_data_fill(int head) {
+ if (ao_data_present == AO_DATA_ALL) {
+#if HAS_MS5607
+ ao_data_ring[head].ms5607_raw = ao_ms5607_current;
+#endif
+#if HAS_MMA655X
+ ao_data_ring[head].mma655x = ao_mma655x_current;
+#endif
+#if HAS_HMC5883
+ ao_data_ring[head].hmc5883 = ao_hmc5883_current;
+#endif
+#if HAS_MPU6000
+ ao_data_ring[head].mpu6000 = ao_mpu6000_current;
+#endif
+#if HAS_MPU9250
+ ao_data_ring[head].mpu9250 = ao_mpu9250_current;
+#endif
+ ao_data_ring[head].tick = ao_tick_count;
+ ao_data_head = ao_data_ring_next(head);
+ ao_wakeup((void *) &ao_data_head);
+ }
+}
+
+#endif
+
#endif /* _AO_DATA_H_ */
diff --git a/src/lpc/ao_adc_lpc.c b/src/lpc/ao_adc_lpc.c
index 6743c1f4..63241559 100644
--- a/src/lpc/ao_adc_lpc.c
+++ b/src/lpc/ao_adc_lpc.c
@@ -112,23 +112,7 @@ void lpc_adc_isr(void)
}
AO_DATA_PRESENT(AO_DATA_ADC);
- if (ao_data_present == AO_DATA_ALL) {
-#if HAS_MS5607
- ao_data_ring[ao_data_head].ms5607_raw = ao_ms5607_current;
-#endif
-#if HAS_MMA655X
- ao_data_ring[ao_data_head].mma655x = ao_mma655x_current;
-#endif
-#if HAS_HMC5883
- ao_data_ring[ao_data_head].hmc5883 = ao_hmc5883_current;
-#endif
-#if HAS_MPU6000
- ao_data_ring[ao_data_head].mpu6000 = ao_mpu6000_current;
-#endif
- ao_data_ring[ao_data_head].tick = ao_tick_count;
- ao_data_head = ao_data_ring_next(ao_data_head);
- ao_wakeup((void *) &ao_data_head);
- }
+ ao_data_fill(ao_data_head);
ao_adc_ready = 1;
}
diff --git a/src/stm/ao_adc_stm.c b/src/stm/ao_adc_stm.c
index 2399e6a2..ffdcccc0 100644
--- a/src/stm/ao_adc_stm.c
+++ b/src/stm/ao_adc_stm.c
@@ -45,26 +45,7 @@ static void ao_adc_done(int index)
(void) index;
AO_DATA_PRESENT(AO_DATA_ADC);
ao_dma_done_transfer(STM_DMA_INDEX(STM_DMA_CHANNEL_ADC1));
- if (ao_data_present == AO_DATA_ALL) {
-#if HAS_MS5607
- ao_data_ring[ao_data_head].ms5607_raw = ao_ms5607_current;
-#endif
-#if HAS_MMA655X
- ao_data_ring[ao_data_head].mma655x = ao_mma655x_current;
-#endif
-#if HAS_HMC5883
- ao_data_ring[ao_data_head].hmc5883 = ao_hmc5883_current;
-#endif
-#if HAS_MPU6000
- ao_data_ring[ao_data_head].mpu6000 = ao_mpu6000_current;
-#endif
-#if HAS_MPU9250
- ao_data_ring[ao_data_head].mpu9250 = ao_mpu9250_current;
-#endif
- ao_data_ring[ao_data_head].tick = ao_tick_count;
- ao_data_head = ao_data_ring_next(ao_data_head);
- ao_wakeup((void *) &ao_data_head);
- }
+ ao_data_fill(ao_data_head);
ao_adc_ready = 1;
}
diff --git a/src/stmf0/ao_adc_stm.c b/src/stmf0/ao_adc_stm.c
index e62bb16e..d48726a1 100644
--- a/src/stmf0/ao_adc_stm.c
+++ b/src/stmf0/ao_adc_stm.c
@@ -38,23 +38,7 @@ static void ao_adc_done(int index)
AO_DATA_PRESENT(AO_DATA_ADC);
ao_dma_done_transfer(STM_DMA_INDEX(STM_DMA_CHANNEL_ADC_1));
- if (ao_data_present == AO_DATA_ALL) {
-#if HAS_MS5607
- ao_data_ring[ao_data_head].ms5607_raw = ao_ms5607_current;
-#endif
-#if HAS_MMA655X
- ao_data_ring[ao_data_head].mma655x = ao_mma655x_current;
-#endif
-#if HAS_HMC5883
- ao_data_ring[ao_data_head].hmc5883 = ao_hmc5883_current;
-#endif
-#if HAS_MPU6000
- ao_data_ring[ao_data_head].mpu6000 = ao_mpu6000_current;
-#endif
- ao_data_ring[ao_data_head].tick = ao_tick_count;
- ao_data_head = ao_data_ring_next(ao_data_head);
- ao_wakeup((void *) &ao_data_head);
- }
+ ao_data_fill(ao_data_head);
ao_adc_ready = 1;
}