mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-05 00:40:19 +00:00
hfp: add send dtmf code
This commit is contained in:
parent
ff8878fd58
commit
88a6898515
@ -643,6 +643,7 @@ extern "C" {
|
|||||||
#define HFP_SUBEVENT_PLACE_CALL_WITH_NUMBER 0x0D
|
#define HFP_SUBEVENT_PLACE_CALL_WITH_NUMBER 0x0D
|
||||||
#define HFP_SUBEVENT_REDIAL_LAST_NUMBER 0x0E
|
#define HFP_SUBEVENT_REDIAL_LAST_NUMBER 0x0E
|
||||||
#define HFP_SUBEVENT_ATTACH_NUMBER_TO_VOICE_TAG 0x0F
|
#define HFP_SUBEVENT_ATTACH_NUMBER_TO_VOICE_TAG 0x0F
|
||||||
|
#define HFP_SUBEVENT_TRANSMIT_DTMF_CODES 0x10
|
||||||
|
|
||||||
|
|
||||||
// ANCS Client
|
// ANCS Client
|
||||||
|
@ -206,7 +206,7 @@ void hfp_emit_event(hfp_callback_t callback, uint8_t event_subtype, uint8_t valu
|
|||||||
|
|
||||||
void hfp_emit_string_event(hfp_callback_t callback, uint8_t event_subtype, const char * value){
|
void hfp_emit_string_event(hfp_callback_t callback, uint8_t event_subtype, const char * value){
|
||||||
if (!callback) return;
|
if (!callback) return;
|
||||||
uint8_t event[24];
|
uint8_t event[40];
|
||||||
event[0] = HCI_EVENT_HFP_META;
|
event[0] = HCI_EVENT_HFP_META;
|
||||||
event[1] = sizeof(event) - 2;
|
event[1] = sizeof(event) - 2;
|
||||||
event[2] = event_subtype;
|
event[2] = event_subtype;
|
||||||
|
16
src/hfp_ag.c
16
src/hfp_ag.c
@ -216,7 +216,7 @@ static int hfp_ag_send_clip(uint16_t cid){
|
|||||||
return send_str_over_rfcomm(cid, buffer);
|
return send_str_over_rfcomm(cid, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int hfp_ag_send_phone_number_for_voice_tag(uint16_t cid){
|
static int hfp_ag_send_phone_number_for_voice_tag_cmd(uint16_t cid){
|
||||||
char buffer[50];
|
char buffer[50];
|
||||||
sprintf(buffer, "\r\n%s:%s\r\n", HFP_PHONE_NUMBER_FOR_VOICE_TAG, clip_number);
|
sprintf(buffer, "\r\n%s:%s\r\n", HFP_PHONE_NUMBER_FOR_VOICE_TAG, clip_number);
|
||||||
return send_str_over_rfcomm(cid, buffer);
|
return send_str_over_rfcomm(cid, buffer);
|
||||||
@ -1281,7 +1281,7 @@ static void hfp_run_for_context(hfp_connection_t *context){
|
|||||||
context->send_phone_number_for_voice_tag = 0;
|
context->send_phone_number_for_voice_tag = 0;
|
||||||
context->command = HFP_CMD_NONE;
|
context->command = HFP_CMD_NONE;
|
||||||
context->ok_pending = 1;
|
context->ok_pending = 1;
|
||||||
hfp_ag_send_phone_number_for_voice_tag(context->rfcomm_cid);
|
hfp_ag_send_phone_number_for_voice_tag_cmd(context->rfcomm_cid);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1336,11 +1336,16 @@ static void hfp_handle_rfcomm_data(uint8_t packet_type, uint16_t channel, uint8_
|
|||||||
hfp_parse(context, packet[pos], 0);
|
hfp_parse(context, packet[pos], 0);
|
||||||
}
|
}
|
||||||
switch(context->command){
|
switch(context->command){
|
||||||
|
case HFP_CMD_TRANSMIT_DTMF_CODES:
|
||||||
|
context->command = HFP_CMD_NONE;
|
||||||
|
hfp_emit_string_event(hfp_callback, HFP_SUBEVENT_TRANSMIT_DTMF_CODES, (const char *) &context->line_buffer[0]);
|
||||||
|
break;
|
||||||
case HFP_CMD_HF_REQUEST_PHONE_NUMBER:
|
case HFP_CMD_HF_REQUEST_PHONE_NUMBER:
|
||||||
|
context->command = HFP_CMD_NONE;
|
||||||
hfp_emit_event(hfp_callback, HFP_SUBEVENT_ATTACH_NUMBER_TO_VOICE_TAG, 0);
|
hfp_emit_event(hfp_callback, HFP_SUBEVENT_ATTACH_NUMBER_TO_VOICE_TAG, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HFP_CMD_TURN_OFF_EC_AND_NR:
|
case HFP_CMD_TURN_OFF_EC_AND_NR:
|
||||||
|
context->command = HFP_CMD_NONE;
|
||||||
if (get_bit(hfp_supported_features, HFP_AGSF_EC_NR_FUNCTION)){
|
if (get_bit(hfp_supported_features, HFP_AGSF_EC_NR_FUNCTION)){
|
||||||
context->ok_pending = 1;
|
context->ok_pending = 1;
|
||||||
hfp_supported_features = store_bit(hfp_supported_features, HFP_AGSF_EC_NR_FUNCTION, context->ag_echo_and_noise_reduction);
|
hfp_supported_features = store_bit(hfp_supported_features, HFP_AGSF_EC_NR_FUNCTION, context->ag_echo_and_noise_reduction);
|
||||||
@ -1755,5 +1760,8 @@ void hfp_ag_reject_phone_number_for_voice_tag(bd_addr_t bd_addr){
|
|||||||
connection->send_error = 1;
|
connection->send_error = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void hfp_ag_send_dtmf_code_done(bd_addr_t bd_addr){
|
||||||
|
hfp_connection_t * connection = get_hfp_connection_context_for_bd_addr(bd_addr);
|
||||||
|
connection->ok_pending = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -261,6 +261,11 @@ void hfp_ag_send_phone_number_for_voice_tag(bd_addr_t bd_addr, const char * numb
|
|||||||
*/
|
*/
|
||||||
void hfp_ag_reject_phone_number_for_voice_tag(bd_addr_t bd_addr);
|
void hfp_ag_reject_phone_number_for_voice_tag(bd_addr_t bd_addr);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @brief
|
||||||
|
*/
|
||||||
|
void hfp_ag_send_dtmf_code_done(bd_addr_t bd_addr);
|
||||||
|
|
||||||
/* API_END */
|
/* API_END */
|
||||||
|
|
||||||
#if defined __cplusplus
|
#if defined __cplusplus
|
||||||
|
Loading…
x
Reference in New Issue
Block a user