The most straightforward way at this point for me seemed to use the a2dp_sink-example and leverage the AVRCP-CT-APIs (using esp_avrc_ct_send_passthrough_cmd()).
Let's have a look at the info-output of bluetoothctl:
Code: Select all
[bluetooth]# info 20:47:DA:FB:93:65
Device 20:47:DA:FB:93:65 (public)
Name: ESP_COEX_A2DP_DEMO
Alias: ESP_COEX_A2DP_DEMO
Class: 0x002c0414
Icon: audio-card
Paired: no
Trusted: no
Blocked: no
Connected: no
LegacyPairing: no
UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control (0000110e-0000-1000-8000-00805f9b34fb)
RSSI: -50
Code: Select all
/* initialize A2DP sink */
esp_a2d_register_callback(&bt_app_a2d_cb);
esp_a2d_sink_register_data_callback(bt_app_a2d_data_cb);
esp_a2d_sink_init();
/* initialize AVRCP controller */
esp_avrc_ct_init();
esp_avrc_ct_register_callback(bt_app_rc_ct_cb);
Switching things around and removing the esp_avrc_ct_ and keeping esp_a2d_, I would have expected to only have the "Audio"-UUIDs left. But wrong again: It's still all four UUIDs.
So now I am wondering: Can AVRC only be used in conjunction with A2DP? Or is Espressif just implementing AVRC "the wrong way"?
Thank you in advance for your help.
Best regards,
Aurélien