Hello,
I tried to implement a "media player" device that acts like a mobile phone would in modern car MMIs.
To my understanding this means, it provides an A2DP source and is controllable via AVRC.
There are examples in the ESP-ADF which implement part of it, but this scenario seems not supported out of the box.
So I had to change the pipeline_bt_source and change stuff so the ESP
- is discoverable
- does not discover other parties
- starts AVRC in target mode
- starts A2DP in source mode
- activate SSP
So the ESP was finally discoverable and bindable with the CAR's MMI.
However the MMI showed that the device "does not report status" and thus doesn't show any track etc of course.
Also volume and track controls do not raise any AVCRP callbacks.
Before i get too deep into the rabbit hole...
Is this something that is doable with the ESP32's bluetooth stack in general?
Is it maybe just me not using the a2d/avrc API properly?
OR
Is this impossible for a normal developer because the bluetooth stack would need an update?
BR,
g3gg0
ESP32, A2DP source, AVRC target
Re: ESP32, A2DP source, AVRC target
Meanwhile I spent a day, going down that rabbit hole.
One thing I missed, was enabling commands via
however this only enables forwarding the command messages from the bluedriod stack to the application.
For the reporting back, nothing seems to do the trick.
none of these seem to get any attention by the MMI, although i registered all possible events using
One thing I missed, was enabling commands via
Code: Select all
esp_avrc_tg_set_psth_cmd_filter(ESP_AVRC_PSTH_FILTER_SUPPORTED_CMD, &cmd_set)
For the reporting back, nothing seems to do the trick.
Code: Select all
rn_param.playback = ESP_AVRC_PLAYBACK_PLAYING;
esp_avrc_tg_send_rn_rsp(ESP_AVRC_RN_PLAY_STATUS_CHANGE, ESP_AVRC_RN_RSP_CHANGED, &rn_param);
rn_param.elm_id[0] = 'a';
rn_param.elm_id[1] = 0;
esp_avrc_tg_send_rn_rsp(ESP_AVRC_RN_TRACK_CHANGE, ESP_AVRC_RN_RSP_CHANGED, &rn_param);
rn_param.play_pos = 32000;
esp_avrc_tg_send_rn_rsp(ESP_AVRC_RN_PLAY_POS_CHANGED, ESP_AVRC_RN_RSP_CHANGED, &rn_param);
Code: Select all
esp_avrc_tg_set_rn_evt_cap()
Who is online
Users browsing this forum: No registered users and 14 guests