Descripción general de Bluetooth de bajo consumo (BLE)
Android 4.3 (API Nivel 18) comienza a introducir las funciones principales de Bluetooth Low Energy (BLE, Bluetooth de baja potencia) y proporciona las API correspondientes. Las aplicaciones utilizan estas API para escanear dispositivos Bluetooth, consultar servicios y. leer Escribir características del dispositivo (características de atributos) y otras operaciones.
Antes de presentar GATT en detalle, es necesario comprender GAP (perfil de acceso genérico), que se utiliza para controlar las conexiones y transmisiones de dispositivos. GAP hace que su dispositivo sea visible para otros dispositivos y determina si su dispositivo puede interactuar con dispositivos contratados y cómo hacerlo. Por ejemplo, el dispositivo Beacon solo transmite al mundo exterior y no admite la conexión. La pulsera Xiaomi puede conectarse al dispositivo central esperando el dispositivo.
GAP define varios roles para el dispositivo, los dos principales son: dispositivo periférico (Peripheral) y dispositivo central (Central).
En GAP, los dispositivos periféricos transmiten datos al mundo exterior de dos maneras: carga útil de datos publicitarios (datos de transmisión) y carga útil de datos de respuesta de escaneo (respuesta de escaneo). Cada tipo de datos puede contener hasta 31 bytes.
Aquí se requieren datos de transmisión porque el dispositivo periférico debe transmitir constantemente para que el dispositivo central sepa su existencia. La respuesta de escaneo es opcional. El dispositivo central puede solicitar una respuesta de escaneo del dispositivo periférico, que contiene información adicional sobre el dispositivo, como el nombre del dispositivo.
El flujo de trabajo de transmisión de GAP se muestra en la siguiente figura:
El dispositivo periférico establecerá un intervalo de transmisión. En cada intervalo de transmisión, reenviará sus propios datos de transmisión y el. tiempo de transmisión Cuanto más largo sea, más energía ahorrará y también será menos probable que lo escaneen.
En la mayoría de los casos, el dispositivo periférico se transmite a sí mismo para permitir que el dispositivo central se descubra y establezca una conexión GATT para intercambiar más datos.
En algunos casos no se requiere conexión, siempre y cuando el dispositivo periférico emita sus propios datos. El objetivo principal de utilizar este método es permitir que los dispositivos periféricos envíen su propia información a múltiples dispositivos centrales. Porque según el método de conexión GATT, solo se puede conectar un dispositivo periférico a un dispositivo central. La aplicación más típica que utiliza la transmisión es iBeacon de Apple. El diagrama de topología de la red en modo de trabajo de transmisión es el siguiente:
Ver este blog
El nombre completo de GATT es Generic Attribute Profile, que define dos dispositivos BLE a través de algo llamado Servicio y Característica. comunicar. GATT utiliza el protocolo ATT (Protocolo de atributos). El protocolo ATT almacena el servicio, las características y los datos correspondientes en una tabla de búsqueda. La tabla de búsqueda secundaria utiliza una identificación de 16 bits como índice de cada elemento.
Una vez que los dos dispositivos establecen conexión, entra en vigor GATT, lo que también significa que debes completar el protocolo GAP anterior. Lo que hay que explicar aquí es que la conexión del GATT debe pasar primero por el protocolo GAP. De hecho, en el desarrollo de Android, podemos usar directamente la dirección MAC del dispositivo para iniciar una conexión sin pasar por el paso de escaneo.
Esto no significa que no sea necesario pasar por GAP. De hecho, se ha hecho por usted a nivel de chip. Cuando el chip Bluetooth inicia una conexión, siempre escanea el dispositivo primero y luego inicia la conexión después de escanear. .
Las conexiones del GATT requieren una atención especial: las conexiones del GATT son excluyentes. Es decir, un periférico BLE sólo se puede conectar a un dispositivo central al mismo tiempo. Una vez conectado un periférico, deja de transmitir para que no sea visible para otros dispositivos. Cuando el dispositivo se desconecta, comienza a transmitir nuevamente.
Si el dispositivo central y los dispositivos periféricos necesitan comunicación bidireccional, la única forma es establecer una conexión GATT.
La siguiente figura muestra la topología de la red de conexión GTT. Aquí se muestra claramente que un dispositivo periférico solo puede conectarse a un dispositivo central, y un dispositivo central puede conectarse a múltiples dispositivos periféricos. Topología conectada Una vez que se establece una conexión, la comunicación es bidireccional. En comparación con la topología de red de transmisión GAP anterior, la comunicación GAP es unidireccional. Si desea que dos periféricos del dispositivo se comuniquen, solo pueden transmitirse a través del dispositivo central.
Las dos partes en la comunicación del GATT están en una relación C/S. El periférico actúa como un servidor GATT (Servidor), que mantiene la tabla de búsqueda de ATT y la definición de servicio y característica. El dispositivo central es el cliente GATT (Cliente), que inicia una solicitud al Servidor. Cabe señalar que todos los eventos de comunicación son iniciados por el cliente (también llamado dispositivo maestro, Master) y reciben respuestas del servidor (también llamado dispositivo esclavo, Slave).
Una vez establecida la conexión, el dispositivo periférico propondrá un intervalo de conexión (Intervalo de Conexión) al dispositivo central. De esta forma, el dispositivo central intentará reconectarse en cada intervalo de conexión para comprobar si existe. nuevos datos. Sin embargo, este intervalo de conexión es sólo una sugerencia. Es posible que su dispositivo central no siga estrictamente este intervalo. Por ejemplo, su dispositivo central está ocupado conectándose a otros periféricos o los recursos del dispositivo central están demasiado ocupados.
La siguiente figura muestra el proceso de intercambio de datos entre un dispositivo periférico (servidor GATT) y un dispositivo central (cliente GATT). Se puede observar que el dispositivo maestro inicia la solicitud cada vez:
p>