Introducción al concepto de protocolo de puerto serie de pila de protocolos Bluetooth tradicional SPP (perfil de puerto serie)

Zero. Resumen

Presentar principalmente el protocolo serie bluetooth stack (bluetooth stack) (bluetooth SPP) introducción al concepto de protocolo de perfil de puerto serie.

1. Declaración

Continuaremos actualizando esta columna de manera serializada. El contenido actualizado de esta columna está planificado de la siguiente manera:

El primer artículo: Introducción integral a Bluetooth, presenta principalmente algunos conceptos de Bluetooth, antecedentes, pista de desarrollo, introducción de Bluetooth en el mercado e introducción de la placa de desarrollo Bluetooth.

El segundo capítulo: Introducción a la capa de transporte, presenta principalmente la pila de protocolos Bluetooth y el protocolo de transmisión de hardware antes del chip Bluetooth, como H4, H5, BCSP basado en UART, H2 basado en USB, etc.

El tercer capítulo: Introducción al controlador Bluetooth tradicional, presenta principalmente la introducción de chips Bluetooth tradicionales, incluida la capa de radiofrecuencia (RF), la capa de banda base (banda base), la capa de gestión de enlaces (LMP), etc.

El cuarto capítulo: Introducción al host Bluetooth tradicional, presenta principalmente la pila de protocolos Bluetooth tradicional, como HCI, L2CAP, SDP, RFCOMM, HFP, SPP, HID, AVDTP, AVCTP, A2DP, AVRCP, OBEX, PBAP, MAP, etc. Acuerdo.

Capítulo 5: Introducción al controlador Bluetooth de baja energía, principalmente presenta chips Bluetooth de baja energía, incluida la capa física (PHY), la capa de enlace (LL)

Capítulo 6: Introducción al host Bluetooth de bajo consumo, introducción a la pila de protocolos Bluetooth de bajo consumo, incluidos HCI, L2CAP, ATT, GATT, SM, etc.

Capítulo 7: Introducción a los chips Bluetooth, presenta principalmente el proceso de inicialización de algunos chips Bluetooth, basado en la extensión del comando del proveedor de HCI

El octavo capítulo: apéndice, presenta principalmente la introducción de los términos de uso común anteriores y la introducción de algunos procesos especiales.

Además, la placa de desarrollo se muestra a continuación, que es el mejor conjunto de personas que desean aprender la pila de protocolos Bluetooth. Para aprender mejor la pila de protocolos de Bluetooth, créanme, después de aprender este conjunto de videos, tendrá la capacidad de modificar cualquier pila de protocolos (como bluez en Linux, bluedroid en Android).

-------------------------------------------------- -------------------------------------------------- ---------------------

Enlace de la universidad CSDN (ingrese para elegir el curso que desea aprender): https://edu.csdn.net/lecturer/5352?spm=1002.2001.3001.4144

Grupo de botones de intercambio de Bluetooth: 970324688

Código de Github: https://github.com/sj15712795029/bluetooth_stack

Obtenga la placa de desarrollo: https://item.taobao.com/item.htm?spm=a1z10.1-cs.w4004-22329603896.18.5aeb41f973iStr&id=622836061708

Catálogo de aprendizaje de Bluetooth : https://blog.csdn.net/XiaoXiaoPengBo/article/details/107727900

-------------------------------------------------- -------------------------------------------------- ----------------------

2. Introducción al protocolo Bluetooth Serial Port SPP (Serial Port Profile)

2.1 Introducción al concepto

SPP es la abreviatura de Serial Port Profile (protocolo de puerto serie), que define el protocolo y el proceso que deben utilizar los dispositivos que utilizan Bluetooth para la emulación de cable serie RS232 (o similar). En pocas palabras, se trata de establecer un puerto serie virtual para la comunicación de datos entre dispositivos Bluetooth. Para decirlo sin rodeos, dos dispositivos pueden enviarse datos personalizados entre sí, OBSERVADO: Apple no es compatible con el protocolo SPP.

En la actualidad, la última versión de SIG es V1.2, y la versión anterior solo se puede descargar de V1.1 en el sitio web oficial, pero no hay diferencia funcional entre los dos documentos, por lo que no hay introducción.

2.2 El diagrama de arquitectura del protocolo SPP en todo el Bluetooth es el siguiente

2.3 Introducción al rol

Dispositivo A (DevA): este es el dispositivo que toma la iniciativa para establecer una conexión con otro dispositivo.

Dispositivo B (DevB): este es el dispositivo que espera a que otro dispositivo tome la iniciativa para conectarse.

Para decirlo sin rodeos, significa que dos dispositivos están conectados. El rol que inicia la conexión es el Dispositivo A y el que está conectado es el Dispositivo B. Sin embargo, esto es diferente de otros protocolos. Los códigos antes de los dos dispositivos son básicamente los mismos, y el rol es solo distinguir los dos dispositivos.

2.4 Características de SPP

El dispositivo A es la sala activa que inicia la conexión, por lo que el dispositivo A debe admitir al menos Establecer enlace y configurar una conexión en serie virtual. El dispositivo B es la parte conectada, por lo que debe admitir al menos Aceptar enlace y establecer una conexión en serie virtual y registrar el registro de servicio para la aplicación en la base de datos SDP local. De modo que el dispositivo A puede consultar el servicio y conectarse, pero este protocolo pierde las dos funciones más importantes, enviar datos, recibir datos o SIG cree que rfcomm ha logrado esta función, así que no lo escriba en el protocolo SPP. Pero aún así decidí introducir la función de transceptor en SPP.

