MTK平臺驅動基本介紹

----------MTK6225
一:
LCD
文件位於
custom/drv/LCD
以華立維的一款240X320的屏爲例介紹如何添加LCD驅動

gprs.mak
LCD_MODULE = HUALIWEI_SSD1289_LCM
MAIN_LCD_SIZE = 240X320
Option
COM_DEFS_FOR_HUALIWEI_SSD1289_LCM = HUALIWEI_SSD1289_LCM SSD1289 COLOR_LCD TFT_MAINLCD QVGA_MAINLCD

custom/drv/LCD添加HUALIWEI_SSD1289_LCM文件夾,下面有5個文件。文件名同MTK系統自帶的(lcd.c lcd_hw.h lcd_sw.h lcd_sw_inc.h lcd_sw_rnd.h)。

HUALIWEI--------------
屏的廠家
SSD1289-----------------
屏的驅動芯片
LCM----------------------

240X320-----------------
屏的分辨率
COLOR_LCD----------
彩色
TFT_MAINLCD-------
屏的類型,對應的還有CSTNOLED。目前主要是TFT
QVGA_MAINLCD----
屏的分辨率



做了上述修改以後,編譯時,lcd驅動就對應HUALIWEI_SSD1289_LCM文件夾裏的驅動。文件夾裏的5個文件,通常lcd_hw.h, lcd_sw_rnd不需要修改。lcd_sw_inc.h只是定義屏的分辨率。如下:
#ifdef __MMI_MAINLCD_128X128__
#define LCD_WIDTH 128
#define LCD_HEIGHT 128
#elif (defined(__MMI_MAINLCD_128X160__))
#define LCD_WIDTH 128
#define LCD_HEIGHT 160
#elif (defined(__MMI_MAINLCD_176X220__))
#define LCD_WIDTH 176
#define LCD_HEIGHT 220
#elif (defined(__MMI_MAINLCD_240X320__))
#define LCD_WIDTH 240
#define LCD_HEIGHT 320
#endif

#define UI_DEVICE_WIDTH LCD_WIDTH
#define UI_DEVICE_HEIGHT LCD_HEIGHT
修改比較多的是lcd.clcd_sw.h
Lcd_sw.h
#define LCD_CMD_DMA_MODE---------
是否使用DMA方式?(DMA簡單,速度快,通過MTK的寄存器進行操作,但靈活性差。非DMA方式,直接對地址操作,靈活性好,但速度會有影響。目前,一般都是用DMA方式)
#define LCD_16BIT_MODE-----------------lcd
使用16位總線?(由硬件決定)


#define LCD_SSD1289_CTRL_ADDR LCD_PARALLEL0_A0_LOW_ADDR
#define LCD_SSD1289_DATA_ADDR LCD_PARALLEL0_A0_HIGH_ADDR
#define MAIN_LCD_CMD_ADDR LCD_SSD1289_CTRL_ADDR
#define MAIN_LCD_DATA_ADDR LCD_SSD1289_DATA_ADDR

#define MAIN_LCD_OUTPUT_FORMAT LCM_16BIT_16_BPP_RGB565_1



#define LCD_delay_SSD1289() /
{/
volatile kal_uint16 iI; /
for (iI = 0; iI < 0x20; iI++);/
}

#ifdef LCD_CMD_DMA_MODE-------------DMA
方式

#define LCD_SEND_DMA_CMD(n) /
{/
while (LCD_IS_RUNNING);/
DISABLE_LCD_TRANSFER_COMPLETE_INT;/
DISABLE_ALL_LCD_LAYER_WINDOW;/
SET_LCD_ROI_CTRL_NUMBER_OF_CMD(n);/
ENABLE_LCD_ROI_CTRL_CMD_FIRST;/
SET_LCD_ROI_WINDOW_SIZE(0, 0);/
START_LCD_TRANSFER;/
while (LCD_IS_RUNNING);/
}

#define LCD_CtrlWrite_SSD1289(_data) /
{/
SET_LCD_CMD_PARAMETER(0, LCD_CMD, _data);/ --------
寫的是命令
LCD_SEND_DMA_CMD(1);/
}
#define LCD_DataWrite_SSD1289(_data) /
{/
SET_LCD_CMD_PARAMETER(0, LCD_DATA, _data);/ --------
寫的是數據
LCD_SEND_DMA_CMD(1);/
}
#else ----------
DMA方式
#define LCD_CtrlWrite_SSD1289(_data) /
{/
*(volatile kal_uint32 *) LCD_SSD1289_CTRL_ADDR = _data;/ --------
寫的是命令
LCD_delay_SSD1289();/
}

