1use generated;
21
22#[inline] pub fn lirc_space(value: u32) -> u32 { (value & generated::LIRC_VALUE_MASK) | generated::LIRC_MODE2_SPACE }
23#[inline] pub fn lirc_pulse(value: u32) -> u32 { (value & generated::LIRC_VALUE_MASK) | generated::LIRC_MODE2_PULSE }
24#[inline] pub fn lirc_frequency(value: u32) -> u32 { (value & generated::LIRC_VALUE_MASK) | generated::LIRC_MODE2_FREQUENCY }
25#[inline] pub fn lirc_timeout(value: u32) -> u32 { (value & generated::LIRC_VALUE_MASK) | generated::LIRC_MODE2_TIMEOUT }
26
27#[inline] pub fn lirc_value(value: u32) -> u32 { value & generated::LIRC_VALUE_MASK }
28#[inline] pub fn lirc_mode2(value: u32) -> u32 { value & generated::LIRC_MODE2_MASK }
29
30#[inline] pub fn lirc_is_space(value: u32) -> bool { lirc_mode2(value) == generated::LIRC_MODE2_SPACE }
31#[inline] pub fn lirc_is_pulse(value: u32) -> bool { lirc_mode2(value) == generated::LIRC_MODE2_PULSE }
32#[inline] pub fn lirc_is_frequency(value: u32) -> bool { lirc_mode2(value) == generated::LIRC_MODE2_FREQUENCY }
33#[inline] pub fn lirc_is_timeout(value: u32) -> bool { lirc_mode2(value) == generated::LIRC_MODE2_TIMEOUT }
34
35#[inline] pub fn lirc_mode2send(value: u32) -> u32 { value }
36#[inline] pub fn lirc_send2mode(value: u32) -> u32 { value }
37#[inline] pub fn lirc_mode2rec(value: u32) -> u32 { value << 16 }
38#[inline] pub fn lirc_rec2mode(value: u32) -> u32 { value >> 16 }
39
40pub const LIRC_CAN_SEND_RAW: u32 = generated::LIRC_MODE_RAW;
45pub const LIRC_CAN_SEND_PULSE: u32 = generated::LIRC_MODE_PULSE;
46pub const LIRC_CAN_SEND_MODE2: u32 = generated::LIRC_MODE_MODE2;
47pub const LIRC_CAN_SEND_LIRCCODE: u32 = generated::LIRC_MODE_LIRCCODE;
48
49pub const LIRC_CAN_REC_RAW: u32 = generated::LIRC_MODE_RAW << 16;
55pub const LIRC_CAN_REC_PULSE: u32 = generated::LIRC_MODE_PULSE << 16;
56pub const LIRC_CAN_REC_MODE2: u32 = generated::LIRC_MODE_MODE2 << 16;
57pub const LIRC_CAN_REC_SCANCODE: u32 = generated::LIRC_MODE_SCANCODE << 16;
58pub const LIRC_CAN_REC_LIRCCODE: u32 = generated::LIRC_MODE_LIRCCODE << 16;
59
60pub const LIRC_CAN_REC_MASK: u32 = generated::LIRC_CAN_SEND_MASK << 16;
62
63#[inline] pub fn lirc_can_send(value: u32) -> u32 { value & generated::LIRC_CAN_SEND_MASK }
64#[inline] pub fn lirc_can_rec(value: u32) -> u32 { value & LIRC_CAN_REC_MASK }
65
66const LIRC_IOCTL_MAGIC: u8 = b'i';
67ioctl_read!(ioctl_lirc_get_features, LIRC_IOCTL_MAGIC, 0x00, generated::__u32);
68ioctl_read!(ioctl_lirc_get_send_mode, LIRC_IOCTL_MAGIC, 0x01, generated::__u32);
69ioctl_read!(ioctl_lirc_get_rec_mode, LIRC_IOCTL_MAGIC, 0x02, generated::__u32);
70ioctl_read!(ioctl_lirc_get_rec_resolution, LIRC_IOCTL_MAGIC, 0x07, generated::__u32);
71ioctl_read!(ioctl_lirc_get_min_timeout, LIRC_IOCTL_MAGIC, 0x08, generated::__u32);
72ioctl_read!(ioctl_lirc_get_max_timeout, LIRC_IOCTL_MAGIC, 0x09, generated::__u32);
73ioctl_read!(ioctl_lirc_get_length, LIRC_IOCTL_MAGIC, 0x0f, generated::__u32);
74ioctl_write_ptr!(ioctl_lirc_set_send_mode, LIRC_IOCTL_MAGIC, 0x11, generated::__u32);
75ioctl_write_ptr!(ioctl_lirc_set_rec_mode, LIRC_IOCTL_MAGIC, 0x12, generated::__u32);
76ioctl_write_ptr!(ioctl_lirc_set_send_carrier, LIRC_IOCTL_MAGIC, 0x13, generated::__u32);
77ioctl_write_ptr!(ioctl_lirc_set_rec_carrier, LIRC_IOCTL_MAGIC, 0x14, generated::__u32);
78ioctl_write_ptr!(ioctl_lirc_set_send_duty_cycle, LIRC_IOCTL_MAGIC, 0x15, generated::__u32);
79ioctl_write_ptr!(ioctl_lirc_set_transmitter_mask, LIRC_IOCTL_MAGIC, 0x17, generated::__u32);
80ioctl_write_ptr!(ioctl_lirc_set_rec_timeout, LIRC_IOCTL_MAGIC, 0x18, generated::__u32);
81ioctl_write_ptr!(ioctl_lirc_set_rec_timeout_reports, LIRC_IOCTL_MAGIC, 0x19, generated::__u32);
82ioctl_write_ptr!(ioctl_lirc_set_measure_carrier_mode, LIRC_IOCTL_MAGIC, 0x1d, generated::__u32);
83ioctl_write_ptr!(ioctl_lirc_set_rec_carrier_range, LIRC_IOCTL_MAGIC, 0x1f, generated::__u32);
84ioctl_write_ptr!(ioctl_lirc_set_wideband_receiver, LIRC_IOCTL_MAGIC, 0x23, generated::__u32);
85ioctl_read!(ioctl_lirc_get_rec_timeout, LIRC_IOCTL_MAGIC, 0x24, generated::__u32);
86
87
88#[cfg(test)]
89mod test {
90 use super::*;
91
92 quickcheck!{ fn prop_lirc_space(x: u32) -> bool { lirc_space(x) == x } }
95 quickcheck!{ fn prop_lirc_pulse(x: u32) -> bool { lirc_pulse(x) == x | generated::LIRC_MODE2_PULSE } }
96 quickcheck!{ fn prop_lirc_frequency(x: u32) -> bool { lirc_frequency(x) == x | generated::LIRC_MODE2_FREQUENCY } }
97 quickcheck!{ fn prop_lirc_timeout(x: u32) -> bool { lirc_timeout(x) == x | generated::LIRC_MODE2_TIMEOUT } }
98
99 quickcheck!{ fn prop_lirc_value(x: u32) -> bool { lirc_value(x) == x & generated::LIRC_VALUE_MASK} }
100 quickcheck!{ fn prop_lirc_mode2(x: u32) -> bool { lirc_mode2(x) == x & generated::LIRC_MODE2_MASK} }
101
102 quickcheck!{ fn prop_lirc_is_space(x: u32) -> bool { lirc_is_space((x & generated::LIRC_MODE2_MASK) | generated::LIRC_MODE2_SPACE) } }
103 quickcheck!{ fn prop_lirc_is_pulse(x: u32) -> bool { lirc_is_pulse((x & generated::LIRC_MODE2_MASK) | generated::LIRC_MODE2_PULSE) } }
104 quickcheck!{ fn prop_lirc_is_frequency(x: u32) -> bool { lirc_is_frequency((x & generated::LIRC_MODE2_MASK) | generated::LIRC_MODE2_FREQUENCY) } }
105 quickcheck!{ fn prop_lirc_is_timeout(x: u32) -> bool { lirc_is_timeout((x & generated::LIRC_MODE2_MASK) | generated::LIRC_MODE2_TIMEOUT) } }
106
107 quickcheck!{ fn prop_lirc_mode2send(x: u32) -> bool { lirc_mode2send(x) == x } }
108 quickcheck!{ fn prop_lirc_send2mode(x: u32) -> bool { lirc_send2mode(x) == x } }
109 quickcheck!{ fn prop_lirc_mode2rec(x: u32) -> bool { lirc_mode2rec(x) == x << 16 } }
110 quickcheck!{ fn prop_lirc_rec2mode(x: u32) -> bool { lirc_rec2mode(x) == x >> 16 } }
111
112 quickcheck!{ fn prop_lirc_can_send(x: u32) -> bool { lirc_can_send(x) == x & generated::LIRC_CAN_SEND_MASK} }
113 quickcheck!{ fn prop_lirc_can_rec(x: u32) -> bool { lirc_can_rec(x) == x & LIRC_CAN_REC_MASK} }
114}