
#ifndef	__KEYBOARD_C
#define __KEYBOARD_C

/*
**  Функции для работы с клавиатурой на демоплате EVAL22.0B
*/

#include "opora.h"
#include "keyboard.h"

//--- Инициализация порта для работы с клавиатурой ---
void KeysInit()
{
	PORTE->FUNC &= 0x3F00F3FF;//0xFFFFF000;
	PORTE->OE &= 0x70DF;
	PORTE->ANALOG |= 0x8F20;
	PORTE->PWR |= 0x40550400;
}

//--- Функция для определения нажатой кнопки
//--- возвращает код нажатой кнопки
//--- если нажаты несколько кнопок, функция возвращает значение NOPRESS (нет нажатой клавиши)
_Key PressKey()
{
	switch(PORTE->RXTX&NOPRESS)
	{
		case BOTTOM: return BOTTOM;
		case RIGHT:	 return RIGHT;
		case TOP:	 return TOP;
		case LEFT:	 return LEFT;
		case SELECT: return SELECT;
		case BACK:	 return BACK;
		default:	 return NOPRESS;
	}
}

//--- Функция ожидает пока нажата кнопка Key
void WaitUntilPress(_Key Key)
{
	uint32_t tmp;
	while((PORTE->RXTX&NOPRESS)==Key);
	for(tmp=0;tmp<10000;tmp++);
}

//--- Функция ожидает нажатия кнопки Key
void WaitUntilNotPress(_Key Key)
{
	while((PORTE->RXTX&NOPRESS)!=Key);
}

#endif	//__KEYBOARD_C
