Communicatiemodel, synchronisatie en afbreken

Op hoog niveau definieert deze documentatie twee typen objecten:

  1. Een adapter, die het Wi-Fi apparaat vertegenwoordigt.
  2. Een poort, die afzonderlijke MAC- en PHY-entiteiten in de adapter vertegenwoordigt.

Zie Wi-Fi apparaatmodel en -objectenvoor meer informatie over deze objecten. Opdrachten, een set toegestane bewerkingen, worden gedefinieerd voor elk van deze objecten. Opdrachten worden verder onderverdeeld in eigenschappen en taken.

Eigenschappenopdrachten zijn eenvoudige opdrachten (zoals signaalsterkte ophalen, huidige BSS-lijst ophalen en pakketfilter instellen). Ze worden in korte tijd voltooid en zijn niet ingewikkeld om te implementeren.

Taakopdrachten zijn complexe bewerkingen die enkele seconden in beslag kunnen nemen. Een Wi-Fi Scanbewerking wordt bijvoorbeeld gecategoriseerd als een taak in dit model.

Alle opdrachten die zijn uitgegeven aan het IHV-onderdeel kunnen asynchroon worden voltooid.

Volgorde van berichten

De volgorde van berichten voor elk type opdracht wordt weergegeven in de volgende afbeeldingen.

Op afbeelding 1 ziet u de taakopdrachtreeks.

wdi-opdrachttaakstroom.

In afbeelding 2 ziet u de opdrachtstroom van de eigenschap.

opdrachtstroom voor wdi-eigenschappen.

In afbeelding 3 ziet u het stroomdiagram voor indicaties.

wdi indicatiestroom.

Synchronisatie

Om de implementatie van het IHV-onderdeel eenvoudig te houden, definieert het model de volgende synchronisatieregels:

  1. Opdrachten worden altijd geserialiseerd tussen stap 1 en 3 in afbeelding 1 en afbeelding 2. Er worden bijvoorbeeld geen nieuwe opdrachten aan de adapter verleend totdat de indicatie van de adapter bij stap 3. Dit impliceert ook dat alle eigenschappen met elkaar worden geserialiseerd.
  2. Alle taakopdrachten worden geserialiseerd tussen stap 1 en 4 in afbeelding 1. Er wordt bijvoorbeeld slechts één taak tegelijk uitgevoerd op de adapter. Zodra een taak is gestart (stap 3 in afbeelding 1), kan de adapter opdrachtaanvragen voor eigenschappen ophalen. Stap 3 en stap 4 moeten worden voltooid voordat de volgende taakopdracht wordt verzonden.
  3. Opdrachten voor eigenschapsets zijn van twee typen: de ene kan worden verzonden nadat de taak is gestart, en de andere moet worden geserialiseerd met lopende taken.
  4. Het gegevenspad wordt niet geserialiseerd met het opdrachtpad, met uitzondering van specifieke gevallen die verderop in de documentatie worden beschreven.
  5. Het synchronisatiebereik is het bereik op adapterniveau.
  6. Een subset van taken kan worden afgebroken nadat ze zijn gestart. Dit betekent dat als een taak met een hogere prioriteit (A) binnenkomt terwijl een taak met een lagere prioriteit (B) uitstekend is, B door de host kan worden afgebroken. Rationalisatie van prioriteitsbeslissingen valt buiten het bereik van deze documentatie en is afhankelijk van gebruikersscenario's.
  7. Voor taakopdrachten kan stap 4 komen voordat stap 3 is voltooid. Als stap 4 echter wordt aangegeven, kan stap 3 niet mislukken.

Aborteren

De meeste taken kunnen worden afgebroken nadat ze zijn gestart. Het doel van het afbreken is om de adapter te activeren om de taak snel te voltooien door de volledige indicatie te verzenden (stap 4 in afbeelding 1). Afbreken is alleen toegestaan in het venster tussen stap 3 en 4 in afbeelding 1. Bij ontvangst van het afbreekverzoek moet de adapter de taak binnen 50 milliseconden voltooien. Bij de meeste opdrachten hoeft de adapter, na het ontvangen van de afbreking, niet terug te keren naar de toestand voordat de opdracht werd gestart. Er bestaan racevoorwaarden tussen de afgebroken opdracht die wordt uitgegeven en voltooiingen die binnenkomen bij het hostonderdeel. Als het IHV-onderdeel in dit geval een abort ontvangt voor een taak die al is voltooid, is er geen verdere actie nodig van het IHV-onderdeel om de bewerking te verwerken. Het afbreken van een taak is gewoon een signaal dat het IHV-onderdeel de taak zo snel mogelijk moet beëindigen. Semantiek voor opdrachtvoltooiing wordt niet gewijzigd als er een afgebroken opdracht wordt uitgegeven. Zowel de voltooiing van de opdracht voor het annuleren van de eigenschap als de indicatie dat de taak is voltooid, moeten in alle gevallen op de juiste wijze worden gemeld.

Eigendommen worden naar verwachting op korte termijn voltooid, zodat ze niet kunnen worden onderbroken.

Taakopdrachten hebben een unieke id waarmee de host een specifiek commando kan aansturen om af te breken.