mcu_ab568x/app/projects/AB5681F_240_64M/functions/func_bt.c
2025-05-30 18:03:10 +08:00

799 lines
24 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 "include.h"
#include "func.h"
#include "func_bt.h"
#include "app_variable.h"
#define TRACE_EN 0
#if TRACE_EN
#define TRACE(...) printf(__VA_ARGS__)
#else
#define TRACE(...)
#endif
#define TITLE_BUF_LEN 128 //歌词buuufer长度
#define ARTIST_BUF_LEN 128 //歌词buuufer长度
#define MOVE_OFFSET_X 35 // 图片icon可供水平移动的距离
#define MAX_MOVE_X 158 // 图片icon可供水平移动的距离
enum {
COMPO_ID_BTN_PREV = 1,
COMPO_ID_BTN_NEXT,
COMPO_ID_BTN_PLAY,
COMPO_ID_BTN_VOL_UP,
COMPO_ID_BTN_VOL_DOWN,
COMPO_ID_TXT_MUSIC_NAME,
COMPO_ID_TXT_MUSIC_LYRIC,
// COMPO_ID_PIC_MUSIC_VOL,
COMPO_ID_SHAPE_MUSIC_VOL,
COMPO_ID_SHAPE_MUSIC_VOL_CIR,
COMPO_ID_BTN_MUSIC_VOL,
COMPO_ID_BTN_MUSIC_LEFT,
COMPO_ID_BTN_MUSIC_RIGHT,
};
typedef struct f_bt_t_ {
bool ams_play_sta;
bool bt_play_sta;
u8 vol;
u8 ams_vol;
u16 move_vol_x;
u16 move_vol;
u8 title_buf[TITLE_BUF_LEN];
u8 artist_buf[ARTIST_BUF_LEN];
bool page_drag_flag; //按住标志
u32 start_x; //滑动开始的x坐标
u32 start_y; //滑动开始的y坐标
bool click_flag; // 点击标志位
u32 click_time; //记录点击时间
u16 last_x; //最后x停留的位置
} f_bt_t;
/*****************************************************************************
* 1.当BT连接时优先同步id3信息控制通道走BT
* 2.当只连接BLE时IOS走AMS服务安卓走私有协议
*****************************************************************************/
static void func_bt_music_title_refresh(void *buf);
static void func_bt_music_artist_refresh(void *buf);
static void func_bt_music_play_btnpic_refresh(u8 sta);
static void func_bt_music_vol_btnpic_refresh(u8 vol);
/*****************************************************************************
* BT or BLE interface
*****************************************************************************/
void func_bt_mp3_res_play(u32 addr, u32 len)
{
if (len == 0) {
return;
}
bt_cb.res_bt_bypass = true;
if (!sbc_is_bypass()) {
bt_audio_bypass();
}
mp3_res_play(addr, len);
}
void func_bt_mp3_play_restore(void)
{
if (bt_cb.res_bt_bypass) {
bt_cb.res_bt_bypass = false;
bt_audio_enable();
}
}
void func_bt_init(void)
{
if (!bt_cb.bt_is_inited) {
msg_queue_clear();
dis_auto_pwroff();
bsp_bt_init();
bt_redial_init();
bt_cb.bt_is_inited = 1;
}
}
void func_bt_chk_off(void)
{
if ((func_cb.sta != FUNC_BT) && (bt_cb.bt_is_inited)) {
bt_disconnect(1);
bt_off();
bt_cb.bt_is_inited = 0;
}
}
//播放暂停控制
static void bt_control_play_pause(void)
{
//f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb;
if (bt_is_connected()) {
bt_music_play_pause();
bt_cb.music_playing = bt_cb.music_playing ? 0:1;
} else if (ble_ams_is_connected()) {
ble_ams_remote_ctrl(AMS_REMOTE_CMD_PLAY_PAUSE);
bt_cb.music_playing = bt_cb.music_playing ? 0:1;
}
else{
func_popup_new(POPUP_ID_BT_REMIND);
}
}
//切换上一曲
static void bt_control_prev(void)
{
if (bt_is_connected()) {
bt_music_prev();
} else if (ble_ams_is_connected()) {
ble_ams_remote_ctrl(AMS_REMOTE_CMD_PREV_TRACK);
}
else{
func_popup_new(POPUP_ID_BT_REMIND);
}
}
//切换下一曲
static void bt_control_next(void)
{
if (bt_is_connected()) {
bt_music_next();
} else if (ble_ams_is_connected()) {
ble_ams_remote_ctrl(AMS_REMOTE_CMD_NEXT_TRACK);
}
else{
func_popup_new(POPUP_ID_BT_REMIND);
}
}
//音量更新
static void bt_vol_update(void)
{
if (!bt_cb.bt_form_created) {
return ;
}
f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb;
bool vol_uodate_flag = false;
if (bt_is_connected()) {
if (f_bt->vol != SysVariable.vol) {
f_bt->vol = SysVariable.vol;
vol_uodate_flag = true;
}
} else if (ble_ams_is_connected()) {
if (f_bt->vol != f_bt->ams_vol) {
f_bt->vol = f_bt->ams_vol;
vol_uodate_flag = true;
}
}
if (vol_uodate_flag) {
func_bt_music_vol_btnpic_refresh(f_bt->vol);
}
}
//音量控制+
static void bt_control_vol_up(void)
{
if (bt_is_connected()) {
bt_volume_up();
} else if (ble_ams_is_connected()) {
ble_ams_remote_ctrl(AMS_REMOTE_CMD_VOL_UP);
}
else{
func_popup_new(POPUP_ID_BT_REMIND);
}
bt_vol_update();
}
//音量控制-
static void bt_control_vol_down(void)
{
if (bt_is_connected()) {
bt_volume_down();
} else if (ble_ams_is_connected()) {
ble_ams_remote_ctrl(AMS_REMOTE_CMD_VOL_DOWN);
}
else{
func_popup_new(POPUP_ID_BT_REMIND);
}
bt_vol_update();
}
#if LE_AMS_CLIENT_EN
//AMS推送状态更新处理
static void ble_ams_sta_update_handle(u8 sta, void *p_data, u16 len)
{
if (bt_is_connected() || !ble_ams_is_connected() || !bt_cb.bt_form_created) {
return ;
}
f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb;
switch (sta) {
case BLE_AMS_STA_UPDATE_PAUSE:
{
f_bt->ams_play_sta = false;
func_bt_music_play_btnpic_refresh(false);
}
break;
case BLE_AMS_STA_UPDATE_PLAYING:
{
f_bt->ams_play_sta = true;
func_bt_music_play_btnpic_refresh(true);
}
break;
case BLE_AMS_STA_UPDATE_VOLUME:
{
u32 volume = GET_LE32(p_data);
f_bt->ams_vol = volume / 625;
bt_vol_update();
TRACE("ams volume:%d, ams_vol:%d\n", volume, f_bt->ams_vol);
}
break;
case BLE_AMS_STA_UPDATE_TITLE:
{
char *title = (char *)p_data;
if (strlen(title)) {
memcpy(f_bt->title_buf,title,TITLE_BUF_LEN - 1);
msg_enqueue(EVT_ID3_TITLE_UPDATE);
TRACE("ams title:%s\n",title);
}
}
break;
case BLE_AMS_STA_UPDATE_ALBUM:
{
char * album = (char *)p_data;
if (strlen(album)) {
memcpy(f_bt->artist_buf,album,ARTIST_BUF_LEN - 1);
msg_enqueue(EVT_ID3_ARTIST_UPDATE);
TRACE("ams album:%s\n",album);
}
}
break;
case BLE_AMS_STA_UPDATE_ARTIST:
{
char * artist = (char *)p_data;
if (strlen(artist)) {
memcpy(f_bt->artist_buf,artist,ARTIST_BUF_LEN - 1);
msg_enqueue(EVT_ID3_ARTIST_UPDATE);
TRACE("ams artist:%s\n",artist);
}
}
break;
case BLE_AMS_STA_UPDATE_APP_NAME:
{
char * app_name = (char *)p_data;
if (strlen(app_name)) {
compo_form_set_title(func_cb.frm_main, app_name);
TRACE("ams app name:%s\n",app_name);
}
}
break;
}
}
#endif // LE_AMS_CLIENT_EN
#if BT_ID3_TAG_EN
//id3信息更新处理
static void bt_id3_tag_update_handle(u8 type, char *str)
{
if (BT_ID3_TAG_TITLE == type) {
memcpy(f_bt->title_buf,str,TITLE_BUF_LEN - 1);
msg_enqueue(EVT_ID3_TITLE_UPDATE);
} else if (BT_ID3_TAG_ARTIST == type) {
memcpy(f_bt->artist_buf,str,ARTIST_BUF_LEN - 1);
msg_enqueue(EVT_ID3_ARTIST_UPDATE);
}
}
#endif // BT_ID3_TAG_EN
/*****************************************************************************
* func_bt_music(UI)
*****************************************************************************/
//创建蓝牙音乐播放器窗体,创建窗体中不要使用功能结构体 func_cb.f_cb
compo_form_t *func_bt_form_create(void)
{
//新建窗体
compo_form_t *frm = compo_form_create(true);
//设置标题栏
compo_form_set_mode(frm, COMPO_FORM_MODE_SHOW_TITLE | COMPO_FORM_MODE_SHOW_TIME);
compo_form_set_title(frm, i18n[STR_MUSIC]);
//歌名
compo_textbox_t *name_txt = compo_textbox_create(frm, 50);
compo_textbox_set_location(name_txt, 2*GUI_SCREEN_WIDTH+5, GUI_SCREEN_CENTER_Y - 100, GUI_SCREEN_WIDTH, 50);
compo_setid(name_txt, COMPO_ID_TXT_MUSIC_NAME);
compo_textbox_set(name_txt, i18n[STR_UNKNOWN]);
//歌词
compo_textbox_t *lyric_txt = compo_textbox_create(frm, 50);
compo_textbox_set_location(lyric_txt, 2*GUI_SCREEN_WIDTH+5, GUI_SCREEN_CENTER_Y - 50, GUI_SCREEN_WIDTH, 50);
compo_setid(lyric_txt, COMPO_ID_TXT_MUSIC_LYRIC);
compo_textbox_set(lyric_txt, i18n[STR_UNKNOWN]);
//新建图片 大背景
compo_form_add_image(frm, UI_BUF_MUSIC_BG_BIN, GUI_SCREEN_CENTER_X, 108);
//新建按钮
compo_button_t *btn;
//播放或暂停按钮
if (bt_cb.music_playing) {
btn = compo_button_create_by_image(frm, UI_BUF_MUSIC_PAUSE_CLICK_BIN);
} else {
btn = compo_button_create_by_image(frm, UI_BUF_MUSIC_PAUSE_BIN);
}
compo_setid(btn, COMPO_ID_BTN_PLAY);
compo_button_set_pos(btn, GUI_SCREEN_CENTER_X, 108);
//上一曲 按钮
btn = compo_button_create_by_image(frm, UI_BUF_MUSIC_PREV_CLICK_BIN);
compo_setid(btn, COMPO_ID_BTN_PREV);
compo_button_set_pos(btn, 41, 209);
compo_shape_t *btn_black = compo_shape_create(frm,COMPO_SHAPE_TYPE_RECTANGLE);
compo_shape_set_color(btn_black, make_color(0xff, 0xff, 0xff));
compo_shape_set_location(btn_black, 197, 209, 60, 60);
//下一曲 按钮
btn = compo_button_create_by_image(frm, UI_BUF_MUSIC_NEXT_CLICK_BIN);
compo_setid(btn, COMPO_ID_BTN_NEXT);
compo_button_set_pos(btn, 197, 209);
//音量 减 图片加按钮
compo_form_add_image(frm, UI_BUF_MUSIC_VOLUME_DOWN_BIN, 25, 268);
btn = compo_button_create(frm);
compo_setid(btn, COMPO_ID_BTN_VOL_DOWN);
compo_button_set_location(btn, 25, 268, 40, 40);
//音量 增 图片加按钮
compo_form_add_image(frm, UI_BUF_MUSIC_VOLUME_UP_BIN, 214, 268);
btn = compo_button_create(frm);
compo_setid(btn, COMPO_ID_BTN_VOL_UP);
compo_button_set_location(btn, 214, 268,40,40);
// 创建灰色按钮
compo_shape_t *grey_shape ;
grey_shape = compo_shape_create(frm,COMPO_SHAPE_TYPE_RECTANGLE);
compo_shape_set_color(grey_shape, make_color(0x00, 0x00, 0x00));
compo_shape_set_location(grey_shape,41, 209,60,60);
compo_shape_set_alpha(grey_shape,200);
compo_setid(grey_shape, COMPO_ID_BTN_MUSIC_LEFT);
compo_shape_set_visible(grey_shape,false);
grey_shape = compo_shape_create(frm,COMPO_SHAPE_TYPE_RECTANGLE);
compo_shape_set_color(grey_shape, make_color(0x00, 0x00, 0x00));
compo_shape_set_location(grey_shape,197, 209,60,60);
compo_shape_set_alpha(grey_shape,200);
compo_setid(grey_shape, COMPO_ID_BTN_MUSIC_RIGHT);
compo_shape_set_visible(grey_shape,false);
//创建音乐 底部浅色 音量 进度条 底部背景
grey_shape = compo_radius_shape_create(frm, COMPO_SHAPE_TYPE_ROUNDED_RECTANGLE,1);
compo_shape_set_color(grey_shape, make_color(143, 143, 146));
compo_shape_set_location(grey_shape, GUI_SCREEN_CENTER_X, 268, MAX_MOVE_X, 4);
//创建音乐 音量 进度条
compo_shape_t *white_shape ;
white_shape = compo_radius_shape_create(frm, COMPO_SHAPE_TYPE_ROUNDED_RECTANGLE,1);
compo_shape_set_color(white_shape, COLOR_WHITE);
compo_shape_set_align_center(white_shape,false);//不居中了,居中后进度条长度不好算
compo_setid(white_shape, COMPO_ID_SHAPE_MUSIC_VOL);
compo_shape_set_location(white_shape, MOVE_OFFSET_X, 266, SysVariable.vol*MAX_MOVE_X/VOL_MAX, 4);
//创建音乐 音量 进度条上的圆圈
compo_shape_t *cir_shape ;
cir_shape = compo_radius_shape_create(frm, COMPO_SHAPE_TYPE_ROUNDED_RECTANGLE,6);
compo_shape_set_color(cir_shape, COLOR_WHITE);
compo_shape_set_align_center(cir_shape,false);//不居中了,居中后进度条长度不好算
compo_setid(cir_shape, COMPO_ID_SHAPE_MUSIC_VOL_CIR);
compo_shape_set_location(cir_shape, SysVariable.vol*MAX_MOVE_X/VOL_MAX+ MOVE_OFFSET_X, 261, 12, 12);
btn = compo_button_create(frm);
compo_setid(btn, COMPO_ID_BTN_MUSIC_VOL);
compo_button_set_location(btn, 120, 261,178,50);
// compo_picturebox_t *vol_pic = compo_picturebox_create(frm, UI_BUF_MUSIC_VOLUME1_BIN);
// compo_setid(vol_pic, COMPO_ID_PIC_MUSIC_VOL);
// compo_picturebox_set_pos(vol_pic, GUI_SCREEN_CENTER_X, 280);
// widget_set_align_center(vol_pic->img, false);
// compo_picturebox_set_visible(vol_pic, false);
return frm;
}
//音乐歌词刷新,没有中文暂时屏蔽
static void func_bt_music_title_refresh(void *buf)
{
if (bt_cb.bt_form_created) {
compo_textbox_t *tilte_txt = compo_getobj_byid(COMPO_ID_TXT_MUSIC_LYRIC);
compo_textbox_set(tilte_txt, buf);
}
}
//音乐 歌名刷新,没有中文暂时屏蔽
static void func_bt_music_artist_refresh(void *buf)
{
if (bt_cb.bt_form_created) {
compo_textbox_t *tilte_art_txt = compo_getobj_byid(COMPO_ID_TXT_MUSIC_NAME);
compo_textbox_set(tilte_art_txt, buf);
}
}
//音乐播放或暂停 按钮刷新
static void func_bt_music_play_btnpic_refresh(u8 sta)
{
if (!bt_cb.bt_form_created) {
return ;
}
compo_button_t *btn = compo_getobj_byid(COMPO_ID_BTN_PLAY);
if (sta) {
compo_button_set_bgimg(btn, UI_BUF_MUSIC_PAUSE_CLICK_BIN);
} else {
compo_button_set_bgimg(btn, UI_BUF_MUSIC_PAUSE_BIN);
}
}
static void func_bt_music_vol_btnpic_refresh(u8 vol)
{
f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb;
compo_shape_t *vol_shape_line;
compo_shape_t *vol_shape_cir;
vol_shape_line = compo_getobj_byid(COMPO_ID_SHAPE_MUSIC_VOL);
vol_shape_cir = compo_getobj_byid(COMPO_ID_SHAPE_MUSIC_VOL_CIR);
f_bt->move_vol_x = vol*MAX_MOVE_X/VOL_MAX;
//进度条不可以不限制因为会被圆挡住,这里在圆超出两个像素的时候往回拉
if(f_bt->move_vol_x >MAX_MOVE_X){
f_bt->move_vol_x = MAX_MOVE_X;
}
printf("vol_shape_line move_vol_x = %d VOL_MAX = %d,vol = %d\n ",f_bt->move_vol_x,VOL_MAX,vol);
compo_shape_set_location(vol_shape_line, MOVE_OFFSET_X, 266, f_bt->move_vol_x, 4);
compo_shape_set_location(vol_shape_cir, MOVE_OFFSET_X + f_bt->move_vol_x, 261, 12, 12);
// switch(vol){
// case 0:
// compo_shape_set_location(vol_shape_line, 41, 266, 0, 4);
// compo_shape_set_location(vol_shape_cir, 35, 261, 12, 12);
// break;
// }
// compo_picturebox_t *vol_pic;
// vol_pic = compo_getobj_byid(COMPO_ID_PIC_MUSIC_VOL);
// switch (vol){
// case 0:
// // compo_picturebox_set(vol_pic, UI_BUF_MUSIC_VOLUME1_BIN);
// // compo_picturebox_set_visible(vol_pic, false);
// break;
// case 1 ... 3:
// // compo_picturebox_set(vol_pic, UI_BUF_MUSIC_VOLUME1_BIN);
// // compo_picturebox_set_visible(vol_pic, true);
// break;
// case 4 ... 6:
// // compo_picturebox_set(vol_pic, UI_BUF_MUSIC_VOLUME2_BIN);
// // compo_picturebox_set_visible(vol_pic, true);
// break;
// case 7 ... 9:
// // compo_picturebox_set(vol_pic, UI_BUF_MUSIC_VOLUME3_BIN);
// // compo_picturebox_set_visible(vol_pic, true);
// break;
// case 10 ... 11:
// // compo_picturebox_set(vol_pic, UI_BUF_MUSIC_VOLUME4_BIN);
// // compo_picturebox_set_visible(vol_pic, true);
// break;
// case 12 ... 16:
// // compo_picturebox_set(vol_pic, UI_BUF_MUSIC_VOLUME5_BIN);
// // compo_picturebox_set_visible(vol_pic, true);
// break;
// }
}
//单击按钮
static void func_bt_button_click(void)
{
f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb;
compo_shape_t *left_shape = compo_getobj_byid(COMPO_ID_BTN_MUSIC_LEFT);
compo_shape_t *right_shape = compo_getobj_byid(COMPO_ID_BTN_MUSIC_RIGHT);
int id = compo_get_button_id();
switch (id) {
case COMPO_ID_BTN_PREV:
bt_control_prev();
f_bt->click_flag=true;
f_bt->click_time=tick_get();
compo_shape_set_visible(left_shape,true);
compo_shape_set_visible(right_shape,false);
break;
case COMPO_ID_BTN_NEXT:
bt_control_next();
f_bt->click_flag=true;
f_bt->click_time=tick_get();
compo_shape_set_visible(left_shape,false);
compo_shape_set_visible(right_shape,true);
break;
case COMPO_ID_BTN_PLAY:
bt_control_play_pause();
break;
case COMPO_ID_BTN_VOL_UP:
bt_control_vol_up();
break;
case COMPO_ID_BTN_VOL_DOWN:
bt_control_vol_down();
break;
default:
break;
}
}
//更改音量tp
static void func_bt_move_vol(void)
{
f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb;
int id = compo_get_button_id();
switch (id) {
case COMPO_ID_BTN_MUSIC_VOL:
f_bt->page_drag_flag=true;
break;
default:
break;
}
}
void func_bt_sub_process(void)
{
bsp_bt_status();
}
void func_bt_process(void)
{
f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb;
s32 dx,dy,x,y,new_time,sx,sy;
bool move;
static u32 ticks,ticks1;
compo_shape_t *vol_shape_line = compo_getobj_byid(COMPO_ID_SHAPE_MUSIC_VOL);
compo_shape_t *vol_shape_cir = compo_getobj_byid(COMPO_ID_SHAPE_MUSIC_VOL_CIR);
compo_shape_t *left_shape = compo_getobj_byid(COMPO_ID_BTN_MUSIC_LEFT);
compo_shape_t *right_shape = compo_getobj_byid(COMPO_ID_BTN_MUSIC_RIGHT);
/* 整体页面拖动事件, 列表拖动时页面不需要移动 */
if (f_bt->page_drag_flag)
{
s32 dx, dy;
s32 sx, sy, x, y;
f_bt->page_drag_flag = ctp_get_cur_point(&sx, &sy, &x, &y);
// printf("f_bt->page_drag_flag = %d\n",f_bt->page_drag_flag) ;
if (f_bt->page_drag_flag)
{
// 拖动页面
f_bt->move_vol_x = x;
if(f_bt->move_vol_x < 0)
{
f_bt->move_vol_x = 0;
}
else if(f_bt->move_vol_x > MAX_MOVE_X){
f_bt->move_vol_x = MAX_MOVE_X;
}
// printf("f_bt->move_vol_x = %d,x = %d,sx = %d\n",f_bt->move_vol_x,x,sx);
compo_shape_set_location(vol_shape_line, MOVE_OFFSET_X, 266, f_bt->move_vol_x, 4);
compo_shape_set_location(vol_shape_cir, MOVE_OFFSET_X + f_bt->move_vol_x, 261, 12, 12);
bt_volume_set(f_bt->move_vol_x*VOL_MAX/MAX_MOVE_X);
}
else
{
}
}
if(f_bt->click_flag==true)
{
new_time=tick_get();
if(new_time-f_bt->click_time>=100) {
f_bt->click_flag=false;
}
}
else{
compo_shape_set_visible(left_shape,false);
compo_shape_set_visible(right_shape,false);
}
func_process();
func_bt_sub_process();
}
//蓝牙音乐消息处理
static void func_bt_message(size_msg_t msg)
{
f_bt_t *f_bt = (f_bt_t *)func_cb.f_cb;
u32 sx,sy;
switch (msg) {
case MSG_CTP_TOUCH:
func_bt_move_vol();
break;
case MSG_CTP_CLICK:
func_bt_button_click(); //单击按钮
break;
case MSG_QDEC_FORWARD:
bt_control_vol_up();
break;
case MSG_QDEC_BACKWARD:
bt_control_vol_down();
break;
case EVT_ID3_TITLE_UPDATE:
func_bt_music_title_refresh(f_bt->title_buf);
break;
case EVT_ID3_ARTIST_UPDATE:
func_bt_music_artist_refresh(f_bt->artist_buf);
break;
case MSG_SYS_500MS:
if (bt_is_connected() && !sys_cb.gui_sleep_sta) {
#if BT_ID3_TAG_EN
bt_music_paly_status_info();
#endif
if (f_bt->bt_play_sta != bt_cb.music_playing) {
f_bt->bt_play_sta = bt_cb.music_playing;
func_bt_music_play_btnpic_refresh(bt_cb.music_playing);
}
bt_vol_update();
}
else if (!bt_is_connected())
{
bt_cb.music_playing = false;
if (f_bt->bt_play_sta != bt_cb.music_playing)
{
f_bt->bt_play_sta = bt_cb.music_playing;
func_bt_music_play_btnpic_refresh(bt_cb.music_playing);
}
}
break;
case MSG_CTP_SHORT_RIGHT:
case MSG_CTP_SHORT_LEFT:
//if(f_bt->move_flag==true||f_bt->start_x<=SysVariable.hfp_vol*10+15&&f_bt->start_x>=SysVariable.hfp_vol*10-15&&f_bt->start_y>=261-15)
if(f_bt->page_drag_flag==true)
{
break;
}
else
{
func_message(msg);
}
break;
default:
func_message(msg);
break;
}
}
void func_bt_enter(void)
{
f_bt_t *f_bt;
func_cb.f_cb = func_zalloc(sizeof(f_bt_t));
func_cb.frm_main = func_bt_form_create();
f_bt = (f_bt_t *)func_cb.f_cb;
func_cb.mp3_res_play = func_bt_mp3_res_play;
bt_cb.bt_form_created = 1;
f_bt->bt_play_sta = bt_cb.music_playing;
f_bt->ams_play_sta = false;
f_bt->vol = 0;
f_bt->last_x=SysVariable.vol*MAX_MOVE_X/VOL_MAX+ MOVE_OFFSET_X;
func_bt_music_play_btnpic_refresh(bt_cb.music_playing);
#if LE_AMS_CLIENT_EN
if (ble_ams_is_connected()) {
if (ble_ams_cb.play_state) {
f_bt->ams_play_sta = true;
func_bt_music_play_btnpic_refresh(1);
}
f_bt->ams_vol = ble_ams_cb.vol;
func_bt_music_vol_btnpic_refresh(f_bt->ams_vol);
if (strlen(ble_ams_cb.app_name)) {
compo_form_set_title(func_cb.frm_main, ble_ams_cb.app_name);
}
}
ble_ams_sta_update_cb_reg(ble_ams_sta_update_handle);
#endif
bt_id3_tag_update_cb_reg(bt_id3_tag_update_handle);
#if !BT_BACKSTAGE_MUSIC_EN
func_bt_init();
bt_audio_enable();
#if DAC_DNR_EN
dac_dnr_set_sta(1);
sys_cb.dnr_sta = 1;
#endif
#endif // !BT_BACKSTAGE_MUSIC_EN
}
void func_bt_exit(void)
{
#if !BT_BACKSTAGE_MUSIC_EN
dac_fade_out();
#if DAC_DNR_EN
dac_dnr_set_sta(0);
sys_cb.dnr_sta = 0;
#endif
bt_audio_bypass();
#if !BT_BACKSTAGE_EN
bt_disconnect(1);
bt_off();
bt_cb.bt_is_inited = 0;
#else
if (bt_get_status() == BT_STA_PLAYING && !bt_is_testmode()) { //蓝牙退出停掉音乐
delay_5ms(10);
if(bt_get_status() == BT_STA_PLAYING) { //再次确认play状态
u32 timeout = 850; //8.5s
bt_music_pause();
while (bt_get_status() == BT_STA_PLAYING && timeout > 0) {
timeout--;
delay_5ms(2);
}
}
}
#endif // !BT_BACKSTAGE_EN
#endif // !BT_BACKSTAGE_MUSIC_EN
ble_ams_sta_update_cb_unreg();
bt_id3_tag_update_cb_unreg();
bt_cb.bt_form_created = 0;
bt_cb.rec_pause = 0;
func_cb.last = FUNC_BT;
}
void func_bt(void)
{
printf("%s\n", __func__);
func_bt_enter();
while (func_cb.sta == FUNC_BT) {
func_bt_process();
func_bt_message(msg_dequeue());
}
func_bt_exit();
}
TJD_BT_STATUS_E tjd_get_bt_connect_status(void)
{
TJD_BT_STATUS_E status;
if (ble_is_connected() && bt_is_connected()) {
status = TJD_BT_EDR_BLE_CONNECT;
} else if (bt_is_connected()) {
status = TJD_BT_EDR_CONNECT;
} else if (ble_is_connected() ) {
status = TJD_BT_BLE_CONNECT;
} else {
status = TJD_BT_NOT_CONNECT;
}
return status;
}