chrizog / someipy

A Python Library implementing the SOME/IP Protocol

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

someipy - A Python Library for the SOME/IP Protocol

someipy is a Python library implementing the SOME/IP protocol, including the SOME/IP SD (Service Discovery) in Python. It's perfectly suited for fast prototyping of applications that need to provide (server) or use (client) SOME/IP services from other ECUs.

someipy also supports serialization and deserialization of SOME/IP payloads, which is a unique feature compared to other libraries.

someipy is still under development; therefore, it does not yet support all features of the SOME/IP and SOME/IP Service Discovery protocol specification.

someipy is based on the specification version of R22-11:

The library is currently developed and tested under Ubuntu 22.04 and Python 3.12.

Installation

The package can be installed from PyPi.

pip install someipy

Example Applications

In the directory example_apps, examples including explanations, can be found for using the someipy library. In temperature_msg.py, a payload interface "TemperatureMsg" is defined, which can be serialized and deserialized. In send_events.py, the service discovery and two services are instantiated. The "TemperatureMsg" is serialized and used as the payload for sending events.

Supported Features, Limitations and Deviations

The library is still under development. The current major limitations and deviations from the protocol specifications are listed below.

SOME/IP

  • Events (and field notifiers) are supported.
  • Methods are only supported on server side (offering methods). Calling methods (clients) is not supported yet.
  • Only unicast services are supported.
  • SOME/IP-TP is not supported.
  • IPv6 endpoints are not supported.
  • Session handling is supported only for SOME/IP-SD and not for SOME/IP messages transporting events.

Service Discovery

  • Configuration and load balancing options in SOME/IP SD messages are not supported.
  • TTL of Service Discovery entries is not checked yet.
  • The Initial Wait Phase and Repetition Phase of the Service Discovery specification are skipped. For simplification, the Main Phase is directly entered, i.e. SD Offer Entries are immediately sent cyclically.
  • Multiple Service Discovery entries are not packed together in a single SD message, which is sent via UDP.

De-/Serialization

  • Only fixed size arrays are supported. Dynamically sized arrays are not supported.
  • Optional length fields for SOME/IP arrays are not supported.
  • Strings are not supported yet.
  • Configuration of padding is not supported yet.

About

A Python Library implementing the SOME/IP Protocol


Languages

Language:Python 94.3%Language:C++ 4.5%Language:CMake 0.8%Language:Shell 0.5%