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("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()
|
||||
|
|
|
|||
|
|
@ -4,17 +4,40 @@
|
|||
#![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 {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn it_works() {
|
||||
let result = add(2, 2);
|
||||
assert_eq!(result, 4);
|
||||
unsafe { find_devices(); }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue