Клавиши

В настоящий момент идет работа над созданием отдельного драйвера именно под Vogue-плеер. Сложность состоит в том, что в устройстве используются сразу два типа клавиш - GPIO и ADC, а MinOS по умолчанию предоставляет драйверы либо для GPIO, либо для ACD. Нужно написать драйвер, совмещающий в себе оба типа клавиш. На данный момент есть готовый прототип, но пока с глюками к сожалению.

Однако, уже сейчас можно использовать устройство только с GPIO клавишами. При этом получаются задействованы кнопки: VolU, VolD, K1, K2, Power. 

GPIO драйвер


В файле-конфигурации /mtv_50/jz4750l_taurus.mak следует поменять KEYTYPE на 1

KEYTYPE=1

В файле /soc_src/jz4725/include/PlatformCfg/4750L_taurus_cfg.h добавить (или отремарить и поменять) строки:
#define KEY_AUD_PREV_PIN (GPIO_GROUP_D + 17)//Vogue 
#define KEY_VOL_DECR_PIN (GPIO_GROUP_C + 11)//Vogue 
#define KEY_VOL_INCR_PIN (GPIO_GROUP_C + 10)//Vogue 
#define KEY_AUD_NEXT_PIN (GPIO_GROUP_D + 23)//Vogue 
#define KEY_MENU_PIN (GPIO_GROUP_C + 31)//Vogue

ADC драйвер


В файле-конфигурации /mtv_50/jz4750l_taurus.mak следует поменять KEYTYPE на 2

KEYTYPE=2

В файле /soc_src/jz4725/drv/key/key_ad.c нужно изменить структуру AD_Key_Dec keydec[] на полученные путем дизасемблирования оригинальной прошивки значения:

AD_Key_Dec keydec[] =
{
{0x290, 0x394, 0x20}, //K3
{0x498, 0x59C, 0x04}, //K4
{0x704, 0x808, 0x08}, //K5
{0x964, 0xA68, 0x02}, //K6
};

В файле /soc_src/jz4725/include/PlatformCfg/4750L_taurus_cfg.h добавить дефайн

#define AD_KEY_INT_R_EDGE //edit for Vogue

И изменить AD_KEY_INT_PIN на:

#define AD_KEY_INT_PIN (GPIO_GROUP_D + 17)//edit for Vogue


Драйвер для Vogue-плеера (GPIO+ADC)


Версия для проверки ...

Скачать файл http://night-gryphon.ru/Vogue/key_gryph.c

Положить его в папку /soc_src/jz4725/drv/key/

В файле-конфигурации /mtv_50/jz4750l_taurus.mak следует поменять KEYTYPE на 3

KEYTYPE=3

В файле /soc_src/jz4725/include/PlatformCfg/4750L_taurus_cfg.h добавить дефайн

#define KEY_VOL_DECR_PIN (GPIO_GROUP_C + 11)//Vogue 
#define KEY_VOL_INCR_PIN (GPIO_GROUP_C + 10)//Vogue 
#define KEY_AUD_NEXT_PIN (GPIO_GROUP_D + 23)//Vogue 
#define KEY_MENU_PIN (GPIO_GROUP_C + 31)//Vogue

#define AD_KEY_INT_R_EDGE //edit for Vogue

И изменить AD_KEY_INT_PIN на:

#define AD_KEY_INT_PIN (GPIO_GROUP_D + 17)//edit for Vogue

Драйвер обрабатывает все 8 клавиш открытки плюс Power. Поскольку в приложениях используется только 6 клавиш, то часть кнопок пока свободны. На их скан-коды можно повесить что-то полезное, например скриншоты.

Таблица скан-кодов клавиш и во что они транслируются функцией TranslateKeyCode()

 Кнопка Скан-
код
 Значение GPIO
ADC
 
 К1 0x01 VK_OK GPIO GPIO_GROUP_C + 31
 К2 0x04 VK_LEFT GPIO GPIO_GROUP_D + 23
 К3 0x02 VK_RIGHT ADC 0x290 - 0x394
 К4 0x10  ADC 0x498 - 0x59C
 К5 0x40 VK_PLAY ADC 0x704 - 0x808
 К6 0x80  ADC 0x964 - 0xA68
 Vol + 0x20 VK_UP GPIO GPIO_GROUP_C + 10
 Vol - 0x08 VK_DOWN GPIO GPIO_GROUP_C + 11
 Power 0x100  GPIO GPIO_GROUP_B + 31

Отдельная история с кнопкой Power (GPIO, GPIO_GROUP_B + 31). Кнопка является 9-й, но обрабатывается специфически. При длительном нажатии она выключает систему. При коротком нажатии эмулирует нажатие и отпускание кнопки 0x100


Changelog

2011_01_08.3
Поправлены скан-коды для К2 и К3
Поправлена обработка Power при наличии зарядки

2011-01-09.1
Оптимизирована обработка Power

2011-01-12.1
Добавлен скан код 0x100 для короткого нажатия на Power. Теперь эта кнопка не дублирует 0x40 и может быть задействована в софте.
Comments