altos: Shrink ao_config_callsign_set
[fw/altos] / src / ao_adc.c
index ce935716a1142b2d3be4a7bc1106ccca5f0e63e8..cbeb6a24e5b13b141878fea484dfc2d77459f4a5 100644 (file)
@@ -30,14 +30,18 @@ ao_adc_poll(void)
 #if HAS_ACCEL_REF
        ADCCON3 = ADCCON3_EREF_VDD | ADCCON3_EDIV_512 | 2;
 #else
+# ifdef TELENANO_V_0_1
+       ADCCON3 = ADCCON3_EREF_VDD | ADCCON3_EDIV_512 | 1;
+# else
        ADCCON3 = ADCCON3_EREF_VDD | ADCCON3_EDIV_512 | 0;
+# endif
 #endif
 }
 
 void
 ao_adc_get(__xdata struct ao_adc *packet)
 {
-       uint8_t i = ao_adc_ring_prev(ao_flight_adc);
+       uint8_t i = ao_adc_ring_prev(ao_sample_adc);
        memcpy(packet, &ao_adc_ring[i], sizeof (struct ao_adc));
 }
 
@@ -62,6 +66,7 @@ ao_adc_isr(void) __interrupt 1
                a = (uint8_t __xdata *) (&ao_adc_ring[ao_adc_head].accel + sequence);
                sequence++;
        }
+#define GOT_ADC
        a[0] = ADCL;
        a[1] = ADCH;
        if (sequence < 6) {
@@ -79,6 +84,7 @@ ao_adc_isr(void) __interrupt 1
 #if IGNITE_ON_P0
        /* TeleMini readings */
        a = (uint8_t __xdata *) (&ao_adc_ring[ao_adc_head].pres);
+#ifdef TELEMINI_V_0_1
        switch (sequence) {
        case 0:
                /* pressure */
@@ -105,12 +111,36 @@ ao_adc_isr(void) __interrupt 1
                sequence = 0;
                break;
        }
+#define GOT_ADC
+#endif
+#ifdef TELENANO_V_0_1
+       switch (sequence) {
+       case 1:
+               /* pressure */
+               a += 0;
+               sequence = ADCCON3_EREF_VDD | ADCCON3_EDIV_512 | 3;
+               break;
+       case 3:
+               /* battery */
+               a += 4;
+               sequence = ADCCON3_EREF_1_25 | ADCCON3_EDIV_512 | ADCCON3_ECH_TEMP;
+               break;
+       case ADCCON3_ECH_TEMP:
+               a += 2;
+               sequence = 0;
+               break;
+       }
+#define GOT_ADC
+#endif
        a[0] = ADCL;
        a[1] = ADCH;
        if (sequence) {
                /* Start next conversion */
                ADCCON3 = sequence;
        }
+#endif
+#ifndef GOT_ADC
+#error No known ADC configuration set
 #endif
 
        else {
@@ -132,7 +162,7 @@ ao_adc_dump(void) __reentrant
 }
 
 __code struct ao_cmds ao_adc_cmds[] = {
-       { ao_adc_dump,  "a\0Display current ADC values" },
+       { ao_adc_dump,  "a\0Current ADC" },
        { 0, NULL },
 };