/*
 * keyboard.h
 *
 *  Created on: Apr 21, 2013
 *      Author: jz2492
 */

#ifndef KEYBOARD_H_
#define KEYBOARD_H_

#include <io.h>
#include <system.h>
#include <stdio.h>

unsigned char code;

int cx,cy;
int strength_increase = 1;

void get_key(int *strength, int *angle, int *release)
{
	  int temp_strength = 0;
	  int temp_angle = 0;
	  int temp_release = 0;


	  temp_strength = *strength;
	  temp_angle = *angle;
	  temp_release = *release;

	  while(IORD_8DIRECT(DE2_PS2_0_BASE,1) != 0x5a)
	  {

		 	 while(!IORD_8DIRECT(DE2_PS2_0_BASE, 0));

		 	 code = IORD_8DIRECT(DE2_PS2_0_BASE,1);
			 //printf("polled status is %x \n" , IORD_8DIRECT(DE2_PS2_0_BASE, 1));

		 	 //printf("code is %x \n", code);
		  switch(code)
		     {
		            case 0x29: // Space

		             if(temp_strength == 31)
		             {
		            	 strength_increase = -1;
		             }
		             else if(temp_strength == 0)
		             {
		                 strength_increase = 1;
		             }
		             temp_strength = temp_strength + strength_increase;

		               break;
		             case 0x6B: // LEFT Key
		                 temp_angle = temp_angle - 1;
		    			 if(temp_angle < 0)
		    			  	    	temp_angle = 119;
		    			 if(temp_angle > 119)
		    			  	    	temp_angle = 0;
		               break;
		             case 0x75: // UP Key
		             	 temp_angle = temp_angle + 10;
		             		if(temp_angle < 0)
		             		        temp_angle = 119;
		             		if(temp_angle > 119)
		             		        temp_angle = 0;
		             		break;
		             case 0x72: // DOWN Key
		             	 temp_angle = temp_angle - 10;
		             		if(temp_angle < 0)
		             		        temp_angle = 119;
		             		if(temp_angle > 119)
		             		        temp_angle = 0;
		             		break;
		             case 0x74: // RIGHT Key
		                temp_angle = temp_angle + 1;
		                 if(temp_angle < 0)
		                		temp_angle = 119;
		                 if(temp_angle > 119)
		                		temp_angle = 0;

		               break;
		             case 0x5a: //enter
		                     temp_release = 1;
		               break;
		             case 0x76: //escape

		             break;

		            default:

		               break;
		         }
		  break;
	   }


	  *strength = temp_strength;
	  *angle = temp_angle;
	  *release = temp_release;

}


#endif /* KEYBOARD_H_ */

