pyxcp 0.22.26__cp311-cp311-win_amd64.whl → 0.22.28__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pyxcp might be problematic. Click here for more details.

pyxcp/__init__.py CHANGED
@@ -17,4 +17,4 @@ tb_install(show_locals=True, max_frames=3) # Install custom exception handler.
17
17
 
18
18
  # if you update this manually, do not forget to update
19
19
  # .bumpversion.cfg and pyproject.toml.
20
- __version__ = "0.22.26"
20
+ __version__ = "0.22.28"
pyxcp/checksum.py CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  .. [1] XCP Specification, BUILD_CHECKSUM service.
5
5
  """
6
+
6
7
  import enum
7
8
  import struct
8
9
  import zlib
@@ -641,7 +642,15 @@ def adder(modulus):
641
642
  return add
642
643
 
643
644
 
644
- def wordSum(modulus, step):
645
+ def pad_to_word_size(frame: bytes, word_size: int, padding_value=b"\x00") -> bytes:
646
+ padding_bytes = word_size - (len(frame) % word_size)
647
+ if padding_bytes == word_size:
648
+ return frame
649
+ else:
650
+ return frame + (padding_value * padding_bytes)
651
+
652
+
653
+ def wordSum(modulus: int, step: int) -> int:
645
654
  """Factory function for (double-)word modulus sums
646
655
 
647
656
  Parameters
@@ -657,13 +666,14 @@ def wordSum(modulus, step):
657
666
  summation function
658
667
  """
659
668
 
660
- def add(frame):
669
+ def add(frame: bytes):
661
670
  if step == 2:
662
671
  mask = "<H"
663
672
  elif step == 4:
664
673
  mask = "<I"
665
674
  else:
666
675
  raise NotImplementedError("Only WORDs or DWORDs are supported.")
676
+ frame = pad_to_word_size(frame, step)
667
677
  x = [struct.unpack(mask, frame[x : x + step])[0] for x in range(0, len(frame), step)]
668
678
  return sum(x) % modulus
669
679
 
@@ -680,7 +690,7 @@ CRC16 = Crc16(CRC16, 0x0000, 0x0000, True, True)
680
690
  CRC16_CCITT = Crc16(CRC16_CCITT, 0xFFFF, 0x0000, False, False)
681
691
 
682
692
 
683
- def CRC32(x):
693
+ def CRC32(x) -> int:
684
694
  return zlib.crc32(x) & 0xFFFFFFFF
685
695
 
686
696
 
@@ -703,7 +713,7 @@ ALGO = {
703
713
  }
704
714
 
705
715
 
706
- def check(frame, algo):
716
+ def check(frame: bytes, algo: str):
707
717
  """Calculate checksum using given algorithm
708
718
 
709
719
  Parameters
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
pyxcp/examples/run_daq.py CHANGED
@@ -1,9 +1,11 @@
1
1
  #!/usr/bin/env python
2
2
 
3
+ import sys
3
4
  import time
4
5
 
5
6
  from pyxcp.cmdline import ArgumentParser
6
7
  from pyxcp.daq_stim import DaqList, DaqRecorder, DaqToCsv # noqa: F401
8
+ from pyxcp.types import XcpTimeoutError
7
9
 
8
10
 
9
11
  ap = ArgumentParser(description="DAQ test")
@@ -131,7 +133,12 @@ daq_parser = DaqToCsv(DAQ_LISTS) # Record to CSV file(s).
131
133
  # daq_parser = DaqRecorder(DAQ_LISTS, "run_daq", 2) # Record to ".xmraw" file.
132
134
 
133
135
  with ap.run(policy=daq_parser) as x:
134
- x.connect()
136
+ try:
137
+ x.connect()
138
+ except XcpTimeoutError:
139
+ print("TO")
140
+ sys.exit(2)
141
+
135
142
  if x.slaveProperties.optionalCommMode:
136
143
  x.getCommModeInfo()
137
144
 
