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