Strukturierte Signale¶
Neben regulären Signalen, welche zu einem Zeitpunkt einen skalaren Wert oder eine bestimmte Datenstruktur, wie z.B. eine Kalibrierkurve haben, werden manche Signale als sogenannte strukturierte Signale eingelesen. Ein typisches Beispiel ist hierfür das Lesen von SOME/IP-Events aus einer PCAP-Datei. Ein Event ist eine Datenstruktur mit einer vielzahl von Attributen und kann auch verschachtelt sein. Oft ist es unpraktisch nur ein bestimmtes Attribut der Struktur einzulesen, daher ist es möglich das Event als Ganzes einzulesen - man erhält innerhalb der Traceanalyse Zugriff auf ein strukturiertes Signal.
Event "bikeDetection"
|-- status
|-+ statistics
|- timeRunning
|- totalBikes
|- numberOfBikes
|-+ bikes [Liste von bis zu fünf Elementen vom Typ Bike]
|- distance
|- heading
|- velocity
Im Folgenden werden die Grundlagen zu strukturierten Signalen erläutert. Dabei soll
SigBikeDetection das eingelesene strukturierte Signal sein.
Für weitere Informationen kann die API-Dokumentation für
StructuredSignals
herangezogen werden.
Attributzugriff¶
Attribute können weitere strukturierte Signale sein oder einfache Wertesignale (Blattknoten).
Möchte man auf Attribute zugreifen, ist dies in Ausdrücken von Berechnungsschritt, Triggerblock und
innerhalb von Traceschrittvorlagen über einfache Punktnotation möglich:
SigBikeDetection.numberOfBikes. Soll ein Triggerblock Bereiche freischneiden, wo mindestens ein
Bike gefunden wird, so kann man als Starttrigger SigBikeDetection.numberOfBikes > 0 angeben.
Indizierung¶
Strukturierte Signale können als Attribute auch Listen von Skalaren oder Strukturen enthalten. Um auf bestimmte Elemente der Liste zuzugreifen, ist daher eine umfangreiche Indizierung möglich.
Zugriff auf das erste Bike im Attribut bikes ist folgendermaßen möglich:
SigBikeDetection.bikes[0].
Unter der Annahme, dass jedes Bike ein Attribut mit einer Liste von Persons hätte, könnte man auch
explizit auf die erste Person zugreifen: SigBikeDetection.bikes[0].persons[0]
Als experimentelles Feature ist auch das komplexe Indizieren z.B. mit anderen Signalen möglich (siehe auch Maskierung).
Maskierte Werte¶
Eine wesentliche Besonderheit von strukturierten Signalen ist, dass Werte von Blattknoten maskiert
sein können. Nimmt man an, dass bikes eine dynamische Liste mit einer wechselnden Anzahl an
Bikes ist, so ist es kritisch, wenn man immer in einer Berechnung auf die Entfernung des fünften
Bikes via SigBikeDetection.bikes[4].distance zugreift. Sind zu einem Zeitpunkt weniger als 5
Elemente in der Liste bikes, so wird der Zugriff zu einem maskierten Wert führen und damit
signalisieren, dass der aktuelle Wert ungültig ist.
Maskierte Werte führen zu einem speziellen Verhalten bei Vergleichen und anderen Operationen.
SigBikeDetection.bikes[4].distance <= 5.0 führt an jenen Stellen, wo distance maskiert ist
auch zu einem maskierten Wert. Ein Berechnungsschritt wird zu einem Zeitpunkt mit maskierten Wert
als Ergebnis des Ausdrucks dokumentieren, dass er seine Bewertung nicht prüfen konnte. In Hinblick
auf die Bewertung verhalten sich maskierte Werte somit genau so, als ob es zu diesem Zeitpunkt gar
keinen Wert gab.