test_smi_rs/
types.rs

1#![allow(non_upper_case_globals)]
2
3use crate::generated::binding::*;
4use std::fmt;
5use std::fmt::Formatter;
6
7#[derive(Debug)]
8/// Represents a architecture type of device
9pub enum Arch {
10    /// Warboy architecture
11    Warboy = FuriosaSmiArch_FURIOSA_SMI_ARCH_WARBOY as isize,
12    /// RNGD architecture
13    Rngd = FuriosaSmiArch_FURIOSA_SMI_ARCH_RNGD as isize,
14    /// RNGD-Max architecture
15    RngdMax = FuriosaSmiArch_FURIOSA_SMI_ARCH_RNGD_MAX as isize,
16    /// RNGD-S architecture
17    RngdS = FuriosaSmiArch_FURIOSA_SMI_ARCH_RNGD_S as isize,
18}
19
20impl Arch {
21    pub(crate) fn from(raw: FuriosaSmiArch) -> Arch {
22        match raw {
23            FuriosaSmiArch_FURIOSA_SMI_ARCH_WARBOY => Arch::Warboy,
24            FuriosaSmiArch_FURIOSA_SMI_ARCH_RNGD => Arch::Rngd,
25            FuriosaSmiArch_FURIOSA_SMI_ARCH_RNGD_MAX => Arch::RngdMax,
26            FuriosaSmiArch_FURIOSA_SMI_ARCH_RNGD_S => Arch::RngdS,
27            _ => panic!("unknown arch"),
28        }
29    }
30}
31
32impl fmt::Display for Arch {
33    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
34        let s = match self {
35            Arch::Warboy => "warboy",
36            Arch::Rngd => "rngd",
37            Arch::RngdS => "rngd_s",
38            Arch::RngdMax => "rngd_max",
39        };
40        write!(f, "{}", s)
41    }
42}
43
44/// Represents a device link type
45pub enum LinkType {
46    /// Unknown link type
47    Unknown =
48        FuriosaSmiDeviceToDeviceLinkType_FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_UNKNOWN as isize,
49    /// Link type under same machine
50    Interconnect =
51        FuriosaSmiDeviceToDeviceLinkType_FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_INTERCONNECT
52            as isize,
53    /// Link type under same cpu
54    Cpu = FuriosaSmiDeviceToDeviceLinkType_FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_CPU as isize,
55    /// Link type under same switch
56    Bridge =
57        FuriosaSmiDeviceToDeviceLinkType_FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_BRIDGE as isize,
58    /// Link type under same socket
59    Noc = FuriosaSmiDeviceToDeviceLinkType_FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_NOC as isize,
60}
61
62impl LinkType {
63    pub(crate) fn from(raw: FuriosaSmiDeviceToDeviceLinkType) -> LinkType {
64        match raw {
65            FuriosaSmiDeviceToDeviceLinkType_FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_UNKNOWN => {
66                LinkType::Unknown
67            }
68            FuriosaSmiDeviceToDeviceLinkType_FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_INTERCONNECT => {
69                LinkType::Interconnect
70            }
71            FuriosaSmiDeviceToDeviceLinkType_FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_CPU => {
72                LinkType::Cpu
73            }
74            FuriosaSmiDeviceToDeviceLinkType_FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_BRIDGE => {
75                LinkType::Bridge
76            }
77            FuriosaSmiDeviceToDeviceLinkType_FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_NOC => {
78                LinkType::Noc
79            }
80            _ => panic!("unknown linktype"),
81        }
82    }
83}
84
85impl fmt::Display for LinkType {
86    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
87        let s = match self {
88            LinkType::Unknown => "Unknown",
89            LinkType::Interconnect => "Interconnect",
90            LinkType::Cpu => "Cpu",
91            LinkType::Bridge => "Bridge",
92            LinkType::Noc => "Noc",
93        };
94        write!(f, "{}", s)
95    }
96}