From: dxy <1731678236qq.com> Date: Tue, 30 Sep 2025 06:30:26 +0000 (+0800) Subject: 1、死机问题 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=fdb473f1f570be2a2ddd6435cd9d4a2f3242a4d7;p=mirrors%2F7PIN_V1_5_Jl_SDK.git 1、死机问题 2、删除耳机key不再重连 --- diff --git a/2.code/1.sdk/apps/BK_app/BK_drive/bk_audio.c b/2.code/1.sdk/apps/BK_app/BK_drive/bk_audio.c index cb2be86..a41fbab 100644 --- a/2.code/1.sdk/apps/BK_app/BK_drive/bk_audio.c +++ b/2.code/1.sdk/apps/BK_app/BK_drive/bk_audio.c @@ -199,18 +199,25 @@ static void bk_iis_rx_cb(void *priv, void *buf, int len) static i = 0; int rlen ; // putchar('s'); - char *tmpbuf = zalloc(len); - if(tmpbuf) + char *single_buf = zalloc(len*2); + if(single_buf) { - //printf("bk_iis_rx_cb:,len:%d",len); - //pcm_LR_to_mono((s16*)buf, (s16 *)tmpbuf, len/4); - // wlen = app_audio_output_write(alink_demo_hdl->tmpbuf,cbuf_len/2); - - pcm_dual_to_single(tmpbuf, buf,len*2); - //rlen = dac_write_pcm((char *)tmpbuf,len/2); - audio_link_demo_RX_data((char *)tmpbuf,len/2); - - free(tmpbuf); + // char *dual_buf = zalloc(len*2); + // if(dual_buf) + { + //memcpy(dual_buf,buf,len*2); + //pcm_LR_to_mono(dual_buf,single_buf,len/2); + //printf("bk_iis_rx_cb1:%x %d",buf,len); + //pcm_LR_to_mono((s16*)buf, (s16 *)single_buf, len/4); + // wlen = app_audio_output_write(alink_demo_hdl->single_buf,cbuf_len/2); + + pcm_dual_to_single(single_buf, buf,len); + //printf("bk_iis_rx_cb2"); + //rlen = dac_write_pcm((char *)single_buf,len/2); + audio_link_demo_RX_data((char *)single_buf,len/2); + //free(dual_buf); + } + free(single_buf); }else { log_info("%s: alloc ERROR!!!!!!",__FUNCTION__); @@ -462,7 +469,9 @@ int audio_link_demo_RX_data(char *data, int len) } void *c_data = cbuf_write_alloc(dac_cbuffer, &wlen); if (wlen < len ) { + printf("CBUF NO ENOUGH MEMORY!1"); ASSERT(0, "CBUF NO ENOUGH MEMORY!!!"); + printf("CBUF NO ENOUGH MEMORY!2"); } //log_info("%s2:len!!!!!!",__FUNCTION__,len); //pcm_single_to_dual(data, data, len); diff --git a/2.code/1.sdk/apps/BK_app/BK_drive/bk_uart.c b/2.code/1.sdk/apps/BK_app/BK_drive/bk_uart.c index afc158d..45c8b62 100644 --- a/2.code/1.sdk/apps/BK_app/BK_drive/bk_uart.c +++ b/2.code/1.sdk/apps/BK_app/BK_drive/bk_uart.c @@ -14,6 +14,7 @@ #include "bk_uart.h" #include "BK_versions.h" #include "btstack/avctp_user.h" +#define UART_RECV_MAX_COUNT 512 //可更改串口发送数据最大长度 int ut=0; static u8 uart_send_flag = 0; static u8 uart_recv_flag = 0; @@ -239,11 +240,11 @@ void bk_uart_recv_task(void *p) if(uart_timer_id == 0)//有数据启动定时器 uart_timer_id = sys_timer_add(NULL, uart_timer_cb, 10); uart_timer_count = 0; - if(uart_data_len+512>uart_read_buf_len) + if(uart_data_len+UART_RECV_MAX_COUNT>uart_read_buf_len) { uart_data_len = 0; } - int r = uart_recv_blocking(ut, uart_dma_buf, 512, 10); + int r = uart_recv_blocking(ut, uart_dma_buf, UART_RECV_MAX_COUNT, 10); if (r > 0) { memcpy(uart_data+uart_data_len,(u8 *)uart_dma_buf,r); //log_info("分段数据!***len:%d uart_data_len:%d*****", r,uart_data_len); @@ -447,8 +448,8 @@ void bk_uart_init() .parity = UART_PARITY_DISABLE, }; if(uart_dma_buf == NULL) - uart_dma_buf = dma_malloc(512); - memset(uart_dma_buf,0,512); + uart_dma_buf = dma_malloc(UART_RECV_MAX_COUNT); + memset(uart_dma_buf,0,UART_RECV_MAX_COUNT); if(uart_data == NULL) { uart_data = zalloc(uart_read_buf_len); @@ -458,7 +459,7 @@ void bk_uart_init() struct uart_dma_config dma = { .rx_timeout_thresh = 500, - .frame_size = 512, + .frame_size = UART_RECV_MAX_COUNT, .event_mask = UART_EVENT_RX_DATA|UART_EVENT_RX_TIMEOUT, .tx_wait_mutex = 0, .irq_priority = 6, @@ -523,7 +524,7 @@ int uart_send_AI_key_even(void) } // 打印JSON字符串 - bk_uart_send_smg(BK_UART_WRITE_DATA,json_string,strlen(json_string)); + bk_uart_send_smg(BK_UART_WRITE_DATA_ACK,json_string,strlen(json_string)); //bk_uart_send_smg(BK_UART_WRITE_DATA,json_string,strlen(json_string));(ut, json_string, strlen(json_string), 20); // 释放内存 cJSON_free(json_string); @@ -551,7 +552,7 @@ int uart_send_BT_AI_key_even(void) } // 打印JSON字符串 - bk_uart_send_smg(BK_UART_WRITE_DATA,json_string,strlen(json_string)); + bk_uart_send_smg(BK_UART_WRITE_DATA_ACK,json_string,strlen(json_string)); //bk_uart_send_smg(BK_UART_WRITE_DATA,json_string,strlen(json_string));(ut, json_string, strlen(json_string), 20); // 释放内存 cJSON_free(json_string); @@ -578,7 +579,7 @@ int uart_send_PWR_key_even(void) } printf("JSON数据: %s\n", json_string); - bk_uart_send_smg(BK_UART_WRITE_DATA,json_string,strlen(json_string)); + bk_uart_send_smg(BK_UART_WRITE_DATA_ACK,json_string,strlen(json_string)); // (ut, json_string, strlen(json_string), 20); // 释放内存 cJSON_free(json_string); @@ -721,15 +722,15 @@ int uart_send_bt_list(u8 *data) u16 len_tmp = 0; u16 data_flag = 1; u16 date_len = strlen(data); - if (date_len >= 512){ + if (date_len >= UART_RECV_MAX_COUNT){ while (data_flag) { //531 - if (date_len >= 512){ + if (date_len >= UART_RECV_MAX_COUNT){ printf("uart_send_bt_list 1"); - bk_uart_send_smg(BK_UART_WRITE_DATA, data+len_tmp,512); - // uart_send_blocking(ut, data+len_tmp, 512, 200); - len_tmp+=512; + bk_uart_send_smg(BK_UART_WRITE_DATA, data+len_tmp,UART_RECV_MAX_COUNT); + // uart_send_blocking(ut, data+len_tmp, UART_RECV_MAX_COUNT, 200); + len_tmp+=UART_RECV_MAX_COUNT; }else{ if(date_len >= 0){ printf("uart_send_bt_list 2"); @@ -741,7 +742,7 @@ int uart_send_bt_list(u8 *data) break; //最后一包 } //532 - date_len=date_len-512; + date_len=date_len-UART_RECV_MAX_COUNT; if(date_len <= 0){ data_flag = 0; break; @@ -785,7 +786,7 @@ int uart_send_versions(void) } printf("JSON数据: %s\n", json_string); - bk_uart_send_smg(BK_UART_WRITE_DATA,json_string,strlen(json_string)); + bk_uart_send_smg(BK_UART_WRITE_DATA_ACK,json_string,strlen(json_string)); // (ut, json_string, strlen(json_string), 20); // 释放内存 cJSON_free(json_string); @@ -1141,23 +1142,54 @@ void print_hex(char *data ,int len) //清楚蓝牙耳机连接记录 extern u8 *get_cur_connect_emitter_mac_addr(void); extern void delete_link_key(bd_addr_t *bd_addr, u8 id); -void clear_earphone_record(void){ - if(bt_connect){ - user_emitter_cmd_prepare(USER_CTRL_DISCONNECTION_HCI, 0, NULL); +u8 delete_key_flag = 0; +void send_clear_earphone_key_msg(void) +{ + printf("send_clear_earphone_key_ms:%s %d",__func__,delete_key_flag); + if(delete_key_flag){ + bk_app_send_smg(DELETE_BT_KEY,NULL,0); } - delete_last_device_from_vm(); - u8 delete_mac[6]={0}; - uart_send_clear_earphoneok(); - printf("删除连接密钥!!!!!!!"); - if(memcmp(bt_conn_addr,"\0\0\0\0\0\0",6) != 0){ - printf("删除连接密钥:%02X:%02X:%02X:%02X:%02X:%02X",bt_conn_addr[5],bt_conn_addr[4],bt_conn_addr[3],bt_conn_addr[2],bt_conn_addr[1],bt_conn_addr[0]); - for (u8 i = 0; i < 6; i++) - { - delete_mac[i]=bt_conn_addr[5-i]; - } - printf("连接密钥:%02X:%02X:%02X:%02X:%02X:%02X",delete_mac[5],delete_mac[4],delete_mac[3],delete_mac[2],delete_mac[1],delete_mac[0]); - // delete_link_key((bd_addr_t *)delete_mac,1); - +} +extern void connect_target_mac();//先断开再去连接目标设备 +extern u8 delete_target_mac[6]; //需要删除的目标mac地址key +u8 ai_delete_key = 0; //通过AI对话删除连接设备key +u8 reconnect_dev = 0; +void clear_earphone_key(void) //清除设备key不再回连旧的设备 +{ + printf("delete_key_flag:%s %d %02X:%02X:%02X:%02X:%02X:%02X",__func__,delete_key_flag,delete_target_mac[0],delete_target_mac[1],\ + delete_target_mac[2],delete_target_mac[3],delete_target_mac[4],delete_target_mac[5]); + if(delete_key_flag){ + delete_key_flag=0; + printf("delete_last_device_from_vm start"); + reconnect_dev=1; + // user_send_cmd_prepare(USER_CTRL_DEL_ALL_REMOTE_INFO, 0, NULL); + delete_last_device_from_vm(); + printf("delete_last_device_from_vm end"); + } + if(!ai_delete_key) + { + connect_target_mac(); + } + ai_delete_key=0; + delete_key_flag=0; +} +//通过AI对话删除bt的key标识 +void clear_earphone_record(void){ + printf("bt_connect:%s %d",__func__,bt_connect); + ai_delete_key=0; + delete_key_flag=0; + if(bt_connect==2){ + ai_delete_key=1; + delete_key_flag=1; + user_emitter_cmd_prepare(USER_CTRL_DISCONNECTION_HCI, 0, NULL); //蓝牙耳机连接先断开再删除 + uart_send_clear_earphoneok(); + return; + }else{ + ai_delete_key=1; + delete_key_flag=1; + send_clear_earphone_key_msg(); + uart_send_clear_earphoneok(); + return; } } int uart_send_clear_earphoneok(void) diff --git a/2.code/1.sdk/apps/BK_app/BK_drive/bk_uart.h b/2.code/1.sdk/apps/BK_app/BK_drive/bk_uart.h index 45ca19c..cb058d3 100644 --- a/2.code/1.sdk/apps/BK_app/BK_drive/bk_uart.h +++ b/2.code/1.sdk/apps/BK_app/BK_drive/bk_uart.h @@ -29,4 +29,6 @@ int uart_send_clear_earphoneok(void); void print_hex(char *data ,int len); int uart_send_BT_AI_key_even(void); void bk_uart_recv_smg(bk_uart_msg_event event,char *data,int data_len); +void clear_earphone_key(void); +void send_clear_earphone_key_msg(void); #endif diff --git a/2.code/1.sdk/apps/BK_app/bk_app.c b/2.code/1.sdk/apps/BK_app/bk_app.c index a5a9d39..95837fd 100644 --- a/2.code/1.sdk/apps/BK_app/bk_app.c +++ b/2.code/1.sdk/apps/BK_app/bk_app.c @@ -364,7 +364,10 @@ void bk_app_task(void *p) break; case RECV_CONNECT_BT: connect_bt(data,0);//开始连接蓝牙耳机设备 - break; + break; + case DELETE_BT_KEY: + clear_earphone_key(); + break; default: break; } diff --git a/2.code/1.sdk/apps/BK_app/bk_app.h b/2.code/1.sdk/apps/BK_app/bk_app.h index dd00078..efca3a9 100644 --- a/2.code/1.sdk/apps/BK_app/bk_app.h +++ b/2.code/1.sdk/apps/BK_app/bk_app.h @@ -30,7 +30,8 @@ typedef enum BT_SCAN_SWITCH, BT_GET_IMEI, RECV_DISCONNECT_BT, - RECV_CONNECT_BT + RECV_CONNECT_BT, + DELETE_BT_KEY, }bk_app_msg_event; diff --git a/2.code/1.sdk/apps/common/third_party_profile/jieli/trans_data_demo/le_trans_data.c b/2.code/1.sdk/apps/common/third_party_profile/jieli/trans_data_demo/le_trans_data.c index 1fd4062..5a6fe31 100644 --- a/2.code/1.sdk/apps/common/third_party_profile/jieli/trans_data_demo/le_trans_data.c +++ b/2.code/1.sdk/apps/common/third_party_profile/jieli/trans_data_demo/le_trans_data.c @@ -263,8 +263,8 @@ void bt_scan_list(void) //扫描完成发送设备列表->小程序 { return; } - scan_state=0; printf("scan_state:%d",scan_state); + scan_state=0; // if(!scan_state){ // return; // } @@ -395,7 +395,16 @@ static int str_to_u8_buf(const char *str, u8 *buf) { extern u8 bt_connect; extern u8 bt_conn_addr[6];//蓝牙连接成功的地址 u8 maddr[6]={0}; // 目标数组 +u8 delete_target_mac[6]={0};//需要删除目标的耳机配对信息key extern u8 is_need_send_bt_state; +extern u8 delete_key_flag; //删除耳机bt的key标识 1需要删除 0不需要删除 +u8 reversed_mac[6]; // 反序数组 +extern u8 ai_delete_key; //ai对话删除目标bt的key标识 +void connect_target_mac(void) //连接目标耳机mac地址 +{ + printf("connect_target_mac!!!!!!!"); + emitter_bt_connect(reversed_mac);//连接地址 +} void connect_bt(char *json_data,u8 conect){ if(is_bredr_close() == 1) //经典蓝牙关闭能去连蓝牙耳机 { @@ -431,7 +440,7 @@ void connect_bt(char *json_data,u8 conect){ return; } - u8 reversed_mac[6]; // 反序数组 + memset(reversed_mac,0,6); memset(maddr,0,6); printf("mac->valuestring %s\r\n",data->valuestring); @@ -450,22 +459,27 @@ void connect_bt(char *json_data,u8 conect){ printf("bt_connect:%d bt_conn_addr %x %x %x %x %x %x\r\n",bt_connect,bt_conn_addr[0],bt_conn_addr[1],bt_conn_addr[2],bt_conn_addr[3],bt_conn_addr[4],bt_conn_addr[5]); printf("maddr %x %x %x %x %x %x\r\n",maddr[0],maddr[1],maddr[2],maddr[3],maddr[4],maddr[5]); is_need_send_bt_state=1; - if(bt_connect == 2) //已经连上了看看连接的地址是否一致 + if(bt_connect==2) //已经连上了看看连接的地址是否一致 { if (memcmp(bt_conn_addr, reversed_mac, 6) != 0){//如果连上了并且和小程序下发得mac地址是一致不需要重新连接 if(get_call_status() != BT_CALL_HANGUP){ //如果是主动挂断的不需要再重复挂断 user_emitter_cmd_prepare(USER_CTRL_HFP_CALL_HANGUP,0,NULL); } + printf("蓝牙连上指令对话删除耳机记录1!!!!!!!!"); + delete_key_flag=1; + ai_delete_key=0; user_emitter_cmd_prepare(USER_CTRL_DISCONNECTION_HCI, 0, NULL); // - emitter_bt_connect(reversed_mac);//连接地址 - } - else{ - + return; + }else{ uart_send_bt_state(bt_connect); is_need_send_bt_state=0; } }else{ - emitter_bt_connect(reversed_mac);//连接地址 + printf("指令对话删除耳机记录5 bt_conn_addr!!!!!!!!!"); + delete_key_flag=1; + ai_delete_key=0; + send_clear_earphone_key_msg(); + return; } } } diff --git a/2.code/1.sdk/apps/watch/include/task_manager/bt/bt_emitter.h b/2.code/1.sdk/apps/watch/include/task_manager/bt/bt_emitter.h index f335694..8e8134a 100644 --- a/2.code/1.sdk/apps/watch/include/task_manager/bt/bt_emitter.h +++ b/2.code/1.sdk/apps/watch/include/task_manager/bt/bt_emitter.h @@ -40,4 +40,5 @@ extern void emitter_delete_remote_name(u8 *addr); extern void emitter_delete_remote_all(void); extern void clear_dev_list(void); extern void emitter_bt_connect(u8 *mac); +extern u8 *emitter_get_last_vm_device(void); #endif diff --git a/2.code/1.sdk/apps/watch/log_config/lib_btstack_config.c b/2.code/1.sdk/apps/watch/log_config/lib_btstack_config.c index 68e066e..6d2d21e 100644 --- a/2.code/1.sdk/apps/watch/log_config/lib_btstack_config.c +++ b/2.code/1.sdk/apps/watch/log_config/lib_btstack_config.c @@ -35,7 +35,7 @@ const int CONFIG_BTSTACK_SUPPORT_AAC = 0; //协议栈接收到命令是否自动退出sniff const int config_btstask_auto_exit_sniff = 1; - +u8 ble_list_verison_update_dispose = 1; #if SMART_BOX_EN #define RCSP_API_LOG 0 #define RCSP_PACKET_LOG 1 diff --git a/2.code/1.sdk/apps/watch/task_manager/bt/bt.c b/2.code/1.sdk/apps/watch/task_manager/bt/bt.c index 77c7b9d..b1d9c26 100644 --- a/2.code/1.sdk/apps/watch/task_manager/bt/bt.c +++ b/2.code/1.sdk/apps/watch/task_manager/bt/bt.c @@ -711,6 +711,8 @@ static int bt_connction_status_event_handler(struct bt_event *bt) break; case BT_STATUS_RECONN_OR_CONN: log_info(" BT_STATUS_RECONN_OR_CONN \n"); + printf("bt->value %d",bt->value); + put_buf(bt->args,7); #if USER_SUPPORT_PROFILE_PBAP_LIST user_send_cmd_prepare(USER_CTRL_PBAP_CONNECT, 0, NULL); #endif @@ -857,6 +859,7 @@ int bt_update_event_handler(struct sys_event *event) extern u8 bt_connect; extern char userremote_name[32]; //当前连接或者断开的蓝牙名称 extern u8 bt_conn_addr[6];//蓝牙连接成功的地址 +extern u8 reconnect_dev; /*----------------------------------------------------------------------------*/ /**@brief 蓝牙模式协议栈事件 @param bt:事件 @@ -947,8 +950,15 @@ static int bt_hci_event_handler(struct bt_event *bt) bt_hci_event_page_timeout(bt); break; case ERROR_CODE_CONNECTION_TIMEOUT: - log_info(" ERROR_CODE_CONNECTION_TIMEOUT \n"); - bt_hci_event_connection_timeout(bt); + printf("ERROR_CODE_CONNECTION_TIMEOUT %d\n",reconnect_dev); + if(!reconnect_dev){//bt.args如果跟4G下发的要连接的蓝牙的mac一致,就执行重连,不一致,就断开 + put_buf(bt->args,7); + printf("ERROR_CODE_CONNECTION_TIMEOUT!!!!!!!!!!!!!\n"); + bt_hci_event_connection_timeout(bt); + } + else{ + bt_hci_event_disconnect(bt); + } break; case ERROR_CODE_ACL_CONNECTION_ALREADY_EXISTS : log_info("ERROR_CODE_ACL_CONNECTION_ALREADY_EXISTS \n"); diff --git a/2.code/1.sdk/apps/watch/task_manager/bt/bt_emitter.c b/2.code/1.sdk/apps/watch/task_manager/bt/bt_emitter.c index 65a3105..6bb388f 100644 --- a/2.code/1.sdk/apps/watch/task_manager/bt/bt_emitter.c +++ b/2.code/1.sdk/apps/watch/task_manager/bt/bt_emitter.c @@ -200,7 +200,7 @@ void emitter_bt_connect(u8 *mac) if (bt_user_priv_var.emitter_or_receiver != BT_EMITTER_EN) { return ; } - bt_connect=BT_CONN_STATE_CONNECTING; + // bt_connect=BT_CONN_STATE_CONNECTING; #if 0 while (hci_standard_connect_check() == 0x80) { //wait profile connect ok; @@ -1526,6 +1526,7 @@ const char *bt_get_emitter_pin_code(u8 flag) //reset index index_flag = 0; } else if (flag == 2) { + return NULL; //查询是否要开始继续回连尝试pin code。 if (index_flag >= pincode_num) { //之前已经遍历完了 @@ -1733,7 +1734,24 @@ void emitter_get_vm_device() log_debug_hexdump(remote_addr[i], 6); } } - +u8 *emitter_get_last_vm_device(void) +{ + u8 *last_dev_mac=malloc(6); + if(last_dev_mac==NULL) + { + return NULL; + } + memset(last_dev_mac, 0, 6); + memset(remote_addr, 0, sizeof(remote_addr)); + u8 flag = restore_remote_device_info_opt(&remote_addr, 1, get_remote_dev_info_index()); + for (u8 i = 0; i < 1; i++) { + printf("emitter_get_last_vm_device ----- \n"); + // log_debug_hexdump(remote_addr[i], 6); + memcpy(last_dev_mac,remote_addr[i],6); + log_debug_hexdump(last_dev_mac, 6); + } + return last_dev_mac; +} /*----------------------------------------------------------------------------*/ /**@brief 蓝牙 开关ag_a2dp @param @@ -1754,6 +1772,7 @@ void bredr_ag_a2dp_open_and_close() /*----------------------------------------------------------------------------*/ /**@brief 蓝牙 开关ag_hfp + * @param @return @note diff --git a/2.code/1.sdk/apps/watch/task_manager/bt/bt_event_fun.c b/2.code/1.sdk/apps/watch/task_manager/bt/bt_event_fun.c index c2d1cc6..29baa67 100644 --- a/2.code/1.sdk/apps/watch/task_manager/bt/bt_event_fun.c +++ b/2.code/1.sdk/apps/watch/task_manager/bt/bt_event_fun.c @@ -1255,8 +1255,10 @@ u8 bt_connect = BT_CONN_STATE_INIT; */ /*----------------------------------------------------------------------------*/ static u8 mac_addr[6]={0}; +extern u8 reconnect_dev; void bt_status_connect(struct bt_event *bt) { + reconnect_dev=0; bt_connect = BT_CONN_STATE_CONNECTED; uart_send_bt_state(bt_connect); auto_switch_local_mic(); @@ -1454,6 +1456,7 @@ void bt_status_disconnect(struct bt_event *bt) uart_send_bt_state(bt_connect); auto_switch_local_mic(); sys_auto_sniff_controle(0, NULL); + send_clear_earphone_key_msg(); __this->call_flag = 0; /* log_info("BT_STATUS_DISCONNECT\n"); */ #if (SMART_BOX_EN) diff --git a/2.code/1.sdk/cpu/br28/audio_link.c b/2.code/1.sdk/cpu/br28/audio_link.c index 8a6c1b6..a84f95d 100644 --- a/2.code/1.sdk/cpu/br28/audio_link.c +++ b/2.code/1.sdk/cpu/br28/audio_link.c @@ -374,7 +374,7 @@ void *alink_channel_init(void *hw_alink, ALINK_CH ch_idx, u8 dir, void *priv, vo hw_alink_parm->ch_cfg[ch_idx].private_data = priv; hw_alink_parm->ch_cfg[ch_idx].buf = zalloc(hw_alink_parm->dma_len); - /* printf(">>> alink_channel_init %x\n", hw_alink_parm->ch_cfg[ch_idx].buf); */ + printf(">>> alink_channel_init buf:%x len:%d\n", hw_alink_parm->ch_cfg[ch_idx].buf,hw_alink_parm->dma_len); u32 *buf_addr; //===================================// diff --git a/2.code/1.sdk/cpu/br28/liba/btctrler.a b/2.code/1.sdk/cpu/br28/liba/btctrler.a index eec537b..d45f055 100644 Binary files a/2.code/1.sdk/cpu/br28/liba/btctrler.a and b/2.code/1.sdk/cpu/br28/liba/btctrler.a differ diff --git a/2.code/1.sdk/cpu/br28/liba/btstack.a b/2.code/1.sdk/cpu/br28/liba/btstack.a index 1ac618d..f18580c 100644 Binary files a/2.code/1.sdk/cpu/br28/liba/btstack.a and b/2.code/1.sdk/cpu/br28/liba/btstack.a differ diff --git a/2.code/1.sdk/cpu/br28/liba/rcsp_stack.a b/2.code/1.sdk/cpu/br28/liba/rcsp_stack.a index 563f61b..936e010 100644 Binary files a/2.code/1.sdk/cpu/br28/liba/rcsp_stack.a and b/2.code/1.sdk/cpu/br28/liba/rcsp_stack.a differ