#define LCD_DataWrite_SSD1289(_data) /
{/
*(volatile kal_uint32 *) LCD_SSD1289_DATA_ADDR = _data;/------------
寫的是數據
LCD_delay_SSD1289();/
}
#endif

#define LCD_DataRead_SSD1289 (*(volatile kal_uint16 *)LCD_SSD1289_DATA_ADDR);
------
用於讀LCD id,兼容lcd用。(這個需要硬件上接讀lcd的信號)


Lcd.c
LCD_Funcs LCD_func_SSD1289 = {
LCD_Init_SSD1289,
LCD_PWRON_SSD1289,
LCD_SetContrast_SSD1289,
LCD_ON_SSD1289,
LCD_BlockWrite_SSD1289,
LCD_Size_SSD1289,
LCD_EnterSleep_SSD1289,
LCD_ExitSleep_SSD1289,
LCD_Partial_On_SSD1289,
LCD_Partial_Off_SSD1289,
LCD_Partial_line_SSD1289,

LCD_GetParm_SSD1289,
LCD_SetBias_SSD1289,
LCD_Contrast_SSD1289,
LCD_LineRate_SSD1289,
LCD_Temp_Compensate_SSD1289
#ifdef __LCD_ESD_RECOVERY__
,LCD_ESD_check_SSD1289
#endif
};


void LCD_FunConfig(void)
{
MainLCD = &LCD_func_SSD1289;
}

上層通過這個LCD_func_SSD1289來調用相應的lcd驅動函數的。這個結構體裏的很多函數不需要修改。經常需要修改的有以下幾個函數:
LCD_Init_SSD1289(), LCD_BlockWrite_SSD1289(), LCD_EnterSleep_SSD1289(),
LCD_ExitSleep_SSD1289()

這其中,LCD_Init_SSD1289(), LCD_EnterSleep_SSD1289(), LCD_ExitSleep_SSD1289(),屏廠會提供,只需要按照寫就可以了。LCD_BlockWrite_SSD1289()需要根據LCDdatasheet寫。
ssd1289+2.2topsun-init.txt
LCD_Init_SSD1289()
{
……………….
LCD_CtrlWrite_SSD1289(0x0000);
LCD_DataWrite_SSD1289(0x0001);

LCD_CtrlWrite_SSD1289(0x0003);
LCD_DataWrite_SSD1289(0xa8a4);
…………………
}


void LCD_BlockWrite_SSD1289(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy)
{
…………………….
SET_LCD_CMD_PARAMETER(0,LCD_CMD, 0x4E); ---------
表示寄存器

SET_LCD_CMD_PARAMETER(1,LCD_DATA, startx); ----------
表示寄存器中的值
SET_LCD_CMD_PARAMETER(2,LCD_CMD, 0x4F);
SET_LCD_CMD_PARAMETER(3,LCD_DATA, starty);
SET_LCD_CMD_PARAMETER(4,LCD_CMD, 0x44);
SET_LCD_CMD_PARAMETER(5,LCD_DATA, (((endx & 0x00ff)<<8) | (startx & 0x00ff)));
SET_LCD_CMD_PARAMETER(6,LCD_CMD, 0x45);
SET_LCD_CMD_PARAMETER(7,LCD_DATA, starty);
SET_LCD_CMD_PARAMETER(8,LCD_CMD, 0x46);
SET_LCD_CMD_PARAMETER(9,LCD_DATA, endy);

SET_LCD_CMD_PARAMETER(10,LCD_CMD, 0x22);

ENABLE_LCD_TRANSFER_COMPLETE_INT;
ENABLE_LCD_ROI_CTRL_CMD_FIRST;
SET_LCD_ROI_CTRL_NUMBER_OF_CMD(11);
START_LCD_TRANSFER;
}

具體的寄存器意義,見datasheet SSD1289_1.1.pdf P51datasheet。這個是一般的lcd調試,特殊的不做描述。

