Ao trabalhar em projetos relacionados ao Bluetooth, estima-se que muitas pessoas estejam curiosas sobre por que um máximo de 20 bytes de dados é enviado por vez. Sem mais delongas, a imagem acima primeiro e a imagem abaixo mostram a estrutura do pacote de dados Bluetooth transmissão. A parte vermelha é o tamanho final do pacote que enviamos (no estado Notificar).
Antes de começar, deixe-me mencionar a diferença entre Octet e Byte, embora ambos possam ser traduzidos em bytes. Octeto é um grupo de octetos. Nos primórdios do desenvolvimento do TCP/IP, o Byte usado por algumas estruturas de sistema era de 10 bits.
Introdução aos pacotes de broadcast
cabeçalho do pacote de transmissão
parte do cabeçalho
- A cabeça tem principalmente 1 octeto.
- tipo de PDU
- RFU é reservado
- Segmento de endereço de envio TxAdd
- RxAdd aceita o segmento de endereço
parte do comprimento
- O comprimento é principalmente 1 octeto.
- 6 octeto é o comprimento e o valor é 6-37 (o pacote de transmissão tem um endereço de dispositivo de 6 octetos no final, portanto, tem pelo menos 6 bits).
Para os 37 bytes aqui, meu palpite é o seguinte, não sei se está correto, para ser compatível com os dados de 5 bits no PUD de dados com comprimento de 31 octetos, mais o endereço do dispositivo que deve ser adicionado por 6octeto.
seção de dados de transmissão
Os dados são divididos em dados válidos e dados inválidos (preenchidos com 0) + endereço do dispositivo de 6 octetos. As estruturas de dados válidas são as seguintes
- A parte de dados válida consiste em várias estruturas do AD
- 1 AD Estrutura consiste em 1 octct comprimento e dados (Length)
- os dados consistem em tipo AD (n octct) e dados AD (Comprimento - n)
dados PDU
cabeça
- Comprimento é de 5 dígitos 0-31octct, o máximo é 31octet
- Subtraia o MIC de 4 octetos 31-4 = 27 octetos é o comprimento da carga útil.
Camada de Enlace L2CAP
27 - 2 - 2 = 23 octetos
notificar
23 - 1 - 2 = 20 octetos.