From 7a7a222079dfd4f70fc50e154cc0c2c72da75144 Mon Sep 17 00:00:00 2001 From: Stefan Tatschner Date: Thu, 11 Jul 2024 17:22:44 +0200 Subject: [PATCH] wip --- fr_send.py | 3 +- src/gallia/transports/vector.py | 72 ++++++++++----------------------- 2 files changed, 23 insertions(+), 52 deletions(-) diff --git a/fr_send.py b/fr_send.py index 3cca22026..d2adce3a5 100644 --- a/fr_send.py +++ b/fr_send.py @@ -10,7 +10,8 @@ async def main() -> None: url = TargetURI("flexray-raw://?slot_id=59") tp = await RawFlexrayTransport.connect(url, None) - await tp.write(bytes.fromhex("30 7c 61 00 02 3e 00 00")) + data = b"12345678" + await tp.write(data) if __name__ == "__main__": diff --git a/src/gallia/transports/vector.py b/src/gallia/transports/vector.py index e83036d29..04d0987f3 100644 --- a/src/gallia/transports/vector.py +++ b/src/gallia/transports/vector.py @@ -150,59 +150,29 @@ async def write( timeout: float | None = None, tags: list[str] | None = None, ) -> int: - tagData = vector_ctypes.s_xl_fr_tag_data() - tx_frame_ev = vector_ctypes.XL_FR_TX_FRAME_EV( - 0, # flags - self.config.slot_id, # slotID - 0, # offset - 0, # repetition - len(data), # payloadLength - vector_ctypes.XL_FR_TX_MODE_SINGLE_SHOT, # txMode - 0, # incrementSize - 0, # incrementOffset - 0, # reserved0 - 0, # reserved1 - data, # data - ) - print(len(data)) - print(tx_frame_ev.data) - - tagData.frTxFrame = tx_frame_ev - - event = vector_ctypes.XLfrEvent( - 0, # size - vector_ctypes.XL_FR_TX_FRAME, # tag - 0, # channelIndex - 0, # userHandle - vector_ctypes.XL_FR_CHANNEL_A, # flagsChip - 0, # reserved - 0, # timestamp - 0, # timestampSync - tagData, - ) + event = vector_ctypes.XLfrEvent() + event.tag = vector_ctypes.XL_FR_TX_FRAME + event.flagsChip = vector_ctypes.XL_FR_CHANNEL_A + event.size = 0 # calculated inside XL-API DLL + event.userHandle = 0 + + event.tagData.frTxFrame.flags = 0 + event.tagData.frTxFrame.offset = 0 + event.tagData.frTxFrame.repetition = 1 + event.tagData.frTxFrame.payloadLength = len(data) + event.tagData.frTxFrame.slotID = self.config.slot_id + event.tagData.frTxFrame.txMode = vector_ctypes.XL_FR_TX_MODE_SINGLE_SHOT + event.tagData.frTxFrame.incrementOffset = 0 + event.tagData.frTxFrame.incrementSize = 0 + + if len(data) > vector_ctypes.XL_FR_MAX_DATA_LENGTH: + raise ValueError("frame exceeds max data length") + + data = data.ljust(vector_ctypes.XL_FR_MAX_DATA_LENGTH, b"\x00") + + event.tagData.frTxFrame.data = (ctypes.c_ubyte * vector_ctypes.XL_FR_MAX_DATA_LENGTH).from_buffer_copy(data) - # event.tag = vector_ctypes.XL_FR_TX_FRAME - # event.flagsChip = vector_ctypes.XL_FR_CHANNEL_A - # event.size = 0 # calculated inside XL-API DLL - # event.userHandle = 0 - # - # - # - # event.tagData.frTxFrame = vector_ctypes.XL_FR_TX_FRAME_EV() - # event.tagData.frTxFrame.flags = 0 - # event.tagData.frTxFrame.offset = 0 - # event.tagData.frTxFrame.repetition = 1 - # event.tagData.frTxFrame.payloadLength = len(data) - # event.tagData.frTxFrame.slotID = self.config.slot_id - # event.tagData.frTxFrame.txMode = vector_ctypes.XL_FR_TX_MODE_SINGLE_SHOT - # event.tagData.frTxFrame.incrementOffset = 0 - # event.tagData.frTxFrame.incrementSize = 0 - # - # if len(data) > vector_ctypes.XL_FR_MAX_DATA_LENGTH: - # raise ValueError("frame exceeds max data length") - # - # event.tagData.frTxFrame.data = data print(event.tagData.frTxFrame.data.hex()) print(len(event.tagData.frTxFrame.data)) print(event.tagData.frTxFrame.data.hex())