1use serde::{Serialize, Deserialize};
5
6#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
9pub enum CentralState {
10 #[default]
11 Absent,
12 PoweredOff,
13 PoweredOn,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
19pub enum GATTOperationType {
20 #[default]
21 Connection,
22 Discovery,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28pub enum CharacteristicWriteType {
29 #[default]
30 WriteDefaultDeprecated,
31 WriteWithResponse,
32 WriteWithoutResponse,
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
38pub enum CharacteristicOperationType {
39 #[default]
40 Read,
41 Write,
42 SubscribeToNotifications,
43 UnsubscribeFromNotifications,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
49pub enum DescriptorOperationType {
50 #[default]
51 Read,
52 Write,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize, Default)]
58#[serde(rename_all = "camelCase")]
59pub struct ManufacturerData {
60 pub key: i64,
65 pub data: String,
68}
69
70#[derive(Debug, Clone, Serialize, Deserialize, Default)]
73#[serde(rename_all = "camelCase")]
74pub struct ScanRecord {
75
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub name: Option<String>,
78
79 #[serde(skip_serializing_if = "Option::is_none")]
80 pub uuids: Option<Vec<String>>,
81 #[serde(skip_serializing_if = "Option::is_none")]
84 pub appearance: Option<i64>,
85 #[serde(skip_serializing_if = "Option::is_none")]
88 pub txPower: Option<i64>,
89 #[serde(skip_serializing_if = "Option::is_none")]
93 pub manufacturerData: Option<Vec<ManufacturerData>>,
94}
95
96#[derive(Debug, Clone, Serialize, Deserialize, Default)]
99#[serde(rename_all = "camelCase")]
100pub struct ScanEntry {
101
102 pub deviceAddress: String,
103
104 pub rssi: i64,
105
106 pub scanRecord: ScanRecord,
107}
108
109#[derive(Debug, Clone, Serialize, Deserialize, Default)]
113#[serde(rename_all = "camelCase")]
114pub struct CharacteristicProperties {
115
116 #[serde(skip_serializing_if = "Option::is_none")]
117 pub broadcast: Option<bool>,
118
119 #[serde(skip_serializing_if = "Option::is_none")]
120 pub read: Option<bool>,
121
122 #[serde(skip_serializing_if = "Option::is_none")]
123 pub writeWithoutResponse: Option<bool>,
124
125 #[serde(skip_serializing_if = "Option::is_none")]
126 pub write: Option<bool>,
127
128 #[serde(skip_serializing_if = "Option::is_none")]
129 pub notify: Option<bool>,
130
131 #[serde(skip_serializing_if = "Option::is_none")]
132 pub indicate: Option<bool>,
133
134 #[serde(skip_serializing_if = "Option::is_none")]
135 pub authenticatedSignedWrites: Option<bool>,
136
137 #[serde(skip_serializing_if = "Option::is_none")]
138 pub extendedProperties: Option<bool>,
139}
140
141#[derive(Debug, Clone, Serialize, Deserialize, Default)]
144#[serde(rename_all = "camelCase")]
145pub struct EnableParams {
146 pub state: CentralState,
149 pub leSupported: bool,
152}
153
154#[derive(Debug, Clone, Serialize, Deserialize, Default)]
157#[serde(rename_all = "camelCase")]
158pub struct SetSimulatedCentralStateParams {
159 pub state: CentralState,
162}
163
164#[derive(Debug, Clone, Serialize, Deserialize, Default)]
168#[serde(rename_all = "camelCase")]
169pub struct SimulatePreconnectedPeripheralParams {
170
171 pub address: String,
172
173 pub name: String,
174
175 pub manufacturerData: Vec<ManufacturerData>,
176
177 pub knownServiceUuids: Vec<String>,
178}
179
180#[derive(Debug, Clone, Serialize, Deserialize, Default)]
184#[serde(rename_all = "camelCase")]
185pub struct SimulateAdvertisementParams {
186
187 pub entry: ScanEntry,
188}
189
190#[derive(Debug, Clone, Serialize, Deserialize, Default)]
195#[serde(rename_all = "camelCase")]
196pub struct SimulateGATTOperationResponseParams {
197
198 pub address: String,
199
200 #[serde(rename = "type")]
201 pub type_: GATTOperationType,
202
203 pub code: i64,
204}
205
206#[derive(Debug, Clone, Serialize, Deserialize, Default)]
213#[serde(rename_all = "camelCase")]
214pub struct SimulateCharacteristicOperationResponseParams {
215
216 pub characteristicId: String,
217
218 #[serde(rename = "type")]
219 pub type_: CharacteristicOperationType,
220
221 pub code: i64,
222
223 #[serde(skip_serializing_if = "Option::is_none")]
224 pub data: Option<String>,
225}
226
227#[derive(Debug, Clone, Serialize, Deserialize, Default)]
234#[serde(rename_all = "camelCase")]
235pub struct SimulateDescriptorOperationResponseParams {
236
237 pub descriptorId: String,
238
239 #[serde(rename = "type")]
240 pub type_: DescriptorOperationType,
241
242 pub code: i64,
243
244 #[serde(skip_serializing_if = "Option::is_none")]
245 pub data: Option<String>,
246}
247
248#[derive(Debug, Clone, Serialize, Deserialize, Default)]
251#[serde(rename_all = "camelCase")]
252pub struct AddServiceParams {
253
254 pub address: String,
255
256 pub serviceUuid: String,
257}
258
259#[derive(Debug, Clone, Serialize, Deserialize, Default)]
262#[serde(rename_all = "camelCase")]
263pub struct AddServiceReturns {
264 pub serviceId: String,
267}
268
269#[derive(Debug, Clone, Serialize, Deserialize, Default)]
272#[serde(rename_all = "camelCase")]
273pub struct RemoveServiceParams {
274
275 pub serviceId: String,
276}
277
278#[derive(Debug, Clone, Serialize, Deserialize, Default)]
282#[serde(rename_all = "camelCase")]
283pub struct AddCharacteristicParams {
284
285 pub serviceId: String,
286
287 pub characteristicUuid: String,
288
289 pub properties: CharacteristicProperties,
290}
291
292#[derive(Debug, Clone, Serialize, Deserialize, Default)]
296#[serde(rename_all = "camelCase")]
297pub struct AddCharacteristicReturns {
298 pub characteristicId: String,
301}
302
303#[derive(Debug, Clone, Serialize, Deserialize, Default)]
307#[serde(rename_all = "camelCase")]
308pub struct RemoveCharacteristicParams {
309
310 pub characteristicId: String,
311}
312
313#[derive(Debug, Clone, Serialize, Deserialize, Default)]
317#[serde(rename_all = "camelCase")]
318pub struct AddDescriptorParams {
319
320 pub characteristicId: String,
321
322 pub descriptorUuid: String,
323}
324
325#[derive(Debug, Clone, Serialize, Deserialize, Default)]
329#[serde(rename_all = "camelCase")]
330pub struct AddDescriptorReturns {
331 pub descriptorId: String,
334}
335
336#[derive(Debug, Clone, Serialize, Deserialize, Default)]
339#[serde(rename_all = "camelCase")]
340pub struct RemoveDescriptorParams {
341
342 pub descriptorId: String,
343}
344
345#[derive(Debug, Clone, Serialize, Deserialize, Default)]
348#[serde(rename_all = "camelCase")]
349pub struct SimulateGATTDisconnectionParams {
350
351 pub address: String,
352}