mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-28 19:20:54 +00:00
a2dp: handle signaling chanel release, fix event's meta type
This commit is contained in:
parent
46c4885331
commit
04cd6488fb
@ -301,7 +301,7 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
|
|||||||
uint8_t status;
|
uint8_t status;
|
||||||
uint8_t local_seid;
|
uint8_t local_seid;
|
||||||
bd_addr_t address;
|
bd_addr_t address;
|
||||||
|
|
||||||
if (packet_type != HCI_EVENT_PACKET) return;
|
if (packet_type != HCI_EVENT_PACKET) return;
|
||||||
|
|
||||||
#ifndef HAVE_BTSTACK_STDIN
|
#ifndef HAVE_BTSTACK_STDIN
|
||||||
@ -317,7 +317,6 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (hci_event_packet_get_type(packet) != HCI_EVENT_A2DP_META) return;
|
if (hci_event_packet_get_type(packet) != HCI_EVENT_A2DP_META) return;
|
||||||
|
|
||||||
switch (packet[2]){
|
switch (packet[2]){
|
||||||
case A2DP_SUBEVENT_INCOMING_CONNECTION_ESTABLISHED:
|
case A2DP_SUBEVENT_INCOMING_CONNECTION_ESTABLISHED:
|
||||||
a2dp_subevent_incoming_connection_established_get_bd_addr(packet, address);
|
a2dp_subevent_incoming_connection_established_get_bd_addr(packet, address);
|
||||||
@ -370,6 +369,9 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
|
|||||||
printf("A2DP: Stream released.\n");
|
printf("A2DP: Stream released.\n");
|
||||||
a2dp_demo_timer_stop(&media_tracker);
|
a2dp_demo_timer_stop(&media_tracker);
|
||||||
break;
|
break;
|
||||||
|
case A2DP_SUBEVENT_SIGNALING_CONNECTION_RELEASED:
|
||||||
|
printf("A2DP: Signaling released.\n");
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
printf("A2DP: event 0x%02x is not implemented\n", packet[2]);
|
printf("A2DP: event 0x%02x is not implemented\n", packet[2]);
|
||||||
break;
|
break;
|
||||||
|
@ -167,7 +167,7 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
|
|||||||
|
|
||||||
if (packet_type != HCI_EVENT_PACKET) return;
|
if (packet_type != HCI_EVENT_PACKET) return;
|
||||||
if (hci_event_packet_get_type(packet) != HCI_EVENT_AVDTP_META) return;
|
if (hci_event_packet_get_type(packet) != HCI_EVENT_AVDTP_META) return;
|
||||||
|
|
||||||
switch (packet[2]){
|
switch (packet[2]){
|
||||||
case AVDTP_SUBEVENT_SIGNALING_CONNECTION_ESTABLISHED:
|
case AVDTP_SUBEVENT_SIGNALING_CONNECTION_ESTABLISHED:
|
||||||
avdtp_subevent_signaling_connection_established_get_bd_addr(packet, sc.remote_addr);
|
avdtp_subevent_signaling_connection_established_get_bd_addr(packet, sc.remote_addr);
|
||||||
@ -378,10 +378,24 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
|
|||||||
signal_identifier = avdtp_subevent_signaling_general_reject_get_signal_identifier(packet);
|
signal_identifier = avdtp_subevent_signaling_general_reject_get_signal_identifier(packet);
|
||||||
log_info("Rejected %d", signal_identifier);
|
log_info("Rejected %d", signal_identifier);
|
||||||
break;
|
break;
|
||||||
case AVDTP_SUBEVENT_STREAMING_CONNECTION_RELEASED:{
|
case AVDTP_SUBEVENT_SIGNALING_CONNECTION_RELEASED:{
|
||||||
|
app_state = A2DP_IDLE;
|
||||||
uint8_t event[6];
|
uint8_t event[6];
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
event[pos++] = HCI_EVENT_AVDTP_META;
|
event[pos++] = HCI_EVENT_A2DP_META;
|
||||||
|
event[pos++] = sizeof(event) - 2;
|
||||||
|
event[pos++] = A2DP_SUBEVENT_SIGNALING_CONNECTION_RELEASED;
|
||||||
|
little_endian_store_16(event, pos, avdtp_subevent_streaming_connection_released_get_avdtp_cid(packet));
|
||||||
|
pos += 2;
|
||||||
|
event[pos++] = avdtp_subevent_streaming_connection_released_get_local_seid(packet);
|
||||||
|
(*a2dp_source_context.a2dp_callback)(HCI_EVENT_PACKET, 0, event, sizeof(event));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case AVDTP_SUBEVENT_STREAMING_CONNECTION_RELEASED:{
|
||||||
|
app_state = A2DP_IDLE;
|
||||||
|
uint8_t event[6];
|
||||||
|
int pos = 0;
|
||||||
|
event[pos++] = HCI_EVENT_A2DP_META;
|
||||||
event[pos++] = sizeof(event) - 2;
|
event[pos++] = sizeof(event) - 2;
|
||||||
event[pos++] = A2DP_SUBEVENT_STREAM_RELEASED;
|
event[pos++] = A2DP_SUBEVENT_STREAM_RELEASED;
|
||||||
little_endian_store_16(event, pos, avdtp_subevent_streaming_connection_released_get_avdtp_cid(packet));
|
little_endian_store_16(event, pos, avdtp_subevent_streaming_connection_released_get_avdtp_cid(packet));
|
||||||
@ -390,8 +404,6 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
|
|||||||
(*a2dp_source_context.a2dp_callback)(HCI_EVENT_PACKET, 0, event, sizeof(event));
|
(*a2dp_source_context.a2dp_callback)(HCI_EVENT_PACKET, 0, event, sizeof(event));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AVDTP_SUBEVENT_SIGNALING_CONNECTION_RELEASED:
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
app_state = A2DP_IDLE;
|
app_state = A2DP_IDLE;
|
||||||
log_info("not implemented");
|
log_info("not implemented");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user