altos: Add ao_arch_block/release_interrupts to avr and cc1111
[fw/altos] / src / cc1111 / ao_arch.h
index 44116b812d9a07820a41c99d24089e1790ebc5b5..f2442eb69775c36a98d54df3ca543731fb35c65c 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
@@ -151,6 +153,11 @@ extern __code __at (0x00a6) uint32_t ao_radio_cal;
 
 #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 cli() ao_arch_block_interrupts()
+#define sei() ao_arch_release_interrupts()
+
 #define ao_arch_restore_stack() {                                      \
                uint8_t stack_len;                                      \
                __data uint8_t *stack_ptr;                              \
@@ -198,16 +205,6 @@ extern __code __at (0x00a6) uint32_t ao_radio_cal;
 
 #define ao_arch_critical(b) __critical { b }
 
-struct ao_adc {
-       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 */
-       int16_t         accel_ref;      /* acceleration reference */
-};
-
 #define AO_DATA_RING   32
 
 /* ao_button.c */
@@ -237,17 +234,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))