pyxcp 0.22.26__cp39-cp39-win_amd64.whl → 0.22.28__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 +1 -1
- pyxcp/checksum.py +14 -4
- pyxcp/cpp_ext/cpp_ext.cp38-win_amd64.pyd +0 -0
- pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd +0 -0
- pyxcp/daq_stim/stim.cp38-win_amd64.pyd +0 -0
- pyxcp/daq_stim/stim.cp39-win_amd64.pyd +0 -0
- pyxcp/examples/run_daq.py +8 -1
- pyxcp/recorder/rekorder.cp38-win_amd64.pyd +0 -0
- pyxcp/recorder/rekorder.cp39-win_amd64.pyd +0 -0
- pyxcp/scripts/xcp_info.py +42 -8
- pyxcp/scripts/xmraw_converter.py +31 -0
- pyxcp/transport/base.py +1 -1
- {pyxcp-0.22.26.dist-info → pyxcp-0.22.28.dist-info}/METADATA +1 -1
- {pyxcp-0.22.26.dist-info → pyxcp-0.22.28.dist-info}/RECORD +17 -16
- {pyxcp-0.22.26.dist-info → pyxcp-0.22.28.dist-info}/WHEEL +1 -1
- {pyxcp-0.22.26.dist-info → pyxcp-0.22.28.dist-info}/entry_points.txt +1 -0
- {pyxcp-0.22.26.dist-info → pyxcp-0.22.28.dist-info}/LICENSE +0 -0
pyxcp/__init__.py
CHANGED
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
|
|
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
|
-
|
|
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
|
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
|
-
|
|
70
|
-
|
|
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
|
-
|
|
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,4 +1,4 @@
|
|
|
1
|
-
pyxcp/__init__.py,sha256=
|
|
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=
|
|
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=
|
|
28
|
-
pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd,sha256=
|
|
27
|
+
pyxcp/cpp_ext/cpp_ext.cp38-win_amd64.pyd,sha256=U0n2Ef7_jHzJT6S1r8NkEj82HEp3rX3U-ve-FxmWzcQ,288256
|
|
28
|
+
pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd,sha256=W6ihn06MkbY1JgKFbyozQfDurY1-yJpU1oD9uJa8okU,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=
|
|
41
|
-
pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=
|
|
40
|
+
pyxcp/daq_stim/stim.cp38-win_amd64.pyd,sha256=iwaHAOOMB4BfSb-HttBgEpof5yy7bN0FwtC3d9fv_C8,198656
|
|
41
|
+
pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=sBbo3nkMSZv65x0uI7AFNUFk6A5o2hAGsE0ejOmg81A,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=
|
|
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
|
|
@@ -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=
|
|
84
|
-
pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=
|
|
83
|
+
pyxcp/recorder/rekorder.cp38-win_amd64.pyd,sha256=GUHwztQv6u3-vUxr-J63Rh_XJoXBuI7sYMtapEyV7Qo,386048
|
|
84
|
+
pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=JPCYjHbOGiyd4Uyk1flpgpZDWAHZura30HEjonbE438,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,8 +94,9 @@ 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=
|
|
97
|
+
pyxcp/scripts/xcp_info.py,sha256=H4bDcJilgkzHWapuCT49A3dq04CAwrp7z0zv1ibwkZQ,5711
|
|
98
98
|
pyxcp/scripts/xcp_profile.py,sha256=ryJnx7cqQ40O05F3beuUEOthsiW_k9d_2wMf4Z9CWkc,615
|
|
99
|
+
pyxcp/scripts/xmraw_converter.py,sha256=LvjiKAWHUKs5QZNiIDT-vdNgPG0Gioas2MzLJOo62-Y,684
|
|
99
100
|
pyxcp/stim/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
100
101
|
pyxcp/tests/test_asam_types.py,sha256=0M08q8dJIVx-rkUtFKTqUhhW9NkThYL83LW3d_yCols,587
|
|
101
102
|
pyxcp/tests/test_binpacking.py,sha256=kxLwYNzop775BkV68WXBoXVnLIuP0y4EKIW7u9niMKc,7623
|
|
@@ -108,7 +109,7 @@ pyxcp/tests/test_transport.py,sha256=Qn2VjNRfYCU6DH8olVSBUCqb0zdAM9GlTbVBM99YxFQ
|
|
|
108
109
|
pyxcp/tests/test_utils.py,sha256=SrURAFc_6jtHng3PSZ5gpqXzVBVuPoMPB0YNvOvaIE0,880
|
|
109
110
|
pyxcp/timing.py,sha256=zE6qPqOuidg6saNt7_zmbQgufxL9Id6akVYhAtpweQc,1705
|
|
110
111
|
pyxcp/transport/__init__.py,sha256=31PaQLj76n5pXr68aJRWcYfrxEYWWgYoe9f_w3jZxsc,438
|
|
111
|
-
pyxcp/transport/base.py,sha256=
|
|
112
|
+
pyxcp/transport/base.py,sha256=Wf1ymrchtJ3JaETpVsGEV6X7OQR9o5DZmoD3zoXxkyU,16353
|
|
112
113
|
pyxcp/transport/base_transport.hpp,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
113
114
|
pyxcp/transport/can.py,sha256=cQ8lrwBL7Ar0GSf48987TztR9wqYS_UnXUngzhaHXe0,14909
|
|
114
115
|
pyxcp/transport/eth.py,sha256=xPzN2oSALoPKJVvZpBljPSV1AxfpjRusOzymO-TD1Rw,8711
|
|
@@ -119,8 +120,8 @@ pyxcp/types.py,sha256=mjp3FhsTTbS3D5VuC-dfdbMql0lJwEfbZjf8a2pHi1o,26158
|
|
|
119
120
|
pyxcp/utils.py,sha256=unlg0CoNwcWYfd-BE0hZJ93uhlAoW_nryv9tS_R3C44,2969
|
|
120
121
|
pyxcp/vector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
121
122
|
pyxcp/vector/map.py,sha256=7Gnhvr79geMeqqGVIJPxODXGwABdNDinnqzhpooN5TE,2306
|
|
122
|
-
pyxcp-0.22.
|
|
123
|
-
pyxcp-0.22.
|
|
124
|
-
pyxcp-0.22.
|
|
125
|
-
pyxcp-0.22.
|
|
126
|
-
pyxcp-0.22.
|
|
123
|
+
pyxcp-0.22.28.dist-info/entry_points.txt,sha256=LkHsEwubm30s4oiyCy0cKj6k97ALvQ6KjAVdyEcqu7g,358
|
|
124
|
+
pyxcp-0.22.28.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
|
|
125
|
+
pyxcp-0.22.28.dist-info/METADATA,sha256=_lAXRVqtCZRJ7hL3Rm1k_OOQWMdHIDOF-1Jt_7JA9SE,4088
|
|
126
|
+
pyxcp-0.22.28.dist-info/WHEEL,sha256=BkIrCfkcPRV-5Co42tvvbrT_MePFTN0EEWycz2TFSS8,96
|
|
127
|
+
pyxcp-0.22.28.dist-info/RECORD,,
|
|
File without changes
|