25
1 Framework Marge Paolo Cemim Rogério Vieira

1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

Embed Size (px)

Citation preview

Page 1: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

1

Framework Marge

Paolo CemimRogério Vieira

Page 2: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

2

Bluetooth – O que é?

Especificação para comunicações sem fio

Criado pela Ericsson Mobile Versão atual 2.1

Page 3: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

3

Bluetooth – Características

Substituição do uso de cabos Banda ISM (2.4GHz) Curta distância (1-100m) Baixo consumo de energia (>=1 mW) Baixo custo (>$5.00) Velocidade moderada (768K bit/sec) Utilizado em celulares, PDA’s, fones de

ouvido, microfones, computadores, teclados, entre outros.

Page 4: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

4

Bluetooth - Arquitetura Pilha de Protocolos Perfil define uma

pilha de protocolo. A aplicação só pode

se comunicar se estiver no mesmo perfil ou seja mesma pilha de protocolo.

Page 5: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

5

Bluetooth – Como funciona a comunicação

Inquiry: busca dos dispositivos na área Service Discovery: descoberta dos

serviços providos pelo dispositivo (Transferência e Sincronização de dados, Dial-Up, ...)

Connection: estabelecimento da conexão entre os dispositivos

Communication: trocas de dados ou voz

Page 6: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

6

JSR-82

Page 7: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

7

JSR-82 – O que é?

Java APIs para Bluetooth (JABWT). Especificação que padroniza um conjunto

de APIs para permitir integração entre aplicações Java e Bluetooth.

Liderada pela Motorola Iniciada em Out/00, liberada em Mar/02 (v

1.0) Final Release 2 em 2006 (v 1.1) Atualmente esta na Closed Maintenance

Review 3 (v 1.1)

Page 8: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

8

JSR-82 – Características

Java ME como plataforma alvo Baseada no GCF (Generic Connection

Framework), definido na CLDC 1.0 (Connected Limited Device Configuration)

Separado em dois pacotes: javax.bluetooth – SDP, L2CAP,

RFCOMM javax.obex – OBEX (opcional)

Page 9: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

9

JSR-82 – Desktop

Algumas implementações do GCF/JSR-82:

AvetanaBluetooth (Linux) Bluecove 2.0.3 (Windows, Mac OS X

e Linux)

Page 10: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

10

JSR – 82 – Opinião dos Criadores do Framework

Idealizada para Java ME (GCF) Difícil curva de aprendizado Códigos repetitivos Muitas constantes de controle Falta de clareza em alguns pontos

Page 11: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

11

Projeto Framework MargeDesenvolvido por:

Bruno Ghisi e Lucas Tossi

Page 12: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

12

Marge – Dados Gerais do Projeto

Objetivo: Facilitar o desenvolvimento Bluetooth em Java através do Framework e Aplicações de exemplo.

Hospedado no portal java.net: http://marge.dev.java.net

LGPL (Lesser General Public License): licença usual em bibliotecas

Page 13: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

13

Marge – Dados Gerais do Projeto

O nome Marge vem dos Simpsons. Onde a Marge tem um grande cabelo azul (eles fazem a analogia do cabelo azul(BLUE) com o BLUEtooth) e ela sempre está ajudando a sua família. E outra analogia que eles fazem é com o operando merge(mesclar) que é tem a idéia do projeto : um framework para uma aplicação e criar uma boa ferramenta para resolver problemas.

Page 14: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

14

Marge - Framework

marge-core Abstração do pacote

javax.bluetooth Java ME e SE Versão 0.6

Page 15: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

15

Marge – Como instalar

