L'interface de contrôleur hôte (HCI) permet d'interagir avec un contrôleur Bluetooth.
Ce document fournit une liste des exigences HCI pour les connexions Bluetooth (BT) et Bluetooth à basse consommation (BLE). L'objectif est que les fournisseurs de la pile hôte et les fournisseurs de contrôleurs BT respectent ces exigences de la plate-forme afin d'utiliser l'ensemble de fonctionnalités décrit ci-dessous.
Ce document fait référence à la spécification Bluetooth Core 5.2 en tant que "spécification". La spécification Bluetooth Core 5.2 est disponible sur le site Web Bluetooth SIG avec d'autres documents adoptés.
Présentation de la conception générale
Fonctionnalités et configuration des puces
En tant que plate-forme ouverte, Android dispose d'une matrice de versions logicielles, d'OEM, de fournisseurs, et de fonctionnalités de plate-forme et de puce.
Ce document décrit une philosophie de conception permettant aux contrôleurs BT d'exposer leurs fonctionnalités (au-delà de la spécification standard Bluetooth Core 5.2). La pile BT hôte peut ensuite utiliser ces fonctionnalités pour déterminer les fonctionnalités à activer.
Compatibilité avec les normes ouvertes
L'un des objectifs d'Android est de prendre en charge les normes ouvertes après ratification dans une spécification Bluetooth. Si une fonctionnalité décrite ci-dessous devient disponible dans les méthodes HCI standards dans une future spécification Bluetooth, nous essaierons d'en faire la méthode par défaut.
Fonctionnalités propres aux fournisseurs
Commande spécifique au fournisseur: LE_Get_Vendor_Capabilities_Command
Champ de commande OpCode (OCF): 0x153
Paramètre de commande | Taille | Finalité |
---|---|---|
N/A | Liste des paramètres de commande vide |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
max_advt_instances (Obsolète) |
1 octet |
Nombre d'instances d'annonce acceptées. Réservé après la version 0.98. Ce paramètre a été abandonné dans les spécifications des fonctionnalités Google v0.98 ou version ultérieure au profit de la LE Extended Advertising, disponible dans la spécification BT version 5.0 ou ultérieure. |
offloaded_resolution_of_private-address (Obsolète) |
1 octet |
la capacité de puce BT de la RPA. Si cette fonctionnalité est compatible avec une puce, elle doit être activée par l'hôte. 0 = Non compatible 1 = Capable Réservé après la version 0.98. Ce paramètre a été abandonné dans les spécifications des fonctionnalités Google v0.98 ou version ultérieure au profit de la fonctionnalité de confidentialité disponible dans les spécifications BT version 4.2 ou ultérieure. |
total_scan_results_storage |
2 octets | Stockage des résultats d'analyse en octets |
max_irk_list_sz |
1 octet | Nombre d'entrées IRK prises en charge dans le micrologiciel |
filtering_support |
1 octet |
Compatibilité avec le filtrage dans le contrôleur 0 = Non compatible 1 = Compatible |
max_filter |
1 octet | Nombre de filtres compatibles |
activity_energy_info_support |
1 octet |
Compatible avec la création de rapports sur l'activité et les informations sur la consommation d'énergie 0 = Incompatible 1 = Capable |
version_supported |
2 octets |
Spécifie la version de la spécification de fonctionnalité Google compatible byte[0] = Major number byte[1] = Minor number v1.04 byte[0] = 0x01 byte[1] = 0x04 |
total_num_of_advt_tracked |
2 octets |
Nombre total d'annonceurs suivis pour OnLost /OnFound fins
|
extended_scan_support |
1 octet | Compatible avec la fenêtre et l'intervalle d'analyse étendues |
debug_logging_supported |
1 octet | Journalisation des informations de débogage binaire du contrôleur |
LE_address_generation_offloading_support (Obsolète) |
1 octet |
0 = Non compatible 1 = Compatible Réservé après la version 0.98. Ce paramètre a été abandonné dans les spécifications des fonctionnalités Google v0.98 ou version ultérieure au profit de la fonctionnalité de confidentialité disponible dans les spécifications BT version 4.2 ou ultérieure. |
A2DP_source_offload_capability_mask |
4 oct. |
Masques de bits pour les types de codec compatibles Bit 0 - SBC Bit 1 - AAC Bit 2 - APTX Bit 3 - APTX HD Bit 4 : LDAC Bits 5 à 31 sont réservés |
bluetooth_quality_report_support |
1 octet |
Compatible avec la création de rapports sur les événements de qualité Bluetooth 0 = Non compatible 1 = Capable |
dynamic_audio_buffer_support |
4 octets |
Accepte le tampon audio dynamique dans le contrôleur Bluetooth Masques de bits pour les types de codec compatibles Bit 0 - SBC Bit 1 - AAC Bit 2 - APTX Bit 3 - APTX HD Bit 4 : LDAC Bit 5 à 31 sont réservés |
a2dp_offload_v2_support |
1 octet |
Compatible avec les commandes de déchargement A2dp v2 dans le contrôleur Bluetooth (voir Démarrer le déchargement A2DP et Arrêter le déchargement A2DP) 0 = Non compatible 1 = Compatible |
Traitement par lot des résultats d'analyse
L'un des objectifs de conception est d'améliorer la façon dont les notifications d'événements Bluetooth LE Scan Response sont transmises à l'hôte, afin d'économiser de l'énergie.
En réduisant la fréquence à laquelle le contrôleur avertit le processeur de l'application hôte d'analyser les résultats, celui-ci peut rester inactif/veille plus longtemps. Cela réduit la consommation d'énergie de l'hôte. Le paramètre de retour total_scan_results_storage
de LE_Get_Vendor_Capabilities_Command
indique la capacité de la puce pour le stockage des résultats d'analyse.
Cette fonctionnalité se concentre sur la gestion et la configuration de la fonctionnalité de stockage des résultats d'analyse LE dans le contrôleur Bluetooth. Le stockage permet de traiter temporairement les données d'annonces par lot, et d'analyser les données et les métadonnées reçues par le contrôleur en vue d'une diffusion ultérieure à l'hôte.
Le micrologiciel doit accepter deux types de traitement par lot, qui peuvent être utilisés simultanément:
- Tronqué. Contient les éléments d'information suivants: {MAC, TX Power, RSSI, Timestamp}
- Pleine. Contient les éléments d'information suivants: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}
LE_Batch_Scan_Command
OCF: 0x156
Paramètre de commande | Taille | Finalité |
---|---|---|
Batch_Scan_opcode |
1 octet |
0x1 : activer la fonctionnalité spécifique au client 0x2 : définir les paramètres de stockage de l'analyse par lot 0x3 : définir les paramètres d'analyse par lot 0x4 : lire les paramètres des résultats d'analyse par lot |
Un événement Commande terminée sera généré pour cette commande. L'activation de la fonctionnalité spécifique au client ne lance pas l'analyse.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Batch_Scan_opcode |
1 octet |
0x1 : activer la fonctionnalité spécifique au client 0x2 : définir les paramètres de stockage de l'analyse par lot 0x3 : définir les paramètres d'analyse par lot 0x4 : lire les paramètres des résultats d'analyse par lot |
LE_Batch_Scan_Command: Activer la fonctionnalité spécifique au client
Sub OCF: 0x01
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
enable_customer_specific_feature_set |
1 octet |
0x01 – Activer la fonctionnalité d'analyse par lot 0x00 – Désactiver la fonctionnalité d'analyse par lot |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Batch_Scan_opcode |
1 octet |
0x1 : activer la fonctionnalité spécifique au client 0x2 : définir les paramètres de stockage de l'analyse par lot 0x3 : définir les paramètres d'analyse par lot 0x4 : lire les paramètres des résultats d'analyse par lot |
LE_Batch_Scan_Command: Définir la sous-commande "Batch Scan Storage Param" (Définir le paramètre de stockage de l'analyse par lot)
Sub OCF: 0x02
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
Batch_Scan_Full_Max |
1 octet |
Espace de stockage maximal (en %) alloué au style complet [Plage: 0-100] |
Batch_Scan_Truncated_Max |
1 octet |
Espace de stockage maximal (en %) alloué au style tronqué [Plage: 0-100] |
Batch_Scan_Notify_Threshold |
1 octet |
Configurer le niveau de notification (en %) pour un pool de stockage individuel
[Plage: 0-100] Le réglage de la valeur 0 désactive la notification. Un événement HCI spécifique au fournisseur est généré (sous-événement de violation du seuil de stockage) |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Batch_scan_opcode |
1 octet | 0x02 [Définir les paramètres d'analyse groupée] |
LE_Batch_Scan_Command: sous-commande Définir les paramètres d'analyse par lot
Sub OCF: 0x03
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
Batch_Scan_Mode |
1 octet |
0x00 : l'analyse par lot est désactivée 0x01 : le mode tronqué est activé 0x02 : le mode complet est activé 0x03 : les modes tronqué et complet sont activés |
Duty_cycle_scan_window |
4 octets | Durée d'analyse de l'analyse par lot (nombre d'emplacements) |
Duty_cyle_scan_interval |
4 octets | Période d'intervalle d'analyse par lot (nombre d'emplacements) |
own_address_type |
1 octet |
0x00 : adresse publique de l'appareil 0x01 : adresse aléatoire de l'appareil |
Batch_scan_Discard_Rule |
1 octet |
0 - Supprimer l'annonce la plus ancienne 1 - Supprimer l'annonce associée au RSSI le plus faible |
Cette sous-commande lance l'analyse par lot, si elle est activée. Dans l'analyse tronquée, les résultats sont stockés sous forme tronquée où la clé unique du style tronqué est {BD_ADDR,
scan_interval}. Cela signifie qu'un seul BD_ADDR will
sera enregistré pour chaque intervalle d'analyse. L'enregistrement à conserver pour le mode tronqué est le suivant: {BD_ADDR
, Tx Power, RSSI, Timestamp}
Lorsque le mode complet est activé, l'analyse active est utilisée et les réponses d'analyse sont enregistrées. Clé unique de style complet = {MAC, Ad Packet}, quel que soit l'intervalle d'analyse. L'enregistrement à conserver pour le mode complet est {BD_ADDR
, Tx Power, RSSI, Timestamp, Ad Packet, Scan Response}. En mode complet, le même paquet AD, lorsqu'il est vu plusieurs fois à différents intervalles d'analyse, n'est enregistré qu'une seule fois. Toutefois, en mode tronqué, c'est la visibilité de BA_ADDR
sur différents intervalles d'analyse qui présente un intérêt (une fois par intervalle d'analyse). Le RSSI correspond à la valeur moyenne de tous les doublons d'une annonce unique dans un intervalle d'analyse.
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Batch_scan_opcode |
1 octet | 0x03 [Définir les paramètres d'analyse groupée] |
LE_Batch_Scan_Command: sous-commande Lire les résultats de l'analyse par lot
Sub OCF: 0x04
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
Batch_Scan_Data_read |
1 octet |
0x01 : données en mode tronqué 0x02 : données en mode complet |
Un événement Commande terminée sera généré pour cette commande. Lorsque l'hôte émet cette commande, il est possible que tous les résultats du contrôleur ne tiennent pas dans un événement "Commande terminée". L'hôte itère l'émission de cette commande jusqu'à ce que les résultats correspondants de l'événement "Commande terminée" indiquent 0 dans le nombre d'enregistrements, ce qui indique que le contrôleur n'a plus d'enregistrements à communiquer à l'hôte. Chaque événement "Commande terminée" peut contenir plusieurs enregistrements d'un seul type de données (complètes ou tronquées).
Les références à l'heure du contrôleur et de l'hôte ne sont pas synchronisées. L'unité du code temporel est de 50 ms. La valeur du code temporel est basée sur le moment où Read_Batch_Scan_Results_Sub_cmd
est fourni par l'hôte. Si l'heure d'arrivée d'une commande est T_c
dans le micrologiciel, l'heure réelle à laquelle l'horodatage a été pris dans le micrologiciel est T_fw
. La date et l'heure du rapport seront les suivantes : (T_c
- T_fw
). T_c
et T_fw
font partie du domaine temporel du micrologiciel. Cela permet à l'hôte de calculer la durée écoulée depuis l'événement.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Batch_scan_opcode |
1 octet | 0x03 [Définir les paramètres d'analyse groupée] |
Batch_Scan_data_read |
1 octet | Identifie le format (tronqué ou complet) |
num_of_records |
1 octet | Nombre d'enregistrements de Batch_Scan_data_read |
format_of_data |
Variable |
Truncated Mode: Address[0]: 6 octetsts Address_Type[0]: 1 octet [octet_type_code_4] [octet_x_octet_octet] [octet_x_octet] [octet_x_octet] [octet_ correspond] octet 1:" a [octet_ correspond] a_code1 octet : octet 1 : [octet_code] [octet_code] [octet_code] [octet_code] [octet_code] [octet_code] [octet_code] [octet_code] [octet_5]][octet_code_code][octet_code_code][octet_code_code] [octet_code] [octet_code] [octet_code] n'est pas écrit] num_of_records num_of_records Scan_data_resp
|
Filtre de contenu de paquets publicitaires
Utilisez ce paramètre pour activer, désactiver ou configurer le filtre de contenu de paquets publicitaires (APCF, Advertising Packet Content Filter) dans le contrôleur. L'APCF filtre les rapports publicitaires au niveau du contrôleur, mais ne filtre pas les publicités périodiques.
LE_APCF_Commande
OCF: 0x157
Paramètre de commande | Taille | Finalité |
---|---|---|
APCF_opcode |
1 octet |
0x00 - Activation APCF 0x01 - APCF Définir les paramètres de filtrage 0x02 - APx Broadcaster Address 0x03 - APCF Service UUID 0x04 - APCF Service Solicitation UUID 0x05 - AP CF - Nom local réservé - 0x05 - APx CF Broadcaster Address 0x06 - APx Broadcaster Address |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État du retour |
APCF_opcode |
1 octet |
0x00 - Activation APCF 0x01 - APCF Définir les paramètres de filtrage 0x02 - APx Broadcaster Address 0x03 - APCF Service UUID 0x04 - APCF Service Solicitation UUID 0x05 - AP CF - Nom local réservé - 0x05 - APx CF Broadcaster Address 0x06 - APx Broadcaster Address |
LE_APCF_Command: Enable_sub_cmd
Sub OCF: 0x00
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
APCF_enable |
1 octet |
0x01 – Activer la fonctionnalité APCF 0x00 – Désactiver la fonctionnalité APCF |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
APCF_opcode |
1 octet | 0x0 – Activer APCF |
APCF_Enable |
1 octet | L'activation/la désactivation est définie via APCF_enable |
LE_APCF_Command: set_filtering_parameters_sub_cmd
Cette sous-commande permet d'ajouter ou de supprimer une spécification de filtre, ou d'effacer une liste de filtres pour le filtrage sur puce.
Sub OCF: 0x01
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
APCF_Action |
1 octet |
0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer L'option "Supprimer" efface le filtre spécifique ainsi que les entrées de caractéristiques associées dans les autres tables. L'option "Effacer" efface tous les filtres et les entrées associées des autres tables. |
APCF_Filter_Index |
1 octet | Index du filtre (0, max_filter-1 ) |
APCF_Feature_Selection |
2 octets |
Masques de bits pour les fonctionnalités sélectionnées : Bit 0 : à activer le filtre d'adresse de diffusion Bit 1 : à définir pour activer le filtre de modification des données de service Bit 2 : à activer la vérification de l'UUID du service Bit 3 : à activer la vérification de l'UUID de sollicitation de service Bit 4 : à activer la vérification du nom local Bit 5 : à activer le type de vérification des données de service Bit 6 : à activer le type de vérification des données de service |
APCF_List_Logic_Type |
2 octets |
Opération logique pour chaque sélection de caractéristiques (position par bit) spécifiée dans APCF_Feature_Selection .
Valable uniquement lorsqu'une fonctionnalité est activée. Valeur de position du bit: 0: OR 1: AND Si la logique "AND" est sélectionnée, un paquet ADV ne passera le filtre que s'il contient TOUTES les entrées de la liste. Si la logique "OU" est sélectionnée, un paquet ADV passe le filtre s'il contient l'une des entrées de la liste. |
APCF_Filter_Logic_Type |
1 octet |
0x00: OR 0x01: AND Remarque: Le type de logique est "N/A" pour les trois premiers champs de APCF_Feature_Selection , ce qui correspond toujours à la logique "AND". Elles ne s'appliquent qu'aux quatre champs de APCF_Feature_Selection (bit 3 - bit 6).
|
rssi_high_thresh |
1 octet |
[en dBm] L'annonceur n'est considéré comme vu que si le signal est supérieur au seuil RSSI élevé. Sinon, le micrologiciel doit se comporter comme s'il ne l'avait jamais détecté. |
delivery_mode |
1 octet |
0 x 00 – immediate 0 x 01 – on_found 0 x 02 – batched
|
onfound_timeout |
2 octets |
Valide uniquement si delivery_mode est défini sur on_found .[en millisecondes] Délai de latence du micrologiciel et de collecte d'annonces supplémentaires avant de générer des rapports. |
onfound_timeout_cnt |
1 octet |
Valide uniquement si delivery_mode est défini sur on_found .[count] Si une annonce dans onFound reste dans le micrologiciel pendant la durée de onfound_timeout , elle collecte quelques annonces et le nombre est vérifié. Si le nombre dépasse onfound_timeout_cnt , la valeur OnFound est immédiatement renvoyée.
|
rssi_low_thresh |
1 octet |
Valide uniquement si delivery_mode est défini sur on_found .[en dBm] Le paquet de l'annonceur est considéré comme non vu si le RSSI du paquet reçu n'est pas supérieur au seuil RSSI bas. |
onlost_timeout |
2 octets |
Valide uniquement si delivery_mode est défini sur on_found .[en millisecondes] Si une annonce n'est pas vue de manière adjacente pendant la période lost_timeout après avoir été trouvée, elle sera immédiatement perdue.
|
num_of_tracking_entries |
2 octets |
Valide uniquement si delivery_mode est défini sur on_found .[count] Nombre total d'annonceurs à suivre par filtre. |
Les valeurs RSSI doivent utiliser le complément 2 pour représenter les valeurs négatives.
L'hôte peut configurer plusieurs filtres avec APCF_Application_Address_type
défini sur 0x02 (pour toutes les adresses de diffuseur) afin de gérer différentes combinaisons de filtres.
Le filtrage, le traitement par lot et la création de rapports sont des concepts interdépendants. Chaque annonce et les réponses d'analyse associées doivent passer par tous les filtres, l'un après l'autre. Ainsi, les actions résultantes (delivery_mode
) sont étroitement liées au filtrage. Les modes d'envoi sont les suivants: report_immediately
, batch
et onFound
. La valeur OnLost
est liée à OnFound
dans le sens où elle interviendra après OnFound
en cas de perte.
Ce flux de traitement décrit le modèle conceptuel:
Lorsqu'une trame d'annonce (ou de réponse d'analyse) est reçue, elle est appliquée à tous les filtres dans l'ordre sérial. Il est possible qu'une annonce génère des rapports immédiats basés sur un filtre et leur permet d'effectuer un traitement par lot en raison d'une action de filtre différente.
Les seuils de niveau RSSI (élevé et faible) permettent de contrôler à quel moment la trame est visible pour le traitement par filtrage, même lorsqu'un paquet valide est reçu par le contrôleur. Si le mode d'envoi est défini sur "immédiate" ou par lot, le RSSI d'une trame est pris en compte pour un traitement ultérieur par le contrôleur. Le comportement de génération de rapports et de traitement par lot peut varier d'une application à l'autre. Cela permet à plusieurs applications de générer simultanément des rapports directs et/ou du traitement par lot des résultats dans le micrologiciel. C'est le cas, par exemple, lorsqu'une analyse par lot est active à partir d'une application, puis qu'une analyse LE standard est émise par une autre application par la suite. Avant l'exécution d'une analyse par lot, le framework/l'application définit les filtres appropriés. Plus tard, lorsque la deuxième application émet une analyse standard, le traitement par lot précédent se poursuit. Toutefois, en raison de l'analyse standard, cela revient à ajouter conceptuellement un filtre nul (avec tous les filtres existants) avec la commande LE scan. Les paramètres de la commande LE scan sont prioritaires lorsqu'ils sont actifs. Lorsque l'analyse LE standard est désactivée, le contrôleur revient à une analyse par lot précédente, si elle existait.
Le mode d'envoi OnFound
est basé sur des filtres configurés. Une combinaison qui déclenche l'exécution d'une action de filtre est considérée comme l'entité à suivre pour onLost
. L'événement correspondant est le sous-événement de suivi LE Advt.
La transition OnFound/OnLost
d'un filtre (si elle est activée) se présente comme suit:
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
APCF_opcode |
1 octet | 0x01 – APCF Définir les paramètres de filtrage |
APCF_Action |
1 octet | APCF_Action de la commande d'écho |
APCF_AvailableSpaces |
1 octet | Nombre d'entrées disponibles dans le tableau des filtres |
LE_APCF_Command: broadcast_address_sub_cmd
Cette sous-commande permet d'ajouter ou de supprimer l'adresse d'un annonceur, ou d'effacer la liste d'adresses de l'annonceur pour le filtrage intégré.
Sub OCF: 0x02
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
APCF_Action |
1 octet |
0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer L'option "Supprimer" supprime l'adresse de diffuseur spécifiée dans le filtre spécifié. L'option "Effacer" efface toutes les adresses de diffuseur du filtre spécifié. |
APCF_Filter_Index |
1 octet | Index du filtre (0, max_filter-1 ) |
APCF_Broadcaster_Address |
6 octet | Adresse de l'appareil de 6 octets à ajouter à la liste d'adresses du diffuseur ou à en supprimer |
APCF_Application_Address_type |
1 octet |
0x00: public 0x01: aléatoire 0x02: NA (ignorer le type d'adresse) Pour filtrer les rapports publicitaires à l'aide de types d'adresses d'identité (0x02, 0x03). Pour obtenir des rapports publicitaires avec les types d'adresses 0x02 et 0x03, définissez ce champ sur 0x02: N/A (ignorez le type d'adresse). |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
APCF_opcode |
1 octet | 0x02 – Adresse du diffuseur APCF |
APCF_Action |
1 octet | APCF_Action de la commande d'écho |
APCF_AvailableSpaces |
1 octet | Nombre d'entrées libres encore disponibles dans le tableau des adresses de diffusion |
LE_APCF_Command: service_uuid_sub_cmd
Cette sous-commande permet d'ajouter ou de supprimer un UUID de service, ou d'effacer une liste d'UUID de service pour le filtrage sur puce.
Sub OCF: 0x03
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
APCF_Action |
1 octet |
0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer L'option "Supprimer" supprime l'adresse UUID du service spécifiée dans le filtre spécifié. L'option "Effacer" efface tous les UUID de service du filtre spécifié. |
APCF_Filter_Index |
1 octet | Index de filtre (0, max_filter -1) |
APCF_UUID |
2,4,16 octets | L'UUID du service (16, 32 bits ou 128 bits) permettant d'ajouter des éléments à la liste ou d'en supprimer. |
APCF_UUID_MASK |
2,4,16 octets |
Masque UUID du service (16, 32 ou 128 bits) à ajouter à la liste.
Il doit avoir la même longueur que APCF_UUID.
|
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
APCF_opcode |
1 octet | 0x03 – UUID du service APCF |
APCF_Action |
1 octet | APCF_Action de la commande d'écho |
APCF_AvailableSpaces |
1 octet | Nombre d'entrées sans frais encore disponibles dans la table de l'UUID du service |
LE_APCF_Command: sollicitation_uuid_sub_cmd
Cette sous-commande permet d'ajouter ou de supprimer un UUID de sollicitation ou d'effacer une liste d'UUID de sollicitation pour le filtrage sur puce.
Sub OCF: 0x04
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
APCF_Action |
1 octet |
0x00 – Ajouter 0x01 – Supprimer 0x02 – Effacer L'option "Delete" (Supprimer) supprime l'adresse UUID de la sollicitation dans le filtre spécifié. L'option "Effacer" efface tous les UUID de sollicitation du filtre spécifié. |
APCF_Filter_Index |
1 octet | Index de filtre (0, max_filter -1) |
APCF_UUID |
2,4,16 octets | L'UUID de sollicitation (16, 32 bits ou 128 bits) à ajouter à la liste ou à supprimer de celle-ci. |
APCF_UUID_MASK |
2,4,16 octets |
Masque UUID de sollicitation (16, 32 ou 128 bits) à ajouter à la liste. Il doit avoir la même longueur que l'élément APCF_UUID .
|
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
APCF_opcode |
1 octet | 0x04 – UUID de sollicitation APCF |
APCF_Action |
1 octet | APCF_Action de la commande d'écho |
APCF_AvailableSpaces |
1 octet | Nombre d'entrées sans frais encore disponibles dans le tableau de l'UUID de sollicitation |
LE_APCF_Command: local_name_sub_cmd
Cette sous-commande permet d'ajouter ou de supprimer une chaîne de nom locale, ou d'effacer la liste des chaînes de noms locales pour le filtrage sur puce.
Sub OCF: 0x05
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
APCF_Action |
1 octet |
0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer L'option "Supprimer" supprime la chaîne de nom locale spécifiée dans le filtre spécifié. L'option "Effacer" efface toutes les chaînes de noms locaux du filtre spécifié. |
APCF_Filter_Index |
1 octet | Index de filtre (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
Taille variable |
Chaîne de caractères pour le nom local. Remarques:
|
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
APCF_opcode |
1 octet | 0x05 – Nom local APCF |
APCF_Action |
1 octet | APCF_Action de la commande d'écho |
APCF_AvailableSpaces |
1 octet | Nombre d'entrées sans frais encore disponibles dans le tableau des noms locaux |
LE_APCF_Command: manf_data_sub_cmd
Cette sous-commande permet d'ajouter ou de supprimer une chaîne de données du fabricant, ou d'effacer la liste des chaînes de données du fabricant pour le filtrage sur puce.
Sub OCF: 0x06
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
APCF_Action |
1 octet |
0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer L'option "Supprimer" supprime la chaîne de données fabricant spécifiée dans le filtre spécifié. L'option "Effacer" efface toutes les chaînes de données du fabricant dans le filtre spécifié. |
APCF_Filter_Index |
1 octet | Index des filtres (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
Taille variable |
Chaîne de caractères pour les données du fabricant. Remarques:
|
APCF_ManData_Mask |
Taille variable |
Masque de données de fabrication à ajouter à la liste. Il doit avoir la même longueur que APCF_LocName_or_ManData_or_SerData .
|
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
APCF_opcode |
1 octet | 0x06 – Données fabricant APCF |
APCF_Action |
1 octet | APCF_Action de la commande d'écho |
APCF_AvailableSpaces |
1 octet | Nombre d'entrées sans frais encore disponibles dans le tableau de données du fabricant |
LE_APCF_Command: service_data_sub_cmd
Cette sous-commande permet d'ajouter ou de supprimer une chaîne de données de service, ou d'effacer la liste des chaînes de données de service pour le filtrage sur puce.
Sub OCF: 0x07
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
APCF_Action |
1 octet |
0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer L'option "Supprimer" supprime la chaîne de données de service spécifiée dans le filtre spécifié. L'option "Effacer" efface toutes les chaînes de données des services du filtre spécifié. |
APCF_Filter_Index |
1 octet | Index des filtres (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
Taille variable |
Chaîne de caractères pour les données de service. Remarques:
|
APCF_LocName_Mandata_or_SerData_Mask |
Taille variable |
Masque de données de service à ajouter à la liste. Il doit avoir la même longueur que APCF_LocName_or_ManData_or_SerData.
|
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
APCF_opcode |
1 octet | 0x07 – Données du service APCF |
APCF_Action |
1 octet | APCF_Action de la commande d'écho |
APCF_AvailableSpaces |
1 octet | Nombre d'entrées sans frais encore disponibles pour la table de données des services |
LE_APCF_Command: ad_type_sub_cmd
Cette sous-commande permet d'ajouter ou de supprimer un type AD ou d'effacer une liste de types AD pour le filtrage sur puce. Utilisez read_extended_features_sub_cmd
pour vérifier si cette commande est compatible ou non.
Lorsque APCF_AD_DATA_Length
est défini sur 0, filtrer APCF_AD_TYPE
sans comparer les données AD et le masque de données AD.
Si la longueur de données du paquet ADV reçu dépasse AD_DATA_LENGTH
, comparez uniquement les AD_DATA_LENGTH
premiers octets de données AD et ignorez les données restantes.
Sub OCF: 0x09
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
APCF_Action |
1 octet |
0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer L'option "Supprimer" supprime le type d'annonce spécifié dans le filtre spécifié. L'option "Effacer" efface tous les types d'annonces du filtre spécifié. |
APCF_Filter_Index |
1 octet | Index des filtres (0, max_filter -1) |
APCF_AD_TYPE |
1 octet | Type d'annonce pour l'ajout ou la suppression dans la liste. Ignorer lorsque APCF_Action est défini sur 0x02 (Effacer) |
APCF_AD_DATA_Length |
1 octet |
0x00 : ne filtre pas le contenu des données Ignorer lorsque APCF_Action est défini sur 0x02 (effacer)
|
APCF_AD_DATA |
Taille variable |
Taille variable, basée sur APCF_AD_DATA_Length Ignorer lorsque APCF_Action correspond à 0 x 02 (Effacer) |
APCF_AD_DATA_MASK |
Taille variable |
Taille variable, basée sur APCF_AD_DATA_Length Ignorer lorsque APCF_Action est défini sur 0 x 02 (Effacer)Il doit avoir la même longueur que APCF_AD_DATA .
|
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
APCF_opcode |
1 octet | 0x09 – Type d'annonce APCF |
APCF_Action |
1 octet | APCF_Action de la commande d'écho |
APCF_AvailableSpaces |
1 octet | Nombre d’entrées sans frais encore disponibles dans le tableau Type d’annonce |
LE_APCF_Command: read_extended_features_sub_cmd
Cette sous-commande permet de lire les fonctionnalités APCF étendues.
Sub OCF: 0xFF
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
Non applicable | Paramètre de commande vide. |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
APCF_opcode |
1 octet | 0xFF – APCF_Read_Extended_Features |
APCF_extended_features |
2 octet |
Masques de bits pour les fonctionnalités étendues:
Valeur d'un bit
|
Commande des informations sur l'activité et la consommation d'énergie de la télécommande
Ces informations visent à permettre aux fonctions supérieures du système hôte d'analyser l'ensemble des activités de tous les composants, y compris le contrôleur BT et son état macro, ainsi que ce qui se passe dans les applications et le framework. Pour ce faire, la pile BT et la manette doivent fournir les informations suivantes:
- Pile BT: signaler l'état macro-opérationnel actuel du contrôleur
- Micrologiciel: création de rapports sur les informations globales sur l'activité et la consommation d'énergie
États des macros de la pile hôte BT, tels qu'ils sont déterminés au niveau de l'utilisateur:
- Inactif: [analyse de page, LE advt, analyse d'une demande, LE scan]
- Recherche: [pagination/demande/essai de connexion]
- Actif: [lien ACL activé, lien SCO en cours, mode sniff]
Les activités que le contrôleur suit tout au long de sa durée de vie sont le temps de transmission, le temps de réception, la durée d'inactivité et l'énergie totale consommée. Ils sont effacés lors de la lecture à partir de l'hôte.
LE_Get_Controller_Activity_Energy_Info
Il s'agit d'une commande spécifique au fournisseur.
OCF: 0x159
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
N/A | Paramètres de commande vide |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
total_tx_time_ms |
4 octets | Durée totale de la transaction |
total_rx_time_ms |
4 octets | Durée totale d'exécution de l'appel |
total_idle_time_ms |
4 octets | Durée totale d'inactivité (états de faible consommation d'énergie hors veille) |
total_energy_used |
4 octets | Énergie totale utilisée [produit du courant (mA), tension (V) et temps (ms)] |
Commande LE Extended set scan parameters
Cette commande peut être utilisée pour étendre la fenêtre d'analyse et l'intervalle d'analyse dans le contrôleur. Conformément à la spécification BT Core 5.2, la limite supérieure d'une fenêtre et d'un intervalle d'analyse est de 10,24 secondes, ce qui limite les intervalles d'analyse plus longs des applications au-delà de 10,24 secondes.
Référence de base: Spécification BT Core 5.2, page 2493 (commande LE Set Scan Parameters Command)
OCF: 0x15A
Paramètre de commande | Taille | Finalité |
---|---|---|
LE_Ex_Scan_Type |
1 octet |
0x00 : balayage passive. Aucun paquet SCAN_REQ ne doit être envoyé (par défaut).0x01 : analyse active. SCAN_REQ paquets peuvent être envoyés.
|
LE_Ex_Scan_Interval |
4 octets |
Intervalle de temps entre le moment où le contrôleur a lancé sa dernière analyse LE et le moment où il a lancé l'analyse LE suivante. Plage: de 0x0004 à 0x00FFFFFF Par défaut: 0x0010 (10 ms) Durée = N * 0,625 ms Période: de 2,5 ms à 10 442,25 secondes |
LE_Ex_Scan_Window |
4 octets |
Durée de l'analyse LE. LE_Scan_Window doit être inférieur ou égal à LE_Scan_Interval .
Plage: de 0x0004 à 0xFFFF Par défaut: 0x0010 (10 ms) Durée = N * 0,625 ms Période: de 2,5 ms à 40,95 secondes |
Own_Address_Type |
1 octet |
0x00 - Adresse publique de l'appareil (par défaut) 0x01 - Adresse aléatoire de l'appareil |
LE_Ex_Scan_Filter_Policy |
0x00 - Accepte tous les paquets d'annonces (par défaut). Les paquets publicitaires orientés qui ne sont pas adressés à cet appareil seront ignorés. 0x01 : ignore les paquets d'annonces provenant d'appareils ne figurant pas dans la liste "Liste blanche uniquement". Les paquets publicitaires directs qui ne sont pas adressés à cet appareil seront ignorés. |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Obtenir la commande d'informations de débogage du contrôleur
L'objectif de cet élément d'information est d'obtenir par un hôte, sous forme binaire, des informations de débogage du contrôleur à des fins de post-traitement et d'analyse. Cela facilite le débogage des problèmes sur le terrain et fournit aux ingénieurs un kit d'outils pour consigner les informations à des fins d'analyse. Un contrôleur peut fournir ces informations à la demande d'un hôte via l'événement (sous-événement "Infos de débogage du contrôleur") ou de manière autonome si le contrôleur le souhaite. Il peut s'agir, par exemple, de transmettre des informations sur l'état du micrologiciel, les informations de crash dump, les informations de journalisation, etc.
OCF: 0 x 15 octets
Paramètre de commande | Taille | Finalité |
---|---|---|
N/A | Liste des paramètres de commande vide |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Prise en charge du déchargement matériel A2DP
La fonctionnalité de déchargement A2DP permet de décharger le processus d'encodage audio A2DP vers un processeur audio connecté au contrôleur BT. Le flux de données audio encodés passe directement du processeur audio au contrôleur BT, sans l'intervention de l'hôte BT. L'hôte BT reste responsable de la configuration et du contrôle de la session A2DP. Deux versions des commandes sont disponibles. Les anciennes commandes avec Sub OCF 0x01-0x02 ne sont compatibles qu'avec les codecs Open Source. Les versions avec Sub-OCF 0x02-0x03 sont indépendantes du codec configuré.
OCF: 0 x 15 J
Démarrer le déchargement A2DP (ancien)
Sub OCF: 0x01
Utilisez cette commande pour configurer le processus de déchargement A2DP et pour démarrer le flux A2DP.
Paramètre de commande | Taille | Finalité |
---|---|---|
Codec |
4 octets |
Spécifie le type de codec 0x01 - SBC 0x02 - AAC 0x04 - APTX 0x08 - APTX HD 0x10 - LDAC |
Max_Latency |
2 octets | Latence maximale autorisée (en ms). Une valeur égale à zéro désactive le vidage. |
SCMS-T_Enable |
2 octets |
Octet 0: option permettant d'ajouter l'en-tête SCMS-T.
1er octobre: valeur de l'en-tête SCMS-T lorsqu'il est activé. |
Sampling_Frequency |
4 octets |
0x01 à 44 100 Hz 0x02 à 48 000 Hz 0x04 à 88 200 Hz 0x08 à 96 000 Hz |
Bits_Per_Sample |
1 octet |
0x01 – 16 bits par échantillon 0x02 – 24 bits par échantillon 0x04 : 32 bits par échantillon |
Channel_Mode |
1 octet |
0x01 – Mono 0x02 – Stéréo |
Encoded_Audio_Bitrate |
4 octets |
Débit audio encodé en bits par seconde. 0x00000000 - Le débit audio n'est pas spécifié  / unused. 0x00000001 - 0x00FFFFFF - Débit audio encodé en bits par seconde. 0x01000000 - 0xFFFFFFFF : réservé. |
Connection_Handle |
2 octets | Poignée de connexion de la connexion A2DP en cours de configuration |
L2CAP_Channel_ID |
2 octets | ID de canal L2CAP à utiliser pour cette connexion A2DP |
L2CAP_MTU_Size |
2 octets | Taille maximale du MTU L2CAP contenant les paquets audio encodés |
Codec_Information |
32 octets |
Informations spécifiques au codec.
Codec SBC:
Reportez-vous aux éléments d'information spécifiques au codec SBC dans A2DP v1.3. Codec AAC:
Reportez-vous aux éléments d'information spécifiques au codec AAC dans A2DP v1.3 Codec LDAC:
0-3 oct. : ID fournisseur
4-5 octobre: ID de codec
6 octobre: Indice de débit:
7 octobre: Mode de canal LDAC 8-31 oct. : réservé Tous les autres codecs: 0-31 oct. : réservé |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Sub_Opcode |
1 octet | 0x01 – Démarrer le déchargement A2DP |
Démarrer le déchargement A2DP
Sub OCF: 0x03
Utilisez cette commande pour configurer le processus de déchargement A2DP et pour démarrer le flux A2DP.
Paramètre de commande | Taille | Finalité |
---|---|---|
Connection Handle |
2 octets | Identifiant de la connexion HCI active |
L2CAP_Channel_ID |
2 octets | Identifiant de la chaîne L2CAP ouverte pour le streaming A2DP |
Data_Path_Direction |
1 octet |
0 x 00 – Sortie (source/fusion AVDTP) 0 x 01 – Entrée (récepteur/répartition AVDTP) |
Peer_MTU |
2 octets | Taille maximale des paquets L2CAP, négociée avec le pair. |
CP_Enable_SCMS_T |
1 octet |
0x00 – Désactiver l'en-tête de protection du contenu SCMS-T 0x01 – Activer l'en-tête de protection du contenu SCMS-T |
CP_Header_SCMS_T |
1 octet |
Lorsque l'en-tête de protection du contenu SCMS-T est activé (CP_SCMS_T_Enable défini sur 0x01), définit la valeur d'en-tête qui précède le contenu audio (voir A2DP, section 3.2.1-2), telle que définie par les numéros attribués par Bluetooth, section 6.3.2.Ignoré lorsque la protection du contenu SCMS-T n'est pas activée. |
Vendor_Specific_Parameters_Length |
1 octet |
Longueur des paramètres spécifiques au fournisseur, comprise entre 0 et 128. La valeur 0 est utilisée lorsqu'aucun paramètre supplémentaire n'est fourni. |
Vendor_Specific_Parameters |
0-128 octets |
Paramètres spécifiques au fournisseur fournis par le HAL Bluetooth pour l'audio, CodecParameters.vendorSpecificParameters[] .
|
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Sub_Opcode |
1 octet | 0x03 – Démarrer le déchargement A2DP |
Arrêter le déchargement A2DP (ancien)
Sub OCF: 0x02
Cette commande permet d'arrêter le flux de déchargement A2DP.
Paramètre de commande | Taille | Finalité |
---|---|---|
N/A | Liste des paramètres de commande vide. |
Aucun paramètre n'est défini pour cette commande.
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Sub_Opcode |
1 octet | 0x02 – Arrêter le déchargement A2DP |
Arrêter le déchargement A2DP
Sub OCF: 0x04
Cette commande permet d'arrêter le flux de déchargement A2DP.
Paramètre de commande | Taille | Finalité |
---|---|---|
Connection Handle |
2 octets | Identifiant de la connexion HCI active |
L2CAP_Channel_ID |
2 octets | Identifiant de la chaîne L2CAP ouverte pour le streaming A2DP |
Data_Path_Direction |
1 octet |
0 x 00 – Sortie (source/fusion AVDTP) 0 x 01 – Entrée (récepteur/répartition AVDTP) |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Sub_Opcode |
1 octet | 0x04 – Arrêter le déchargement A2DP |
Commande de rapport de qualité Bluetooth
La commande de rapport de qualité Bluetooth lance le mécanisme dans le contrôleur Bluetooth permettant de signaler les événements de qualité Bluetooth à l'hôte. Vous pouvez activer quatre options:
- Mode de surveillance de la qualité: le contrôleur envoie régulièrement à l'hôte un sous-événement BQR lié à la qualité des liens.
- En approche LSTO: si aucun paquet n'est reçu en provenance de l'appareil BT connecté pendant plus de la moitié de la valeur LSTO (Link Supervision TimeOut), le contrôleur signale à l'hôte un événement LSTO proche.
- Audio A2DP saccadé: lorsque la manette détecte des facteurs qui provoquent un son saccadé, elle signale un événement audio A2DP à l'hôte.
- (e) SCO Voix saccadée: lorsque la télécommande détecte des facteurs qui causent une voix saccadée, elle signale un événement (e) SCO Voix saccadée à l'hôte.
- Inflammation de la racine: cet événement est envoyé par le contrôleur à la pile lorsque le HAL ou le contrôleur rencontre une erreur fatale et doit redémarrer le Bluetooth.
- Trace du message LMP/LL: la manette envoie le message LMP/LL en mode handshake avec l'appareil distant à l'hôte.
- Trace de programmation Coex/Multiprofil Bluetooth: le contrôleur envoie à l'hôte ses informations de programmation sur la gestion de plusieurs profils Bluetooth et la coexistence sans fil dans la bande 2,4 GHz.
- Mécanisme d'informations de débogage du contrôleur: lorsque cette option est activée, le contrôleur peut transmettre à l'hôte des informations de journalisation de débogage via le sous-événement "Informations de débogage du contrôleur".
- LE Audio Choppy: lorsque la manette détecte des facteurs qui provoquent un son saccadé, elle signale un événement LE Audio Choppy à l'hôte.
-
Mode Advance RF Stats (Statistiques RF avancées) : la télécommande transmet ses statistiques RF à l'hôte, ce qui permet de générer deux cas d'utilisation :
- Rapports périodiques
- Déclencheurs d'événements (démarrage/arrêt de la diffusion et déclencheur d'événement lié à la qualité du lien)
- BQR_Report_Action de la commande de rapport de qualité Bluetooth: l'hôte peut utiliser cette commande HCI pour obtenir une requête unique concernant le mode de surveillance de la qualité, le mode de surveillance de l'énergie ou un mode de statistiques RF avancées.
OCF: 0x15E
Paramètre de commande | Taille | Finalité |
---|---|---|
BQR_Report_Action |
1 octet |
Action permettant d'ajouter ou de supprimer des rapports sur les événements de qualité définis dans le paramètre BQR_Quality_Event_Mask, ou de tout effacer.
0x00 – Ajouter
Si vous la supprimez, les rapports sur les événements de qualité spécifiques seront effacés. |
BQR_Quality_Event_Mask |
4 octets |
Masques de bits pour les rapports sur les événements de qualité sélectionnés.
Bit 0: défini pour activer le mode de surveillance de la qualité. |
BQR_Minimum_Report_Interval |
2 octets |
Définissez l'intervalle de temps minimal des rapports sur les événements qualité sélectionnés. Le micrologiciel de la manette ne doit pas signaler l'événement suivant dans l'intervalle de temps défini. Le paramètre d'intervalle doit être respectif et dédié aux événements de qualité qui sont ajoutés.
Unité: ms |
BQR_Vendor_Specific_Quality_Event_Mask |
4 octets |
Masques de bits pour les rapports sur les événements de qualité spécifiques au fournisseur sélectionnés. Ce paramètre n'est valide que lorsque le bit 15 de BQR_Quality_Event_Mask est défini.
Bits 0 ~ 31: réservés. |
BQR_Vendor_Specific_Trace_Mask |
4 octets |
Masques de bits pour les rapports de trace spécifiques au fournisseur sélectionné. Ce paramètre n'est valide que lorsque le bit 31 de BQR_Quality_Event_Mask est défini.
Bits 0 ~ 31: réservés. |
Report_interval_multiple |
4 octets |
Multiplicateur pour BQR_Minimum_Report_Interval . Lorsque cette valeur est supérieure ou égale à 1,
l'intervalle du rapport BQR suit le format Intervalle du rapport BQR = BQR_Minimum_Report_Interval x Report_interval_multiple. Le micrologiciel de la manette ne doit pas signaler l'événement suivant dans l'intervalle de temps défini. Le paramètre d'intervalle est spécifiquement dédié aux événements de qualité ajoutés.
Unité: ms BQR_Report_Interval est supérieure aux capacités de la manette, celle-ci doit renvoyer la durée maximale BQR_Report_Interval une fois la commande exécutée.
|
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Current_Quality_Event_Mask |
4 octets |
Indique le paramètre actuel de masque de bits. Bit 0: le mode de surveillance de la qualité est activé. Bit 1: La création de rapports sur les événements LSTO approche est activé. Bit 2: la création de rapports sur les événements audio saccadés A2DP est activé. Bit 3: (e) Le reporting des événements Voice saccadés SCO est activé. Bit 4: La création de rapports sur les événements d'inflammation des racines est activée. Bit 5: le mode de surveillance de l'énergie est activé. Bit 6: la création de rapports sur les événements saccadés LE Audio est activée. Bit 7: événement d'échec de connexion. Bit 8: permet d'activer le déclencheur d'événement du mode Statistiques RF avancées. Bit 9: permet d'activer régulièrement les statistiques RF avancées. Bits 10 ~ 14: réservé. Bit 15: Les rapports sur les événements de qualité spécifiques aux fournisseurs sont activés. Bit 16: la trace du message LMP/LL est activée. Bit 17: la trace de planification Coex/Multilien Bluetooth est activée. Bit 18: le mécanisme d'informations de débogage du contrôleur est activé. Bits 19 ~ 30: réservé. Bit 31: une trace spécifique au fournisseur est activée. |
Current_Vendor_Specific_Quality_Event_Mask |
4 octets | Indique le paramètre actuel de masque de bits. |
Current_Vendor_Specific_Trace_Mask |
4 octets | Indique le paramètre actuel de masque de bits. |
BQR_Report_interval |
4 octets | Indique le paramètre actuel de masque de bits. |
Current_Vendor_Specific_Trace_Mask |
4 octets |
Paramètre de BQR_Report_interval . Il doit s'agir de la valeur minimale comprise entre BQR_Minimum_Report_Interval * Report_interval_multiple ou l'intervalle maximal d'assistance de la manette. |
Commande de tampon audio dynamique
Le tampon audio dynamique réduit les problèmes de son en modifiant la taille de la mémoire tampon audio dans la manette Bluetooth en fonction de différents scénarios.
OCF: 0x15F
Obtenir la capacité de durée de la mise en mémoire tampon du contenu audio
Sub OCF: 0x01
Utilisez cette commande pour obtenir la fonctionnalité de temps de mise en mémoire tampon audio de la manette Bluetooth.
Paramètre de commande | Taille | Finalité |
---|---|---|
N/A | Liste des paramètres de commande vide |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Dynamic_Audio_Buffer_opcode |
1 octet | 0x01 – Obtenir la durée de la mise en mémoire tampon du contenu audio |
Audio_Codec_Type_Supported |
4 octets |
Masques de bits pour les types de codec compatibles Bit 0 - SBC Bit 1 - AAC Bit 2 - APTX Bit 3 - APTX HD Bit 4 : LDAC Bits 5 à 31 sont réservés |
Audio_Codec_Buffer_Default_Time_For_Bit_0 |
2 octets |
Durée de la mémoire tampon par défaut du type de codec Bit 0 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être égale à 0 si le type de codec Bit 0 n'est pas compatible. Unité: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 |
2 octets |
Durée maximale de la mémoire tampon du type de codec Bit 0 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être égale à 0 si le type de codec Bit 0 n'est pas compatible. Unité: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 |
2 octets |
Durée minimale de la mémoire tampon du type de codec Bit 0 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être égale à 0 si le type de codec Bit 0 n'est pas compatible. Unité: ms |
Audio_Codec_Buffer_Default_Time_For_Bit_1 |
2 octets |
Durée de la mémoire tampon par défaut du type de codec Bit 1 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être égale à 0 si le type de codec Bit 1 n'est pas compatible. Unité: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 |
2 octets |
Durée maximale de la mémoire tampon du type de codec Bit 1 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être égale à 0 si le type de codec Bit 1 n'est pas compatible. Unité: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 |
2 octets |
Durée minimale de la mémoire tampon du type de codec Bit 1 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être égale à 0 si le type de codec Bit 1 n'est pas compatible. Unité: ms |
... | ... | ... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 |
2 octets |
Durée de la mise en mémoire tampon par défaut du type de codec Bit 31 spécifié dans Audio_Codec_Type_Supported. Cette valeur sera égale à 0 si le type de codec Bit 31 n'est pas compatible. Unité: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 |
2 octets |
Durée maximale de la mémoire tampon du type de codec Bit 31 spécifié dans Audio_Codec_Type_Supported. Cette valeur sera égale à 0 si le type de codec Bit 31 n'est pas compatible. Unité: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 |
2 octets |
Durée minimale de la mémoire tampon du type de codec Bit 31 spécifié dans Audio_Codec_Type_Supported. Cette valeur sera égale à 0 si le type de codec Bit 31 n'est pas compatible. Unité: ms |
Définir la durée de la mise en mémoire tampon de l'audio
Sub OCF: 0x02
Utilisez cette commande pour définir la durée de mise en mémoire tampon de l'audio sur la manette Bluetooth.
Paramètre de commande | Taille | Finalité |
---|---|---|
Audio_Codec_Buffer_Time |
2 octets |
Durée de la mémoire tampon audio demandée pour le codec actuellement utilisé. Unité: ms |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Dynamic_Audio_Buffer_opcode |
1 octet | 0x02 – Définir la durée de la mise en mémoire tampon du contenu audio |
Audio_Codec_Buffer_Time |
2 octets |
Durée actuelle de la mise en mémoire tampon de l'audio dans la manette Bluetooth. Unité: ms |
Événement HCI (propre au fournisseur)
Des événements HCI spécifiques au fournisseur sont requis dans certains cas. Reportez-vous à la figure 5.4 de la page 1897 de la spécification BT Core 5.2. Le paramètre d'événement 0 contient toujours le code du premier sous-événement, en fonction duquel le reste de l'événement HCI est décodé.
Paramètre d'événement | Taille | Finalité |
---|---|---|
HCI_vendor_specific_event_code |
1 octet | 0xFF |
sub_event_code |
1 octet | La taille d'un code de sous-événement est de 1 octet, c'est-à-dire l'octet qui suit immédiatement la longueur du paramètre dans le paquet d'événement HCI. |
Sous-événement de violation du seuil de stockage
Cet événement indique que le seuil de stockage a été dépassé.
Code du sous-événement = 0x54
Paramètre de sous-événement | Taille | Finalité |
---|---|---|
Aucune |
Sous-événement de changement d'état multi-publicité LE
Cet événement indique qu'une instance publicitaire a modifié son état. Pour le moment, cet événement n'est utilisé que pour indiquer quelle instance publicitaire a été arrêtée à la suite d'une connexion.
Code du sous-événement = 0x55
Paramètre de sous-événement | Taille | Finalité |
---|---|---|
Advertising_instance |
1 octet |
Identifie l'instance de publicité spécifique Les valeurs valides sont comprises entre 0 et max_advt_instances -1
|
State_Change_Reason |
1 octet | 0 x 00: connexion reçue |
Connection_handle |
2 octets |
Identifie la connexion qui a entraîné la désactivation de l'instance advt (0xFFFF si elle n'est pas valide)
|
Sous-événement de suivi des annonces LE
Cet événement indique quand un annonceur est trouvé ou perdu.
Code du sous-événement = 0x56
Paramètre de sous-événement | Taille | Finalité |
---|---|---|
APCF_Filter_Index |
1 octet | Index des filtres (0, max_filter -1) |
Advertiser_State |
1 octet |
0 x 00: Annonceur trouvé 0 x 01: Annonceur perdu |
Advt_Info_Present |
1 octet |
0 x 00: informations sur l'annonceur (Advt_Info ) présentes0 x 01: informations sur l'annonceur ( Advt_Info ) absentes
|
Advertiser_Address |
6 octets | Adresse publique ou aléatoire |
Advertiser_Address_Type |
1 octet |
0x00: adresse publique 0x01: adresse aléatoire |
Advt_Info |
Tx_Pwr[0] : 1 octetRSSI[0] : 1 octetTimestamp[0] : 2 octetsAdv packet_len[0] : 1 octetAdv_packet[0] : Adv_packet_len octetsScan_data_resp_len[0] : 1 octetScan_data_resp[0] : Scan_data_resp octets
|
Sous-événement "Informations de débogage de la manette"
Cet événement est utilisé par un contrôleur pour fournir des informations de débogage binaire à un hôte.
Code du sous-événement = 0x57
Paramètre de sous-événement | Taille | Finalité |
---|---|---|
debug_block_byte_offset_start |
2 octets | Déboguer le décalage des octets de bloc depuis le début |
last_block |
1 octet |
0x00: plus de données de débogage présentes 0x01: dernier bloc binaire ; plus de données de débogage |
cur_pay_load_sz |
2 octets | Taille du bloc binaire dans un événement actuel |
Debug_Data |
Variable | Données de débogage de cur_payload_sz |
Sous-événement "Rapport de qualité Bluetooth"
Cet événement indique l'un des éléments suivants: un événement de qualité Bluetooth s'est produit, le contrôleur a importé la trace du message LMP/LL et la trace de planification Bluetooth multi-lien/Coex, ou les données d'informations de débogage du contrôleur ont été vidées.
Code du sous-événement = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, événement lié à la qualité du lien]
Paramètre de sous-événement | Taille | Finalité |
---|---|---|
Quality_Report_Id |
1 octet |
0x01: création de rapports sur la qualité du mode de surveillance 0 x 02: approche du LSTO. 0x03: audio A2DP saccadé. 0x04: (e)SCO Voix saccadée. 0x05 ~ 0x06: réservé. 0x07: LE audio est saccadé. 0x08: échec de la connexion. 0x09 ~ 0xFF: réservé. |
Packet_Types |
1 octet |
0x01 : ID 0x02 : NULL 0x03 : POLLx5 : 0x04 : FHS2xD5x1 : EV3-H5 : EV1x5 : EV1x5 : EV1x5 : EV1x5 : EV1x5 : EV1x5 : EV1x1 : x2 x 1 x : 0 x 1 x 1 x : 0x08 : DV3xB 0x09 : EV3xB 0x09 : EV3xB |
Connection_Handle |
2 octets | Poignée de connexion ACL/(e)SCO/ISO. |
Connection_Role |
1 octet |
Exécution du rôle pour la connexion. 0x00: Central 0x01: Périphérique 0x02 ~ 0xFF: réservé. |
TX_Power_Level |
1 octet |
Niveau de puissance de transmission actuel pour le Connection_Handle spécifié.
Cette valeur doit être identique à la réponse de la manette à la commande HCI HCI_Read_Transmit_Power_Level. |
RSSI |
1 octet |
[en dBm]
Valeur d'indication de l'intensité du signal (RSSI) reçue pour le Connection_Handle spécifié. |
SNR |
1 octet |
[en dB]
Valeur du rapport signal sur bruit (SNR) pour la valeur Connection_Handle spécifiée. |
Unused_AFH_Channel_Count |
1 octet |
Indique le nombre de canaux inutilisés dans AFH_channel_map. 0x4F ~ 0xFF: réservé. |
AFH_Select_Unideal_Channel_Count |
1 octet |
Indique le nombre de canaux perturbés et de mauvaise qualité, mais qui sont toujours sélectionnés pour AFH. Le nombre minimal de canaux autorisé par la spécification Bluetooth est de 20. Par conséquent, même si les 79 canaux sont perturbés et sont de mauvaise qualité, la manette doit quand même choisir au moins 20 canaux pour AFH. |
LSTO |
2 octets |
Paramètre actuel du délai avant expiration de la supervision des liens. Durée = N * 0,625 ms Période: de 0,625 ms à 40,9 s |
Connection_Piconet_Clock |
4 octets |
Piconet Horloge pour le Connection_Handle spécifié. Cette valeur doit être identique à la réponse de la manette à la commande HCI HCI_Read_Clock avec le paramètre "Which_Clock" défini sur 0x01 (horloge Piconet). Unité: N x 0,3125 ms (1 horloge Bluetooth) |
Retransmission_Count |
4 octets |
Nombre de retransmissions depuis le dernier événement. Ce nombre sera réinitialisé après avoir signalé le problème à l'hôte. |
No_RX_Count |
4 octets |
Aucun décompte RX depuis le dernier événement. Ce nombre augmente lorsqu'aucun paquet n'est reçu pendant le créneau horaire planifié ou que le paquet reçu est corrompu. Ce nombre sera réinitialisé après avoir signalé le problème à l'hôte. |
NAK_Count |
4 octets |
Nombre de confirmations négatives (NAK) depuis le dernier événement. Ce nombre sera réinitialisé après avoir signalé le problème à l'hôte. |
Last_TX_ACK_Timestamp |
4 octets |
Horodatage de la dernière confirmation de transmission (TX). Elle est basée sur l'horloge Bluetooth du point central (CLK). Unité: N x 0,3125 ms (1 horloge Bluetooth) |
Flow_Off_Count |
4 octets |
Nombre de fois où le régulateur reçoit un flux (STOP) depuis le dernier événement. Ce nombre sera réinitialisé après avoir signalé le problème à l'hôte. |
Last_Flow_On_Timestamp |
4 octets |
Horodatage du dernier flux activé (GO). Elle est basée sur l'horloge Bluetooth du point central (CLK). Unité: N x 0,3125 ms (1 horloge Bluetooth) |
Buffer_Overflow_Bytes |
4 octets |
[en octets]
Nombre de dépassements de tampon depuis le dernier événement. |
Buffer_Underflow_Bytes |
4 octets |
[en octets]
Nombre de dépassements de mémoire tampon depuis le dernier événement. |
bdaddr |
6 octets | Adresse de l'appareil distant |
cal_failed_item_count |
1 octet | Nombre d'éléments ayant échoué au calibrage |
TX_Total_Packets |
4 octets | Nombre de paquets envoyés. |
TX_UnAcked_Packets |
4 octets |
Nombre de paquets ne recevant pas d'accusé de réception. Ce nombre est réinitialisé après le signalement à l'hôte. |
TX_Flushed_Packets |
4 octets |
Nombre de paquets qui ne sont pas envoyés par son point de vidage. Ce nombre est réinitialisé après le signalement à l'hôte. |
TX_Last_Subevent_Packets |
4 octets |
Nombre de paquets que la couche de liaison transmet une PDU de données CIS dans le dernier sous-événement d'un événement CIS. Ce nombre est réinitialisé après le signalement à l'hôte. La valeur est égale à zéro s'il n'existe aucune valeur valide pour l'association. |
CRC_Error_Packets |
4 octets |
Nombre de packages reçus avec une erreur CRC depuis le dernier événement. Ce nombre est réinitialisé après le signalement à l'hôte. |
RX_Duplicate_Packets |
4 octets |
Nombre de packages en double (retransmission) reçus depuis le dernier événement. Ce nombre est réinitialisé après le signalement à l'hôte. |
RX_Unreceived_Packets |
4 octets |
Le nombre de paquets non reçus est identique au paramètre de la commande LE READ ISO Link Quality (voir la version 5.4 de la spécification Bluetooth Core). Les flux associés sont CIS et BIS. Lorsque cette valeur est incrémentée, la couche de liaison ne reçoit pas de charge utile spécifique par son point de vidage (sur un CIS) ou à la fin de l'événement auquel elle est associée (sur un BIS ; voir la spécification de base Bluetooth version 5.4 Vol 6 Partie B, Section 4.4.6.6). |
Coex_Info_Mask |
2 octets |
Bit 0 – CoexInvolvement: à définir pour indiquer que des activités coex sont susceptibles d'être impliquées lors de la génération de ce rapport (par exemple, A2DP Chops et Approaching LSTO). Bit 1 – WL 2G Radio Active: à définir pour indiquer que la radio WLAN 2G est active. Bit 2 – WL 2G connecté: à définir pour indiquer que la radio WLAN 2G est active et connectée. Bit 3 – WL 5G/6G Radio Active: à définir pour indiquer que la radio WLAN 5G/6G est active. Bits 4 à 15 : réservé |
Paramètre spécifique au fournisseur | (paramètre total length - TBD) * octets | Pour que le fournisseur du contrôleur puisse obtenir des paramètres plus spécifiques. |
Code du sous-événement = 0x58 [Quality_Report_Id = 0x05, événement d'inflammation racine]
Cet événement indique que l'HAL Bluetooth ou la manette a rencontré une erreur fatale et a besoin d'une pile Bluetooth pour enregistrer cette situation et redémarrer. Dans tous les cas, le contrôleur doit envoyer un événement Root_Inflammation_Event à la pile Bluetooth avant d'envoyer le premier fragment des événements d'information de débogage.
Le paramètre Error_Code contient un code d'erreur signalé par HAL/Controller, 0 s'il s'agit d'une erreur spécifique au fournisseur du chipset. Vendor_Specific_Error_Code contient un code d'erreur spécifique au fournisseur du chipset provenant du HAL/Controller. Il doit être défini sur 0 si le paramètre Error_Code n'est pas défini sur 0. Les paramètres Error_Code et Vendor_Specific_Error_Code ne doivent pas être tous les deux définis sur 0.
Paramètre de sous-événement | Taille | Finalité |
---|---|---|
Quality_Report_Id |
1 octet |
0x00 ~ 0x04: réservé. 0 x 05: inflammation des racines. 0x06 ~ 0xFF: réservé. |
Error_Code |
1 octet |
0x00: un code d'erreur spécifique au fournisseur du chipset est inclus. 0x01 ~ 0xFF: une défaillance du contrôleur s'est produite. Consultez les spécifications Bluetooth [Vol 2] Partie D, Codes d'erreur pour obtenir la liste des codes d'erreur et leur description. |
Vendor_Specific_Error_Code |
1 octet |
0x00: aucun code d'erreur spécifique au fournisseur du chipset n'est inclus. 0x01 ~ 0xFF: code d'erreur spécifique au fournisseur du chipset. |
Paramètre spécifique au fournisseur | (Longueur totale du paramètre - 4) * octets | Pour que le fournisseur du contrôleur puisse obtenir des paramètres plus spécifiques. |
Code du sous-événement = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, événement lié au vidage des journaux]
Paramètre de sous-événement | Taille | Finalité |
---|---|---|
Quality_Report_Id |
1 octet |
0x00 ~ 0x10: réservé. 0x11: trace du message LMP/LL. 0x12: trace de programmation Coex/Multilien Bluetooth. 0x13: vidage des informations de débogage du contrôleur. 0x14 ~ 0xFF: réservé. |
Connection_Handle |
2 octets | Poignée de connexion. |
Paramètre spécifique au fournisseur | (Longueur totale du paramètre - 4) * octets | Format spécifique au fournisseur de trace de message LMP, de trace de planification Coex/Multilien Bluetooth et de vidage de données des informations de débogage du contrôleur. |
Compatibilité multi-annonceur
Les objectifs de la compatibilité multi-annonceur sont les suivants:
-
Possibilité de prendre en charge plusieurs annonces (
max_advt_instances
) - Différentes puissances de transmission pour permettre une portée variable
- Contenus publicitaires différents
- Une réponse individualisée pour chaque annonceur
- Confidentialité (non suivi) pour chaque annonceur
- Connectable
Pour maintenir cette spécification proche des normes existantes, les commandes suivantes propres au fournisseur sont fournies. Elles sont issues de la spécification Bluetooth Core 4.1.
LE_Multi_Advt_Command
OCF: 0x154
Paramètre de commande | Taille | Finalité |
---|---|---|
Multi_advt_opcode |
1 octet |
0x01 - Set_Advt_Param_Multi_Sub_Cmd 0x02 - Set_Advt_Data_Multi_Sub_Cmd 0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd 0x04 - Set_Random_Addr_Multi_Sub_Cmd 0x05 - Set_Advt_Enable_Multi_Sub_Cmd
|
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Multi_advt_opcode |
1 octet |
0x01 - Set_Advt_Param_Multi_Command 0x02 - Set_Advt_Data_Multi_Command 0x03 - Set_Scan_Resp_Data_Multi_Command 0x04 - Set_Random_Addr_Multi_Command 0x05 - Set_Advt_Enable_Multi_Command
|
LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd
Documentation de référence sur la base: spécification Bluetooth Core 4.1, page 964 (commande de paramètre publicitaire "LE Set")
Sub OCF: 0x01
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
Advertising_Interval_Min |
Conformément aux spécifications | Conformément aux spécifications |
Advertising_Interval_Max |
Conformément aux spécifications | Conformément aux spécifications |
Advertising_Type |
Conformément aux spécifications | Conformément aux spécifications |
Own_Address_Type |
Conformément aux spécifications | Conformément aux spécifications |
Own_Address |
Conformément aux spécifications | Conformément aux spécifications |
Direct_Address_Type |
Conformément aux spécifications | Conformément aux spécifications |
Direct_Address |
Conformément aux spécifications | Conformément aux spécifications |
Advertising_Channel_Map |
Conformément aux spécifications | Conformément aux spécifications |
Adverstising_Filter_Policy |
Conformément aux spécifications | Conformément aux spécifications |
Advertising_Instance |
1 octet | Spécifie l'applicabilité des paramètres ci-dessus à une instance |
Tx_power |
1 octet |
Transmit_Power Unité - en dBm (entier signé) Plage (-70 à +20) |
Le paramètre Own_Address
peut être une adresse configurée par l'hôte au moment de la configuration de cette instance de multi-annonce. Cela permet de disposer d'une adresse privée pouvant être résolue au moment de l'envoi de la première balise. La diffusion d'annonces sur une instance se poursuivra, quelle que soit la connexion. La pile hôte BT peut émettre une commande pour lancer l'annonce sur une instance, après la connexion.
Un événement "Commande terminée" sera généré pour cette commande, comme indiqué dans la spécification Bluetooth Core 4.1, conformément à la commande ci-dessus. Le contrôleur répondra avec un code d'échec (paramètre non valide) si l'instance publicitaire ou les paramètres Tx_Power
ne sont pas valides.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Multi_advt_opcode |
1 octet | 0x01 [Set_Advt_Param_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd
Documentation de référence sur la base: Bluetooth Core 4.1 Specification, page 969 (LE Set Advertising Data Command)
Sub OCF: 0x02
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
Advertising_Data_Length |
Conformément aux spécifications | Conformément aux spécifications |
Advertising_Data |
Conformément aux spécifications | Conformément aux spécifications |
Advertising_Instance |
1 octet | Spécifie l'applicabilité des paramètres ci-dessus à une instance |
Un événement "Commande terminée" sera généré pour cette commande, comme indiqué dans la spécification Bluetooth Core 4.1, conformément à la commande ci-dessus. Si l'instance publicitaire ou les paramètres Tx_Power
ne sont pas valides, le contrôleur renvoie un code d'échec.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Multi_advt_opcode |
1 octet | 0x02 [Set_Advt_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd
Documentation de référence sur la base: Bluetooth Core 4.1 Specification, page 970 (LE Set Scan Response Data Command)
Sub OCF: 0x03
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
Scan_Response_Data_Length |
Conformément aux spécifications | Conformément aux spécifications |
Scan_Response_Data |
Conformément aux spécifications | Conformément aux spécifications |
Advertising_Instance |
1 octet | Spécifie l'applicabilité des paramètres ci-dessus à une instance |
Un événement "Commande terminée" sera généré pour cette commande, comme indiqué dans la spécification Bluetooth Core 4.1, conformément à la commande ci-dessus. Le contrôleur répondra avec un code d'échec (paramètre non valide) si l'instance publicitaire ou les paramètres Tx_Power
ne sont pas valides.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Multi_advt_opcode |
1 octet | 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd
Documentation de référence sur la base: Bluetooth Core 4.1 Specification, page 963 (LE Set Random Address Command)
Sub OCF: 0x04
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
Adresse aléatoire | Conformément aux spécifications | Conformément aux spécifications |
Advertising_Instance |
1 octet | Spécifie l'applicabilité des paramètres ci-dessus à une instance |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Multi_advt_opcode |
1 octet | 0x04 [Set_Random_Addr_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd
Référence de base: spécification Bluetooth Core 4.1, page 971 (commande d'activation de l'annonce de l'API LE Set dans cette spécification de base)
OCF: 0x05
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
Advertising_Enable |
1 octet | La valeur 1 indique l'activation. Pour toute autre valeur, la fonctionnalité est désactivée. |
Advertising_Instance |
1 octet | Spécifie l'applicabilité des paramètres ci-dessus à une instance. L'instance 0 signifie une instance HCI standard. |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Multi_advt_opcode |
1 octet | 0x05 [Set_Advt_Enable_Multi_Sub_Cmd] |
Résolution de l'adresse privée déchargée
Cette fonctionnalité résout une adresse privée dans le micrologiciel ou le matériel de la manette, ce qui offre les avantages suivants:
- Latence associée à l'hôte lors de la résolution d'une adresse privée
- Économie d'énergie en ne réveillant pas l'hôte
LE_Set_RPA_Timeout
OCF: 0x15C
Paramètre de commande | Taille | Finalité |
---|---|---|
LE_local_IRK |
16 octets | La valeur IRK de l'appareil local utilisée pour générer la ou les adresses pouvant être résolues de manière aléatoire. |
tRPA_min |
2 octets |
Délai d'expiration minimal de génération de RPA, en secondes. Le contrôleur doit générer de nouvelles adresses pouvant être résolues pour tous les événements de publicité, d'analyse ou de connexion à compter de ce délai. Plage valide: 300-1 800 |
tRPA_max |
2 octets |
Délai maximal avant expiration de la génération de RPA, en secondes. Le contrôleur doit générer de nouvelles adresses pouvant être résolues pour tous les événements de publicité, d'analyse ou de connexion avant ce délai ou avant. Plage valide: tRPA_min -1 800
|
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet |
État de la commande. Valeurs d'état HCI suggérées: 0x00 Opération réussie 0x01 Commande inconnue (si non compatible) 0x12 Paramètres de commande non valides (si des paramètres se trouvent en dehors de la plage donnée) |
LE_RPA_offload_Command
OCF: 0x155
Paramètre de commande | Taille | Finalité |
---|---|---|
RPA_offload_opcode |
1 octet |
0x1 – Activer une fonctionnalité spécifique au client 0x2 – Ajouter IRK à la liste 0x3 – Supprimer IRK de la liste 0x4 – Effacer la liste IRK 0x5 : Lire l'entrée de la liste IRK |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Event_RPA_offload_opcode |
1 octet |
0x1 – Activer une fonctionnalité spécifique au client 0x2 – Ajouter IRK à la liste 0x3 – Supprimer IRK de la liste 0x4 – Effacer la liste IRK 0x5 : Lire l'entrée de la liste IRK |
LE_RPA_offload: Enable_cust_specific_sub_Command
Sub OCF: 0x01
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
enable_customer_specific_feature_set |
1 octet |
0x01 : activer la fonctionnalité RPA déchargée 0x00 : désactiver la fonctionnalité RPA déchargée |
Le déchargement RPA doit être activé par l'hôte, en fonction des capacités de la puce. Reportez-vous à LE_Get_Vendor_Capabilities_Command
.
Chaque puce peut avoir un max_irk_list_sz
différent dans le micrologiciel.
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Event_cust_specific_feature_opcode |
1 octet | 0x01 [Activer la fonctionnalité spécifique au client] |
LE_RPA_offload: Add_IRK_to_list_sub_Command
Sub OCF: 0x02
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
LE_IRK |
16 octets | LE IRK (1er octet LSB) |
Address_Type |
1 octet |
0: Adresse publique 1: Adresse aléatoire |
LE_Device_Address |
6 octets | Adresse publique ou aléatoire associée à l'IRK (1er octet LSB) |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Event_cust_specific_feature_opcode |
1 octet | 0x02 [Ajouter IRK à la liste] |
LE_IrkList_AvailableSpaces |
1 octet | Entrées de la liste IRL disponibles après l'opération en cours |
LE_RPA_offload: Supprimer_IRK_to_list_sub_Command
Sub OCF: 0x03
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
Address_Type |
1 octet |
0: Adresse publique 1: Adresse aléatoire |
LE_Device_Address |
6 octets | Adresse publique ou aléatoire associée à l’IRK |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Event_cust_specific_feature_opcode |
1 octet | 0x03 [Supprimer IRK de la liste] |
LE_IrkList_AvailableSpaces |
1 octet | Entrées de la liste IRL disponibles après l'opération en cours |
LE_RPA_offload: Clear_IRK_list_sub_Command
Sub OCF: 0x04
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
Aucune |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Event_cust_specific_feature_opcode |
1 octet | 0x04 [Effacer la liste IRK] |
LE_IrkList_AvailableSpaces |
1 octet |
Entrées de liste IRL disponibles après l'opération en cours [max_irk_list_sz]
|
LE_RPA_offload: Read_IRK_list_sub_Command
Sub OCF: 0x05
Paramètre de sous-commande | Taille | Finalité |
---|---|---|
LE_read_IRK_list_entry-index |
1 octet | Index de la liste IRK [0, max_irk_list_sz-1] |
Un événement Commande terminée sera généré pour cette commande.
Paramètre renvoyé | Taille | Finalité |
---|---|---|
Status |
1 octet | État de la commande "Terminée" |
Event_cust_specific_feature_opcode |
1 octet | 0x05 [Lire l'entrée de la liste IRK] |
LE_Read_IRK_List_entry |
1 octet | Index de l'IRK que l'hôte souhaite relire (taille maximale de la liste IRK : 32) |
LE_IRK |
16 octets | Valeur IRK |
Address_Type |
1 octet |
0: Adresse publique 1: Adresse aléatoire |
LE_Device_Address |
6 octets | Adresse publique ou aléatoire associée à l'IRK |
LE_Resolved_Private_Address |
6 octets | Adresse privée pouvant être résolue actuelle de cette IRK |