Binary file
Binary file
Binary file
Binary file
pyxcp/scripts/xcp_info.py CHANGED
@@ -9,6 +9,44 @@ from pyxcp.cmdline import ArgumentParser
9
9
  from pyxcp.types import TryCommandResult
10
10
 
11
11
 
12
+ def getPagInfo(x):
13
+ result = {}
14
+ if x.slaveProperties.supportsCalpag:
15
+ status, pag = x.try_command(x.getPagProcessorInfo)
16
+ if status == TryCommandResult.OK:
17
+ result["maxSegments"] = pag.maxSegments
18
+ result["pagProperties"] = {}
19
+ result["pagProperties"]["freezeSupported"] = pag.pagProperties.freezeSupported
20
+ result["segments"] = []
21
+ for i in range(pag.maxSegments):
22
+ segment = {}
23
+ status, std_info = x.try_command(x.getSegmentInfo, 0x01, i, 0, 0)
24
+ std_info = x.getSegmentInfo(0x01, i, 2, 0)
25
+ if status == TryCommandResult.OK:
26
+ segment["maxPages"] = std_info.maxPages
27
+ segment["addressExtension"] = std_info.addressExtension
28
+ segment["maxMapping"] = std_info.maxMapping
29
+ segment["compressionMethod"] = std_info.compressionMethod
30
+ segment["encryptionMethod"] = std_info.encryptionMethod
31
+
32
+ status, seg_address = x.try_command(x.getSegmentInfo, 0x00, i, 0, 0)
33
+ status, seg_length = x.try_command(x.getSegmentInfo, 0x00, i, 1, 0)
34
+
35
+ segment["address"] = seg_address.basicInfo
36
+ segment["length"] = seg_length.basicInfo
37
+
38
+ result["segments"].append(segment)
39
+
40
+ status, pgi = x.try_command(x.getPageInfo, i, 0)
41
+ # print("PAGE:", pgi)
42
+ # for j in range(si.maxPages):
43
+ # pgi = x.getPageInfo(i, j)
44
+ # print(pgi)
45
+ else:
46
+ break
47
+ return result
48
+
49
+
12
50
  def main():
13
51
  ap = ArgumentParser(description="XCP info/exploration tool.")
14
52
 
@@ -66,14 +104,10 @@ def main():
66
104
  print("\nPAG Info:")
67
105
  print("=========")
68
106
  if x.slaveProperties.supportsCalpag:
69
- status, pag = x.try_command(x.getPagProcessorInfo)
70
- if status == TryCommandResult.OK:
71
- print(pag)
72
- # for idx in range(pag.maxSegments):
73
- # x.getSegmentInfo(0x01, idx, 0, 0)
107
+ pgi = getPagInfo(x)
108
+ pprint(pgi)
74
109
  else:
75
110
  print("*** PAGING IS NOT SUPPORTED.")
76
-
77
111
  print("\nPGM Info:")
78
112
  print("=========")
79
113
  if x.slaveProperties.supportsPgm:
@@ -82,7 +116,6 @@ def main():
82
116
  print(pgm)
83
117
  else:
84
118
  print("*** FLASH PROGRAMMING IS NOT SUPPORTED.")
85
-
86
119
  if x.slaveProperties.transport_layer == "CAN":
87
120
  print("\nTransport-Layer CAN:")
88
121
  print("====================")
@@ -90,7 +123,8 @@ def main():
90
123
  if status == TryCommandResult.OK:
91
124
  print("CAN identifier for CMD/STIM:\n", res)
92
125
  else:
93
- print("*** GET_SLAVE_ID() IS NOT SUPPORTED.") # no response from bc address ???
126
+ pass
127
+ # print("*** GET_SLAVE_ID() IS NOT SUPPORTED.") # no response from bc address ???
94
128
 
95
129
  print("\nPer DAQ-list Identifier")
96
130
  print("-----------------------")
