mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-04-09 21:45:54 +00:00
avrcp_browsing_client: use browsing cid
This commit is contained in:
parent
a796c06fe4
commit
143efbe87c
@ -77,7 +77,10 @@
|
|||||||
// static const char * device_addr_string = "84:38:35:65:d1:15";
|
// static const char * device_addr_string = "84:38:35:65:d1:15";
|
||||||
// iPhone 5S: static const char * device_addr_string = "54:E4:3A:26:A2:39";
|
// iPhone 5S: static const char * device_addr_string = "54:E4:3A:26:A2:39";
|
||||||
// phone 2013:
|
// phone 2013:
|
||||||
static const char * device_addr_string = "D8:BB:2C:DF:F1:08";
|
// static const char * device_addr_string = "B0:34:95:CB:97:C4";
|
||||||
|
|
||||||
|
static const char * device_addr_string = "B0:34:95:CB:97:C4";
|
||||||
|
|
||||||
static bd_addr_t device_addr;
|
static bd_addr_t device_addr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -111,6 +114,7 @@ static avrcp_browsing_folders_t folders[AVRCP_BROWSING_MAX_FOLDERS];
|
|||||||
static int folder_index = -1;
|
static int folder_index = -1;
|
||||||
static uint16_t players[AVRCP_BROWSING_MAX_PLAYERS];
|
static uint16_t players[AVRCP_BROWSING_MAX_PLAYERS];
|
||||||
static int player_index = -1;
|
static int player_index = -1;
|
||||||
|
static uint16_t browsing_uid_counter = 0;
|
||||||
|
|
||||||
static btstack_packet_callback_registration_t hci_event_callback_registration;
|
static btstack_packet_callback_registration_t hci_event_callback_registration;
|
||||||
|
|
||||||
@ -177,7 +181,7 @@ int btstack_main(int argc, const char * argv[]){
|
|||||||
// Initialize AVRCP Browsing Controller, HCI events will be sent to the AVRCP Controller callback.
|
// Initialize AVRCP Browsing Controller, HCI events will be sent to the AVRCP Controller callback.
|
||||||
avrcp_browsing_controller_init();
|
avrcp_browsing_controller_init();
|
||||||
// // Register AVRCP for HCI events.
|
// // Register AVRCP for HCI events.
|
||||||
// avrcp_browsing_controller_register_packet_handler(&avrcp_browsing_controller_packet_handler);
|
avrcp_browsing_controller_register_packet_handler(&avrcp_browsing_controller_packet_handler);
|
||||||
|
|
||||||
// Initialize SDP.
|
// Initialize SDP.
|
||||||
sdp_init();
|
sdp_init();
|
||||||
@ -320,19 +324,22 @@ static void avrcp_browsing_controller_packet_handler(uint8_t packet_type, uint16
|
|||||||
uint16_t local_cid;
|
uint16_t local_cid;
|
||||||
uint8_t status = 0xFF;
|
uint8_t status = 0xFF;
|
||||||
bd_addr_t address;
|
bd_addr_t address;
|
||||||
|
|
||||||
|
if (packet[0] != HCI_EVENT_AVRCP_META) break;
|
||||||
switch (packet[2]){
|
switch (packet[2]){
|
||||||
case AVRCP_SUBEVENT_CONNECTION_ESTABLISHED: {
|
case AVRCP_SUBEVENT_CONNECTION_ESTABLISHED: {
|
||||||
local_cid = avrcp_subevent_connection_established_get_avrcp_cid(packet);
|
local_cid = avrcp_subevent_connection_established_get_avrcp_cid(packet);
|
||||||
if (browsing_cid != 0 && browsing_cid != local_cid) {
|
printf("AVRCP_SUBEVENT_CONNECTION_ESTABLISHED cid 0x%02x\n", local_cid);
|
||||||
printf("AVRCP Controller connection failed, expected 0x%02X l2cap cid, received 0x%02X\n", browsing_cid, local_cid);
|
|
||||||
|
if (avrcp_cid != 0 && avrcp_cid != local_cid) {
|
||||||
|
printf("AVRCP Controller connection failed, expected 0x%02X l2cap cid, received 0x%02X\n", avrcp_cid, local_cid);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = avrcp_subevent_connection_established_get_status(packet);
|
status = avrcp_subevent_connection_established_get_status(packet);
|
||||||
if (status != ERROR_CODE_SUCCESS){
|
if (status != ERROR_CODE_SUCCESS){
|
||||||
printf("AVRCP Controller connection failed: status 0x%02x\n", status);
|
printf("AVRCP Controller connection failed: status 0x%02x\n", status);
|
||||||
browsing_cid = 0;
|
avrcp_cid = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,14 +350,29 @@ static void avrcp_browsing_controller_packet_handler(uint8_t packet_type, uint16
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case AVRCP_SUBEVENT_CONNECTION_RELEASED:
|
case AVRCP_SUBEVENT_CONNECTION_RELEASED:
|
||||||
printf("AVRCP Browsing Client released.\n");
|
printf("AVRCP Controller Client released.\n");
|
||||||
browsing_cid = 0;
|
avrcp_cid = 0;
|
||||||
avrcp_browsing_connected = 0;
|
avrcp_browsing_connected = 0;
|
||||||
folder_index = 0;
|
folder_index = 0;
|
||||||
memset(folders, 0, sizeof(folders));
|
memset(folders, 0, sizeof(folders));
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
case AVRCP_SUBEVENT_INCOMING_BROWSING_CONNECTION:
|
||||||
|
local_cid = avrcp_subevent_incoming_browsing_connection_get_browsing_cid(packet);
|
||||||
|
printf("AVRCP_SUBEVENT_INCOMING_BROWSING_CONNECTION cid 0x%02x\n", local_cid);
|
||||||
|
if (browsing_cid != 0 && browsing_cid != local_cid) {
|
||||||
|
printf("AVRCP Browsing Client connection failed, expected 0x%02X l2cap cid, received 0x%02X\n", browsing_cid, local_cid);
|
||||||
|
avrcp_browsing_controller_decline_incoming_connection(browsing_cid);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
browsing_cid = local_cid;
|
||||||
|
printf("AVRCP Browsing Client configure incoming connection, browsing cid 0x%02x\n", browsing_cid);
|
||||||
|
avrcp_browsing_controller_configure_incoming_connection(browsing_cid, ertm_buffer, sizeof(ertm_buffer), &ertm_config);
|
||||||
|
break;
|
||||||
|
|
||||||
case AVRCP_SUBEVENT_BROWSING_CONNECTION_ESTABLISHED: {
|
case AVRCP_SUBEVENT_BROWSING_CONNECTION_ESTABLISHED: {
|
||||||
local_cid = avrcp_subevent_browsing_connection_established_get_browsing_cid(packet);
|
local_cid = avrcp_subevent_browsing_connection_established_get_browsing_cid(packet);
|
||||||
|
printf("AVRCP_SUBEVENT_BROWSING_CONNECTION_ESTABLISHED cid 0x%02x\n", local_cid);
|
||||||
if (browsing_cid != 0 && browsing_cid != local_cid) {
|
if (browsing_cid != 0 && browsing_cid != local_cid) {
|
||||||
printf("AVRCP Browsing Client connection failed, expected 0x%02X l2cap cid, received 0x%02X\n", browsing_cid, local_cid);
|
printf("AVRCP Browsing Client connection failed, expected 0x%02X l2cap cid, received 0x%02X\n", browsing_cid, local_cid);
|
||||||
return;
|
return;
|
||||||
@ -370,22 +392,25 @@ static void avrcp_browsing_controller_packet_handler(uint8_t packet_type, uint16
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case AVRCP_SUBEVENT_BROWSING_CONNECTION_RELEASED:
|
case AVRCP_SUBEVENT_BROWSING_CONNECTION_RELEASED:
|
||||||
printf("AVRCP Browsing Client released\n");
|
printf("AVRCP Browsing Controller released\n");
|
||||||
browsing_cid = 0;
|
browsing_cid = 0;
|
||||||
avrcp_browsing_connected = 0;
|
avrcp_browsing_connected = 0;
|
||||||
return;
|
return;
|
||||||
case AVRCP_SUBEVENT_BROWSING_MEDIA_ITEM_DONE:
|
|
||||||
|
case AVRCP_SUBEVENT_BROWSING_DONE:
|
||||||
browsing_query_active = 0;
|
browsing_query_active = 0;
|
||||||
if (avrcp_subevent_browsing_media_item_done_get_browsing_status(packet) != AVRCP_BROWSING_ERROR_CODE_SUCCESS){
|
browsing_uid_counter = 0;
|
||||||
|
if (avrcp_subevent_browsing_done_get_browsing_status(packet) != AVRCP_BROWSING_ERROR_CODE_SUCCESS){
|
||||||
printf("AVRCP Browsing query done with browsing status 0x%02x, bluetooth status 0x%02x.\n",
|
printf("AVRCP Browsing query done with browsing status 0x%02x, bluetooth status 0x%02x.\n",
|
||||||
avrcp_subevent_browsing_media_item_done_get_browsing_status(packet),
|
avrcp_subevent_browsing_done_get_browsing_status(packet),
|
||||||
avrcp_subevent_browsing_media_item_done_get_bluetooth_status(packet));
|
avrcp_subevent_browsing_done_get_bluetooth_status(packet));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printf("AVRCP Browsing cmd: DONE.\n");
|
browsing_uid_counter = avrcp_subevent_browsing_done_get_uid_counter(packet);
|
||||||
|
printf("DONE, browsing_uid_counter %d.\n", browsing_uid_counter);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
printf("AVRCP Browsing Client: event is not parsed\n");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -478,7 +503,7 @@ static void stdin_process(char cmd){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printf("Set addressed player\n");
|
printf("Set addressed player\n");
|
||||||
status = avrcp_browsing_controller_set_addressed_player(browsing_cid, players[0]);
|
status = avrcp_controller_set_addressed_player(avrcp_cid, players[0]);
|
||||||
break;
|
break;
|
||||||
case 'O':
|
case 'O':
|
||||||
if (player_index < 0) {
|
if (player_index < 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user