Bluetooth Service Discovery


Nachdem die Geräte in der Umgebung erkannt wurden, müssen die einzelnen Geräte nach den von ihnen angebotenen Services durchsucht werden. Die Funktionalität der Service Discovery wird in der Bluetooth-API durch die Klassen DiscoveryAgent, DiscoveryListener, ServiceRecord, DataElement und UUID abgebildet.

Die Services eines Geräts werden in der Service Discovery Database (SDDB) geführt, welche aus einer Collection von ServiceRecord-Objekten besteht.

Die Klasse UUID (Universal Unique Identifier) identifiziert Bluetooth Protokolle wie SDP, L2CAP, FTP, OBEX etc. und Bluetooth-Profile wie z. B. GAP und SPP eindeutig. Mittels der UUID wird ein Gerät mit der Unterstützung für ein bestimmtes Protokoll oder Profil gesucht.

Hier einige festgelegte Werte für die Protokolle:

 

PROTOCOL UUID (DEZIMAL) UUID (HEXADEZIMAL)

SDP 1 0x0001

RFCOMM 3 0x0003

L2CAP 256 0x0100

HTTP 12 0x000C

FTP 10 0x000A

TCP 4 0x0004

IP 9 0x0009

UDP 2 0x0002

BNEP 15 0x000F

OBEX 8 0x0008

TCS-BIN 5 0x0005

 

Festgelegte Werte für Profile:

PROFILE SERVICE NAME UUID(Dezimal.) UUID (Hexadezimal)

Serial Port SerialPort 4353 0x1101

Dial-up Networking LANAccessUsingPPP 4354 0x1102

Dial-up Networking DialupNetworking 4355 0x1103

Object Push OBEXObjectPush 4357 0x1105

Object Push OBEXFileTransfer 4358 0x1106

Cordless Telephony CordlessTelephony 4361 0x1109

Audio/Video Control A/V_RemoteControl 4366 0x110E

Intercom Intercom 4368 0x1110

Fax Fax 4369 0x1111

Generic Access Headset 4360 0x1108

Generic Access HeadsetAudioGateway 4370 0x1112

Handsfree Handsfree 4382 0x111E

Handsfree HandsfreeAudioGateway 4383 0x111F

Basic Printing BasicPrinting 4386 0x1122

Basic Printing PrintingStatus 4387 0x1123

Die Klasse DiscoveryAgent, welche auch für die Device Discovery benutzt wird, ist sowohl für die Suche nach Services, als auch für die Suche nach Geräten zuständig. Um Services auf RemoteDevices zu finden, werden die Methoden selectService() und searchServices() benutzt.

Die Methode searchServices() erwartet als Übergabeparameter ein int[] attrSet, mit den gewünschten Attributen, ein UUID[] uuidSet, welches die UUIDs enthält, nach welchen gesucht wird sowie die zu durchsuchende RemoteDevice und den DiscoveryListener. Wenn ein passender Service auf dem Gerät gefunden wird, werden die entsprechenden Methoden ( serviceSearchCompleted(), servicesDiscovered() )der DiscoveryListener – Klasse aufgerufen.

Um einen bestimmten Service auf irgendeinem Gerät in der Umgebung zu finden, wird die Methode selectService() verwendet. Über eine UUID als Übergabeparameter kann wird der Service eindeutig identifiziert, es ist mit dieser Methode im Gegensatz zu searchServices() nicht möglich, nach mehreren UUIDs zu suchen.

Bei der DiscoveryListener-Klasse wird diesmal die Callback-Methode servicesDiscovered() aufgerufen, wenn ein Service gefunden wurde. Als Übergabeparameter bekommt sie eine Transaction-ID sowie ein Array von ServiceRecord-Objekten. Von einem ServiceRecord-Objekt kann unter anderem eine connectionURL ( getConnectionURL() )abgerufen werden, welche benötigt wird um eine Verbindung zum Kommunikationspartner aufzubauen.

Alle Attribute in einem ServiceRecord-Objekt werden als javax.bluetooth.DataElement – Objekt abgelegt.

Bluetooth API JSR 82

 

 

 



Ähnliche Artikel zu "Bluetooth Service Discovery":


Wenn Du noch Fragen zum Thema Bluetooth Service Discovery hast, dann schreib einfach einen Kommentar - oder schau dir meine Buchtipps an:

Wie ist DEINE Meinung zum Thema Bluetooth Service Discovery?

Schreib sie einfach als Kommentar:

You must be logged in to post a comment.




karbacher.org © Bluetooth Service Discovery