#define AO_LED_PANIC LED_BLUE
-#define HAS_BEEP 0
-
#define HAS_USB 1
#define USE_USB_STDIO 1
#endif
+/*
+ * Beeper
+ */
+
+#define HAS_BEEP 1
+
+/* Beep on PA11 function F TCC0.3 */
+
+#define AO_BEEP_TCC (&samd21_tcc0)
+#define AO_BEEP_TCC_APBC_MASK SAMD21_PM_APBCMASK_TCC0
+#define AO_BEEP_PORT (&samd21_port_a)
+#define AO_BEEP_PIN (11)
+#define AO_BEEP_FUNC SAMD21_PORT_PMUX_FUNC_F
+
+/* ADC */
+#define AO_DATA_RING 32
+
+#define HAS_ADC 1
+
+struct ao_adc {
+ int16_t a[6];
+ int16_t temp;
+};
+
+#define AO_NUM_ADC_PIN 6
+#define AO_NUM_ADC (AO_NUM_ADC_PIN + 1)
+
+#define AO_ADC_DUMP(p) \
+ printf("tick: %5lu a0: %5d a1: %5d a2: %5d a3: %5d a4: %5d a5: %5d temp: %5d\n", \
+ (p)->tick, \
+ (p)->adc.a[0], (p)->adc.a[1], (p)->adc.a[2], \
+ (p)->adc.a[3], (p)->adc.a[4], (p)->adc.a[5], \
+ (p)->adc.temp);
+
+#define AO_ADC_PIN0_PORT (&samd21_port_a)
+#define AO_ADC_PIN0_PIN 2
+#define AO_ADC_SQ0 0
+
+#define AO_ADC_PIN1_PORT (&samd21_port_b)
+#define AO_ADC_PIN1_PIN 8
+#define AO_ADC_SQ1 2
+
+#define AO_ADC_PIN2_PORT (&samd21_port_b)
+#define AO_ADC_PIN2_PIN 9
+#define AO_ADC_SQ2 3
+
+#define AO_ADC_PIN3_PORT (&samd21_port_a)
+#define AO_ADC_PIN3_PIN 4
+#define AO_ADC_SQ3 4
+
+#define AO_ADC_PIN4_PORT (&samd21_port_a)
+#define AO_ADC_PIN4_PIN 5
+#define AO_ADC_SQ4 5
+
+#define AO_ADC_PIN5_PORT (&samd21_port_b)
+#define AO_ADC_PIN5_PIN 2
+#define AO_ADC_SQ5 10
+
+#define AO_ADC_SQ6 SAMD21_ADC_INPUTCTRL_MUXPOS_TEMP
+
+/* GPS */
+#define HAS_GPS 1
+
+#define AO_SERIAL_SPEED_UBLOX AO_SERIAL_SPEED_9600
+
+#define HAS_SERIAL_0 1
+#define USE_SERIAL_0_STDIN 0
+#define SERIAL_0_PA08_PA09 1
+
+#define ao_gps_getchar ao_serial0_getchar
+#define ao_gps_putchar ao_serial0_putchar
+#define ao_gps_set_speed ao_serial0_set_speed
+#define ao_gps_fifo (ao_samd21_usart0.rx_fifo)
+
#endif /* _AO_PINS_H_ */