1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
*
* BlueZ - Bluetooth protocol stack for Linux
*
* Copyright (C) 2000-2001 Qualcomm Incorporated
* Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com>
* Copyright (C) 2002-2010 Marcel Holtmann <marcel@holtmann.org>
*
*
*/
#include <stdbool.h>
typedef enum {
BT_MODE_DUAL,
BT_MODE_BREDR,
BT_MODE_LE,
} bt_mode_t;
typedef enum {
BT_GATT_CACHE_ALWAYS,
BT_GATT_CACHE_YES,
BT_GATT_CACHE_NO,
} bt_gatt_cache_t;
enum jw_repairing_t {
JW_REPAIRING_NEVER,
JW_REPAIRING_CONFIRM,
JW_REPAIRING_ALWAYS,
};
enum mps_mode_t {
MPS_OFF,
MPS_SINGLE,
MPS_MULTIPLE,
};
enum sc_mode_t {
SC_OFF,
SC_ON,
SC_ONLY,
};
struct btd_br_defaults {
uint16_t page_scan_type;
uint16_t page_scan_interval;
uint16_t page_scan_win;
uint16_t scan_type;
uint16_t scan_interval;
uint16_t scan_win;
uint16_t link_supervision_timeout;
uint16_t page_timeout;
uint16_t min_sniff_interval;
uint16_t max_sniff_interval;
};
struct btd_le_defaults {
uint16_t min_adv_interval;
uint16_t max_adv_interval;
uint16_t adv_rotation_interval;
uint16_t scan_interval_autoconnect;
uint16_t scan_win_autoconnect;
uint16_t scan_interval_suspend;
uint16_t scan_win_suspend;
uint16_t scan_interval_discovery;
uint16_t scan_win_discovery;
uint16_t scan_interval_adv_monitor;
uint16_t scan_win_adv_monitor;
uint16_t scan_interval_connect;
uint16_t scan_win_connect;
uint16_t min_conn_interval;
uint16_t max_conn_interval;
uint16_t conn_latency;
uint16_t conn_lsto;
uint16_t autoconnect_timeout;
uint16_t advmon_allowlist_scan_duration;
uint16_t advmon_no_filter_scan_duration;
uint8_t enable_advmon_interleave_scan;
};
struct btd_defaults {
uint16_t num_entries;
struct btd_br_defaults br;
struct btd_le_defaults le;
};
struct btd_csis {
bool encrypt;
uint8_t sirk[16];
uint8_t size;
uint8_t rank;
};
struct btd_avdtp_opts {
uint8_t session_mode;
uint8_t stream_mode;
};
struct btd_advmon_opts {
uint8_t rssi_sampling_period;
};
struct btd_opts {
char *name;
uint32_t class;
gboolean pairable;
uint32_t pairto;
uint32_t discovto;
uint32_t tmpto;
uint8_t privacy;
bool device_privacy;
uint32_t name_request_retry_delay;
uint8_t secure_conn;
struct btd_defaults defaults;
gboolean reverse_discovery;
gboolean name_resolv;
gboolean debug_keys;
gboolean fast_conn;
gboolean refresh_discovery;
gboolean experimental;
struct queue *kernel;
uint16_t did_source;
uint16_t did_vendor;
uint16_t did_product;
uint16_t did_version;
bt_mode_t mode;
uint16_t max_adapters;
bt_gatt_cache_t gatt_cache;
uint16_t gatt_mtu;
uint8_t gatt_channels;
enum mps_mode_t mps;
struct btd_avdtp_opts avdtp;
uint8_t key_size;
enum jw_repairing_t jw_repairing;
struct btd_advmon_opts advmon;
struct btd_csis csis;
};
extern struct btd_opts btd_opts;
gboolean plugin_init(const char *enable, const char *disable);
void plugin_cleanup(void);
void rfkill_init(void);
void rfkill_exit(void);
int rfkill_get_blocked(uint16_t index);
GKeyFile *btd_get_main_conf(void);
bool btd_kernel_experimental_enabled(const char *uuid);
void btd_exit(void);
|