Exigences HCI

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_recordsnum_of_recordsScan_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:
  • Actuellement, le nombre maximal de caractères dans une chaîne de nom local est de 29
  • Non applicable lorsque l'action est "Effacer" (0x2)

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:
  • Actuellement, le nombre maximal de caractères dans une chaîne de nom local est de 29
  • Non applicable lorsque l'action est "Effacer" (0x2)
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:
  • Actuellement, le nombre maximal de caractères dans une chaîne de nom local est de 29
  • Non applicable lorsque l'action est "Effacer" (0x2)
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:

  • Bit 0: Prise en charge du filtre Service de découverte du transport
  • Bit 1: Prise en charge du filtre Type d'annonce
  • Bits 2 ~15: réservé pour une utilisation future

Valeur d'un bit

  • 0 = Non pris en charge
  • 1 = Disponible

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.
  • 0x00 – En-tête SCMS-T non inclus.
  • 0x01 – En-tête SCMS-T inclus.

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.
Octet 0: Longueur de bloc | Sous-bandes | Méthode d'allocation
Octet 1: Valeur de bitpool minimale
Octet 2: valeur de bitpool maximale
Octet 3: Fréquence d'échantillonnage | Mode canal
4-31 octobre: réservé

Codec AAC:

Reportez-vous aux éléments d'information spécifiques au codec AAC dans A2DP v1.3
Octet 0: type d'objet
Octet 1 ; b7: VBR
2-31 oct. : réservé

Codec LDAC:

0-3 oct. : ID fournisseur
0x0000012D

4-5 octobre: ID de codec
0x00AA - LDAC
Toutes les autres valeurs sont réservées

6 octobre: Indice de débit:
0x00 – Élevé
0x01 – Moyenne
0 x 02 – Faible
0x03 – 0x7E – Réservé
0x7F - ABR (Débit adaptatif)
0 x 80 – 0xFF – Réservé

7 octobre: Mode de canal LDAC
0x01 – Stéréo
0x02 – Double
0x04 – Mono
Les autres sont réservés

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
0x01 – Supprimer
0x02 – Effacer
0x03 – Requête unique

Si vous la supprimez, les rapports sur les événements de qualité spécifiques seront effacés.
"Effacer" effacera tous les rapports sur les événements de qualité (le paramètre BQR_Quality_Event_Mask peut être ignoré).

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é.
Bit 1: défini pour activer l'événement "Approche de LSTO" (pour ACL/(e)SCO/ISO).
Bit 2: Paramétrez l'événement pour activer l'événement audio A2DP.
Bit 3: Paramétrez l'activation de l'événement Voice saccadé (e)SCO.
Bit 4: Paramétrez l'événement pour activer l'événement d'inflammation de la racine.
Bit 5: Paramétrez l'activation du mode de surveillance de l'énergie.
Bit 6: Paramétrez l'événement LE Audio pour activer l'événement saccadé.
Bit 7: défini pour activer l'é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 le rapport périodique "Statistiques RF avancées".
Bits 10 ~ 14: réservé.
Bit 15: Défini pour activer les événements de qualité spécifiques au fournisseur.
Bit 16: permet d'activer la trace des messages LMP/LL.
Bit 17: permet d'activer la trace de planification Coex/Multilien Bluetooth.
Bit 18: Paramétrez l'activation du mécanisme d'informations de débogage du contrôleur.
Bits 19 ~ 30: réservé.
Bit 31: défini pour activer la trace spécifique au fournisseur.

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
Par défaut: 0 (aucune limite pour l'intervalle)
Plage: 0 ~ 65 535 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
Par défaut: 1
Plage: 0 ~ 4294967295 (0: est égal à 1)

Remarque: Si la valeur de 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ésentes
0 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 octet
RSSI[0]: 1 octet
Timestamp[0]: 2 octets
Adv packet_len[0]: 1 octet
Adv_packet[0]: Adv_packet_len octets
Scan_data_resp_len[0]: 1 octet
Scan_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.

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é.
Cette valeur doit être une valeur d'intensité absolue du signal du récepteur.
Plage : de -127 à +20

SNR 1 octet [en dB]

Valeur du rapport signal sur bruit (SNR) pour la valeur Connection_Handle spécifiée.
Le contrôleur doit fournir le SNR moyen de tous les canaux utilisés par l'association.

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.
Le contrôleur compte le nombre d'octets de données supprimés.
Ce nombre sera réinitialisé une fois le rapport envoyé à l'hôte.

Buffer_Underflow_Bytes 4 octets [en octets]

Nombre de dépassements de mémoire tampon depuis le dernier événement.
Ce nombre sera réinitialisé une fois le rapport envoyé à l'hôte.

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