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