pyxcp 0.22.27__cp39-cp39-win_amd64.whl → 0.22.29__cp39-cp39-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.27"
20
+ __version__ = "0.22.29"
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
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
 
pyxcp/master/master.py CHANGED
@@ -113,6 +113,7 @@ class Master:
113
113
 
114
114
  def __enter__(self):
115
115
  """Context manager entry part."""
116
+ self.transport.connect()
116
117
  return self
117
118
 
118
119
  def __exit__(self, exc_type, exc_val, exc_tb):
@@ -171,8 +172,6 @@ class Master:
171
172
  more attempts to connect are silently ignored.
172
173
 
173
174
  """
174
- self.transport.connect()
175
-
176
175
  response = self.transport.request(types.Command.CONNECT, mode & 0xFF)
177
176
 
178
177
  # First get byte-order
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("-----------------------")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyxcp
3
- Version: 0.22.27
3
+ Version: 0.22.29
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=U9Fi0Sk2-v05hWVufHjX9mTdUQfVbhDxYXUoaViam58,548
1
+ pyxcp/__init__.py,sha256=CfVT1SdmpLo0RUcrWbWh55AgFA7AMWc7swLMPD1DN-s,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,8 +24,8 @@ 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.cp38-win_amd64.pyd,sha256=U0lChpjxdARykUutwVcqTEBwE_L4qPELeClr0j-lFUY,279552
28
- pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd,sha256=3yPw_GgYZ5juIZ2UPjMnNRFBmXLFaMKYDLwtZbBXH4Q,260096
27
+ pyxcp/cpp_ext/cpp_ext.cp38-win_amd64.pyd,sha256=LhPMsPk4SJaN8mm-0n7MnTSFL9VSe_nk06FVa7NVpLA,288256
28
+ pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd,sha256=y-IKXP6XtB0a7xTbrn42pARyjiYfIOmYgzIMyv0emTg,270336
29
29
  pyxcp/cpp_ext/daqlist.hpp,sha256=g2hlxgoQorAGKHedZFZ0c2FQh1APMIA9sVB6M6hD_n8,7277
30
30
  pyxcp/cpp_ext/event.hpp,sha256=Z-1yxsEKsr81NnLVEWJ2ANA8FV7YsM7EbNxaw-elheE,1200
31
31
  pyxcp/cpp_ext/extension_wrapper.cpp,sha256=FXFjyruBjQYqjCYZZcajdYv6dvNnCggMAbWLqJmfuTM,4756
@@ -37,8 +37,8 @@ pyxcp/daq_stim/optimize/__init__.py,sha256=FUWK0GkNpNT-sUlhibp7xa2aSYpm6Flh5yA2w
37
37
  pyxcp/daq_stim/optimize/binpacking.py,sha256=Iltho5diKlJG-ltbmx053U2vOFRlCISolXK61T14l_I,1257
38
38
  pyxcp/daq_stim/scheduler.cpp,sha256=a7VK7kP2Hs8yMlcDAkXwJ0bH88lr_yz156sphcHS7Z4,715
39
39
  pyxcp/daq_stim/scheduler.hpp,sha256=U_6tUbebmzX5vVZS0EFSgTaPsyxMg6yRXHG_aPWA0x4,1884
40
- pyxcp/daq_stim/stim.cp38-win_amd64.pyd,sha256=GaZKWrOcsMhTdC4NU_MpJKz_YUZEK6NkwQ18kqvE39w,189440
41
- pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=L3ktgjqa3Lby-qUdMR0p9Zf0yokLspjVIHwg67mxvL8,183296
40
+ pyxcp/daq_stim/stim.cp38-win_amd64.pyd,sha256=W9jYBCX2yy0h2PLXYbaiXiG__AsDBE4OLr5UDZl5_xE,198656
41
+ pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=v7n3DIq0mJsuHWwrL8c0ugcECSUNjkoGXowHlZ75ESY,192512
42
42
  pyxcp/daq_stim/stim.cpp,sha256=F2OG67W4KKwTTiUCxm-9egIv3TLFdOkRunX6xf7YOtc,177
43
43
  pyxcp/daq_stim/stim.hpp,sha256=U-uInRrA6OCdMl1l1SWbQ_KEPpnNYrWut924IvbW6R0,18508
44
44
  pyxcp/daq_stim/stim_wrapper.cpp,sha256=iT2yxJ3LRG7HoYC1bwhM3tCAxF9X_HHierBNsLRmTJg,1995
@@ -53,7 +53,7 @@ pyxcp/examples/conf_nixnet.json,sha256=BvXPrljPGzaRTNPch3K0XfU3KSBP1sVDDNP7yY850
53
53
  pyxcp/examples/conf_socket_can.toml,sha256=gTacQGm0p6fhPCMWC3ScLq9Xj-xJmNbjNXkjO4o7r8k,269
54
54
  pyxcp/examples/conf_sxi.json,sha256=cXwNGoOpvqhdjXBQcE8lKgTs50wi9beosWKskZGJ-nI,158
55
55
  pyxcp/examples/conf_sxi.toml,sha256=t-XsgRljcMdj0f3_CGRT60c77LeQPNbjIT17YxDK3Yg,125
56
- pyxcp/examples/run_daq.py,sha256=gSKkJ_S4QgP6Pgeu-gNoh_hGzxtrAgcbQ1AEEC2QWHE,5484
56
+ pyxcp/examples/run_daq.py,sha256=osUkVyYiA2f1cTflqbwMdrxgyfXVJ7LmpHt3u68iyQU,5624
57
57
  pyxcp/examples/xcp_policy.py,sha256=io9tS2W-7PvR8ZzU203KolFrDp67eorUlwNWvA4kC5k,1921
58
58
  pyxcp/examples/xcp_read_benchmark.py,sha256=zOG0Yrji10vA0vhHa27KK7zgc3JDpzXzXsFnIU4C_AM,956
59
59
  pyxcp/examples/xcp_skel.py,sha256=YXLQC8nn8aAwYSVuBGhr1dvmdMBjmO1Ee1w3e5sy16s,1159
@@ -63,7 +63,7 @@ pyxcp/examples/xcphello.py,sha256=xbcWq8StRJyUZBLUvknsXv7VkEBD5SU0SJjlZTHsSzs,26
63
63
  pyxcp/examples/xcphello_recorder.py,sha256=QHWJsq5h5CI9t5qEmMSorZyzirTpoXz4nzuKTMzbZCA,3409
64
64
  pyxcp/master/__init__.py,sha256=QQbkUJM1WQ-5p2MiNFYxLAmHhNsCQLzDp-S4aoOFxoA,318
65
65
  pyxcp/master/errorhandler.py,sha256=ulL6WiraZbVZnM2pfR8S9vlWAAP5UXwXqmbjjxH9rgc,15359
66
- pyxcp/master/master.py,sha256=y5i5HTw5g4HKHW8tXfpNc0hmaQjle-3dsUkVFqPjUXc,78365
66
+ pyxcp/master/master.py,sha256=VFi4Dh_cguGrx6tWngEpBqU1KtXtwmOAPRwj-3Q5oik,78363
67
67
  pyxcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
68
  pyxcp/recorder/__init__.py,sha256=jeTmKvfjIenxHxt7zn6HMjnDpuPQU0d9SdnYK_t3gdE,2850
69
69
  pyxcp/recorder/build_clang.cmd,sha256=JvFngSnb28XcBGXxC6MGrcOCGYfahOIvHpgRpqbA6HQ,175
@@ -80,8 +80,8 @@ pyxcp/recorder/mio.hpp,sha256=5ASJLKSEykH0deAQD5uak-_yAgd5p2n8t06315GSGrg,63346
80
80
  pyxcp/recorder/reader.hpp,sha256=rr9XZ_ciL6eF2_xEqyt9XYNqTIze9ytAsnf8uYukO9U,5201
81
81
  pyxcp/recorder/reco.py,sha256=6N6FIwfCEVMpi5dr3eUOQa1lowcg2LCnS_sy_-b-UiQ,8725
82
82
  pyxcp/recorder/recorder.rst,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
- pyxcp/recorder/rekorder.cp38-win_amd64.pyd,sha256=oDEc0ilDNe1Lh5gxF4gUD0DAdcmXbfYIExaNE2DrRS8,377856
84
- pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=jmQrzXw_5nwe8YEdc-wr5jIW6lfPava362CXVpyFITQ,364032
83
+ pyxcp/recorder/rekorder.cp38-win_amd64.pyd,sha256=Qjxu3vW-7qFBSz35p_OiqnBa7BJ18E5rV4QNmPNbboE,386048
84
+ pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=8vVyKQbXq9Dj7bQAV4oNWJcRFJ_aCAtm-Wf-7IYDJmI,372736
85
85
  pyxcp/recorder/rekorder.cpp,sha256=U0LMyk8pZXx9emgS_WPVthvn_9IpgE7JGrh4kg-8CX4,1900
86
86
  pyxcp/recorder/rekorder.hpp,sha256=sWvRch9bVt6mmgrFHp5mwWhap7HoFG4geeb7UqEIzio,7638
87
87
  pyxcp/recorder/setup.py,sha256=_99XFPQAd5V4LcJaSGJwdnbxgxJ7kl8DEXfHsnKO1Yg,998
@@ -94,7 +94,7 @@ pyxcp/scripts/pyxcp_probe_can_drivers.py,sha256=P_gscDTAofbSVA_Wd1GATrnyWGTf1-Dz
94
94
  pyxcp/scripts/xcp_examples.py,sha256=q2wNXHVZu4GjcIlZwp2j9Sqm5QH39Olro4BQaLoIqiM,2583
95
95
  pyxcp/scripts/xcp_fetch_a2l.py,sha256=72818jdJiLsDuWWfkAPxekZ7fzRRz_A4RVSy06LQNe4,1239
96
96
  pyxcp/scripts/xcp_id_scanner.py,sha256=2P53qrvM-rYFTBbbm7eAKyOxESkKrorieND-KoZZ9mo,421
97
- pyxcp/scripts/xcp_info.py,sha256=pNb0h7bwAuUEUbCFRIWyHCrOcTU6ElQkFMAvqzjDJUs,4152
97
+ pyxcp/scripts/xcp_info.py,sha256=H4bDcJilgkzHWapuCT49A3dq04CAwrp7z0zv1ibwkZQ,5711
98
98
  pyxcp/scripts/xcp_profile.py,sha256=ryJnx7cqQ40O05F3beuUEOthsiW_k9d_2wMf4Z9CWkc,615
99
99
  pyxcp/scripts/xmraw_converter.py,sha256=LvjiKAWHUKs5QZNiIDT-vdNgPG0Gioas2MzLJOo62-Y,684
100
100
  pyxcp/stim/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -120,8 +120,8 @@ pyxcp/types.py,sha256=mjp3FhsTTbS3D5VuC-dfdbMql0lJwEfbZjf8a2pHi1o,26158
120
120
  pyxcp/utils.py,sha256=unlg0CoNwcWYfd-BE0hZJ93uhlAoW_nryv9tS_R3C44,2969
121
121
  pyxcp/vector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
122
  pyxcp/vector/map.py,sha256=7Gnhvr79geMeqqGVIJPxODXGwABdNDinnqzhpooN5TE,2306
123
- pyxcp-0.22.27.dist-info/entry_points.txt,sha256=LkHsEwubm30s4oiyCy0cKj6k97ALvQ6KjAVdyEcqu7g,358
124
- pyxcp-0.22.27.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
125
- pyxcp-0.22.27.dist-info/METADATA,sha256=zQKqn19meJMIXG2mAnkRR-YL6zzc4mo34cqytGcwlqA,4088
126
- pyxcp-0.22.27.dist-info/WHEEL,sha256=Hkd2GxahgaJo_PUXSn2Z_PVyVBw8DHa683MQcF0Lrhc,96
127
- pyxcp-0.22.27.dist-info/RECORD,,
123
+ pyxcp-0.22.29.dist-info/entry_points.txt,sha256=LkHsEwubm30s4oiyCy0cKj6k97ALvQ6KjAVdyEcqu7g,358
124
+ pyxcp-0.22.29.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
125
+ pyxcp-0.22.29.dist-info/METADATA,sha256=2IV2kgBpGDSwKrvsS8Mstr2Z0BCOWdzbwuNQOn_LWZI,4088
126
+ pyxcp-0.22.29.dist-info/WHEEL,sha256=Z7wHPPsHkhSEtHCXR5Nyy0-Patck1z5Qlvi5nPf-YDI,96
127
+ pyxcp-0.22.29.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.3
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp39-cp39-win_amd64