xref: /btstack/src/classic/avdtp_source.h (revision 9974aee0d2d898bede99eaa326e6a3fda2f2f180)
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 
468ef7100fSMilanka Ringwald #ifndef __AVDTP_SOURCE_H
478ef7100fSMilanka Ringwald #define __AVDTP_SOURCE_H
488ef7100fSMilanka Ringwald 
498ef7100fSMilanka Ringwald #include <stdint.h>
508ef7100fSMilanka Ringwald 
518ef7100fSMilanka Ringwald #if defined __cplusplus
528ef7100fSMilanka Ringwald extern "C" {
538ef7100fSMilanka Ringwald #endif
548ef7100fSMilanka Ringwald 
558ef7100fSMilanka Ringwald /* API_START */
568ef7100fSMilanka Ringwald 
57747ec646SMilanka Ringwald void avdtp_source_register_media_transport_category(uint8_t seid);
58747ec646SMilanka Ringwald void avdtp_source_register_reporting_category(uint8_t seid);
59747ec646SMilanka Ringwald void avdtp_source_register_delay_reporting_category(uint8_t seid);
60747ec646SMilanka Ringwald void avdtp_source_register_recovery_category(uint8_t seid, uint8_t maximum_recovery_window_size, uint8_t maximum_number_media_packets);
61747ec646SMilanka 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);
62747ec646SMilanka Ringwald void avdtp_source_register_header_compression_category(uint8_t seid, uint8_t back_ch, uint8_t media, uint8_t recovery);
6378d08d09SMilanka 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);
64747ec646SMilanka Ringwald void avdtp_source_register_multiplexing_category(uint8_t seid, uint8_t fragmentation);
65747ec646SMilanka Ringwald 
66747ec646SMilanka Ringwald 
67274391e8SMilanka Ringwald void avdtp_source_init(avdtp_context_t * avdtp_context);
68747ec646SMilanka Ringwald void avdtp_source_register_packet_handler(btstack_packet_handler_t callback);
69747ec646SMilanka Ringwald 
70747ec646SMilanka Ringwald /**
71747ec646SMilanka Ringwald  * @brief Connect to device with a bluetooth address. (and perform configuration?)
72747ec646SMilanka Ringwald  * @param bd_addr
734ccacc40SMilanka Ringwald  * @param avdtp_cid Assigned avdtp cid
74747ec646SMilanka Ringwald  */
754ccacc40SMilanka Ringwald uint8_t avdtp_source_connect(bd_addr_t bd_addr, uint16_t * avdtp_cid);
76747ec646SMilanka Ringwald 
77747ec646SMilanka Ringwald /**
78747ec646SMilanka Ringwald  * @brief Disconnect from device with connection handle.
79f9bca1f3SMilanka Ringwald  * @param avdtp_cid
80747ec646SMilanka Ringwald  */
814ccacc40SMilanka Ringwald uint8_t avdtp_source_disconnect(uint16_t avdtp_cid);
82747ec646SMilanka Ringwald 
83747ec646SMilanka Ringwald /**
84747ec646SMilanka Ringwald  * @brief Discover stream endpoints
85f9bca1f3SMilanka Ringwald  * @param avdtp_cid
86747ec646SMilanka Ringwald  */
87*9974aee0SMilanka Ringwald uint8_t avdtp_source_discover_stream_endpoints(uint16_t avdtp_cid);
88747ec646SMilanka Ringwald 
89747ec646SMilanka Ringwald /**
90747ec646SMilanka Ringwald  * @brief Get capabilities
91f9bca1f3SMilanka Ringwald  * @param avdtp_cid
92747ec646SMilanka Ringwald  */
93*9974aee0SMilanka Ringwald uint8_t avdtp_source_get_capabilities(uint16_t avdtp_cid, uint8_t acp_seid);
94747ec646SMilanka Ringwald 
95747ec646SMilanka Ringwald /**
96747ec646SMilanka Ringwald  * @brief Get all capabilities
97f9bca1f3SMilanka Ringwald  * @param avdtp_cid
98747ec646SMilanka Ringwald  */
99*9974aee0SMilanka Ringwald uint8_t avdtp_source_get_all_capabilities(uint16_t avdtp_cid, uint8_t acp_seid);
100747ec646SMilanka Ringwald 
101747ec646SMilanka Ringwald /**
102747ec646SMilanka Ringwald  * @brief Set configuration
103f9bca1f3SMilanka Ringwald  * @param avdtp_cid
104747ec646SMilanka Ringwald  */
105*9974aee0SMilanka 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);
106747ec646SMilanka Ringwald 
107747ec646SMilanka Ringwald /**
108747ec646SMilanka Ringwald  * @brief Reconfigure stream
109f9bca1f3SMilanka Ringwald  * @param avdtp_cid
110747ec646SMilanka Ringwald  * @param seid
111747ec646SMilanka Ringwald  */
112*9974aee0SMilanka 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);
113747ec646SMilanka Ringwald 
114747ec646SMilanka Ringwald /**
115747ec646SMilanka Ringwald  * @brief Get configuration
116f9bca1f3SMilanka Ringwald  * @param avdtp_cid
117747ec646SMilanka Ringwald  */
118*9974aee0SMilanka Ringwald uint8_t avdtp_source_get_configuration(uint16_t avdtp_cid, uint8_t acp_seid);
119747ec646SMilanka Ringwald 
120747ec646SMilanka Ringwald 
121747ec646SMilanka Ringwald /**
122747ec646SMilanka Ringwald  * @brief Open stream
123f9bca1f3SMilanka Ringwald  * @param avdtp_cid
124747ec646SMilanka Ringwald  * @param seid
125747ec646SMilanka Ringwald  */
1264ccacc40SMilanka Ringwald uint8_t avdtp_source_open_stream(uint16_t avdtp_cid, uint8_t int_seid, uint8_t acp_seid);
127747ec646SMilanka Ringwald 
128747ec646SMilanka Ringwald /**
129747ec646SMilanka Ringwald  * @brief Start stream
13060ec20d0SMilanka Ringwald  * @param local_seid
131747ec646SMilanka Ringwald  */
1324ccacc40SMilanka Ringwald uint8_t avdtp_source_start_stream(uint16_t avdtp_cid, uint8_t local_seid);
13360ec20d0SMilanka Ringwald 
13460ec20d0SMilanka Ringwald /**
13560ec20d0SMilanka Ringwald  * @brief Abort stream
13660ec20d0SMilanka Ringwald  * @param local_seid
13760ec20d0SMilanka Ringwald  */
1384ccacc40SMilanka Ringwald uint8_t avdtp_source_abort_stream(uint16_t avdtp_cid, uint8_t local_seid);
139747ec646SMilanka Ringwald 
140747ec646SMilanka Ringwald /**
141747ec646SMilanka Ringwald  * @brief Start stream
14260ec20d0SMilanka Ringwald  * @param local_seid
143747ec646SMilanka Ringwald  */
1444ccacc40SMilanka Ringwald uint8_t avdtp_source_stop_stream(uint16_t avdtp_cid, uint8_t local_seid);
145747ec646SMilanka Ringwald 
146747ec646SMilanka Ringwald /**
14760ec20d0SMilanka Ringwald  * @brief Suspend stream
14860ec20d0SMilanka Ringwald  * @param local_seid
149747ec646SMilanka Ringwald  */
1504ccacc40SMilanka Ringwald uint8_t avdtp_source_suspend(uint16_t avdtp_cid, uint8_t local_seid);
15160ec20d0SMilanka Ringwald 
152747ec646SMilanka Ringwald 
153747ec646SMilanka Ringwald avdtp_stream_endpoint_t * avdtp_source_create_stream_endpoint(avdtp_sep_type_t sep_type, avdtp_media_type_t media_type);
154747ec646SMilanka Ringwald 
155f9bca1f3SMilanka Ringwald uint8_t avdtp_source_remote_seps_num(uint16_t avdtp_cid);
156f9bca1f3SMilanka Ringwald avdtp_sep_t * avdtp_source_remote_sep(uint16_t avdtp_cid, uint8_t index);
1578ef7100fSMilanka Ringwald /* API_END */
1588ef7100fSMilanka Ringwald 
1598ef7100fSMilanka Ringwald #if defined __cplusplus
1608ef7100fSMilanka Ringwald }
1618ef7100fSMilanka Ringwald #endif
1628ef7100fSMilanka Ringwald 
1638ef7100fSMilanka Ringwald #endif // __AVDTP_SOURCE_H