KT24-1110_65E-HA-651B/apps/soundbox/third_party_profile/app_protocol_deal.c

99 lines
2.5 KiB
C
Raw Normal View History

2024-11-10 10:44:17 +00:00
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "app_protocol_api.h"
#include "tone_player.h"
#include "clock_cfg.h"
#include "key_event_deal.h"
#include "bt.h"
#include "app_config.h"
#include "app_main.h"
#if AI_APP_PROTOCOL
#if 1
#define APP_PROTOCOL_LOG printf
#define APP_PROTOCOL_DUMP put_buf
#else
#define APP_PROTOCOL_LOG(...)
#define APP_PROTOCOL_DUMP(...)
#endif
int get_bt_tws_connect_status();
void mic_rec_clock_set(void)
{
clock_add_set(AI_SPEECH_CLK);
}
void mic_rec_clock_recover(void)
{
clock_remove_set(AI_SPEECH_CLK);
}
static void tone_play_in_app_core(int index)
{
tone_play_with_callback_by_name(app_protocol_get_tone(index), 1, app_speech_tone_play_end_callback, (void *)index);
}
void app_protocol_tone_play(int index, int tws_sync)
{
if (app_var.goto_poweroff_flag) {
APP_PROTOCOL_LOG("shutdown don't play tone:%d\n", index);
return;
}
#if TCFG_APP_BT_EN
if (app_bt_hdl.ignore_discon_tone) {
APP_PROTOCOL_LOG("ingore discon tone:%d\n", index);
return;
}
#endif
#if TCFG_USER_TWS_ENABLE
if (tws_sync && get_bt_tws_connect_status()) {
APP_PROTOCOL_LOG("tws_sync play index:%d\n", index);
app_protocol_tws_sync_send(APP_PROTOCOL_SYNC_TONE, index);
return;
}
#endif
#if TCFG_APP_BT_EN
bt_drop_a2dp_frame_start(); //蓝牙播提示音丢A2DP数据防止a2dp buf阻塞
#endif
if (strcmp(os_current_task(), "app_core")) {
APP_PROTOCOL_LOG("tone play in app core index:%d\n", index);
app_protocol_post_app_core_callback((int)tone_play_in_app_core, (void *)index); //提示音放到app_core播放
} else {
APP_PROTOCOL_LOG("tone play index:%d\n", index);
tone_play_with_callback_by_name(app_protocol_get_tone(index), 1, app_speech_tone_play_end_callback, (void *)index);
}
}
extern u8 get_call_status();
int app_protocol_key_event_handler(struct sys_event *event)
{
int ret = false;
struct key_event *key = &event->u.key;
int key_event = event->u.key.event;
switch (key_event) {
#if APP_PROTOCOL_SPEECH_EN
case KEY_SEND_SPEECH_START:
if (get_call_status() != 5) {
printf("phone is using, no speech allow\n");
return ret;
}
APP_PROTOCOL_LOG("KEY_SEND_SPEECH_START \n");
app_protocol_start_speech_by_key(event);
break;
case KEY_SEND_SPEECH_STOP:
APP_PROTOCOL_LOG("KEY_SEND_SPEECH_STOP \n");
app_protocol_stop_speech_by_key();
break;
#endif
}
return ret;
}
#endif