Warum ein Comm-Framework?

Für proprietäre Projekte ist es statthaft, Nachrichten direkt z.B. über eine serielle Schnittstelle zu übertragen. Wenn aber Logging-Daten dazukommen oder der µC über spezielle Nachrichten z.B. eine neue ID oder MAC-Adresse erhalten soll, dann ist es nötig, Nachrichten über ein Schichtenmodell wie ISO/OSI zu sortieren und an verschiedene Empfänger innerhalb des Gerätes zu routen.

Comm-Framework

Das Comm-Framework ist ein generisches Framework zum Austausch von Nachrichten zwischen verschiedenen Geräten. Es orientiert sich am ISO/OSI Standardmodell und besteht aus den drei Teilen Provider, CommTransceiver und CommUser.

Provider

Provider bilden die Grenze zum Betriebssystem bzw. zum Hardware Abstraction Layer für Embedded Devices. Sie stellen eine paket- oder streamorienterte Verbindung inkl.Datensicherungsschicht zur Verfügung.

CommTransceiver

Jeder Comm-Teilnehmer kann über ein oder mehrere Nachrichten-Interfaces mit physikalischen Netzwerken verbunden sein. Der Begriff CommTransceiver beschreibt dabei ein Interface für das Senden und Empfangen von Nachrichten über genau eine physikalische Verbindung, z.B. eine serielle Schnittstelle. Über diese physikalische Verbindung können mehrere Klienten (sogenannte CommUser) gleichzeitig über verschiedene Protokolle Daten austauschen. CommTransceiver werden innerhalb jedes Gerätes über eine ID eindeutig identifiziert.

CommChains

Die innerhalb jedes CommTransceivers definierten Protokolle werden in einer CommChain zusammengefasst. Jedes definierte Protokoll bekommt eine eindeutige ID und jedes Protokoll (mit Ausnahme von DirectNetwork und DirectTransport) enthält im Header ein Feld für das Protokoll der nächsthöheren Schicht. Damit ist ein Multiplexing von Protokollen auf jeder einzelnen Kommunikationsschicht möglich.

Die folgenden Layer sind innerhalb des Comm-Frameworks definiert:

Layer (ISO)                   Name                                   Aufgabe
7                             Application                            Nachrichtenverarbeitung
4                             Transport                              Multiplexing über Ports
3                             Network                                Routing zum Ziel
                              Adaptation                             Serialisierung, Fragmentierung
                              Provider                               API zum Betriebssystem
                              HAL/Implementor                        Schnittstelle zum µC
2                             DataLink                               Sicherungsschicht
1                             Physical                               Physikalische Übertragung

Die CommChain innerhalb jedes CommTransceivers definiert dabei Protokolle auf den Schichten Transport, Network und Adaptation.

CommUser

Ein CommUser ist ein Nutzer eines oder mehrerer CommTransceiver. Beispiele für CommUser sind z.B. appicals-Geräte und Klienten, Protokolle zur AutoAdress-Vergabe oder zur Bestimmung von Gatewayknoten. Ein CommUserRawData erlaubt das Senden und Empfangen von beliebigen ByteArrays auf der Applikationsebene.

CommUserSCF

Jeder appicals-Teilnehmer implementiert einen CommUserSCF, der SixML-kompatible Nachrichten über alle angeschlossenen CommTransceiver empfängt und/oder weiterleitet (hier in blau dargestellt).

Für eine serielle Schnittstelle wird z.B. vereinbart, das für die Transportschicht STRAP mit SCF-exklusiven Ports, für die Netzwerkschicht DirectNetwork und für die Adaptierungsschicht das Serializer-Protokoll verwendet werden. Durch diese Informationen kann der CommTransceiver über eine serielle Schnittstelle empfangene Nachrichten parsen und an den CommUserSCF in der Applikationsschicht weiterreichen. Dieser übernimmt dann das Parsing und die Verarbeitung der enthaltenen SixML-Daten.