pyxcp 0.23.3__cp312-cp312-win_arm64.whl → 0.25.6__cp312-cp312-win_arm64.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.
Files changed (87) hide show
  1. pyxcp/__init__.py +1 -1
  2. pyxcp/asamkeydll.exe +0 -0
  3. pyxcp/cmdline.py +15 -30
  4. pyxcp/config/__init__.py +73 -20
  5. pyxcp/cpp_ext/aligned_buffer.hpp +168 -0
  6. pyxcp/cpp_ext/bin.hpp +7 -6
  7. pyxcp/cpp_ext/cpp_ext.cp310-win_arm64.pyd +0 -0
  8. pyxcp/cpp_ext/cpp_ext.cp311-win_arm64.pyd +0 -0
  9. pyxcp/cpp_ext/cpp_ext.cp312-win_arm64.pyd +0 -0
  10. pyxcp/cpp_ext/daqlist.hpp +241 -73
  11. pyxcp/cpp_ext/extension_wrapper.cpp +123 -15
  12. pyxcp/cpp_ext/framing.hpp +360 -0
  13. pyxcp/cpp_ext/mcobject.hpp +5 -3
  14. pyxcp/cpp_ext/sxi_framing.hpp +332 -0
  15. pyxcp/daq_stim/__init__.py +182 -45
  16. pyxcp/daq_stim/optimize/binpacking.py +2 -2
  17. pyxcp/daq_stim/scheduler.cpp +8 -8
  18. pyxcp/daq_stim/stim.cp310-win_arm64.pyd +0 -0
  19. pyxcp/daq_stim/stim.cp311-win_arm64.pyd +0 -0
  20. pyxcp/daq_stim/stim.cp312-win_arm64.pyd +0 -0
  21. pyxcp/errormatrix.py +2 -2
  22. pyxcp/examples/run_daq.py +5 -3
  23. pyxcp/examples/xcp_policy.py +6 -6
  24. pyxcp/examples/xcp_read_benchmark.py +2 -2
  25. pyxcp/examples/xcp_skel.py +1 -2
  26. pyxcp/examples/xcp_unlock.py +10 -12
  27. pyxcp/examples/xcp_user_supplied_driver.py +1 -2
  28. pyxcp/examples/xcphello.py +2 -15
  29. pyxcp/examples/xcphello_recorder.py +2 -2
  30. pyxcp/master/__init__.py +1 -0
  31. pyxcp/master/errorhandler.py +248 -13
  32. pyxcp/master/master.py +838 -250
  33. pyxcp/recorder/.idea/.gitignore +8 -0
  34. pyxcp/recorder/.idea/misc.xml +4 -0
  35. pyxcp/recorder/.idea/modules.xml +8 -0
  36. pyxcp/recorder/.idea/recorder.iml +6 -0
  37. pyxcp/recorder/.idea/sonarlint/issuestore/3/8/3808afc69ac1edb9d760000a2f137335b1b99728 +7 -0
  38. pyxcp/recorder/.idea/sonarlint/issuestore/9/a/9a2aa4db38d3115ed60da621e012c0efc0172aae +0 -0
  39. pyxcp/recorder/.idea/sonarlint/issuestore/b/4/b49006702b459496a8e8c94ebe60947108361b91 +0 -0
  40. pyxcp/recorder/.idea/sonarlint/issuestore/index.pb +7 -0
  41. pyxcp/recorder/.idea/sonarlint/securityhotspotstore/3/8/3808afc69ac1edb9d760000a2f137335b1b99728 +0 -0
  42. pyxcp/recorder/.idea/sonarlint/securityhotspotstore/9/a/9a2aa4db38d3115ed60da621e012c0efc0172aae +0 -0
  43. pyxcp/recorder/.idea/sonarlint/securityhotspotstore/b/4/b49006702b459496a8e8c94ebe60947108361b91 +0 -0
  44. pyxcp/recorder/.idea/sonarlint/securityhotspotstore/index.pb +7 -0
  45. pyxcp/recorder/.idea/vcs.xml +10 -0
  46. pyxcp/recorder/__init__.py +5 -10
  47. pyxcp/recorder/converter/__init__.py +4 -10
  48. pyxcp/recorder/reader.hpp +0 -1
  49. pyxcp/recorder/reco.py +1 -0
  50. pyxcp/recorder/rekorder.cp310-win_arm64.pyd +0 -0
  51. pyxcp/recorder/rekorder.cp311-win_arm64.pyd +0 -0
  52. pyxcp/recorder/rekorder.cp312-win_arm64.pyd +0 -0
  53. pyxcp/recorder/unfolder.hpp +129 -107
  54. pyxcp/recorder/wrap.cpp +3 -8
  55. pyxcp/scripts/xcp_fetch_a2l.py +2 -2
  56. pyxcp/scripts/xcp_id_scanner.py +1 -2
  57. pyxcp/scripts/xcp_info.py +66 -51
  58. pyxcp/scripts/xcp_profile.py +1 -2
  59. pyxcp/tests/test_daq.py +1 -1
  60. pyxcp/tests/test_framing.py +262 -0
  61. pyxcp/tests/test_master.py +210 -100
  62. pyxcp/tests/test_transport.py +138 -42
  63. pyxcp/timing.py +1 -1
  64. pyxcp/transport/__init__.py +8 -5
  65. pyxcp/transport/base.py +187 -143
  66. pyxcp/transport/can.py +117 -13
  67. pyxcp/transport/eth.py +55 -20
  68. pyxcp/transport/hdf5_policy.py +167 -0
  69. pyxcp/transport/sxi.py +126 -52
  70. pyxcp/transport/transport_ext.cp310-win_arm64.pyd +0 -0
  71. pyxcp/transport/transport_ext.cp311-win_arm64.pyd +0 -0
  72. pyxcp/transport/transport_ext.cp312-win_arm64.pyd +0 -0
  73. pyxcp/transport/transport_ext.hpp +214 -0
  74. pyxcp/transport/transport_wrapper.cpp +249 -0
  75. pyxcp/transport/usb_transport.py +47 -31
  76. pyxcp/types.py +0 -13
  77. pyxcp/{utils.py → utils/__init__.py} +3 -4
  78. pyxcp/utils/cli.py +78 -0
  79. pyxcp-0.25.6.dist-info/METADATA +341 -0
  80. pyxcp-0.25.6.dist-info/RECORD +153 -0
  81. {pyxcp-0.23.3.dist-info → pyxcp-0.25.6.dist-info}/WHEEL +1 -1
  82. pyxcp/examples/conf_sxi.json +0 -9
  83. pyxcp/examples/conf_sxi.toml +0 -7
  84. pyxcp-0.23.3.dist-info/METADATA +0 -219
  85. pyxcp-0.23.3.dist-info/RECORD +0 -131
  86. {pyxcp-0.23.3.dist-info → pyxcp-0.25.6.dist-info}/entry_points.txt +0 -0
  87. {pyxcp-0.23.3.dist-info → pyxcp-0.25.6.dist-info/licenses}/LICENSE +0 -0
