SOME/IP Simulation Teil 1 Server
Dieser Artikel beschreibt die Grundlagen einer SOME/IP Simulation zwischen einem Server und einem Client. Im ersten Teil wird ein Server konfiguriert. Es werden u.a. verschieden Einstellungen für die zu versendenden Service-Discovery bzw. SOME/IP Nachrichten gemacht. Zusätzlich wird noch definiert wie auf eingehende SOME/IP Nachrichten reagiert werden soll.
Zustandsautomat des Servers initialisieren
Zuerst müssen grundlegende Parameter des Zustandsautomaten für die Service-Discovery Nachrichten definiert werden. Für das Aufstarten des Servers gibt es die Werte InitialDelayMin, InitialDelayMax, RepetitionBaseDelay und RepetitionMax. Diese Werte definieren wie das zeitliche Verhalten und wie die Wiederholrate der ersten Service-Discovery Nachrichten sind. Mit dem Parameter CyclicAnnounceDelay wird die Wiederholrate der Service-Discovery Nachrichten in Millisekunden in der Hauptphase des Zustandsautomaten definiert.
Services des Servers konfigurieren
Welche Services der Server zur Verfügung stellt müssen als nächstes konfiguriert werden. Der wichtigste Parameter eines Services ist die Service-ID. Zusätzliche Parameter wie TTL, Instance-ID und Major-Version sind die Basisinformationen für die Bereitstellung von Service-Discovery Nachrichten für den jeweiligen Service. Dieser Service wird über einen sogenannten Applicationendpoint übertragen. Dieser Applicationendpoint wird definiert über die Parameter IP-Adresse, Port und Protokoll.
Parameter für Service-Discovery
Auch Service-Discovery Nachrichten werden über bestimmte Mechanismen übertragen. Für die allgemeine Übertragung von Service-Discovery Nachrichten werden UDP Multicast-Nachrichten verwendet. In diesem Fall hat der Server noch kein Wissen über einen oder mehrere Clients. Es werden dabei nur Nachrichten verbreitet, die Informationen über Services enthalten, die dieser Server anbietet. Als Minimum an Konfigurationsparameter benötigt man die Multicast-Adresse, die IP-Adresse und den Port. Als Protokoll ist immer standardmäßig UDP definiert.
Über diese Callbacks wird auf eingehende SOME/IP Nachrichten reagiert. Ruft ein Client über eine SOME/IP Nachricht beim Server einen bestimmten Service auf, wird dieser Aufruf an den jeweiligen Callback weiter geleitet. Der Server kann nun darauf reagieren und eine Antwort über eine SOME/IP Nachricht an den Client zurückschicken.
Der Header einer SOME/IP Nachricht für die Antwort vom Server zum Client kann schon vorkonfiguriert werden. Neben den Service-ID und Method-ID gibt es dafür noch die Parameter Typ, Protokoll-Version und Interface-Version. An diesen SOME/IP Header werden vor dem Versenden noch die jeweiligen Daten angehängt.
Die Callbackfunktion die beim Empfang einer Nachricht mit der Service-ID 0xa und der Method-ID 0x15 ausgelöst wird, sieht wie folgt aus. Als SOME/IP Nachricht wird nur eine Antwort mit dem Typ OK geschickt.
Mit all diesen Informationen kann der Server gestartet werden. Nach dem Start werden Service-Discovery Nachrichten mit den Services des Servers übertragen.
Nach dem Start sieht man auf dem Bus folgende Service-Discovery Nachrichten mit dem Analysetool Wireshark.