在硬件沒有問題的情況下,lcd沒有點亮,可做如下動作:
1
) 在LCD_Init_SSD1289()函數下加
{
lcd_drive_ic_id = LCD_DataRead_SSD1289;

}
2
LCD_Init_SSD1289()增大lcd復位時間
{
SET_LCD_CTRL_RESET_PIN;
LCD_Delay100us(1000);
CLEAR_LCD_CTRL_RESET_PIN;
LCD_Delay100us(1000);
SET_LCD_CTRL_RESET_PIN;
LCD_Delay100us(1000);
}
3
LCD_Init_SSD1289()添加測試代碼
{
{
unsigned int m,n;
GPIO_ModeSetup(25, 0);
GPIO_InitIO(1, 25);
GPIO_WriteIO(1, 25);
for(m=0; m<240; m++)
for(n=0; n<320; n++)
{
LCD_DataWrite_SSD1289(0xf800);
}
}-----------
用於判斷初始化代碼是否正確
}
4
) 修改時序,主要是寫的時序void init_lcd_interface(void)
{
SET_LCD_PARALLEL_CE2WR_SETUP_TIME((kal_uint32)3);
SET_LCD_PARALLEL_CE2WR_HOLD_TIME(4);
SET_LCD_PARALLEL_CE2RD_SETUP_TIME(3);
SET_LCD_PARALLEL_WRITE_WAIT_STATE(7);
SET_LCD_PARALLEL_READ_LATENCY_TIME(31);
SET_LCD_ROI_CTRL_CMD_LATENCY(10);
}
5
) 初始化正確的前提下,檢查函數LCD_BlockWrite_SSD1289()。這個時候,屏上應該有顯示了。只是顯示不正常。


二:鍵盤
通常只需要修改keypad_def.c文件。
一般硬件會提供如下
C0 C1 C2 C3 C4
R1 UP 7 Right 9 VOL+
R2
左軟件 OK Down 3 VOL-
R3 SEND 0 8 #
播放/暫停

R4 Left 1 2
右軟 快退
R5 * 4 5 6
快進

軟件只需要填進去就可以了。
const keypad_struct keypad_custom_def = {
{

DEVICE_KEY_SK_LEFT,
DEVICE_KEY_SEND,
DEVICE_KEY_SK_RIGHT,
DEVICE_KEY_UP,
DEVICE_KEY_VOL_UP,
DEVICE_KEY_NONE,
DEVICE_KEY_END,


DEVICE_KEY_1,
DEVICE_KEY_4,
DEVICE_KEY_7,
DEVICE_KEY_MENU,
DEVICE_KEY_VOL_DOWN,
DEVICE_KEY_NONE,
DEVICE_KEY_END,


DEVICE_KEY_2,
DEVICE_KEY_5,
DEVICE_KEY_8,
DEVICE_KEY_DOWN,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_END,


DEVICE_KEY_3,
DEVICE_KEY_6,
DEVICE_KEY_9,
DEVICE_KEY_LEFT,
DEVICE_KEY_FUNCTION,
DEVICE_KEY_NONE,
DEVICE_KEY_END,


DEVICE_KEY_STAR,
DEVICE_KEY_0,
DEVICE_KEY_HASH,
DEVICE_KEY_RIGHT,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_END,


DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_END
},
Custom_Keypress_Period,
};

三:音頻PA開關 afe.c
void AFE_SwitchExtAmplifier( char sw_on )
{
if( sw_on )
{
GPIO_WriteIO( 1, 5 );----------
使用的是GPIO5,每個項目會不同,需根據硬件修改

}
else
{
GPIO_WriteIO( 0, 5 );
}
}

 

四:USB電源開關 usb_custom.c
void USB_PowerControl(kal_bool enable)
{
#ifdef __USB_ENABLE__
GPIO_ModeSetup(35, 0); --------
使用的是GPIO35,每個項目會不同,需根據硬件修改


GPIO_InitIO(1, 35);
if (enable == KAL_TRUE)
GPIO_WriteIO(1,35);
else
GPIO_WriteIO(0,35);
#endif
}

五:lcd背光custom_equipment.c
kal_bool custom_cfg_gpio_set_level(kal_uint8 gpio_dev_type, kal_uint8 gpio_dev_level )
{
case GPIO_DEV_LED_MAINLCD:
……………
break;
}

lcd
背光驅動,一般有以下兩種方式:

