xref: /btstack/src/classic/avrcp_browsing.h (revision 680af5dc42bf2d4e357341ee013aa6996dce2c61)
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
23665a00cbSMilanka Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS
24665a00cbSMilanka Ringwald  * RINGWALD 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 
38665a00cbSMilanka Ringwald /*
39665a00cbSMilanka Ringwald  * avrcp_browsing.h
40665a00cbSMilanka Ringwald  *
41665a00cbSMilanka Ringwald  * Audio/Video Remote Control Profile (Browsing)
42665a00cbSMilanka Ringwald  *
43665a00cbSMilanka Ringwald  */
44665a00cbSMilanka Ringwald 
45665a00cbSMilanka Ringwald #ifndef AVRCP_BROWSING_H
46665a00cbSMilanka Ringwald #define AVRCP_BROWSING_H
47665a00cbSMilanka Ringwald 
48665a00cbSMilanka Ringwald #include <stdint.h>
49665a00cbSMilanka Ringwald #include "avrcp.h"
50665a00cbSMilanka Ringwald #include "btstack_run_loop.h"
51665a00cbSMilanka Ringwald #include "btstack_linked_list.h"
52665a00cbSMilanka Ringwald #include "l2cap.h"
53665a00cbSMilanka Ringwald 
54665a00cbSMilanka Ringwald #if defined __cplusplus
55665a00cbSMilanka Ringwald extern "C" {
56665a00cbSMilanka Ringwald #endif
57665a00cbSMilanka Ringwald 
58665a00cbSMilanka Ringwald void avrcp_browsing_register_controller_packet_handler(btstack_packet_handler_t callback);
59665a00cbSMilanka Ringwald void avrcp_browsing_register_target_packet_handler(btstack_packet_handler_t callback);
60665a00cbSMilanka Ringwald void avrcp_browsing_request_can_send_now(avrcp_browsing_connection_t * connection, uint16_t l2cap_cid);
61665a00cbSMilanka Ringwald 
62665a00cbSMilanka Ringwald /* API_START */
63665a00cbSMilanka Ringwald /**
64665a00cbSMilanka Ringwald  * @brief Set up AVRCP Browsing service
65665a00cbSMilanka Ringwald  */
66665a00cbSMilanka Ringwald void avrcp_browsing_init(void);
67665a00cbSMilanka Ringwald 
68665a00cbSMilanka Ringwald /**
69665a00cbSMilanka Ringwald  * @brief Register callback for the AVRCP Browsing Controller client.
70665a00cbSMilanka Ringwald  * @param callback
71665a00cbSMilanka Ringwald  */
72665a00cbSMilanka Ringwald void avrcp_browsing_register_packet_handler(btstack_packet_handler_t callback);
73665a00cbSMilanka Ringwald 
74665a00cbSMilanka Ringwald /**
75665a00cbSMilanka Ringwald  * @brief   Connect to AVRCP Browsing service on a remote device, emits AVRCP_SUBEVENT_BROWSING_CONNECTION_ESTABLISHED with status
76665a00cbSMilanka Ringwald  * @param   remote_addr
77665a00cbSMilanka Ringwald  * @param   ertm_buffer
78665a00cbSMilanka Ringwald  * @param   ertm_buffer_size
79665a00cbSMilanka Ringwald  * @param   ertm_config
80665a00cbSMilanka Ringwald  * @param   avrcp_browsing_cid  outgoing parameter, valid if status == ERROR_CODE_SUCCESS
81665a00cbSMilanka Ringwald  * @returns status
82665a00cbSMilanka Ringwald  */
83665a00cbSMilanka 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);
84665a00cbSMilanka Ringwald 
85665a00cbSMilanka Ringwald /**
86665a00cbSMilanka Ringwald  * @brief Configure incoming connection for Browsing Service.
87665a00cbSMilanka Ringwald  * @param avrcp_browsing_cid
88665a00cbSMilanka Ringwald  * @param ertm_buffer
89665a00cbSMilanka Ringwald  * @param ertm_buffer_size
90665a00cbSMilanka Ringwald  * @param ertm_config
91665a00cbSMilanka Ringwald  * @returns status
92665a00cbSMilanka Ringwald  */
93665a00cbSMilanka 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);
94665a00cbSMilanka Ringwald 
95665a00cbSMilanka Ringwald /**
96665a00cbSMilanka Ringwald  * @brief Decline incoming connection Browsing Service.
97665a00cbSMilanka Ringwald  * @param avrcp_browsing_cid
98665a00cbSMilanka Ringwald  * @returns status
99665a00cbSMilanka Ringwald  */
100665a00cbSMilanka Ringwald uint8_t avrcp_browsing_decline_incoming_connection(uint16_t avrcp_browsing_cid);
101665a00cbSMilanka Ringwald 
102665a00cbSMilanka Ringwald /**
103665a00cbSMilanka Ringwald  * @brief   Disconnect from AVRCP Browsing service
104665a00cbSMilanka Ringwald  * @param   avrcp_browsing_cid
105665a00cbSMilanka Ringwald  * @returns status
106665a00cbSMilanka Ringwald  */
107665a00cbSMilanka Ringwald uint8_t avrcp_browsing_disconnect(uint16_t avrcp_browsing_cid);
108665a00cbSMilanka Ringwald 
109*680af5dcSMatthias Ringwald /**
110*680af5dcSMatthias Ringwald  * @brief De-Init AVRCP Browsing
111*680af5dcSMatthias Ringwald  */
112*680af5dcSMatthias Ringwald void avrcp_browsing_deinit(void);
113*680af5dcSMatthias Ringwald 
114665a00cbSMilanka Ringwald /* API_END */
115665a00cbSMilanka Ringwald 
116665a00cbSMilanka Ringwald 
117665a00cbSMilanka Ringwald #if defined __cplusplus
118665a00cbSMilanka Ringwald }
119665a00cbSMilanka Ringwald #endif
120665a00cbSMilanka Ringwald 
121665a00cbSMilanka Ringwald #endif // AVRCP_BROWSING_H
122