i2cbus_api/
lib.rs

1#![allow(missing_docs, trivial_casts, unused_variables, unused_mut, unused_imports, unused_extern_crates, non_camel_case_types)]
2
3use futures::Stream;
4use std::io::Error;
5
6#[deprecated(note = "Import swagger-rs directly")]
7pub use swagger::{ApiError, ContextWrapper};
8#[deprecated(note = "Import futures directly")]
9pub use futures::Future;
10
11pub const BASE_PATH: &'static str = "";
12pub const API_VERSION: &'static str = "0.1.9";
13
14#[derive(Debug, PartialEq)]
15#[must_use]
16pub enum I2cBusApiResponse {
17    /// OK
18    OK
19    (String)
20    ,
21    /// File not found
22    FileNotFound
23    (String)
24}
25
26#[derive(Debug, PartialEq)]
27pub enum I2cBusListResponse {
28    /// OK
29    OK
30    (Vec<models::I2cBusList>)
31}
32
33#[derive(Debug, PartialEq)]
34#[must_use]
35pub enum I2cBusReadByteResponse {
36    /// OK
37    OK
38    (models::I2cBusRead)
39    ,
40    /// Bad Request
41    BadRequest
42    (models::I2cBusArg)
43    ,
44    /// Transaction Failed
45    TransactionFailed
46    (models::I2cBusError)
47}
48
49#[derive(Debug, PartialEq)]
50#[must_use]
51pub enum I2cBusReadBytesResponse {
52    /// OK
53    OK
54    (models::I2cBusRead)
55    ,
56    /// Bad Request
57    BadRequest
58    (models::I2cBusArg)
59    ,
60    /// Transaction Failed
61    TransactionFailed
62    (models::I2cBusError)
63}
64
65#[derive(Debug, PartialEq)]
66#[must_use]
67pub enum I2cBusReadRegResponse {
68    /// OK
69    OK
70    (models::I2cBusRead)
71    ,
72    /// Bad Request
73    BadRequest
74    (models::I2cBusArg)
75    ,
76    /// Transaction Failed
77    TransactionFailed
78    (models::I2cBusError)
79}
80
81#[derive(Debug, PartialEq)]
82#[must_use]
83pub enum I2cBusWriteByteResponse {
84    /// OK
85    OK
86    (models::I2cBusOk)
87    ,
88    /// Bad Request
89    BadRequest
90    (models::I2cBusArg)
91    ,
92    /// Transaction Failed
93    TransactionFailed
94    (models::I2cBusError)
95}
96
97#[derive(Debug, PartialEq)]
98#[must_use]
99pub enum I2cBusWriteByteRegResponse {
100    /// OK
101    OK
102    (models::I2cBusOk)
103    ,
104    /// Bad Request
105    BadRequest
106    (models::I2cBusArg)
107    ,
108    /// Transaction Failed
109    TransactionFailed
110    (models::I2cBusError)
111}
112
113#[derive(Debug, PartialEq)]
114#[must_use]
115pub enum I2cBusWriteBytesResponse {
116    /// OK
117    OK
118    (models::I2cBusOk)
119    ,
120    /// Bad Request
121    BadRequest
122    (models::I2cBusArg)
123    ,
124    /// Transaction Failed
125    TransactionFailed
126    (models::I2cBusError)
127}
128
129#[derive(Debug, PartialEq)]
130#[must_use]
131pub enum I2cBusWriteBytesRegResponse {
132    /// OK
133    OK
134    (models::I2cBusOk)
135    ,
136    /// Bad Request
137    BadRequest
138    (models::I2cBusArg)
139    ,
140    /// Transaction Failed
141    TransactionFailed
142    (models::I2cBusError)
143}
144
145/// API
146pub trait Api<C> {
147    fn i2c_bus_api(
148        &self,
149        context: &C) -> Box<dyn Future<Item=I2cBusApiResponse, Error=ApiError> + Send>;
150
151    fn i2c_bus_list(
152        &self,
153        context: &C) -> Box<dyn Future<Item=I2cBusListResponse, Error=ApiError> + Send>;
154
155    fn i2c_bus_read_byte(
156        &self,
157        bus_id: i32,
158        addr: i32,
159        context: &C) -> Box<dyn Future<Item=I2cBusReadByteResponse, Error=ApiError> + Send>;
160
161    fn i2c_bus_read_bytes(
162        &self,
163        bus_id: i32,
164        addr: i32,
165        num_bytes: i32,
166        context: &C) -> Box<dyn Future<Item=I2cBusReadBytesResponse, Error=ApiError> + Send>;
167
168    fn i2c_bus_read_reg(
169        &self,
170        bus_id: i32,
171        addr: i32,
172        reg: i32,
173        num_bytes: i32,
174        context: &C) -> Box<dyn Future<Item=I2cBusReadRegResponse, Error=ApiError> + Send>;
175
176    fn i2c_bus_write_byte(
177        &self,
178        bus_id: i32,
179        addr: i32,
180        value: i32,
181        context: &C) -> Box<dyn Future<Item=I2cBusWriteByteResponse, Error=ApiError> + Send>;
182
183    fn i2c_bus_write_byte_reg(
184        &self,
185        bus_id: i32,
186        addr: i32,
187        reg: i32,
188        value: i32,
189        context: &C) -> Box<dyn Future<Item=I2cBusWriteByteRegResponse, Error=ApiError> + Send>;
190
191    fn i2c_bus_write_bytes(
192        &self,
193        bus_id: i32,
194        addr: i32,
195        values: models::Values,
196        context: &C) -> Box<dyn Future<Item=I2cBusWriteBytesResponse, Error=ApiError> + Send>;
197
198    fn i2c_bus_write_bytes_reg(
199        &self,
200        bus_id: i32,
201        addr: i32,
202        reg: i32,
203        values: models::Values,
204        context: &C) -> Box<dyn Future<Item=I2cBusWriteBytesRegResponse, Error=ApiError> + Send>;
205
206}
207
208/// API without a `Context`
209pub trait ApiNoContext {
210    fn i2c_bus_api(
211        &self,
212        ) -> Box<dyn Future<Item=I2cBusApiResponse, Error=ApiError> + Send>;
213
214    fn i2c_bus_list(
215        &self,
216        ) -> Box<dyn Future<Item=I2cBusListResponse, Error=ApiError> + Send>;
217
218    fn i2c_bus_read_byte(
219        &self,
220        bus_id: i32,
221        addr: i32,
222        ) -> Box<dyn Future<Item=I2cBusReadByteResponse, Error=ApiError> + Send>;
223
224    fn i2c_bus_read_bytes(
225        &self,
226        bus_id: i32,
227        addr: i32,
228        num_bytes: i32,
229        ) -> Box<dyn Future<Item=I2cBusReadBytesResponse, Error=ApiError> + Send>;
230
231    fn i2c_bus_read_reg(
232        &self,
233        bus_id: i32,
234        addr: i32,
235        reg: i32,
236        num_bytes: i32,
237        ) -> Box<dyn Future<Item=I2cBusReadRegResponse, Error=ApiError> + Send>;
238
239    fn i2c_bus_write_byte(
240        &self,
241        bus_id: i32,
242        addr: i32,
243        value: i32,
244        ) -> Box<dyn Future<Item=I2cBusWriteByteResponse, Error=ApiError> + Send>;
245
246    fn i2c_bus_write_byte_reg(
247        &self,
248        bus_id: i32,
249        addr: i32,
250        reg: i32,
251        value: i32,
252        ) -> Box<dyn Future<Item=I2cBusWriteByteRegResponse, Error=ApiError> + Send>;
253
254    fn i2c_bus_write_bytes(
255        &self,
256        bus_id: i32,
257        addr: i32,
258        values: models::Values,
259        ) -> Box<dyn Future<Item=I2cBusWriteBytesResponse, Error=ApiError> + Send>;
260
261    fn i2c_bus_write_bytes_reg(
262        &self,
263        bus_id: i32,
264        addr: i32,
265        reg: i32,
266        values: models::Values,
267        ) -> Box<dyn Future<Item=I2cBusWriteBytesRegResponse, Error=ApiError> + Send>;
268
269}
270
271/// Trait to extend an API to make it easy to bind it to a context.
272pub trait ContextWrapperExt<'a, C> where Self: Sized {
273    /// Binds this API to a context.
274    fn with_context(self: &'a Self, context: C) -> ContextWrapper<'a, Self, C>;
275}
276
277impl<'a, T: Api<C> + Sized, C> ContextWrapperExt<'a, C> for T {
278    fn with_context(self: &'a T, context: C) -> ContextWrapper<'a, T, C> {
279         ContextWrapper::<T, C>::new(self, context)
280    }
281}
282
283impl<'a, T: Api<C>, C> ApiNoContext for ContextWrapper<'a, T, C> {
284    fn i2c_bus_api(
285        &self,
286        ) -> Box<dyn Future<Item=I2cBusApiResponse, Error=ApiError> + Send>
287    {
288        self.api().i2c_bus_api(&self.context())
289    }
290
291    fn i2c_bus_list(
292        &self,
293        ) -> Box<dyn Future<Item=I2cBusListResponse, Error=ApiError> + Send>
294    {
295        self.api().i2c_bus_list(&self.context())
296    }
297
298    fn i2c_bus_read_byte(
299        &self,
300        bus_id: i32,
301        addr: i32,
302        ) -> Box<dyn Future<Item=I2cBusReadByteResponse, Error=ApiError> + Send>
303    {
304        self.api().i2c_bus_read_byte(bus_id, addr, &self.context())
305    }
306
307    fn i2c_bus_read_bytes(
308        &self,
309        bus_id: i32,
310        addr: i32,
311        num_bytes: i32,
312        ) -> Box<dyn Future<Item=I2cBusReadBytesResponse, Error=ApiError> + Send>
313    {
314        self.api().i2c_bus_read_bytes(bus_id, addr, num_bytes, &self.context())
315    }
316
317    fn i2c_bus_read_reg(
318        &self,
319        bus_id: i32,
320        addr: i32,
321        reg: i32,
322        num_bytes: i32,
323        ) -> Box<dyn Future<Item=I2cBusReadRegResponse, Error=ApiError> + Send>
324    {
325        self.api().i2c_bus_read_reg(bus_id, addr, reg, num_bytes, &self.context())
326    }
327
328    fn i2c_bus_write_byte(
329        &self,
330        bus_id: i32,
331        addr: i32,
332        value: i32,
333        ) -> Box<dyn Future<Item=I2cBusWriteByteResponse, Error=ApiError> + Send>
334    {
335        self.api().i2c_bus_write_byte(bus_id, addr, value, &self.context())
336    }
337
338    fn i2c_bus_write_byte_reg(
339        &self,
340        bus_id: i32,
341        addr: i32,
342        reg: i32,
343        value: i32,
344        ) -> Box<dyn Future<Item=I2cBusWriteByteRegResponse, Error=ApiError> + Send>
345    {
346        self.api().i2c_bus_write_byte_reg(bus_id, addr, reg, value, &self.context())
347    }
348
349    fn i2c_bus_write_bytes(
350        &self,
351        bus_id: i32,
352        addr: i32,
353        values: models::Values,
354        ) -> Box<dyn Future<Item=I2cBusWriteBytesResponse, Error=ApiError> + Send>
355    {
356        self.api().i2c_bus_write_bytes(bus_id, addr, values, &self.context())
357    }
358
359    fn i2c_bus_write_bytes_reg(
360        &self,
361        bus_id: i32,
362        addr: i32,
363        reg: i32,
364        values: models::Values,
365        ) -> Box<dyn Future<Item=I2cBusWriteBytesRegResponse, Error=ApiError> + Send>
366    {
367        self.api().i2c_bus_write_bytes_reg(bus_id, addr, reg, values, &self.context())
368    }
369
370}
371
372#[cfg(feature = "client")]
373pub mod client;
374
375// Re-export Client as a top-level name
376#[cfg(feature = "client")]
377pub use client::Client;
378
379#[cfg(feature = "server")]
380pub mod server;
381
382// Re-export router() as a top-level name
383#[cfg(feature = "server")]
384pub use self::server::Service;
385
386#[cfg(feature = "server")]
387pub mod context;
388
389pub mod models;
390
391#[cfg(any(feature = "client", feature = "server"))]
392pub(crate) mod header;
393
394#[derive(Debug)]
395pub enum ExtraInfoOk {
396    Yaml ( models::Yaml ),
397    List ( Vec<models::I2cBusList> ),
398    Read ( models::I2cBusRead ),
399    OK ( models::I2cBusOk ),
400}
401
402#[derive(Debug)]
403pub enum ExtraInfoError {
404    FileNotFound ( models::Error ),
405    Arg ( models::I2cBusArg ),
406    Error ( models::I2cBusError ),
407}
408
409pub trait OkOrOther {
410    fn ok_or_other(&self) -> Result<ExtraInfoOk, ExtraInfoError>;
411}
412
413impl OkOrOther for I2cBusApiResponse {
414    fn ok_or_other(&self) -> Result<ExtraInfoOk, ExtraInfoError> {
415        match *self {
416            I2cBusApiResponse::OK(ref x) => Ok(ExtraInfoOk::Yaml(x.clone().into())),
417            I2cBusApiResponse::FileNotFound(ref x) => Err(ExtraInfoError::FileNotFound(x.clone().into())),
418        }
419    }
420}
421
422impl OkOrOther for I2cBusListResponse {
423    fn ok_or_other(&self) -> Result<ExtraInfoOk, ExtraInfoError>{
424        match *self {
425            I2cBusListResponse::OK(ref x) => Ok(ExtraInfoOk::List(x.clone())),
426        }
427    }
428}
429
430impl OkOrOther for I2cBusReadByteResponse {
431    fn ok_or_other(&self) -> Result<ExtraInfoOk, ExtraInfoError>{
432        match *self {
433            I2cBusReadByteResponse::OK(ref x) => Ok(ExtraInfoOk::Read(x.clone())),
434            I2cBusReadByteResponse::BadRequest(ref x) => Err(ExtraInfoError::Arg(x.clone())),
435            I2cBusReadByteResponse::TransactionFailed(ref x) => Err(ExtraInfoError::Error(x.clone())),
436        }
437    }
438}
439
440impl OkOrOther for I2cBusReadBytesResponse {
441    fn ok_or_other(&self) -> Result<ExtraInfoOk, ExtraInfoError>{
442        match *self {
443            I2cBusReadBytesResponse::OK(ref x) => Ok(ExtraInfoOk::Read(x.clone())),
444            I2cBusReadBytesResponse::BadRequest(ref x) => Err(ExtraInfoError::Arg(x.clone())),
445            I2cBusReadBytesResponse::TransactionFailed(ref x) => Err(ExtraInfoError::Error(x.clone())),
446        }
447    }
448}
449
450impl OkOrOther for I2cBusReadRegResponse {
451    fn ok_or_other(&self) -> Result<ExtraInfoOk, ExtraInfoError>{
452        match *self {
453            I2cBusReadRegResponse::OK(ref x) => Ok(ExtraInfoOk::Read(x.clone())),
454            I2cBusReadRegResponse::BadRequest(ref x) => Err(ExtraInfoError::Arg(x.clone())),
455            I2cBusReadRegResponse::TransactionFailed(ref x) => Err(ExtraInfoError::Error(x.clone())),
456        }
457    }
458}
459
460impl OkOrOther for I2cBusWriteByteResponse {
461    fn ok_or_other(&self) -> Result<ExtraInfoOk, ExtraInfoError>{
462        match *self {
463            I2cBusWriteByteResponse::OK(ref x) => Ok(ExtraInfoOk::OK(x.clone())),
464            I2cBusWriteByteResponse::BadRequest(ref x) => Err(ExtraInfoError::Arg(x.clone())),
465            I2cBusWriteByteResponse::TransactionFailed(ref x) => Err(ExtraInfoError::Error(x.clone())),
466        }
467    }
468}
469
470impl OkOrOther for I2cBusWriteByteRegResponse {
471    fn ok_or_other(&self) -> Result<ExtraInfoOk, ExtraInfoError>{
472        match *self {
473            I2cBusWriteByteRegResponse::OK(ref x) => Ok(ExtraInfoOk::OK(x.clone())),
474            I2cBusWriteByteRegResponse::BadRequest(ref x) => Err(ExtraInfoError::Arg(x.clone())),
475            I2cBusWriteByteRegResponse::TransactionFailed(ref x) => Err(ExtraInfoError::Error(x.clone())),
476        }
477    }
478}
479
480impl OkOrOther for I2cBusWriteBytesResponse {
481    fn ok_or_other(&self) -> Result<ExtraInfoOk, ExtraInfoError>{
482        match *self {
483            I2cBusWriteBytesResponse::OK(ref x) => Ok(ExtraInfoOk::OK(x.clone())),
484            I2cBusWriteBytesResponse::BadRequest(ref x) => Err(ExtraInfoError::Arg(x.clone())),
485            I2cBusWriteBytesResponse::TransactionFailed(ref x) => Err(ExtraInfoError::Error(x.clone())),
486        }
487    }
488}
489
490impl OkOrOther for I2cBusWriteBytesRegResponse {
491    fn ok_or_other(&self) -> Result<ExtraInfoOk, ExtraInfoError>{
492        match *self {
493            I2cBusWriteBytesRegResponse::OK(ref x) => Ok(ExtraInfoOk::OK(x.clone())),
494            I2cBusWriteBytesRegResponse::BadRequest(ref x) => Err(ExtraInfoError::Arg(x.clone())),
495            I2cBusWriteBytesRegResponse::TransactionFailed(ref x) => Err(ExtraInfoError::Error(x.clone())),
496        }
497    }
498}