Switch audio
À mesure que les utilisateurs utilisent de plus en plus de sources audio pour effectuer leurs tâches quotidiennes, la demande d'une solution plus simple pour gérer l'utilisation des casques sur plusieurs appareils augmente. Le switch audio permet de passer de façon fluide les connexions du casque entre les appareils en fonction de l'activité de l'utilisateur (par exemple, démarrer 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 basé sur l'action de l'utilisateur.
- Le changement de connexion doit être transparent pour les utilisateurs, qui doivent pouvoir le contrôler/annuler s'il n'est pas souhaitable.
- Le changement doit respecter la confidentialité des utilisateurs.
Rôles
Recherche de contact audio: la recherche de contact audio est un appareil source audio (par exemple, un téléphone ou une tablette) qui recherche un casque à proximité pour s'y connecter, le cas échéant.
Fournisseur de commutateur audio: le fournisseur est généralement un casque qui annonce sa présence et son état de connexion pour que les chercheurs puissent prendre des décisions de commutation.
Présentation des exigences
Pour que le basculement intelligent soit possible, les fournisseurs doivent respecter les exigences suivantes:
Nom | Description | Conditions requises | Obligatoire ? |
---|---|---|---|
Analyse de la page | Pour accepter une nouvelle demande de connexion d'un autre chercheur lorsqu'une connexion existe déjà. Pour les fournisseurs à point unique:
|
Le mode d'analyse des pages à faible latence (l'intervalle d'analyse ne doit pas dépasser 640 ms) est nécessaire pour améliorer les performances. Pour trouver un compromis entre l'autonomie de la batterie et les performances de commutation, le fournisseur peut définir un mode d'analyse des pages par défaut dans la plupart des cas (mode basse consommation, l'intervalle d'analyse ne doit pas dépasser 1 280 ms). Toutefois, le mode à faible latence doit être utilisé dans les cas suivants:
|
Obligatoire |
Historique des connexions | Pour revenir à la connexion précédente et reprendre la lecture, le cas échéant. Le retour en arrière est déclenché 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 Message Stream | Obligatoire |
État de la connexion | Pour que les chercheurs puissent effectuer le jugement de changement de connexion, l'état de la connexion inclut les éléments suivants:
|
Incluez l'état de la connexion dans l'annonce BLE et le flux de messages. | Obligatoire |
Modification des fonctionnalités d'exécution | Le commutateur audio peut être activé en mettant à niveau le micrologiciel du fournisseur. Les fonctionnalités doivent donc être synchronisées entre le chercheur et le fournisseur au moment de l'exécution. | Implémentez les API Message Stream pour accéder aux fonctionnalités d'exécution. | Obligatoire |
Règles de commutation configurables | Laissez le Seeker configurer la priorité entre le streaming audio actif existant et les nouvelles requêtes de streaming audio via les paramètres de préférence de l'utilisateur. Par exemple, le Seeker de commutateur audio peut fournir des paramètres d'interface utilisateur permettant aux utilisateurs d'activer/de désactiver le basculement automatique entre le streaming multimédia et l'appel. Le sélecteur de commutateur audio définira et obtiendra la règle de commutation via le flux de messages. |
Fournisseurs multipoints uniquement. Implémentez des API Message Stream pour rendre les règles de commutation entre les appareils connectés configurables. |
Facultatif |
Changement d'appareil actif | La recherche de commutateur audio permet de simuler le changement d'audio entre les appareils connectés. Du côté de la recherche de commutateur audio, une UI peut permettre aux utilisateurs de basculer facilement entre les appareils connectés. |
Fournisseurs multipoints uniquement. Implémentez les API Message Stream pour le sélecteur de switch audio afin de déterminer la source audio active entre les appareils connectés. |
Obligatoire |
Notification de basculement multipoint | La recherche de commutateur audio doit afficher la notification de commutation. | Fournisseurs multipoints uniquement. Implémentez des API Message Stream pour informer les chercheurs de switch audio connectés lorsqu'un basculement multipoint a lieu. |
Obligatoire |
Charge utile publicitaire
Le fournisseur doit inclure son état de connexion actuel dans l'annonce, basé sur les données du compte Fast Pair décrites dans la section Publicité: lorsque l'appareil n'est pas détectable.
Notez que la version de la table 4.2 est 0x1.
Champ "É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, il ne contient que le type de contenu, qui permet de décrire l'utilisation du streaming audio actuel. Le demandeur l'enverra au fournisseur. |
La valeur est envoyée par le chercheur du flux actif actuel au fournisseur via le flux de messages. 0 si le streaming actif actuel ne provient pas de Seeker. | Obligatoire |
3 - var | Bitmap des appareils connectés Bitmap permettant d'afficher les appareils actuellement connectés au fournisseur. Tous les appareils associés sont disposés dans l'ordre, un bit par appareil associé. La longueur dépend du nombre d'appareils associés du 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 "État de la connexion"
Options de connexion
0bH = détection du port des écouteurs
- 1, on head now
- 0, sinon, pas sur la tête ou pas de capteur OHD
0 bA = disponibilité de la connexion
- 1 : une connexion est disponible
- 0, sinon
0bF = mode Concentré
- 1 : En mode concentré, le changement de connexion n'est plus autorisé pour l'utilisation multimédia, c'est-à-dire qu'il n'y a plus de changement d'A2DP en A2DP.
- 0, sinon
0bR = reconnexion automatique
- 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 le 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
- 0x1: pagination
- 0x2: connecté, mais pas de transfert de données
- 0x3: transfert de données non audio (uniquement lorsqu'il est possible de l'activer/de le désactiver, sinon utiliser 0xF)
- 0x4: Streaming A2DP, AVRCP non applicable
- 0x5: streaming A2DP et lecture AVRCP
- 0x6: streaming HFP (appel téléphonique/VoIP), y compris sonnerie en bande et hors bande
- 0x7 : Audio LE : streaming multimédia sans contrôle
- 0x8 : Audio LE : streaming multimédia avec contrôle
- 0x9: LE Audio - streaming des appels
- 0xA: LE Audio – broadcast
- 0xF: Désactivation temporaire du bouton de connexion (par exemple, lors d'une mise à jour du micrologiciel)
Type de contexte audio LE et état de la connexion
Nous recommandons au fournisseur LE Audio de gérer tous les types de contexte spécifiés dans la section Numéros attribués 6.12.3 (sauf si le fournisseur ne prend pas explicitement en charge un type de contexte donné) et de mapper le type de contexte à l'état de la connexion, comme indiqué ci-dessous.
- Conversationnel: 0x9
- Média: 0x8
- Match: 0x7
- Instructions: 0x7
- Assistants vocaux: 0x9
- En direct: 0x9
- Effets sonores: 0x2
- Notifications: 0x2
- Sonnerie: 0x9
- Alertes: 0x7
- Alarme d'urgence: 0x9
Pour le scénario de type de contexte Audio LE mixte, tel que la lecture de contenu multimédia pendant l'appel, le fournisseur doit utiliser l'état de connexion ayant la priorité la plus élevée, c'est-à-dire 0x9 (appel) pour le scénario ci-dessus au lieu de 0x8 (multimédia).
Bitmap d'appareil connecté
Pour éviter un changement de connexion indésirable, le chercheur peut avoir besoin de savoir à quel ou quels appareils 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 chercheur 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: tablette (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 aléatoire résolvable
Pour éviter le suivi et respecter la confidentialité des utilisateurs, le fournisseur doit faire pivoter et chiffrer le champ à l'aide de la clé de compte avec AES-CTR:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
où
La clé est dérivée de la clé de compte utilisée, qui est définie dans la section suivante.
La clé est générée par la fonction HKDF, RFC 5869 de l'IETF, à l'aide de la fonction de hachage SHA-256.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
Le fournisseur doit utiliser la clé de compte d'origine ici, c'est-à-dire que le premier octet de la clé est 0x04, qui n'est pas inclus dans le modèle d'utilisation.
L'IV (vecteur d'initialisation) est le sel de 2 octets des données de clé de compte avec remplissage à zéro, c'est-à-dire que l'IV est concat(sel, 14 octets de zéros).
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 sel et l'RPA doivent être régénérés au même moment que la période publicitaire.
Le champ d'état de la connexion chiffrée est ainsi remplacé en même temps que les données de clé de compte.
La publicité BLE sera structurée 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 sur la batterie | varie ; | Facultatif | |
s+1 - var | Données aléatoires résolvables | varie ; | Obligatoire si la liste des clés de compte n'est pas vide, sinon "Excluded" (Exclu). |
Tableau 4.2:Annonces BLE avec données aléatoires résolvables
Les données aléatoires résolvables contiennent les éléments suivants:
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 aléatoires résolvables
Par exemple, si les données aléatoires résolvables 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 résolvables 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 sel. À la place, lorsque des données aléatoires résolvables sont également annoncées, la valeur V doit être construite comme suit:
V = concat(account_key, salt, random_resolvable_data)
Si les données de batterie et les données aléatoires résolvables sont annoncées, V doit être construit comme suit:
V = concat(account_key, salt, battery_data, random_resolvable_data)
Dans "Utiliser la clé de compte"
Le changement de connexion est basé sur le compte. Le fournisseur doit donc inclure les informations de compte de la connexion actuelle dans l'annonce BLE. Si l'appareil actuellement connecté est un détecteur de commutateur audio, le fournisseur doit pouvoir obtenir la clé de compte associée à ce détecteur et l'utiliser pour chiffrer le champ d'état de la connexion. Si la source audio connectée n'est pas un sélecteur de commutateur audio, le fournisseur doit utiliser la clé de compte la plus récemment 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 modèles d'utilisation:
- 0b00000100
Cette clé de compte n'est pas utilisée.
Il s'agit de la valeur par défaut (voir Clé de compte). - 0b00000101
Cette clé de compte est la clé de compte la plus récemment utilisée.
Le champ d'état de la connexion est chiffré par cette clé de compte. Aucune information sur la clé de compte de l'état de connexion actuel n'est disponible. Cela peut signifier qu'aucun appareil n'est connecté ou que l'appareil connecté n'est pas un détecteur de commutateur audio. - 0b00000110
Cette clé de compte est la clé de compte utilisée.
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 commutateur audio
La figure ci-dessous montre le schéma de la charge utile du commutateur audio.

Messages
Lorsqu'ils sont connectés, le chercheur et le fournisseur peuvent utiliser le flux de messages pour synchroniser la fonctionnalité de commutation audio, déclencher un changement de connexion, définir et obtenir la préférence de commutation, notifier l'état de la connexion, etc. Nous créons un groupe de messages et des codes de message spécifiques au bouton Audio, comme indiqué ci-dessous.
Nom du groupe de messages | Valeur |
---|---|
Switch audio | 0x07 |
Des informations supplémentaires sur chaque code de message sont incluses dans les sections suivantes.
Nom du code de message | Valeur | Multipoint uniquement | Expéditeur | Responder | Chiffrer | Mac | CONFIRMATION |
---|---|---|---|---|---|---|---|
Obtenir la fonctionnalité de basculement audio | 0x10 | N | Les deux | Les deux, via le code 0x11 | N | N | N |
Fonctionnalité de notification du bouton bascule audio | 0x11 | N | Les deux | Les deux | N | O | O |
Définir l'état multipoint | 0x12 | O | Chercheur | Fournisseur | N | O | O |
Définir une préférence de commutation | 0x20 | O | Chercheur | Fournisseur | N | O | O |
Obtenir la préférence de changement | 0x21 | O | Chercheur | Fournisseur, via le code 0x22 | N | N | N |
Notifier la préférence de changement | 0x22 | O | Fournisseur | Chercheur | N | N | N |
Changer la source audio active(vers l'appareil connecté) | 0x30 | O | Chercheur | Fournisseur | N | O | O |
Revenir | 0x31 | N | Chercheur | Fournisseur | N | O | O |
Notifier un événement de commutation 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 la connexion initiée par le bouton bascule audio | 0x40 | N | Chercheur | Fournisseur | N | O | O |
Indiquer la clé de compte utilisée | 0x41 | N | Chercheur | Fournisseur | N | O | O |
Envoyer des données personnalisées | 0x42 | N | Chercheur | Fournisseur | N | O | O |
Définir la cible de la connexion à abandonner | 0x43 | O | Chercheur | Fournisseur | N | O | O |
Tableau 4.3:Messages de basculement audio
MAC des messages de switch audio
Pour fournir une authentification des messages, tous les messages de commutation audio avec des données supplémentaires envoyés du chercheur au fournisseur nécessitent un code d'authentification des messages. 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 doit envoyer l'acquittement du message:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | uint8 | Acceptation | 0xFF |
1 | uint8 | CONFIRMATION | 0x01 |
2 à 3 | uint16 | Longueur des données supplémentaires | varie ; |
4 | uint8 | Switch audio | 0x07 |
5 | uint8 | Code de message de basculement audio | varie ; |
6 - s | Données supplémentaires | varie ; |
En cas d'échec, le fournisseur doit envoyer le NAK pour le message:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | uint8 | Acceptation | 0xFF |
1 | uint8 | NAK | 0x02 |
2 à 3 | uint16 | Longueur des données supplémentaires | 0x0003 |
4 | uint8 | Motif de l'erreur | varie ; |
5 | uint8 | Switch audio | 0x07 |
6 | uint8 | Code de message de basculement audio | varie ; |
Notez que si le fournisseur est l'expéditeur, l'adresse MAC n'est pas obligatoire.
Obtenir la capacité du switch audio
Le fournisseur et le demandeur de l'Audio Switch peuvent vérifier si le demandeur/fournisseur d'Association express connecté est compatible avec l'Audio Switch à l'aide du message ci-dessous:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | uint8 | Switch audio | 0x07 |
1 | uint8 | Obtenir la capacité du switch audio | 0x10 |
2 à 3 | uint16 | Longueur des données supplémentaires | 0 |
Tableau 4.3.1.0:Obtenir la capacité du switch audio
Fonctionnalité de notification du switch audio
Lorsque le code de message get capability of Audio switch est reçu, le demandeur/fournisseur de commutateur 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 des données supplémentaires | 20 si l'envoi est effectué par le demandeur 4 si l'envoi est effectué par le fournisseur |
4 à 5 | uint16 | Code de version du switch audio | Une valeur non nulle signifie qu'il est compatible avec le bouton Audio. Le code de la version actuelle (avec l'amélioration de la sécurité) est 0x0102. 0x0000 ou aucune réponse en 1 seconde signifie que le bouton Audio n'est pas compatible avec cet appareil |
6 - 7 | flags | Indicateurs de capacité de commutation audio du fournisseur Si cet élément est envoyé par le chercheur, ces deux octets doivent être ignorés. |
varie Voir Indicateurs de capacité de basculement audio |
8 à 15 | Nonce de message Uniquement requis lorsqu'il est envoyé par le chercheur |
varie ; | |
16 - 23 | Code d'authentification des messages Uniquement requis lorsqu'il est envoyé par le chercheur |
varie ; |
Tableau 4.3.1.1:Fonctionnalité de notification du bouton bascule audio
Options d'activation de la fonctionnalité de switch audio
Bit 0 (octet 6, MSB): état du switch audio
- 1, si l'état du 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 (la multipoint n'est pas prise en charge ou elle est toujours activée)
Bit 2: état actuel du multipoint
- 1, si la connectivité multipoint est activée
- 0, sinon
Bit 3: détection de l'appareil lorsqu'il est porté
- 1 si cet appareil est compatible avec la détection de port (même si elle est désactivée pour le moment)
- 0, sinon
Bit 4: État actuel de la détection de port
- 1, si la détection de l'appareil lorsqu'il est porté est activée
- 0, sinon (la détection du port des écouteurs n'est pas prise en charge ou est désactivée)
Tous les autres bits sont réservés et la valeur par défaut est 0.
Définir l'état multipoint
Sur les détecteurs de contacteurs audio, nous pouvons fournir aux utilisateurs le paramètre permettant d'activer/de désactiver la fonctionnalité multipoint. Le demandeur définira 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 des données supplémentaires | 17 |
4 | uint8 | État multipoint | 0: désactiver la connectivité multipoint 1: activer la connectivité multipoint |
5 à 12 | Nonce de message | varie ; | |
13 - 20 | Code d'authentification de message | varie ; |
Tableau 4.3.1.2:Définir l'état multipoint
Définir une préférence de commutation
Les chercheurs de commutateurs audio peuvent modifier la préférence de commutation de 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 une préférence de commutation | 0x20 |
2 à 3 | uint16 | Longueur des données supplémentaires | 18 |
4 | flags | Préférence de commutation | varie Voir Indicateur de préférence de commutation multipoint |
5 | Paramètres de commutation avancés Cet octet est réservé. La valeur par défaut est 0. |
varie ; | |
6 à 13 | Nonce du message | varie ; | |
Entre 14 et 21 ans | Code d'authentification de message | varie ; |
Tableau 4.3.2.0:Définir la préférence de commutation
Indicateur de préférence pour le basculement multipoint
- Bit 0 (MSB) : A2DP par rapport à A2DP (valeur par défaut : 0)
- Bit 1 : HFP vs HFP (par défaut : 0)
- Bit 2 : A2DP ou HFP (par défaut : 0)
- Bit 3 : HFP ou A2DP (par défaut : 1)
- Bits 4 à 7: réservés
- La figure ci-dessus représente "nouvelle demande de profil" par rapport au "profil actif actuel".
- 0 correspond à "Ne pas changer"
- 1 pour le changement
Obtenir la préférence de commutation
Les demandeurs de commutateur audio peuvent interroger le fournisseur sur la préférence de commutation du multipoint à l'aide du message ci-dessous:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | uint8 | Switch audio | 0x07 |
1 | uint8 | Obtenir la configuration de commutation | 0x21 |
2 à 3 | uint16 | Longueur des données supplémentaires | 0 |
Tableau 4.3.2.1:Obtenir la préférence de commutation
Préférence de notification de changement
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | uint8 | Switch audio | 0x07 |
1 | uint8 | Préférence de notification de changement | 0x22 |
2 à 3 | uint16 | Longueur des données supplémentaires | 2 |
4 | flags | Indicateurs de préférences de commutation | varie Voir Indicateur de préférence de commutation multipoint |
5 | Paramètres de commutation avancés Cet octet est réservé. La valeur par défaut doit être 0. |
varie ; |
Tableau 4.3.2.2:Préférence de notification de changement
Changer de source audio active (vers un appareil connecté)
Les demandeurs de commutateur audio peuvent demander au fournisseur multipoint de 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 de source audio active (vers un appareil connecté) | 0x30 |
2 à 3 | uint16 | Longueur des données supplémentaires | 17 |
4 | flags | Changer les indicateurs d'événement de source audio active | varie Voir Événement de changement de source audio active |
5 à 12 | Nonce de message | varie ; | |
13 - 20 | Code d'authentification de message | varie ; |
Tableau 4.3.3.0:Changer la source audio active (vers l'appareil connecté)
Événement de changement de source audio active
- Bit 0 (MSB): 1 correspond à ce périphérique, 0 correspond au deuxième périphérique connecté
- Bit 1 : 1 : reprendre la lecture lors du passage à un appareil après le changement, 0 : sinon. La reprise de la lecture signifie que le fournisseur envoie une notification PLAY au chercheur via le profil AVRCP. Si l'état précédent (avant la désactivation) n'était pas "PLAY", le fournisseur doit ignorer cet indicateur.
- Bit 2 : 1 : rejet de la SCO sur l'appareil dont la connexion a été interrompue, 0 : rejet de la SCO
- Bit 3 : 1 : Déconnecte le Bluetooth sur l'appareil en déplacement, 0 : sinon.
- Bits 4 à 7: réservés.
Les demandeurs de commutateur audio ne connaissent pas toujours correctement leur état. Il est donc possible que le fournisseur reçoive un message "Passer à cet appareil" alors que l'appareil de recherche est déjà l'appareil actif. Dans ce cas, pour afficher l'UI appropriée sur le Seeker, le fournisseur peut envoyer un NAK avec le motif d'erreur 0x4, "Action d'appareil redondante".
Pour un fournisseur Audio LE qui compte plusieurs membres d'un ensemble, le fournisseur doit dissocier tous les membres du chercheur. Sinon, la pile Bluetooth du chercheur se reconnectera au fournisseur.
Revenir à l'appareil déconnecté
Si le changement de connexion est indésirable, les utilisateurs peuvent l'annuler. Dans certains cas, il est judicieux de restaurer la connexion audio pour minimiser les perturbations. Le chercheur utilisera le message ci-dessous pour déclencher le changement de mode:
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | uint8 | Switch audio | 0x07 |
1 | uint8 | Revenir à l'appareil déconnecté | 0x31 |
2 à 3 | uint16 | Longueur des données supplémentaires | 17 |
4 | uint8 | Événement de retour | varie 0x01: revenir à l'application précédente 0x02: revenir à l'application précédente et reprendre la lecture |
5 à 12 | Nonce de message | varie ; | |
13 - 20 | Code d'authentification de message | varie ; |
Tableau 4.3.3.1:Retour (à l'appareil déconnecté)
Pour les fournisseurs multipoints, pour effectuer un changement de connexion, un fournisseur peut interrompre la connexion avec un appareil source audio et suspendre la session audio sur l'autre source audio. Par exemple, supposons que le casque multipoint soit connecté à une tablette et à un troisième appareil compatible avec le switch audio. L'utilisateur regarde une vidéo sur sa tablette lorsqu'un appel entrant est reçu 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 suspendant 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 de reprendre la lecture". À la réception de cette requête, le casque doit se reconnecter au troisième appareil et reprendre la lecture de la vidéo mise en pause sur la tablette.
Envoyer une notification d'événement de commutation multipoint
Pour informer les utilisateurs d'un événement de commutation multipoint, le détecteur de commutateur audio peut leur envoyer une notification. Le fournisseur doit informer les chercheurs de commutateurs audio connectés de l'événement de commutation.
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | uint8 | Switch audio | 0x07 |
1 | uint8 | Notify multipoint-switch event Le fournisseur doit l'envoyer sur chaque commutateur, y compris de l'explorateur de commutateur audio à l'explorateur de commutateur non audio, de l'explorateur de commutateur non audio à l'explorateur de commutateur audio et de l'explorateur de commutateur audio à l'explorateur de commutateur audio |
0x32 |
2 à 3 | uint16 | Longueur des données supplémentaires | varie ; |
4 | uint8 | Raison de la commutation Cette valeur doit être déterminée en fonction de l'état de la connexion. Pour les cas d'utilisation de l'audio LE, il peut être utile d'examiner le mappage entre le type de contexte audio LE et l'état de la connexion. Par exemple, l'état de connexion correspondant aux assistants vocaux est 0x9(audio LE : streaming d'appels). Par conséquent, la raison du changement pour un changement déclenché par des assistants vocaux doit être 0x02. |
varie 0x00: non spécifié 0x01: multimédia (streaming A2DP, streaming multimédia LEA) 0x02: appel (streaming HFP, streaming d'appel LEA) |
5 | uint8 | Appareil cible | varie 0x01: cet appareil 0x02: un autre appareil connecté |
6 - n | utf8 | Nom de l'appareil cible si l'appareil cible est le détecteur de commutateur audio, en utilisant le nom auquel le détecteur a envoyé le message, sinon en utilisant le nom BT, le cas échéant, en utilisant les deux derniers octets de son adresse |
varie ; |
Tableau 4.3.3.2:Notification d'événement de commutation multipoint
Obtenir l'état de la connexion
Le demandeur 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 des données supplémentaires | 0 |
Tableau 4.3.3.3:Obtenir l'état de la connexion
À la réception de ce message, le fournisseur doit répondre avec le code de message 0x34, Notify connection status (Notifier l'état de la connexion).
Envoyer une notification sur 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, à l'exception du changement de paquet publicitaire, le fournisseur doit également informer les chercheurs connectés qui utilisent la même clé de compte de ce changement. Si le fournisseur est connecté à un explorateur de commutateurs audio et à un explorateur de commutateurs non audio, et si l'explorateur de commutateurs non audio est actif, le fournisseur doit également informer l'explorateur de commutateurs audio connecté de l'état de la connexion (à l'aide de la clé de compte de l'explorateur).
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | uint8 | Switch audio | 0x07 |
1 | uint8 | Envoyer une notification sur l'état de la connexion | 0x34 |
2 à 3 | uint16 | Longueur des données supplémentaires | varie ; |
4 | uint8 | Indicateur d'appareil actif | varie 0x00: ce chercheur est passif et l'appareil actif utilise la même clé de compte 0x01: cet appareil est l'appareil actif 0x02: ce chercheur est passif et l'appareil actif est un chercheur de commutateur audio. |
5 - n | État de la connexion chiffrée | varie ; | |
n+1 - n+8 | Nonce du message | varie ; |
Tableau 4.3.3.4:Notify connection status
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é de compte utilisée. Consultez Annonce aléatoire résolvable.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
L'IV est concat(Session_nonce, Message_nonce)
connection_status_raw_data = concat(connection_state, custom_data, connected_devices) qui est défini dans la charge utile publicitaire BLE. Notez que l'octet pour la longueur et le type de champ ne doit pas être inclus, car nous disposons ici du code de message et de la longueur des données.
Notifier la 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 désactiver les alertes sonores pour les événements de switch audio. Le chercheur envoie un message pour informer le fournisseur que cette connexion était une connexion initiée par un commutateur audio.
Octet | Type de données | Description | Valeur |
---|---|---|---|
0 | uint8 | Switch audio | 0x07 |
1 | uint8 | Notifier la connexion initiée par le switch audio | 0x40 |
2 à 3 | uint16 | Longueur des données supplémentaires | 17 |
4 | uint8 | Indication de connexion initiée par le switch audio | varie 0: cette connexion n'a pas été déclenchée par le bouton Audio 1: cette connexion a été initiée par le bouton Audio |
5 à 12 | Nonce de message | varie ; | |
13 - 20 | Code d'authentification de message | varie ; |
Tableau 4.3.4.0:Notification de la connexion initiée par le bouton bascule audio
Indiquer la clé de compte utilisée
Si plusieurs clés de compte de l'Utilisateur (par exemple, multi-utilisateurs) sont associées au Fournisseur, l'Utilisateur utilise 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 utilisée | 0x41 |
2 à 3 | uint16 | Longueur des données supplémentaires | 22 |
4 à 9 | utf8 | Chaîne "En cours d'utilisation" | UTF8 ("en cours d'utilisation") |
10 à 17 | Nonce du message | varie ; | |
18 - 25 | Code d'authentification de message | varie ; |
Tableau 4.3.4.1: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 sélecteur de commutateur audio actif peut encapsuler les informations (par exemple, l'utilisation de l'audio) du flux audio dans un octet de données personnalisé et l'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 des données supplémentaires | 17 |
4 | uint8 | Données personnalisées | varie ; |
5 à 12 | Nonce de message | varie ; | |
13 - 20 | Code d'authentification de message | varie ; |
Tableau 4.3.4.2:Envoi de données personnalisées
À la réception des données personnalisées, le fournisseur met à jour le paquet publicitaire pour inclure les données personnalisées. Pour un fournisseur multipoint, il doit également informer 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 la perte de connexion
Sur les casques multipoints, si la connexion à abandonner de préférence n'est pas la moins utilisée récemment, les chercheurs de commutateurs audio peuvent indiquer au fournisseur l'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 la perte de connexion | 0x43 |
2 à 3 | uint16 | Longueur des données supplémentaires | 17 |
4 | uint8 | Appareil connecté cible à supprimer | varie 1: cet appareil |
5 à 12 | Nonce de message | varie ; | |
13 - 20 | Code d'authentification de message | varie ; |
Tableau 4.3.4.3:Définir la cible de la connexion de suppression