KT24-1110_65E-HA-651B/apps/soundbox/third_party_profile/app_protocol_deal.c
2024-11-10 18:44:17 +08:00

99 lines
2.5 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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