Commit 299f458c authored by chen's avatar chen

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

parent f1555e0a
......@@ -78,6 +78,22 @@ void BT_User_Process(void )
{
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;
......
......@@ -17,6 +17,8 @@ typedef enum
Call_IncomeCalling,
Call_OutCalling,
Call_InProcess,
Call_Miss,
Call_Hangup,
}Call_Sts_Enum;
typedef enum
......@@ -32,6 +34,8 @@ typedef struct
uint8_t Call_Sts;
uint16_t ReconnTime;
uint8_t HF_Ctrl;
char Number[11];
char CCLC[11];
}BT_User_Control_Struct;
extern BT_User_Control_Struct BT_User;
......
......@@ -174,6 +174,7 @@ const char *c_inband_ring_state_str[] = {
};
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
// 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_
ESP_LOGI(BT_HF_TAG, "--Call indicator %s",
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;
// printf("call idle\r\n");
BT_User.Call_Sts = Call_Hangup;
call_timer = 0;
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;
// 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_
case ESP_HF_CLIENT_CIND_CALL_SETUP_EVT:
{
ESP_LOGI(BT_HF_TAG, "--Call setup indicator %s",
c_call_setup_str[param->call_setup.status]);
switch(param->call_setup.status)
{
case 0:
// ESP_LOGI(BT_HF_TAG, "--Call setup indicator %s",
// c_call_setup_str[param->call_setup.status]);
// switch(param->call_setup.status)
// {
// 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_Idle;
// printf("call idle\r\n");
BT_User.Call_Sts = Call_Miss;
call_timer = 0;
printf("call Miss\r\n");
}
break;
}
case 1:
{
BT_User.Call_Sts = Call_IncomeCalling;
// break;
// }
// case 1:
// {
// BT_User.Call_Sts = Call_IncomeCalling;
// printf("call income\r\n");
break;
}
case 2:
{
BT_User.Call_Sts = Call_OutCalling;
// break;
// }
// case 2:
// {
// BT_User.Call_Sts = Call_OutCalling;
// printf("call outcall\r\n");
break;
}
case 3:
{
BT_User.Call_Sts = Call_OutCalling;
// break;
// }
// case 3:
// {
// BT_User.Call_Sts = Call_OutCalling;
// printf("call outcall\r\n");
break;
}
}
// break;
// }
// }
if(param->call_setup.status == 0)
// if(param->call_setup.status == 0)
break;
}
......@@ -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",
(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;
}
......@@ -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_mpty_type_str[param->clcc.mpty],
(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;
}
......@@ -565,12 +596,12 @@ HF_CMD_HANDLER(stop_vr)
}
// HF_CMD_HANDLER(query_call)
// {
// // printf("Query current call status\n");
// esp_hf_client_query_current_calls();
// return 0;
// }
HF_CMD_HANDLER(query_call)
{
// printf("Query current call status\n");
esp_hf_client_query_current_calls();
return 0;
}
// HF_CMD_HANDLER(retrieve_subscriber)
// {
......
......@@ -32,7 +32,7 @@ int hf_redial_handler(void );
int hf_dial_mem_handler(void );
int hf_start_vr_handler(void );
int hf_stop_vr_handler(void );
int hf_query_call_handler(void );
#endif /* __BT_APP_HF_H__*/
......@@ -83,6 +83,7 @@ static void Sys_Run_Tasks(void *arg)
if(SYS_RUN_TASK_100MS)
{
Ble_MsgRec_Navi_Timeout();
esp_hf_client_query_current_calls();
}
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