hidraw_sys/
lib.rs

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}