mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-07 03:57:07 +03:00
add volume for BT sink
At this point, I don't understand how to send requests for Play/Pause, from the ESP32, to the BT controller
This commit is contained in:
@@ -25,7 +25,7 @@
|
||||
#include "nvs_utilities.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
|
||||
#include "audio_controls.h"
|
||||
#include "sys/lock.h"
|
||||
|
||||
// AVRCP used transaction label
|
||||
@@ -60,6 +60,7 @@ static void bt_av_hdl_a2d_evt(uint16_t event, void *p_param);
|
||||
static void bt_av_hdl_avrc_ct_evt(uint16_t event, void *p_param);
|
||||
/* avrc TG event handler */
|
||||
static void bt_av_hdl_avrc_tg_evt(uint16_t event, void *p_param);
|
||||
static void volume_set_by_local_host(uint8_t volume);
|
||||
|
||||
static esp_a2d_audio_state_t s_audio_state = ESP_A2D_AUDIO_STATE_STOPPED;
|
||||
static const char *s_a2d_conn_state_str[] = {"Disconnected", "Connecting", "Connected", "Disconnecting"};
|
||||
@@ -69,6 +70,29 @@ static _lock_t s_volume_lock;
|
||||
static uint8_t s_volume = 0;
|
||||
static bool s_volume_notify;
|
||||
|
||||
static void bt_volume_up(void) {
|
||||
volume_set_by_local_host(s_volume + 3);
|
||||
ESP_LOGI(BT_AV_TAG, "BT volume up %u", s_volume);
|
||||
}
|
||||
|
||||
static void bt_volume_down(void) {
|
||||
volume_set_by_local_host(s_volume - 3);
|
||||
ESP_LOGI(BT_AV_TAG, "BT volume down %u", s_volume);
|
||||
}
|
||||
|
||||
static void bt_toggle(void) {
|
||||
//btc_a2dp_control_media_ctrl(ESP_A2D_MEDIA_CTL_STOP);
|
||||
//ESP_LOGI(BT_AV_TAG, "PLAY/PAUSE");
|
||||
}
|
||||
|
||||
static actrls_t controls = {
|
||||
bt_volume_up, bt_volume_down, // volume up, volume down
|
||||
bt_toggle, NULL, // toggle, play
|
||||
NULL, NULL, // pause, stop
|
||||
NULL, NULL, // rew, fwd
|
||||
NULL, NULL, // prev, next
|
||||
};
|
||||
|
||||
/* callback for A2DP sink */
|
||||
void bt_app_a2d_cb(esp_a2d_cb_event_t event, esp_a2d_cb_param_t *param)
|
||||
{
|
||||
@@ -144,9 +168,11 @@ static void bt_av_hdl_a2d_evt(uint16_t event, void *p_param)
|
||||
if (a2d->conn_stat.state == ESP_A2D_CONNECTION_STATE_DISCONNECTED) {
|
||||
esp_bt_gap_set_scan_mode(ESP_BT_CONNECTABLE, ESP_BT_GENERAL_DISCOVERABLE);
|
||||
(*bt_app_a2d_cmd_cb)(BT_SINK_DISCONNECTED);
|
||||
actrls_unset();
|
||||
} else if (a2d->conn_stat.state == ESP_A2D_CONNECTION_STATE_CONNECTED){
|
||||
esp_bt_gap_set_scan_mode(ESP_BT_NON_CONNECTABLE, ESP_BT_NON_DISCOVERABLE);
|
||||
(*bt_app_a2d_cmd_cb)(BT_SINK_CONNECTED);
|
||||
actrls_set(controls);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -519,3 +545,6 @@ static void bt_av_hdl_stack_evt(uint16_t event, void *p_param)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user