altos/attiny: Add ADC implementation
[fw/altos] / src / attiny / ao_arch.h
index c34206e6cc8aef6c0550484e61320df69c61de77..68f5702d78e104293bf0b853b91dcf383f768035 100644 (file)
@@ -3,7 +3,8 @@
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -31,6 +32,8 @@
 
 #define AO_STACK_SIZE  116
 
+#define AO_PORT_TYPE   uint8_t
+
 /* Various definitions to make GCC look more like SDCC */
 
 #define ao_arch_naked_declare  __attribute__((naked))
@@ -55,7 +58,7 @@
 #define putchar(c)     ao_putchar(c)
 #define getchar                ao_getchar
 
-#define ao_arch_cpu_idle() do {                        \
+#define ao_arch_wait_interrupt() do {          \
                sleep_enable();                 \
                sei();                          \
                sleep_cpu();                    \
@@ -64,6 +67,9 @@
 
 #define ao_arch_critical(b) do { cli(); do { b } while (0); sei(); } while (0)
 
+#define ao_arch_block_interrupts()     cli()
+#define ao_arch_release_interrupts()   sei()
+
 #define ao_mutex_get(m)
 #define ao_mutex_put(m)
 
@@ -79,4 +85,7 @@ ao_eeprom_read(uint16_t addr, void *buf, uint16_t len);
 void
 ao_eeprom_write(uint16_t addr, void *buf, uint16_t len);
 
+uint16_t
+ao_adc_read(uint8_t mux);
+
 #endif /* _AO_ARCH_H_ */