@@ -0,0 +1,31 @@
1
+ import argparse
2
+
3
+ from pyxcp.recorder.converter import convert_xmraw
4
+
5
+
6
+ parser = argparse.ArgumentParser(description="Convert .xmraw files.")
7
+
8
+ parser.add_argument(
9
+ "target_type",
10
+ help="target file type",
11
+ choices=[
12
+ "arrow",
13
+ "csv",
14
+ "excel",
15
+ "hdf5",
16
+ "mdf",
17
+ "sqlite3",
18
+ ],
19
+ )
20
+
21
+
22
+ def main():
23
+ parser.add_argument("xmraw_file", help=".xmraw file")
24
+ parser.add_argument("-t", "--taget-file-name", dest="target_file_name", help="target file name")
25
+ args = parser.parse_args()
26
+
27
+ convert_xmraw(args.target_type, args.xmraw_file, args.target_file_name)
28
+
29
+
30
+ if __name__ == "__main__":
31
+ main()
pyxcp/transport/base.py CHANGED
@@ -240,7 +240,7 @@ class BaseTransport(metaclass=abc.ABCMeta):
240
240
  xcpPDU = self.get()
241
241
  except EmptyFrameError:
242
242
  if not ignore_timeout:
243
- MSG = f"Response timed out (timeout={self.timeout}s)"
243
+ MSG = f"Response timed out (timeout={self.timeout / 1_000_000_000}s)"
244
244
  with self.policy_lock:
245
245
  self.policy.feed(types.FrameCategory.METADATA, self.counter_send, self.timestamp.value, bytes(MSG, "ascii"))
246
246
  raise types.XcpTimeoutError(MSG) from None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyxcp
3
- Version: 0.22.26
3
+ Version: 0.22.28
4
4
  Summary: Universal Calibration Protocol for Python
5
5
  License: LGPLv3
6
6
  Keywords: automotive,ecu,xcp,asam,autosar
@@ -1,4 +1,4 @@
1
- pyxcp/__init__.py,sha256=RJc-8q7P408Jmlwt5OMDoDop9h53YvraQnGC0mdVmtY,548
1
+ pyxcp/__init__.py,sha256=Gg_xWPOl3qvbv5BzHeRm8V4nGseVYi2kq0kj6Aq5AZs,548
2
2
  pyxcp/aml/EtasCANMonitoring.a2l,sha256=EJYwe3Z3H24vyWAa6lUgcdKnQY8pwFxjyCN6ZU1ST8w,1509
3
3
  pyxcp/aml/EtasCANMonitoring.aml,sha256=xl0DdyeiIaLW0mmmJNAyJS0CQdOLSxt9dxfgrdSlU8Y,2405
4
4
  pyxcp/aml/ifdata_CAN.a2l,sha256=NCUnCUEEgRbZYSLGtUGwL2e7zJ8hrp0SbmLHGv8uY58,612
@@ -16,7 +16,7 @@ pyxcp/asam/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  pyxcp/asam/types.py,sha256=_gKcpBF5mon_SDWZBUW0PGBMcb37yrvhhEuk1wslg-s,2441
17
17
  pyxcp/asamkeydll.c,sha256=dVEvU0S1kgIo62S0La-T8xHSw668LM_DYc_fiQ0No6g,2952
18
18
  pyxcp/asamkeydll.sh,sha256=DC2NKUMwvi39OQgJ6514Chr4wc1LYbTmQHmMq9jAHHs,59
19
- pyxcp/checksum.py,sha256=alze1JiZ2JmdRul9QzP_-fuAqJcNyYBbo35zBwEKqHk,11535
19
+ pyxcp/checksum.py,sha256=hO2JW_eiO9I0A4eiqovMV9d_y5oidq_w8jKdAE4FeOo,11899
20
20
  pyxcp/cmdline.py,sha256=na3ZbWQ-5ezsi1MrkuxMTCAXonUF3X6-LutoneyE3dU,1529
21
21
  pyxcp/config/__init__.py,sha256=nToBy_zPFQZmCUgRZ1RUjlw-OulCcvoFuGFvPw242z8,41701
