xref: /btstack/src/classic/a2dp_sink.h (revision 7050d2ca520e2b58a676c8a081aab3872c899807)
1b442c9e6SMilanka Ringwald /*
2b442c9e6SMilanka Ringwald  * Copyright (C) 2016 BlueKitchen GmbH
3b442c9e6SMilanka Ringwald  *
4b442c9e6SMilanka Ringwald  * Redistribution and use in source and binary forms, with or without
5b442c9e6SMilanka Ringwald  * modification, are permitted provided that the following conditions
6b442c9e6SMilanka Ringwald  * are met:
7b442c9e6SMilanka Ringwald  *
8b442c9e6SMilanka Ringwald  * 1. Redistributions of source code must retain the above copyright
9b442c9e6SMilanka Ringwald  *    notice, this list of conditions and the following disclaimer.
10b442c9e6SMilanka Ringwald  * 2. Redistributions in binary form must reproduce the above copyright
11b442c9e6SMilanka Ringwald  *    notice, this list of conditions and the following disclaimer in the
12b442c9e6SMilanka Ringwald  *    documentation and/or other materials provided with the distribution.
13b442c9e6SMilanka Ringwald  * 3. Neither the name of the copyright holders nor the names of
14b442c9e6SMilanka Ringwald  *    contributors may be used to endorse or promote products derived
15b442c9e6SMilanka Ringwald  *    from this software without specific prior written permission.
16b442c9e6SMilanka Ringwald  * 4. Any redistribution, use, or modification is done solely for
17b442c9e6SMilanka Ringwald  *    personal benefit and not for any commercial purpose or for
18b442c9e6SMilanka Ringwald  *    monetary gain.
19b442c9e6SMilanka Ringwald  *
20b442c9e6SMilanka Ringwald  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
21b442c9e6SMilanka Ringwald  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22b442c9e6SMilanka Ringwald  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23b442c9e6SMilanka Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS
24b442c9e6SMilanka Ringwald  * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25b442c9e6SMilanka Ringwald  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26b442c9e6SMilanka Ringwald  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
27b442c9e6SMilanka Ringwald  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28b442c9e6SMilanka Ringwald  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29b442c9e6SMilanka Ringwald  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
30b442c9e6SMilanka Ringwald  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31b442c9e6SMilanka Ringwald  * SUCH DAMAGE.
32b442c9e6SMilanka Ringwald  *
33b442c9e6SMilanka Ringwald  * Please inquire about commercial licensing options at
34b442c9e6SMilanka Ringwald  * [email protected]
35b442c9e6SMilanka Ringwald  *
36b442c9e6SMilanka Ringwald  */
37b442c9e6SMilanka Ringwald 
38b442c9e6SMilanka Ringwald /*
39b442c9e6SMilanka Ringwald  * a2dp_sink.h
40b442c9e6SMilanka Ringwald  *
41b442c9e6SMilanka Ringwald  * Advanced Audio Distribution Transport Profile (A2DP) Sink
42b442c9e6SMilanka Ringwald  *
43b442c9e6SMilanka Ringwald  * A2DP Sink is a device that accepts streamed media data.
44b442c9e6SMilanka Ringwald  */
45b442c9e6SMilanka Ringwald 
46b442c9e6SMilanka Ringwald #ifndef __A2DP_SINK_H
47b442c9e6SMilanka Ringwald #define __A2DP_SINK_H
48b442c9e6SMilanka Ringwald 
49b442c9e6SMilanka Ringwald #include <stdint.h>
50b442c9e6SMilanka Ringwald 
51b442c9e6SMilanka Ringwald #if defined __cplusplus
52b442c9e6SMilanka Ringwald extern "C" {
53b442c9e6SMilanka Ringwald #endif
54b442c9e6SMilanka Ringwald 
55b442c9e6SMilanka Ringwald /* API_START */
56b442c9e6SMilanka Ringwald 
57b442c9e6SMilanka Ringwald /**
58b442c9e6SMilanka Ringwald  * @brief A2DP Sink service record.
59b442c9e6SMilanka Ringwald  * @param service
60b442c9e6SMilanka Ringwald  * @param service_record_handle
61*7050d2caSMilanka Ringwald  * @param supported_features 16-bit bitmap, see a2dp_SINK_SF_* values in avdtp.h
62b442c9e6SMilanka Ringwald  * @param service_name
63b442c9e6SMilanka Ringwald  * @param service_provider_name
64b442c9e6SMilanka Ringwald  */
65b442c9e6SMilanka Ringwald void a2dp_sink_create_sdp_record(uint8_t * service, uint32_t service_record_handle, uint16_t supported_features, const char * service_name, const char * service_provider_name);
66b442c9e6SMilanka Ringwald 
67*7050d2caSMilanka Ringwald /**
68*7050d2caSMilanka Ringwald  * @brief Set up A2DP Sink device.
69*7050d2caSMilanka Ringwald  */
70*7050d2caSMilanka Ringwald void a2dp_sink_init(void);
71*7050d2caSMilanka Ringwald 
72*7050d2caSMilanka Ringwald uint8_t a2dp_sink_create_stream_endpoint(avdtp_media_type_t media_type, avdtp_media_codec_type_t media_codec_type,
73*7050d2caSMilanka Ringwald 	uint8_t * codec_capabilities, uint16_t codec_capabilities_len,
74*7050d2caSMilanka Ringwald 	uint8_t * codec_configuration, uint16_t codec_configuration_len);
75*7050d2caSMilanka Ringwald 
76*7050d2caSMilanka Ringwald /**
77*7050d2caSMilanka Ringwald  * @brief Register callback for the A2DP Sink client.
78*7050d2caSMilanka Ringwald  * @param callback
79*7050d2caSMilanka Ringwald  */
80*7050d2caSMilanka Ringwald void a2dp_sink_register_packet_handler(btstack_packet_handler_t callback);
81*7050d2caSMilanka Ringwald 
82*7050d2caSMilanka Ringwald 
83*7050d2caSMilanka Ringwald /**
84*7050d2caSMilanka Ringwald  * @brief Register media handler for the A2DP Sink client.
85*7050d2caSMilanka Ringwald  * @param callback
86*7050d2caSMilanka Ringwald  */
87*7050d2caSMilanka Ringwald void a2dp_sink_register_media_handler(void (*callback)(avdtp_stream_endpoint_t * stream_endpoint, uint8_t *packet, uint16_t size));
88*7050d2caSMilanka Ringwald 
89*7050d2caSMilanka Ringwald /**
90*7050d2caSMilanka Ringwald  * @brief Open stream
91*7050d2caSMilanka Ringwald  * @param avdtp_cid
92*7050d2caSMilanka Ringwald  * @param local_seid
93*7050d2caSMilanka Ringwald  */
94*7050d2caSMilanka Ringwald void a2dp_sink_establish_stream(bd_addr_t bd_addr, uint8_t local_seid);
95*7050d2caSMilanka Ringwald 
96*7050d2caSMilanka Ringwald /**
97*7050d2caSMilanka Ringwald  * @brief Start stream
98*7050d2caSMilanka Ringwald  * @param local_seid
99*7050d2caSMilanka Ringwald  */
100*7050d2caSMilanka Ringwald void a2dp_sink_start_stream(uint8_t local_seid);
101*7050d2caSMilanka Ringwald 
102*7050d2caSMilanka Ringwald /**
103*7050d2caSMilanka Ringwald  * @brief Suspend stream
104*7050d2caSMilanka Ringwald  * @param local_seid
105*7050d2caSMilanka Ringwald  */
106*7050d2caSMilanka Ringwald void a2dp_sink_pause(uint8_t local_seid);
107*7050d2caSMilanka Ringwald 
108*7050d2caSMilanka Ringwald /**
109*7050d2caSMilanka Ringwald  * @brief Abort stream
110*7050d2caSMilanka Ringwald  * @param local_seid
111*7050d2caSMilanka Ringwald  */
112*7050d2caSMilanka Ringwald void a2dp_sink_stop_stream(uint8_t local_seid);
113*7050d2caSMilanka Ringwald 
114*7050d2caSMilanka Ringwald void a2dp_sink_disconnect(uint16_t a2dp_cid);
115b442c9e6SMilanka Ringwald /* API_END */
116b442c9e6SMilanka Ringwald 
117*7050d2caSMilanka Ringwald 
118b442c9e6SMilanka Ringwald #if defined __cplusplus
119b442c9e6SMilanka Ringwald }
120b442c9e6SMilanka Ringwald #endif
121b442c9e6SMilanka Ringwald 
122b442c9e6SMilanka Ringwald #endif // __A2DP_SINK_H