diff --git a/software/main/include/avrcp.h b/software/main/include/avrcp.h index a59f7c7..011d90d 100644 --- a/software/main/include/avrcp.h +++ b/software/main/include/avrcp.h @@ -9,6 +9,8 @@ namespace avrcp { void play_pause(); void forward(); void backward(); + void seek_forward(); + void seek_backward(); void set_volume(uint8_t volume); } diff --git a/software/main/src/avrcp.cpp b/software/main/src/avrcp.cpp index 154bd0e..8c75f35 100644 --- a/software/main/src/avrcp.cpp +++ b/software/main/src/avrcp.cpp @@ -177,6 +177,18 @@ void avrcp::backward() { send_cmd(ESP_AVRC_PT_CMD_BACKWARD); } +void avrcp::seek_forward() { + ESP_LOGI(AVRCP_TAG, "Seek forward"); + + send_cmd(ESP_AVRC_PT_CMD_FAST_FORWARD); +} + +void avrcp::seek_backward() { + ESP_LOGI(AVRCP_TAG, "Seek backward"); + + send_cmd(ESP_AVRC_PT_CMD_REWIND); +} + void avrcp::set_volume(uint8_t v) { // Make sure the volume is actually changed if (v == volume) { diff --git a/software/main/src/can.cpp b/software/main/src/can.cpp index 9de868f..d8a456c 100644 --- a/software/main/src/can.cpp +++ b/software/main/src/can.cpp @@ -336,6 +336,19 @@ static void can_task(void* params) { static MultiPurposeButton button_backward(nullptr, avrcp::backward); button_backward.update(buttons.backward); + + static uint8_t scroll = 0; + if (scroll != buttons.scroll) { + int8_t diff = buttons.scroll - scroll; + + if (diff < 0) { + avrcp::seek_backward(); + } else { + avrcp::seek_forward(); + } + + scroll = buttons.scroll; + } } break;