22
22
  pyxcp/config/legacy.py,sha256=4QdDheX8DbBKv5JVT72_C_cjCgKvZmhN3tJ6hsvBEtI,5220
@@ -24,10 +24,10 @@ pyxcp/constants.py,sha256=9yGfujC0ImTYQWfn41wyw8pluJTSrhMGWIVeIZTgsLg,1160
24
24
  pyxcp/cpp_ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  pyxcp/cpp_ext/bin.hpp,sha256=PwJloZek21la-RBSda2Hc0u_6gID0sfTduPeplaAyR4,2561
26
26
  pyxcp/cpp_ext/blockmem.hpp,sha256=ysaJwmTWGTfE54Outk3gJYOfAVFd_QaonBMtXLcXwCc,1242
27
- pyxcp/cpp_ext/cpp_ext.cp310-win_amd64.pyd,sha256=6QbsSXVMsmE8L8Uo3JIojb_U9EOrdJc-MZk-2GI3Y5c,279552
28
- pyxcp/cpp_ext/cpp_ext.cp311-win_amd64.pyd,sha256=BD3qqAHgl5HJP--VT_C5fbtSODPobAGd1ks0co8kq9E,281600
29
- pyxcp/cpp_ext/cpp_ext.cp38-win_amd64.pyd,sha256=dAWWWsucJ22tqPC_06-Kr6nhz5nNe4m6YYeMhh384AY,279552
30
- pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd,sha256=te0D-4CZw619YbwRrIxS8jmdS_UcPS2gQPCSb0Jx8Vg,260096
27
+ pyxcp/cpp_ext/cpp_ext.cp310-win_amd64.pyd,sha256=mgCEOaTY6z_62yzhW0hrsFGnVBV66NXcXnN-zoutj0g,288768
28
+ pyxcp/cpp_ext/cpp_ext.cp311-win_amd64.pyd,sha256=SU0Yud9OHcLjZP5RdO4LyPSDKjpOMAR3lYzcJkyjTj8,291328
29
+ pyxcp/cpp_ext/cpp_ext.cp38-win_amd64.pyd,sha256=U0n2Ef7_jHzJT6S1r8NkEj82HEp3rX3U-ve-FxmWzcQ,288256
30
+ pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd,sha256=W6ihn06MkbY1JgKFbyozQfDurY1-yJpU1oD9uJa8okU,270336
31
31
  pyxcp/cpp_ext/daqlist.hpp,sha256=g2hlxgoQorAGKHedZFZ0c2FQh1APMIA9sVB6M6hD_n8,7277
32
32
  pyxcp/cpp_ext/event.hpp,sha256=Z-1yxsEKsr81NnLVEWJ2ANA8FV7YsM7EbNxaw-elheE,1200
33
33
  pyxcp/cpp_ext/extension_wrapper.cpp,sha256=FXFjyruBjQYqjCYZZcajdYv6dvNnCggMAbWLqJmfuTM,4756
@@ -39,10 +39,10 @@ pyxcp/daq_stim/optimize/__init__.py,sha256=FUWK0GkNpNT-sUlhibp7xa2aSYpm6Flh5yA2w
39
39
  pyxcp/daq_stim/optimize/binpacking.py,sha256=Iltho5diKlJG-ltbmx053U2vOFRlCISolXK61T14l_I,1257
40
40
  pyxcp/daq_stim/scheduler.cpp,sha256=a7VK7kP2Hs8yMlcDAkXwJ0bH88lr_yz156sphcHS7Z4,715
41
41
  pyxcp/daq_stim/scheduler.hpp,sha256=U_6tUbebmzX5vVZS0EFSgTaPsyxMg6yRXHG_aPWA0x4,1884
