#![allow(dead_code)]
use crate::tools::intutils::{qrc_intutils_copy8, qrc_intutils_min};
use core::default::Default;
#[cfg(feature = "std")]
use crate::tools::intutils::qrc_intutils_clear8all;
#[cfg(feature = "std")]
use crate::tools::stringutils::qrc_stringutils_string_size;
#[cfg(feature = "std")]
use sysinfo::{Disks, System, get_current_pid};
pub const QRC_SYSUTILS_SYSTEM_NAME_MAX: usize = 256;
#[cfg(feature = "std")]
pub fn qrc_sysutils_computer_name(name: &mut [u8], maxlen: usize) -> usize {
qrc_intutils_clear8all(name);
let sys = System::host_name().unwrap();
qrc_intutils_copy8(
name,
sys.as_bytes(),
qrc_intutils_min(qrc_stringutils_string_size(&sys), maxlen),
);
return qrc_intutils_min(qrc_stringutils_string_size(&sys), maxlen);
}
#[cfg(feature = "no_std")]
pub fn qrc_sysutils_computer_name(name: &mut [u8], maxlen: usize) -> usize {
qrc_intutils_copy8(name, "UniQS".as_bytes(), qrc_intutils_min(5, maxlen));
return qrc_intutils_min(5, maxlen);
}
pub struct QrcSysutilsDriveSpaceState {
pub free: u64,
pub total: u64,
pub avail: u64,
}
impl Default for QrcSysutilsDriveSpaceState {
fn default() -> Self {
Self {
free: Default::default(),
total: Default::default(),
avail: Default::default(),
}
}
}
#[cfg(feature = "std")]
pub fn qrc_sysutils_drive_space(state: &mut QrcSysutilsDriveSpaceState) {
let disk = &Disks::new_with_refreshed_list()[0];
state.free = disk.total_space() - disk.available_space();
state.total = disk.total_space();
state.avail = disk.available_space();
}
#[cfg(feature = "no_std")]
pub fn qrc_sysutils_drive_space(state: &mut QrcSysutilsDriveSpaceState) {
state.free = 0;
state.total = 0;
state.avail = 0;
}
pub struct QrcSysutilsMemoryStatisticsState {
pub phystotal: u64,
pub physavail: u64,
pub virttotal: u64,
pub virtavail: u64,
}
impl Default for QrcSysutilsMemoryStatisticsState {
fn default() -> Self {
Self {
phystotal: Default::default(),
physavail: Default::default(),
virttotal: Default::default(),
virtavail: Default::default(),
}
}
}
#[cfg(feature = "std")]
pub fn qrc_sysutils_memory_statistics(state: &mut QrcSysutilsMemoryStatisticsState) {
let system = System::new_all();
let total_memory = system.total_memory();
let free_memory = system.free_memory();
let total_swap = system.total_swap();
let free_swap = system.free_swap();
state.phystotal = total_memory;
state.physavail = total_memory - free_memory;
state.virttotal = total_memory + total_swap;
state.virtavail = (total_memory - free_memory) + (total_swap - free_swap);
}
#[cfg(feature = "no_std")]
pub fn qrc_sysutils_memory_statistics(state: &mut QrcSysutilsMemoryStatisticsState) {
state.phystotal = 0;
state.physavail = 0;
state.virttotal = 0;
state.virtavail = 0;
}
#[cfg(feature = "std")]
pub fn qrc_sysutils_process_id() -> u32 {
return get_current_pid().unwrap().as_u32();
}
#[cfg(feature = "no_std")]
pub fn qrc_sysutils_process_id() -> u32 {
return 0;
}
#[cfg(feature = "std")]
pub fn qrc_sysutils_user_name(name: &mut [u8], maxlen: usize) -> usize {
qrc_intutils_clear8all(name);
let sys = whoami::username();
qrc_intutils_copy8(
name,
sys.as_bytes(),
qrc_intutils_min(qrc_stringutils_string_size(&sys), maxlen),
);
return qrc_intutils_min(qrc_stringutils_string_size(&sys), maxlen);
}
#[cfg(feature = "no_std")]
pub fn qrc_sysutils_user_name(name: &mut [u8], maxlen: usize) -> usize {
qrc_intutils_copy8(name, "UniQS-User".as_bytes(), qrc_intutils_min(10, maxlen));
return qrc_intutils_min(10, maxlen);
}
#[cfg(feature = "std")]
pub fn qrc_sysutils_system_uptime() -> u64 {
return System::uptime();
}
#[cfg(feature = "no_std")]
pub fn qrc_sysutils_system_uptime() -> u64 {
return 0;
}
#[cfg(feature = "std")]
pub fn qrc_sysutils_system_timestamp() -> u64 {
return System::boot_time();
}
#[cfg(feature = "no_std")]
pub fn qrc_sysutils_system_timestamp() -> u64 {
return 0;
}