2.4.1 Establecer enlace y configurar una conexión serial virtual.

Este procedimiento se refiere a realizar los pasos necesarios para establecer una conexión a un puerto serie emulado (o equivalente) en un dispositivo remoto. Los pasos de este procedimiento son:

1) Envíe una consulta utilizando SDP para averiguar el número de canal del servidor RFCOMM de la aplicación deseada en el dispositivo remoto. Esto podría incluir una capacidad de exploración para permitir que el usuario seleccione entre los puertos (o servicios) disponibles en el dispositivo del mismo nivel. Alternativamente, si se sabe exactamente con qué servicio contactar, es suficiente buscar los parámetros necesarios utilizando el ID de clase de servicio asociado con el servicio deseado.

2) Opcionalmente, requiere que se realice la autenticación del dispositivo remoto. También, opcionalmente, requiere que el cifrado esté activado.

3) Solicite un nuevo canal L2CAP a la entidad RFCOMM remota.

4) Inicie una sesión RFCOMM en el canal L2CAP.

5) Inicie una nueva conexión de enlace de datos en la sesión RFCOMM, utilizando el número de canal del servidor mencionado anteriormente. Después del paso 5, la conexión del cable serial virtual está lista para ser utilizada para la comunicación entre aplicaciones en ambos lados.

2.4.2 Acepte el enlace y establezca una conexión serial virtual.

Este trámite se refiere a participar en los siguientes pasos:

1) Si lo solicita el dispositivo remoto, participe en el procedimiento de autenticación y,

solicitud adicional, active el cifrado.

2) Aceptar una nueva indicación de establecimiento de canal de L2CAP.

3) Acepte el establecimiento de una sesión RFCOMM en ese canal.

4) Acepte una nueva conexión de enlace de datos en la sesión RFCOMM. Esto puede desencadenar una solicitud local para autenticar el dispositivo remoto y activar el cifrado, si el usuario lo ha requerido para el puerto serie emulado al que está conectado (y los procedimientos de autenticación / cifrado aún no se han llevado a cabo).

2.4.3 Registro de registro de servicio para su aplicación en la base de datos local de SDP.

Este procedimiento se refiere al registro de un registro de servicio para un puerto serie emulado (o equivalente) en la base de datos SDP. Esto implica la existencia de una base de datos de servicios y la capacidad de responder a las consultas de SDP.

NOTA: SPP solo es compatible con teléfonos Android, y algunos teléfonos Android deben tener la APLICACIÓN SPP para conectarse, los teléfonos iPhone no pueden SPP directamente, pero es otro protocolo alternativo IAP, este protocolo necesita comprar un chip MFI para usar

2.5 registro relacionado con SDP

Miro nuestro registro SDP:

static const uint8_t spp_service_record[] =
{
	/* 1.ServiceClassIDList */
    SDP_DES_SIZE8, 0x8,
    SDP_UINT16, BT_ATTRIBUTE_SERVICE_CLASS_ID_LIST>>8&0xff, BT_ATTRIBUTE_SERVICE_CLASS_ID_LIST&0xff, /* Service class ID list attribute */
            SDP_DES_SIZE8, 3,
            SDP_UUID16, BT_SERVICE_CLASS_SERIAL_PORT>>8&0xff, BT_SERVICE_CLASS_SERIAL_PORT&0xff,

	/* 2.ProtocolDescriptorList */
            SDP_DES_SIZE8, 0x11,
            SDP_UINT16, BT_ATTRIBUTE_PROTOCOL_DESCRIPTOR_LIST>>8&0xff, BT_ATTRIBUTE_PROTOCOL_DESCRIPTOR_LIST&0xff,/* Protocol descriptor list attribute */
            SDP_DES_SIZE8, 0xc,
            SDP_DES_SIZE8, 0x3,
            SDP_UUID16, BT_PROTOCOL_L2CAP>>8&0xff, BT_PROTOCOL_L2CAP&0xff, /*L2CAP*/
            SDP_DES_SIZE8, 0x5,
            SDP_UUID16, BT_PROTOCOL_RFCOMM>>8&0xff, BT_PROTOCOL_RFCOMM&0xff, /*RFCOMM*/
            SDP_UINT8, RFCOMM_SPP_SERVER_CHNL, /*RFCOMM channel*/

	/* BluetoothProfileDescriptorList */
            SDP_DES_SIZE8, 0xd,
            SDP_UINT16, BT_ATTRIBUTE_BLUETOOTH_PROFILE_DESCRIPTOR_LIST>>8&0xff, BT_ATTRIBUTE_BLUETOOTH_PROFILE_DESCRIPTOR_LIST&0xff, /* profile descriptor List */
            SDP_DES_SIZE8, 0x8,
            SDP_DES_SIZE8,0x06,
            SDP_UUID16,BT_SERVICE_CLASS_SERIAL_PORT>>8&0xff, BT_SERVICE_CLASS_SERIAL_PORT&0xff,
            SDP_UINT16,0x01,0x02,		/* V1.2 */
};

 

Supongo que te gusta

Origin blog.csdn.net/XiaoXiaoPengBo/article/details/108530480
Recomendado
Clasificación