xref: /btstack/src/classic/avdtp_source.h (revision 80e33422a96c028b3a9c308fc4b9b874712dafb4)
18ef7100fSMilanka Ringwald /*
28ef7100fSMilanka Ringwald  * Copyright (C) 2016 BlueKitchen GmbH
38ef7100fSMilanka Ringwald  *
48ef7100fSMilanka Ringwald  * Redistribution and use in source and binary forms, with or without
58ef7100fSMilanka Ringwald  * modification, are permitted provided that the following conditions
68ef7100fSMilanka Ringwald  * are met:
78ef7100fSMilanka Ringwald  *
88ef7100fSMilanka Ringwald  * 1. Redistributions of source code must retain the above copyright
98ef7100fSMilanka Ringwald  *    notice, this list of conditions and the following disclaimer.
108ef7100fSMilanka Ringwald  * 2. Redistributions in binary form must reproduce the above copyright
118ef7100fSMilanka Ringwald  *    notice, this list of conditions and the following disclaimer in the
128ef7100fSMilanka Ringwald  *    documentation and/or other materials provided with the distribution.
138ef7100fSMilanka Ringwald  * 3. Neither the name of the copyright holders nor the names of
148ef7100fSMilanka Ringwald  *    contributors may be used to endorse or promote products derived
158ef7100fSMilanka Ringwald  *    from this software without specific prior written permission.
168ef7100fSMilanka Ringwald  * 4. Any redistribution, use, or modification is done solely for
178ef7100fSMilanka Ringwald  *    personal benefit and not for any commercial purpose or for
188ef7100fSMilanka Ringwald  *    monetary gain.
198ef7100fSMilanka Ringwald  *
208ef7100fSMilanka Ringwald  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
218ef7100fSMilanka Ringwald  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
228ef7100fSMilanka Ringwald  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
238ef7100fSMilanka Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS
248ef7100fSMilanka Ringwald  * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
258ef7100fSMilanka Ringwald  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
268ef7100fSMilanka Ringwald  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
278ef7100fSMilanka Ringwald  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
288ef7100fSMilanka Ringwald  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
298ef7100fSMilanka Ringwald  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
308ef7100fSMilanka Ringwald  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
318ef7100fSMilanka Ringwald  * SUCH DAMAGE.
328ef7100fSMilanka Ringwald  *
338ef7100fSMilanka Ringwald  * Please inquire about commercial licensing options at
348ef7100fSMilanka Ringwald  * [email protected]
358ef7100fSMilanka Ringwald  *
368ef7100fSMilanka Ringwald  */
378ef7100fSMilanka Ringwald 
388ef7100fSMilanka Ringwald /*
398ef7100fSMilanka Ringwald  * avdtp_source.h
408ef7100fSMilanka Ringwald  *
418ef7100fSMilanka Ringwald  * Audio/Video Distribution Transport Protocol Source
428ef7100fSMilanka Ringwald  *
438ef7100fSMilanka Ringwald  * AVDTP Source is a device that streames media data.
448ef7100fSMilanka Ringwald  */
458ef7100fSMilanka Ringwald 
46*80e33422SMatthias Ringwald #ifndef AVDTP_SOURCE_H
47*80e33422SMatthias Ringwald #define AVDTP_SOURCE_H
488ef7100fSMilanka Ringwald 
498ef7100fSMilanka Ringwald #include <stdint.h>
503311c2d5SMatthias Ringwald #include "classic/avdtp.h"
518ef7100fSMilanka Ringwald 
528ef7100fSMilanka Ringwald #if defined __cplusplus
538ef7100fSMilanka Ringwald extern "C" {
548ef7100fSMilanka Ringwald #endif
558ef7100fSMilanka Ringwald 
568ef7100fSMilanka Ringwald /* API_START */
578ef7100fSMilanka Ringwald 
58747ec646SMilanka Ringwald void avdtp_source_register_media_transport_category(uint8_t seid);
59747ec646SMilanka Ringwald void avdtp_source_register_reporting_category(uint8_t seid);
60747ec646SMilanka Ringwald void avdtp_source_register_delay_reporting_category(uint8_t seid);
61747ec646SMilanka Ringwald void avdtp_source_register_recovery_category(uint8_t seid, uint8_t maximum_recovery_window_size, uint8_t maximum_number_media_packets);
62747ec646SMilanka Ringwald void avdtp_source_register_content_protection_category(uint8_t seid, uint16_t cp_type, const uint8_t * cp_type_value, uint8_t cp_type_value_len);
63747ec646SMilanka Ringwald void avdtp_source_register_header_compression_category(uint8_t seid, uint8_t back_ch, uint8_t media, uint8_t recovery);
6478d08d09SMilanka Ringwald void avdtp_source_register_media_codec_category(uint8_t seid, avdtp_media_type_t media_type, avdtp_media_codec_type_t media_codec_type, uint8_t * media_codec_info, uint16_t media_codec_info_len);
65747ec646SMilanka Ringwald void avdtp_source_register_multiplexing_category(uint8_t seid, uint8_t fragmentation);
66747ec646SMilanka Ringwald 
67747ec646SMilanka Ringwald 
68274391e8SMilanka Ringwald void avdtp_source_init(avdtp_context_t * avdtp_context);
69747ec646SMilanka Ringwald void avdtp_source_register_packet_handler(btstack_packet_handler_t callback);
70747ec646SMilanka Ringwald 
71747ec646SMilanka Ringwald /**
72747ec646SMilanka Ringwald  * @brief Connect to device with a bluetooth address. (and perform configuration?)
73747ec646SMilanka Ringwald  * @param bd_addr
744ccacc40SMilanka Ringwald  * @param avdtp_cid Assigned avdtp cid
75747ec646SMilanka Ringwald  */
764ccacc40SMilanka Ringwald uint8_t avdtp_source_connect(bd_addr_t bd_addr, uint16_t * avdtp_cid);
77747ec646SMilanka Ringwald 
78747ec646SMilanka Ringwald /**
79747ec646SMilanka Ringwald  * @brief Disconnect from device with connection handle.
80f9bca1f3SMilanka Ringwald  * @param avdtp_cid
81747ec646SMilanka Ringwald  */
824ccacc40SMilanka Ringwald uint8_t avdtp_source_disconnect(uint16_t avdtp_cid);
83747ec646SMilanka Ringwald 
84747ec646SMilanka Ringwald /**
85747ec646SMilanka Ringwald  * @brief Discover stream endpoints
86f9bca1f3SMilanka Ringwald  * @param avdtp_cid
87747ec646SMilanka Ringwald  */
889974aee0SMilanka Ringwald uint8_t avdtp_source_discover_stream_endpoints(uint16_t avdtp_cid);
89747ec646SMilanka Ringwald 
90747ec646SMilanka Ringwald /**
91747ec646SMilanka Ringwald  * @brief Get capabilities
92f9bca1f3SMilanka Ringwald  * @param avdtp_cid
93747ec646SMilanka Ringwald  */
949974aee0SMilanka Ringwald uint8_t avdtp_source_get_capabilities(uint16_t avdtp_cid, uint8_t acp_seid);
95747ec646SMilanka Ringwald 
96747ec646SMilanka Ringwald /**
97747ec646SMilanka Ringwald  * @brief Get all capabilities
98f9bca1f3SMilanka Ringwald  * @param avdtp_cid
99747ec646SMilanka Ringwald  */
1009974aee0SMilanka Ringwald uint8_t avdtp_source_get_all_capabilities(uint16_t avdtp_cid, uint8_t acp_seid);
101747ec646SMilanka Ringwald 
102747ec646SMilanka Ringwald /**
103747ec646SMilanka Ringwald  * @brief Set configuration
104f9bca1f3SMilanka Ringwald  * @param avdtp_cid
105747ec646SMilanka Ringwald  */
1069974aee0SMilanka Ringwald uint8_t avdtp_source_set_configuration(uint16_t avdtp_cid, uint8_t int_seid, uint8_t acp_seid, uint16_t configured_services_bitmap, avdtp_capabilities_t configuration);
107747ec646SMilanka Ringwald 
108747ec646SMilanka Ringwald /**
109747ec646SMilanka Ringwald  * @brief Reconfigure stream
110f9bca1f3SMilanka Ringwald  * @param avdtp_cid
111747ec646SMilanka Ringwald  * @param seid
112747ec646SMilanka Ringwald  */
1139974aee0SMilanka Ringwald uint8_t avdtp_source_reconfigure(uint16_t avdtp_cid, uint8_t int_seid, uint8_t acp_seid, uint16_t configured_services_bitmap, avdtp_capabilities_t configuration);
114747ec646SMilanka Ringwald 
115747ec646SMilanka Ringwald /**
116747ec646SMilanka Ringwald  * @brief Get configuration
117f9bca1f3SMilanka Ringwald  * @param avdtp_cid
118747ec646SMilanka Ringwald  */
1199974aee0SMilanka Ringwald uint8_t avdtp_source_get_configuration(uint16_t avdtp_cid, uint8_t acp_seid);
120747ec646SMilanka Ringwald 
121747ec646SMilanka Ringwald 
122747ec646SMilanka Ringwald /**
123747ec646SMilanka Ringwald  * @brief Open stream
124f9bca1f3SMilanka Ringwald  * @param avdtp_cid
125747ec646SMilanka Ringwald  * @param seid
126747ec646SMilanka Ringwald  */
1274ccacc40SMilanka Ringwald uint8_t avdtp_source_open_stream(uint16_t avdtp_cid, uint8_t int_seid, uint8_t acp_seid);
128747ec646SMilanka Ringwald 
129747ec646SMilanka Ringwald /**
130747ec646SMilanka Ringwald  * @brief Start stream
13160ec20d0SMilanka Ringwald  * @param local_seid
132747ec646SMilanka Ringwald  */
1334ccacc40SMilanka Ringwald uint8_t avdtp_source_start_stream(uint16_t avdtp_cid, uint8_t local_seid);
13460ec20d0SMilanka Ringwald 
13560ec20d0SMilanka Ringwald /**
13660ec20d0SMilanka Ringwald  * @brief Abort stream
13760ec20d0SMilanka Ringwald  * @param local_seid
13860ec20d0SMilanka Ringwald  */
1394ccacc40SMilanka Ringwald uint8_t avdtp_source_abort_stream(uint16_t avdtp_cid, uint8_t local_seid);
140747ec646SMilanka Ringwald 
141747ec646SMilanka Ringwald /**
142747ec646SMilanka Ringwald  * @brief Start stream
14360ec20d0SMilanka Ringwald  * @param local_seid
144747ec646SMilanka Ringwald  */
1454ccacc40SMilanka Ringwald uint8_t avdtp_source_stop_stream(uint16_t avdtp_cid, uint8_t local_seid);
146747ec646SMilanka Ringwald 
147747ec646SMilanka Ringwald /**
14860ec20d0SMilanka Ringwald  * @brief Suspend stream
14960ec20d0SMilanka Ringwald  * @param local_seid
150747ec646SMilanka Ringwald  */
1514ccacc40SMilanka Ringwald uint8_t avdtp_source_suspend(uint16_t avdtp_cid, uint8_t local_seid);
15260ec20d0SMilanka Ringwald 
153747ec646SMilanka Ringwald 
154747ec646SMilanka Ringwald avdtp_stream_endpoint_t * avdtp_source_create_stream_endpoint(avdtp_sep_type_t sep_type, avdtp_media_type_t media_type);
155747ec646SMilanka Ringwald 
1568ef7100fSMilanka Ringwald /* API_END */
1578ef7100fSMilanka Ringwald 
1588ef7100fSMilanka Ringwald #if defined __cplusplus
1598ef7100fSMilanka Ringwald }
1608ef7100fSMilanka Ringwald #endif
1618ef7100fSMilanka Ringwald 
162*80e33422SMatthias Ringwald #endif // AVDTP_SOURCE_H
163