use std::ptr::NonNull;
use crate::error::Result;
use crate::functions::check;
use crate::sys;
pub struct ScriptStatus {
ptr: NonNull<sys::icsneoc2_script_status_t>,
}
unsafe impl Send for ScriptStatus {}
impl Drop for ScriptStatus {
fn drop(&mut self) {
unsafe { sys::icsneoc2_script_status_free(self.ptr.as_ptr()) };
}
}
impl ScriptStatus {
pub(crate) fn new(ptr: NonNull<sys::icsneoc2_script_status_t>) -> Self {
Self { ptr }
}
pub fn is_running(&self) -> Result<bool> {
let mut value = false;
check(unsafe {
sys::icsneoc2_script_status_is_coremini_running(self.ptr.as_ptr(), &raw mut value)
})?;
Ok(value)
}
pub fn is_encrypted(&self) -> Result<bool> {
let mut value = false;
check(unsafe {
sys::icsneoc2_script_status_is_encrypted(self.ptr.as_ptr(), &raw mut value)
})?;
Ok(value)
}
pub fn sector_overflows(&self) -> Result<u32> {
let mut value: u32 = 0;
check(unsafe {
sys::icsneoc2_script_status_sector_overflows_get(self.ptr.as_ptr(), &raw mut value)
})?;
Ok(value)
}
pub fn remaining_sector_buffers(&self) -> Result<u32> {
let mut value: u32 = 0;
check(unsafe {
sys::icsneoc2_script_status_remaining_sector_buffers_get(
self.ptr.as_ptr(),
&raw mut value,
)
})?;
Ok(value)
}
pub fn last_sector(&self) -> Result<u32> {
let mut value: u32 = 0;
check(unsafe {
sys::icsneoc2_script_status_last_sector_get(self.ptr.as_ptr(), &raw mut value)
})?;
Ok(value)
}
pub fn read_bin_size(&self) -> Result<u32> {
let mut value: u32 = 0;
check(unsafe {
sys::icsneoc2_script_status_read_bin_size_get(self.ptr.as_ptr(), &raw mut value)
})?;
Ok(value)
}
pub fn min_sector(&self) -> Result<u32> {
let mut value: u32 = 0;
check(unsafe {
sys::icsneoc2_script_status_min_sector_get(self.ptr.as_ptr(), &raw mut value)
})?;
Ok(value)
}
pub fn max_sector(&self) -> Result<u32> {
let mut value: u32 = 0;
check(unsafe {
sys::icsneoc2_script_status_max_sector_get(self.ptr.as_ptr(), &raw mut value)
})?;
Ok(value)
}
pub fn current_sector(&self) -> Result<u32> {
let mut value: u32 = 0;
check(unsafe {
sys::icsneoc2_script_status_current_sector_get(self.ptr.as_ptr(), &raw mut value)
})?;
Ok(value)
}
pub fn create_time(&self) -> Result<u64> {
let mut value: u64 = 0;
check(unsafe {
sys::icsneoc2_script_status_coremini_create_time_get(self.ptr.as_ptr(), &raw mut value)
})?;
Ok(value)
}
pub fn file_checksum(&self) -> Result<u16> {
let mut value: u16 = 0;
check(unsafe {
sys::icsneoc2_script_status_file_checksum_get(self.ptr.as_ptr(), &raw mut value)
})?;
Ok(value)
}
pub fn coremini_version(&self) -> Result<u16> {
let mut value: u16 = 0;
check(unsafe {
sys::icsneoc2_script_status_coremini_version_get(self.ptr.as_ptr(), &raw mut value)
})?;
Ok(value)
}
pub fn header_size(&self) -> Result<u16> {
let mut value: u16 = 0;
check(unsafe {
sys::icsneoc2_script_status_coremini_header_size_get(self.ptr.as_ptr(), &raw mut value)
})?;
Ok(value)
}
pub fn diagnostic_error_code(&self) -> Result<u8> {
let mut value: u8 = 0;
check(unsafe {
sys::icsneoc2_script_status_diagnostic_error_code_get(self.ptr.as_ptr(), &raw mut value)
})?;
Ok(value)
}
pub fn diagnostic_error_code_count(&self) -> Result<u8> {
let mut value: u8 = 0;
check(unsafe {
sys::icsneoc2_script_status_diagnostic_error_code_count_get(
self.ptr.as_ptr(),
&raw mut value,
)
})?;
Ok(value)
}
pub fn max_coremini_size_kb(&self) -> Result<u16> {
let mut value: u16 = 0;
check(unsafe {
sys::icsneoc2_script_status_max_coremini_size_kb_get(self.ptr.as_ptr(), &raw mut value)
})?;
Ok(value)
}
}