test_smi_rs/
device_info.rs1use crate::generated::binding::*;
2use crate::types::Arch;
3use crate::util::c_char_slice_to_string;
4use crate::version::*;
5
6pub(crate) fn new_device_info(raw: FuriosaSmiDeviceInfo) -> DeviceInfo {
7 DeviceInfo { raw }
8}
9
10pub struct DeviceInfo {
12 raw: FuriosaSmiDeviceInfo,
13}
14
15impl DeviceInfo {
16 pub fn arch(&self) -> Arch {
18 Arch::from(self.raw.arch)
19 }
20
21 pub fn core_num(&self) -> u32 {
23 self.raw.core_num
24 }
25
26 pub fn numa_node(&self) -> u32 {
28 self.raw.numa_node
29 }
30
31 pub fn name(&self) -> String {
33 c_char_slice_to_string(&self.raw.name)
34 }
35
36 pub fn serial(&self) -> String {
38 c_char_slice_to_string(&self.raw.serial)
39 }
40
41 pub fn uuid(&self) -> String {
43 c_char_slice_to_string(&self.raw.uuid)
44 }
45
46 pub fn bdf(&self) -> String {
48 c_char_slice_to_string(&self.raw.bdf)
49 }
50
51 pub fn major(&self) -> u16 {
53 self.raw.major
54 }
55
56 pub fn minor(&self) -> u16 {
58 self.raw.minor
59 }
60
61 pub fn firmware_version(&self) -> VersionInfo {
63 new_version_info(self.raw.firmware_version)
64 }
65}
66
67pub(crate) fn default_device_info() -> FuriosaSmiDeviceInfo {
68 FuriosaSmiDeviceInfo {
69 index: 0,
70 arch: 0,
71 core_num: 0,
72 numa_node: 0,
73 name: [0; FURIOSA_SMI_MAX_CSTR_SIZE as usize],
74 serial: [0; FURIOSA_SMI_MAX_CSTR_SIZE as usize],
75 uuid: [0; FURIOSA_SMI_MAX_CSTR_SIZE as usize],
76 bdf: [0; FURIOSA_SMI_MAX_CSTR_SIZE as usize],
77 major: 0,
78 minor: 0,
79 firmware_version: default_version_info(),
80 pert_version: default_version_info(),
81 }
82}
83
84pub(crate) fn default_version_info() -> FuriosaSmiVersion {
85 FuriosaSmiVersion {
86 major: 0,
87 minor: 0,
88 patch: 0,
89 metadata: [0; FURIOSA_SMI_MAX_CSTR_SIZE as usize],
90 }
91}