ds4_rs/dualshock4/
analog_sticks.rs1pub struct AnalogStickConfig {
2 pub block_x: usize,
3 pub block_y: usize
4}
5
6pub struct AnalogSticksConfig {
7 pub left: AnalogStickConfig,
8 pub right: AnalogStickConfig
9}
10
11pub const CONFIG:AnalogSticksConfig = AnalogSticksConfig {
12 left: AnalogStickConfig {
13 block_x: 0x01,
14 block_y: 0x02
15 },
16 right: AnalogStickConfig {
17 block_x: 0x03,
18 block_y: 0x04
19 }
20};
21
22#[derive(PartialEq, Debug)]
23pub struct AnalogStick {
24 pub x: u8,
25 pub y: u8
26}
27
28#[derive(PartialEq, Debug)]
29pub struct AnalogSticks {
30 pub left: AnalogStick,
31 pub right: AnalogStick
32}
33
34pub fn decode(buf: &[u8]) -> AnalogSticks {
35 let left = decode_analog_stick(&CONFIG.left, buf);
36 let right = decode_analog_stick(&CONFIG.right, buf);
37
38 AnalogSticks {
39 left,
40 right
41 }
42}
43
44fn decode_analog_stick(config: &AnalogStickConfig, buf: &[u8]) -> AnalogStick {
45 AnalogStick {
46 x: buf[config.block_x],
47 y: buf[config.block_y]
48 }
49}