experimental rust code to make sure it actually works.

David Rebbe 2024-12-12 22:46:19 -05:00
parent dae24a7370
commit 683391a2b9
2 changed files with 28 additions and 10 deletions

View File

@ -159,17 +159,12 @@ fn generate_bindings() {
.blocklist_file("stdint.h")
.blocklist_file("stdbool.h")
.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)
.derive_default(true)
.derive_debug(true)
.derive_partialeq(true)
.derive_copy(true)
.default_alias_style(bindgen::AliasVariation::NewType)
.parse_callbacks(Box::new(bindgen::CargoCallbacks::new()))
//.clang_args(clang_args())
.generate()

View File

@ -4,9 +4,33 @@
#![allow(non_snake_case)]
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
pub fn add(left: u64, right: u64) -> u64 {
left + right
pub unsafe fn find_devices() {
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)]
mod tests {
@ -14,7 +38,6 @@ mod tests {
#[test]
fn it_works() {
let result = add(2, 2);
assert_eq!(result, 4);
unsafe { find_devices(); }
}
}