###################################################
# (MI) BLE AUTH SECURITY PROTOCOL
###################################################

0. GREETING (official only, negligible)
a4 --> UPNP
AVDTP --> 00 00 04 00 06 12
00 00 05 00 06 12 --> AVDTP
AVDTP --> 0000040112121212121212121212121212121212
0000050112121212121212121212121212121212 --> AVDTP


1. KEYEXCHANGE

Listen UPNP + AVDTP + RX

CMD_GET_INFO --> UPNP

AVDTP --> CMD_WR_DID
RCV_RDY --> AVDTP
[AVDTP --> REMOTE_INFO]
RCV_OK --> AVDTP

CMD_SET_KEY --> UPNP

CMD_SEND_DATA --> AVDTP
AVDTP --> RCV_RDY
[MY_PUBKEY --> AVDTP]
AVDTP --> RCV_OK  (|| RCV_TOUT)

AVDTP --> CMD_SEND_DATA
RCV_RDY --> AVDTP
[AVDTP --> REMOTE_PUBKEY]
RCV_OK --> AVDTP

<<CALCULATIONS>>

CMD_WR_DID --> AVDTP
AVDTP --> RCV_RDY
[DID_CT --> AVDTP]
AVDTP --> RCV_OK (|| RCV_TOUT)

13 00 00 00 --> UPNP
UPNP --> 11 00 00 00  (|| fAIL: 12 00 00 00)


2. PAIRING

24 00 00 00 --> UPNP

00 00 00 0b 01 00 --> AVDTP
AVDTP --> RCV_RDY
MI_RAND_KEY --> AVDTP
AVDTP --> RCV_OK

# | dash app
|AVDTP --> 00 00 00 0d 01 00
|RCV_RDY --> AVDTP
|AVDTP --> REMOTE_RANDKEY
|RCV_OK --> AVDTP

# || offical
||AVDTP --> 00 00 02 0d REMOTE_RANDKEY
||00 00 03 00 --> AVDTP

<<CALCULATIONS>>

AVDTP --> 00 00 00 0c 02 00
RCV_RDY --> AVDTP
[AVDTP --> REMOTE_DEVINFO]
RCV_OK --> AVDTP

00 00 00 0a 02 00 --> AVDTP
AVDTP --> RCV_RDY
[MY_DEVINFO --> AVDTP]
AVDTP --> RCV_OK

UPNP --> 21 00 00 00 (|| fAIL: 23 00 00 00)


###################################################
# VARS
###################################################
CMD_GET_INFO: a2 00 00 00
CMD_SET_KEY: 15 00 00 00
CMD_SEND_DATA: 00 00 00 03 04 00
CMD_WR_DID: 00 00 00 00 02 00

RCV_RDY: 00 00 01 01
RCV_OK: 00 00 01 00
RCV_TOUT: 00 00 01 05 01 00
...
