All notable changes to the J2534-API library will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
-
J2534 Package: Complete low-level PassThru API implementation
api.py: High-level API functions with PassThruMsgBuilder classconfig.py: Singleton configuration for debug/exception modesconstants.py: Complete SAE J2534-1 protocol constants as IntEnum/IntFlagdll_interface.py: Modern ctypes DLL binding with automatic function resolutionexceptions.py: Comprehensive exception hierarchy with error codeslogging_utils.py: Debug logging with hex dump utilitiesstructures.py: All ctypes structures for J2534 message handling
-
AutoJ2534 Package: High-level vehicle communication interface
interface.py: J2534Communications class with auto-connect, filteringecu_parameters.py: Pre-defined connection configurations (Chrysler, SCI variants)negative_response_codes.py: Complete UDS negative response code mappings
-
J2534_REGISTRY Package: Windows registry device scanner
registry_scanner.py: J2534RegistryScanner class for device enumerationdevice_info.py: J2534DeviceInfo dataclass with protocol support flags
-
4 complete GUI example applications demonstrating J2534 usage:
- PyQt5 (full-featured professional application)
- Tkinter (no dependencies, built-in Python)
- CustomTkinter (modern themed UI)
- FreeSimpleGUI (rapid prototyping)
-
4 registry viewer GUI examples in
J2534_REGISTRY/examples/
Note: Dear PyGui and Flet were excluded due to compatibility issues with 32-bit Python (required for J2534 DLLs).
- Comprehensive README.md for each package
- Module docstrings with usage examples
- Function docstrings following Google style
- Type hints throughout all modules
- pip-installable with
pyproject.toml(PEP 517/518 compliant) - Optional dependencies for GUI frameworks
- Development dependencies for testing/linting
- All variable names now use
lowercase_with_underscoresconvention - All file names now use
lowercase_with_underscores.pyconvention - Constants use
UPPERCASE_WITH_UNDERSCORES - Classes use
PascalCase - Removed all abbreviations - variables are self-documenting
- Complete type hints for all public APIs
- Comprehensive docstrings with examples
- Inline comments explaining complex logic
- Magic numbers replaced with named constants
J2534/wrapper.py- Replaced byapi.pyJ2534/dll.py- Replaced bydll_interface.py+structures.pyJ2534/Define.py- Replaced byconstants.pyJ2534/Registry.py- Replaced byJ2534_REGISTRY/package
AutoJ2534/EcuParameters.py- Replaced byecu_parameters.pyAutoJ2534/Interface.py- Replaced byinterface.py
- Fixed
_protcol_stringtypo to_protocol_stringin interface.py - Fixed ConnectionConfig attribute compatibility issues
- Fixed FreeSimpleGUI import for PySimpleGUI licensing changes
- Initial release with basic J2534 PassThru support
- Basic DLL wrapper for PassThru functions
- Simple registry scanner for device discovery
- Basic message structures for CAN/ISO15765
- Code duplication in dll.py and wrapper.py
- Mixed naming conventions
- Limited documentation
- No pip installation support
-
Import paths changed:
# Old (1.x) from J2534 import wrapper from J2534.Define import ProtocolID # New (2.0) from J2534 import api from J2534.constants import ProtocolId
-
Class names changed:
# Old (1.x) from AutoJ2534.Interface import Interface # New (2.0) from AutoJ2534 import J2534Communications, j2534_communication
-
Constant naming:
# Old (1.x) ProtocolID.ISO15765 # New (2.0) ProtocolId.ISO15765 # Note: lowercase 'd' in Id
Most old imports are still available through compatibility aliases:
# These still work but are deprecated
from AutoJ2534 import Interface, EcuParameters- Update imports to use new lowercase module names
- Update constant references to new IntEnum classes
- Update exception handling for new exception hierarchy
- Enable debug mode during migration to verify behavior:
from J2534 import j2534_config j2534_config.enable_debug()