altos: Make telemetrum-v1.1 compile with new ao_data structure
[fw/altos] / src / cc1111 / ao_ignite.c
index 5238beb4315663950e717f98629168b05bc4a419..cf07dfe8ee212b373834660935e64b135a9e350f 100644 (file)
  */
 
 #include "ao.h"
-
-#if IGNITE_ON_P2
-#define AO_IGNITER_DROGUE      P2_3
-#define AO_IGNITER_MAIN                P2_4
-#define AO_IGNITER_DIR         P2DIR
-#define AO_IGNITER_DROGUE_BIT  (1 << 3)
-#define AO_IGNITER_MAIN_BIT    (1 << 4)
-#endif
-
-#if IGNITE_ON_P0
-#define AO_IGNITER_DROGUE      P0_5
-#define AO_IGNITER_MAIN                P0_4
-#define AO_IGNITER_DIR         P0DIR
-#define AO_IGNITER_DROGUE_BIT  (1 << 5)
-#define AO_IGNITER_MAIN_BIT    (1 << 4)
-#endif
-
-/* test these values with real igniters */
-#define AO_IGNITER_OPEN                1000
-#define AO_IGNITER_CLOSED      7000
-#define AO_IGNITER_FIRE_TIME   AO_MS_TO_TICKS(50)
-#define AO_IGNITER_CHARGE_TIME AO_MS_TO_TICKS(2000)
-
-struct ao_ignition {
-       uint8_t request;
-       uint8_t fired;
-       uint8_t firing;
-};
+#include <ao_data.h>
 
 __xdata struct ao_ignition ao_ignition[2];
 
@@ -57,12 +30,12 @@ ao_ignite(enum ao_igniter igniter) __critical
 enum ao_igniter_status
 ao_igniter_status(enum ao_igniter igniter)
 {
-       __xdata struct ao_adc adc;
+       __xdata struct ao_data packet;
        __pdata int16_t value;
        __pdata uint8_t request, firing, fired;
 
        __critical {
-               ao_adc_get(&adc);
+               ao_data_get(&packet);
                request = ao_ignition[igniter].request;
                fired = ao_ignition[igniter].fired;
                firing = ao_ignition[igniter].firing;
@@ -73,10 +46,10 @@ ao_igniter_status(enum ao_igniter igniter)
        value = (AO_IGNITER_CLOSED>>1);
        switch (igniter) {
        case ao_igniter_drogue:
-               value = adc.sense_d;
+               value = packet.adc.sense_d;
                break;
        case ao_igniter_main:
-               value = adc.sense_m;
+               value = packet.adc.sense_m;
                break;
        }
        if (value < AO_IGNITER_OPEN)
@@ -90,6 +63,7 @@ ao_igniter_status(enum ao_igniter igniter)
 void
 ao_igniter_fire(enum ao_igniter igniter) __critical
 {
+       ao_mutex_get(&ao_radio_mutex);
        ao_ignition[igniter].firing = 1;
        switch(ao_config.ignite_mode) {
        case AO_IGNITE_MODE_DUAL:
@@ -134,6 +108,7 @@ ao_igniter_fire(enum ao_igniter igniter) __critical
                break;
        }
        ao_ignition[igniter].firing = 0;
+       ao_mutex_put(&ao_radio_mutex);
 }
 
 void