42
- pyxcp/daq_stim/stim.cp310-win_amd64.pyd,sha256=Ipaa8gxNZetfWUs8SHP-uQ-3bQ6aJzv7queAOKmcZBA,189440
43
- pyxcp/daq_stim/stim.cp311-win_amd64.pyd,sha256=PeX2RT5L-kBqyfvg3AazPSrD1Fd93K9b1hB8fVzzTns,192000
44
- pyxcp/daq_stim/stim.cp38-win_amd64.pyd,sha256=Sh3DMZHjlD4EOKom7gyLPp2yMyIcVZK02msoFsFdCrg,189440
45
- pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=cfMM0LKRqcjWx-I0ijRk85aN9YEPlsToeNJU-dLBMec,183296
42
+ pyxcp/daq_stim/stim.cp310-win_amd64.pyd,sha256=XHhdvrEIu-faqrMT8XtErRRDkdnECr6_oiFKA1kjJ80,198656
43
+ pyxcp/daq_stim/stim.cp311-win_amd64.pyd,sha256=7ubWbR5oQ8Ek1ijY-uwD-CeS8uTz_g5b1yLRCbbLDnU,201216
44
+ pyxcp/daq_stim/stim.cp38-win_amd64.pyd,sha256=iwaHAOOMB4BfSb-HttBgEpof5yy7bN0FwtC3d9fv_C8,198656
45
+ pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=sBbo3nkMSZv65x0uI7AFNUFk6A5o2hAGsE0ejOmg81A,192512
46
46
  pyxcp/daq_stim/stim.cpp,sha256=F2OG67W4KKwTTiUCxm-9egIv3TLFdOkRunX6xf7YOtc,177
47
47
  pyxcp/daq_stim/stim.hpp,sha256=U-uInRrA6OCdMl1l1SWbQ_KEPpnNYrWut924IvbW6R0,18508
48
48
  pyxcp/daq_stim/stim_wrapper.cpp,sha256=iT2yxJ3LRG7HoYC1bwhM3tCAxF9X_HHierBNsLRmTJg,1995
@@ -57,7 +57,7 @@ pyxcp/examples/conf_nixnet.json,sha256=BvXPrljPGzaRTNPch3K0XfU3KSBP1sVDDNP7yY850
57
57
  pyxcp/examples/conf_socket_can.toml,sha256=gTacQGm0p6fhPCMWC3ScLq9Xj-xJmNbjNXkjO4o7r8k,269
58
58
  pyxcp/examples/conf_sxi.json,sha256=cXwNGoOpvqhdjXBQcE8lKgTs50wi9beosWKskZGJ-nI,158
59
59
  pyxcp/examples/conf_sxi.toml,sha256=t-XsgRljcMdj0f3_CGRT60c77LeQPNbjIT17YxDK3Yg,125
60
- pyxcp/examples/run_daq.py,sha256=gSKkJ_S4QgP6Pgeu-gNoh_hGzxtrAgcbQ1AEEC2QWHE,5484
60
+ pyxcp/examples/run_daq.py,sha256=osUkVyYiA2f1cTflqbwMdrxgyfXVJ7LmpHt3u68iyQU,5624
61
61
  pyxcp/examples/xcp_policy.py,sha256=io9tS2W-7PvR8ZzU203KolFrDp67eorUlwNWvA4kC5k,1921
62
62
  pyxcp/examples/xcp_read_benchmark.py,sha256=zOG0Yrji10vA0vhHa27KK7zgc3JDpzXzXsFnIU4C_AM,956
63
63
  pyxcp/examples/xcp_skel.py,sha256=YXLQC8nn8aAwYSVuBGhr1dvmdMBjmO1Ee1w3e5sy16s,1159
@@ -84,10 +84,10 @@ pyxcp/recorder/mio.hpp,sha256=5ASJLKSEykH0deAQD5uak-_yAgd5p2n8t06315GSGrg,63346
84
84
  pyxcp/recorder/reader.hpp,sha256=rr9XZ_ciL6eF2_xEqyt9XYNqTIze9ytAsnf8uYukO9U,5201
85
85
  pyxcp/recorder/reco.py,sha256=6N6FIwfCEVMpi5dr3eUOQa1lowcg2LCnS_sy_-b-UiQ,8725
