if(iis_rx_exc_data_len)//不要多余数据
{
printf("前面数据可能是上一个音频残留,丢掉:len:%d,iis_rx_exc_data_len:%d",len,iis_rx_exc_data_len);
- if(iis_rx_exc_data_len>len)
+ if(iis_rx_exc_data_len>len){
iis_rx_exc_data_len-=len;
- else
+ }
+ else{
iis_rx_exc_data_len = 0;
-
+ }
return len;
}
if(!dac_cbuffer)
{
check_bt_active=0;
BT_state = 1;
- __set_bt_esco_by_watch(1);
- user_emitter_cmd_prepare(USER_CTRL_CONN_SCO,0,NULL);
- user_emitter_cmd_prepare(USER_CTRL_HFP_CALL_LAST_NO,0,NULL);
+ printf("open_bt_audio get_call_status:%d",get_call_status());
+ if(get_call_status() != BT_CALL_ACTIVE){ //不在通话的时候才需要重新建立
+ __set_bt_esco_by_watch(1);
+ user_emitter_cmd_prepare(USER_CTRL_CONN_SCO,0,NULL);
+ user_emitter_cmd_prepare(USER_CTRL_HFP_CALL_LAST_NO,0,NULL);
+ }
gpio_direction_output(TCFG_AUDIO_DAC_PA_PORT, 0); //
}
void close_bt_audio(void)
{
printf("close_bt_audio get_call_status:%d",get_call_status());
- if(get_call_status() != BT_CALL_HANGUP){ //å¦\82æ\9e\9cæ\98¯ä¸»å\8a¨æ\8c\82æ\96ç\9a\84ä¸\8dé\9c\80è¦\81å\86\8dé\87\8då¤\8dæ\8c\82æ\96
+ if(get_call_status() != BT_CALL_HANGUP){ //没æ\8c\82æ\96é\9c\80è¦\81æ\8c\82æ\96 å·²ç»\8fæ\8c\82æ\96äº\86ä¸\8dé\9c\80è¦\81å\86\8dæ\8c\82æ\96
user_emitter_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP,0,NULL);
}
-
}
#if EN_AEC
//extern void uart_demo();
#include "BK_versions.h"
#include "btstack/avctp_user.h"
int ut=0;
+static u8 uart_init_flag = 0;
OS_SEM uart_callback;
char read_ack_flag= 0;
char ota_flag = 0;
}
void bk_uart_send_smg(bk_uart_msg_event event,char *data,int data_len)
{
- char *data_tmp =NULL;
- if(data !=NULL && data_len>0)
+ if(!uart_init_flag){ //串口没有初始化不能发送串口消息
+ printf("bk_uart_task_init is not init error");
+ return;
+ }
+ char *data_tmp =NULL;
+ if(data !=NULL && data_len>0)
+ {
+ data_tmp= zalloc(data_len);
+ if(data_tmp)
{
- data_tmp= zalloc(data_len);
- if(data_tmp)
- {
- memcpy(data_tmp,data ,data_len);
-
- }else
- {
-
- log_info("%s:zalloc error",__FUNCTION__);
- return;
- }
- }
-
- int ret = os_taskq_post_msg("bk_uart_task", 3, event,(int)data_tmp, data_len);
- printf("bk_uart_send_smg event:%d ret:%d--------------------1",event,ret);
- // if(ret)
- // {
- // u8 count=20;
- // while (count--)
- // {
- // ret = os_taskq_post_msg("bk_uart_task", 3, event,(int)data_tmp, data_len);
- // if(!ret){
- // printf("bk_uart_send_smg event:%d ret:%d--------------------2",event,ret);
- // break;
- // }
- // printf("bk_uart_send_smg event:%d ret:%d--------------------3",event,ret);
- // os_time_dly(1);
- // }
- // }
- if(ret != 0 && data_tmp)
+ memcpy(data_tmp,data ,data_len);
+
+ }else
{
- free(data_tmp);
+
+ log_info("%s:zalloc error",__FUNCTION__);
+ return;
}
+ }
+
+ int ret = os_taskq_post_msg("bk_uart_task", 3, event,(int)data_tmp, data_len);
+ printf("bk_uart_send_smg event:%d ret:%d--------------------1",event,ret);
+ // if(ret)
+ // {
+ // u8 count=20;
+ // while (count--)
+ // {
+ // ret = os_taskq_post_msg("bk_uart_task", 3, event,(int)data_tmp, data_len);
+ // if(!ret){
+ // printf("bk_uart_send_smg event:%d ret:%d--------------------2",event,ret);
+ // break;
+ // }
+ // printf("bk_uart_send_smg event:%d ret:%d--------------------3",event,ret);
+ // os_time_dly(1);
+ // }
+ // }
+ if(ret != 0 && data_tmp)
+ {
+ free(data_tmp);
+ }
}
void bk_uart_init()
}
uart_dump();
+ uart_init_flag=0;
//int err = os_task_create(bk_uart_task, NULL, 31, 512, 256, "bk_uart_task");
int err =task_create(bk_uart_task, NULL, "bk_uart_task");
if (err != OS_ERR_NONE) {
r_printf("creat fail %x\n", err);
+ }else{
+ uart_init_flag=1;
}
//uart_timer_init();
#include "aec_user.h"
#include "bk_alg.h"
//获取运行状态,返回0代表在休眠,返回1代表在运行
+static u8 bk_app_task_init = 0;
char get_ai_state(void)
{
return AI_start_flag;
}
void bk_app_send_smg(bk_app_msg_event event,char *data,int data_len)
{
- char *data_tmp =NULL;
- if(data !=NULL && data_len>0)
+ if(!bk_app_task_init)
+ {
+ printf("bk_app_task_init is not init error");
+ return;
+ }
+ char *data_tmp =NULL;
+ if(data !=NULL && data_len>0)
+ {
+ data_tmp= zalloc(data_len);
+ if(data_tmp)
{
- data_tmp= zalloc(data_len);
- if(data_tmp)
- {
- memcpy(data_tmp,data ,data_len);
-
- }else
- {
-
- log_info("%s:zalloc error",__FUNCTION__);
- return;
- }
- }
-
- int ret = os_taskq_post_msg("bk_app_task", 3, event,(int)data_tmp, data_len);
- printf("event:%d ret:%d--------------------1",event,ret);
- if(ret)
+ memcpy(data_tmp,data ,data_len);
+
+ }else
{
- u8 count=20;
- while (count--)
- {
- ret = os_taskq_post_msg("bk_app_task", 3, event,(int)data_tmp, data_len);
- if(!ret){
- printf("event:%d ret:%d--------------------2",event,ret);
- break;
- }
- printf("event:%d ret:%d--------------------3",event,ret);
- os_time_dly(1);
- }
+
+ log_info("%s:zalloc error",__FUNCTION__);
+ return;
}
- if(ret != 0 && data_tmp)
+ }
+
+ int ret = os_taskq_post_msg("bk_app_task", 3, event,(int)data_tmp, data_len);
+ printf("event:%d ret:%d--------------------1",event,ret);
+ if(ret)
+ {
+ u8 count=20;
+ while (count--)
{
- free(data_tmp);
+ ret = os_taskq_post_msg("bk_app_task", 3, event,(int)data_tmp, data_len);
+ if(!ret){
+ printf("event:%d ret:%d--------------------2",event,ret);
+ break;
+ }
+ printf("event:%d ret:%d--------------------3",event,ret);
+ os_time_dly(1);
}
+ }
+ if(ret != 0 && data_tmp)
+ {
+ free(data_tmp);
+ }
}
void bk_app_task(void *p)
gpio_write(IO_PORTA_06,1);
// while(1)
// ;
-
+ bk_app_task_init=0;
err = os_task_create(bk_app_task, NULL, 3, 512, 512, "bk_app_task");
//int err = task_create(bk_app_task, NULL, "bk_app_task");
if (err != OS_ERR_NONE) {
r_printf("creat fail %x\n", err);
+ }else{
+ bk_app_task_init=1;
}
//AI_VC_1S_id = sys_timer_add(NULL, AI_VC_1S_cb, 1000);
alg_init();//算法初始化
//关闭经典蓝牙先断开已连接的设备
void disconected_device(void){
if (bt_connect) { //搜索前断开已连接得蓝牙耳机
- user_emitter_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP,0,NULL);
+ if(get_call_status() != BT_CALL_HANGUP){ //如果是主动挂断的不需要再重复挂断
+ user_emitter_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP,0,NULL);
+ }
+ // user_emitter_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP,0,NULL);
user_emitter_cmd_prepare(USER_CTRL_DISCONNECTION_HCI, 0, NULL);
}
}
return;
}
if(bt_connect){
- user_emitter_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP,0,NULL);
+ if(get_call_status() != BT_CALL_HANGUP){ //如果是主动挂断的不需要再重复挂断
+ user_emitter_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP,0,NULL);
+ }
user_emitter_cmd_prepare(USER_CTRL_DISCONNECTION_HCI, 0, NULL);
}
scan_state = 1;
// }
if(conect){ //断开连接
if (bt_connect) { //搜索前断开已连接得蓝牙耳机
- user_emitter_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP,0,NULL);
+ if(get_call_status() != BT_CALL_HANGUP){ //如果是主动挂断的不需要再重复挂断
+ user_emitter_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP,0,NULL);
+ }
user_emitter_cmd_prepare(USER_CTRL_DISCONNECTION_HCI, 0, NULL);
}
return;
if(bt_connect == 2) //已经连上了看看连接的地址是否一致
{
if (memcmp(bt_conn_addr, reversed_mac, 6) != 0){//如果连上了并且和小程序下发得mac地址是一致不需要重新连接
- user_emitter_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP,0,NULL);
+ if(get_call_status() != BT_CALL_HANGUP){ //如果是主动挂断的不需要再重复挂断
+ user_emitter_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP,0,NULL);
+ }
user_emitter_cmd_prepare(USER_CTRL_DISCONNECTION_HCI, 0, NULL); //
emitter_bt_connect(reversed_mac);//连接地址
}