From 6c333d061e6f2d3bee5758d5e7fc6de14de4c53c Mon Sep 17 00:00:00 2001 From: Milanka Ringwald <mila@ringwald.ch> Date: Fri, 27 Oct 2017 10:21:06 +0200 Subject: [PATCH] a2dp sink demo: warning on avrcp cmds called beforeestablishing AVRCP connection --- example/a2dp_sink_demo.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/example/a2dp_sink_demo.c b/example/a2dp_sink_demo.c index 5b5f241a8..a186347ce 100644 --- a/example/a2dp_sink_demo.c +++ b/example/a2dp_sink_demo.c @@ -184,7 +184,8 @@ static bd_addr_t device_addr; #endif static uint16_t avrcp_cid = 0; -static uint8_t sdp_avrcp_controller_service_buffer[200]; +static uint8_t avrcp_connected = 0; +static uint8_t sdp_avrcp_controller_service_buffer[200]; #ifdef HAVE_PORTAUDIO static int patestCallback( const void *inputBuffer, void *outputBuffer, @@ -585,17 +586,21 @@ static void avrcp_controller_packet_handler(uint8_t packet_type, uint16_t channe } avrcp_cid = local_cid; + avrcp_connected = 1; avrcp_subevent_connection_established_get_bd_addr(packet, adress); printf("Channel successfully opened: %s, avrcp_cid 0x%02x\n", bd_addr_to_str(adress), avrcp_cid); // automatically enable notifications avrcp_controller_enable_notification(avrcp_cid, AVRCP_NOTIFICATION_EVENT_PLAYBACK_STATUS_CHANGED); avrcp_controller_enable_notification(avrcp_cid, AVRCP_NOTIFICATION_EVENT_NOW_PLAYING_CONTENT_CHANGED); + avrcp_controller_enable_notification(avrcp_cid, AVRCP_NOTIFICATION_EVENT_VOLUME_CHANGED); + avrcp_controller_enable_notification(avrcp_cid, AVRCP_NOTIFICATION_EVENT_TRACK_CHANGED); return; } case AVRCP_SUBEVENT_CONNECTION_RELEASED: printf("Channel released: avrcp_cid 0x%02x\n", avrcp_subevent_connection_released_get_avrcp_cid(packet)); avrcp_cid = 0; + avrcp_connected = 0; return; default: break; @@ -862,6 +867,20 @@ static uint8_t media_sbc_codec_configuration[] = { #ifdef HAVE_BTSTACK_STDIN static void stdin_process(char cmd){ uint8_t status = ERROR_CODE_SUCCESS; + printf("stdin_process \n"); + if (!avrcp_connected){ + switch (cmd){ + case 'b': + case 'B': + case 'c': + break; + default: + printf("Command '%c' cannot be performed - please use 'c' to establish an AVRCP connection with device (addr %s).\n", cmd, bd_addr_to_str(device_addr)); + return; + } + + } + switch (cmd){ case 'b': status = a2dp_sink_establish_stream(device_addr, local_seid, &a2dp_cid);