86
86
  pyxcp/recorder/recorder.rst,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
- pyxcp/recorder/rekorder.cp310-win_amd64.pyd,sha256=kdZ8tFAEG6DYBZhh6gq353ciHfADV_tr-4xODSm0Xtw,377856
88
- pyxcp/recorder/rekorder.cp311-win_amd64.pyd,sha256=KY_0mU2ZWOtaTZohpLAlXPOBQ5ueyXlkDCqrh1Gjcwo,380416
89
- pyxcp/recorder/rekorder.cp38-win_amd64.pyd,sha256=QXsP963LBZg8uxjZqmFgxBlxxjFKiKKrvja-v7asr1c,377856
90
- pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=MHWy_5Em0uDyGq39Rt3kmwMZRG9qYwcGN5tWug_i-Js,364032
87
+ pyxcp/recorder/rekorder.cp310-win_amd64.pyd,sha256=Cyd9a3uBZR8daO5V6eyVJmw8IRpUKGQPnU5yXcJ3xPA,386560
88
+ pyxcp/recorder/rekorder.cp311-win_amd64.pyd,sha256=-YYs6NGQp48jOJDMZR5BlzvXbi0EwXKvgTTLtUhyrig,388608
89
+ pyxcp/recorder/rekorder.cp38-win_amd64.pyd,sha256=GUHwztQv6u3-vUxr-J63Rh_XJoXBuI7sYMtapEyV7Qo,386048
90
+ pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=JPCYjHbOGiyd4Uyk1flpgpZDWAHZura30HEjonbE438,372736
91
91
  pyxcp/recorder/rekorder.cpp,sha256=U0LMyk8pZXx9emgS_WPVthvn_9IpgE7JGrh4kg-8CX4,1900
92
92
  pyxcp/recorder/rekorder.hpp,sha256=sWvRch9bVt6mmgrFHp5mwWhap7HoFG4geeb7UqEIzio,7638
93
93
  pyxcp/recorder/setup.py,sha256=_99XFPQAd5V4LcJaSGJwdnbxgxJ7kl8DEXfHsnKO1Yg,998
@@ -100,8 +100,9 @@ pyxcp/scripts/pyxcp_probe_can_drivers.py,sha256=P_gscDTAofbSVA_Wd1GATrnyWGTf1-Dz
100
100
  pyxcp/scripts/xcp_examples.py,sha256=q2wNXHVZu4GjcIlZwp2j9Sqm5QH39Olro4BQaLoIqiM,2583
101
101
  pyxcp/scripts/xcp_fetch_a2l.py,sha256=72818jdJiLsDuWWfkAPxekZ7fzRRz_A4RVSy06LQNe4,1239
102
102
  pyxcp/scripts/xcp_id_scanner.py,sha256=2P53qrvM-rYFTBbbm7eAKyOxESkKrorieND-KoZZ9mo,421
103
- pyxcp/scripts/xcp_info.py,sha256=pNb0h7bwAuUEUbCFRIWyHCrOcTU6ElQkFMAvqzjDJUs,4152
103
+ pyxcp/scripts/xcp_info.py,sha256=H4bDcJilgkzHWapuCT49A3dq04CAwrp7z0zv1ibwkZQ,5711
104
104
  pyxcp/scripts/xcp_profile.py,sha256=ryJnx7cqQ40O05F3beuUEOthsiW_k9d_2wMf4Z9CWkc,615
105
+ pyxcp/scripts/xmraw_converter.py,sha256=LvjiKAWHUKs5QZNiIDT-vdNgPG0Gioas2MzLJOo62-Y,684
105
106
  pyxcp/stim/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
107
  pyxcp/tests/test_asam_types.py,sha256=0M08q8dJIVx-rkUtFKTqUhhW9NkThYL83LW3d_yCols,587
107
108
  pyxcp/tests/test_binpacking.py,sha256=kxLwYNzop775BkV68WXBoXVnLIuP0y4EKIW7u9niMKc,7623
