pyxcp 0.23.3__cp314-cp314-win_amd64.whl → 0.23.4__cp314-cp314-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/cpp_ext/cpp_ext.cp310-win_amd64.pyd +0 -0
- pyxcp/cpp_ext/cpp_ext.cp311-win_amd64.pyd +0 -0
- pyxcp/cpp_ext/cpp_ext.cp312-win_amd64.pyd +0 -0
- pyxcp/cpp_ext/cpp_ext.cp313-win_amd64.pyd +0 -0
- pyxcp/cpp_ext/cpp_ext.cp314-win_amd64.pyd +0 -0
- pyxcp/daq_stim/__init__.py +0 -1
- pyxcp/daq_stim/stim.cp310-win_amd64.pyd +0 -0
- pyxcp/daq_stim/stim.cp311-win_amd64.pyd +0 -0
- pyxcp/daq_stim/stim.cp312-win_amd64.pyd +0 -0
- pyxcp/daq_stim/stim.cp313-win_amd64.pyd +0 -0
- pyxcp/daq_stim/stim.cp314-win_amd64.pyd +0 -0
- pyxcp/recorder/rekorder.cp310-win_amd64.pyd +0 -0
- pyxcp/recorder/rekorder.cp311-win_amd64.pyd +0 -0
- pyxcp/recorder/rekorder.cp312-win_amd64.pyd +0 -0
- pyxcp/recorder/rekorder.cp313-win_amd64.pyd +0 -0
- pyxcp/recorder/rekorder.cp314-win_amd64.pyd +0 -0
- pyxcp/transport/base.py +22 -6
- {pyxcp-0.23.3.dist-info → pyxcp-0.23.4.dist-info}/METADATA +1 -1
- {pyxcp-0.23.3.dist-info → pyxcp-0.23.4.dist-info}/RECORD +23 -23
- {pyxcp-0.23.3.dist-info → pyxcp-0.23.4.dist-info}/LICENSE +0 -0
- {pyxcp-0.23.3.dist-info → pyxcp-0.23.4.dist-info}/WHEEL +0 -0
- {pyxcp-0.23.3.dist-info → pyxcp-0.23.4.dist-info}/entry_points.txt +0 -0
pyxcp/__init__.py
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
pyxcp/daq_stim/__init__.py
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
pyxcp/transport/base.py
CHANGED
|
@@ -222,6 +222,10 @@ class BaseTransport(metaclass=abc.ABCMeta):
|
|
|
222
222
|
self.finish_listener()
|
|
223
223
|
self.listener.join()
|
|
224
224
|
|
|
225
|
+
# Ensure the close event is cleared before starting a new listener thread.
|
|
226
|
+
if hasattr(self, "closeEvent"):
|
|
227
|
+
self.closeEvent.clear()
|
|
228
|
+
|
|
225
229
|
self.listener = threading.Thread(target=self.listen)
|
|
226
230
|
self.listener.start()
|
|
227
231
|
|
|
@@ -368,16 +372,16 @@ class BaseTransport(metaclass=abc.ABCMeta):
|
|
|
368
372
|
self.timer_restart_event.set()
|
|
369
373
|
|
|
370
374
|
def process_response(self, response: bytes, length: int, counter: int, recv_timestamp: int) -> None:
|
|
371
|
-
|
|
372
|
-
self.logger.warning(f"Duplicate message counter {counter} received from the XCP slave")
|
|
373
|
-
if self._debug:
|
|
374
|
-
self.logger.debug(f"<- L{length} C{counter} {hexDump(response[:512])}")
|
|
375
|
-
return
|
|
376
|
-
self.counter_received = counter
|
|
375
|
+
# Important: determine PID first so duplicate counter handling can be applied selectively.
|
|
377
376
|
pid = response[0]
|
|
377
|
+
|
|
378
378
|
if pid >= 0xFC:
|
|
379
|
+
# Do not drop RESPONSE/EVENT/SERV frames even if the transport counter repeats.
|
|
380
|
+
# Some slaves may reuse the counter while DAQ traffic is active, and we must not lose
|
|
381
|
+
# command responses; otherwise request() can stall until timeout.
|
|
379
382
|
if self._debug:
|
|
380
383
|
self.logger.debug(f"<- L{length} C{counter} {hexDump(response)}")
|
|
384
|
+
self.counter_received = counter
|
|
381
385
|
if pid >= 0xFE:
|
|
382
386
|
self.resQueue.append(response)
|
|
383
387
|
with self.policy_lock:
|
|
@@ -391,6 +395,15 @@ class BaseTransport(metaclass=abc.ABCMeta):
|
|
|
391
395
|
with self.policy_lock:
|
|
392
396
|
self.policy.feed(types.FrameCategory.SERV, self.counter_received, self.timestamp.value, response)
|
|
393
397
|
else:
|
|
398
|
+
# DAQ traffic: Some transports reuse or do not advance the counter for DAQ frames.
|
|
399
|
+
# Do not drop DAQ frames on duplicate counters to avoid losing measurements.
|
|
400
|
+
if counter == self.counter_received:
|
|
401
|
+
self.logger.debug(f"Duplicate message counter {counter} received (DAQ) - not dropping")
|
|
402
|
+
# DAQ still flowing – reset request timeout window to avoid false timeouts while
|
|
403
|
+
# the slave is busy but has not yet responded to a command.
|
|
404
|
+
self.timer_restart_event.set()
|
|
405
|
+
# Fall through and process the frame as usual.
|
|
406
|
+
self.counter_received = counter
|
|
394
407
|
if self._debug:
|
|
395
408
|
self.logger.debug(f"<- L{length} C{counter} ODT_Data[0:8] {hexDump(response[:8])}")
|
|
396
409
|
if self.first_daq_timestamp is None:
|
|
@@ -399,6 +412,9 @@ class BaseTransport(metaclass=abc.ABCMeta):
|
|
|
399
412
|
timestamp = recv_timestamp
|
|
400
413
|
else:
|
|
401
414
|
timestamp = 0
|
|
415
|
+
# DAQ activity indicates the slave is alive/busy; keep extending the wait window for any
|
|
416
|
+
# outstanding request, similar to EV_CMD_PENDING behavior on stacks that don't emit it.
|
|
417
|
+
self.timer_restart_event.set()
|
|
402
418
|
with self.policy_lock:
|
|
403
419
|
self.policy.feed(types.FrameCategory.DAQ, self.counter_received, timestamp, response)
|
|
404
420
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
pyxcp/__init__.py,sha256=
|
|
1
|
+
pyxcp/__init__.py,sha256=nzCciT2JSkYRVu-ITGnrOCESqGDQ3fgG6KnZxWKCqxc,547
|
|
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
|
|
@@ -24,27 +24,27 @@ 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=
|
|
28
|
-
pyxcp/cpp_ext/cpp_ext.cp311-win_amd64.pyd,sha256=
|
|
29
|
-
pyxcp/cpp_ext/cpp_ext.cp312-win_amd64.pyd,sha256=
|
|
30
|
-
pyxcp/cpp_ext/cpp_ext.cp313-win_amd64.pyd,sha256=
|
|
31
|
-
pyxcp/cpp_ext/cpp_ext.cp314-win_amd64.pyd,sha256=
|
|
27
|
+
pyxcp/cpp_ext/cpp_ext.cp310-win_amd64.pyd,sha256=6zQ3wWQOX9lcSRfcjIy0DnVC0TWj9dYPRz7H9yb19tI,288768
|
|
28
|
+
pyxcp/cpp_ext/cpp_ext.cp311-win_amd64.pyd,sha256=UyodeBbTMRFBXIibBKCSMFhXtoFWEAYSebqWbebh2rg,290816
|
|
29
|
+
pyxcp/cpp_ext/cpp_ext.cp312-win_amd64.pyd,sha256=ijL07reWhnHPC4iXedfLneQLaHybdSojMax-dTCK8SY,295424
|
|
30
|
+
pyxcp/cpp_ext/cpp_ext.cp313-win_amd64.pyd,sha256=9VlDIGVEzYKjp6dJbwxvLjTU2p4f9m5clfKCumPa09w,295424
|
|
31
|
+
pyxcp/cpp_ext/cpp_ext.cp314-win_amd64.pyd,sha256=XQe_775f33dfU9M-2CwC1PH5wSocy122EBIrW0TTuSE,297984
|
|
32
32
|
pyxcp/cpp_ext/daqlist.hpp,sha256=g2hlxgoQorAGKHedZFZ0c2FQh1APMIA9sVB6M6hD_n8,7277
|
|
33
33
|
pyxcp/cpp_ext/event.hpp,sha256=Z-1yxsEKsr81NnLVEWJ2ANA8FV7YsM7EbNxaw-elheE,1200
|
|
34
34
|
pyxcp/cpp_ext/extension_wrapper.cpp,sha256=xFs3IcrvHPHA82-n11WPzt8HATGqcks02p84SjQ2BKM,4855
|
|
35
35
|
pyxcp/cpp_ext/helper.hpp,sha256=ONAsVupIqqmNDp8bgGWS0TfSYeCFkk3kwwZbbqsh0HQ,7813
|
|
36
36
|
pyxcp/cpp_ext/mcobject.hpp,sha256=A5GKcfjYMcfm3hfTQfFuS4JYNFTvfmzAcMXCe01GOs4,6429
|
|
37
37
|
pyxcp/cpp_ext/tsqueue.hpp,sha256=FWMemzXNgV5dQ7gYmTCzC0QYfgl0VI9JCybYelBcCHU,1026
|
|
38
|
-
pyxcp/daq_stim/__init__.py,sha256=
|
|
38
|
+
pyxcp/daq_stim/__init__.py,sha256=Z4xyEko7VVCmzyRCHrtikN_Kcu905q3wD_3jYEm7qCQ,9530
|
|
39
39
|
pyxcp/daq_stim/optimize/__init__.py,sha256=FUWK0GkNpNT-sUlhibp7xa2aSYpm6Flh5yA2w2IOJqg,2520
|
|
40
40
|
pyxcp/daq_stim/optimize/binpacking.py,sha256=Iltho5diKlJG-ltbmx053U2vOFRlCISolXK61T14l_I,1257
|
|
41
41
|
pyxcp/daq_stim/scheduler.cpp,sha256=NuNkAz3Dv849f51_T36YPck2dl-YsdDdG-cozc7XN9U,1504
|
|
42
42
|
pyxcp/daq_stim/scheduler.hpp,sha256=U_6tUbebmzX5vVZS0EFSgTaPsyxMg6yRXHG_aPWA0x4,1884
|
|
43
|
-
pyxcp/daq_stim/stim.cp310-win_amd64.pyd,sha256=
|
|
44
|
-
pyxcp/daq_stim/stim.cp311-win_amd64.pyd,sha256=
|
|
45
|
-
pyxcp/daq_stim/stim.cp312-win_amd64.pyd,sha256=
|
|
46
|
-
pyxcp/daq_stim/stim.cp313-win_amd64.pyd,sha256=
|
|
47
|
-
pyxcp/daq_stim/stim.cp314-win_amd64.pyd,sha256=
|
|
43
|
+
pyxcp/daq_stim/stim.cp310-win_amd64.pyd,sha256=EBGdZOlIrLIU-q9kZ78ASEUA1fiZeu_-1I9VVRvwHnQ,208896
|
|
44
|
+
pyxcp/daq_stim/stim.cp311-win_amd64.pyd,sha256=nAoszObPDc_ymWudMffO4qyIOTL4cVpmHgCP1QgVwug,210432
|
|
45
|
+
pyxcp/daq_stim/stim.cp312-win_amd64.pyd,sha256=d8lojhJsP7aqzHZ9OY_RwJRs87wI3J_upPDoIThL3so,214528
|
|
46
|
+
pyxcp/daq_stim/stim.cp313-win_amd64.pyd,sha256=_n9DlZ2eLTYtgv2g3KMFYlx6GV7ajApiSXRXHJTBZqw,214528
|
|
47
|
+
pyxcp/daq_stim/stim.cp314-win_amd64.pyd,sha256=gdbcLAoBuI8kOyc4rHkrW8WjI8JfCKZsD5IlbaAML_o,215552
|
|
48
48
|
pyxcp/daq_stim/stim.cpp,sha256=F2OG67W4KKwTTiUCxm-9egIv3TLFdOkRunX6xf7YOtc,177
|
|
49
49
|
pyxcp/daq_stim/stim.hpp,sha256=U-uInRrA6OCdMl1l1SWbQ_KEPpnNYrWut924IvbW6R0,18508
|
|
50
50
|
pyxcp/daq_stim/stim_wrapper.cpp,sha256=iT2yxJ3LRG7HoYC1bwhM3tCAxF9X_HHierBNsLRmTJg,1995
|
|
@@ -86,11 +86,11 @@ pyxcp/recorder/mio.hpp,sha256=5ASJLKSEykH0deAQD5uak-_yAgd5p2n8t06315GSGrg,63346
|
|
|
86
86
|
pyxcp/recorder/reader.hpp,sha256=rr9XZ_ciL6eF2_xEqyt9XYNqTIze9ytAsnf8uYukO9U,5201
|
|
87
87
|
pyxcp/recorder/reco.py,sha256=6N6FIwfCEVMpi5dr3eUOQa1lowcg2LCnS_sy_-b-UiQ,8725
|
|
88
88
|
pyxcp/recorder/recorder.rst,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
89
|
-
pyxcp/recorder/rekorder.cp310-win_amd64.pyd,sha256=
|
|
90
|
-
pyxcp/recorder/rekorder.cp311-win_amd64.pyd,sha256=
|
|
91
|
-
pyxcp/recorder/rekorder.cp312-win_amd64.pyd,sha256=
|
|
92
|
-
pyxcp/recorder/rekorder.cp313-win_amd64.pyd,sha256=
|
|
93
|
-
pyxcp/recorder/rekorder.cp314-win_amd64.pyd,sha256=
|
|
89
|
+
pyxcp/recorder/rekorder.cp310-win_amd64.pyd,sha256=g7pMrqqMpsyuGdPmNBHklkOOIP-vLe7LgzRSKYBifcc,389632
|
|
90
|
+
pyxcp/recorder/rekorder.cp311-win_amd64.pyd,sha256=BjudsnG3tzmiOiA3Q4hbi1RhhZzLoMPwVHrqR5p16Uw,391168
|
|
91
|
+
pyxcp/recorder/rekorder.cp312-win_amd64.pyd,sha256=y0R7qmghdfceYiOUWVFa93swNebXBDEpwlsViQ6G0r8,396800
|
|
92
|
+
pyxcp/recorder/rekorder.cp313-win_amd64.pyd,sha256=dZIBLUSUvtPvROJP9qMU567RDzqqClAGnvcur9bNcgE,396800
|
|
93
|
+
pyxcp/recorder/rekorder.cp314-win_amd64.pyd,sha256=XxcWwRcP9evK51_W0BjxrukjhHwliqm2NLJUuOHkoSk,398848
|
|
94
94
|
pyxcp/recorder/rekorder.cpp,sha256=U0LMyk8pZXx9emgS_WPVthvn_9IpgE7JGrh4kg-8CX4,1900
|
|
95
95
|
pyxcp/recorder/rekorder.hpp,sha256=sWvRch9bVt6mmgrFHp5mwWhap7HoFG4geeb7UqEIzio,7638
|
|
96
96
|
pyxcp/recorder/setup.py,sha256=_99XFPQAd5V4LcJaSGJwdnbxgxJ7kl8DEXfHsnKO1Yg,998
|
|
@@ -119,7 +119,7 @@ pyxcp/tests/test_transport.py,sha256=vv7x7-rHPbmHc7BR8qcXx_Yy8STu1za1OzJmeuUSF14
|
|
|
119
119
|
pyxcp/tests/test_utils.py,sha256=SrURAFc_6jtHng3PSZ5gpqXzVBVuPoMPB0YNvOvaIE0,880
|
|
120
120
|
pyxcp/timing.py,sha256=zE6qPqOuidg6saNt7_zmbQgufxL9Id6akVYhAtpweQc,1705
|
|
121
121
|
pyxcp/transport/__init__.py,sha256=31PaQLj76n5pXr68aJRWcYfrxEYWWgYoe9f_w3jZxsc,438
|
|
122
|
-
pyxcp/transport/base.py,sha256=
|
|
122
|
+
pyxcp/transport/base.py,sha256=M93HwtaFPHXbWCRLSrDaL987AvPl8AkZT3HSf3cjwtY,17530
|
|
123
123
|
pyxcp/transport/base_transport.hpp,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
124
124
|
pyxcp/transport/can.py,sha256=Sm2qu5JOSZ-f-PdgHVknTm1JTAH_L2DNxTxb5OJUCpI,18806
|
|
125
125
|
pyxcp/transport/eth.py,sha256=xPzN2oSALoPKJVvZpBljPSV1AxfpjRusOzymO-TD1Rw,8711
|
|
@@ -130,8 +130,8 @@ pyxcp/types.py,sha256=mjp3FhsTTbS3D5VuC-dfdbMql0lJwEfbZjf8a2pHi1o,26158
|
|
|
130
130
|
pyxcp/utils.py,sha256=_ag2QMt0IxVhiCLG5BIO8JzIGt-rdqYrY7DRAPQ4AtA,3530
|
|
131
131
|
pyxcp/vector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
132
132
|
pyxcp/vector/map.py,sha256=7Gnhvr79geMeqqGVIJPxODXGwABdNDinnqzhpooN5TE,2306
|
|
133
|
-
pyxcp-0.23.
|
|
134
|
-
pyxcp-0.23.
|
|
135
|
-
pyxcp-0.23.
|
|
136
|
-
pyxcp-0.23.
|
|
137
|
-
pyxcp-0.23.
|
|
133
|
+
pyxcp-0.23.4.dist-info/entry_points.txt,sha256=LkHsEwubm30s4oiyCy0cKj6k97ALvQ6KjAVdyEcqu7g,358
|
|
134
|
+
pyxcp-0.23.4.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
|
|
135
|
+
pyxcp-0.23.4.dist-info/METADATA,sha256=hFSek7Gb_hDy_HhSaLoPqtKp1C8p44CMs9KFdKuge1g,11688
|
|
136
|
+
pyxcp-0.23.4.dist-info/WHEEL,sha256=kwfqy3xKRHEZfXFvb9ph-wqPOS4inj_OLrOJzUuVYBY,98
|
|
137
|
+
pyxcp-0.23.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|