Commit dab91354 authored by 薛小虎's avatar 薛小虎

🐞 fix:修改BT自动重连时,指示灯会闪一下问题

parent b9f7aea8
...@@ -13,12 +13,18 @@ BT_User_Control_Struct BT_User; ...@@ -13,12 +13,18 @@ BT_User_Control_Struct BT_User;
#define BT_ReConn_T 300 #define BT_ReConn_T 300
#define IPHNOE_ACTIVE_CONNENT 0X113
void BT_User_Init(void ) void BT_User_Init(void )
{ {
BT_User.BT_Sts = BT_Idle; BT_User.BT_Sts = BT_Idle;
BT_User.Call_Sts = Call_Idle; BT_User.Call_Sts = Call_Idle;
BT_User.ReconnTime = BT_ReConn_T - 50; BT_User.ReconnTime = BT_ReConn_T - 50;
BT_User.HF_Ctrl = HF_Idle; BT_User.HF_Ctrl = HF_Idle;
BT_User.BT_DisConnReason = 0xffff;
BT_User.Get_Call_Num = 0;
BT_User.Call_Fitter_sts = Call_Idle;
BT_User.HfClient_Req_Cnt = 0;
} }
...@@ -29,6 +35,11 @@ void BT_Connect_Event_Pro(void ) ...@@ -29,6 +35,11 @@ void BT_Connect_Event_Pro(void )
BT_User.ReconnTime = BT_ReConn_T - 50; BT_User.ReconnTime = BT_ReConn_T - 50;
BT_User.HF_Ctrl = HF_Idle; BT_User.HF_Ctrl = HF_Idle;
// printf("TB CONN\r\n"); // printf("TB CONN\r\n");
BT_User.BT_DisConnReason = 0xffff;
BT_User.Get_Call_Num = 0;
BT_User.Call_Fitter_sts = Call_Idle;
BT_User.HfClient_Req_Cnt = 0;
} }
...@@ -39,6 +50,10 @@ void BT_DisConnect_Event_Pro(void ) ...@@ -39,6 +50,10 @@ void BT_DisConnect_Event_Pro(void )
BT_User.ReconnTime = BT_ReConn_T - 50; BT_User.ReconnTime = BT_ReConn_T - 50;
BT_User.HF_Ctrl = HF_Idle; BT_User.HF_Ctrl = HF_Idle;
// printf("TB DISCONN\r\n"); // printf("TB DISCONN\r\n");
BT_User.Get_Call_Num = 0;
BT_User.Call_Fitter_sts = Call_Idle;
BT_User.HfClient_Req_Cnt = 0;
} }
void BT_User_Process(void ) void BT_User_Process(void )
...@@ -98,26 +113,25 @@ void BT_User_Process(void ) ...@@ -98,26 +113,25 @@ void BT_User_Process(void )
BT_User.HF_Ctrl = HF_Idle; BT_User.HF_Ctrl = HF_Idle;
// if(BT_User.BT_DisConnReason != IPHNOE_ACTIVE_CONNENT)
if(BT_User.BT_Sts == BT_Idle)
{ {
BT_User.ReconnTime++; if(BT_User.BT_Sts == BT_Idle)
if(BT_User.ReconnTime >= BT_ReConn_T)
{ {
// printf("Connect Start.................\n"); BT_User.ReconnTime++;
if(app_BT_Get_BondDev() == 1) if(BT_User.ReconnTime >= BT_ReConn_T)
{ {
esp_hf_client_connect(peer_addr); // printf("Connect Start.................\n");
if(app_BT_Get_BondDev() == 1)
{
esp_hf_client_connect(peer_addr);
}
// printf("Connect Over\n");
BT_User.ReconnTime = 0;
} }
// printf("Connect Over\n");
BT_User.ReconnTime = 0;
} }
} }
else
{
}
} }
......
...@@ -31,6 +31,7 @@ typedef enum ...@@ -31,6 +31,7 @@ typedef enum
typedef struct typedef struct
{ {
uint8_t BT_Sts; uint8_t BT_Sts;
uint32_t BT_DisConnReason;
uint8_t Call_Sts; uint8_t Call_Sts;
uint16_t ReconnTime; uint16_t ReconnTime;
uint8_t HF_Ctrl; uint8_t HF_Ctrl;
...@@ -38,6 +39,7 @@ typedef struct ...@@ -38,6 +39,7 @@ typedef struct
// char CCLC[11]; // char CCLC[11];
char Get_Call_Num; char Get_Call_Num;
char Call_Fitter_sts; char Call_Fitter_sts;
uint8_t HfClient_Req_Cnt;
}BT_User_Control_Struct; }BT_User_Control_Struct;
extern BT_User_Control_Struct BT_User; extern BT_User_Control_Struct BT_User;
......
...@@ -669,7 +669,6 @@ void Ble_User_Task_Event(void *pvParameter) ...@@ -669,7 +669,6 @@ void Ble_User_Task_Event(void *pvParameter)
vTaskDelete(NULL); vTaskDelete(NULL);
} }
uint8_t BT_User_HfClient_Req_Cnt;
void Ble_User_Task_Cyc(void *pvParameter) void Ble_User_Task_Cyc(void *pvParameter)
{ {
while (1) while (1)
...@@ -690,15 +689,15 @@ void Ble_User_Task_Cyc(void *pvParameter) ...@@ -690,15 +689,15 @@ void Ble_User_Task_Cyc(void *pvParameter)
if(BT_User.Call_Sts != Call_Idle) if(BT_User.Call_Sts != Call_Idle)
{ {
if(BT_User_HfClient_Req_Cnt ++ >= 15) if(BT_User.HfClient_Req_Cnt ++ >= 15)
{ {
BT_User_HfClient_Req_Cnt = 0; BT_User.HfClient_Req_Cnt = 0;
esp_hf_client_query_current_calls(); esp_hf_client_query_current_calls();
} }
} }
else else
{ {
BT_User_HfClient_Req_Cnt = 0; BT_User.HfClient_Req_Cnt = 0;
} }
BT_User_Process(); BT_User_Process();
......
...@@ -252,11 +252,9 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_ ...@@ -252,11 +252,9 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_
if(param->conn_stat.state == 0) if(param->conn_stat.state == 0)
{ {
BT_DisConnect_Event_Pro();
} }
else if(param->conn_stat.state == 2) else if(param->conn_stat.state == 2)
{ {
BT_Connect_Event_Pro();
} }
break; break;
} }
......
...@@ -184,6 +184,21 @@ void esp_bt_gap_cb(esp_bt_gap_cb_event_t event, esp_bt_gap_cb_param_t *param) ...@@ -184,6 +184,21 @@ void esp_bt_gap_cb(esp_bt_gap_cb_event_t event, esp_bt_gap_cb_param_t *param)
// printf("event state %d\n", event); // printf("event state %d\n", event);
break; break;
case ESP_BT_GAP_ACL_CONN_CMPL_STAT_EVT:
if (param->acl_conn_cmpl_stat.stat == ESP_BT_STATUS_SUCCESS)
{
BT_Connect_Event_Pro();
ESP_LOGI(BT_HF_TAG, "BT CONN");
}
break;
/* when ACL disconnection completed, this event comes */
case ESP_BT_GAP_ACL_DISCONN_CMPL_STAT_EVT:
ESP_LOGW(BT_HF_TAG, "BT DISCONN REASON %x", param->acl_disconn_cmpl_stat.reason);
BT_DisConnect_Event_Pro();
BT_User.BT_DisConnReason = param->acl_disconn_cmpl_stat.reason;
break;
default: { default: {
ESP_LOGI(BT_HF_TAG, "event: %d", event); ESP_LOGI(BT_HF_TAG, "event: %d", event);
// printf("event state %d\n", event); // printf("event state %d\n", event);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment