#include "key_event_deal.h"
#include "key_driver.h"
#include "app_config.h"
#include "board_config.h"
#include "app_task.h"

#ifdef CONFIG_BOARD_AC695X_SOUNDCARD
/***********************************************************
 *				bt 模式的 iokey table
 ***********************************************************/
#if TCFG_APP_BT_EN
const u16 bt_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX] = {
    [0] = {
        KEY_SOUNDCARD_USB_MIC_MUTE_SWICH,	KEY_POWEROFF,	KEY_POWEROFF_HOLD,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [1] = {
        KEY_SOUNDCARD_MODE_ELECTRIC,		KEY_NULL,	KEY_SOUNDCARD_MODE_ELECTRIC_CANCEL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [2] = {
        KEY_SOUNDCARD_MODE_PITCH,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [3] = {
        KEY_SOUNDCARD_MODE_MAGIC, 			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [4] = {
        KEY_SOUNDCARD_MODE_BOOM,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [5] = {
        KEY_SOUNDCARD_MODE_SHOUTING_WHEAT,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [6] = {
        KEY_SOUNDCARD_MODE_DODGE,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [7] = {
        KEY_SOUNDCARD_MAKE_NOISE0,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [8] = {
        KEY_SOUNDCARD_MAKE_NOISE1,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [9] = {
        KEY_SOUNDCARD_MAKE_NOISE2,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [10] = {
        KEY_SOUNDCARD_MAKE_NOISE3,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [11] = {
        KEY_SOUNDCARD_MAKE_NOISE4,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [12] = {
        KEY_SOUNDCARD_MAKE_NOISE5,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [13] = {
        KEY_SOUNDCARD_MAKE_NOISE6,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [14] = {
        KEY_SOUNDCARD_MAKE_NOISE7,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [15] = {
        KEY_SOUNDCARD_MAKE_NOISE8,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [16] = {
        KEY_SOUNDCARD_MAKE_NOISE9,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [17] = {
        KEY_SOUNDCARD_MAKE_NOISE10,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [18] = {
        KEY_SOUNDCARD_MAKE_NOISE11,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
};
#endif

/***********************************************************
 *				fm 模式的 iokey table
 ***********************************************************/
#if TCFG_APP_FM_EN
const u16 fm_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX] = {
    [0] = {
        KEY_MUSIC_PP,			KEY_POWEROFF,			KEY_POWEROFF_HOLD,	KEY_NULL,	KEY_CALL_LAST_NO,	KEY_NULL
    },
    [1] = {
        KEY_FM_NEXT_STATION,	KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [2] = {
        KEY_FM_PREV_STATION,	KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [3] = {
        KEY_CHANGE_MODE,		KEY_FM_SCAN_ALL,		KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [4] = {
        KEY_FM_NEXT_FREQ,		KEY_FM_SCAN_ALL_DOWN,	KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [5] = {
        KEY_FM_PREV_FREQ,		KEY_FM_SCAN_ALL_UP,		KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
};
#endif

/***********************************************************
 *				linein 模式的 iokey table
 ***********************************************************/
#if TCFG_APP_LINEIN_EN
const u16 linein_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX] = {
    [0] = {
        KEY_MUSIC_PP,			KEY_POWEROFF,			KEY_POWEROFF_HOLD,	KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [1] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [2] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [3] = {
        KEY_CHANGE_MODE,		KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [4] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [5] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
};
#endif

/***********************************************************
 *				music 模式的 iokey table
 ***********************************************************/
#if TCFG_APP_MUSIC_EN
const u16 music_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX] = {
    [0] = {
        KEY_MUSIC_PP,			KEY_POWEROFF,			KEY_POWEROFF_HOLD,	KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [1] = {
        KEY_MUSIC_NEXT,			KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [2] = {
        KEY_MUSIC_PREV,			KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [3] = {
        KEY_CHANGE_MODE,		KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [4] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [5] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
};
#endif

/***********************************************************
 *				pc 模式的 iokey table
 ***********************************************************/
#if TCFG_APP_PC_EN
const u16 pc_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX] = {
    [0] = {
        KEY_SOUNDCARD_USB_MIC_MUTE_SWICH,	KEY_POWEROFF,	KEY_POWEROFF_HOLD,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [1] = {
        KEY_SOUNDCARD_MODE_ELECTRIC,		KEY_NULL,	KEY_SOUNDCARD_MODE_ELECTRIC_CANCEL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [2] = {
        KEY_SOUNDCARD_MODE_PITCH,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [3] = {
        KEY_SOUNDCARD_MODE_MAGIC, 			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [4] = {
        KEY_SOUNDCARD_MODE_BOOM,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [5] = {
        KEY_SOUNDCARD_MODE_SHOUTING_WHEAT,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [6] = {
        KEY_SOUNDCARD_MODE_DODGE,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [7] = {
        KEY_SOUNDCARD_MAKE_NOISE0,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [8] = {
        KEY_SOUNDCARD_MAKE_NOISE1,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [9] = {
        KEY_SOUNDCARD_MAKE_NOISE2,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [10] = {
        KEY_SOUNDCARD_MAKE_NOISE3,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [11] = {
        KEY_SOUNDCARD_MAKE_NOISE4,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [12] = {
        KEY_SOUNDCARD_MAKE_NOISE5,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [13] = {
        KEY_SOUNDCARD_MAKE_NOISE6,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [14] = {
        KEY_SOUNDCARD_MAKE_NOISE7,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [15] = {
        KEY_SOUNDCARD_MAKE_NOISE8,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [16] = {
        KEY_SOUNDCARD_MAKE_NOISE9,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [17] = {
        KEY_SOUNDCARD_MAKE_NOISE10,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
    [18] = {
        KEY_SOUNDCARD_MAKE_NOISE11,			KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL,	KEY_NULL
    },
};
#endif

/***********************************************************
 *				record 模式的 iokey table
 ***********************************************************/
#if TCFG_APP_RECORD_EN
const u16 record_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX] = {
    [0] = {
        KEY_MUSIC_PP,			KEY_POWEROFF,			KEY_POWEROFF_HOLD,	KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [1] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [2] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [3] = {
        KEY_CHANGE_MODE,		KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [4] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [5] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
};
#endif

/***********************************************************
 *				rtc 模式的 iokey table
 ***********************************************************/
#if TCFG_APP_RTC_EN
const u16 rtc_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX] = {
    [0] = {
        KEY_MUSIC_PP,			KEY_POWEROFF,			KEY_POWEROFF_HOLD,	KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [1] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [2] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [3] = {
        KEY_CHANGE_MODE,		KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [4] = {
        KEY_RTC_SW_POS,			KEY_RTC_SW,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [5] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
};
#endif

/***********************************************************
 *				spdif 模式的 iokey table
 ***********************************************************/
#if TCFG_APP_SPDIF_EN
const u16 spdif_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX] = {
    [0] = {
        KEY_MUSIC_PP,			KEY_POWEROFF,			KEY_POWEROFF_HOLD,	KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [1] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_SPDIF_SW_SOURCE, KEY_NULL
    },
    [2] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_SPDIF_SW_SOURCE, KEY_NULL
    },
    [3] = {
        KEY_CHANGE_MODE,		KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [4] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [5] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
};
#endif

/***********************************************************
 *				idle 模式的 iokey table
 ***********************************************************/
const u16 idle_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX] = {
    [0] = {
        KEY_NULL,			    KEY_POWER_ON,			KEY_POWER_ON_HOLD,	KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [1] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,           KEY_NULL
    },
    [2] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,           KEY_NULL
    },
    [3] = {
        KEY_NULL,		        KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [4] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
    [5] = {
        KEY_NULL,				KEY_NULL,				KEY_NULL,			KEY_NULL,	KEY_NULL,			KEY_NULL
    },
};
#endif
