Points forts
Les paramètres de configuration associés à un appareil s'appliquent désormais à chaque session client associée à cet appareil, et nonuniquement celle qui a effectué la saisie. Une deuxième visionneuse se rafraîchit automatiquement dès la réception de son événement mis à jour lors de la session, au lieu d'interroger le service à intervalles réguliers — exactement un événement par session active, et jamais deux pour l'auteur de l'écriture.
L'emplacement physique d'installation d'un appareil peut désormais être communiqué au client, au lieu que le service renvoie systématiquement l'installation configurée lors de la session. L'étiquette indiquant laquelle des deux vous consultez est désormais exacte par défaut, quel que soit le format de sortie.Lorsqu'un appareil conserve sa propre référence de montage, le service la suit. Auparavant, le service renvoyait une valeur capturée au démarrage de l'appareil, sans jamais la réexaminer. Il peut désormais actualiser cette référence à la demande, au rythme de rendu propre au client — avec une limitation de débit côté service afin qu'un client rapide ne puisse pas saturer la liaison avec l'appareil — et signaler le changement une fois que le montage a réellement pivoté.Améliorations internes
Correction automatique expérimentale de la dérive en lacet de la poignée. Un nouveau module de service permet de corriger la dérive en lacet inertielle de la poignée VerseGrip sans fil : il ajuste le lacet absolu de la poignée en fonction du mouvement de l’ Inverse3 e appairé ou du Minverse auquel elle est fixée ; une fois que toutes les conditions de qualité sont remplies, il enregistre une seule correction dans le micrologiciel de la poignée. Il est livré désactivé, n'est accessible que lorsque le commutateur d'adhésion expérimentale est activé, et comporte un commutateur d'exécution qui ramène immédiatement chaque poignée active à l'état désactivé dès qu'on l'actionne — ce qui n'est pas facultatif pour un composant qui écrit dans le micrologiciel d'un appareil.Une configuration visant l'ensemble des appareils à la fois est désormais une opération « tout ou rien ». L'ensemble de la sélection est validé (capacité du micrologiciel et disponibilité de chaque appareil) avant que le moindre appareil ne soit modifié ; ainsi, un parc comportant des micrologiciels hétérogènes ne peut plus se retrouver partiellement basculé à cause d'une erreur sur le deuxième appareil.Les accusés de réception du micrologiciel des poignées sont désormais suivis par requête. Un emplacement de résultat partagé unique faisait que deux demandeurs simultanés pouvaient perdre la réponse de l'autre, et une même valeur ambiguë signifiait à la fois « refusé » et « rien pour l'instant » — ce qui pouvait transformer un refus en une avalanche de tentatives. Chaque requête est désormais associée à son propre jeton ; une requête qui n’a jamais été transmise n’enregistre rien, et une réponse perdue entraîne un échec au lieu de bloquer le système. Le balayage qui assure ce suivi ne coûte rien lorsqu’aucune requête n’est en attente.L'étalonnage de la station d'accueil Inkwell n'est pas affecté par les nouvelles vérifications de capacité du micrologiciel des stylets. Le branchement d'un stylet déclenche un réétalonnage complet de la position, ce qui est correct pour chaque stylet livré, quelle que soit la version du micrologiciel ; ce processus est explicitement exempté du seuil minimal de capacité introduit pour les corrections de cap calculées, et cette exemption est précisée au point d'appel plutôt que déduite.Corrections
La réinitialisation de la compensation de gravité rétablit désormais la véritable valeur par défaut au lieu de surcompenser.Malgré son nom, le champ facteur_d'échelle de config/compensation_de_la_gravité n'est pas un multiplicateur : il s'agit de la masse supplémentaire de charge utile de l'effecteur terminal, en kilogrammes, que l'appareil compense en plus de son propre poids. La réinitialisation prenait ce nom au pied de la lettre et rétablissait le facteur « neutre » 1, soit une charge fantôme d'un kilogramme ; après une réinitialisation, l'appareil poussait donc la poignée vers le haut, ce qui ne correspond pas au comportement d'un appareil qui vient d'être connecté. La réinitialisation renvoie désormais la valeur par défaut réelle : compensation activée avec facteur_d'échelle à 0, ce qui signifie que l'appareil supporte son propre poids et ne comporte aucune charge utile. Si votre application utilisait la réinitialisation pour augmenter l'intensité de la compensation, définissez plutôt explicitement la valeur souhaitée.
La réinitialisation de la fonction « retour à l'origine » permet désormais de la réactiver réellement. La réinitialisation de config/retour_à_l'accueil avait fini par désactiver la fonction « retour à l'état d'origine » tout en indiquant à l'appelant qu'elle était activée ; une réinitialisation rétablit désormais réellement la valeur d'usine (activée), et la valeur que votre application lit ensuite correspond à celle que l'appareil utilise effectivement.Une écriture de configuration ou d'orientation au niveau d'un appareil ne laisse plus les autres clients avec des données obsolètes. Avant la version 3.5.6, une écriture qui concernait l'appareil lui-même — partagée par chaque session détenant cet appareil — ne rafraîchissait que la configuration du client à l'origine de l'écriture, et les routes au niveau de l'appareil n'étaient rafraîchies pour personne. Tout autre client sur le même appareil continuait d'afficher l'ancienne valeur jusqu'à ce qu'il interroge le service. Chaque session détentrice est désormais informée.Une tentative d'amarrage répétée à la station Inkwell ne s'interrompt plus après un seul échec. L'état d'un amarrage précédent persistait d'un amarrage à l'autre, de sorte que le deuxième amarrage considérait son premier échec comme la fin de sa fenêtre de nouvelles tentatives. La fenêtre de nouvelles tentatives est désormais réinitialisée à chaque tentative d'amarrage.Correction d'une condition de concurrence sur les données lors du cycle de mise à jour de l'appareil VerseGrip sans fil. L'identifiant de l'appareil pouvait être réattribué par le thread de connexion alors qu'un chemin de préparation le lisait sous un verrou différent. L'identifiant est désormais capturé une seule fois sous le bon verrou, et tous les chemins ci-dessous, y compris les refus, fonctionnent à partir de cette copie.Correction d'un problème de désynchronisation dans la préparation des messages sur quatre émetteurs sans fil VerseGrip. Quatre voies d'envoi de messages regroupaient leur charge utile et leur somme de contrôle, puis demandaient l'envoi sans acquérir le verrou d'écriture ; deux émetteurs pouvaient donc se chevaucher dans le tampon partagé.Modifications potentiellement incompatibles
Aucun changement n'a été apporté à l'API, au format de transmission ou aux paramètres. La sortie par défaut est identique, octet par octet, à celle de la version 3.5.5 ; aucune route n'a été supprimée ni déplacée ; l'API C publique n'a subi aucune modification ; et aucune clé de paramètres n'a été renommée, supprimée ou dotée d'une nouvelle valeur par défaut. Les applications qui activent volontairement les interfaces d'aperçu ou expérimentales du SDK doivent toutefois effectuer un travail de migration pour ce cycle, notamment un changement de niveau de commutateur et la suppression d'un ensemble de jetons ; chaque étape est documentée dans le journal des modifications techniques qui accompagne cette version.La réinitialisation de la compensation de gravité renvoie une valeur différente de celle de la version 3.5.5. Aucun champ, aucune route ni aucune forme de réponse n'a changé, mais une application qui comptait sur la réinitialisation pour écrire un facteur_d'échelle de 1 prend désormais la valeur d'usine 0; la compensation reste activée dans les deux cas. Définissez explicitement la valeur plutôt que de compter sur la réinitialisation ; voir la correction ci-dessus.La réinitialisation de la fonction « Retour à l'origine » laisse désormais cette fonction activée, et non désactivée. Aucun champ, aucun itinéraire ni aucun type de réponse n'a changé, mais une application qui comptait sur la réinitialisation pour désactiver la fonction « Retour à l'origine » la trouve désormais activée. Si c'est ce dont vous avez besoin, désactivez-la explicitement après une réinitialisation ; voir la correction ci-dessus.Les clients recevront des notifications de configuration supplémentaires. Une application qui partait du principe qu'un événement mis à jour lors de la session S'il n'en recevait auparavant qu'en raison de sa propre écriture, il en recevra désormais également un lorsqu'un autre client modifie un appareil que tous deux détiennent, suivi d'un rendu complet de la configuration. C'est la conséquence voulue de la diffusion décrite plus haut ; un client qui se contente de relire les données à la réception de l'événement n'a besoin d'aucune modification.