Metadata-Version: 2.1
Name: udsoncan
Version: 1.15
Summary: Implementation of the Unified Diagnostic Service (UDS) protocol (ISO-14229) used in the automotive industry.
Home-page: https://github.com/pylessard/python-udsoncan
Download-URL: https://github.com/pylessard/python-udsoncan/archive/v1.15.tar.gz
Author: Pier-Yves Lessard
Author-email: py.lessard@gmail.com
License: MIT
Keywords: uds,14229,iso-14229,diagnostic,automotive
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Development Status :: 4 - Beta
Classifier: Operating System :: POSIX :: Linux
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator
Requires-Python: >=3.0
License-File: LICENSE.txt

python-udsoncan

###############





.. image:: https://app.travis-ci.com/pylessard/python-udsoncan.svg?branch=master



This project is an implementation of the Unified Diagnostic Services (UDS) protocol defined by ISO-14229 written in Python 3. The code is published under MIT license on GitHub (pylessard/python-udsoncan).



Documentation

-------------



The documentation is available here :   http://udsoncan.readthedocs.io



Requirements

------------



 - Python 3+



Installation

------------



using pip::



    pip install udsoncan



Example

-------



.. code-block:: python



   import SomeLib.SomeCar.SomeModel as MyCar



   import udsoncan

   from udsoncan.connections import IsoTPSocketConnection

   from udsoncan.client import Client

   from udsoncan.exceptions import *

   from udsoncan.services import *

   

   udsoncan.setup_logging()

   

   conn = IsoTPSocketConnection('can0', rxid=0x123, txid=0x456)

   with Client(conn,  request_timeout=2, config=MyCar.config) as client:

      try:

         client.change_session(DiagnosticSessionControl.Session.extendedDiagnosticSession)  # integer with value of 3

         client.unlock_security_access(MyCar.debug_level)   # Fictive security level. Integer coming from fictive lib, let's say its value is 5

         client.write_data_by_identifier(udsoncan.DataIdentifier.VIN, 'ABC123456789')       # Standard ID for VIN is 0xF190. Codec is set in the client configuration

         print('Vehicle Identification Number successfully changed.')

         client.ecu_reset(ECUReset.ResetType.hardReset)  # HardReset = 0x01

      except NegativeResponseException as e:

         print('Server refused our request for service %s with code "%s" (0x%02x)' % (e.response.service.get_name(), e.response.code_name, e.response.code))

      except (InvalidResponseException, UnexpectedResponseException) as e:

         print('Server sent an invalid payload : %s' % e.response.original_payload)



