|
Introduction to Bluetooth
What
is Bluetooth?
What exactly
is Bluetooth? Well, simply stated, Bluetooth is a wireless
communication protocol. Since it's a communication protocol,
you can use Bluetooth to communicate to other Bluetooth-enabled
devices. In this sense, Bluetooth is like any other
communication protocol that you use every day, such
as HTTP, FTP, SMTP, or IMAP. Bluetooth has a client-server
architecture; the one that initiates the connection
is the client, and the one who receives the connection
is the server. Bluetooth is a great protocol for wireless
communication because it's capable of transmitting data
at nearly 1MB/s, while consuming 1/100th of the power
of Wi-Fi.
In order for
Bluetooth devices to communicate properly, they all
need to conform to the Bluetooth specification. The
Bluetooth specification, like any other spec, defines
the standard that a Bluetooth device should adhere to,
as well as rules that need to be enforced when communicating.
You can download the specification documents at the
official Bluetooth web site. The Bluetooth protocol
stack and profiles together comprise the Bluetooth specification.
The Bluetooth Protocol Stack
The Bluetooth
stack is the software or firmware component that has
direct access to the Bluetooth device. It has control
over things such as device settings, communication parameters,
and power levels for the Bluetooth device. The stack
itself consists of layers, and each layer of the stack
has a specific task in the overall functionality of
the Bluetooth device. Since Bluetooth device manufacturers
are not required to use all of the layers in the stack,
we're only going to cover the main ones that are implemented
in almost every Bluetooth device.
* HCI is the
Host Controller Interface. This layer is the interface
between the radio and the host computer.
* L2CAP stands for Logical Link Controller Adaptation
Protocol. This layer is the multiplexer of all data
passing through the unit. Audio signals, however, have
direct access to the HCI.
* SDP is the Service Discovery Protocol. The SDP layer
is used to find services on remote Bluetooth devices.
* RFCOMM is widely known as the virtual serial port
protocol.
* OBEX is the object exchange protocol.
Bluetooth
Profiles
Bluetooth Profiles
were created to allow different Bluetooth devices to
interoperate. For instance, let's say that you own a
Bluetooth-enabled PDA and a Bluetooth-enabled wireless
phone. Both devices have Bluetooth stacks. How can you
tell if those two devices will allow you to synchronize
the phone lists between each other? How will you know
if you can send a phone number from the PDA to the phone?
And most importantly, how can you determine if these
devices will allow you to browse the Internet from the
PDA, using the phone as a wireless modem?
A Bluetooth profile
is a designed set of functionality for Bluetooth devices.
For instance, using the examples listed above, the phone
and the PDA must both support the Synchronization Profile
in order to synchronize data between them. In order
to send object data such as a .vcf file from the PDA
to the phone, then both devices need to have the Object
Push Profile implemented. Finally, the PDA and the wireless
phone must both support the Dialup Networking Profile
in order for the PDA to wirelessly browse the Internet
via the phone. If you want your Bluetooth-enabled devices
to interact, having a Bluetooth stack is not good enough
-- they also need to conform to a particular profile.
A word of caution
here: do not get Bluetooth profiles confused with J2ME
profiles. J2ME profiles are a set of Java classes that
extend the functionality of a J2ME Configuration. For
instance, the MID Profile is a set of Java classes that
extend the functionality of the Connected Limited Device
Configuration. On the other hand, a Bluetooth profile
can be implemented in any language and on any platform,
because it refers to a defined set of functionality
for a Bluetooth-enabled device. So the Object Push Profile
can be implemented on a Palm OS PDA in C++, and can
be implemented on a Bluetooth-enabled printer in assembly
language. For those of you who are familiar with RUP
methodology, Bluetooth Profiles are also called Bluetooth
Use Cases.
...
Want to know
more? Then read the rest in Bluetooth
for Java!
|