avdtp_util.c (0fbfe0705ce515f74b808566b16b94c29ea198ee) avdtp_util.c (f08f4934f31cf992e4c7df753556e2e10ca62d73)
1/*
2 * Copyright (C) 2016 BlueKitchen GmbH
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright

--- 678 unchanged lines hidden (view full) ---

687 pos += 2;
688 little_endian_store_16(event, pos, media_codec.media_codec_information_len);
689 pos += 2;
690 (void)memcpy(event + pos, media_codec.media_codec_information,
691 btstack_min(media_codec.media_codec_information_len, MAX_MEDIA_CODEC_INFORMATION_LENGTH));
692 (*callback)(HCI_EVENT_PACKET, 0, event, sizeof(event));
693}
694
1/*
2 * Copyright (C) 2016 BlueKitchen GmbH
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright

--- 678 unchanged lines hidden (view full) ---

687 pos += 2;
688 little_endian_store_16(event, pos, media_codec.media_codec_information_len);
689 pos += 2;
690 (void)memcpy(event + pos, media_codec.media_codec_information,
691 btstack_min(media_codec.media_codec_information_len, MAX_MEDIA_CODEC_INFORMATION_LENGTH));
692 (*callback)(HCI_EVENT_PACKET, 0, event, sizeof(event));
693}
694
695static inline void avdtp_signaling_emit_media_codec_other(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid, adtvp_media_codec_capabilities_t media_codec, uint8_t reconfigure){
695static void avdtp_signaling_emit_capability_done(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid){
696 btstack_assert(callback != NULL);
696 btstack_assert(callback != NULL);
697 uint8_t event[7];
698 int pos = 0;
699 event[pos++] = HCI_EVENT_AVDTP_META;
700 event[pos++] = sizeof(event) - 2;
701 event[pos++] = AVDTP_SUBEVENT_SIGNALING_CAPABILITIES_DONE;
702 little_endian_store_16(event, pos, avdtp_cid);
703 pos += 2;
704 event[pos++] = local_seid;
705 event[pos++] = remote_seid;
706 (*callback)(HCI_EVENT_PACKET, 0, event, sizeof(event));
707}
708
709void avdtp_signaling_emit_media_codec_other(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid, adtvp_media_codec_capabilities_t media_codec, uint8_t reconfigure){
710 btstack_assert(callback != NULL);
697 uint8_t event[MAX_MEDIA_CODEC_INFORMATION_LENGTH + 13];
698 int pos = 0;
699 event[pos++] = HCI_EVENT_AVDTP_META;
700 event[pos++] = sizeof(event) - 2;
701 event[pos++] = AVDTP_SUBEVENT_SIGNALING_MEDIA_CODEC_OTHER_CONFIGURATION;
702 little_endian_store_16(event, pos, avdtp_cid);
703 pos += 2;
704 event[pos++] = local_seid;

--- 7 unchanged lines hidden (view full) ---

712
713 int media_codec_len = btstack_min(MAX_MEDIA_CODEC_INFORMATION_LENGTH, media_codec.media_codec_information_len);
714 (void)memcpy(event + pos, media_codec.media_codec_information,
715 media_codec_len);
716
717 (*callback)(HCI_EVENT_PACKET, 0, event, sizeof(event));
718}
719
711 uint8_t event[MAX_MEDIA_CODEC_INFORMATION_LENGTH + 13];
712 int pos = 0;
713 event[pos++] = HCI_EVENT_AVDTP_META;
714 event[pos++] = sizeof(event) - 2;
715 event[pos++] = AVDTP_SUBEVENT_SIGNALING_MEDIA_CODEC_OTHER_CONFIGURATION;
716 little_endian_store_16(event, pos, avdtp_cid);
717 pos += 2;
718 event[pos++] = local_seid;

--- 7 unchanged lines hidden (view full) ---

726
727 int media_codec_len = btstack_min(MAX_MEDIA_CODEC_INFORMATION_LENGTH, media_codec.media_codec_information_len);
728 (void)memcpy(event + pos, media_codec.media_codec_information,
729 media_codec_len);
730
731 (*callback)(HCI_EVENT_PACKET, 0, event, sizeof(event));
732}
733
720static void avdtp_signaling_emit_capability_done(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid){
721 btstack_assert(callback != NULL);
722 uint8_t event[7];
723 int pos = 0;
724 event[pos++] = HCI_EVENT_AVDTP_META;
725 event[pos++] = sizeof(event) - 2;
726 event[pos++] = AVDTP_SUBEVENT_SIGNALING_CAPABILITIES_DONE;
727 little_endian_store_16(event, pos, avdtp_cid);
728 pos += 2;
729 event[pos++] = local_seid;
730 event[pos++] = remote_seid;
731 (*callback)(HCI_EVENT_PACKET, 0, event, sizeof(event));
732}
733
734void avdtp_signaling_emit_media_codec_other_configuration(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid, adtvp_media_codec_capabilities_t media_codec){
735 btstack_assert(callback != NULL);
736 avdtp_signaling_emit_media_codec_other(callback, avdtp_cid, local_seid, remote_seid, media_codec, 0);
737}
738
739void avdtp_signaling_emit_media_codec_other_reconfiguration(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid, adtvp_media_codec_capabilities_t media_codec){
740 btstack_assert(callback != NULL);
741 avdtp_signaling_emit_media_codec_other(callback, avdtp_cid, local_seid, remote_seid, media_codec, 1);
742}
743
744void avdtp_emit_capabilities(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid, avdtp_capabilities_t * capabilities, uint16_t registered_service_categories){
745 if (get_bit16(registered_service_categories, AVDTP_MEDIA_CODEC)){
746 switch (capabilities->media_codec.media_codec_type){
747 case AVDTP_CODEC_SBC:
748 avdtp_signaling_emit_media_codec_sbc_capability(callback, avdtp_cid, local_seid, remote_seid, capabilities->media_codec);
749 break;
750 default:
751 avdtp_signaling_emit_media_codec_other_capability(callback, avdtp_cid, local_seid, remote_seid, capabilities->media_codec);

--- 69 unchanged lines hidden ---
734void avdtp_emit_capabilities(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid, avdtp_capabilities_t * capabilities, uint16_t registered_service_categories){
735 if (get_bit16(registered_service_categories, AVDTP_MEDIA_CODEC)){
736 switch (capabilities->media_codec.media_codec_type){
737 case AVDTP_CODEC_SBC:
738 avdtp_signaling_emit_media_codec_sbc_capability(callback, avdtp_cid, local_seid, remote_seid, capabilities->media_codec);
739 break;
740 default:
741 avdtp_signaling_emit_media_codec_other_capability(callback, avdtp_cid, local_seid, remote_seid, capabilities->media_codec);

--- 69 unchanged lines hidden ---