xref: /btstack/src/classic/avrcp_browsing.h (revision 2fca4dad957cd7b88f4657ed51e89c12615dda72)
1665a00cbSMilanka Ringwald /*
2665a00cbSMilanka Ringwald  * Copyright (C) 2016 BlueKitchen GmbH
3665a00cbSMilanka Ringwald  *
4665a00cbSMilanka Ringwald  * Redistribution and use in source and binary forms, with or without
5665a00cbSMilanka Ringwald  * modification, are permitted provided that the following conditions
6665a00cbSMilanka Ringwald  * are met:
7665a00cbSMilanka Ringwald  *
8665a00cbSMilanka Ringwald  * 1. Redistributions of source code must retain the above copyright
9665a00cbSMilanka Ringwald  *    notice, this list of conditions and the following disclaimer.
10665a00cbSMilanka Ringwald  * 2. Redistributions in binary form must reproduce the above copyright
11665a00cbSMilanka Ringwald  *    notice, this list of conditions and the following disclaimer in the
12665a00cbSMilanka Ringwald  *    documentation and/or other materials provided with the distribution.
13665a00cbSMilanka Ringwald  * 3. Neither the name of the copyright holders nor the names of
14665a00cbSMilanka Ringwald  *    contributors may be used to endorse or promote products derived
15665a00cbSMilanka Ringwald  *    from this software without specific prior written permission.
16665a00cbSMilanka Ringwald  * 4. Any redistribution, use, or modification is done solely for
17665a00cbSMilanka Ringwald  *    personal benefit and not for any commercial purpose or for
18665a00cbSMilanka Ringwald  *    monetary gain.
19665a00cbSMilanka Ringwald  *
20665a00cbSMilanka Ringwald  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
21665a00cbSMilanka Ringwald  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22665a00cbSMilanka Ringwald  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23*2fca4dadSMilanka Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BLUEKITCHEN
24*2fca4dadSMilanka Ringwald  * GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25665a00cbSMilanka Ringwald  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26665a00cbSMilanka Ringwald  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
27665a00cbSMilanka Ringwald  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28665a00cbSMilanka Ringwald  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29665a00cbSMilanka Ringwald  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
30665a00cbSMilanka Ringwald  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31665a00cbSMilanka Ringwald  * SUCH DAMAGE.
32665a00cbSMilanka Ringwald  *
33665a00cbSMilanka Ringwald  * Please inquire about commercial licensing options at
34665a00cbSMilanka Ringwald  * [email protected]
35665a00cbSMilanka Ringwald  *
36665a00cbSMilanka Ringwald  */
37665a00cbSMilanka Ringwald 
38fe5a6c4eSMilanka Ringwald /**
39fe5a6c4eSMilanka Ringwald  * @title AVRCP Browsing
40665a00cbSMilanka Ringwald  *
41665a00cbSMilanka Ringwald  */
42665a00cbSMilanka Ringwald 
43665a00cbSMilanka Ringwald #ifndef AVRCP_BROWSING_H
44665a00cbSMilanka Ringwald #define AVRCP_BROWSING_H
45665a00cbSMilanka Ringwald 
46665a00cbSMilanka Ringwald #include <stdint.h>
47665a00cbSMilanka Ringwald #include "avrcp.h"
48665a00cbSMilanka Ringwald #include "btstack_run_loop.h"
49665a00cbSMilanka Ringwald #include "btstack_linked_list.h"
50665a00cbSMilanka Ringwald #include "l2cap.h"
51665a00cbSMilanka Ringwald 
52665a00cbSMilanka Ringwald #if defined __cplusplus
53665a00cbSMilanka Ringwald extern "C" {
54665a00cbSMilanka Ringwald #endif
55665a00cbSMilanka Ringwald 
56665a00cbSMilanka Ringwald void avrcp_browsing_register_controller_packet_handler(btstack_packet_handler_t callback);
57665a00cbSMilanka Ringwald void avrcp_browsing_register_target_packet_handler(btstack_packet_handler_t callback);
58665a00cbSMilanka Ringwald void avrcp_browsing_request_can_send_now(avrcp_browsing_connection_t * connection, uint16_t l2cap_cid);
59665a00cbSMilanka Ringwald 
60665a00cbSMilanka Ringwald /* API_START */
61665a00cbSMilanka Ringwald /**
62665a00cbSMilanka Ringwald  * @brief Set up AVRCP Browsing service
63665a00cbSMilanka Ringwald  */
64665a00cbSMilanka Ringwald void avrcp_browsing_init(void);
65665a00cbSMilanka Ringwald 
66665a00cbSMilanka Ringwald /**
67665a00cbSMilanka Ringwald  * @brief Register callback for the AVRCP Browsing Controller client.
68665a00cbSMilanka Ringwald  * @param callback
69665a00cbSMilanka Ringwald  */
70665a00cbSMilanka Ringwald void avrcp_browsing_register_packet_handler(btstack_packet_handler_t callback);
71665a00cbSMilanka Ringwald 
72665a00cbSMilanka Ringwald /**
73665a00cbSMilanka Ringwald  * @brief   Connect to AVRCP Browsing service on a remote device, emits AVRCP_SUBEVENT_BROWSING_CONNECTION_ESTABLISHED with status
74665a00cbSMilanka Ringwald  * @param   remote_addr
75665a00cbSMilanka Ringwald  * @param   ertm_buffer
76665a00cbSMilanka Ringwald  * @param   ertm_buffer_size
77665a00cbSMilanka Ringwald  * @param   ertm_config
78665a00cbSMilanka Ringwald  * @param   avrcp_browsing_cid  outgoing parameter, valid if status == ERROR_CODE_SUCCESS
796b65794dSMilanka Ringwald  * @return status
80665a00cbSMilanka Ringwald  */
81665a00cbSMilanka Ringwald uint8_t avrcp_browsing_connect(bd_addr_t remote_addr, uint8_t * ertm_buffer, uint32_t ertm_buffer_size, l2cap_ertm_config_t * ertm_config, uint16_t * avrcp_browsing_cid);
82665a00cbSMilanka Ringwald 
83665a00cbSMilanka Ringwald /**
84665a00cbSMilanka Ringwald  * @brief Configure incoming connection for Browsing Service.
85665a00cbSMilanka Ringwald  * @param avrcp_browsing_cid
86665a00cbSMilanka Ringwald  * @param ertm_buffer
87665a00cbSMilanka Ringwald  * @param ertm_buffer_size
88665a00cbSMilanka Ringwald  * @param ertm_config
896b65794dSMilanka Ringwald  * @return status
90665a00cbSMilanka Ringwald  */
91665a00cbSMilanka Ringwald uint8_t avrcp_browsing_configure_incoming_connection(uint16_t avrcp_browsing_cid, uint8_t * ertm_buffer, uint32_t ertm_buffer_size, l2cap_ertm_config_t * ertm_config);
92665a00cbSMilanka Ringwald 
93665a00cbSMilanka Ringwald /**
94665a00cbSMilanka Ringwald  * @brief Decline incoming connection Browsing Service.
95665a00cbSMilanka Ringwald  * @param avrcp_browsing_cid
966b65794dSMilanka Ringwald  * @return status
97665a00cbSMilanka Ringwald  */
98665a00cbSMilanka Ringwald uint8_t avrcp_browsing_decline_incoming_connection(uint16_t avrcp_browsing_cid);
99665a00cbSMilanka Ringwald 
100665a00cbSMilanka Ringwald /**
101665a00cbSMilanka Ringwald  * @brief   Disconnect from AVRCP Browsing service
102665a00cbSMilanka Ringwald  * @param   avrcp_browsing_cid
1036b65794dSMilanka Ringwald  * @return status
104665a00cbSMilanka Ringwald  */
105665a00cbSMilanka Ringwald uint8_t avrcp_browsing_disconnect(uint16_t avrcp_browsing_cid);
106665a00cbSMilanka Ringwald 
107680af5dcSMatthias Ringwald /**
108680af5dcSMatthias Ringwald  * @brief De-Init AVRCP Browsing
109680af5dcSMatthias Ringwald  */
110680af5dcSMatthias Ringwald void avrcp_browsing_deinit(void);
111680af5dcSMatthias Ringwald 
112665a00cbSMilanka Ringwald /* API_END */
113665a00cbSMilanka Ringwald 
114665a00cbSMilanka Ringwald 
115665a00cbSMilanka Ringwald #if defined __cplusplus
116665a00cbSMilanka Ringwald }
117665a00cbSMilanka Ringwald #endif
118665a00cbSMilanka Ringwald 
119665a00cbSMilanka Ringwald #endif // AVRCP_BROWSING_H
120