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

  1. Le changement de connexion doit être rapide et dépendre d'une action de l'utilisateur.
  2. 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.
  3. 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:
  • L'appareil source d'origine met automatiquement en pause la lecture audio lorsque le fournisseur se déconnecte.
Pour les fournisseurs multipoints:
  • Si une connexion est toujours disponible, elle acceptera la demande de connexion.
  • Si la bande passante de la connexion est saturée, déconnectez la connexion la moins récemment utilisée (par exemple, aucun événement audio pendant une longue période) et acceptez la nouvelle requête entrante.
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:
  • 30 premières secondes de mise sous tension
  • 30 premières secondes d'absence de connexion ou de pagination
  • 30 premières secondes d'inactivité
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:
  • État de la connexion
  • Type audio de la connexion active
  • Informations sur le compte de la connexion active
  • Appareil(s) connecté(s)
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
  • L = longueur de l'état de la connexion en octets
  • T = type
0bLLLL0101
  • longueur: varie
  • type = 0b0101
Obligatoire
1 uint8 État de la connexion
0bHAFRSSSS
  • H = détection des mouvements de la tête
  • A = Disponibilité de la connexion
  • F = mode formulaire
  • R = automatiquement reconnecté
  • S = état de la connexion
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)

  1. 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.

  2. 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).

  3. 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+1var 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
  • L = longueur des données chiffrées
  • T = type
0bLLLL0110
  • longueur: varie
  • type = 0b0110
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:

  1. 0b00000100
    Cette clé de compte n'est pas utilisée.
    Il s'agit de l'option par défaut (voir Clé de compte).
  2. 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.
  3. 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
  1. Bit 0 (octet 6, MSB): état du switch audio

    • 1, si le switch audio est activé
    • 0. Sinon,
  2. 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)
  3. Bit 2: état actuel multipoint

    • 1, si la connectivité multipoint est activée
    • 0. Sinon,
  4. 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,
  5. 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)
  6. 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ù :

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.