56 lines
1.4 KiB
C
56 lines
1.4 KiB
C
#ifdef SUPPORT_MS_EXTENSIONS
|
|
#pragma bss_seg(".key_tone.data.bss")
|
|
#pragma data_seg(".key_tone.data")
|
|
#pragma const_seg(".key_tone.text.const")
|
|
#pragma code_seg(".key_tone.text")
|
|
#endif
|
|
#include "fs/resfile.h"
|
|
#include "app_main.h"
|
|
#include "app_tone.h"
|
|
#include "key_driver.h"
|
|
|
|
static u8 g_have_key_tone_file = 0;
|
|
|
|
static int key_tone_msg_handler(int *msg)
|
|
{
|
|
struct key_event *key = (struct key_event *)msg;
|
|
|
|
if (app_in_mode(APP_MODE_IDLE)) {
|
|
return 0;
|
|
}
|
|
|
|
if (g_have_key_tone_file == 0) {
|
|
char file_path[48];
|
|
strncpy(file_path, FLASH_RES_PATH, sizeof(file_path) - 1);
|
|
strncpy(file_path + strlen(FLASH_RES_PATH), get_tone_files()->key_tone, sizeof(file_path) - strlen(FLASH_RES_PATH) - 1);
|
|
void *file = resfile_open(file_path);
|
|
if (file) {
|
|
g_have_key_tone_file = 1;
|
|
resfile_close(file);
|
|
} else {
|
|
g_have_key_tone_file = 0xff;
|
|
}
|
|
}
|
|
|
|
/*printf("key_tone_msg_handler: %d, %d\n", key->event, g_have_key_tone_file);*/
|
|
|
|
switch (key->event) {
|
|
case KEY_ACTION_HOLD:
|
|
case KEY_ACTION_HOLD_3SEC:
|
|
case KEY_ACTION_HOLD_5SEC:
|
|
break;
|
|
default:
|
|
if (g_have_key_tone_file == 1) {
|
|
play_key_tone_file(get_tone_files()->key_tone);
|
|
}
|
|
break;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
APP_MSG_HANDLER(key_tone_msg_entry) = {
|
|
.owner = 0xff,
|
|
.from = MSG_FROM_KEY,
|
|
.handler = key_tone_msg_handler,
|
|
};
|