mirror of
https://github.com/controllerzz/carbus_lib.git
synced 2026-05-23 04:01:42 +03:00
isotp update
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
from .carbus_iface import CarBusCanTransport
|
||||
from .transport import IsoTpChannel
|
||||
from .api import open_isotp
|
||||
|
||||
__all__ = [
|
||||
"CarBusCanTransport",
|
||||
"IsoTpChannel",
|
||||
"open_isotp",
|
||||
]
|
||||
29
isotp_async/api.py
Normal file
29
isotp_async/api.py
Normal file
@@ -0,0 +1,29 @@
|
||||
# isotp_async/api.py
|
||||
from __future__ import annotations
|
||||
from dataclasses import dataclass
|
||||
from typing import Any
|
||||
|
||||
from isotp_async import IsoTpChannel, CarBusCanTransport
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class IsoTpEndpoint:
|
||||
tx_id: int
|
||||
rx_id: int
|
||||
channel: int = 1
|
||||
|
||||
|
||||
async def open_isotp(dev: Any, *, endpoint: IsoTpEndpoint | None = None,
|
||||
channel: int = 1, tx_id: int | None = None, rx_id: int | None = None,
|
||||
**channel_kwargs) -> IsoTpChannel:
|
||||
|
||||
if endpoint is not None:
|
||||
channel = endpoint.channel
|
||||
tx_id = endpoint.tx_id
|
||||
rx_id = endpoint.rx_id
|
||||
|
||||
if tx_id is None or rx_id is None:
|
||||
raise ValueError("tx_id and rx_id are required (or pass endpoint=...)")
|
||||
|
||||
can_tr = CarBusCanTransport(dev, channel=channel, rx_id=rx_id)
|
||||
return IsoTpChannel(can_tr, tx_id=tx_id, rx_id=rx_id, **channel_kwargs)
|
||||
Reference in New Issue
Block a user