Freigeben über


Kommunikationsmodell, Synchronisierung und Abbruch

Auf hoher Ebene werden in dieser Dokumentation zwei Objekttypen definiert:

  1. Ein Adapter, der das Wi-Fi Gerät darstellt.
  2. Ein Port, der verschiedene MAC- und PHY-Entitäten im Adapter darstellt.

Weitere Informationen zu diesen Objekten finden Sie unter WLAN-Gerätemodell und -Objekte. Befehle, eine Reihe zulässiger Vorgänge, werden für jedes dieser Objekte definiert. Befehle werden weiter in Eigenschaften und Aufgaben kategorisiert.

Eigenschaftsbefehle sind einfache Befehle (z. B. Abrufen der Signalstärke, Abrufen der aktuellen BSS-Liste und Festlegen des Paketfilters). Sie werden in kurzer Zeit abgeschlossen und sind nicht kompliziert zu implementieren.

Aufgabenbefehle sind komplexe Vorgänge, deren Abschluss mehrere Sekunden dauern kann. Beispielsweise wird ein Wi-Fi Scanvorgang in diesem Modell als Aufgabe kategorisiert.

Alle Befehle, die für die IHV-Komponente ausgegeben werden, können asynchron ausgeführt werden.

Sequenz von Nachrichten

Die Reihenfolge der Meldungen für jeden Befehlstyp ist in den folgenden Abbildungen dargestellt.

Abbildung 1 zeigt die Taskbefehlssequenz.

wdi-Befehlstaskflow.

Abbildung 2 zeigt den Eigenschaftenbefehlsfluss.

Befehlsfluss der wdi-Eigenschaft.

Abbildung 3 zeigt den Fluss für Hinweise.

wdi-Anzeigefluss.

Synchronization

Um die Implementierung der IHV-Komponente einfach zu halten, definiert das Modell die folgenden Synchronisierungsregeln:

  1. Befehle werden immer zwischen Den Schritten 1 und 3 in Abbildung 1 und Abbildung 2 serialisiert. Beispielsweise werden keine neuen Befehle an den Adapter ausgegeben, bis die Anzeige des Adapters in Schritt 3 erfolgt. Dies bedeutet auch, dass alle Eigenschaften miteinander serialisiert werden.
  2. Alle Aufgabenbefehle werden zwischen Den Schritten 1 und 4 in Abbildung 1 serialisiert. Beispielsweise wird jeweils nur eine Aufgabe auf dem Adapter ausgeführt. Sobald eine Aufgabe gestartet wurde (Schritt 3 in Abbildung 1), erhält der Adapter möglicherweise Eigenschaftenbefehlsanforderungen. Sowohl Schritt 3 als auch Schritt 4 müssen abgeschlossen werden, bevor der nächste Taskbefehl gesendet wird.
  3. Eigenschaftssatzbefehle sind von zwei Typen : solche, die gesendet werden können, nachdem die Aufgabe gestartet wurde, und die Befehle, die mit ausstehenden Aufgaben serialisiert werden müssen.
  4. Der Datenpfad wird nicht mit dem Befehlspfad serialisiert, außer in bestimmten Fällen, die weiter unten in der Dokumentation beschrieben werden.
  5. Der Synchronisierungsbereich ist ein Bereich auf Adapterebene.
  6. Eine Teilmenge von Aufgaben kann abgebrochen werden, nachdem sie gestartet wurden. Dies bedeutet, dass B vom Host abgebrochen werden kann, wenn ein Vorgang mit höherer Priorität (A) eintrifft, während ein Vorgang mit niedrigerer Priorität (B) aussteht. Die Rationalisierung von Priorisierungsentscheidungen geht über den Rahmen dieser Dokumentation hinaus und hängt von Benutzerszenarien ab.
  7. Bei Aufgabenbefehlen kann Schritt 4 erfolgen, bevor Schritt 3 abgeschlossen ist. Wenn jedoch Schritt 4 angegeben ist, kann Schritt 3 nicht fehlschlagen.

Abbruch

Die meisten Aufgaben können abgebrochen werden, nachdem sie gestartet wurden. Der Zweck des Abbruchs besteht darin, den Adapter auszulösen, um die Aufgabe schnell abzuschließen, indem die vollständige Anzeige gesendet wird (Schritt 4 in Abbildung 1). Abbruch ist nur im Fenster zwischen Den Schritten 3 und 4 in Abbildung 1 zulässig. Wenn der Abbruch empfangen wird, muss der Adapter die Aufgabe innerhalb von 50 Millisekunden abschließen. Bei den meisten Befehlen muss der Adapter beim Empfang des Abbruchs kein Rollback in den Zustand ausführen, bevor der Befehl gestartet wurde. Racebedingungen bestehen zwischen dem ausgegebenen Abbruchbefehl und dem Eintreffen von Vervollständigungen bei der Hostkomponente. Wenn die IHV-Komponente in diesem Fall einen Abbruch für eine aufgabe erhält, die sie bereits abgeschlossen hat, ist keine weitere Aktion der IHV-Komponente erforderlich, um den Abbruchvorgang zu verarbeiten. Das Abbrechen einer Aufgabe ist einfach ein Signal, dass die IHV-Komponente den Vorgang so schnell wie möglich sauber sollte. Die Semantik der Befehlsvervollständigung wird nicht geändert, wenn ein Abbruch ausgegeben wird. Sowohl die Vervollständigung für den Abbruch-Eigenschaftsbefehl als auch die Anzeige für den Vorgangsabschluss müssen in allen Fällen entsprechend benachrichtigt werden.

Es wird erwartet, dass Eigenschaften in kurzer Zeit abgeschlossen werden, sodass sie nicht abgebrochen werden können.

Taskbefehle verfügen über einen eindeutigen Bezeichner, mit dem der Host einen bestimmten Befehl für den Abbruch als Ziel verwenden kann.