KT24-1110_65E-HA-651B/apps/soundbox/task_manager/task_key.c

267 lines
8.8 KiB
C
Raw Normal View History

2024-11-10 10:44:17 +00:00
#include "key_event_deal.h"
#include "key_driver.h"
#include "app_config.h"
#include "board_config.h"
#include "app_task.h"
//ad key
extern const u16 bt_key_ad_table[KEY_AD_NUM_MAX][KEY_EVENT_MAX];
extern const u16 music_key_ad_table[KEY_AD_NUM_MAX][KEY_EVENT_MAX];
extern const u16 fm_key_ad_table[KEY_AD_NUM_MAX][KEY_EVENT_MAX];
extern const u16 record_key_ad_table[KEY_AD_NUM_MAX][KEY_EVENT_MAX];
extern const u16 linein_key_ad_table[KEY_AD_NUM_MAX][KEY_EVENT_MAX];
extern const u16 rtc_key_ad_table[KEY_AD_NUM_MAX][KEY_EVENT_MAX];
extern const u16 pc_key_ad_table[KEY_AD_NUM_MAX][KEY_EVENT_MAX];
extern const u16 spdif_key_ad_table[KEY_AD_NUM_MAX][KEY_EVENT_MAX];
extern const u16 idle_key_ad_table[KEY_AD_NUM_MAX][KEY_EVENT_MAX];
/***********************************************************
* adkey table
***********************************************************/
typedef const u16(*type_key_ad_table)[KEY_EVENT_MAX];
static const type_key_ad_table ad_table[APP_TASK_MAX_INDEX] = {
#if TCFG_APP_BT_EN
[APP_BT_TASK] = bt_key_ad_table,
#endif
#if TCFG_APP_MUSIC_EN
[APP_MUSIC_TASK] = music_key_ad_table,
#endif
#if TCFG_APP_FM_EN
[APP_FM_TASK] = fm_key_ad_table,
#endif
#if TCFG_APP_RECORD_EN
[APP_RECORD_TASK] = record_key_ad_table,
#endif
#if TCFG_APP_LINEIN_EN
[APP_LINEIN_TASK] = linein_key_ad_table,
#endif
#if TCFG_APP_RTC_EN
[APP_RTC_TASK] = rtc_key_ad_table,
#endif
#if TCFG_APP_PC_EN
[APP_PC_TASK] = pc_key_ad_table,
#endif
#if TCFG_APP_SPDIF_EN
[APP_SPDIF_TASK] = spdif_key_ad_table,
#endif
[APP_IDLE_TASK] = idle_key_ad_table,
};
u16 adkey_event_to_msg(u8 cur_task, struct key_event *key)
{
if (ad_table[cur_task] == NULL) {
return KEY_NULL;
}
type_key_ad_table cur_task_ad_table = ad_table[cur_task];
return cur_task_ad_table[key->value][key->event];
}
//io key
extern const u16 bt_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX];
extern const u16 music_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX];
extern const u16 fm_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX];
extern const u16 record_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX];
extern const u16 linein_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX];
extern const u16 rtc_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX];
extern const u16 pc_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX];
extern const u16 spdif_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX];
extern const u16 idle_key_io_table[KEY_IO_NUM_MAX][KEY_EVENT_MAX];
/***********************************************************
* iokey table
***********************************************************/
typedef const u16(*type_key_io_table)[KEY_EVENT_MAX];
static const type_key_io_table io_table[APP_TASK_MAX_INDEX] = {
#if TCFG_APP_BT_EN
[APP_BT_TASK] = bt_key_io_table,
#endif
#if TCFG_APP_MUSIC_EN
[APP_MUSIC_TASK] = music_key_io_table,
#endif
#if TCFG_APP_FM_EN
[APP_FM_TASK] = fm_key_io_table,
#endif
#if TCFG_APP_RECORD_EN
[APP_RECORD_TASK] = record_key_io_table,
#endif
#if TCFG_APP_LINEIN_EN
[APP_LINEIN_TASK] = linein_key_io_table,
#endif
#if TCFG_APP_RTC_EN
[APP_RTC_TASK] = rtc_key_io_table,
#endif
#if TCFG_APP_PC_EN
[APP_PC_TASK] = pc_key_io_table,
#endif
#if TCFG_APP_SPDIF_EN
[APP_SPDIF_TASK] = spdif_key_io_table,
#endif
[APP_IDLE_TASK] = idle_key_io_table,
};
u16 iokey_event_to_msg(u8 cur_task, struct key_event *key)
{
if (io_table[cur_task] == NULL) {
return KEY_NULL;
}
type_key_io_table cur_task_io_table = io_table[cur_task];
return cur_task_io_table[key->value][key->event];
}
//ir key
extern const u16 bt_key_ir_table[KEY_IR_NUM_MAX][KEY_EVENT_MAX];
extern const u16 music_key_ir_table[KEY_IR_NUM_MAX][KEY_EVENT_MAX];
extern const u16 fm_key_ir_table[KEY_IR_NUM_MAX][KEY_EVENT_MAX];
extern const u16 record_key_ir_table[KEY_IR_NUM_MAX][KEY_EVENT_MAX];
extern const u16 linein_key_ir_table[KEY_IR_NUM_MAX][KEY_EVENT_MAX];
extern const u16 rtc_key_ir_table[KEY_IR_NUM_MAX][KEY_EVENT_MAX];
extern const u16 pc_key_ir_table[KEY_IR_NUM_MAX][KEY_EVENT_MAX];
extern const u16 spdif_key_ir_table[KEY_IR_NUM_MAX][KEY_EVENT_MAX];
extern const u16 idle_key_ir_table[KEY_IR_NUM_MAX][KEY_EVENT_MAX];
/***********************************************************
* irkey table
***********************************************************/
typedef const u16(*type_key_ir_table)[KEY_EVENT_MAX];
static const type_key_ir_table ir_table[APP_TASK_MAX_INDEX] = {
#if TCFG_APP_BT_EN
[APP_BT_TASK] = bt_key_ir_table,
#endif
#if TCFG_APP_MUSIC_EN
[APP_MUSIC_TASK] = music_key_ir_table,
#endif
#if TCFG_APP_FM_EN
[APP_FM_TASK] = fm_key_ir_table,
#endif
#if TCFG_APP_RECORD_EN
[APP_RECORD_TASK] = record_key_ir_table,
#endif
#if TCFG_APP_LINEIN_EN
[APP_LINEIN_TASK] = linein_key_ir_table,
#endif
#if TCFG_APP_RTC_EN
[APP_RTC_TASK] = rtc_key_ir_table,
#endif
#if TCFG_APP_PC_EN
[APP_PC_TASK] = pc_key_ir_table,
#endif
#if TCFG_APP_SPDIF_EN
[APP_SPDIF_TASK] = spdif_key_ir_table,
#endif
[APP_IDLE_TASK] = idle_key_ir_table,
};
u16 irkey_event_to_msg(u8 cur_task, struct key_event *key)
{
if (ir_table[cur_task] == NULL) {
return KEY_NULL;
}
type_key_ir_table cur_task_ir_table = ir_table[cur_task];
return cur_task_ir_table[key->value][key->event];
}
//rdec key
extern const u16 bt_key_rdec_table[KEY_RDEC_NUM_MAX][KEY_EVENT_MAX];
extern const u16 music_key_rdec_table[KEY_RDEC_NUM_MAX][KEY_EVENT_MAX];
extern const u16 fm_key_rdec_table[KEY_RDEC_NUM_MAX][KEY_EVENT_MAX];
extern const u16 record_key_rdec_table[KEY_RDEC_NUM_MAX][KEY_EVENT_MAX];
extern const u16 linein_key_rdec_table[KEY_RDEC_NUM_MAX][KEY_EVENT_MAX];
extern const u16 rtc_key_rdec_table[KEY_RDEC_NUM_MAX][KEY_EVENT_MAX];
extern const u16 pc_key_rdec_table[KEY_RDEC_NUM_MAX][KEY_EVENT_MAX];
extern const u16 spdif_key_rdec_table[KEY_RDEC_NUM_MAX][KEY_EVENT_MAX];
extern const u16 idle_key_rdec_table[KEY_RDEC_NUM_MAX][KEY_EVENT_MAX];
/***********************************************************
* rdec_key table
***********************************************************/
typedef const u16(*type_key_rdec_table)[KEY_EVENT_MAX];
static const type_key_rdec_table rdec_table[APP_TASK_MAX_INDEX] = {
#if TCFG_APP_BT_EN
[APP_BT_TASK] = bt_key_rdec_table,
#endif
#if TCFG_APP_MUSIC_EN
[APP_MUSIC_TASK] = music_key_rdec_table,
#endif
#if TCFG_APP_FM_EN
[APP_FM_TASK] = fm_key_rdec_table,
#endif
#if TCFG_APP_RECORD_EN
[APP_RECORD_TASK] = record_key_rdec_table,
#endif
#if TCFG_APP_LINEIN_EN
[APP_LINEIN_TASK] = linein_key_rdec_table,
#endif
#if TCFG_APP_RTC_EN
[APP_RTC_TASK] = rtc_key_rdec_table,
#endif
#if TCFG_APP_PC_EN
[APP_PC_TASK] = pc_key_rdec_table,
#endif
#if TCFG_APP_SPDIF_EN
[APP_SPDIF_TASK] = spdif_key_rdec_table,
#endif
[APP_IDLE_TASK] = idle_key_rdec_table,
};
u16 rdec_key_event_to_msg(u8 cur_task, struct key_event *key)
{
if (rdec_table[cur_task] == NULL) {
return KEY_NULL;
}
type_key_rdec_table cur_task_rdec_table = rdec_table[cur_task];
return cur_task_rdec_table[key->value][key->event];
}
//touch key
extern const u16 bt_key_touch_table[KEY_TOUCH_NUM_MAX][KEY_EVENT_MAX];
extern const u16 music_key_touch_table[KEY_TOUCH_NUM_MAX][KEY_EVENT_MAX];
extern const u16 fm_key_touch_table[KEY_TOUCH_NUM_MAX][KEY_EVENT_MAX];
extern const u16 record_key_touch_table[KEY_TOUCH_NUM_MAX][KEY_EVENT_MAX];
extern const u16 linein_key_touch_table[KEY_TOUCH_NUM_MAX][KEY_EVENT_MAX];
extern const u16 rtc_key_touch_table[KEY_TOUCH_NUM_MAX][KEY_EVENT_MAX];
extern const u16 pc_key_touch_table[KEY_TOUCH_NUM_MAX][KEY_EVENT_MAX];
extern const u16 spdif_key_touch_table[KEY_TOUCH_NUM_MAX][KEY_EVENT_MAX];
extern const u16 idle_key_touch_table[KEY_TOUCH_NUM_MAX][KEY_EVENT_MAX];
/***********************************************************
* touch_key table
***********************************************************/
typedef const u16(*type_key_touch_table)[KEY_EVENT_MAX];
static const type_key_touch_table touch_table[APP_TASK_MAX_INDEX] = {
#if TCFG_APP_BT_EN
[APP_BT_TASK] = bt_key_touch_table,
#endif
#if TCFG_APP_MUSIC_EN
[APP_MUSIC_TASK] = music_key_touch_table,
#endif
#if TCFG_APP_FM_EN
[APP_FM_TASK] = fm_key_touch_table,
#endif
#if TCFG_APP_RECORD_EN
[APP_RECORD_TASK] = record_key_touch_table,
#endif
#if TCFG_APP_LINEIN_EN
[APP_LINEIN_TASK] = linein_key_touch_table,
#endif
#if TCFG_APP_RTC_EN
[APP_RTC_TASK] = rtc_key_touch_table,
#endif
#if TCFG_APP_PC_EN
[APP_PC_TASK] = pc_key_touch_table,
#endif
#if TCFG_APP_SPDIF_EN
[APP_SPDIF_TASK] = spdif_key_touch_table,
#endif
[APP_IDLE_TASK] = idle_key_touch_table,
};
u16 touch_key_event_to_msg(u8 cur_task, struct key_event *key)
{
if (touch_table[cur_task] == NULL) {
return KEY_NULL;
}
type_key_touch_table cur_task_touch_table = touch_table[cur_task];
return cur_task_touch_table[key->value][key->event];
}