xref: /btstack/src/classic/avrcp_browsing.h (revision 665a00cb2a19afbc8656616d55848cad7bec956a)
1*665a00cbSMilanka Ringwald /*
2*665a00cbSMilanka Ringwald  * Copyright (C) 2016 BlueKitchen GmbH
3*665a00cbSMilanka Ringwald  *
4*665a00cbSMilanka Ringwald  * Redistribution and use in source and binary forms, with or without
5*665a00cbSMilanka Ringwald  * modification, are permitted provided that the following conditions
6*665a00cbSMilanka Ringwald  * are met:
7*665a00cbSMilanka Ringwald  *
8*665a00cbSMilanka Ringwald  * 1. Redistributions of source code must retain the above copyright
9*665a00cbSMilanka Ringwald  *    notice, this list of conditions and the following disclaimer.
10*665a00cbSMilanka Ringwald  * 2. Redistributions in binary form must reproduce the above copyright
11*665a00cbSMilanka Ringwald  *    notice, this list of conditions and the following disclaimer in the
12*665a00cbSMilanka Ringwald  *    documentation and/or other materials provided with the distribution.
13*665a00cbSMilanka Ringwald  * 3. Neither the name of the copyright holders nor the names of
14*665a00cbSMilanka Ringwald  *    contributors may be used to endorse or promote products derived
15*665a00cbSMilanka Ringwald  *    from this software without specific prior written permission.
16*665a00cbSMilanka Ringwald  * 4. Any redistribution, use, or modification is done solely for
17*665a00cbSMilanka Ringwald  *    personal benefit and not for any commercial purpose or for
18*665a00cbSMilanka Ringwald  *    monetary gain.
19*665a00cbSMilanka Ringwald  *
20*665a00cbSMilanka Ringwald  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
21*665a00cbSMilanka Ringwald  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22*665a00cbSMilanka Ringwald  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23*665a00cbSMilanka Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS
24*665a00cbSMilanka Ringwald  * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25*665a00cbSMilanka Ringwald  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26*665a00cbSMilanka Ringwald  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
27*665a00cbSMilanka Ringwald  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28*665a00cbSMilanka Ringwald  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29*665a00cbSMilanka Ringwald  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
30*665a00cbSMilanka Ringwald  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31*665a00cbSMilanka Ringwald  * SUCH DAMAGE.
32*665a00cbSMilanka Ringwald  *
33*665a00cbSMilanka Ringwald  * Please inquire about commercial licensing options at
34*665a00cbSMilanka Ringwald  * [email protected]
35*665a00cbSMilanka Ringwald  *
36*665a00cbSMilanka Ringwald  */
37*665a00cbSMilanka Ringwald 
38*665a00cbSMilanka Ringwald /*
39*665a00cbSMilanka Ringwald  * avrcp_browsing.h
40*665a00cbSMilanka Ringwald  *
41*665a00cbSMilanka Ringwald  * Audio/Video Remote Control Profile (Browsing)
42*665a00cbSMilanka Ringwald  *
43*665a00cbSMilanka Ringwald  */
44*665a00cbSMilanka Ringwald 
45*665a00cbSMilanka Ringwald #ifndef AVRCP_BROWSING_H
46*665a00cbSMilanka Ringwald #define AVRCP_BROWSING_H
47*665a00cbSMilanka Ringwald 
48*665a00cbSMilanka Ringwald #include <stdint.h>
49*665a00cbSMilanka Ringwald #include "avrcp.h"
50*665a00cbSMilanka Ringwald #include "btstack_run_loop.h"
51*665a00cbSMilanka Ringwald #include "btstack_linked_list.h"
52*665a00cbSMilanka Ringwald #include "l2cap.h"
53*665a00cbSMilanka Ringwald 
54*665a00cbSMilanka Ringwald #if defined __cplusplus
55*665a00cbSMilanka Ringwald extern "C" {
56*665a00cbSMilanka Ringwald #endif
57*665a00cbSMilanka Ringwald 
58*665a00cbSMilanka Ringwald avrcp_connection_t *          get_avrcp_connection_for_browsing_cid_for_role(avrcp_role_t role, uint16_t browsing_cid);
59*665a00cbSMilanka Ringwald avrcp_connection_t *          get_avrcp_connection_for_browsing_l2cap_cid_for_role(avrcp_role_t role, uint16_t browsing_l2cap_cid);
60*665a00cbSMilanka Ringwald avrcp_browsing_connection_t * get_avrcp_browsing_connection_for_l2cap_cid_for_role(avrcp_role_t role, uint16_t l2cap_cid);
61*665a00cbSMilanka Ringwald 
62*665a00cbSMilanka Ringwald void avrcp_browsing_register_controller_packet_handler(btstack_packet_handler_t callback);
63*665a00cbSMilanka Ringwald void avrcp_browsing_register_target_packet_handler(btstack_packet_handler_t callback);
64*665a00cbSMilanka Ringwald void avrcp_browsing_request_can_send_now(avrcp_browsing_connection_t * connection, uint16_t l2cap_cid);
65*665a00cbSMilanka Ringwald 
66*665a00cbSMilanka Ringwald /* API_START */
67*665a00cbSMilanka Ringwald /**
68*665a00cbSMilanka Ringwald  * @brief Set up AVRCP Browsing service
69*665a00cbSMilanka Ringwald  */
70*665a00cbSMilanka Ringwald void avrcp_browsing_init(void);
71*665a00cbSMilanka Ringwald 
72*665a00cbSMilanka Ringwald /**
73*665a00cbSMilanka Ringwald  * @brief Register callback for the AVRCP Browsing Controller client.
74*665a00cbSMilanka Ringwald  * @param callback
75*665a00cbSMilanka Ringwald  */
76*665a00cbSMilanka Ringwald void avrcp_browsing_register_packet_handler(btstack_packet_handler_t callback);
77*665a00cbSMilanka Ringwald 
78*665a00cbSMilanka Ringwald /**
79*665a00cbSMilanka Ringwald  * @brief   Connect to AVRCP Browsing service on a remote device, emits AVRCP_SUBEVENT_BROWSING_CONNECTION_ESTABLISHED with status
80*665a00cbSMilanka Ringwald  * @param   remote_addr
81*665a00cbSMilanka Ringwald  * @param   ertm_buffer
82*665a00cbSMilanka Ringwald  * @param   ertm_buffer_size
83*665a00cbSMilanka Ringwald  * @param   ertm_config
84*665a00cbSMilanka Ringwald  * @param   avrcp_browsing_cid  outgoing parameter, valid if status == ERROR_CODE_SUCCESS
85*665a00cbSMilanka Ringwald  * @returns status
86*665a00cbSMilanka Ringwald  */
87*665a00cbSMilanka 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);
88*665a00cbSMilanka Ringwald 
89*665a00cbSMilanka Ringwald /**
90*665a00cbSMilanka Ringwald  * @brief Configure incoming connection for Browsing Service.
91*665a00cbSMilanka Ringwald  * @param avrcp_browsing_cid
92*665a00cbSMilanka Ringwald  * @param ertm_buffer
93*665a00cbSMilanka Ringwald  * @param ertm_buffer_size
94*665a00cbSMilanka Ringwald  * @param ertm_config
95*665a00cbSMilanka Ringwald  * @returns status
96*665a00cbSMilanka Ringwald  */
97*665a00cbSMilanka 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);
98*665a00cbSMilanka Ringwald 
99*665a00cbSMilanka Ringwald /**
100*665a00cbSMilanka Ringwald  * @brief Decline incoming connection Browsing Service.
101*665a00cbSMilanka Ringwald  * @param avrcp_browsing_cid
102*665a00cbSMilanka Ringwald  * @returns status
103*665a00cbSMilanka Ringwald  */
104*665a00cbSMilanka Ringwald uint8_t avrcp_browsing_decline_incoming_connection(uint16_t avrcp_browsing_cid);
105*665a00cbSMilanka Ringwald 
106*665a00cbSMilanka Ringwald /**
107*665a00cbSMilanka Ringwald  * @brief   Disconnect from AVRCP Browsing service
108*665a00cbSMilanka Ringwald  * @param   avrcp_browsing_cid
109*665a00cbSMilanka Ringwald  * @returns status
110*665a00cbSMilanka Ringwald  */
111*665a00cbSMilanka Ringwald uint8_t avrcp_browsing_disconnect(uint16_t avrcp_browsing_cid);
112*665a00cbSMilanka Ringwald 
113*665a00cbSMilanka Ringwald /* API_END */
114*665a00cbSMilanka Ringwald 
115*665a00cbSMilanka Ringwald 
116*665a00cbSMilanka Ringwald #if defined __cplusplus
117*665a00cbSMilanka Ringwald }
118*665a00cbSMilanka Ringwald #endif
119*665a00cbSMilanka Ringwald 
120*665a00cbSMilanka Ringwald #endif // AVRCP_BROWSING_H
121