Switch audio
Comme les utilisateurs se servent de plus en plus de plusieurs appareils de sources audio pour effectuer leurs tâches quotidiennes, il est de plus en plus nécessaire de trouver une solution plus simple pour gérer l'utilisation des casques sur les différents appareils. Le switch audio permet de transférer facilement les connexions casque entre les appareils en fonction de l'activité de l'utilisateur (par exemple, le démarrage d'un film) et des événements prioritaires (par exemple, un appel entrant).
Principes de l'expérience utilisateur
- Le changement de connexion doit être rapide et dépendre d'une action de l'utilisateur.
- Le changement de connexion doit être transparent pour les utilisateurs, ce qui leur permet de contrôler ou d'annuler le changement s'il n'est pas souhaitable.
- Le changement de mode doit respecter la vie privée des utilisateurs.
Rôles
Lecteur de switch audio: il s'agit d'un appareil source audio (par exemple, un téléphone ou une tablette) qui recherche un casque à proximité avec lequel se connecter, le cas échéant.
Fournisseur de switch audio: le fournisseur est normalement un casque qui annonce sa présence et son état de connexion afin que les demandeurs puissent décider de changer d'appareil.
Présentation des exigences
Pour mettre en œuvre le basculement intelligent, les fournisseurs doivent respecter les exigences suivantes:
Nom | Description | Conditions requises | Obligatoire ? |
---|---|---|---|
Numérisation de page | Pour accepter une nouvelle demande de connexion d'un autre chercheur lorsqu'une connexion existe déjà. Pour les fournisseurs à point unique:
|
Pour améliorer les performances, un mode d'analyse de page à faible latence (l'intervalle d'analyse ne doit pas dépasser 640 ms) est requis pour améliorer les performances. Pour trouver un compromis entre l'autonomie de la batterie et les performances de changement de mode, le fournisseur peut proposer un mode d'analyse de page par défaut dans la plupart des cas (mode économie d'énergie, l'intervalle d'analyse ne doit pas dépasser 1 280 ms). Toutefois, le mode de faible latence doit être utilisé dans les situations suivantes:
|
Obligatoire |
Historique des connexions | Revenir à la connexion précédente et reprendre la lecture, le cas échéant. Cette action sera déclenchée par les communications via les API Message Stream. L'événement audio de mise en pause doit être inclus dans l'enregistrement pour reprendre la lecture, le cas échéant. |
gérer l'historique des connexions et implémenter les API de flux de messages ; | Obligatoire |
État de la connexion | Pour que les demandeurs puissent juger du changement de connexion, l'état de la connexion est le suivant:
|
Incluez l'état de la connexion dans l'annonce BLE et le flux de messages. | Obligatoire |
Modifications des fonctionnalités d'exécution | Le switch audio peut être activé en mettant à niveau le micrologiciel sur le fournisseur. Les fonctionnalités doivent donc être synchronisées entre Seeker et le fournisseur au moment de l'exécution. | Implémentez les API de flux de messages pour accéder aux fonctionnalités d'exécution. | Obligatoire |
Règles de commutation configurables | Laissez le moteur de recherche configurer la priorité entre le streaming audio actif existant et les nouvelles requêtes de streaming audio via les paramètres des préférences utilisateur. Par exemple, il peut fournir des paramètres d'interface utilisateur permettant aux utilisateurs d'activer ou de désactiver le basculement automatique entre le streaming multimédia et l'appel. Le sélecteur de switch audio définira et obtiendra la règle de basculement via le flux de messages. |
Fournisseurs multipoints uniquement. Implémentez les API de flux de messages pour que les règles de basculement entre les appareils connectés puissent être configurées. |
Facultatif |
Basculement entre appareils en cours | Laissez le moteur de recherche de switch audio simuler le basculement audio entre les appareils connectés. Du côté du lecteur de switch audio, une UI permet aux utilisateurs de basculer facilement d'un appareil connecté à un autre. |
Fournisseurs multipoints uniquement. Implémentez les API de flux de messages pour l'outil Switch Seeker afin de déterminer la source audio active entre les appareils connectés. |
Obligatoire |
Notification de basculement multipoint | Autorisez l'outil de recherche de switch audio à afficher la notification de basculement. | Fournisseurs multipoints uniquement. Implémentez les API de flux de messages pour avertir les utilisateurs en quête de switch audio connectés lorsqu'une commutation multipoint est en cours. |
Obligatoire |
Charge utile publicitaire
Le Fournisseur doit inclure son état de connexion actuel dans l'annonce, basé sur les données du compte Association express décrite dans la section Publicité: Lorsqu'elle n'est pas visible.
Notez que la version du tableau 4.2 est 0x1.
Champ d'état de la connexion
Octet | Type de données | Description | Valeur | Obligatoire ? |
---|---|---|---|---|
0 | uint8 |
Longueur et type de champ 0bLLLLTTTT
|
0bLLLL0101
|
Obligatoire |
1 | uint8 |
État de la connexion 0bHAFRSSSS
|
0bHAFRSSSS
|
Obligatoire |
2 | uint8 |
Données personnalisées Actuellement, elles ne comprennent que le type de contenu utilisé pour décrire l'utilisation du streaming audio actuel. Le Seeker l'envoie au fournisseur. |
La valeur est envoyée par le demandeur du streaming actif en cours vers le fournisseur via un flux de messages. 0 si la diffusion active en cours ne provient pas de Seeker. | Obligatoire |
3 – var | Bitmap des appareils connectés Bitmap indiquant les appareils actuellement connectés au fournisseur. Tous les appareils liés sont disposés dans l'ordre : un bit pour un appareil lié. La longueur dépend du nombre d'appareils associés au fournisseur. |
Le bit mappé est défini sur 1 si l'appareil est actuellement connecté au fournisseur, et sur 0 dans le cas contraire. Pour en savoir plus, consultez Bitmap de l'appareil connecté. |
Facultatif |
Tableau 4.1:Données brutes du champ d'état de la connexion
Indicateurs de connexion
0bH = détection des mouvements de la tête
- 1, sur la tête maintenant
- 0 (sinon, pas sur la tête) ou sans capteur OHD
0bA = disponibilité de la connexion
- 1, une connexion est disponible
- 0. Sinon,
0bF = mode formulaire
- 1.En mode sélectionné, le changement de connexion n'est pas autorisé pour l'utilisation de contenus multimédias (pas de basculement entre A2DP et A2DP).
- 0. Sinon,
0bR = reconnecté automatiquement
- 1, si la connexion actuelle est automatiquement reconnectée par le fournisseur, ce qui signifie qu'elle n'est pas connectée par les utilisateurs (pour les connexions multipoint, si l'une des connexions existantes est automatiquement reconnectée, elle doit être définie sur 1)
- 0. Sinon,
État de la connexion
- 0x0: aucune connexion
- 0 x 1: pagination
- 0 x 2: connecté, mais aucun transfert de données
- 0x3: transfert de données non audio (uniquement en cas de commutation, si ce n'est pas le cas, avec 0xF)
- 0x4: streaming A2DP, AVRCP non applicable
- 0x5: streaming A2DP et lecture AVRCP
- 0x6: streaming HFP (appel téléphonique/voip), y compris la sonnerie inbande et non inbande
- 0x7 : LE Audio : streaming multimédia sans contrôle
- 0x8 : LE Audio : streaming multimédia avec contrôle
- 0x9: LE Audio – Streaming de l'appel
- 0xA: LE Audio – diffusé
- 0xF: désactiver temporairement le commutateur de connexion (par exemple, mise à jour du micrologiciel).
Bitmap de l'appareil connecté
Pour éviter tout changement de connexion indésirable, le Seeker peut avoir besoin de savoir à quel(s) appareil(s) le casque est actuellement connecté. Par exemple, lorsque le casque est connecté au téléphone, l'utilisateur ne souhaite pas être interrompu par le changement de connexion lorsqu'un membre de sa famille lance YouTube sur la tablette.
Notez que ce bitmap est anonyme. Le demandeur ne peut pas savoir quels autres appareils sont associés au fournisseur. Prenons l'exemple de cinq appareils associés:
- 0: ordinateur portable (0bx0000000)
- 1: phoneA (0b0x000000)
- 2: phoneB (0b00x00000)
- 3: tablet (0b000x0000)
- 4: TV (0b0000x000)
Si les appareils connectés actuels sont un ordinateur portable et une tablette, la valeur du bitmap sera 0b10010000. Le changement d'ordre est acceptable s'il est inévitable, par exemple lorsque les utilisateurs rétablissent la configuration d'usine du casque ou lorsque le nombre d'appareils associés atteint la limite supérieure.
Annonce pouvant être résolue de manière aléatoire
Pour éviter le suivi et respecter la confidentialité des utilisateurs, le fournisseur doit alterner et chiffrer le champ à l'aide de la clé de compte à l'aide d'AES-CTR:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
où
La clé est dérivée de la clé du compte en cours d'utilisation, définie dans la section suivante.
La clé est générée par la fonction HKDF, IETF RFC 5869, à l'aide de la fonction de hachage SHA-256.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
Le fournisseur utilisera ici la clé de compte d'origine, c'est-à-dire que le premier octet de la clé est 0x04, non inclus dans le modèle d'utilisation.
IV (vecteur initial) correspond au salage de 2 octets des données de clé de compte avec une marge intérieure nulle, c'est-à-dire qu'IV est une concaténation(sel, Zéros de 14 octets).
Les données brutes sur l'état de la connexion sont définies dans le tableau 4.1. Si l'état de la connexion change, le salage et le RPA doivent être régénérés au cours de la même période publicitaire.
Ainsi, le champ d'état de la connexion chiffrée change en même temps que les données de clé de compte.
L'annonce BLE se présentera comme suit:
Octet | Type de données | Description | Valeur | Obligatoire ? |
---|---|---|---|---|
0 | uint8 |
Version et indicateurs | 0x10 | Obligatoire |
1 - t | Données de clé de compte | varie | Obligatoire | |
t+1 - s | Données de la batterie | varie | Facultatif | |
s+1 – var | Données pouvant être résolues de manière aléatoire | varie | Obligatoire si la liste de clés de compte n'est pas vide, sinon, elle est exclue. |
Tableau 4.2:Annonce BLE avec des données pouvant être résolues de manière aléatoire
Les données pouvant être résolues de manière aléatoire contiennent:
Octet | Type de données | Description | Valeur | Obligatoire ? |
---|---|---|---|---|
0 | uint8 |
Longueur et type de champ 0bLLLLTTTT
|
0bLLLL0110
|
Obligatoire |
1 – var | Données chiffrées | varie | Obligatoire |
Tableau 4.2.1:données pouvant être résolues de manière aléatoire
Par exemple, si les données pouvant être résolues de manière aléatoire contiennent un champ d'état de connexion chiffré, le résultat déchiffré sera le champ d'état de la connexion.
Pour éviter toute falsification, les données de clé de compte ci-dessus doivent être légèrement modifiées lorsque les données aléatoires pouvant être résolues sont incluses dans l'annonce. Normalement, lors de la création du filtre de clé de compte, une valeur V est générée en combinant le filtre de clé de compte avec un salage. À la place, lorsque des données pouvant être résolues de manière aléatoire sont également annoncées, la valeur V doit être construite comme suit:
V = concat(account_key, salt, random_resolvable_data)
Si des données sur la batterie et des données pouvant être résolues de manière aléatoire sont annoncées, V doit être construit comme suit:
V = concat(account_key, salt, battery_data, random_resolvable_data)
Clé de compte en cours d'utilisation
Le changement de connexion est basé sur le compte. Par conséquent, le fournisseur doit inclure les informations du compte de la connexion actuelle dans l'annonce BLE. Si l'appareil connecté actuel est un chercheur de switch audio, le fournisseur doit pouvoir obtenir la clé de compte associée à ce chercheur et l'utiliser pour chiffrer le champ d'état de la connexion. Si la source audio connectée n'est pas un switch audio, le fournisseur doit utiliser la dernière clé de compte utilisée.
Avant de calculer le filtre de clé de compte, le fournisseur doit modifier le premier octet des clés de compte pour inclure l'un des éléments suivants dans les formats d'utilisation:
- 0b00000100
Cette clé de compte n'est pas utilisée.
Il s'agit de l'option par défaut (voir Clé de compte). - 0b00000101
Cette clé de compte est la dernière clé de compte utilisée.
Le champ "État de la connexion" est chiffré par cette clé de compte. Il n'existe aucune information clé de compte concernant l'état actuel de la connexion. Cela peut signifier qu'aucun appareil n'est connecté ou que l'appareil connecté n'est pas un chercheur de switch audio. - 0b00000110
Cette clé de compte est la clé de compte en cours d'utilisation.
Le champ d'état de la connexion est chiffré par cette clé de compte, et l'appareil actuellement connecté est associé à cette clé de compte.
Schéma de la charge utile du switch audio
La figure ci-dessous illustre le schéma de la charge utile du switch audio.
Messages
Une fois connectés, Seeker et le fournisseur peuvent utiliser le flux de messages pour synchroniser la fonctionnalité de switch audio, déclencher un commutateur de connexion, définir et obtenir les préférences de basculement, notifier l'état de la connexion, etc. Nous créons un groupe de messages et des codes de message spécifiques au switch audio, comme ci-dessous.
Nom du groupe de messages | Valeur |
---|---|
Switch audio | 0x07 |
Vous trouverez des informations supplémentaires pour chaque code de message dans les sections suivantes.
Nom du code de message | Valeur | Multipoint uniquement | Expéditeur | Personne interrogée | Chiffrer | Mac | CONFIRMATION |
---|---|---|---|---|---|---|---|
Obtenir la fonctionnalité de switch audio | 0x10 | N | Les deux | Les deux, via le code 0x11 | N | N | N |
Fonctionnalité de notification du switch audio | 0x11 | N | Les deux | Les deux | N | Y | O |
Définir l'état multipoint | 0x12 | O | Chercheur | Fournisseur | N | Y | O |
Définir les préférences de transition | 0x20 | O | Chercheur | Fournisseur | N | Y | O |
Obtenir les préférences de transition | 0x21 | O | Chercheur | Fournisseur, via le code 0x22 | N | N | N |
Notifier les préférences de transition | 0x22 | O | Fournisseur | Chercheur | N | N | N |
Changer la source audio active(vers l'appareil connecté) | 0x30 | O | Chercheur | Fournisseur | N | Y | O |
Revenir à l'appareil déconnecté | 0x31 | N | Chercheur | Fournisseur | N | Y | O |
Notifier l'événement de commutateur multipoint | 0x32 | O | Fournisseur | Chercheur | N | N | N |
Obtenir l'état de la connexion | 0x33 | O | Chercheur | Fournisseur, via le code 0x34 | N | N | N |
Notifier l'état de la connexion | 0x34 | O | Fournisseur | Chercheur | O | N | N |
Notifier que la connexion a été initiée par le switch audio | 0x40 | N | Chercheur | Fournisseur | N | Y | O |
Indiquer une clé de compte en cours d'utilisation | 0x41 | N | Chercheur | Fournisseur | N | Y | O |
Envoyer des données personnalisées | 0x42 | N | Chercheur | Fournisseur | N | Y | O |
Définir une cible de suppression de connexion | 0x43 | O | Chercheur | Fournisseur | N | Y | O |
Tableau 4.3:Messages de switch audio
MAC des messages concernant le switch audio
Pour permettre l'authentification des messages, tous les messages de switch audio avec des données supplémentaires envoyées du fournisseur de services de recherche au fournisseur nécessitent un code d'authentification du message. Lorsqu'un message avec MAC est reçu, il doit être confirmé pour que le chercheur sache si le fournisseur a réagi ou non au message.
Si l'authentification du message réussit, le fournisseur envoie l'accusé de réception (ACK) pour le message:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Acceptation | 0xFF |
1 | Uint8 | CONFIRMATION | 0x01 |
2 à 3 | Uint16 | Longueur de données supplémentaire | varie |
4 | Uint8 | Switch audio | 0x07 |
5 | Uint8 | Code du message concernant le switch audio | varie |
6 – s | Données supplémentaires | varie |
En cas d'échec, le Fournisseur enverra la NAK pour le message:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Acceptation | 0xFF |
1 | Uint8 | N/A | 0x02 |
2 à 3 | Uint16 | Longueur de données supplémentaire | 0x0003 |
4 | Uint8 | Cause de l'erreur | varie |
5 | Uint8 | Switch audio | 0x07 |
6 | Uint8 | Code du message concernant le switch audio | varie |
Notez que si le fournisseur est l'expéditeur, l'adresse MAC n'est pas requise.
Obtenir la fonctionnalité de switch audio
Le fournisseur de commutateur audio et l'outil de recherche peuvent vérifier si le chercheur/fournisseur d'Association express connecté prend en charge le switch audio ou non à l'aide du message ci-dessous:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Obtenir la fonctionnalité de switch audio | 0x10 |
2 à 3 | Uint16 | Longueur de données supplémentaire | 0 |
Tableau 4.3.1.0:Obtenir la capacité du switch audio
Fonctionnalité de notification du switch audio
Lors de la réception du code du message getcompatibilité de switch audio, le chercheur/fournisseur de switch audio répond avec l'un des indicateurs suivants:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Fonctionnalité de notification du switch audio | 0x11 |
2 à 3 | Uint16 | Longueur de données supplémentaire | 20 si cette information est envoyée par le demandeur 4 si elle est envoyée par le fournisseur |
4 – 5 | Uint16 | Code de version du switch audio | Une valeur non nulle signifie que le switch audio est possible. Le code de la version actuelle (avec l'amélioration de la sécurité) est 0x0102. Si la valeur est 0x0000 ou aucune réponse en une seconde, cela signifie que le switch audio n'est pas disponible sur cet appareil. |
6 – 7 | indicateurs | Indicateurs de capacité de switch audio du fournisseur. Si l'élément est envoyé par Seeker, ces deux octets doivent être ignorés. |
varie Consultez la section Indicateurs de capacité du switch audio |
8 – 15 | Nonce du message Nécessaire uniquement lorsqu'il est envoyé par Seeker |
varie | |
16 – 23 | Code d'authentification du message Obligatoire uniquement lorsque le demandeur envoie le message |
varie |
Tableau 4.3.1.1:Capacité de notification du switch audio
Indicateurs de capacité du switch audio
Bit 0 (octet 6, MSB): état du switch audio
- 1, si le switch audio est activé
- 0. Sinon,
Bit 1: configurabilité multipoint
- 1, si l'appareil est compatible avec la connectivité multipoint et qu'il peut être activé ou désactivé
- 0, sinon (non compatible avec la connectivité multipoint ou la connectivité multipoint est toujours activée)
Bit 2: état actuel multipoint
- 1, si la connectivité multipoint est activée
- 0. Sinon,
Bit 3: détection directe
- 1, si cet appareil prend en charge la détection des appareils frontaux (même si cette fonctionnalité est actuellement désactivée)
- 0. Sinon,
Bit 4: état actuel de la détection anticipée
- 1, si la détection des appareils frontaux est activée
- 0, sinon (n'est pas compatible avec la détection frontale ou celle-ci est désactivée)
Tous les autres bits sont réservés (0 par défaut).
Définir l'état multipoint
Pour les chercheurs de switch audio, nous pouvons proposer aux utilisateurs un paramètre permettant d'activer/de désactiver la fonctionnalité multipoint. Le Seeker définit l'état multipoint sur le fournisseur à l'aide du message ci-dessous:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Définir l'état multipoint | 0x12 |
2 à 3 | Uint16 | Longueur de données supplémentaire | 17 |
4 | Uint8 | État de la connectivité multipoint | 0: désactiver le multipoint 1: activer la connectivité multipoint |
5 – 12 | Nonce du message | varie | |
13 – 20 | Code d'authentification du message | varie |
Tableau 4.3.1.2:Définir l'état multipoint
Définir les préférences de transition
Les chercheurs de switch audio peuvent modifier la préférence de basculement pour la connectivité multipoint et la définir sur le fournisseur à l'aide du message ci-dessous:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Définir les préférences de transition | 0x20 |
2 à 3 | Uint16 | Longueur de données supplémentaire | 18 |
4 | indicateurs | Préférence de changement | varie Reportez-vous à la section Indicateur de préférence de basculement multipoint |
5 | Paramètres de transition avancés Cet octet est réservé. La valeur par défaut est 0. |
varie | |
6 – 13 | Nonce du message | varie | |
14 – 21 | Code d'authentification du message | varie |
Tableau 4.3.2.0:Définir les préférences de changement de mode
Indicateur de préférence pour le basculement multipoint
- Bit 0 (MSB): A2DP vs A2DP (par défaut 0)
- Bit 1: HFP vs HFP (par défaut 0)
- Bit 2: A2DP vs HFP (0 par défaut)
- Bit 3: HFP vs A2DP (par défaut 1)
- Bit 4 à 7: réservés
- Ci-dessus représente une "nouvelle requête de profil" par rapport au "profil actif actuel".
- 0 signifie ne pas changer
- 1 pour passer au Pixel
Obtenir une préférence de transition
Les chercheurs de switch audio peuvent interroger la préférence de basculement pour le multipoint à partir du fournisseur à l'aide du message ci-dessous:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Obtenir une configuration de basculement | 0x21 |
2 à 3 | Uint16 | Longueur de données supplémentaire | 0 |
Tableau 4.3.2.1:Obtenir des préférences de basculement
Notification des préférences de transition
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Notification des préférences de transition | 0x22 |
2 à 3 | Uint16 | Longueur de données supplémentaire | 2 |
4 | indicateurs | Changer d'indicateur de préférence | varie Reportez-vous à la section Indicateur de préférence de basculement multipoint |
5 | Paramètres de transition avancés Cet octet est réservé, la valeur par défaut devrait être 0 |
varie |
Tableau 4.3.2.2:préférences de notification de changement d'appareil
Changer la source audio active (vers l'appareil connecté)
Les chercheurs de switch audio peuvent demander au fournisseur multipoint de faire basculer la source audio active entre les appareils connectés à l'aide du message ci-dessous:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Changer la source audio active (vers l'appareil connecté) | 0x30 |
2 à 3 | Uint16 | Longueur de données supplémentaire | 17 |
4 | indicateurs | Changer d'indicateur d'événement de source audio active | varie Consultez Changer d'événement de source audio active |
5 – 12 | Nonce du message | varie | |
13 – 20 | Code d'authentification du message | varie |
Tableau 4.3.3.0:Changer la source audio active (vers l'appareil connecté)
Changement d'événement de source audio active
- Bit 0 (MSB): 1 interrupteur sur cet appareil, 0 bascule vers le deuxième appareil connecté
- Bit 1: 1 reprends la lecture sur le passage à l'appareil après le basculement, 0 dans le cas contraire. La reprise de la lecture signifie que le fournisseur envoie une notification PLAY au demandeur via le profil AVRCP. Si l'état précédent (avant le changement d'état) n'était pas "PLAY", le fournisseur doit ignorer cet indicateur.
- Bit 2: 1 refuse le SCO sur l'appareil éteint, 0 dans le cas contraire
- Bit 3: 1 déconnecte le Bluetooth lorsque l'appareil est éteint, 0 sinon.
- Bits 4 à 7: réservés.
Il est possible que le chercheur de switch audio ne connaisse pas toujours son état correctement. Il est donc possible que le fournisseur reçoive un message "basculer vers cet appareil " lorsque le chercheur est déjà l'appareil actif. Dans ce cas, pour afficher l'UI appropriée sur Seeker, le fournisseur peut envoyer un message NAK avec le motif d'erreur "0x4 - Redundant device action" (0x4 - Action d'appareil redondante).
Revenir à l'appareil déconnecté
Si le changement de connexion n'est pas souhaitable, les utilisateurs peuvent annuler ce basculement. Dans certains cas, il est judicieux de restaurer la connexion audio pour minimiser les perturbations. Le Seeker utilisera le message ci-dessous pour déclencher le retour à la version précédente:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Revenir à l'appareil déconnecté | 0x31 |
2 à 3 | Uint16 | Longueur de données supplémentaire | 17 |
4 | Uint8 | Revenir à l'événement précédent | varie 0 x 01: revenir en arrière 0 x 02: revenir en arrière et reprendre la lecture |
5 – 12 | Nonce du message | varie | |
13 – 20 | Code d'authentification du message | varie |
Tableau 4.3.3.1:Revenir à l'appareil déconnecté
Pour les fournisseurs multipoints, pour effectuer un changement de connexion, un fournisseur peut interrompre la connexion à un appareil source audio et suspendre la session audio sur l'autre source audio. Par exemple, supposons que le casque multipoint est connecté à une tablette et à un troisième appareil de switch audio compatible. L'utilisateur regarde une vidéo sur la tablette lors d'un appel entrant sur son téléphone. Le téléphone déclenche un commutateur de connexion sur le casque, qui doit interrompre la connexion du troisième appareil pour se connecter au téléphone, tout en mettant en pause la session multimédia sur la tablette pour obtenir la sonnerie du téléphone. Si l'utilisateur refuse l'appel, le téléphone peut demander au casque de "revenir en arrière et reprendre la lecture". À la réception de cette demande, le casque doit se reconnecter au troisième appareil et reprendre la lecture de la vidéo mise en pause sur la tablette.
Signaler un événement de commutateur multipoint
Pour informer les utilisateurs qu'un événement de basculement multipoint se produit, l'outil de recherche de switch audio peut afficher une notification. Le fournisseur doit informer les demandeurs de switch audio connectés de l'événement de basculement.
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Notification d'événement de commutateur multipoint Le fournisseur doit l'envoyer à chaque commutateur, y compris le Seeker pour le switch audio vers le Seeker autre que le switch audio, le chercheur standard pour le switch audio, et inversement |
0x32 |
2 à 3 | Uint16 | Longueur de données supplémentaire | varie |
4 | Uint8 | Motif du changement | varie 0 x 00: non spécifié 0 x 01: flux A2DP 0 x 02: HFP |
5 | Uint8 | Appareil cible | varie 0 x 01: cet appareil 0 x 02: autre appareil connecté |
6 - n | utf8 | Nom de l'appareil cible si l'appareil cible est le demandeur de switch audio, à l'aide du nom auquel il a été envoyé ou du nom BT, le cas échéant, avec les deux derniers octets de son adresse |
varie |
Tableau 4.3.3.2:Notification d'événement de commutateur multipoint
Obtenir l'état de la connexion
Le Seeker peut obtenir l'état actuel de la connexion auprès du fournisseur:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Obtenir l'état de la connexion | 0x33 |
2 à 3 | Uint16 | Longueur de données supplémentaire | 0 |
Tableau 4.3.3.3:Obtenir l'état de la connexion
À la réception de ce message, le Fournisseur doit répondre par le code de message 0x34 Notification concernant l'état de la connexion.
Notifier l'état de la connexion
Comme défini dans la charge utile publicitaire BLE, pour les fournisseurs multipoints, si l'état de la connexion change, le fournisseur doit également informer les utilisateurs connectés qui utilisent la même clé de compte de la modification (sauf en cas de modification du paquet publicitaire). Si le fournisseur est connecté à un chercheur de commutateur audio et à un chercheur de commutateur audio non audio, si celui-ci est actif, le fournisseur doit également informer le chercheur de commutateur audio connecté de l'état de la connexion (à l'aide de la clé de compte du chercheur).
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Notifier l'état de la connexion | 0x34 |
2 à 3 | Uint16 | Longueur de données supplémentaire | varie |
4 | Uint8 | Indicateur d'appareil actif | varie 0 x 00: cet outil de recherche est passif et l'appareil actif utilise la même clé de compte 0 x 01: ce chercheur est l'appareil actif 0 x 02: ce chercheur est passif, et l'appareil actif n'est pas le chercheur de switch audio. |
5 - n | État de la connexion chiffrée | varie | |
n+1 - n+8 | Nonce du message | varie |
Tableau 4.3.3.4:Notifier l'état de la connexion
Message d'état de la connexion chiffrée
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
où :
La clé est dérivée de la clé du compte en cours d'utilisation. Consultez la section Annonce aléatoire pouvant être résolue.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
IV est concat(Session_nonce, Message_nonce)
connection_status_raw_data = concat(connection_state, custom_data, connected_devices) qui est définie dans la charge utile publicitaire BLE. Notez que l'octet de longueur et de type du champ ne doit pas être inclus, car nous avons ici le code du message et la longueur des données.
Notification de connexion initiée par le switch audio
Les fournisseurs de switch audio peuvent avoir besoin de savoir si le changement de connexion est déclenché par le switch audio pour avoir des réactions différentes, par exemple pour désactiver les icônes sonores pour les événements de switch audio. Le Seeker envoie un message pour avertir le fournisseur qu'il s'agit d'une connexion initiée par un commutateur audio.
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Notification de connexion initiée par le switch audio | 0x40 |
2 à 3 | Uint16 | Longueur de données supplémentaire | 17 |
4 | Uint8 | Indication du déclenchement de la connexion par le switch audio | varie 0: cette connexion n'a pas été déclenchée par le switch audio 1: il s'agit d'une connexion initiée par le switch audio |
5 – 12 | Nonce du message | varie | |
13 – 20 | Code d'authentification du message | varie |
Tableau 4.3.4.0:Notification de connexion initiée par le commutateur audio
Indiquer la clé de compte en cours d'utilisation
Si plusieurs clés de compte sur le Seeker (par exemple, des comptes multi-utilisateurs) sont associées au fournisseur, il utilisera le message ci-dessous pour indiquer la clé de compte utilisée.
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Indiquer la clé de compte en cours d'utilisation | 0x41 |
2 à 3 | Uint16 | Longueur de données supplémentaire | 22 |
4 à 9 | utf8 | Chaîne utilisée | UTF8 ("en cours d'utilisation") |
10 – 17 | Nonce du message | varie | |
18–25 | Code d'authentification du message | varie |
Tableau 4.3.4.1:Indiquer une clé de compte utilisée
À la réception de ce message, le fournisseur peut savoir quelle clé de compte est utilisée en vérifiant le code d'authentification du message.
Envoyer des données personnalisées
Le Seeker actif du switch audio peut encapsuler les informations (par exemple, l'utilisation audio) du flux audio dans un octet de données personnalisé, puis les envoyer au fournisseur à l'aide du message ci-dessous:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Envoyer des données personnalisées | 0x42 |
2 à 3 | Uint16 | Longueur de données supplémentaire | 17 |
4 | Uint8 | Données personnalisées | varie |
5 – 12 | Nonce du message | varie | |
13 – 20 | Code d'authentification du message | varie |
Tableau 4.3.4.2:Envoyer des données personnalisées
À la réception des données personnalisées, le fournisseur met à jour le paquet publicitaire pour y inclure ces données. Pour un fournisseur multipoint, il doit également avertir le changement d'état de la connexion à un autre chercheur connecté à l'aide de la même clé de compte.
Définir la cible de perte de connexion
Sur les casques multipoint, si la connexion à supprimer n'est pas la plus récemment utilisée, les utilisateurs de recherche de switch audio peuvent indiquer au fournisseur quel appareil abandonner à l'aide du message ci-dessous:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | Uint8 | Switch audio | 0x07 |
1 | Uint8 | Définir la cible de perte de connexion | 0x43 |
2 à 3 | Uint16 | Longueur de données supplémentaire | 17 |
4 | Uint8 | Cibler l'appareil connecté à supprimer | varie 1: cet appareil |
5 – 12 | Nonce du message | varie | |
13 – 20 | Code d'authentification du message | varie |
Tableau 4.3.4.3:Définir la cible de perte de connexion
Implémentation de référence
Consultez la section Bibliothèque de SDK intégrée à proximité pour obtenir une implémentation de référence.