use std::ffi::CString;
use crate::error::Result;
use crate::functions::{check, ffi_string};
use crate::sys;
pub fn version() -> Result<String> {
ffi_string(64, |buf, len| unsafe {
sys::icsneoc2_version_get(buf, len)
})
}
pub fn serial_num_to_string(num: u32) -> Result<String> {
ffi_string(64, |buf, len| unsafe {
sys::icsneoc2_serial_num_to_string(num, buf, len)
})
}
pub fn serial_string_to_num(serial: &str) -> Result<u32> {
let serial_c = CString::new(serial)?;
let mut num: u32 = 0;
let raw = serial_c.into_raw();
let result =
check(unsafe { sys::icsneoc2_serial_string_to_num(raw, serial.len(), &raw mut num) });
let _ = unsafe { CString::from_raw(raw) };
result?;
Ok(num)
}