Resumen e
  Integrantes

  Introducción

  Desarrollo

  Demostración

  Trabajo futuro

  Conclusiones

 

Desarrollo de Aplicaciones BT en Java

El standard JABWT (Java API's for the Bluetooth wireless technology) se encuentra definido en la especificación JSR-82 y es capaz de soportar el desarrollo de aplicaciones BT de manera segura, portátil y altamente utilizable.

Requerimientos

  • BLUEZ - Stack de código para el manejo del protocolo Bluetooth 2.0 en ambiente Linux.

  • Avetana - Provee funcionalidades Bluetooth a softwares desarrollados en Java ( javax.microedition.*, javax.bluetooth.*)

Stack de Protocolo

El stack BT es la componente de software o firmware que tiene acceso directo al dispositivo BT. Controla configuraciones del dispositivo, parámetros de comunicación y niveles de potencia.

  • HCI - Capa que hace de interfaz entre la radio y el computador huesped (host).

  • L2CAP - Multiplexa todos los datos que pasan a través de la unidad.

  • SDP - Encuentra servicios en dispositivos BT remotos.

  • RFCOMM - Protocolo de puerto serie virtual, emula puertos serie a través de L2CAP

  • OBEX - Transmisión de archivos genéricos entre dispositivos.



Administración de Dispositivos

La especificación Java para BT presenta dos clases principales -Local Device y Remote Device- que permited administrar los dispositivos. Estas clases permiten obtener información del dispositivo propio (Local Device) e información sobre los dispositivos que se encuentran en el área (Remote Device).

Device Discovery

La clase DiscoveryAgent y la interfaz DiscoveryListener proveen de los servicios de descubrimiento de dispositivos.Existen tres modos de obtener dispositivos accesibles.

  • DiscoveryAgent.startInquiry()-Se debe especificar un event listener que responda a los eventos relacionados.

  • DiscoveryListener.deviceDiscovered()-Es llamado cada vez que una peticón encuentra un dispositivo.DiscoveryListener.inquiryCompleted() es invocado cuando la petición es terminada o cancelada.

  • DiscoveryAgent.retrieveDevices()-Si el dispositivo no desea esperar a descubrir nuevos dispositivos.

Service Discovery

Permite conocer que servicios brinda el dispositvo remoto (eg. impresora). El método searchServices() de la clase DiscoveryAgent permite buscar servicios en un dispositivo remoto. Una vez encontrados los servicios, se invocará a servicesDiscovered() implementado en la interfaz DiscoveryListener. Todo esto ocurre en el cliente.

Service Registration

En el servidor deben estar registrados los servicios internamente en la SDDB (Service Discovery database). Se describe un breve resumen de esta etapa:

  • Una llamada a Connector.open() crea un nuevo ServiceRecord. Esta conexión resultanet se castes a un notificador del tipo StreamConnectionNotifier.

  • Se usa el objeto LocalDevice y el StreamConnectionNotifier para obtener el ServiceRecord

  • El notificador StreamConnectionNotifier llama a acceptAndOpen() y espera por clientes. El sistema crea un registro de servicio en el SDDB. La hebra que maneja acceptAndOpen() se bloquea hasta que responde un cliente.

  • Cuando el servidor esta listo para terminar, llama a close() en el StreamConnectionNotifier. El sistema remueve el registro de servicio del SDDB.

Comunicación

La comunicación entre dispositivos se logra al compartir el mismo protocolo, el cual puede ser RFCOMM, L2CAP, OBEX u otro soportdo por ambos. En el caso del proyecto se utiliza el protocolo RFCOMM (BT Serial Port Profile).

Descarga del Proyecto

El proyecto puede ser descargado desde ACÁ.











______________________________________________________________________