xref: /btstack/chipset/cinnamon/ll.h (revision 2c4f9bbb6d93b3f1a90ed62ac67e4cd019f0736a)
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