@@ -114,7 +115,7 @@ pyxcp/tests/test_transport.py,sha256=Qn2VjNRfYCU6DH8olVSBUCqb0zdAM9GlTbVBM99YxFQ
114
115
  pyxcp/tests/test_utils.py,sha256=SrURAFc_6jtHng3PSZ5gpqXzVBVuPoMPB0YNvOvaIE0,880
115
116
  pyxcp/timing.py,sha256=zE6qPqOuidg6saNt7_zmbQgufxL9Id6akVYhAtpweQc,1705
116
117
  pyxcp/transport/__init__.py,sha256=31PaQLj76n5pXr68aJRWcYfrxEYWWgYoe9f_w3jZxsc,438
117
- pyxcp/transport/base.py,sha256=uyCJF6Lznm4gIa_Jq5Pkp6JAT6H6hQuZwryZkLz3kVI,16337
118
+ pyxcp/transport/base.py,sha256=Wf1ymrchtJ3JaETpVsGEV6X7OQR9o5DZmoD3zoXxkyU,16353
118
119
  pyxcp/transport/base_transport.hpp,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
120
  pyxcp/transport/can.py,sha256=cQ8lrwBL7Ar0GSf48987TztR9wqYS_UnXUngzhaHXe0,14909
120
121
  pyxcp/transport/eth.py,sha256=xPzN2oSALoPKJVvZpBljPSV1AxfpjRusOzymO-TD1Rw,8711
@@ -125,8 +126,8 @@ pyxcp/types.py,sha256=mjp3FhsTTbS3D5VuC-dfdbMql0lJwEfbZjf8a2pHi1o,26158
125
126
  pyxcp/utils.py,sha256=unlg0CoNwcWYfd-BE0hZJ93uhlAoW_nryv9tS_R3C44,2969
126
127
  pyxcp/vector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
128
  pyxcp/vector/map.py,sha256=7Gnhvr79geMeqqGVIJPxODXGwABdNDinnqzhpooN5TE,2306
128
- pyxcp-0.22.26.dist-info/entry_points.txt,sha256=2JbL-pWn9UxpBrS64aWiFFkq9x2A7y-dkrxYlfQqIJU,307
129
- pyxcp-0.22.26.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
130
- pyxcp-0.22.26.dist-info/METADATA,sha256=_lhdH3MGmewLKRJk-lBDNRuqSu2n9VJs_hbwWsuSUD8,4088
131
- pyxcp-0.22.26.dist-info/WHEEL,sha256=n3g3Tr2YV6me3FFXedNkHR60jH48Lz9fadlpSPtgLFw,98
132
- pyxcp-0.22.26.dist-info/RECORD,,
129
+ pyxcp-0.22.28.dist-info/entry_points.txt,sha256=LkHsEwubm30s4oiyCy0cKj6k97ALvQ6KjAVdyEcqu7g,358
130
+ pyxcp-0.22.28.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
131
+ pyxcp-0.22.28.dist-info/METADATA,sha256=_lAXRVqtCZRJ7hL3Rm1k_OOQWMdHIDOF-1Jt_7JA9SE,4088
132
+ pyxcp-0.22.28.dist-info/WHEEL,sha256=8I98sogQUn43fLUWN2fZV-he4kMIsOYUgylQQrag6Ck,98
133
+ pyxcp-0.22.28.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.0.1
2
+ Generator: poetry-core 2.1.1
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp311-cp311-win_amd64
@@ -5,4 +5,5 @@ xcp-fetch-a2l=pyxcp.scripts.xcp_fetch_a2l:main
5
5
  xcp-id-scanner=pyxcp.scripts.xcp_id_scanner:main
6
6
  xcp-info=pyxcp.scripts.xcp_info:main
7
7
  xcp-profile=pyxcp.scripts.xcp_profile:main
8
+ xmraw-converter=pyxcp.scripts.xmraw_converter:main
8
9