1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5pub mod types {
6 include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
7}
8
9pub mod ioctl {
10 use nix::*;
11 use crate::types::*;
12
13 ioctl_read!(control, 'U', 0, ctrltransfer);
22 ioctl_read!(bulk, 'U', 2, bulktransfer);
24 ioctl_read!(resetep, 'U', 3, ::std::os::raw::c_uint);
26 ioctl_read!(setinterface, 'U', 4, setinterface);
27 ioctl_read!(setconfiguration, 'U', 5, ::std::os::raw::c_uint);
28 ioctl_write_ptr!(getdriver, 'U', 8, getdriver);
29 ioctl_read!(submiturb, 'U', 10, urb);
30 ioctl_none!(discardurb, 'U', 11);
32 ioctl_write_ptr!(reapurb, 'U', 12, *mut ::std::os::raw::c_void);
33 ioctl_write_ptr!(reapurbndelay, 'U', 13, *mut ::std::os::raw::c_void);
35 ioctl_read!(discsignal, 'U', 14, disconnectsignal);
37 ioctl_read!(
39 claiminterface, 'U', 15, ::std::os::raw::c_uint
44 );
45 ioctl_read!(
46 releaseinterface, 'U', 16, ::std::os::raw::c_uint
48 );
49 ioctl_write_ptr!(connectinfo, 'U', 17, connectinfo);
50 ioctl_readwrite!(ioctl, 'U', 18, ioctl);
51 ioctl_read!(hub_portinfo, 'U', 19, hub_portinfo);
53 ioctl_none!(reset, 'U', 20);
54 ioctl_read!(clear_halt, 'U', 21, ::std::os::raw::c_uint);
55 pub unsafe fn disconnect(fd: ::std::os::raw::c_int, ifno: ::std::os::raw::c_int) -> Result<i32> {
57 let mut req = crate::types::ioctl {
58 ifno,
59 ioctl_code: request_code_none!('U', 22) as i32,
60 data: std::ptr::null_mut(),
61 };
62 ioctl(fd, &mut req)
63 }
64 pub unsafe fn connect(fd: ::std::os::raw::c_int, ifno: ::std::os::raw::c_int) -> Result<i32>{
65 let mut req = crate::types::ioctl {
66 ifno,
67 ioctl_code: request_code_none!('U', 23) as i32,
68 data: std::ptr::null_mut(),
69 };
70 ioctl(fd, &mut req)
71 }
72 ioctl_read!(claim_port, 'U', 24, ::std::os::raw::c_uint);
73 ioctl_read!(release_port, 'U', 25, ::std::os::raw::c_uint);
74 ioctl_read!(
75 get_capabilities, 'U', 26, __u32
78 );
79 ioctl_read!(disconnect_claim, 'U', 27, disconnect_claim);
80 ioctl_read!(alloc_streams, 'U', 28, streams);
81 ioctl_read!(free_streams, 'U', 29, streams);
82 ioctl_write_ptr!(drop_privileges, 'U', 30, __u32);
83}
84
85#[cfg(test)]
86mod tests {
87
88}