Professional Documents
Culture Documents
Jogos Digitais
Programação Multiplataforma
UNISINOS
Sumário
1. O Contexto
2. A Tecnologia
3. A Arquitetura
4. A JSR-82
5. Programando Bluetooth
6. Exemplos
Contexto
Começou em 1994 pela Ericsson
A tecnologia Bluetooth é mantida pelo Bluetooth
Special Interest Group (SIG) com mais de 6 mil
membros de diferentes setores:
Telecomunicações, computação, indústria
automobilística, automação industrial, setor musical,...
Agere, Ericsson, Intel, Lenovo, Microsoft, Motorola,
Nokia e Toshiba
Origem do nome: Rei Harald Blatand conhecido
como Harold Bluetooth. Viveu no século X e
unificou facções suíças, norueguesas e
dinamarquesas.
Contexto
Principal objetivo é interconectar dispositivos
sem fio à curta distância com baixo custo
Interconexão entre diferentes tipos de
dispositivos
Celulares, telefones,PDAs, PCs, automóveis,
impressoras, mouse, teclado, câmera digital, fones de
ouvido, hot spots, óculos, jaquetas, consoles de
videogame,MP3 players, tênis, monitor cardíaco, jogos
móveis, bluejacking e redes sociais.
Surgimento da PAN (Personal Area Network)
Tecnologia
Usam a faixa ISM (Industrial, Scientific,Medical)
de 2,45Ghz
Pode dividir esta banda em 79 canais
Pode sofrer influência do microondas, portão eletrônico,
babá eletrônica, redes 802.11
Três classes de dispositivos Bluetooth
Classe 1: até 100m
Classe 2: até 10m
Classe 3: até 1m
Tecnologia
Dois tipos de conexão:
Asynchronous Connectionless (ACL)
• Tráfego de dados
• Assimétrico: 721Kbps e 57.6Kbps (retorno)
• Simétrico: 432.6 Kbps
Synchronous Connection Oriented (SCO)
• Suporta 3 canais para transmissão de áudio/voz
• Velocidade de 64Kbps
Arquitetura
Cada dispositivo possui um endereço fixo e único
(BD_ADDR) de 48 bits
Comunicação entre um dispositivo mestre
(master) e dispositivos escravos (slaves)
Uma rede dispositivos BT é chamada de piconet
Possui um dispositivo master – que inicia um link de
comunicação
Até 7 dispositivos escravos
Um slaver pode trocar de papel com o master
Compartilham o mesmo canal
http://www.tutorial-reports.com/system/files?file=bluetoothscatternetpiconet.gif
Arquitetura
Várias piconets em uma mesma área formam uma
scatternet
Dispositivos slavers podem participar de diferentes piconets
Dispositivo pode ser master em uma piconet e slaver em uma
ou mais piconets
S4
S5 S7
S1
M1
Piconet A S3 M2
S6 Piconet B
S2
Scatternet
Arquitetura
Utiliza um modelo de pilha de protocolos para
facilitar o desenvolvimento de hardware e
software
Chamada de Bluetooth Stack
Protocolos de mais baixo nível (hardware) e de
alto nível (software)
Arquitetura
Arquitetura
Baseband Link Controller
Estrutura base de comunicação
Permite abrir canais de áudio diretamente entre devices
Link Manager Protocol (LMP)
Configuração do link entre dispositivos
Responsável pela segurança – criptografia e
autenticação
Host Controller Interface (HCI)
Implementado em software é responsável pela
interconexão das aplicações com hardware
Equivalem aos drivers de um sistema operacional
Arquitetura
Logical Link Control and Adaptation Layer (L2CAP)
Oferece suporte ao tráfego de dados (ACL)
Não suporta áudio
Oferece serviço orientado a conexão para protocolos de
alto nível. Troca de mensagens L2CAP
Service Discovery Protocol (SDP)
Usado para descobrir dispositivos Bluetooth
RFCOMM
Protocolo que simula a porta serial conforme o padrão
RS-232
Arquitetura
Object Exchange Protocolo (OBEX)
Definido pelo IrDA (Infrared Data Association)
Serve para trocar objetos de forma síncrona e
simplificada
Objetos: vCard, vCalendar
Outros protocolos
WAP
PPP
TCP/UDP/IP
Arquitetura
Profiles
Definições dos protocolos para um
determinado modelo de uso da tecnologia
Bluetooth
General Profiles
GAP – Generic Access Profile
• Todos os dispositivos implementam.
SPP – Serial Port Profile
SDAP – Service Discover Application Profile
GOEP – Generic Object Exchange Profile
JSR-82
Implementação do padrão Bluetooth para
plataforma J2ME (dispositivos com poucos
recursos)
Permite:
Registrar serviços
Descobrir dispositivos e serviços
Permite conexão RFCOMM, L2CAP e OBEX
Criar conexões entre dispositivos – enviar e receber
dados
Não suporta comunicação via voz
Gerencia e controla a comunicação das conexões
Oferece serviços de segurança
JSR-82
Programando Bluetooth
1. Configurar o dispositivo Bluetooth
2. Gerenciar o dispositivo
3. Procurar dispositivos
4. Registrar serviços
5. Procurar serviços
6. Efetuar conexão através do RFCOMM
Programando Bluetooth
1. Configurar o dispositivo Bluetooth
Inicializar a pilha Bluetooth
Dispositivos oferecem uma aplicação externa
para configurar a pilha
Bluetooth Control Center (BCC)
No BCC é possível definir:
Nome amigável para o dispositivo (alias)
Se é visível por outros dispositivos
Ligar/desligar o Bluetooth
Se requer autenticação
Programando Bluetooth
2. Gerenciar o dispositivo
As classes LocalDevice e RemoteDevice são
responsáveis em manter as informações
definidas pelo profile GAP
Oferecem informações sobre endereço e nome
dos dispositivos
Além de informar o tipo de device
(DeviceClass) e os tipos de serviços que são
oferecidos
Programando Bluetooth
3. Procurar dispositivos
É necessário obter um agente
(DiscoveryAgent) para buscar os dispositivos
remotos
Pode efetuar as buscas da seguinte forma:
Efetuar uma nova busca
Buscar dispositivos pré-conhecidos
Buscar dispositivos em uma consulta
anterior
Programando Bluetooth
3. Procurar dispositivos
Efetuar uma nova busca
LocalDevice local = LocalDevice.getLocalDevice();
DiscoveryAgent agente = local.getDiscoveryAgent();
agente.startInquiry();
Buscar dispositivos pré-conhecidos
DiscoveryAgent agente = local.getDiscoveryAgent();
RemoteDevices dev[] =
agente.retrieveDevices(DiscoveryAgent.PREKNOWN);
Buscar dispositivos em uma consulta anterior
DiscoveryAgent agente = local.getDiscoveryAgent();
RemoteDevices dev[] =
agente.retrieveDevices(DiscoveryAgent.CACHED);
Programando Bluetooth
4. Registrar serviço
//Servico RFCOMM
String url =
"btspp://localhost:6663366633111;name=TesteBT";
StreamConnectionNotifier servico =
(StreamConnectionNotifier) Connector.open(url);
ServiceRecord sr = local.getRecord(servico);
//Bloqueia ateh criar a conexao
StreamConnection conn =
(StreamConnection) servico.acceptAndOpen();
//faz as operacoes necessarias
//...
//Encerra o servico
servico.close();
Programando Bluetooth
6. Procurar serviços
Localiza os serviços que estão disponíveis nos
dispositivos remotos
São descobertos através do uso do
DeviceListener que deve ser implementada
pela classe que deseja conhecer os serviços