1
PWM方式
GPIO_ModeSetup(25, 2);
PWM_level(gpio_dev_level);
2
gpio脈衝方式。這個根據背光芯片的要求,可能有所不同。
{
GPIO_ModeSetup(25, 0);
GPIO_InitIO(1, 25);
if (gpio_dev_level == LED_LIGHT_LEVEL0)
{
GPIO_WriteIO(0, 25);
BL_Delay50us(100);
}
else
{
kal_uint8 level_array[6] = {0, 28, 20, 10, 6, 2};

savedMask=SaveAndSetIRQMask();




for(j=0; j< level_array[gpio_dev_level]; j++)
{
volatile kal_uint16 delay;

GPIO_WriteIO(0,25);
for (delay =0;delay <5;delay++){}
GPIO_WriteIO(1, 25 );
for (delay =0;delay <5;delay++){}
}
RestoreIRQMask(savedMask);
BL_Delay50us(20);
}
}

六:鍵盤背光custom_equipment.c
kal_bool custom_cfg_gpio_set_level(kal_uint8 gpio_dev_type, kal_uint8 gpio_dev_level )
{
case GPIO_DEV_LED_KEY:
……………
break;
}
一般通過gpio口拉高拉低來開關。不同項目,gpio口可能不同。

{
GPIO_InitIO(1, 27);
GPIO_ModeSetup(27, 0);
if (gpio_dev_level == LED_LIGHT_LEVEL0)
{
GPIO_WriteIO(0,27);
}
else
{
GPIO_WriteIO(1,27);
}
}

七:振動custom_equipment.c
kal_bool custom_cfg_gpio_set_level(kal_uint8 gpio_dev_type, kal_uint8 gpio_dev_level )
{
case GPIO_DEV_VIBRATOR:
……………
break;
}
一般通過gpio口拉高拉低來開關。不同項目,gpio口可能不同。

{
GPIO_InitIO(1, 6);
GPIO_ModeSetup(6, 0);

if (gpio_dev_level == LED_LIGHT_LEVEL0)
{
GPIO_WriteIO(0,6);
}
else
{
GPIO_WriteIO(1,6);
}
break;
}

八:flash修改custom_MemoryDevice.h
首先硬件會提供項目中使用的flash型號或datasheet。然後到
mcu/tools
/MemoryDeviceList/ MemoryDeviceList_XXX..xls(
一般是日期最靠前的那個)查找,是否有flash對應的型號。如果有,表示軟件支持這顆flash,如果沒有,表示軟件不支持這顆flash,那需要調加或需要MTK釋放新的軟件。

支持的話,需用將custom_MemoryDevice.h中添加對應的型號
#define CS0_PART_NUMBER S71GL128NB0BFW9Z
#define CS1_PART_NUMBER S71GL128NB0BFW9Z
通常來說,開不了機,首先要檢查flash是否配置正確。

九:ADC的配置adc_channel.c

const kal_uint8 ADC_VBAT = 0;
const kal_uint8 ADC_VISENSE = 1;
const kal_uint8 ADC_VBATTMP = 2;
const kal_uint8 ADC_VCHARGER = 3;
const kal_uint8 ADC_ACCESSORYID = 5;
const kal_uint8 ADC_PCBTMP = 4;
#if defined(__CHARGER_USB_DETECT_WIHT_ONE_EINT__)
const kal_uint8 ADC_CHR_USB = 6;
#endif

如果需要修改,硬件工程師會提供ADC對應的功能。


十:外部中斷的配置eint_def.c
const kal_uint8 AUX_EINT_NO = 0;
const kal_uint8 CHRDET_EINT_NO = EINT_CHANNEL_NOT_EXIST;

#if defined(__PHONE_CLAMSHELL__) || defined(__PHONE_SLIDE__)
const kal_uint8 CLAMDET_EINT_NO = EINT_CHANNEL_NOT_EXIST;
#endif

#ifdef __USB_ENABLE__
const kal_uint8 USB_EINT_NO = EINT_CHANNEL_NOT_EXIST;
#else
const kal_uint8 USB_EINT_NO = EINT_CHANNEL_NOT_EXIST;
#endif

#ifdef __BT_SUPPORT__
const kal_uint8 BT_EINT_NO = 1;
#endif

#if defined(__CHARGER_USB_DETECT_WIHT_ONE_EINT__)
const kal_uint8 CHR_USB_EINT_NO = 2;
#endif

