experimental rust code to make sure it actually works.
parent
dae24a7370
commit
683391a2b9
|
|
@ -159,17 +159,12 @@ fn generate_bindings() {
|
||||||
.blocklist_file("stdint.h")
|
.blocklist_file("stdint.h")
|
||||||
.blocklist_file("stdbool.h")
|
.blocklist_file("stdbool.h")
|
||||||
.use_core()
|
.use_core()
|
||||||
// .allowlist_function("icsneo_.*")
|
|
||||||
// .allowlist_type("neodevice_t")
|
|
||||||
// .allowlist_type("neonetid_t")
|
|
||||||
// .allowlist_type("neomessage_.*")
|
|
||||||
// .allowlist_type("neoversion_t")
|
|
||||||
// .allowlist_type("neoevent_t")
|
|
||||||
.formatter(bindgen::Formatter::Rustfmt)
|
.formatter(bindgen::Formatter::Rustfmt)
|
||||||
.derive_default(true)
|
.derive_default(true)
|
||||||
.derive_debug(true)
|
.derive_debug(true)
|
||||||
.derive_partialeq(true)
|
.derive_partialeq(true)
|
||||||
.derive_copy(true)
|
.derive_copy(true)
|
||||||
|
.default_alias_style(bindgen::AliasVariation::NewType)
|
||||||
.parse_callbacks(Box::new(bindgen::CargoCallbacks::new()))
|
.parse_callbacks(Box::new(bindgen::CargoCallbacks::new()))
|
||||||
//.clang_args(clang_args())
|
//.clang_args(clang_args())
|
||||||
.generate()
|
.generate()
|
||||||
|
|
|
||||||
|
|
@ -4,17 +4,40 @@
|
||||||
#![allow(non_snake_case)]
|
#![allow(non_snake_case)]
|
||||||
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
|
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
|
||||||
|
|
||||||
pub fn add(left: u64, right: u64) -> u64 {
|
pub unsafe fn find_devices() {
|
||||||
left + right
|
let mut devices: [*mut icsneo_device_t; 255] = [std::ptr::null_mut(); 255];
|
||||||
|
let mut device_count: u32 = 255;
|
||||||
|
let res = icsneo_device_find_all(devices.as_mut_ptr(), &mut device_count as *mut u32, std::ptr::null_mut());
|
||||||
|
|
||||||
|
if res.0 != _icsneo_error_t::icsneo_error_success as u32 {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
println!("Found {} devices", device_count);
|
||||||
|
for i in 0..device_count as usize {
|
||||||
|
let device = devices[i];
|
||||||
|
let res = icsneo_device_is_valid(device);
|
||||||
|
if res.0 != _icsneo_error_t::icsneo_error_success as u32 {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut description_length: u32 = 255;
|
||||||
|
let mut description: [::core::ffi::c_char; 255] = [0i8; 255];
|
||||||
|
let res = icsneo_device_get_description(device, description.as_mut_ptr(), &mut description_length);
|
||||||
|
if res.0 != _icsneo_error_t::icsneo_error_success as u32 {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let description_str = std::ffi::CStr::from_ptr(description.as_ptr()).to_str().unwrap().to_string();
|
||||||
|
println!("\t{}: {}", i, description_str);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn it_works() {
|
fn it_works() {
|
||||||
let result = add(2, 2);
|
unsafe { find_devices(); }
|
||||||
assert_eq!(result, 4);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue