1*2c4f9bbbSMatthias Ringwald /* 2*2c4f9bbbSMatthias Ringwald * Copyright (C) 2020 BlueKitchen GmbH 3*2c4f9bbbSMatthias Ringwald * 4*2c4f9bbbSMatthias Ringwald * Redistribution and use in source and binary forms, with or without 5*2c4f9bbbSMatthias Ringwald * modification, are permitted provided that the following conditions 6*2c4f9bbbSMatthias Ringwald * are met: 7*2c4f9bbbSMatthias Ringwald * 8*2c4f9bbbSMatthias Ringwald * 1. Redistributions of source code must retain the above copyright 9*2c4f9bbbSMatthias Ringwald * notice, this list of conditions and the following disclaimer. 10*2c4f9bbbSMatthias Ringwald * 2. Redistributions in binary form must reproduce the above copyright 11*2c4f9bbbSMatthias Ringwald * notice, this list of conditions and the following disclaimer in the 12*2c4f9bbbSMatthias Ringwald * documentation and/or other materials provided with the distribution. 13*2c4f9bbbSMatthias Ringwald * 3. Neither the name of the copyright holders nor the names of 14*2c4f9bbbSMatthias Ringwald * contributors may be used to endorse or promote products derived 15*2c4f9bbbSMatthias Ringwald * from this software without specific prior written permission. 16*2c4f9bbbSMatthias Ringwald * 4. Any redistribution, use, or modification is done solely for 17*2c4f9bbbSMatthias Ringwald * personal benefit and not for any commercial purpose or for 18*2c4f9bbbSMatthias Ringwald * monetary gain. 19*2c4f9bbbSMatthias Ringwald * 20*2c4f9bbbSMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS 21*2c4f9bbbSMatthias Ringwald * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22*2c4f9bbbSMatthias Ringwald * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 23*2c4f9bbbSMatthias Ringwald * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS 24*2c4f9bbbSMatthias Ringwald * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 25*2c4f9bbbSMatthias Ringwald * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 26*2c4f9bbbSMatthias Ringwald * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 27*2c4f9bbbSMatthias Ringwald * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 28*2c4f9bbbSMatthias Ringwald * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 29*2c4f9bbbSMatthias Ringwald * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 30*2c4f9bbbSMatthias Ringwald * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31*2c4f9bbbSMatthias Ringwald * SUCH DAMAGE. 32*2c4f9bbbSMatthias Ringwald * 33*2c4f9bbbSMatthias Ringwald * Please inquire about commercial licensing options at 34*2c4f9bbbSMatthias Ringwald * [email protected] 35*2c4f9bbbSMatthias Ringwald * 36*2c4f9bbbSMatthias Ringwald */ 37*2c4f9bbbSMatthias Ringwald 38*2c4f9bbbSMatthias Ringwald /* 39*2c4f9bbbSMatthias Ringwald * ll.h 40*2c4f9bbbSMatthias Ringwald */ 41*2c4f9bbbSMatthias Ringwald 42*2c4f9bbbSMatthias Ringwald #ifndef LL_H 43*2c4f9bbbSMatthias Ringwald #define LL_H 44*2c4f9bbbSMatthias Ringwald 45*2c4f9bbbSMatthias Ringwald #include "btstack_bool.h" 46*2c4f9bbbSMatthias Ringwald #include <stdint.h> 47*2c4f9bbbSMatthias Ringwald 48*2c4f9bbbSMatthias Ringwald #if defined __cplusplus 49*2c4f9bbbSMatthias Ringwald extern "C" { 50*2c4f9bbbSMatthias Ringwald #endif 51*2c4f9bbbSMatthias Ringwald 52*2c4f9bbbSMatthias Ringwald // num tx buffers for use by host stack 53*2c4f9bbbSMatthias Ringwald #define HCI_NUM_TX_BUFFERS_STACK 16 54*2c4f9bbbSMatthias Ringwald 55*2c4f9bbbSMatthias Ringwald /* API_START */ 56*2c4f9bbbSMatthias Ringwald 57*2c4f9bbbSMatthias Ringwald void ll_init(void); 58*2c4f9bbbSMatthias Ringwald 59*2c4f9bbbSMatthias Ringwald void ll_execute_once(void); 60*2c4f9bbbSMatthias Ringwald 61*2c4f9bbbSMatthias Ringwald void ll_radio_on(void); 62*2c4f9bbbSMatthias Ringwald 63*2c4f9bbbSMatthias Ringwald void ll_set_scan_parameters(uint8_t le_scan_type, uint16_t le_scan_interval, uint16_t le_scan_window, 64*2c4f9bbbSMatthias Ringwald uint8_t own_address_type, uint8_t scanning_filter_policy); 65*2c4f9bbbSMatthias Ringwald 66*2c4f9bbbSMatthias Ringwald uint8_t ll_set_scan_enable(uint8_t le_scan_enable, uint8_t filter_duplicates); 67*2c4f9bbbSMatthias Ringwald 68*2c4f9bbbSMatthias Ringwald uint8_t ll_set_advertise_enable(uint8_t le_adv_enable); 69*2c4f9bbbSMatthias Ringwald 70*2c4f9bbbSMatthias Ringwald uint8_t ll_set_advertising_parameters(uint16_t advertising_interval_min, uint16_t advertising_interval_max, 71*2c4f9bbbSMatthias Ringwald uint8_t advertising_type, uint8_t own_address_type, uint8_t peer_address_types, uint8_t * peer_address, 72*2c4f9bbbSMatthias Ringwald uint8_t advertising_channel_map, uint8_t advertising_filter_policy); 73*2c4f9bbbSMatthias Ringwald 74*2c4f9bbbSMatthias Ringwald uint8_t ll_set_advertising_data(uint8_t adv_len, const uint8_t * adv_data); 75*2c4f9bbbSMatthias Ringwald 76*2c4f9bbbSMatthias Ringwald uint8_t ll_set_scan_response_data(uint8_t adv_len, const uint8_t * adv_data); 77*2c4f9bbbSMatthias Ringwald 78*2c4f9bbbSMatthias Ringwald bool ll_reserve_acl_packet(void); 79*2c4f9bbbSMatthias Ringwald 80*2c4f9bbbSMatthias Ringwald 81*2c4f9bbbSMatthias Ringwald void ll_queue_acl_packet(const uint8_t * packet, uint16_t size); 82*2c4f9bbbSMatthias Ringwald 83*2c4f9bbbSMatthias Ringwald void ll_register_packet_handler(void (*packet_handler)(uint8_t packet_type, uint8_t * packet, uint16_t size)); 84*2c4f9bbbSMatthias Ringwald 85*2c4f9bbbSMatthias Ringwald /* API_END */ 86*2c4f9bbbSMatthias Ringwald 87*2c4f9bbbSMatthias Ringwald #if defined __cplusplus 88*2c4f9bbbSMatthias Ringwald } 89*2c4f9bbbSMatthias Ringwald #endif 90*2c4f9bbbSMatthias Ringwald 91*2c4f9bbbSMatthias Ringwald #endif // LL_H 92