O que é preciso? Java Development Kit (http://www.java.com/) NetBeans 6 IDE os mais novo com Mobility

plugins (http://download.netbeans.org/)*Seleciona a versão completa para nada ser esquecido.

Marge Framework (http://marge.dev.java.net) Para utilizar basta importar os jars do marge

para o projeto.

Page 16: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

16

Marge - Estrutura

24 classes 5 pacotes net.java.dev.marge.autocon net.java.dev.marge.communication

net.java.dev.marge.communication.layer net.java.dev.marge.entity net.java.dev.marge.entity.config net.java.dev.marge.factory net.java.dev.marge.inquiry

Page 17: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

17

Marge – Sem Marge x Com Marge (Busca)

LocalDevice localDevice = LocalDevice.getLocalDevice();

DiscoveryAgent agent =localDevice.getDiscoveryAgent

();agent.startInquiry(DiscoveryAg

ent.GIAC, new DiscoveryListenerImpl());

•É necessário implementar umDiscoveryListener que contêm trechos de código longos e repetitivos.•Cada status de retorno da busca deve ser previamente conhecidos para que possam ser tratados.

● Classe específica para busca dedispositivos● InquiryListener contém métodos que são notificados conforme o status de retorno, através da sua implementação padrão

DeviceDiscoverer.getInstance().startInquiryGIAC(new InquiryListenerImpl());

Page 18: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

18

Marge – Sem Marge x Com Marge (Serviço)

LocalDevice localDevice =LocalDevice.getLocalDevice();DiscoveryAgent agent =localDevice.getDiscoveryAgent();int transactionID = agent.searchServices( attrSet, uuidArray, rmtDevice, new DiscoveryListenerImpl());

ServiceDiscoverer.getInstance().startSearch(remoteDevice,new ServiceSearchListenerImpl());

• Classe específica para busca de serviços ServiceSearchListener contém métodos para erros na busca e busca finalizada• ServiceDiscoverer permite cancelar a busca diretamente, sem a necessidade de guardar o ID de transação

• Mesma interface do processo de Inquiry para notificação dos resultados

Page 19: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

19

StreamConnectionNotifier notifier =(StreamConnectionNotifier)Connector.open("btspp://localhost:” +”10203040607040A1B1C1DE100;” +”name=Server1;” +”authenticate=false; authorize=false");StreamConnection connection =notifier.acceptAndOpen();

•É necessário saber a URL de serviço e seus parâmetros•Controle de número de clientes é feito manualmente

CommunicationFactory factory =new RFCOMMCommunicationFactory();ServerConfiguration sconf =new ServerConfiguration(new CommunicationListenerImpl());factory.waitClients(sconf, new ConnectionListenerImpl());

•ConnectionListener contém métodos para notificar uma conexão estabelecida ou erros•Novos clientes são tratados e notificados automaticamente•Servidor configurável•Utilização de diferentes protocolos através das fábricas disponíveis

Marge – Sem Marge x Com Marge (Servidor)

Page 20: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

20

CommunicationFactory factory =new L2CAPCommunicationFactory();ClientConfiguration cconfig =newClientConfiguration(serviceRecordFound,new CommunicationListenerImpl());ClientDevice clientDevice =factory.connectToServer(cconf);

•Cliente configurável•Utilização de diferentes protocolos através das fábricas disponíveis

● É necessário tratar diretamentecom a parte de IO

String url =serviceRecord.getConnectionURL( ServiceRecord.NOAUTHENTICATE_NOENCRYPT,true);StreamConnection connection =(StreamConnection)Connector.open(url);

Marge – Sem Marge x Com Marge (Cliente)

Page 21: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

21

Marge – Sem Marge x Com Marge (Comunicação)

DataOutputStream dataout =connection.openDataOutputStream();dataout.writeUTF(”Hello world”);dataout.flush();connection.close();

device.startListening();device.send("Hello world".getBytes());device.close();

•Controle automático do recebimento de mensagens, onde as mensagens recebidas são notificadas através do método receiveMessage do Listener enviado na configuração•Facilidade no envio de mensagens•Controle de escuta

•É necessário ter um controle em paralelo para o recebimento de mensagens

Page 22: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

22

Marge - AutoConnect

Cria servidor:

AutoConnect.createServer("MargeBluechatServer", new CommunicationListenerImpl(),new ConnectionListenerImpl() );

Cria cliente:

ClientDevice device = AutoConnect.createClient("MargeBluechatServer",new CommunicationListenerImpl());

Page 23: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

23

Marge – Breve Comentário

Se não quizer programar a parte de inquiry e search process, podesse usar o AutoConnect.

Mas deve se ter certeza que onde for executado a sua aplicação não tenham muitos aparelhos bluetooth que poderiam se conectar à você, caso contrário pode demorar para ter resposta de retorno ou se conectar ao dispositivo errado.É uma boa função mas não funciona em determinados dispositivos por alguns problemas de implementação. Mas vale a pena testar.

Page 24: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

24

Marge - Vantagens

Maior abstração da JSR-82 fornecendo um código comum entre aplicações, evitando reescrita.

Estruturas separadas para Inquiry e Service Discoverer provêem notificações conforme status de retorno.

Rápida criação e configuração de Clientes e Servidores através das fábricas de protocolo.

Fácil envio e recebimento de mensagens e extensível para novos protocolos e comportamentos (Layers).

Page 25: 1 Framework Marge Paolo Cemim Rogério Vieira. 2 Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual

25

Referencias

https://marge.dev.java.net http://jcp.org/en/jsr/detail?id=82 http://projetos.inf.ufsc.br/arquivos_p

rojetos/projeto_555/tcc-brunoghisi-marge.pdf