altos: Clean up cc1111 architecture macros a bit, removing cli/sei
[fw/altos] / src / cc1111 / ao_arch.h
index 9d0643b4ba4f0f7d0135b7b81b4a45859d619a60..39468e061c5ed64b4586db9ca7a14cdb87c7efd1 100644 (file)
 
 #define AO_ROMCONFIG_VERSION   2
 
-extern __code __at (0x00a0) uint16_t ao_romconfig_version;
-extern __code __at (0x00a2) uint16_t ao_romconfig_check;
-extern __code __at (0x00a4) uint16_t ao_serial_number;
-extern __code __at (0x00a6) uint32_t ao_radio_cal;
+#define AO_ROMCONFIG_SYMBOL(a) __code __at(a)
+
+extern AO_ROMCONFIG_SYMBOL(0x00a0) uint16_t ao_romconfig_version;
+extern AO_ROMCONFIG_SYMBOL(0x00a2) uint16_t ao_romconfig_check;
+extern AO_ROMCONFIG_SYMBOL(0x00a4) uint16_t ao_serial_number;
+extern AO_ROMCONFIG_SYMBOL(0x00a6) uint32_t ao_radio_cal;
 
 #ifndef HAS_USB
 #error Please define HAS_USB
@@ -145,11 +147,13 @@ extern __code __at (0x00a6) uint32_t ao_radio_cal;
                while (--stack_len);                                    \
        }
 
-#define ao_arch_isr_stack()                                            \
-       /* Empty the stack; might as well let interrupts have the whole thing */ \
-       (SP = AO_STACK_START - 1)
+/* Empty the stack; might as well let interrupts have the whole thing */
+#define ao_arch_isr_stack()            (SP = AO_STACK_START - 1)
 
-#define ao_arch_cpu_idle()     (PCON = PCON_IDLE)
+/* Idle the CPU, waking when an interrupt occurs */
+#define ao_arch_cpu_idle()             (PCON = PCON_IDLE)
+#define ao_arch_block_interrupts()     __asm clr _EA __endasm
+#define ao_arch_release_interrupts()   __asm setb _EA __endasm
 
 #define ao_arch_restore_stack() {                                      \
                uint8_t stack_len;                                      \
@@ -190,7 +194,7 @@ extern __code __at (0x00a6) uint32_t ao_radio_cal;
                0098$:                                                  \
                        SETB            _EA                             \
                0099$:                                                  \
-               /* Finally pop off the ACC, which was the first register saved. */ \
+               /* Finally restore ACC, which was the first register saved. */ \
                pop             ACC                                     \
                ret                                                     \
                __endasm;                                               \
@@ -198,17 +202,7 @@ extern __code __at (0x00a6) uint32_t ao_radio_cal;
 
 #define ao_arch_critical(b) __critical { b }
 
-struct ao_adc {
-       uint16_t        tick;           /* tick when the sample was read */
-       int16_t         accel;          /* accelerometer */
-       int16_t         pres;           /* pressure sensor */
-       int16_t         temp;           /* temperature sensor */
-       int16_t         v_batt;         /* battery voltage */
-       int16_t         sense_d;        /* drogue continuity sense */
-       int16_t         sense_m;        /* main continuity sense */
-};
-
-#define AO_ADC_RING    32
+#define AO_DATA_RING   32
 
 /* ao_button.c */
 #ifdef HAS_BUTTON
@@ -237,17 +231,17 @@ ao_button_clear(void) __critical;
 /* ao_string.c */
 
 void
-_ao_xmemcpy(__xdata void *dst, __xdata void *src, uint8_t count);
+_ao_xmemcpy(__xdata void *dst, __xdata void *src, uint16_t count);
 
 #define ao_xmemcpy(d,s,c) _ao_xmemcpy(d,s,c)
 
 void
-_ao_xmemset(__xdata void *dst, uint8_t value, uint8_t count);
+_ao_xmemset(__xdata void *dst, uint8_t value, uint16_t count);
 
 #define ao_xmemset(d,v,c) _ao_xmemset(d,v,c)
 
 int8_t
-_ao_xmemcmp(__xdata void *a, __xdata void *b, uint8_t count);
+_ao_xmemcmp(__xdata void *a, __xdata void *b, uint16_t count);
 
 #define ao_xmemcmp(d,s,c) _ao_xmemcmp((d), (s), (c))