1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
use crate::generated::binding::FuriosaSmiDeviceErrorInfo;

pub(crate) fn new_device_error_info(raw: FuriosaSmiDeviceErrorInfo) -> DeviceErrorInfo {
    DeviceErrorInfo { raw }
}

/// A struct for device error information
pub struct DeviceErrorInfo {
    raw: FuriosaSmiDeviceErrorInfo,
}

impl DeviceErrorInfo {
    /// Get a axi post error count
    pub fn axi_post_error_count(&self) -> u32 {
        self.raw.axi_post_error_count
    }

    /// Get a axi fetch error count
    pub fn axi_fetch_error_count(&self) -> u32 {
        self.raw.axi_fetch_error_count
    }

    /// Get a axi discard error count
    pub fn axi_discard_error_count(&self) -> u32 {
        self.raw.axi_discard_error_count
    }

    /// Get a axi doorbell error count
    pub fn axi_doorbell_error_count(&self) -> u32 {
        self.raw.axi_doorbell_error_count
    }

    /// Get a pcie post error count
    pub fn pcie_post_error_count(&self) -> u32 {
        self.raw.pcie_post_error_count
    }

    /// Get a pcie fetch error count
    pub fn pcie_fetch_error_count(&self) -> u32 {
        self.raw.pcie_fetch_error_count
    }

    /// Get a pcie discard error count
    pub fn pcie_discard_error_count(&self) -> u32 {
        self.raw.pcie_discard_error_count
    }

    /// Get a pcie doorbell error count
    pub fn pcie_doorbell_error_count(&self) -> u32 {
        self.raw.pcie_doorbell_error_count
    }

    /// Get a device error count
    pub fn device_error_count(&self) -> u32 {
        self.raw.device_error_count
    }
}

pub(crate) fn default_device_error_info() -> FuriosaSmiDeviceErrorInfo {
    FuriosaSmiDeviceErrorInfo {
        axi_post_error_count: 0,
        axi_fetch_error_count: 0,
        axi_discard_error_count: 0,
        axi_doorbell_error_count: 0,
        pcie_post_error_count: 0,
        pcie_fetch_error_count: 0,
        pcie_discard_error_count: 0,
        pcie_doorbell_error_count: 0,
        device_error_count: 0,
    }
}