@@ -1,219 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: pyxcp
3
- Version: 0.23.3
4
- Summary: Universal Calibration Protocol for Python
5
- License: LGPLv3
6
- Keywords: automotive,ecu,xcp,asam,autosar
7
- Author: Christoph Schueler
8
- Author-email: cpu.gems@googlemail.com
9
- Requires-Python: >=3.10,<4.0
10
- Classifier: Development Status :: 5 - Production/Stable
11
- Classifier: Intended Audience :: Developers
12
- Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
13
- Classifier: License :: Other/Proprietary License
14
- Classifier: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.10
16
- Classifier: Programming Language :: Python :: 3.11
17
- Classifier: Programming Language :: Python :: 3.12
18
- Classifier: Programming Language :: Python :: 3.13
19
- Classifier: Programming Language :: Python :: 3.14
20
- Classifier: Topic :: Scientific/Engineering
21
- Classifier: Topic :: Software Development
22
- Requires-Dist: bandit (>=1.7.8,<2.0.0)
23
- Requires-Dist: chardet (>=5.2.0,<6.0.0)
24
- Requires-Dist: construct (>=2.10.68,<3.0.0)
25
- Requires-Dist: line-profiler-pycharm (>=1.1.0,<2.0.0)
26
- Requires-Dist: mako (>=1.2.4,<2.0.0)
27
- Requires-Dist: pyserial (>=3.5,<4.0)
28
- Requires-Dist: python-can (>=4.2.2,<5.0.0)
29
- Requires-Dist: pytz (>=2025.2,<2026.0)
30
- Requires-Dist: pyusb (>=1.2.1,<2.0.0)
31
- Requires-Dist: rich (>=14.0.0,<15.0.0)
32
- Requires-Dist: toml (>=0.10.2,<0.11.0)
33
- Requires-Dist: tomlkit (>=0.13.3,<0.14.0)
34
- Requires-Dist: traitlets (<=5.11.2)
35
- Requires-Dist: uptime (>=3.0.1,<4.0.0)
36
- Project-URL: Homepage, https://github.com/christoph2/pyxcp
37
- Description-Content-Type: text/markdown
38
-
39
- # pyXCP
40
-
41
- Reliable Python tooling for the ASAM MCD‑1 XCP protocol (measurement, calibration, flashing) with multiple transports (CAN, Ethernet, USB, Serial) and handy CLI utilities.
42
-
43
- [![CI](https://github.com/christoph2/pyxcp/workflows/Python%20application/badge.svg)](https://github.com/christoph2/pyxcp/actions)
44
- [![PyPI](https://img.shields.io/pypi/v/pyxcp.svg)](https://pypi.org/project/pyxcp/)
45
- [![Python Versions](https://img.shields.io/pypi/pyversions/pyxcp.svg)](https://pypi.org/project/pyxcp/)
46
- [![License: LGPL v3+](https://img.shields.io/badge/License-LGPL%20v3%2B-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)
47
- [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
48
-
49
- pyXCP is a production-ready Python library for communicating with XCP-enabled devices, most commonly automotive ECUs. Use it to take measurements, adjust parameters (calibration), stream DAQ/STIM, and program devices during development.
50
-
51
- Highlights:
52
- - Transports: Ethernet (TCP/IP), CAN, USB, Serial (SxI)
53
- - Cross‑platform: Windows, Linux, macOS
54
- - Rich CLI tools for common XCP tasks
55
- - Extensible architecture and layered design
56
-
57
- ---
58
-
59
- ## Installation
60
-
61
- The easiest way is from PyPI:
62
-
63
- ```shell
64
- pip install pyxcp
65
- ```
66
-
67
- To install from the main branch:
68
-
69
- ```shell
70
- pip install git+https://github.com/christoph2/pyxcp.git
71
- ```
72
-
73
-
74
- ### Requirements
75
- - Python >= 3.10
76
- - Building from source requires a working C/C++ toolchain (native extensions are used for performance). Wheels are provided for common platforms and Python versions; if a wheel is not available, pip will build from source.
77
- - An XCP slave device (or simulator)
78
-
79
- ## Quick start
80
-
81
- The tutorial walks you through typical tasks end‑to‑end: see docs/tutorial.md.
82
-
83
- Minimal example using the built‑in argument parser and context manager:
84
-
85
- ```python
86
- from pyxcp.cmdline import ArgumentParser
87
-
88
- ap = ArgumentParser(description="pyXCP hello world")
89
-
90
- with ap.run() as x:
91
- x.connect()
92
- identifier = x.identifier(0x01)
93
- print(f"ID: {identifier!r}")
94
- print(x.slaveProperties)
95
- x.disconnect()
96
- ```
97
-
98
- ### Configuration
99
- pyXCP supports a [traitlets](https://github.com/ipython/traitlets)‑based configuration system.
100
- - Recommended Python config example and generator: docs/tutorial.md and docs/configuration.md
101
- - Legacy TOML examples remain available for compatibility.
102
-
103
- ### Command‑line tools
104
- Installed entry points (see pyproject.toml):
105
- - xcp-info — print capabilities and properties
106
- - xcp-id-scanner — scan for slave identifiers
107
- - xcp-fetch-a2l — retrieve A2L from target (if supported)
108
- - xcp-profile — generate/convert config files
109
- - xcp-examples — launch assorted demos/examples
110
- - xmraw-converter — convert recorder .xmraw data
111
- - pyxcp-probe-can-drivers — list available CAN interfaces
112
-
113
- Run any tool with -h for options.
114
-
115
- ## Features
116
- - Multiple transport layers: Ethernet (TCP), CAN, USB, SxI (serial/UART)
117
- - Data Acquisition (DAQ) and Stimulation (STIM)
118
- - Calibration (read/write parameters)
119
- - Flashing/programming workflows
120
- - A2L (ASAM MCD‑2 MC) support
121
- - Recorder utilities and converters (see docs/recorder.md)
122
- - Extensible architecture for custom transports
123
-
124
- ## Documentation
125
- - Getting started tutorial: docs/tutorial.md
126
- - Configuration: docs/configuration.md
127
- - CAN driver setup and troubleshooting: docs/howto_can_driver.md
128
- - Recorder: docs/recorder.md
129
-
130
- To build the Sphinx documentation locally:
131
- 1. Install doc requirements: `pip install -r docs/requirements.txt`
132
- 2. Build: `sphinx-build -b html docs docs/_build/html`
133
- 3. Open `docs/_build/html/index.html`
134
-
135
- ## Compatibility
136
- - Operating systems: Windows, Linux, macOS
137
- - Python: 3.10 - 3.14, CPython wheels where available
138
- - CAN backends: python-can compatible drivers (see docs/howto_can_driver.md)
139
-
140
- ## Contributing
141
- Contributions are welcome! Please:
142
- - Read CODE_OF_CONDUCT.md
143
- - Open an issue or discussion before large changes
144
- - Use [pre-commit](https://github.com/pre-commit/pre-commit) to run linters and tests locally
145
-
146
- ## License
147
- GNU Lesser General Public License v3 or later (LGPLv3+). See LICENSE for details.
148
-
149
- ## References
150
- - ASAM MCD‑1 XCP standard: https://www.asam.net/standards/detail/mcd-1-xcp/
151
-
152
-
153
- ## About ASAM MCD‑1 XCP
154
- XCP (Universal Measurement and Calibration Protocol) is an ASAM standard defining a vendor‑neutral protocol to access internal data of electronic control units (ECUs) for measurement, calibration (parameter tuning), and programming. XCP decouples the protocol from the physical transport, so the same command set can be carried over different buses such as CAN, FlexRay, Ethernet, USB, or Serial.
155
-
156
- - Roles: An XCP Master (this library) communicates with an XCP Slave (your device/ECU or simulator).
157
- - Layered concept: XCP defines an application layer and transport layers. pyXCP implements the application layer and multiple transport bindings.
158
- - Use cases:
159
- - Measurement: Read variables from the ECU in real‑time, including high‑rate DAQ streaming.
160
- - Calibration: Read/write parameters (calibration data) in RAM/flash.
161
- - Programming: Download new program/data to flash (where the slave supports it).
162
-
163
- For the authoritative description, see the ASAM page: https://www.asam.net/standards/detail/mcd-1-xcp/
164
-
165
- ## XCP in a nutshell
166
- - Connect/Session: The master establishes a connection, negotiates capabilities/features, and optionally unlocks protected functions via seed & key.
167
- - Addressing: Memory is accessed via absolute or segment‑relative addresses. Addressing modes are described in the associated A2L file (ASAM MCD‑2 MC), which maps symbolic names to addresses, data types, and conversion rules.
168
- - Events: The slave exposes events (e.g., “1 ms task”, “Combustion cycle”), which trigger DAQ sampling. The master assigns signals (ODTs) to these events for time‑aligned acquisition.
169
- - DAQ/STIM: DAQ = Data Acquisition (slave → master), STIM = Stimulation (master → slave). Both use event‑driven lists for deterministic timing.
170
- - Timestamps: DAQ may carry timestamps from the slave for precise time correlation.
171
- - Security: Access to sensitive commands (e.g., programming, calibration) can be protected by a seed & key algorithm negotiated at runtime.
172
- - Checksums: XCP defines checksum services useful for verifying memory regions (e.g., after flashing).
173
-
174
- ## Relation to A2L (ASAM MCD‑2 MC)
175
- While XCP defines the protocol, the A2L file describes the measurement and calibration objects (characteristics, measurements), data types, conversion rules, and memory layout. In practice, you use pyXCP together with an A2L to:
176
- - Resolve symbolic names to addresses and data types.
177
- - Configure DAQ lists from human‑readable signal names.
178
- - Interpret raw values using the appropriate conversion methods.
179
-
180
- pyXCP provides utilities to fetch A2L data when supported by the slave and to work with A2L‑described objects.
181
- See also [pya2ldb](https://github.com/christoph2/pya2l)!
182
-
183
- ## Transports and addressing
184
- XCP is transport‑agnostic. pyXCP supports multiple transports and addressing schemes:
185
- - CAN (XCP on CAN): Robust and ubiquitous in vehicles; limited payload and bandwidth; suited for many calibration tasks and moderate DAQ rates.
186
- - Ethernet (XCP on TCP/UDP): High bandwidth with low latency; well suited for rich DAQ and programming workflows.
187
- - USB: High throughput for lab setups; requires device support.
188
- - Serial/SxI: Simple point‑to‑point links for embedded targets and simulators.
189
-
190
- The exact capabilities (e.g., max CTO/DTO, checksum types, timestamping) are negotiated at connect time and depend on the slave and transport.
191
-
192
- ## Supported features (overview)
193
- The scope of features depends on the connected slave. At the library level, pyXCP provides:
194
- - Session management: CONNECT/DISCONNECT, GET_STATUS/SLAVE_PROPERTIES, communication mode setup, error handling.
195
- - Memory access: Upload/short upload, Download/Download Next, verifications, optional paged memory where supported.
196
- - DAQ/STIM: Configuration of DAQ lists/ODTs, event assignment, data streaming, timestamp handling when available.
197
- - Programming helpers: Building blocks for program/erase/write flows (exact sequence per slave’s flash algorithm and A2L description).
198
- - Security/Seed & Key: Pluggable seed‑to‑key resolution including 32↔64‑bit bridge on Windows.
199
- - Utilities: Identifier scanning, A2L helpers, recorder and converters.
200
-
201
- Refer to docs/tutorial.md and docs/configuration.md for feature usage, and xcp-info for a capability dump of your target.
202
-
203
- ## Compliance and versions
204
- pyXCP aims to be compatible with commonly used parts of ASAM MCD‑1 XCP. Specific optional features are enabled when a slave advertises them during CONNECT. Because implementations vary across vendors and ECU projects, always consult your A2L and use xcp-info to confirm negotiated options (e.g., checksum type, timestamp unit, max DTO size, address granularity).
205
-
206
- If you rely on a particular XCP feature/profile not mentioned here, please open an issue with details about your slave and A2L so we can clarify support and—if feasible—add coverage.
207
-
208
- ## Safety, performance, and limitations
209
- - Safety‑critical systems: XCP is a development and testing protocol. Do not enable measurement/calibration on safety‑critical systems in the field unless your system‑level safety case covers it.
210
- - Performance: Achievable DAQ rates depend on transport bandwidth, ECU event rates, DTO sizes, and host processing. Ethernet typically yields the highest throughput.
211
- - Latency/jitter: Event scheduling in the slave and OS scheduling on the host can affect determinism. Use timestamps to correlate data precisely.
212
- - Access control: Seed & key protects sensitive functions; your organization’s policy should govern algorithm distribution and access.
213
-
214
- ## Further resources
215
- - ASAM MCD‑1 XCP standard (overview and membership): https://www.asam.net/standards/detail/mcd-1-xcp/
216
- - ASAM MCD‑2 MC (A2L) for object descriptions: https://www.asam.net/standards/detail/mcd-2-mc/
217
- - Introduction to DAQ/STIM concepts (ASAM publications and vendor docs)
218
- - Related: CCP (legacy predecessor to XCP), ASAM MDF for measurement data storage
219
-
@@ -1,131 +0,0 @@
1
- pyxcp/__init__.py,sha256=fVDaHDWZ31NkogpcyWKgMLiQBK356XczUnYPRUcrLAo,547
2
- pyxcp/aml/EtasCANMonitoring.a2l,sha256=EJYwe3Z3H24vyWAa6lUgcdKnQY8pwFxjyCN6ZU1ST8w,1509
3
- pyxcp/aml/EtasCANMonitoring.aml,sha256=xl0DdyeiIaLW0mmmJNAyJS0CQdOLSxt9dxfgrdSlU8Y,2405
4
- pyxcp/aml/ifdata_CAN.a2l,sha256=NCUnCUEEgRbZYSLGtUGwL2e7zJ8hrp0SbmLHGv8uY58,612
5
- pyxcp/aml/ifdata_Eth.a2l,sha256=w4Vek0Xc5Rt7zroZztY0FEJTyVnk-E21wq_itxX2hI4,250
6
- pyxcp/aml/ifdata_Flx.a2l,sha256=oXIIwl3DA9JCyVRGKaLEedauC0q4JoRWQly-qTiYAaw,1891
7
- pyxcp/aml/ifdata_SxI.a2l,sha256=PPTZvyKKtp12qDiv9oHlW32ocPD7elJaOHklfg56r5E,316
8
- pyxcp/aml/ifdata_USB.a2l,sha256=bN59aYL19CFr5EMwkoUZYLnH5uSubqGGNsg8dPYNDd0,3656
9
- pyxcp/aml/XCP_Common.aml,sha256=CW9lgPw2V6qxtgZaT9wUGTP9FtaH6tse0_rzQ_Tcc7E,15445
10
- pyxcp/aml/XCPonCAN.aml,sha256=WpWvKPZLDHEMaTUljCu6WidVkiLL8kmZ4VIZBoXQyl4,3849
11
- pyxcp/aml/XCPonEth.aml,sha256=koFPs6hvInPrSSk6OHI1pF3Mq2bslT7TWBoTAjjYPWw,2247
12
- pyxcp/aml/XCPonFlx.aml,sha256=Q3byhPQ1DvPFoCkX6ta4A9KPAXAiIDBbuKz3bVHbP8s,4760
13
- pyxcp/aml/XCPonSxI.aml,sha256=sIHrBrvLHJkIcW77P7nVp17hTeKbEMRj3ssUsI7-Umw,3301
14
- pyxcp/aml/XCPonUSB.aml,sha256=Xcu52ZckyuEX0v5rwYQxz8gJCAs4qyepXmd_bkCJVlA,4953
15
- pyxcp/asam/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- pyxcp/asam/types.py,sha256=_gKcpBF5mon_SDWZBUW0PGBMcb37yrvhhEuk1wslg-s,2441
17
- pyxcp/asamkeydll.c,sha256=dVEvU0S1kgIo62S0La-T8xHSw668LM_DYc_fiQ0No6g,2952
18
- pyxcp/asamkeydll.sh,sha256=DC2NKUMwvi39OQgJ6514Chr4wc1LYbTmQHmMq9jAHHs,59
19
- pyxcp/checksum.py,sha256=hO2JW_eiO9I0A4eiqovMV9d_y5oidq_w8jKdAE4FeOo,11899
20
- pyxcp/cmdline.py,sha256=4kNHOjbA0HeVfRicnFDeX1J9EBkTlA7KWL5SDfwbbaM,2525
21
- pyxcp/config/__init__.py,sha256=z9bXNb2Hp-h2ZtASCyGk3JWP3OGoOL5Hmvazl-L_ANE,45258
22
- pyxcp/config/legacy.py,sha256=4QdDheX8DbBKv5JVT72_C_cjCgKvZmhN3tJ6hsvBEtI,5220
23
- pyxcp/constants.py,sha256=9yGfujC0ImTYQWfn41wyw8pluJTSrhMGWIVeIZTgsLg,1160
24
- pyxcp/cpp_ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- pyxcp/cpp_ext/bin.hpp,sha256=PwJloZek21la-RBSda2Hc0u_6gID0sfTduPeplaAyR4,2561
26
- pyxcp/cpp_ext/blockmem.hpp,sha256=ysaJwmTWGTfE54Outk3gJYOfAVFd_QaonBMtXLcXwCc,1242
27
- pyxcp/cpp_ext/cpp_ext.cp310-win_arm64.pyd,sha256=8u_vLF_AbuYuRTkgxzcmkjDZP6rRfDdEnaP1z9REzpc,317440
28
- pyxcp/cpp_ext/cpp_ext.cp311-win_arm64.pyd,sha256=Vv5OjQv-woX73mey-xiOtq5Q6K2iTs4fMSDBUdw8YxQ,317952
29
- pyxcp/cpp_ext/cpp_ext.cp312-win_arm64.pyd,sha256=aLIaMAhrNiBBpMXLGjaP5eILRWh9akHiK5f0Bkn_m-Q,311296
30
- pyxcp/cpp_ext/daqlist.hpp,sha256=g2hlxgoQorAGKHedZFZ0c2FQh1APMIA9sVB6M6hD_n8,7277
31
- pyxcp/cpp_ext/event.hpp,sha256=Z-1yxsEKsr81NnLVEWJ2ANA8FV7YsM7EbNxaw-elheE,1200
32
- pyxcp/cpp_ext/extension_wrapper.cpp,sha256=xFs3IcrvHPHA82-n11WPzt8HATGqcks02p84SjQ2BKM,4855
33
- pyxcp/cpp_ext/helper.hpp,sha256=ONAsVupIqqmNDp8bgGWS0TfSYeCFkk3kwwZbbqsh0HQ,7813
34
- pyxcp/cpp_ext/mcobject.hpp,sha256=A5GKcfjYMcfm3hfTQfFuS4JYNFTvfmzAcMXCe01GOs4,6429
35
- pyxcp/cpp_ext/tsqueue.hpp,sha256=FWMemzXNgV5dQ7gYmTCzC0QYfgl0VI9JCybYelBcCHU,1026
36
- pyxcp/daq_stim/__init__.py,sha256=2KsvP9RUV5gwFKTA1BBgsppAegR13ykrqjRtgY0zAx4,9560
37
- pyxcp/daq_stim/optimize/__init__.py,sha256=FUWK0GkNpNT-sUlhibp7xa2aSYpm6Flh5yA2w2IOJqg,2520
38
- pyxcp/daq_stim/optimize/binpacking.py,sha256=Iltho5diKlJG-ltbmx053U2vOFRlCISolXK61T14l_I,1257
39
- pyxcp/daq_stim/scheduler.cpp,sha256=NuNkAz3Dv849f51_T36YPck2dl-YsdDdG-cozc7XN9U,1504
40
- pyxcp/daq_stim/scheduler.hpp,sha256=U_6tUbebmzX5vVZS0EFSgTaPsyxMg6yRXHG_aPWA0x4,1884
41
- pyxcp/daq_stim/stim.cp310-win_arm64.pyd,sha256=ooOwgdYXKf49qaJDsAoRDyiiVyhp_wW5mXDFRdS57rA,215552
42
- pyxcp/daq_stim/stim.cp311-win_arm64.pyd,sha256=ewxFqgkZrw7CNhJQre-PAdgfiQY0I0EZ9k9XUgeXb04,216576
43
- pyxcp/daq_stim/stim.cp312-win_arm64.pyd,sha256=nbwCCsPJIK1Suo5saadk8b2yB4RfS4pPVr19o1uDmOY,216576
44
- pyxcp/daq_stim/stim.cpp,sha256=F2OG67W4KKwTTiUCxm-9egIv3TLFdOkRunX6xf7YOtc,177
45
- pyxcp/daq_stim/stim.hpp,sha256=U-uInRrA6OCdMl1l1SWbQ_KEPpnNYrWut924IvbW6R0,18508
46
- pyxcp/daq_stim/stim_wrapper.cpp,sha256=iT2yxJ3LRG7HoYC1bwhM3tCAxF9X_HHierBNsLRmTJg,1995
47
- pyxcp/dllif.py,sha256=qeo7quKQ-_7TjRh_umTD-g0utBcCJd1q4GBRl2m93-M,3444
48
- pyxcp/errormatrix.py,sha256=iY3VlAem7pNfpK4scD_087wxMlLxNuidB7bbpiUiAyc,45464
49
- pyxcp/examples/conf_can.toml,sha256=4o-M4xmh7pCzuQLfXnIOLIXqx5aZjMAZ6jtjYJ8hLBQ,370
50
- pyxcp/examples/conf_can_user.toml,sha256=IJhcc60tKMDgNhviYtHr2OjEl_ID4CsfMKchDeMFdJs,314
51
- pyxcp/examples/conf_can_vector.json,sha256=spux_wLX4EZdEpUqD2SU9-9uPDc2U1poeMaYo7QQT2M,249
52
- pyxcp/examples/conf_can_vector.toml,sha256=VXkHgJ9OjSnaz4BpIKsYg53oSNsj9F0LrTSDh8vHJMk,262
53
- pyxcp/examples/conf_eth.toml,sha256=BQE8UwZlBL4vNPQ_IDXVzrK9klFH9FhDCX68fXdSp_w,199
54
- pyxcp/examples/conf_nixnet.json,sha256=BvXPrljPGzaRTNPch3K0XfU3KSBP1sVDDNP7yY850OQ,444
55
- pyxcp/examples/conf_socket_can.toml,sha256=gTacQGm0p6fhPCMWC3ScLq9Xj-xJmNbjNXkjO4o7r8k,269
56
- pyxcp/examples/conf_sxi.json,sha256=cXwNGoOpvqhdjXBQcE8lKgTs50wi9beosWKskZGJ-nI,158
57
- pyxcp/examples/conf_sxi.toml,sha256=t-XsgRljcMdj0f3_CGRT60c77LeQPNbjIT17YxDK3Yg,125
58
- pyxcp/examples/run_daq.py,sha256=osUkVyYiA2f1cTflqbwMdrxgyfXVJ7LmpHt3u68iyQU,5624
59
- pyxcp/examples/xcp_policy.py,sha256=io9tS2W-7PvR8ZzU203KolFrDp67eorUlwNWvA4kC5k,1921
60
- pyxcp/examples/xcp_read_benchmark.py,sha256=zOG0Yrji10vA0vhHa27KK7zgc3JDpzXzXsFnIU4C_AM,956
61
- pyxcp/examples/xcp_skel.py,sha256=YXLQC8nn8aAwYSVuBGhr1dvmdMBjmO1Ee1w3e5sy16s,1159
62
- pyxcp/examples/xcp_unlock.py,sha256=5F7oW17MboxKO3REYrGyhYX4Oc0Dg1oD3EQ3fQXB2Is,690
63
- pyxcp/examples/xcp_user_supplied_driver.py,sha256=9fFiud6sbjkBjxmcdGwIO6yBc83sUykY388gvI5EcXU,1148
64
- pyxcp/examples/xcphello.py,sha256=TAFCRf9Cg5uc-WGaxdHHUS_hKYkWqt77-3j9gGG6GW8,2628
65
- pyxcp/examples/xcphello_recorder.py,sha256=QHWJsq5h5CI9t5qEmMSorZyzirTpoXz4nzuKTMzbZCA,3409
66
- pyxcp/master/__init__.py,sha256=QQbkUJM1WQ-5p2MiNFYxLAmHhNsCQLzDp-S4aoOFxoA,318
67
- pyxcp/master/errorhandler.py,sha256=ulL6WiraZbVZnM2pfR8S9vlWAAP5UXwXqmbjjxH9rgc,15359
68
- pyxcp/master/master.py,sha256=FIYCWCh9948cNmQ-D1DcjNcpb4mlXZ8UdCxTFH9Ti4g,78435
69
- pyxcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- pyxcp/recorder/__init__.py,sha256=jeTmKvfjIenxHxt7zn6HMjnDpuPQU0d9SdnYK_t3gdE,2850
71
- pyxcp/recorder/build_clang.cmd,sha256=JvFngSnb28XcBGXxC6MGrcOCGYfahOIvHpgRpqbA6HQ,175
72
- pyxcp/recorder/build_clang.sh,sha256=zmU3nZxaNH1pxGWMyQ-S541TuVqxS00p3iPR9NUP4Ec,181
73
- pyxcp/recorder/build_gcc.cmd,sha256=zj732DdvqDzGAFg7dvF83DUpf8Qf6rQ0cqEaID15Z80,238
74
- pyxcp/recorder/build_gcc.sh,sha256=nCSh7G8xtxWtDNrMqNUxcjnm_CFpMeduIF0X-RSJtHA,211
75
- pyxcp/recorder/build_gcc_arm.sh,sha256=jEo6Mgt_aVDL3nHtffecXOrN6gRsEoaA3S4pPrAzpCE,240
76
- pyxcp/recorder/converter/__init__.py,sha256=9wsoWJE-PwjsUpQqMT2KUBqa_qdAiX9-cktf6Lkm_xU,14902
77
- pyxcp/recorder/lz4.c,sha256=rOy3JE2SsOXvJ8a9pgGEfGpbDJnJR03dSVej0CwPmjg,120974
78
- pyxcp/recorder/lz4.h,sha256=Kz_2V6kvOunNHoPl9-EqxWDVCvYXbU0J-pkSnCeXubs,46483
79
- pyxcp/recorder/lz4hc.c,sha256=E56iE5CQ6fhQIVi3qNpxiIIP2sTGeC80JtVPyhidV6Q,88870
80
- pyxcp/recorder/lz4hc.h,sha256=dtxPbesyAongP7CK_pL0M2DL707iMm9jGKrl8hXXRNk,20592
81
- pyxcp/recorder/mio.hpp,sha256=5ASJLKSEykH0deAQD5uak-_yAgd5p2n8t06315GSGrg,63346
82
- pyxcp/recorder/reader.hpp,sha256=rr9XZ_ciL6eF2_xEqyt9XYNqTIze9ytAsnf8uYukO9U,5201
83
- pyxcp/recorder/reco.py,sha256=6N6FIwfCEVMpi5dr3eUOQa1lowcg2LCnS_sy_-b-UiQ,8725
84
- pyxcp/recorder/recorder.rst,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
- pyxcp/recorder/rekorder.cp310-win_arm64.pyd,sha256=Z-A2wHEN9H8Ckfr-W8vJYzuRayrMTrV4F_hr0CjHWNc,415744
86
- pyxcp/recorder/rekorder.cp311-win_arm64.pyd,sha256=pXFCob57rsP2d1H69XVQFOM86Uto2xo1d3r3Gdm4eqE,416256
87
- pyxcp/recorder/rekorder.cp312-win_arm64.pyd,sha256=A9aPpU6h_QddyxpZnALf2A2jZeyrLFDjmBmsetbO1VY,406016
88
- pyxcp/recorder/rekorder.cpp,sha256=U0LMyk8pZXx9emgS_WPVthvn_9IpgE7JGrh4kg-8CX4,1900
89
- pyxcp/recorder/rekorder.hpp,sha256=sWvRch9bVt6mmgrFHp5mwWhap7HoFG4geeb7UqEIzio,7638
90
- pyxcp/recorder/setup.py,sha256=_99XFPQAd5V4LcJaSGJwdnbxgxJ7kl8DEXfHsnKO1Yg,998
91
- pyxcp/recorder/test_reko.py,sha256=M8lfKBmBUl-28IMVoD6lU5Bnorz7fYFOvcAjfVZxuXA,1014
92
- pyxcp/recorder/unfolder.hpp,sha256=3gJKT2eMOZuT8o_M2NFLthdUIWd460vdwzlHaf-fQII,47998
93
- pyxcp/recorder/wrap.cpp,sha256=S3frBevIrPE5m3kt_mXe9TDOwWPJFiVa7Rt9FGMCv2A,8909
94
- pyxcp/recorder/writer.hpp,sha256=rNjtRTtJes5z-BzKR2K56P_Kvc9MEVQgycu8J0wKf1g,11284
95
- pyxcp/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
- pyxcp/scripts/pyxcp_probe_can_drivers.py,sha256=P_gscDTAofbSVA_Wd1GATrnyWGTf1-Dz_oPdlRFfjuk,567
97
- pyxcp/scripts/xcp_examples.py,sha256=q2wNXHVZu4GjcIlZwp2j9Sqm5QH39Olro4BQaLoIqiM,2583
98
- pyxcp/scripts/xcp_fetch_a2l.py,sha256=72818jdJiLsDuWWfkAPxekZ7fzRRz_A4RVSy06LQNe4,1239
99
- pyxcp/scripts/xcp_id_scanner.py,sha256=2P53qrvM-rYFTBbbm7eAKyOxESkKrorieND-KoZZ9mo,421
100
- pyxcp/scripts/xcp_info.py,sha256=ZRwXIfQNw4KSrAw-9VlNMpzKzGPwkUasUiZ1SGBs8Hc,5649
101
- pyxcp/scripts/xcp_profile.py,sha256=ryJnx7cqQ40O05F3beuUEOthsiW_k9d_2wMf4Z9CWkc,615
102
- pyxcp/scripts/xmraw_converter.py,sha256=LvjiKAWHUKs5QZNiIDT-vdNgPG0Gioas2MzLJOo62-Y,684
103
- pyxcp/stim/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
- pyxcp/tests/test_asam_types.py,sha256=0M08q8dJIVx-rkUtFKTqUhhW9NkThYL83LW3d_yCols,587
105
- pyxcp/tests/test_binpacking.py,sha256=kxLwYNzop775BkV68WXBoXVnLIuP0y4EKIW7u9niMKc,7623
106
- pyxcp/tests/test_can.py,sha256=fLLATWZxZK3vG-jDwjkWSOCqzy1UmtdV304-3qD6kRQ,63996
107
- pyxcp/tests/test_checksum.py,sha256=ZQ9-7bpKBLNKk1jxQ61AKAVUTWReOBYCZ8ikNo2jmII,1808
108
- pyxcp/tests/test_daq.py,sha256=aSOYlm75BF6a-Av4-hWSyWKbV8Vzu_Ym2ugiE9UhRP0,5551
109
- pyxcp/tests/test_daq_opt.py,sha256=GznXj4lVGfLWa8nJ2w3t_IlUQeq8HOspqEHbQq3zJ4I,13011
110
- pyxcp/tests/test_frame_padding.py,sha256=b7D0oh_n33iFhi_FKav6LkA0smJB4vg5bTMKu-jIaf0,3205
111
- pyxcp/tests/test_master.py,sha256=7bnd4M-F0BaavRuhGo5Jq9MxhGTr6MJBOupZtE82pSc,71440
112
- pyxcp/tests/test_transport.py,sha256=vv7x7-rHPbmHc7BR8qcXx_Yy8STu1za1OzJmeuUSF14,2487
113
- pyxcp/tests/test_utils.py,sha256=SrURAFc_6jtHng3PSZ5gpqXzVBVuPoMPB0YNvOvaIE0,880
114
- pyxcp/timing.py,sha256=zE6qPqOuidg6saNt7_zmbQgufxL9Id6akVYhAtpweQc,1705
115
- pyxcp/transport/__init__.py,sha256=31PaQLj76n5pXr68aJRWcYfrxEYWWgYoe9f_w3jZxsc,438
116
- pyxcp/transport/base.py,sha256=n_tCkebmpq3WXRZncOP5XWgUnSavaBBm3oGZhpeCF9U,16352
117
- pyxcp/transport/base_transport.hpp,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
- pyxcp/transport/can.py,sha256=Sm2qu5JOSZ-f-PdgHVknTm1JTAH_L2DNxTxb5OJUCpI,18806
119
- pyxcp/transport/eth.py,sha256=xPzN2oSALoPKJVvZpBljPSV1AxfpjRusOzymO-TD1Rw,8711
120
- pyxcp/transport/sxi.py,sha256=kWB9x5M1pS7GBtBW6R65KBX7zDI9zcRRZhFM8frmzU0,4760
121
- pyxcp/transport/transport_wrapper.cpp,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
- pyxcp/transport/usb_transport.py,sha256=JuYrwkWsUdibdVNA57LBEQT3a3ykOgWPdWcfqj96nDE,8343
123
- pyxcp/types.py,sha256=mjp3FhsTTbS3D5VuC-dfdbMql0lJwEfbZjf8a2pHi1o,26158
124
- pyxcp/utils.py,sha256=_ag2QMt0IxVhiCLG5BIO8JzIGt-rdqYrY7DRAPQ4AtA,3530
125
- pyxcp/vector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
- pyxcp/vector/map.py,sha256=7Gnhvr79geMeqqGVIJPxODXGwABdNDinnqzhpooN5TE,2306
127
- pyxcp-0.23.3.dist-info/entry_points.txt,sha256=LkHsEwubm30s4oiyCy0cKj6k97ALvQ6KjAVdyEcqu7g,358
128
- pyxcp-0.23.3.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
129
- pyxcp-0.23.3.dist-info/METADATA,sha256=wQmqlFOaiVIYsJGLg5m2M0aHyit3Ofwl7T1FEjWiWNg,11688
130
- pyxcp-0.23.3.dist-info/WHEEL,sha256=Ca9zjT46y31Ut03rEER57hGhjj1wKsWlq-aros9fuJI,98
131
- pyxcp-0.23.3.dist-info/RECORD,,