블루투스 관련 프로젝트를 하다보면 한번에 최대 20Byte의 데이터를 보내는 이유에 대해 궁금해 하시는 분들이 많을 것으로 추정되는데, 긴말 없이 위의 사진을 먼저, 아래의 사진은 블루투스 데이터의 패킷 구조를 나타낸 것입니다. 전염. 빨간색 부분은 우리가 보낸 최종 패킷 크기입니다(Notify 상태에서).
시작하기 전에 둘 다 바이트로 변환될 수 있지만 Octet과 Byte의 차이점에 대해 언급하겠습니다. 옥텟은 옥텟의 그룹입니다. TCP/IP 개발 초기에는 일부 시스템 구조에서 사용하는 Byte가 10비트였습니다.
브로드캐스트 패킷 소개
브로드캐스트 패킷 헤더
헤더 부분
- 머리는 주로 1 옥텟을 갖는다.
- PDU 유형
- RFU 예약됨
- TxAdd 송신 주소 세그먼트
- RxAdd는 주소 세그먼트를 수락합니다.
길이 부분
- 길이는 주로 1 옥텟입니다.
- 6octet은 길이이고 값은 6-37입니다(브로드캐스트 패킷은 끝에 6octet 장치 주소가 있으므로 최소 6비트입니다).
여기에 있는 37바이트의 경우, 내 추측은 이렇습니다. 길이가 31octet인 데이터 PUD의 5비트 데이터와 추가해야 하는 장치 주소와 호환되기 위해 이것이 올바른지 모르겠습니다. 6octet으로.
방송 데이터 섹션
데이터는 유효 데이터와 무효 데이터(0으로 채워짐) + 6octet 장치 주소로 나뉩니다. 유효한 데이터 구조는 다음과 같습니다.
- 유효한 데이터 부분은 여러 AD 구조로 구성됩니다.
- 1 AD 구조는 1 octct 길이와 데이터(Length)로 구성됩니다.
- 데이터는 AD 유형(n octct)과 AD 데이터(Length - n)로 구성됩니다.
데이터 PDU
머리
- 길이는 5자리 0-31octct, 최대값은 31octet입니다.
- 4octet의 MIC를 빼면 31-4 = 27octet이 Payload 길이입니다.
링크 계층 L2CAP
27 - 2 - 2 = 23 옥텟
알리다
23 - 1 - 2 = 20 옥텟.