#ifdef __SWDBG_SUPPORT__
const kal_uint8 SWDBG_EINT_NO = EINT_CHANNEL_NOT_EXIST;
#endif

#if defined(MOTION_SENSOR_SUPPORT)
const kal_uint8 MOTION_SENSOR_EINT_NO = EINT_CHANNEL_NOT_EXIST;

#endif

#if defined(TOUCH_PANEL_SUPPORT) || defined(HAND_WRITING)
const kal_uint8 TOUCH_PANEL_EINT_NO = 3;
#endif

#ifdef __WIFI_SUPPORT__
const kal_uint8 WIFI_EINT_NO = EINT_CHANNEL_NOT_EXIST;
#endif


一般,EINT_CHANNEL_NOT_EXIST表示硬件上沒有這個中斷,也就是沒有這個功能。如果需要修改,硬件工程師會提供相關的資料。

十一:觸摸屏
觸摸屏相關的文件有eint_def.c,touch_panel.c,touch_panel.h,touch_panel_buffer.h,
touch_panel_custom.c,touch_panel_custom.h,touch_panel_main.c,touch_panel_spi.c,
touch_panel_spi.h,touchscreen.c

而對驅動來說,一般需要修改以下文件:
eint_def.c
#if defined(TOUCH_PANEL_SUPPORT) || defined(HAND_WRITING)
const kal_uint8 TOUCH_PANEL_EINT_NO = 3;
#endif

kal_uint8 custom_eint_sw_debounce_time_delay[EINT_MAX_CHANNEL] =
{
50,
0,
50,
0
};

touch_panel_spi.h
#define SPI_DIN_PIN 0
#define SPI_CLK_PIN 40
#define SPI_DOUT_PIN 42
#define SPI_CS_PIN 32
#define SPI_BUSY_PIN 30
觸摸屏對應的控制引腳,由硬件決定

touch_panel.c
kal_uint32 ADC_X_START=370;
kal_uint32 ADC_X_END=3740;
kal_uint32 ADC_Y_START=300;
kal_uint32 ADC_Y_END=3690;
kal_uint32 SCREEN_X_START=0;
kal_uint32 SCREEN_X_END=240;
kal_uint32 SCREEN_Y_START=0;
kal_uint32 SCREEN_Y_END=320;

touch_panel_custom.h
#define TOUCH_PANEL_ADC_X_START 370
#define TOUCH_PANEL_ADC_X_END 3740
#define TOUCH_PANEL_ADC_Y_START 300
#define TOUCH_PANEL_ADC_Y_END 3690

