Kommunikationsprotokoll
Nach dem Aufbau einer Verbindung fährt der Software API Server eine wohldefinierte Kommunikation mit einer Komponente über den Austausch von Paketen. In der Anmeldephase ist dieses Protokoll strikt einzuhalten. Im danach folgenden Produktivbetrieb werden Pakete im Allgemeinen spontan übermittelt.
Eine in neuroomNet bekannte Komponente hat den Komponentenzustand OFFLINE solange der Anmeldevorgang nicht abgeschlossen ist. Bei der Erstanmeldung einer Komponente bleibt diese in neuroomNet unsichtbar, bis die Anmeldung vollständig abgeschlossen ist.
Anmeldung einer Komponente
Der Dienst sendet ein GetComponentInfo Paket, das die Komponente mit einem ComponentInfo Paket beantworten muss. In diesem Zuge werden vor allem die verwendeten Versionen des Software API Protokolls und die eindeutige Kennung ausgetauscht - in der aktuellen Version ist die Protokollversion eher zweitrangig, zukünftig müssen sich aber Komponente und Dienst aneinander anpassen. Zur Verwendung der eindeutigen Kennung wird in der allgemeinen Konzeptbeschreibung ja schon einiges gesagt.
Nachdem der Dienst auf diese Art die Komponente kennengelernt hat wird diese mit einem GetActions Paket aufgefordert, alle angebotenen neuroomNet Komponentenaktionen mittels DeclareAction Paketen zu melden. Wenn alle Aktionen auf diese Art übermittelt wurden, schließt die Komponente den Vorgang mit einem EndOfList Paket ab - es ist durchaus zulässig, davor keine Aktionen anzumelden. Es dürfen keine zwei Aktionen mit der selben Kennung angemeldet werden (Case-Sensitiv).
Danach wiederholt sich der ganze Vorgang für neuroomNet Ereignisse analog - GetEvents, DeclareEvent und EndOfList. Auch hier ist die Anmeldung optional, eine Komponente muss weder Aktionen oder Ereignisse bereitstellen. Wie bei den Aktionen muss die Kennung der Ereignisse aber eindeutig sein.
Das folgende Sequenzdiagramm illustriert diesen Workflow der Anmeldung einer Komponente:
Zustand der Komponente
Nach erfolgter Anmeldung kann eine Komponente jederzeit ein Status Paket mit dem aktuellen Zustand versenden. Unabhängig davon wird der Dienst in einem bestimmten Zeitintervall (aktuell 30 Sekunden) über ein GetStatus Paket eine solche Meldung anfordern. Wird über einen bestimmten Zeitraum (in der aktuellen Version nicht implementiert) keine Zustandsmeldung erhalten, so wird die Komponente als fehlerhaft vermerkt.
Ausführen von Aktionen
Sobald die Komponente das Anmeldungsprotokoll vollständig durchlaufen hat, kann der Dienst nach Eingang einer neuroomNet Komponentenaktion die Komponente über ein DoAction Paket auffordern, eine in der Anmeldephase definierte Aktion auszuführen. Im Vorfeld wurde bereits vom Dienst sichergestellt, dass die Aktion der Komponente auch tatsächlich bekannt ist. Zudem wurden alle Parameter gemäß den Vorgaben der Komponente geprüft und für gültig befunden.
In der aktuellen Version 1.0 der Software API wird von der Komponente keine Antwort auf die Ausführung einer Aktion erwartet.
Auslösen von Ereignissen
Sobald die Komponente in den Produktivbetrieb gewechselt ist kann sie jederzeit ein DoEvent Paket an den Dienst übermitteln. Der Dienst prüft, ob es sich um ein in der Ansmeldephase von der Komponente gemeldetes Ereignis handelt und prüft alle Parameter gemäß den dazugehörigen Vorgaben. Sind diese alle gültig, so wird ein entsprechendes neuroomNet Komponentenereignis ausgelöst.
In der aktuellen Version 1.0 der Software API ist nicht vorgesehen, dass der Dienst den Empfang, die Weitergabe oder gar die Auswertung des Ereignisses bestätigt