Hide navigation sidebar
Hide table of contents sidebar
Back to top
Toggle table of contents sidebar

# Source code for can.interfaces.kvaser.structures

    """
    Contains Python equivalents of the structures in CANLIB's canlib.h,
    with some supporting functionality specific to Python.
    """

    import ctypes

    class BusStatistics(ctypes.Structure):
        """This structure is used with the method
        :meth:`~can.interfaces.kvaser.canlib.KvaserBus.get_stats`.
        """

        _fields_ = [
            ("m_stdData", ctypes.c_ulong),
            ("m_stdRemote", ctypes.c_ulong),
            ("m_extData", ctypes.c_ulong),
            ("m_extRemote", ctypes.c_ulong),
            ("m_errFrame", ctypes.c_ulong),
            ("m_busLoad", ctypes.c_ulong),
            ("m_overruns", ctypes.c_ulong),
        ]

        def __str__(self):
            return (
                "std_data: {}, std_remote: {}, ext_data: {}, ext_remote: {}, "
                "err_frame: {}, bus_load: {:.1f}%, overruns: {}"
            ).format(
                self.std_data,
                self.std_remote,
                self.ext_data,
                self.ext_remote,
                self.err_frame,
                self.bus_load / 100.0,
                self.overruns,
            )

        @property
        def std_data(self):
            """Number of received standard (11-bit identifiers) data frames."""
            return self.m_stdData

        @property
        def std_remote(self):
            """Number of received standard (11-bit identifiers) remote frames."""
            return self.m_stdRemote

        @property
        def ext_data(self):
            """Number of received extended (29-bit identifiers) data frames."""
            return self.m_extData

        @property
        def ext_remote(self):
            """Number of received extended (29-bit identifiers) remote frames."""
            return self.m_extRemote

        @property
        def err_frame(self):
            """Number of error frames."""
            return self.m_errFrame

        @property
        def bus_load(self):
            """The bus load, expressed as an integer in the interval 0 - 10000 representing 0.00% - 100.00% bus load."""
            return self.m_busLoad

        @property
        def overruns(self):
            """Number of overruns."""
            return self.m_overruns