#include <avr/io.h>		    // include I/O definitions (port names, pin names, etc)
#include <avr/interrupt.h>	// include interrupt support
#include"global.h"
#include"buffer.h"
#include"uart.h"
#include"rprintf.h"

#define PORT_ON( port_letter, number )			port_letter |= (1<<number)
#define PORT_OFF( port_letter, number )			port_letter &= ~(1<<number)
#define PORT_ALL_ON( port_letter, number )		port_letter |= (number)
#define PORT_ALL_OFF( port_letter, number )		port_letter &= ~(number)
#define FLIP_PORT( port_letter, number )		port_letter ^= (1<<number)
#define PORT_IS_ON( port_letter, number )		( port_letter & (1<<number) )
#define PORT_IS_OFF( port_letter, number )		!( port_letter & (1<<number) )

void sens(void);
void delay(unsigned long int d);
void configure_ports(void);
extern void wiii();

int volatile main(void){
	configure_ports();
	uartInit();
	uartSetBaudRate(4800);
	rprintfInit(uartSendByte);

	//DDRC = 0xFF;
	PORT_ON(PORTC,5);
	PORT_ON(PORTC,0);
	volatile char f=0;
	volatile unsigned long int d=35;
	

	while(1){
		f=uartGetByte();
		if(f==103){
			rprintf("GO!\n");
			while(1){
				PORT_ON(PORTC,4);
				f=uartGetByte();
				delay(d);
				PORT_OFF(PORTC,4);	
				if(f==97)
					sens();
			}
		}
	}	
	
	return 0;
}

void sens(void){
	FLIP_PORT(PORTC,3);
	//PORT_ON(PORTC,4);
//	PORT_OFF(PORTC,4);
}

void configure_ports(void)
	{
	//DDRD = 0x00;  //configure all C ports for input
	//PORTD = 0x00; //make sure pull-up resistors are turned off
	DDRC = 0xFF;  //configure all D ports for output
	DDRD=0xFF;
	DDRB = 0xC7;  //configure B ports 0, 1, 2, 6, 7 for output (google search '0b11000111 to hex')
	}

void delay(unsigned long int d){
	while(d>0){
		wiii();
		d--;
	}
}
