HFP AG connection.
Posted: Mon Apr 15, 2019 9:58 pm
Hi, i`m trying to rebuild a2dp_sink example to HFP and can`t open AG. I enabled Voice Over HCI via menuconfig. Then added
to main.c
added callbacks to bt_app_av.c
i`m trying to use esp_hf_client_connect_audio after Service Layer is connected. esp_hf_client_connect_audio function sends AT+BCC then AT+BCS=1 then got OK responce and stops. HPF Audio connection state changed to "Connecting" but never get the "Connected" state. ESP32 disconnects from phone when i`m trying to make a call. hf_client_data callbacks are never fire.
i added some ESP_LOGI("hf_mydebug",....) to bt functions to trace the events and got this:
what am i doing wrong? please help.
Code: Select all
esp_hf_client_init();
esp_hf_client_register_callback(esp_hf_client_cb);
esp_hf_client_register_data_callback(esp_hf_client_incoming_data_cb,esp_hf_client_outgoing_data_cb);
esp_bd_addr_t remote_bda = {0x24,0xda,0x9b,0x76,0xf4,0x5a};
esp_hf_client_connect(remote_bda);
added callbacks to bt_app_av.c
Code: Select all
void esp_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_t *param)
{
esp_hf_client_cb_param_t *hpf = NULL;
switch (event) {
case ESP_HF_CLIENT_CONNECTION_STATE_EVT:
hpf = (esp_hf_client_cb_param_t *)(param);
uint8_t *bda = hpf->conn_stat.remote_bda;
ESP_LOGI(BT_AV_TAG,"HPF connection state: %s, [%02x:%02x:%02x:%02x:%02x:%02x]",
s_hpf_conn_state_str[hpf->conn_stat.state], bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]);
if(hpf->conn_stat.state==ESP_HF_CLIENT_CONNECTION_STATE_SLC_CONNECTED){
esp_err_t ret = esp_hf_client_connect_audio(hpf->conn_stat.remote_bda);
if (ret != ESP_OK) {
ESP_LOGE(BT_AV_TAG, "Audio connect failed: %s", esp_err_to_name(ret));
}
}
break;
case ESP_HF_CLIENT_AUDIO_STATE_EVT:
hpf = (esp_hf_client_cb_param_t *)(param);
ESP_LOGI(BT_AV_TAG,"HPF Audio connection state: %s",s_hfp_audio_conn_state_str[hpf->audio_stat.state]);
break;
case ESP_HF_CLIENT_BVRA_EVT: /*!< voice recognition state change event */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_BVRA_EVT");
break;
case ESP_HF_CLIENT_CIND_CALL_EVT: /*!< call indication */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_CIND_CALL_EVT");
break;
case ESP_HF_CLIENT_CIND_CALL_SETUP_EVT: /*!< call setup indication */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_CIND_CALL_SETUP_EVT");
break;
case ESP_HF_CLIENT_CIND_CALL_HELD_EVT: /*!< call held indication */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_CIND_CALL_HELD_EVT");
break;
case ESP_HF_CLIENT_CIND_SERVICE_AVAILABILITY_EVT: /*!< network service availability indication */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_CIND_SERVICE_AVAILABILITY_EVT");
break;
case ESP_HF_CLIENT_CIND_SIGNAL_STRENGTH_EVT: /*!< signal strength indication */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_CIND_SIGNAL_STRENGTH_EVT");
break;
case ESP_HF_CLIENT_CIND_ROAMING_STATUS_EVT: /*!< roaming status indication */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_CIND_ROAMING_STATUS_EVT");
break;
case ESP_HF_CLIENT_CIND_BATTERY_LEVEL_EVT: /*!< battery level indication */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_CIND_BATTERY_LEVEL_EVT");
break;
case ESP_HF_CLIENT_COPS_CURRENT_OPERATOR_EVT: /*!< current operator information */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_COPS_CURRENT_OPERATOR_EVT");
break;
case ESP_HF_CLIENT_BTRH_EVT: /*!< call response and hold event */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_BTRH_EVT");
break;
case ESP_HF_CLIENT_CLIP_EVT: /*!< Calling Line Identification notification */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_CLIP_EVT");
break;
case ESP_HF_CLIENT_CCWA_EVT: /*!< call waiting notification */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_CCWA_EVT");
break;
case ESP_HF_CLIENT_CLCC_EVT: /*!< list of current calls notification */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_CLCC_EVT");
break;
case ESP_HF_CLIENT_VOLUME_CONTROL_EVT: /*!< audio volume control command from AG, provided by +VGM or +VGS message */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_VOLUME_CONTROL_EVT");
break;
case ESP_HF_CLIENT_AT_RESPONSE_EVT: /*!< AT command response event */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_AT_RESPONSE_EVT");
break;
case ESP_HF_CLIENT_CNUM_EVT: /*!< subscriber information response from AG */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_CNUM_EVT");
break;
case ESP_HF_CLIENT_BSIR_EVT: /*!< setting of in-band ring tone */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_BSIR_EVT");
break;
case ESP_HF_CLIENT_BINP_EVT: /*!< requested number of last voice tag from AG */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_BINP_EVT");
break;
case ESP_HF_CLIENT_RING_IND_EVT: /*!< ring indication event */
ESP_LOGI(BT_AV_TAG,"HPF event ESP_HF_CLIENT_RING_IND_EVT");
break;
default:
ESP_LOGE(BT_AV_TAG,"Invalid HPF event: %d", event);
break;
}
}
void esp_hf_client_incoming_data_cb(const uint8_t *buf, uint32_t len){
ESP_LOGI(BT_AV_TAG,"data= %d",(uint8_t)buf);
}
uint32_t esp_hf_client_outgoing_data_cb(uint8_t *buf, uint32_t len){
ESP_LOGI(BT_AV_TAG,"data1= %d",(uint8_t)buf);
return 0;
}
i added some ESP_LOGI("hf_mydebug",....) to bt functions to trace the events and got this:
Code: Select all
ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:6724
load:0x40078000,len:11984
load:0x40080400,len:7372
entry 0x40080780
[0;32mI (28) boot: ESP-IDF v4.0-dev-266-ge7f85f198-dirty 2nd stage bootloader[0m
[0;32mI (29) boot: compile time 00:07:26[0m
[0;32mI (30) boot: Enabling RNG early entropy source...[0m
[0;32mI (35) qio_mode: Enabling default flash chip QIO[0m
[0;32mI (40) boot: SPI Speed : 80MHz[0m
[0;32mI (44) boot: SPI Mode : QIO[0m
[0;32mI (48) boot: SPI Flash Size : 4MB[0m
[0;32mI (53) boot: Partition Table:[0m
[0;32mI (56) boot: ## Label Usage Type ST Offset Length[0m
[0;32mI (63) boot: 0 nvs WiFi data 01 02 00009000 00004000[0m
[0;32mI (71) boot: 1 otadata OTA data 01 00 0000d000 00002000[0m
[0;32mI (78) boot: 2 phy_init RF data 01 01 0000f000 00001000[0m
[0;32mI (86) boot: 3 factory factory app 00 00 00010000 00100000[0m
[0;32mI (93) boot: 4 ota_0 OTA app 00 10 00110000 00100000[0m
[0;32mI (101) boot: 5 ota_1 OTA app 00 11 00210000 00100000[0m
[0;32mI (108) boot: End of partition table[0m
[0;32mI (113) boot: Defaulting to factory image[0m
[0;32mI (117) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x2ca5c (182876) map[0m
[0;32mI (175) esp_image: segment 1: paddr=0x0003ca84 vaddr=0x3ffbdb60 size=0x02aac ( 10924) load[0m
[0;32mI (178) esp_image: segment 2: paddr=0x0003f538 vaddr=0x40080000 size=0x00400 ( 1024) load[0m
[0;32mI (182) esp_image: segment 3: paddr=0x0003f940 vaddr=0x40080400 size=0x006d0 ( 1744) load[0m
[0;32mI (191) esp_image: segment 4: paddr=0x00040018 vaddr=0x400d0018 size=0x8f584 (587140) map[0m
[0;32mI (354) esp_image: segment 5: paddr=0x000cf5a4 vaddr=0x40080ad0 size=0x11174 ( 70004) load[0m
[0;32mI (388) boot: Loaded app from partition at offset 0x10000[0m
[0;32mI (388) boot: Disabling RNG early entropy source...[0m
[0;32mI (389) cpu_start: Pro cpu up.[0m
[0;32mI (392) cpu_start: Application information:[0m
[0;32mI (397) cpu_start: Project name: a2dp_sink[0m
[0;32mI (402) cpu_start: App version: 1[0m
[0;32mI (406) cpu_start: Compile time: Apr 16 2019 00:06:47[0m
[0;32mI (413) cpu_start: ELF file SHA256: b0943e2b0cceffd6...[0m
[0;32mI (419) cpu_start: ESP-IDF: v4.0-dev-266-ge7f85f198-dirty[0m
[0;32mI (425) cpu_start: Starting app cpu, entry point is 0x4008105c[0m
[0;32mI (0) cpu_start: App cpu up.[0m
[0;32mI (436) heap_init: Initializing. RAM available for dynamic allocation:[0m
[0;32mI (443) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM[0m
[0;32mI (449) heap_init: At 3FFB6388 len 00001C78 (7 KiB): DRAM[0m
[0;32mI (455) heap_init: At 3FFB9A20 len 00004108 (16 KiB): DRAM[0m
[0;32mI (461) heap_init: At 3FFBDB5C len 00000004 (0 KiB): DRAM[0m
[0;32mI (467) heap_init: At 3FFD0360 len 0000FCA0 (63 KiB): DRAM[0m
[0;32mI (473) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM[0m
[0;32mI (480) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM[0m
[0;32mI (486) heap_init: At 40091C44 len 0000E3BC (56 KiB): IRAM[0m
[0;32mI (492) cpu_start: Pro cpu start user code[0m
[0;32mI (174) cpu_start: Starting scheduler on PRO CPU.[0m
[0;32mI (0) cpu_start: Starting scheduler on APP CPU.[0m
[0;32mI (216) I2S: DMA Malloc info, datalen=blocksize=480, dma_buf_count=6[0m
[0;32mI (216) I2S: APLL: Req RATE: 44100, real rate: 43945.238, BITS: 32, CLKM: 1, BCK_M: 4, MCLK: 11249981.000, SCLK: 1406247.625000, diva: 1, divb: 0[0m
[0;32mI (226) BTDM_INIT: BT controller compile version [b638fbb][0m
[0;32mI (226) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE[0m
[0;32mI (326) phy: phy_version: 4100, 6fa5e27, Jan 25 2019, 17:02:06, 0, 0[0m
[0;31mE (876) BT_BTM: btm_sco_process_num_bufs, 4[0m
[0;32mI (906) hf_mydebug: BTA_HfClientRegister[0m
[0;32mI (906) hf_mydebug: BTA_HfClientOpen[0m
[0;32mI (916) hf_mydebug: BTA HF Client State Change: [BTA_HF_CLIENT_INIT_ST] -> [BTA_HF_CLIENT_OPENING_ST] after Event [BTA_HF_CLIENT_API_OPEN_EVT][0m
[0;33mW (1716) BT_APPL: new conn_srvc id:27, app_id:1[0m
[0;32mI (1716) hf_mydebug: bta_hf_client_send_at AT+BRSF=255[0m
[0;32mI (1716) hf_mydebug: BTA HF Client State Change: [BTA_HF_CLIENT_OPENING_ST] -> [BTA_HF_CLIENT_OPEN_ST] after Event [BTA_HF_CLIENT_RFC_OPEN_EVT][0m
[0;32mI (1736) BT_AV: HPF connection state: Connected, [24:da:9b:76:f4:5a][0m
[0;32mI (1796) hf_mydebug: bta_hf_client_send_at AT+BAC=1[0m
[0;32mI (1806) hf_mydebug: bta_hf_client_send_at AT+CIND=?[0m
[0;32mI (1816) hf_mydebug: bta_hf_client_send_at AT+CIND?[0m
[0;32mI (2936) BT_AV: HPF event ESP_HF_CLIENT_CIND_CALL_EVT[0m
[0;32mI (2936) BT_AV: HPF event ESP_HF_CLIENT_CIND_CALL_SETUP_EVT[0m
[0;32mI (2936) BT_AV: HPF event ESP_HF_CLIENT_CIND_SERVICE_AVAILABILITY_EVT[0m
[0;32mI (2936) hf_mydebug: bta_hf_client_send_at AT+CMER=3,0,0,1[0m
[0;32mI (2946) BT_AV: HPF event ESP_HF_CLIENT_CIND_SIGNAL_STRENGTH_EVT[0m
[0;32mI (2956) BT_AV: HPF event ESP_HF_CLIENT_CIND_ROAMING_STATUS_EVT[0m
[0;32mI (2956) BT_AV: HPF event ESP_HF_CLIENT_CIND_BATTERY_LEVEL_EVT[0m
[0;32mI (2966) BT_AV: HPF event ESP_HF_CLIENT_CIND_CALL_HELD_EVT[0m
[0;32mI (3006) hf_mydebug: bta_hf_client_send_at AT+CHLD=?[0m
[0;32mI (3016) hf_mydebug: bta_hf_client_send_at AT+BIA=1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0[0m
[0;32mI (3016) BT_AV: HPF connection state: SLC_Connected, [24:da:9b:76:f4:5a][0m
[0;32mI (3026) hf_mydebug: BTA_HfClientSendAT[0m
[0;32mI (3026) hf_mydebug: BTA_HF_CLIENT_AT_BIA_OK[0m
[0;32mI (3036) hf_mydebug: bta_hf_client_send_at AT+CCWA=1[0m
[0;32mI (3036) BT_AV: HPF Audio connection state: Connecting[0m
[0;32mI (3086) hf_mydebug: bta_hf_client_send_at AT+CMEE=1[0m
[0;32mI (3166) hf_mydebug: bta_hf_client_send_at AT+COPS=3,0[0m
[0;32mI (3176) hf_mydebug: bta_hf_client_send_at AT+BTRH?[0m
[0;32mI (3236) hf_mydebug: bta_hf_client_send_at AT+CLIP=1[0m
[0;32mI (3316) hf_mydebug: bta_hf_client_send_at AT+BCC[0m
[0;32mI (3396) hf_mydebug: BTA_HF_CLIENT_AT_BCC_OK[0m
[0;32mI (3406) hf_mydebug: MSBC+CVSD codec[0m
[0;32mI (3406) hf_mydebug: bta_hf_client_send_at AT+BCS=1[0m
[0;32mI (3456) hf_mydebug: BTA_HF_CLIENT_AT_BCS_OK[0m
[0;31mE (11326) BT_APPL: bta_dm_pm_btm_status hci_status=12[0m