1use super::commands::*;
2impl Enable {
3 pub fn builder() -> EnableBuilder {
4 <EnableBuilder as Default>::default()
5 }
6}
7#[derive(Default, Clone)]
8pub struct EnableBuilder {
9 state: Option<super::types::CentralState>,
10 le_supported: Option<bool>,
11}
12impl EnableBuilder {
13 pub fn state(mut self, state: impl Into<super::types::CentralState>) -> Self {
14 self.state = Some(state.into());
15 self
16 }
17 pub fn le_supported(mut self, le_supported: impl Into<bool>) -> Self {
18 self.le_supported = Some(le_supported.into());
19 self
20 }
21 pub fn build(self) -> Result<Enable, String> {
22 Ok(Enable {
23 method: EnableMethod::Enable,
24 params: EnableParams {
25 state: self
26 .state
27 .ok_or_else(|| format!("Field `{}` is mandatory.", std::stringify!(state)))?,
28 le_supported: self.le_supported.ok_or_else(|| {
29 format!("Field `{}` is mandatory.", std::stringify!(le_supported))
30 })?,
31 },
32 })
33 }
34}
35impl SetSimulatedCentralState {
36 pub fn builder() -> SetSimulatedCentralStateBuilder {
37 <SetSimulatedCentralStateBuilder as Default>::default()
38 }
39}
40#[derive(Default, Clone)]
41pub struct SetSimulatedCentralStateBuilder {
42 state: Option<super::types::CentralState>,
43}
44impl SetSimulatedCentralStateBuilder {
45 pub fn state(mut self, state: impl Into<super::types::CentralState>) -> Self {
46 self.state = Some(state.into());
47 self
48 }
49 pub fn build(self) -> Result<SetSimulatedCentralState, String> {
50 Ok(SetSimulatedCentralState {
51 method: SetSimulatedCentralStateMethod::SetSimulatedCentralState,
52 params: SetSimulatedCentralStateParams {
53 state: self
54 .state
55 .ok_or_else(|| format!("Field `{}` is mandatory.", std::stringify!(state)))?,
56 },
57 })
58 }
59}
60#[derive(Debug, Clone, Default)]
61pub struct DisableBuilder;
62impl DisableBuilder {
63 pub fn new() -> Self {
64 Self
65 }
66 pub fn build(self) -> Disable {
67 Disable {
68 method: DisableMethod::Disable,
69 params: DisableParams {},
70 }
71 }
72}
73impl Disable {
74 pub fn builder() -> DisableBuilder {
75 DisableBuilder
76 }
77}
78impl SimulatePreconnectedPeripheral {
79 pub fn builder() -> SimulatePreconnectedPeripheralBuilder {
80 <SimulatePreconnectedPeripheralBuilder as Default>::default()
81 }
82}
83#[derive(Default, Clone)]
84pub struct SimulatePreconnectedPeripheralBuilder {
85 address: Option<String>,
86 name: Option<String>,
87 manufacturer_data: Option<Vec<super::types::ManufacturerData>>,
88 known_service_uuids: Option<Vec<String>>,
89}
90impl SimulatePreconnectedPeripheralBuilder {
91 pub fn address(mut self, address: impl Into<String>) -> Self {
92 self.address = Some(address.into());
93 self
94 }
95 pub fn name(mut self, name: impl Into<String>) -> Self {
96 self.name = Some(name.into());
97 self
98 }
99 pub fn manufacturer_data(
100 mut self,
101 manufacturer_data: impl Into<super::types::ManufacturerData>,
102 ) -> Self {
103 let v = self.manufacturer_data.get_or_insert(Vec::new());
104 v.push(manufacturer_data.into());
105 self
106 }
107 pub fn manufacturer_datas<I, S>(mut self, manufacturer_datas: I) -> Self
108 where
109 I: IntoIterator<Item = S>,
110 S: Into<super::types::ManufacturerData>,
111 {
112 let v = self.manufacturer_data.get_or_insert(Vec::new());
113 for val in manufacturer_datas {
114 v.push(val.into());
115 }
116 self
117 }
118 pub fn known_service_uuid(mut self, known_service_uuid: impl Into<String>) -> Self {
119 let v = self.known_service_uuids.get_or_insert(Vec::new());
120 v.push(known_service_uuid.into());
121 self
122 }
123 pub fn known_service_uuids<I, S>(mut self, known_service_uuids: I) -> Self
124 where
125 I: IntoIterator<Item = S>,
126 S: Into<String>,
127 {
128 let v = self.known_service_uuids.get_or_insert(Vec::new());
129 for val in known_service_uuids {
130 v.push(val.into());
131 }
132 self
133 }
134 pub fn build(self) -> Result<SimulatePreconnectedPeripheral, String> {
135 Ok(SimulatePreconnectedPeripheral {
136 method: SimulatePreconnectedPeripheralMethod::SimulatePreconnectedPeripheral,
137 params: SimulatePreconnectedPeripheralParams {
138 address: self
139 .address
140 .ok_or_else(|| format!("Field `{}` is mandatory.", std::stringify!(address)))?,
141 name: self
142 .name
143 .ok_or_else(|| format!("Field `{}` is mandatory.", std::stringify!(name)))?,
144 manufacturer_data: self.manufacturer_data.ok_or_else(|| {
145 format!(
146 "Field `{}` is mandatory.",
147 std::stringify!(manufacturer_data)
148 )
149 })?,
150 known_service_uuids: self.known_service_uuids.ok_or_else(|| {
151 format!(
152 "Field `{}` is mandatory.",
153 std::stringify!(known_service_uuids)
154 )
155 })?,
156 },
157 })
158 }
159}
160impl SimulateAdvertisement {
161 pub fn builder() -> SimulateAdvertisementBuilder {
162 <SimulateAdvertisementBuilder as Default>::default()
163 }
164}
165#[derive(Default, Clone)]
166pub struct SimulateAdvertisementBuilder {
167 entry: Option<super::types::ScanEntry>,
168}
169impl SimulateAdvertisementBuilder {
170 pub fn entry(mut self, entry: impl Into<super::types::ScanEntry>) -> Self {
171 self.entry = Some(entry.into());
172 self
173 }
174 pub fn build(self) -> Result<SimulateAdvertisement, String> {
175 Ok(SimulateAdvertisement {
176 method: SimulateAdvertisementMethod::SimulateAdvertisement,
177 params: SimulateAdvertisementParams {
178 entry: self
179 .entry
180 .ok_or_else(|| format!("Field `{}` is mandatory.", std::stringify!(entry)))?,
181 },
182 })
183 }
184}
185impl SimulateGattOperationResponse {
186 pub fn builder() -> SimulateGattOperationResponseBuilder {
187 <SimulateGattOperationResponseBuilder as Default>::default()
188 }
189}
190#[derive(Default, Clone)]
191pub struct SimulateGattOperationResponseBuilder {
192 address: Option<String>,
193 r#type: Option<super::types::GattOperationType>,
194 code: Option<i64>,
195}
196impl SimulateGattOperationResponseBuilder {
197 pub fn address(mut self, address: impl Into<String>) -> Self {
198 self.address = Some(address.into());
199 self
200 }
201 pub fn r#type(mut self, r#type: impl Into<super::types::GattOperationType>) -> Self {
202 self.r#type = Some(r#type.into());
203 self
204 }
205 pub fn code(mut self, code: impl Into<i64>) -> Self {
206 self.code = Some(code.into());
207 self
208 }
209 pub fn build(self) -> Result<SimulateGattOperationResponse, String> {
210 Ok(SimulateGattOperationResponse {
211 method: SimulateGattOperationResponseMethod::SimulateGattOperationResponse,
212 params: SimulateGattOperationResponseParams {
213 address: self
214 .address
215 .ok_or_else(|| format!("Field `{}` is mandatory.", std::stringify!(address)))?,
216 r#type: self
217 .r#type
218 .ok_or_else(|| format!("Field `{}` is mandatory.", std::stringify!(r#type)))?,
219 code: self
220 .code
221 .ok_or_else(|| format!("Field `{}` is mandatory.", std::stringify!(code)))?,
222 },
223 })
224 }
225}
226impl SimulateCharacteristicOperationResponse {
227 pub fn builder() -> SimulateCharacteristicOperationResponseBuilder {
228 <SimulateCharacteristicOperationResponseBuilder as Default>::default()
229 }
230}
231#[derive(Default, Clone)]
232pub struct SimulateCharacteristicOperationResponseBuilder {
233 characteristic_id: Option<String>,
234 r#type: Option<super::types::CharacteristicOperationType>,
235 code: Option<i64>,
236 data: Option<crate::Binary>,
237}
238impl SimulateCharacteristicOperationResponseBuilder {
239 pub fn characteristic_id(mut self, characteristic_id: impl Into<String>) -> Self {
240 self.characteristic_id = Some(characteristic_id.into());
241 self
242 }
243 pub fn r#type(mut self, r#type: impl Into<super::types::CharacteristicOperationType>) -> Self {
244 self.r#type = Some(r#type.into());
245 self
246 }
247 pub fn code(mut self, code: impl Into<i64>) -> Self {
248 self.code = Some(code.into());
249 self
250 }
251 pub fn data(mut self, data: impl Into<crate::Binary>) -> Self {
252 self.data = Some(data.into());
253 self
254 }
255 pub fn build(self) -> Result<SimulateCharacteristicOperationResponse, String> {
256 Ok (SimulateCharacteristicOperationResponse { method : SimulateCharacteristicOperationResponseMethod :: SimulateCharacteristicOperationResponse , params : SimulateCharacteristicOperationResponseParams { characteristic_id : self . characteristic_id . ok_or_else (|| format ! ("Field `{}` is mandatory." , std :: stringify ! (characteristic_id))) ? , r#type : self . r#type . ok_or_else (|| format ! ("Field `{}` is mandatory." , std :: stringify ! (r#type))) ? , code : self . code . ok_or_else (|| format ! ("Field `{}` is mandatory." , std :: stringify ! (code))) ? , data : self . data , } , })
257 }
258}
259impl SimulateDescriptorOperationResponse {
260 pub fn builder() -> SimulateDescriptorOperationResponseBuilder {
261 <SimulateDescriptorOperationResponseBuilder as Default>::default()
262 }
263}
264#[derive(Default, Clone)]
265pub struct SimulateDescriptorOperationResponseBuilder {
266 descriptor_id: Option<String>,
267 r#type: Option<super::types::DescriptorOperationType>,
268 code: Option<i64>,
269 data: Option<crate::Binary>,
270}
271impl SimulateDescriptorOperationResponseBuilder {
272 pub fn descriptor_id(mut self, descriptor_id: impl Into<String>) -> Self {
273 self.descriptor_id = Some(descriptor_id.into());
274 self
275 }
276 pub fn r#type(mut self, r#type: impl Into<super::types::DescriptorOperationType>) -> Self {
277 self.r#type = Some(r#type.into());
278 self
279 }
280 pub fn code(mut self, code: impl Into<i64>) -> Self {
281 self.code = Some(code.into());
282 self
283 }
284 pub fn data(mut self, data: impl Into<crate::Binary>) -> Self {
285 self.data = Some(data.into());
286 self
287 }
288 pub fn build(self) -> Result<SimulateDescriptorOperationResponse, String> {
289 Ok(SimulateDescriptorOperationResponse {
290 method: SimulateDescriptorOperationResponseMethod::SimulateDescriptorOperationResponse,
291 params: SimulateDescriptorOperationResponseParams {
292 descriptor_id: self.descriptor_id.ok_or_else(|| {
293 format!("Field `{}` is mandatory.", std::stringify!(descriptor_id))
294 })?,
295 r#type: self
296 .r#type
297 .ok_or_else(|| format!("Field `{}` is mandatory.", std::stringify!(r#type)))?,
298 code: self
299 .code
300 .ok_or_else(|| format!("Field `{}` is mandatory.", std::stringify!(code)))?,
301 data: self.data,
302 },
303 })
304 }
305}
306impl AddService {
307 pub fn builder() -> AddServiceBuilder {
308 <AddServiceBuilder as Default>::default()
309 }
310}
311#[derive(Default, Clone)]
312pub struct AddServiceBuilder {
313 address: Option<String>,
314 service_uuid: Option<String>,
315}
316impl AddServiceBuilder {
317 pub fn address(mut self, address: impl Into<String>) -> Self {
318 self.address = Some(address.into());
319 self
320 }
321 pub fn service_uuid(mut self, service_uuid: impl Into<String>) -> Self {
322 self.service_uuid = Some(service_uuid.into());
323 self
324 }
325 pub fn build(self) -> Result<AddService, String> {
326 Ok(AddService {
327 method: AddServiceMethod::AddService,
328 params: AddServiceParams {
329 address: self
330 .address
331 .ok_or_else(|| format!("Field `{}` is mandatory.", std::stringify!(address)))?,
332 service_uuid: self.service_uuid.ok_or_else(|| {
333 format!("Field `{}` is mandatory.", std::stringify!(service_uuid))
334 })?,
335 },
336 })
337 }
338}
339impl RemoveService {
340 pub fn builder() -> RemoveServiceBuilder {
341 <RemoveServiceBuilder as Default>::default()
342 }
343}
344#[derive(Default, Clone)]
345pub struct RemoveServiceBuilder {
346 service_id: Option<String>,
347}
348impl RemoveServiceBuilder {
349 pub fn service_id(mut self, service_id: impl Into<String>) -> Self {
350 self.service_id = Some(service_id.into());
351 self
352 }
353 pub fn build(self) -> Result<RemoveService, String> {
354 Ok(RemoveService {
355 method: RemoveServiceMethod::RemoveService,
356 params: RemoveServiceParams {
357 service_id: self.service_id.ok_or_else(|| {
358 format!("Field `{}` is mandatory.", std::stringify!(service_id))
359 })?,
360 },
361 })
362 }
363}
364impl AddCharacteristic {
365 pub fn builder() -> AddCharacteristicBuilder {
366 <AddCharacteristicBuilder as Default>::default()
367 }
368}
369#[derive(Default, Clone)]
370pub struct AddCharacteristicBuilder {
371 service_id: Option<String>,
372 characteristic_uuid: Option<String>,
373 properties: Option<super::types::CharacteristicProperties>,
374}
375impl AddCharacteristicBuilder {
376 pub fn service_id(mut self, service_id: impl Into<String>) -> Self {
377 self.service_id = Some(service_id.into());
378 self
379 }
380 pub fn characteristic_uuid(mut self, characteristic_uuid: impl Into<String>) -> Self {
381 self.characteristic_uuid = Some(characteristic_uuid.into());
382 self
383 }
384 pub fn properties(
385 mut self,
386 properties: impl Into<super::types::CharacteristicProperties>,
387 ) -> Self {
388 self.properties = Some(properties.into());
389 self
390 }
391 pub fn build(self) -> Result<AddCharacteristic, String> {
392 Ok(AddCharacteristic {
393 method: AddCharacteristicMethod::AddCharacteristic,
394 params: AddCharacteristicParams {
395 service_id: self.service_id.ok_or_else(|| {
396 format!("Field `{}` is mandatory.", std::stringify!(service_id))
397 })?,
398 characteristic_uuid: self.characteristic_uuid.ok_or_else(|| {
399 format!(
400 "Field `{}` is mandatory.",
401 std::stringify!(characteristic_uuid)
402 )
403 })?,
404 properties: self.properties.ok_or_else(|| {
405 format!("Field `{}` is mandatory.", std::stringify!(properties))
406 })?,
407 },
408 })
409 }
410}
411impl RemoveCharacteristic {
412 pub fn builder() -> RemoveCharacteristicBuilder {
413 <RemoveCharacteristicBuilder as Default>::default()
414 }
415}
416#[derive(Default, Clone)]
417pub struct RemoveCharacteristicBuilder {
418 characteristic_id: Option<String>,
419}
420impl RemoveCharacteristicBuilder {
421 pub fn characteristic_id(mut self, characteristic_id: impl Into<String>) -> Self {
422 self.characteristic_id = Some(characteristic_id.into());
423 self
424 }
425 pub fn build(self) -> Result<RemoveCharacteristic, String> {
426 Ok(RemoveCharacteristic {
427 method: RemoveCharacteristicMethod::RemoveCharacteristic,
428 params: RemoveCharacteristicParams {
429 characteristic_id: self.characteristic_id.ok_or_else(|| {
430 format!(
431 "Field `{}` is mandatory.",
432 std::stringify!(characteristic_id)
433 )
434 })?,
435 },
436 })
437 }
438}
439impl AddDescriptor {
440 pub fn builder() -> AddDescriptorBuilder {
441 <AddDescriptorBuilder as Default>::default()
442 }
443}
444#[derive(Default, Clone)]
445pub struct AddDescriptorBuilder {
446 characteristic_id: Option<String>,
447 descriptor_uuid: Option<String>,
448}
449impl AddDescriptorBuilder {
450 pub fn characteristic_id(mut self, characteristic_id: impl Into<String>) -> Self {
451 self.characteristic_id = Some(characteristic_id.into());
452 self
453 }
454 pub fn descriptor_uuid(mut self, descriptor_uuid: impl Into<String>) -> Self {
455 self.descriptor_uuid = Some(descriptor_uuid.into());
456 self
457 }
458 pub fn build(self) -> Result<AddDescriptor, String> {
459 Ok(AddDescriptor {
460 method: AddDescriptorMethod::AddDescriptor,
461 params: AddDescriptorParams {
462 characteristic_id: self.characteristic_id.ok_or_else(|| {
463 format!(
464 "Field `{}` is mandatory.",
465 std::stringify!(characteristic_id)
466 )
467 })?,
468 descriptor_uuid: self.descriptor_uuid.ok_or_else(|| {
469 format!("Field `{}` is mandatory.", std::stringify!(descriptor_uuid))
470 })?,
471 },
472 })
473 }
474}
475impl RemoveDescriptor {
476 pub fn builder() -> RemoveDescriptorBuilder {
477 <RemoveDescriptorBuilder as Default>::default()
478 }
479}
480#[derive(Default, Clone)]
481pub struct RemoveDescriptorBuilder {
482 descriptor_id: Option<String>,
483}
484impl RemoveDescriptorBuilder {
485 pub fn descriptor_id(mut self, descriptor_id: impl Into<String>) -> Self {
486 self.descriptor_id = Some(descriptor_id.into());
487 self
488 }
489 pub fn build(self) -> Result<RemoveDescriptor, String> {
490 Ok(RemoveDescriptor {
491 method: RemoveDescriptorMethod::RemoveDescriptor,
492 params: RemoveDescriptorParams {
493 descriptor_id: self.descriptor_id.ok_or_else(|| {
494 format!("Field `{}` is mandatory.", std::stringify!(descriptor_id))
495 })?,
496 },
497 })
498 }
499}
500impl SimulateGattDisconnection {
501 pub fn builder() -> SimulateGattDisconnectionBuilder {
502 <SimulateGattDisconnectionBuilder as Default>::default()
503 }
504}
505#[derive(Default, Clone)]
506pub struct SimulateGattDisconnectionBuilder {
507 address: Option<String>,
508}
509impl SimulateGattDisconnectionBuilder {
510 pub fn address(mut self, address: impl Into<String>) -> Self {
511 self.address = Some(address.into());
512 self
513 }
514 pub fn build(self) -> Result<SimulateGattDisconnection, String> {
515 Ok(SimulateGattDisconnection {
516 method: SimulateGattDisconnectionMethod::SimulateGattDisconnection,
517 params: SimulateGattDisconnectionParams {
518 address: self
519 .address
520 .ok_or_else(|| format!("Field `{}` is mandatory.", std::stringify!(address)))?,
521 },
522 })
523 }
524}