Steuern von Geräten
UPnP-basierte Geräte werden von den verfügbaren Diensten gesteuert. Ein UPnP-Dienst ist die kleinste steuerbare Entität in der UPnP-Architektur. Geräte machen einen Dienst für jede primäre Funktion verfügbar, die sie ausführen. Komplexe Geräte bestehen in der Regel aus mehreren einfachen Diensten und anderen Geräten.
Ein Dienst besteht aus einer Reihe von Zustandsvariablen und einer Reihe von Aktionen, die eine Anwendung aufrufen kann, die mit diesen Zustandsvariablen arbeiten. In der Control Point-API mit UPnP-Technologie werden Dienste durch Dienstobjekte dargestellt, die die IUPnPService-Schnittstelle verfügbar machen.
Ein Diensttyp definiert die Zustandsvariablen und Aktionen, die von einem bestimmten Dienst unterstützt werden. Der Diensttyp für einen Uhrdienst definiert beispielsweise GetTime- und SetTime-Aktionen sowie eine Time-Zustandsvariable.
Eine Dienst-ID unterscheidet mehrere gängige Diensttypen innerhalb eines einzelnen Geräts. Beispielsweise kann es zwei Uhrdienste in einem Wecker geben, einen für die reguläre Uhr und den anderen für den Wecker. Es muss eine Möglichkeit geben, zwischen den beiden Diensten zu unterscheiden, die identische Diensttypen aufweisen. Die Dienst-ID bietet eine eindeutige Möglichkeit, eine instance eines Diensttyps zu identifizieren. Anschließend wird diese Dienst-ID verwendet, um über die IUPnPServices-Auflistung auf den richtigen Dienst zuzugreifen, da der Diensttyp kein eindeutiger Bezeichner ist. Die IUPnPService-Schnittstelle ermöglicht es Anwendungen auch, eine Rückruffunktion beim Dienstobjekt zu registrieren. Wenn sich der Wert der Zustandsvariable eines Diensts ändert, ruft das Dienstobjekt den registrierten Rückruf auf, um die Anwendung über die Änderung zu benachrichtigen. Das UPnP-Framework ruft diesen Rückruf auch auf, um Anwendungen zu benachrichtigen, wenn ein Dienst instance nicht mehr verfügbar ist. Der Dienst kann aus verschiedenen Gründen nicht verfügbar sein, z. B. aus vorübergehenden Netzwerkfehlern.
Weitere Informationen finden Sie in den folgenden Themen:
- Abrufen von Dienstobjekten
- Registrieren eines Rückrufs
- Abfragen von Zustandsvariablen
- Aufrufen von Aktionen