ds4-rs 0.1.1

Read Dualshock4 controller data by using hidapi
Documentation
pub struct AnalogStickConfig {
    pub block_x: usize,
    pub block_y: usize
}

pub struct AnalogSticksConfig {
    pub left: AnalogStickConfig,
    pub right: AnalogStickConfig
}

pub const CONFIG:AnalogSticksConfig = AnalogSticksConfig {
    left: AnalogStickConfig {
        block_x: 0x01,
        block_y: 0x02
    },
    right: AnalogStickConfig {
        block_x: 0x03,
        block_y: 0x04
    }
};

#[derive(PartialEq, Debug)]
pub struct AnalogStick {
    pub x: u8,
    pub y: u8
}

#[derive(PartialEq, Debug)]
pub struct AnalogSticks {
    pub left: AnalogStick,
    pub right: AnalogStick
}

pub fn decode(buf: &[u8]) -> AnalogSticks {
    let left = decode_analog_stick(&CONFIG.left, buf);
    let right = decode_analog_stick(&CONFIG.right, buf);

    AnalogSticks {
        left,
        right
    }
}

fn decode_analog_stick(config: &AnalogStickConfig, buf: &[u8]) -> AnalogStick {
    AnalogStick {
        x: buf[config.block_x],
        y: buf[config.block_y]
    }
}