mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-11 18:40:22 +00:00
test/le_audio: restart advertising on disconnect on broadcast sink
This commit is contained in:
parent
54e09f5e8a
commit
c549106153
@ -156,6 +156,10 @@ static bool count_mode;
|
|||||||
static bool pts_mode;
|
static bool pts_mode;
|
||||||
static bool nrf5340_audio_demo;
|
static bool nrf5340_audio_demo;
|
||||||
|
|
||||||
|
// broadcast assistant
|
||||||
|
static hci_con_handle_t commander_acl_handle;
|
||||||
|
static bd_addr_t commander_address;
|
||||||
|
static bd_addr_type_t commander_type;
|
||||||
|
|
||||||
// broadcast info
|
// broadcast info
|
||||||
static const uint8_t big_handle = 1;
|
static const uint8_t big_handle = 1;
|
||||||
@ -341,7 +345,11 @@ static void start_scanning() {
|
|||||||
printf("Start scan..\n");
|
printf("Start scan..\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setup_advertising() {
|
static void start_advertising(void) {
|
||||||
|
gap_extended_advertising_start(adv_handle, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void setup_advertising(void) {
|
||||||
bd_addr_t local_addr;
|
bd_addr_t local_addr;
|
||||||
gap_local_bd_addr(local_addr);
|
gap_local_bd_addr(local_addr);
|
||||||
bool local_address_invalid = btstack_is_null_bd_addr( local_addr );
|
bool local_address_invalid = btstack_is_null_bd_addr( local_addr );
|
||||||
@ -354,7 +362,7 @@ static void setup_advertising() {
|
|||||||
gap_extended_advertising_set_random_address( adv_handle, random_address );
|
gap_extended_advertising_set_random_address( adv_handle, random_address );
|
||||||
}
|
}
|
||||||
gap_extended_advertising_set_adv_data(adv_handle, sizeof(extended_adv_data), extended_adv_data);
|
gap_extended_advertising_set_adv_data(adv_handle, sizeof(extended_adv_data), extended_adv_data);
|
||||||
gap_extended_advertising_start(adv_handle, 0, 0);
|
start_advertising();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void got_base_and_big_info() {
|
static void got_base_and_big_info() {
|
||||||
@ -499,8 +507,22 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case HCI_EVENT_DISCONNECTION_COMPLETE:
|
||||||
|
// restart advertisements on disconnect
|
||||||
|
if (hci_event_disconnection_complete_get_connection_handle(packet) == commander_acl_handle) {
|
||||||
|
printf("Broadcast Assistant disconnected\n");
|
||||||
|
commander_acl_handle = HCI_CON_HANDLE_INVALID;
|
||||||
|
start_advertising();
|
||||||
|
}
|
||||||
|
break;
|
||||||
case HCI_EVENT_LE_META:
|
case HCI_EVENT_LE_META:
|
||||||
switch(hci_event_le_meta_get_subevent_code(packet)) {
|
switch(hci_event_le_meta_get_subevent_code(packet)) {
|
||||||
|
case HCI_SUBEVENT_LE_CONNECTION_COMPLETE:
|
||||||
|
commander_acl_handle = hci_subevent_le_connection_complete_get_connection_handle(packet);
|
||||||
|
commander_type = hci_subevent_le_connection_complete_get_peer_address_type(packet);
|
||||||
|
hci_subevent_le_connection_complete_get_peer_address(packet, commander_address);
|
||||||
|
printf("Broadcast Assistant connected, handle 0x%04x - %s type %u\n", commander_acl_handle, bd_addr_to_str(commander_address), commander_type);
|
||||||
|
break;
|
||||||
case HCI_SUBEVENT_LE_PERIODIC_ADVERTISING_SYNC_TRANSFER_RECEIVED:
|
case HCI_SUBEVENT_LE_PERIODIC_ADVERTISING_SYNC_TRANSFER_RECEIVED:
|
||||||
// PAST implies broadcast source has been added by client
|
// PAST implies broadcast source has been added by client
|
||||||
sync_handle = hci_subevent_le_periodic_advertising_sync_transfer_received_get_sync_handle(packet);
|
sync_handle = hci_subevent_le_periodic_advertising_sync_transfer_received_get_sync_handle(packet);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user