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