#define TOUCH_PANEL_COORD_X_START 0
#define TOUCH_PANEL_COORD_X_END 239
#define TOUCH_PANEL_COORD_Y_START 0
#define TOUCH_PANEL_COORD_Y_END 319
touch_panel.c
touch_panel_custom.h的值是對應的。這個值不正確,會導致觸摸屏不校準,觸摸屏不能用。這個值可以簡單得到;
touch_panel_custom.c
format
下載完以後,點擊觸摸屏的左上腳(x_start,y_start

和右下腳(x_end,y_end),得到的值就是,可以通過log得到。
void tp_read_adc(kal_int16 *x, kal_int16 *y)
{
*y=serial_read_data();
*x=serial_read_data();
kal_prompt_trace(MOD_MMI,”!!!!!!! *x = %d *y = %d”,*x,*y);
}

十二:藍牙,目前都是用BTMTK_MT6601
一般需要修改btmtk_config.c
eint_def.c
eint_def.c
#ifdef __BT_SUPPORT__
const kal_uint8 BT_EINT_NO = 1;
#endif

btmtk_config.c
#ifdef __BTMODULE_MT6601__

const unsigned char bt_gpio_setting[16] =
{ 34, 1, // power on : pin(if use GPO, please plus 100), pol
3, 1, // reset : pin(if use GPO, please plus 100), pol
1, 1, // bt2gsm : pin(EINT n), pol
49, 50, // rxd3, txd3
0xFF, 0xFF, // cts3, rts3
0xff, 0xff, // lpoclk, mode
51, 54, // PCM clk, PCM sync
52, 53 // PCM data output, PCM data input
};

#endif

藍牙對應的控制引腳,由硬件決定

十三:FM
目前使用的FMMT6188SI4700RDA5800

MT6188
的驅動對應的文件是MT6188.c。通常來說,只需要修改
#define CRYCLK 26 //GPIO26
//
這個腳不一定需要,根據硬件 #define LE 4 /// GPIO4
#define SDA 48 //GPIO48
#define SCL 47 //GPIO47
SI4700
RDA5800對應的驅動文件是SI4700

一般需要的修改的也是控制引腳
#define RST 1
#define EN 4
#define SCLK 47
#define SDIO 48
#define FM_CLK 26

添加SI4700的驅動
gprs.mak
FM_RADIO_CHIP = SI4720 #MT6188

/fm_drv/
下添加文件
SI4700_drv.c

/make/fm_drv/fm_drv.lis
文件中添加
fm_drv/SI4700_drv.c

十四:camera
gprs.mak
CMOS_SENSOR = OV7670

camera
相關的文件位於

/custom/drv/camera/DESHENG25_GEMINI_BB/
/custom/drv/yuv_sensor/

一般需要修改如下文件:
camera_hw.c
#define MODULE_POWER_PIN 34// camera
電源腳

Sccb.h
#define SCCB_SERIAL_CLK_PIN 8 //SCL
#define SCCB_SERIAL_DATA_PIN 9 //SDA

/custom/drv/yuv_sensor/OV7670
下的image_sensor.cimage_sensor.h
一般來說,image_sensor.cimage_sensor.hcamera廠商提供。


如果要新添加一種camera,如MC501CB
則:
gprs.mak
CMOS_SENSOR = MC501CB

/custom/drv/yuv_sensor/
下添加文件夾MC501CB。文件夾下有如下文件:image_sensor.c, image_sensor.h,usbvideo_attr.c
image_sensor.c
image_sensor.hcamera廠商提供,而usbvideo_attr.c一般不需要修改。

十五:射頻修改
一般修改如下幾個文件:l1d_custom_rf.h,m12193.c,m12193.h,chr_parameter.c
射頻會提供相應的參數,只需要找到相應的位置,填進去。


十六:音頻參數的修改nvram_default_audio.c
這個文件對應正常,耳機,免提模式下的音頻參數。

GAIN_NOR_XXX
正常模式
GAIN_HED_XXX
耳機模式
GAIN_HED_XXX
免提模式

十七:初始gpio配置gpio_drv.c
void GPIO_init(void)
{

}
這個函數對gpio口進行初始的配置。如果配置不正確,會引起耗流問題。根據

硬件來寫。


自己動手做驅動的總結:
一、 鍵盤的驅動
鍵盤的驅動一般都是在文件keypad_def.c文件中修改
硬件會提供如下鍵盤的定義表:
列(讀)
行(寫) KCOL0 KCOL1 KCOL2 KCOL3 KCOL4
KROW0
多功鍵 0 返回 上

KROW1
8
OK
KROW2
撥號 * 6

KROW3 1 7 3 2
KROW4 4 # 9 5
KROW5
GND PWRKEY
驅動按照上面的表,按行列對照修改下面的一個結構體就行了

const keypad_struct keypad_custom_def = {

{
// #ifndef __CUST_NEW__


DEVICE_KEY_SK_LEFT,
DEVICE_KEY_0,
DEVICE_KEY_SK_RIGHT,
DEVICE_KEY_UP,//DEVICE_KEY_3,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_END,


DEVICE_KEY_LEFT,
DEVICE_KEY_8,
DEVICE_KEY_RIGHT,
DEVICE_KEY_MENU,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_END,


DEVICE_KEY_SEND,
DEVICE_KEY_STAR,
DEVICE_KEY_6,//DEVICE_KEY_MP3,
DEVICE_KEY_DOWN,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_END,


DEVICE_KEY_1,
DEVICE_KEY_7,
DEVICE_KEY_3,
DEVICE_KEY_2,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_END,


DEVICE_KEY_4,
DEVICE_KEY_HASH,
DEVICE_KEY_9,
DEVICE_KEY_5,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_END,


DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_NONE,
DEVICE_KEY_END,
//#else
// KEYPAD_MAPPING
// #endif
},
Custom_Keypress_Period,
#ifndef __CUST_NEW__
DEVICE_KEY_END //
在此處定義開機鍵,一般定義成END
#else
POWERKEY_POSITION
#endif
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章