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 ;