Modifier les fonctionnalités au moment de l'exécution
Étant donné que de nouvelles fonctionnalités (telles que la mise à l'échelle dynamique de la mémoire tampon) peuvent être activées en mettant à niveau le micrologiciel du fournisseur, nous souhaitons fournir un moyen d'obtenir les fonctionnalités du fournisseur au moment de l'exécution. Pour éviter de nombreuses requêtes de fonctionnalités, le fournisseur doit d'abord envoyer la version du micrologiciel au chercheur via un flux de messages lorsqu'il est connecté. Nous ajoutons donc un nouveau code de message au groupe de messages existant, l'événement d'informations sur l'appareil.
Nom du groupe de messages | Valeur |
---|---|
Événement d'informations sur l'appareil | 0x03 |
Nom du code de message | Valeur |
---|---|
Version du micrologiciel | 0x09 |
Une fois le code de révision du micrologiciel obtenu, le chercheur doit le comparer à celui mis en cache. Si la version du micrologiciel a été modifiée, le Seeker met à jour la version du micrologiciel du cache et interroge les fonctionnalités via Message Stream.
Nous autorisons également le fournisseur à transférer directement des fonctionnalités au chercheur sans demande préalable, car nous imaginons qu'à l'avenir, des appareils plus sophistiqués (peut-être basés sur Android) effectueront une configuration dynamique basée sur des indicateurs pour la même version du micrologiciel.
Nous ajoutons ci-dessous un nouveau groupe de messages et des codes de message.
Nom du groupe de messages | Valeur |
---|---|
Événement de synchronisation des fonctionnalités de l'appareil | 0x06 |
Nom du code de message | Valeur |
---|---|
Demande de mise à jour des fonctionnalités (envoyée par le chercheur) | 0x01 |
Suivi FHN | 0x03 |
À la réception de 0x0601
:
- Si le fournisseur a activé la prise en charge du suivi FHN, il doit répondre comme suit:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | uint8 | Événement de synchronisation des fonctionnalités de l'appareil | 0x06 |
1 | uint8 | Suivi FHN | 0x03 |
2 à 3 | uint16 | Longueur des données supplémentaires | 0x0007 |
4 | uint8 | État du provisionnement de la fonctionnalité FHN | 0x00 si non provisionné ; 0x01 si provisionné par un compte |
5 - 10 | uint8[] | Adresse MAC BLE actuelle de l'appareil | varie ; |