import ctypes as ct
from .busparams import BusParamsTq
class CanBusParamsTq(ct.Structure):
"""Holds bus parameters expressed as number of time quanta
Attributes:
tq (`int`): Total bit length, in number of time quanta.
phase1 (`int`): Phase segment 1, in number of time quanta.
phase2 (`int`): Phase segment 2, in number of time quanta.
sjw (`int`): Sync Jump Width, in number of time quanta.
prop (`int`): Propagation segment, in number of time quanta.
prescaler (`int`): Prescaler, should typically be 1 or 2.
.. versionadded:: 1.16
"""
@classmethod
def _frombusparamstq(cls, busparamstq):
return cls(
tq=busparamstq.tq,
phase1=busparamstq.phase1,
phase2=busparamstq.phase2,
sjw=busparamstq.sjw,
prescaler=busparamstq.prescaler,
prop=busparamstq.prop,
)
_fields_ = [
('tq', ct.c_int),
('phase1', ct.c_int),
('phase2', ct.c_int),
('sjw', ct.c_int),
('prop', ct.c_int),
('prescaler', ct.c_int),
]
def _tobusparamstq(self):
return BusParamsTq(
tq=self.tq,
phase1=self.phase1,
phase2=self.phase2,
sjw=self.sjw,
prescaler=self.prescaler,
prop=self.prop,
)
def _asdict(self):
return {
'tq': self.tq,
'phase1': self.phase1,
'phase2': self.phase2,
'sjw': self.sjw,
'prescaler': self.prescaler,
'prop': self.prop,
}
[docs]class CanBusStatistics(ct.Structure):
"""Result from reading bus statistics using `canlib.canlib.Channel.get_bus_statistics`.
Attributes:
busLoad (`int`): The bus load, expressed as an integer in the interval
0 - 10000 representing 0.00% - 100.00% bus load.
errFrame (`int`): Number of error frames.
extData (`int`): Number of received extended (29-bit identifiers) data frames.
extRemote (`int`): Number of received extended (29-bit identifiers) remote frames.
overruns (`int`): The number of overruns detected by the hardware, firmware or driver.
stdData (`int`): Number of received standard (11-bit identifiers) data frames.
stdRemote (`int`): Number of received standard (11-bit identifiers) remote frames.
"""
_fields_ = [
('stdData', ct.c_ulong),
('stdRemote', ct.c_ulong),
('extData', ct.c_ulong),
('extRemote', ct.c_ulong),
('errFrame', ct.c_ulong),
('busLoad', ct.c_ulong),
('overruns', ct.c_ulong),
]
class CanBusParamLimits(ct.Structure):
_fields_ = [
('version', ct.c_int), # Version of struct, currently 2
('arbitration_min', CanBusParamsTq),
('arbitration_max', CanBusParamsTq),
('data_min', CanBusParamsTq),
('data_max', CanBusParamsTq),
]
class kvTimeDomainData(ct.Structure):
_fields_ = [
('nMagiSyncGroups', ct.c_int),
('nMagiSyncedMembers', ct.c_int),
('nNonMagiSyncCards', ct.c_int),
('nNonMagiSyncedMembers', ct.c_int),
]