Abonnieren von Anwesenheitsereignissen

Ein Anwesenheitsabonnement wird als eindeutiges offenes Handle innerhalb des Treibers dargestellt. Jedes Mal, wenn der NFP-Anbieter von nicht proximate zu proximate oder proximate wechselt, wird ein Ereignis vom Treiber an den Client ausgelöst.

Hinweis Diese Schnittstelle bietet derzeit nicht die Möglichkeit, zu ermitteln, welches proximate-Gerät entfernt wurde oder welche Abonnements von welchem proximate-Gerät kommen, wenn zwei Geräte beide proximate sind.

Anwesenheitsereignisse werden mithilfe des typischen Abonnementpfads implementiert. Nachrichten mit dem Protokoll "DeviceArrived" oder "DeviceDeparted" müssen als spezielle Abonnements interpretiert werden. Die Ankunftsnachricht MUSS die erste Nachricht sein, die unmittelbar vor der Übermittlung empfangener Nachrichten übermittelt wurde. Die Abflugnachricht MUSS die letzte Nachricht sein, die übermittelt wurde, nachdem keine weiteren Nachrichten mehr möglich sind.

Subscription

Dies sieht wie ein reguläres Abonnement aus, mit Ausnahme der folgenden spezifischen Anforderungen.

Ein Näherungsgerät und sein Treiber sind am Protokollfluss des Empfangens von Nachrichten von einem proximaten Gerät beteiligt.

Erforderliche Aktionen

Der Treiber MUSS doppelte Abonnements akzeptieren und melden, auch wenn sie vom gleichen Client abonniert wurden.

  • Kurz bevor die erste Nachricht empfangen wird, muss der Treiber so handeln, als ob eine virtuelle "DeviceArrived"-Nachricht soeben empfangen wurde.

  • Beim Übergang des Anbieters zur Nicht-Nähe muss der Treiber so handeln, als ob eine virtuelle "DeviceDeparted"-Nachricht soeben empfangen wurde.

  • Die Nachricht "DeviceDeparted" DARF NICHT an den Client übermittelt werden, bevor alle anderen Nachrichten von diesem Client verarbeitet wurden.

  • Die Nutzlast für eine DeviceArrived-Nachricht MUSS ein einzelner DWORD-Wert sein, bei dem die hohen 31 Bits auf 0 festgelegt sind und nur dann das geringste signifikante Bit festgelegt ist, wenn das erste Gerät, das proximate wird, zu einer dauerhaften bidirektionalen Kommunikation fähig ist. Für NFC entspricht dies der LLCP-Unterstützung.

  • Wenn das erste Gerät, das proximat wird, nur ein Tagtypgerät ist (z. B. ein NFC Forum-Tag), muss der Treiber das am wenigsten signifikante Bit in der Nutzlast der DeviceArrived-Nachricht löschen.

  • Die Nutzlast für eine DeviceDeparted-Nachricht MUSS ein einzelner DWORD-Wert mit dem Wert 0 sein.