1#![allow(clippy::missing_safety_doc, non_camel_case_types, non_snake_case)]
2#![cfg_attr(docsrs, feature(doc_cfg))]
3#![cfg(any(target_os = "android", target_os = "linux"))]
4#![no_std]
5
6extern crate ioctl_macro as ioctl;
7
8use self::__private::{__s16, __u32, __u8};
9#[cfg(feature = "wrappers")]
10#[cfg_attr(docsrs, doc(cfg(feature = "wrappers")))]
11pub use self::wrappers::*;
12
13#[doc(hidden)]
14pub mod __private {
15 pub use ioctl::{_IOC, _IOC_READ, _IOC_WRITE, _IOR};
16
17 pub type __s16 = core::ffi::c_short;
18 pub type __u8 = core::ffi::c_uchar;
19 pub type __u32 = core::ffi::c_uint;
20}
21#[cfg(feature = "wrappers")]
22#[cfg_attr(docsrs, doc(cfg(feature = "wrappers")))]
23mod wrappers;
24
25macro_rules! HID_MAX_DESCRIPTOR_SIZE {
26 () => {
27 4096
28 };
29}
30
31#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
32#[derive(Clone, Copy)]
33#[repr(C)]
34pub struct hidraw_report_descriptor {
35 pub size: __u32,
36 pub value: [__u8; HID_MAX_DESCRIPTOR_SIZE!()],
37}
38
39#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
40#[derive(Clone, Copy)]
41#[repr(C)]
42pub struct hidraw_devinfo {
43 pub bustype: __u32,
44 pub vendor: __s16,
45 pub product: __s16,
46}
47
48#[macro_export]
49macro_rules! HIDIOCGRDESCSIZE {
50 () => {
51 $crate::__private::_IOR!(b'H', 0x01, core::ffi::c_int)
52 };
53}
54#[macro_export]
55macro_rules! HIDIOCGRDESC {
56 () => {
57 $crate::__private::_IOR!(b'H', 0x02, $crate::hidraw_report_descriptor)
58 };
59}
60#[macro_export]
61macro_rules! HIDIOCGRAWINFO {
62 () => {
63 $crate::__private::_IOR!(b'H', 0x03, $crate::hidraw_devinfo)
64 };
65}
66#[macro_export]
67macro_rules! HIDIOCGRAWNAME {
68 ($len:expr) => {
69 $crate::__private::_IOC!($crate::__private::_IOC_READ!(), b'H', 0x04, $len)
70 };
71}
72#[macro_export]
73macro_rules! HIDIOCGRAWPHYS {
74 ($len:expr) => {
75 $crate::__private::_IOC!($crate::__private::_IOC_READ!(), b'H', 0x05, $len)
76 };
77}
78#[macro_export]
79macro_rules! HIDIOCSFEATURE {
80 ($len:expr) => {
81 $crate::__private::_IOC!(
82 $crate::__private::_IOC_WRITE!() | $crate::__private::_IOC_READ!(),
83 b'H',
84 0x06,
85 $len
86 )
87 };
88}
89#[macro_export]
90macro_rules! HIDIOCGFEATURE {
91 ($len:expr) => {
92 $crate::__private::_IOC!(
93 $crate::__private::_IOC_WRITE!() | $crate::__private::_IOC_READ!(),
94 b'H',
95 0x07,
96 $len
97 )
98 };
99}
100#[macro_export]
101macro_rules! HIDIOCGRAWUNIQ {
102 ($len:expr) => {
103 $crate::__private::_IOC!($crate::__private::_IOC_READ!(), b'H', 0x08, $len)
104 };
105}
106#[macro_export]
107macro_rules! HIDIOCSINPUT {
108 ($len:expr) => {
109 $crate::__private::_IOC!(
110 $crate::__private::_IOC_WRITE!() | $crate::__private::_IOC_READ!(),
111 b'H',
112 0x09,
113 $len
114 )
115 };
116}
117#[macro_export]
118macro_rules! HIDIOCGINPUT {
119 ($len:expr) => {
120 $crate::__private::_IOC!(
121 $crate::__private::_IOC_WRITE!() | $crate::__private::_IOC_READ!(),
122 b'H',
123 0x0A,
124 $len
125 )
126 };
127}
128#[macro_export]
129macro_rules! HIDIOCSOUTPUT {
130 ($len:expr) => {
131 $crate::__private::_IOC!(
132 $crate::__private::_IOC_WRITE!() | $crate::__private::_IOC_READ!(),
133 b'H',
134 0x0B,
135 $len
136 )
137 };
138}
139#[macro_export]
140macro_rules! HIDIOCGOUTPUT {
141 ($len:expr) => {
142 $crate::__private::_IOC!(
143 $crate::__private::_IOC_WRITE!() | $crate::__private::_IOC_READ!(),
144 b'H',
145 0x0C,
146 $len
147 )
148 };
149}
150
151#[macro_export]
152macro_rules! HIDRAW_FIRST_MINOR {
153 () => {
154 0
155 };
156}
157#[macro_export]
158macro_rules! HIDRAW_MAX_DEVICES {
159 () => {
160 64
161 };
162}
163#[macro_export]
164macro_rules! HIDRAW_BUFFER_SIZE {
165 () => {
166 64
167 };
168}