Blob: btsnoop.txt
Blob id: 975a53f6dd443ce9a6704ec0c860b778e13be524
Size: 3.5 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | BTSnoop/Monitor protocol formats
********************************
Opcode definitions
==================
New Index
---------
Code: 0x0000
Parameters: Type (1 Octet
Bus (1 Octet)
BD_Addr (6 Octets)
Name (8 Octets)
This opcode indicates that a new controller instance with a
given index was added. With some protocols, like the TTY-based
one there is only a single supported controller, meaning the
index is implicitly 0.
Deleted Index
-------------
Code: 0x0001
This opcode indicates that the controller with a specific index
was removed.
Command Packet
--------------
Code: 0x0002
HCI command packet.
Event Packet
------------
Code: 0x0003
HCI event packet.
ACL TX Packet
-------------
Code: 0x0004
Outgoing ACL packet.
ACL RX Packet
-------------
Code: 0x0005
Incoming ACL packet.
SCO TX Packet
--------------
Code: 0x0006
Outgoing SCO packet.
SCO RX Packet
-------------
Code: 0x0007
Incomnig SCO packet.
Open Index
----------
Code: 0x0008
The HCI transport for the specified controller has been opened.
Close Index
-----------
Code: 0x0009
The HCI transport for the specified controller has been closed.
Index Information
-----------------
Code: 0x000a
Parameters: BD_Addr (6 Octets)
Manufacturer (2 Octets)
Information about a specific controller.
Vendor Diagnostics
------------------
Code: 0x000b
Vendor diagnostic information.
System Note
-----------
Code: 0x000c
System note.
User Logging
------------
Code: 0x000d
Parameters: Priority (1 Octet)
Ident_Length (1 Octet)
Ident (Ident_Length Octets)
User logging information.
TTY-based protocol
==================
This section covers the protocol that can be parsed by btmon when
passing it the --tty parameter. The protocol is little endian, packet
based, and has the following header for each packet:
struct tty_hdr {
uint16_t data_len;
uint16_t opcode;
uint8_t flags;
uint8_t hdr_len;
uint8_t ext_hdr[0];
} __attribute__ ((packed));
The actual payload starts at ext_hdr + hdr_len and has the length of
data_len - 4 - hdr_len. Each field of the header is defined as follows:
data_len:
This is the total length of the entire packet, excuding the
data_len field itself.
opcode:
The BTSnoop opcode
flags:
Special flags for the packet. Currently no flags are defined.
hdr_len:
Length of the extended header.
ext_hdr:
This is a sequence of header extension fields formatted as:
struct {
uint8_t type;
uint8_t value[length];
}
The length of the value is dependent on the type. Currently the
following types are defined:
Type Length Meaning
----------------------------------------------------------------
1 Command drops 1 byte Dropped HCI command packets
2 Event drops 1 byte Dropped HCI event packets
3 ACL TX drops 1 byte Dropped ACL TX packets
4 ACL RX drops 1 byte Dropped ACL RX packets
5 SCO TX drops 1 byte Dropped SCO TX packets
6 SCO RX drops 1 byte Dropped SCO RX packets
7 Other drops 1 byte Dropped other packets
8 32-bit timestamp 4 bytes Timestamp in 1/10th ms
The drops fields indicate the number of packets that the
implementation had to drop (e.g. due to lack of buffers) since
the last reported drop count.
The fields of the extended header must be sorted by increasing
type. This is essential so that unknown types can be ignored and
the parser can jump to processing the payload.
|