Commit 299f458c authored by chen's avatar chen

feat;增加了区分微信电话和普通电话

parent f1555e0a
...@@ -78,6 +78,22 @@ void BT_User_Process(void ) ...@@ -78,6 +78,22 @@ void BT_User_Process(void )
{ {
break; break;
} }
case Call_Miss:
{
if(BT_User.HF_Ctrl == HF_Reject)
{
hf_reject_handler();
}
break;
}
case Call_Hangup:
{
if(BT_User.HF_Ctrl == HF_Reject)
{
hf_reject_handler();
}
break;
}
} }
BT_User.HF_Ctrl = HF_Idle; BT_User.HF_Ctrl = HF_Idle;
......
...@@ -17,6 +17,8 @@ typedef enum ...@@ -17,6 +17,8 @@ typedef enum
Call_IncomeCalling, Call_IncomeCalling,
Call_OutCalling, Call_OutCalling,
Call_InProcess, Call_InProcess,
Call_Miss,
Call_Hangup,
}Call_Sts_Enum; }Call_Sts_Enum;
typedef enum typedef enum
...@@ -32,6 +34,8 @@ typedef struct ...@@ -32,6 +34,8 @@ typedef struct
uint8_t Call_Sts; uint8_t Call_Sts;
uint16_t ReconnTime; uint16_t ReconnTime;
uint8_t HF_Ctrl; uint8_t HF_Ctrl;
char Number[11];
char CCLC[11];
}BT_User_Control_Struct; }BT_User_Control_Struct;
extern BT_User_Control_Struct BT_User; extern BT_User_Control_Struct BT_User;
......
...@@ -174,6 +174,7 @@ const char *c_inband_ring_state_str[] = { ...@@ -174,6 +174,7 @@ const char *c_inband_ring_state_str[] = {
}; };
extern esp_bd_addr_t peer_addr; extern esp_bd_addr_t peer_addr;
static uint8_t call_timer;
// If you want to connect a specific device, add it's address here // If you want to connect a specific device, add it's address here
// esp_bd_addr_t peer_addr = {0xac, 0x67, 0xb2, 0x53, 0x77, 0xbe}; // esp_bd_addr_t peer_addr = {0xac, 0x67, 0xb2, 0x53, 0x77, 0xbe};
...@@ -331,13 +332,13 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_ ...@@ -331,13 +332,13 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_
ESP_LOGI(BT_HF_TAG, "--Call indicator %s", ESP_LOGI(BT_HF_TAG, "--Call indicator %s",
c_call_str[param->call.status]); c_call_str[param->call.status]);
if(param->call.status == 0) if((param->call.status == 0) && ((BT_User.Call_Sts == Call_InProcess) || (BT_User.Call_Sts == Call_OutCalling) || (BT_User.Call_Sts == Call_IncomeCalling)))
{ {
BT_User.Call_Sts = Call_Idle; BT_User.Call_Sts = Call_Hangup;
call_timer = 0;
// printf("call idle\r\n"); printf("call Hangup\r\n");
} }
else if(param->call.status == 1) else if((param->call.status == 1) && ((BT_User.Call_Sts == Call_OutCalling) || (BT_User.Call_Sts == Call_IncomeCalling) || (BT_User.Call_Sts == Call_InProcess)))
{ {
BT_User.Call_Sts = Call_InProcess; BT_User.Call_Sts = Call_InProcess;
// printf("call Call_InProcess\r\n"); // printf("call Call_InProcess\r\n");
...@@ -347,43 +348,43 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_ ...@@ -347,43 +348,43 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_
case ESP_HF_CLIENT_CIND_CALL_SETUP_EVT: case ESP_HF_CLIENT_CIND_CALL_SETUP_EVT:
{ {
ESP_LOGI(BT_HF_TAG, "--Call setup indicator %s", // ESP_LOGI(BT_HF_TAG, "--Call setup indicator %s",
c_call_setup_str[param->call_setup.status]); // c_call_setup_str[param->call_setup.status]);
switch(param->call_setup.status) // switch(param->call_setup.status)
{ // {
case 0: // case 0:
// {
if(param->call_setup.status == 0 && (BT_User.Call_Sts == Call_IncomeCalling ))
{ {
if(BT_User.Call_Sts == Call_IncomeCalling || BT_User.Call_Sts == Call_OutCalling) BT_User.Call_Sts = Call_Miss;
{ call_timer = 0;
BT_User.Call_Sts = Call_Idle; printf("call Miss\r\n");
// printf("call idle\r\n");
} }
break; // break;
} // }
case 1: // case 1:
{ // {
BT_User.Call_Sts = Call_IncomeCalling; // BT_User.Call_Sts = Call_IncomeCalling;
// printf("call income\r\n"); // printf("call income\r\n");
break; // break;
} // }
case 2: // case 2:
{ // {
BT_User.Call_Sts = Call_OutCalling; // BT_User.Call_Sts = Call_OutCalling;
// printf("call outcall\r\n"); // printf("call outcall\r\n");
break; // break;
} // }
case 3: // case 3:
{ // {
BT_User.Call_Sts = Call_OutCalling; // BT_User.Call_Sts = Call_OutCalling;
// printf("call outcall\r\n"); // printf("call outcall\r\n");
break; // break;
} // }
} // }
if(param->call_setup.status == 0) // if(param->call_setup.status == 0)
break; break;
} }
...@@ -405,6 +406,18 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_ ...@@ -405,6 +406,18 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_
{ {
ESP_LOGI(BT_HF_TAG, "--clip number %s", ESP_LOGI(BT_HF_TAG, "--clip number %s",
(param->clip.number == NULL) ? "NULL" : (param->clip.number)); (param->clip.number == NULL) ? "NULL" : (param->clip.number));
if(param->clip.number != NULL)
{
for(int i = 0 ; i < 11 ; i++)
{
BT_User.Number[i] = param->clip.number[i];
}
}
if(BT_User.Call_Sts != Call_InProcess)
BT_User.Call_Sts = Call_IncomeCalling;
printf("call income\r\n");
printf("%s\n",param->clip.number);
// printf("1\n");
break; break;
} }
...@@ -423,6 +436,24 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_ ...@@ -423,6 +436,24 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_
c_call_state_str[param->clcc.status], c_call_state_str[param->clcc.status],
c_call_mpty_type_str[param->clcc.mpty], c_call_mpty_type_str[param->clcc.mpty],
(param->clcc.number == NULL) ? "NULL" : (param->clcc.number)); (param->clcc.number == NULL) ? "NULL" : (param->clcc.number));
if((strstr(param->clcc.number,"10000000") == NULL) && (BT_User.Call_Sts != Call_IncomeCalling) && (BT_User.Call_Sts != Call_InProcess))
{
if(call_timer == 7)
{
BT_User.Call_Sts = Call_OutCalling;
printf("call outcall\r\n");
printf("%s\n",param->clcc.number);
}
else
{
call_timer ++;
}
// call_timer ++;
}
else
{
call_timer = 0;
}
break; break;
} }
...@@ -565,12 +596,12 @@ HF_CMD_HANDLER(stop_vr) ...@@ -565,12 +596,12 @@ HF_CMD_HANDLER(stop_vr)
} }
// HF_CMD_HANDLER(query_call) HF_CMD_HANDLER(query_call)
// { {
// // printf("Query current call status\n"); // printf("Query current call status\n");
// esp_hf_client_query_current_calls(); esp_hf_client_query_current_calls();
// return 0; return 0;
// } }
// HF_CMD_HANDLER(retrieve_subscriber) // HF_CMD_HANDLER(retrieve_subscriber)
// { // {
......
...@@ -32,7 +32,7 @@ int hf_redial_handler(void ); ...@@ -32,7 +32,7 @@ int hf_redial_handler(void );
int hf_dial_mem_handler(void ); int hf_dial_mem_handler(void );
int hf_start_vr_handler(void ); int hf_start_vr_handler(void );
int hf_stop_vr_handler(void ); int hf_stop_vr_handler(void );
int hf_query_call_handler(void );
#endif /* __BT_APP_HF_H__*/ #endif /* __BT_APP_HF_H__*/
...@@ -83,6 +83,7 @@ static void Sys_Run_Tasks(void *arg) ...@@ -83,6 +83,7 @@ static void Sys_Run_Tasks(void *arg)
if(SYS_RUN_TASK_100MS) if(SYS_RUN_TASK_100MS)
{ {
Ble_MsgRec_Navi_Timeout(); Ble_MsgRec_Navi_Timeout();
esp_hf_client_query_current_calls();
} }
if(SYS_RUN_TASK_1000MS) if(SYS_RUN_TASK_1000MS)
......
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