#include "contiki.h"

#include "utils.h"
#include "dev/leds.h"
#include "adc.h"
#include <stdio.h> /* For printf() */

static struct etimer adc_timer;

PROCESS(adc_process, "adc process");

PROCESS_NAME(adc_process);

AUTOSTART_PROCESSES(&adc_process);

PROCESS_THREAD(adc_process, ev, data)
{

	PROCESS_BEGIN();

	leds_init();
	etimer_set(&adc_timer, CLOCK_SECOND);

	/* for 24Mhz clock */
	*(volatile uint16_t *)ADC_CLOCK_DIVIDER = 0x50;
	*(volatile uint16_t *)ADC_PRESCALE = 0x17;
	*(volatile uint16_t *)ADC_ON_TIME = 0xa;
	*(volatile uint16_t *)ADC_CONVERT_TIME = 0x14;
	*(volatile uint16_t *)ADC_MODE = 0x1;
	*(volatile uint16_t *)ADC_OVERRIDE = 0x365;
	*(volatile uint16_t *)ADC_CONTROL = 0x1;

	while(1) {
		PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_TIMER);

		if(data == &adc_timer) {
			leds_toggle(LEDS_RED);
			printf("adc %x %x\n\r", *(volatile uint16_t *)ADC_1_RESULT, *(volatile uint16_t *)ADC_2_RESULT);
			etimer_reset(&adc_timer);
		}
	}

	PROCESS_END();
}

