#![allow(unused_qualifications)]
#![allow(missing_debug_implementations)]
#![allow(clippy::use_self)]
#![allow(clippy::expl_impl_clone_on_copy)]
#[cxx::bridge]
pub mod ffi {
#[repr(u8)]
#[derive(Debug, Clone)]
pub enum GamepadType {
XBox360 = 0,
PS4,
}
pub struct XINPUT_GAMEPAD_SHARED {
wButtons: u16,
bLeftTrigger: u8,
bRightTrigger: u8,
sThumbLX: i16,
sThumbLY: i16,
sThumbRX: i16,
sThumbRY: i16,
}
pub struct XINPUT_STATE_SHARED {
dwPacketNumber: u32,
gamepad: XINPUT_GAMEPAD_SHARED,
}
unsafe extern "C++" {
include!("wolf_system/src/os/cxx/vigem_client/vigem_client.hpp");
pub type vigem_client;
#[must_use]
pub fn reset_driver(self: &vigem_client) -> bool;
#[must_use]
pub fn add_gamepad_controller(self: &vigem_client, pGameType: &GamepadType) -> i32;
#[must_use]
pub fn send_xbox360_input(
self: &vigem_client,
pGamePadIndex: &u32,
pXInput: &XINPUT_STATE_SHARED,
) -> bool;
#[must_use]
pub fn get_number_of_gamepads(self: &vigem_client) -> u32;
#[must_use]
pub fn get_last_error(self: &vigem_client) -> String;
#[must_use]
pub fn New() -> UniquePtr<vigem_client>;
}
}
#[tokio::main]
#[test]
async fn tests() {
let vigem = ffi::New();
let _success = vigem.add_gamepad_controller(&ffi::GamepadType::XBox360);
println!("{}", vigem.get_last_error());
}