L'interface de contrôleur hôte (HCI) permet d'interagir avec un contrôleur Bluetooth.
Ce document fournit une liste des exigences HCI Bluetooth (BT) et Bluetooth à basse consommation (BLE). L'objectif est que les fournisseurs de piles BT hôtes et de contrôleurs BT se conforment à ces exigences de plate-forme afin d'utiliser l'ensemble de fonctionnalités décrit ci-dessous.
Dans ce document, la spécification Bluetooth Core 5.2 est appelée "spec." La spécification Bluetooth Core 5.2 est disponible sur le site Web de Bluetooth SIG, ainsi que les autres documents adoptés.
Présentation générale de la conception
Fonctionnalités et configuration des puces
En tant que plate-forme ouverte, Android propose une matrice de versions logicielles, d'OEM, de fournisseurs, ainsi que de fonctionnalités de plate-forme et de puce.
Pour gérer la diversité du paysage et les migrations, une philosophie de conception permettant aux contrôleurs Bluetooth d'exposer leurs fonctionnalités (au-delà de la spécification Bluetooth Core 5.2 standard) est décrite dans ce document. La pile BT hôte peut ensuite utiliser ces fonctionnalités pour déterminer les fonctionnalités à activer.
Respecter les normes ouvertes
L'un des objectifs d'Android est de prendre en charge les normes ouvertes après leur 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 nous efforcerons de la définir comme valeur par défaut.
Fonctionnalités spécifiques au fournisseur
Commande propre au fournisseur: LE_Get_Vendor_Capabilities_Command
Champ de commande OpCode (OCF): 0x153
Paramètre de commande | Taille | Objectif |
---|---|---|
N/A | Liste de paramètres de commande vide |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
max_advt_instances (Obsolète) |
1 octet |
Nombre d'instances d'annonces acceptées. Réservé après la version 0.98. Ce paramètre est obsolète dans la spécification de fonctionnalités Google v0.98 et versions ultérieures au profit de la publicité étendue LE disponible dans la spécification BT v5.0 et versions ultérieures. |
offloaded_resolution_of_private-address (Obsolète) |
1 octet |
Capacité de la puce BT de l'RPA. Si elle est prise en charge par un chip, elle doit être activée par l'hôte. 0 = Non compatible 1 = Compatible Réservé après la version 0.98. Ce paramètre est obsolète dans la spécification de fonctionnalités Google v0.98 et versions ultérieures au profit de la fonctionnalité de confidentialité disponible dans la spécification BT v4.2 et versions ultérieures. |
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 compatibles avec le micrologiciel |
filtering_support |
1 octet |
Prise en charge du filtrage dans le contrôleur 0 = Non compatible 1 = Compatible |
max_filter |
1 octet | Nombre de filtres acceptés |
activity_energy_info_support |
1 octet |
Prise en charge de la création de rapports sur les informations d'activité et d'énergie 0 = Non compatible 1 = Compatible |
version_supported |
2 octets |
Spécifie la version de la spécification de fonctionnalité Google compatible octet[0] = numéro majeur octet[1] = numéro mineur v1.04 octet[0] = 0x01 octet[1] = 0x04 |
total_num_of_advt_tracked |
2 octets |
Nombre total d'annonceurs suivis à des fins OnLost /OnFound
|
extended_scan_support |
1 octet | Prise en charge de la fenêtre et de l'intervalle d'analyse étendus |
debug_logging_supported |
1 octet | Prise en charge de la journalisation des informations de débogage binaires à partir 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 est obsolète dans la spécification de fonctionnalités Google v0.98 et versions ultérieures au profit de la fonctionnalité de confidentialité disponible dans la spécification BT v4.2 et versions ultérieures. |
A2DP_source_offload_capability_mask |
4 octets |
Masques de bits pour les types de codecs compatibles Bit 0 : SBC Bit 1 : AAC Bit 2 : APTX Bit 3 : APTX HD Bit 4 : LDAC Les bits 5 à 31 sont réservés |
bluetooth_quality_report_support |
1 octet |
Prise en charge de la création de rapports sur les événements de qualité Bluetooth 0 = Non compatible 1 = Compatible |
dynamic_audio_buffer_support |
4 octets |
Compatible avec le tampon audio dynamique dans le contrôleur Bluetooth Masques de bits pour les types de codecs compatibles Bit 0 : SBC Bit 1 : AAC Bit 2 : APTX Bit 3 : APTX HD Bit 4 : LDAC Les bits 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 |
Résultats de l'analyse par lot
L'objectif de la conception est d'améliorer la manière dont les notifications d'événement de réponse à la balayage Bluetooth LE sont transmises à l'hôte, afin d'économiser de l'énergie dans l'hôte.
En réduisant la fréquence à laquelle le contrôleur informe le processeur de l'application hôte pour analyser les résultats, le processeur de l'application hôte peut rester en veille/en 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 à stocker les résultats de l'analyse.
Cette fonctionnalité se concentre sur la gestion et la configuration de l'espace de stockage des résultats de la recherche LE dans le contrôleur Bluetooth. Le stockage est utilisé pour regrouper temporairement les données publicitaires, et analyser les données et les métadonnées reçues par le contrôleur pour les transmettre ultérieurement à l'hôte.
Le micrologiciel doit prendre en charge deux types de traitement par lot, qui peuvent être activés simultanément:
- Tronqué. Contient les éléments d'informations suivants: {MAC, TX Power, RSSI, Timestamp}
- Complet. Contient les éléments d'informations suivants: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}
LE_Batch_Scan_Command
OCF: 0x156
Paramètre de commande | Taille | Objectif |
---|---|---|
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 de l'analyse par lot |
Un événement "Commande terminée" est généré pour cette commande. L'activation de la fonctionnalité spécifique au client ne démarre pas l'analyse.
Paramètre de retour | Taille | Objectif |
---|---|---|
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 de l'analyse par lot |
LE_Batch_Scan_Command: activez la fonctionnalité spécifique au client
Sub OCF: 0x01
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
enable_customer_specific_feature_set |
1 octet |
0x01 : activez la fonctionnalité de numérisation par lot 0x00 : désactivez la fonctionnalité de numérisation par lot |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
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 de l'analyse par lot |
LE_Batch_Scan_Command: sous-commande de paramétrage du stockage de l'analyse par lot
Sub OCF: 0x02
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
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 |
Niveau de notification (en %) pour chaque pool de stockage
[Plage: 0-100] Si vous définissez la valeur sur 0, la notification sera désactivée. Un événement HCI spécifique au fournisseur est généré (sous-événement de dépassement du seuil de stockage) |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
Batch_scan_opcode |
1 octet | 0x02 [Set Batch Scan parameters] |
LE_Batch_Scan_Command: sous-commande de paramétrage de l'analyse par lot
Sub OCF: 0x03
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
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 de l'analyse par lot (nombre d'emplacements) |
Duty_cyle_scan_interval |
4 octets | Période d'intervalle d'analyse par lot (nombre de créneaux) |
own_address_type |
1 octet |
0x00 : adresse de l'appareil publique 0x01 : adresse de l'appareil aléatoire |
Batch_scan_Discard_Rule |
1 octet |
0 : supprimer l'annonce la plus ancienne 1 : supprimer l'annonce avec le 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 pour le style tronqué est {BD_ADDR,
scan_interval}. Cela signifie qu'un seul BD_ADDR will
est 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. La clé unique de style complet = {MAC, paquet d'annonce}, quelle que soit la fréquence d'analyse. L'enregistrement à conserver pour le mode complet est {BD_ADDR
, Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. En mode "Full" (Complet), le même paquet AD, lorsqu'il est vu plusieurs fois sur 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 est intéressante (une fois par intervalle d'analyse). Le RSSI correspond à la valeur moyenne de tous les doublons d'une annonce unique sur un intervalle d'analyse.
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
Batch_scan_opcode |
1 octet | 0x03 [Définir les paramètres d'analyse par lot] |
LE_Batch_Scan_Command: sous-commande permettant de lire les résultats d'analyse par lot
Sous OCF: 0x04
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
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 puissent pas tenir dans un seul événement de fin de commande. L'hôte émet cette commande de manière itérée jusqu'à ce que le nombre d'enregistrements correspondant dans l'événement "Command Complete" indique 0, ce qui signifie que le contrôleur n'a plus d'enregistrements à communiquer à l'hôte. Chaque événement "Command Complete" peut contenir plusieurs enregistrements d'un seul type de données (complet ou tronqué).
Les références temporelles 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ù l'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 le code temporel a été pris dans le micrologiciel est T_fw
. L'heure de création du rapport sera : (T_c
- T_fw
). T_c
et T_fw
se trouvent dans le domaine temporel du micrologiciel. Cela permet à l'hôte de calculer depuis combien de temps l'événement s'est produit.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
Batch_scan_opcode |
1 octet | 0x03 [Définir les paramètres d'analyse par lot] |
Batch_Scan_data_read |
1 octet | Indique le format (tronqué ou complet) |
num_of_records |
1 octet | Nombre d'enregistrements de Batch_Scan_data_read |
format_of_data |
Variable |
Mode tronqué: Address[0]: 6 octets Address_Type[0]: 1 octet Tx_Pwr[0]: 1 octet RSSI[0] : 1 octet Timestamp[0]: 2 octets [plusieurs enregistrements ( num_of_records ) avec le format ci-dessus]Mode complet: Address[0]: 6 octets Address_Type[0]: 1 octet 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[plusieurs enregistrements avec le format ci-dessus ( num_of_records )]
|
Filtre de contenu des paquets publicitaires
Utilisez-le pour activer/désactiver/configurer le filtre de contenu des paquets publicitaires (APCF) dans le contrôleur. APCF filtre les rapports publicitaires dans le contrôleur, mais ne filtre pas la publicité périodique.
LE_APCF_Command
OCF: 0x157
Paramètre de commande | Taille | Objectif |
---|---|---|
APCF_opcode |
1 octet |
0x00 : APCF Enable 0x01 : APCF Set Filtering parameters 0x02 : APCF Broadcaster Address 0x03 : APCF Service UUID 0x04 : APCF Service Solicitation UUID 0x05 : APCF Local Name 0x06 : APCF Manufacturer Data 0x07 : APCF Service Data 0x08 : APCF Transport Discovery Service 0x09 : APCF AD Type Filter 0x10 à 0xAF : Réservé pour une utilisation future 0xB0 à 0xDF : Réservé pour le fournisseur 0xE0 à 0xFE : Réservé pour une utilisation future 0xFF : APCF Read extended Features |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État du retour |
APCF_opcode |
1 octet |
0x00 : APCF Enable 0x01 : APCF Set Filtering parameters 0x02 : APCF Broadcaster Address 0x03 : APCF Service UUID 0x04 : APCF Service Solicitation UUID 0x05 : APCF Local Name 0x06 : APCF Manufacturer Data 0x07 : APCF Service Data 0x08 : APCF Transport Discovery Service 0x09 : APCF AD Type Filter 0x10 à 0xAF : Réservé pour une utilisation future 0xB0 à 0xDF : Réservé pour le fournisseur 0xE0 à 0xFE : Réservé pour une utilisation future 0xFF : APCF Read extended Features |
LE_APCF_Command: Enable_sub_cmd
Sub OCF: 0x00
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
APCF_enable |
1 octet |
0x01 : activez la fonctionnalité APCF 0x00 : désactivez la fonctionnalité APCF |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
APCF_opcode |
1 octet | 0x0 : APCF activé |
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 le chip.
Sub OCF: 0x01
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
APCF_Action |
1 octet |
0x00 : Ajouter 0x01 : Supprimer 0x02 : Effacer La suppression efface le filtre spécifique ainsi que les entrées d'éléments géographiques associés dans d'autres tables. "Effacer" efface tous les filtres et les entrées associées dans d'autres tableaux. |
APCF_Filter_Index |
1 octet | Indice de filtre (0, max_filter-1 ) |
APCF_Feature_Selection |
2 octets |
Masques de bits pour les fonctionnalités sélectionnées: Bit 0: défini pour activer le filtre d'adresse de diffusion Bit 1: défini pour activer le filtre de modification des données de service Bit 2: défini pour activer la vérification de l'UUID de service Bit 3: défini pour activer la vérification de l'UUID de sollicitation de service Bit 4: défini pour activer la vérification du nom local Bit 5: défini pour activer la vérification des données du fabricant Bit 6: défini pour activer la vérification des données de service Bit 7: défini pour activer la vérification du service de découverte de transport Bit 8: défini pour activer la vérification du type d'annonce |
APCF_List_Logic_Type |
2 octets |
Opération logique pour chaque sélection de fonctionnalités (par position de bit) spécifiée dans APCF_Feature_Selection .
Valable uniquement lorsqu'une fonctionnalité est activée. Valeur de la position de bit: 0: OU 1: ET Si la logique "ET" est sélectionnée, un paquet ADV ne passe 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: OU 0x01: ET Remarque: Le type de logique est N/A pour les trois premiers champs de APCF_Feature_Selection , qui est toujours la logique "ET". Ils ne s'appliquent qu'aux quatre champs (bit 3 à bit 6) de APCF_Feature_Selection .
|
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 vu. |
delivery_mode |
1 octet |
0x00 : immediate 0x01 : on_found 0x02 : batched
|
onfound_timeout |
2 octets |
Valide uniquement si delivery_mode est défini sur on_found .[en millisecondes] Durée pendant laquelle le micrologiciel doit rester en attente et collecter des annonces supplémentaires avant de générer un rapport. |
onfound_timeout_cnt |
1 octet |
Valide uniquement si delivery_mode est défini sur on_found .[count] Si une annonce dans onFound persiste 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 , il est signalé comme OnFound immédiatement après.
|
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 ne dépasse pas le seuil RSSI bas. |
onlost_timeout |
2 octets |
Valide uniquement si delivery_mode est défini sur on_found .[en millisecondes] Si une annonce, après avoir été détectée, n'est pas vue de manière contiguë pendant la période lost_timeout , elle est immédiatement signalée comme 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 à deux pour représenter les valeurs négatives.
L'hôte doit pouvoir 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 chaque réponse d'analyse associée devront passer par tous les filtres, l'un après l'autre. Par conséquent, les actions générées (delivery_mode
) sont étroitement liées au filtrage. Les modes de diffusion sont les suivants: report_immediately
, batch
et onFound
. La valeur OnLost
est liée à OnFound
dans le sens où elle vient après OnFound
en cas de perte.
Ce flux de traitement illustre le modèle conceptuel:
Lorsqu'un frame d'annonce (ou de réponse à l'analyse) est reçu, il est appliqué à tous les filtres dans l'ordre séquentiel. Il est possible qu'une annonce génère des rapports immédiats en fonction d'un filtre et d'un traitement par lot du même filtre en raison d'une action de filtrage différente.
Les seuils de niveau RSSI (haut et bas) permettent de contrôler quand le frame est visible pour le traitement du filtre, même lorsqu'un paquet valide est reçu par le contrôleur. Si le mode de diffusion est défini sur "immédiat" ou "par lot", le RSSI d'une trame est pris en compte pour un traitement ultérieur par le contrôleur. Différentes applications ont besoin de comportements de création de rapports et de traitement par lot différents. Cela permet à plusieurs applications de générer des rapports directs et/ou de regrouper des résultats dans le micrologiciel, simultanément. Par exemple, une application active une analyse par lot, puis une autre émet une analyse LE standard. Avant qu'une analyse par lot ne soit émise, le framework/l'application définit les filtres appropriés. Plus tard, lorsque la deuxième application émet une analyse régulière, le traitement par lot précédent se poursuit. Toutefois, en raison de l'analyse régulière, il s'agit de manière conceptuelle d'ajouter un filtre nul (avec tous les filtres existants) avec la commande d'analyse LE. Les paramètres de la commande d'analyse LE sont prioritaires lorsqu'ils sont actifs. Lorsque l'analyse LE régulière est désactivée, le contrôleur revient à une analyse par lot précédente, le cas échéant.
Le mode de diffusion OnFound
est basé sur des filtres configurés. Une combinaison qui déclenche l'action d'un filtre pour qu'elle aboutisse 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
pour un filtre (si elle est activée) se présente comme suit:
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
APCF_opcode |
1 octet | 0x01 : APCF Set Filtering Parameters |
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 une adresse d'annonceur, ou d'effacer la liste des adresses d'annonceur pour le filtrage sur le chip.
Sub OCF: 0x02
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
APCF_Action |
1 octet |
0x00 : Ajouter 0x01 : Supprimer 0x02 : Effacer La suppression supprime l'adresse du diffuseur spécifiée dans le filtre spécifié. "Effacer" efface toutes les adresses des diffuseurs dans le filtre spécifié. |
APCF_Filter_Index |
1 octet | Indice de filtre (0, max_filter-1 ) |
APCF_Broadcaster_Address |
6 octets | Adresse de l'appareil de 6 octets à ajouter ou à supprimer de la liste des adresses des diffuseurs |
APCF_Application_Address_type |
1 octet |
0x00: Public 0x01: Aléatoire 0x02: NA (ignorer le type d'adresse) Pour filtrer les rapports publicitaires avec des 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: NA (ignorez le type d'adresse). |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
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 restantes dans le tableau des adresses de diffusion |
LE_APCF_Command: service_uuid_sub_cmd
Ce 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 le chip.
Sub OCF: 0x03
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
APCF_Action |
1 octet |
0x00 : Ajouter 0x01 : Supprimer 0x02 : Effacer La suppression supprime l'adresse UUID de service spécifiée dans le filtre spécifié. "Effacer" efface tous les UUID de service du filtre spécifié. |
APCF_Filter_Index |
1 octet | Indice de filtre (0, max_filter -1) |
APCF_UUID |
2, 4 ou 16 octets | UUID du service (16 bits, 32 bits ou 128 bits) à ajouter ou à supprimer de la liste. |
APCF_UUID_MASK |
2, 4 ou 16 octets |
Masque UUID de service (16 bits, 32 bits ou 128 bits) à ajouter à la liste.
Il doit avoir la même longueur que APCF_UUID. .
|
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
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 libres encore disponibles dans le tableau des UUID de service |
LE_APCF_Command: solicitation_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 le chip.
Sous OCF: 0x04
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
APCF_Action |
1 octet |
0x00 : Ajouter 0x01 : Supprimer 0x02 : Effacer La suppression supprime l'adresse UUID de la sollicitation dans le filtre spécifié. "Effacer" efface tous les UUID de sollicitation du filtre spécifié. |
APCF_Filter_Index |
1 octet | Indice de filtre (0, max_filter -1) |
APCF_UUID |
2, 4 ou 16 octets | UUID de la sollicitation (16 bits, 32 bits ou 128 bits) à ajouter ou à supprimer de la liste. |
APCF_UUID_MASK |
2, 4 ou 16 octets |
Masque UUID de sollicitation (16 bits, 32 bits ou 128 bits) à ajouter à la liste. Il doit avoir la même longueur que APCF_UUID .
|
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
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 libres encore disponibles dans le tableau des UUID de sollicitation |
LE_APCF_Command: local_name_sub_cmd
Ce sous-commande permet d'ajouter ou de supprimer une chaîne de nom local, ou d'effacer la liste de chaînes de nom local pour le filtrage sur le chip.
OCF secondaire: 0x05
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
APCF_Action |
1 octet |
0x00 : Ajouter 0x01 : Supprimer 0x02 : Effacer La suppression supprime la chaîne de nom local spécifiée dans le filtre spécifié. "Clear" (Effacer) permet d'effacer toutes les chaînes de noms locaux du filtre spécifié. |
APCF_Filter_Index |
1 octet | Indice 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" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
APCF_opcode |
1 octet | 0x05 : nom local de l'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 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 le chip.
Sous-OCF: 0x06
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
APCF_Action |
1 octet |
0x00 : Ajouter 0x01 : Supprimer 0x02 : Effacer La suppression supprime la chaîne de données du fabricant spécifiée dans le filtre spécifié. "Effacer" efface toutes les chaînes de données du fabricant dans le filtre spécifié. |
APCF_Filter_Index |
1 octet | Indice de filtre (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 du fabricant à ajouter à la liste. Il doit avoir la même longueur que APCF_LocName_or_ManData_or_SerData .
|
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
APCF_opcode |
1 octet | 0x06 : données du fabricant 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 "Données fabricant" |
LE_APCF_Command: service_data_sub_cmd
Ce 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 le chip.
Sub OCF: 0x07
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
APCF_Action |
1 octet |
0x00 : Ajouter 0x01 : Supprimer 0x02 : Effacer La suppression supprime la chaîne de données de service spécifiée dans le filtre spécifié. "Clear" (Effacer) permet d'effacer toutes les chaînes de données de service du filtre spécifié. |
APCF_Filter_Index |
1 octet | Indice de filtre (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" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
APCF_opcode |
1 octet | 0x07 : données de service APCF |
APCF_Action |
1 octet | APCF_Action de la commande d'écho |
APCF_AvailableSpaces |
1 octet | Nombre d'entrées libres encore disponibles pour le tableau "Données de service" |
LE_APCF_Command: ad_type_sub_cmd
Ce sous-commande permet d'ajouter ou de supprimer un type d'annonce ou d'effacer une liste de types d'annonces pour le filtrage sur le chip. 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, filtrez APCF_AD_TYPE
sans comparer les données AD et le masque de données AD.
Si la longueur des données du paquet ADV reçu dépasse AD_DATA_LENGTH
, comparez uniquement les premiers AD_DATA_LENGTH
octets des données AD et ignorez les données restantes.
Sous OCF: 0x09
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
APCF_Action |
1 octet |
0x00 : Ajouter 0x01 : Supprimer 0x02 : Effacer La suppression supprime le type d'AD spécifié dans le filtre spécifié. "Effacer" permet d'effacer tous les types d'AD du filtre spécifié. |
APCF_Filter_Index |
1 octet | Indice de filtre (0, max_filter -1) |
APCF_AD_TYPE |
1 octet | Type d'AD pour ajouter ou supprimer des éléments de la liste. Ignorer lorsque APCF_Action est défini sur 0x02 (Effacer) |
APCF_AD_DATA_Length |
1 octet |
0x00 : signifie ne pas filtrer le contenu des données Ignorer lorsque APCF_Action est 0x02 (Effacer)
|
APCF_AD_DATA |
Taille variable |
Taille variable, basée sur APCF_AD_DATA_Length Ignorer lorsque APCF_Action est 0x02 (Effacer) |
APCF_AD_DATA_MASK |
Taille variable |
Taille variable, basée sur APCF_AD_DATA_Length Ignorer lorsque APCF_Action est 0x02 (Effacer)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 de retour | Taille | Objectif |
---|---|---|
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 libres encore disponibles dans le tableau "Type d'annonce" |
LE_APCF_Command: read_extended_features_sub_cmd
Ce sous-commande permet de lire les fonctionnalités APCF étendues.
OCF secondaire: 0xFF
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
Non applicable | Paramètre de commande vide. |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
APCF_opcode |
1 octet | 0xFF : APCF_Read_Extended_Features |
APCF_extended_features |
2 octets |
Masques de bits pour les fonctionnalités étendues compatibles:
Valeur du bit
|
Commande d'informations sur l'activité et l'énergie du contrôleur
L'objectif de ces informations est que les fonctions système hôtes supérieures puissent analyser l'ensemble des activités de tous les composants, y compris le contrôleur BT et son état macro, en fonction de ce qui se passe dans les applications et le framework. Pour ce faire, les informations suivantes sont requises de la part de la pile BT et du contrôleur:
- Pile Bluetooth: signale l'état macro-opérationnel actuel du contrôleur
- Micrologiciel: création de rapports sur l'activité globale et les informations sur l'énergie
États de macro de la pile hôte BT, déterminés au niveau de l'utilisateur:
- Inactif: [analyse de la page, annonce LE, analyse de la demande, analyse LE]
- Analyse: [paging/inquiry/trying to connect]
- Actif: [Lien LCA activé, lien SCO en cours, mode d'analyse]
Les activités que le contrôleur suit tout au long de sa durée de vie sont la durée de transmission, la durée de réception, le temps d'inactivité et l'énergie totale consommée. Ils sont effacés lors de la lecture depuis l'hôte.
LE_Get_Controller_Activity_Energy_Info
Il s'agit d'une commande propre au fournisseur.
OCF: 0x159
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
N/A | Paramètres de commande vides |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
total_tx_time_ms |
4 octets | Durée totale d'exécution de la transaction |
total_rx_time_ms |
4 octets | Temps total d'exécution de la réception |
total_idle_time_ms |
4 octets | Temps total d'inactivité (états d'économie d'énergie autres que le mode veille) |
total_energy_used |
4 octets | Énergie totale utilisée [produit du courant (mA), de la tension (V) et du temps (ms)] |
Commande de paramètres d'analyse d'ensemble étendus LE
Cette commande permet d'activer une fenêtre et un intervalle de numérisation plus importants dans le contrôleur. Conformément à la spécification BT Core 5.2, une fenêtre et un intervalle de numérisation ont une limite supérieure de 10,24 secondes, ce qui limite les intervalles de numérisation au-delà de 10,24 secondes pour les applications.
Référence de base: Spécification BT Core 5.2, page 2493 (commande LE Set Scan Parameters)
OCF: 0x15A
Paramètre de commande | Taille | Objectif |
---|---|---|
LE_Ex_Scan_Type |
1 octet |
0x00 : analyse passive. Aucun paquet SCAN_REQ ne doit être envoyé (par défaut).0x01 : analyse active. Des paquets SCAN_REQ peuvent être envoyés.
|
LE_Ex_Scan_Interval |
4 octets |
Défini comme l'intervalle de temps entre le début de la dernière analyse LE par le contrôleur et le début de l'analyse LE suivante. Plage: 0x0004 à 0x00FFFFFF Valeur par défaut: 0x0010 (10 ms) Durée = N * 0,625 ms Plage de durée: 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: 0x0004 à 0xFFFF Valeur par défaut: 0x0010 (10 ms) Durée = N * 0,625 ms Plage de durée: 2,5 ms à 40,95 secondes |
Own_Address_Type |
1 octet |
0x00 : adresse de l'appareil publique (par défaut) 0x01 : adresse de l'appareil aléatoire |
LE_Ex_Scan_Filter_Policy |
0x00 : Accepter tous les paquets d'annonce (valeur par défaut). Les paquets publicitaires ciblés qui ne sont pas adressés à cet appareil doivent être ignorés. 0x01 : ignore les paquets publicitaires provenant d'appareils qui ne figurent pas dans la liste "Uniquement liste blanche". Les paquets publicitaires ciblés qui ne sont pas adressés à cet appareil doivent être ignorés. |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
Commande permettant d'obtenir des informations de débogage sur la manette
L'objectif de cet élément d'informations est d'acquérir des informations de débogage du contrôleur par un hôte, au format binaire, pour le post-traitement et l'analyse. Cela permet de déboguer les problèmes sur le terrain et fournit aux ingénieurs un kit d'outils pour consigner des informations à des fins d'analyse. Un contrôleur peut fournir les informations lorsqu'elles sont demandées par un hôte via l'événement (sous-événement d'informations de débogage du contrôleur) ou de manière autonome lorsque le contrôleur le souhaite. Par exemple, vous pouvez utiliser cette méthode pour signaler des informations sur l'état du micrologiciel, des informations sur le dump de plantage, des informations de journalisation, etc.
OCF: 0x15B
Paramètre de commande | Taille | Objectif |
---|---|---|
N/A | Liste de paramètres de commande vide |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
Prise en charge du déchargement matériel A2DP
La fonctionnalité de transfert A2DP permet de transférer le processus d'encodage audio A2DP vers un processeur audio connecté au contrôleur Bluetooth. Le flux de données audio encodées passe directement du processeur audio au contrôleur Bluetooth sans l'intervention de l'hôte Bluetooth. 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 le sous-OCF 0x01-0x02 ne sont compatibles qu'avec les codecs Open Source. Les versions avec le sous-OCF 0x03-0x04 sont indépendantes du codec configuré.
OCF: 0x15D
Démarrer le déchargement A2DP (ancien)
Sub OCF: 0x01
Utilisez cette commande à la fois pour configurer le processus de transfert A2DP et pour démarrer le flux A2DP.
Paramètre de commande | Taille | Objectif |
---|---|---|
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). La valeur zéro désactive l'éjection. |
SCMS-T_Enable |
2 octets |
Octet 0: indicateur permettant d'ajouter l'en-tête SCMS-T.
Octet 1: 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é / inutilisé. 0x00000001 à 0x00FFFFFF : débit audio encodé en bits par seconde. 0x01000000 - 0xFFFFFFFF : réservé. |
Connection_Handle |
2 octets | Gestionnaire 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 de la MTU L2CAP contenant des paquets audio encodés |
Codec_Information |
32 octets |
Informations spécifiques au codec.
Codec SBC :
Reportez-vous aux éléments d'informations spécifiques au codec SBC dans la version 1.3 de l'A2DP. Codec AAC :
Reportez-vous aux éléments d'informations spécifiques au codec AAC dans la version 1.3 d'A2DP. Codec LDAC:
Octets 0 à 3: ID du fournisseur
Octets 4 à 5 : ID du codec
Octet 6 : indice de débit :
Octet 7 : mode de canal LDAC Octets 8 à 31: réservés Tous les autres codecs: Octets 0 à 31: réservés |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
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 à la fois pour configurer le processus de transfert A2DP et pour démarrer le flux A2DP.
Paramètre de commande | Taille | Objectif |
---|---|---|
Connection Handle |
2 octets | Poignée de la connexion HCI active |
L2CAP_Channel_ID |
2 octets | Identifiant du canal L2CAP ouvert pour le streaming A2DP |
Data_Path_Direction |
1 octet |
0x00 : sortie (source/fusion AVDTP) 0x01 : entrée (piège/fractionnement AVDTP) |
Peer_MTU |
2 octets | Taille maximale des paquets L2CAP, négociée avec l'homologue. |
CP_Enable_SCMS_T |
1 octet |
0x00 : désactivation de l'en-tête de protection du contenu SCMS-T 0x01 : activation de l'en-tête de protection du contenu SCMS-T |
CP_Header_SCMS_T |
1 octet |
Lorsque l'en-tête de protection de contenu SCMS-T est activé (CP_SCMS_T_Enable défini sur 0x01), définit la valeur de l'en-tête qui précède le contenu audio (reportez-vous à la section 3.2.1-2 de la spécification A2DP) telle que définie par la section 6.3.2 des numéros attribués Bluetooth.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 Audio Bluetooth, CodecParameters.vendorSpecificParameters[] .
|
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
Sub_Opcode |
1 octet | 0x03 : Démarrage du déchargement A2DP |
Arrêter le déchargement A2DP (ancien)
Sub OCF: 0x02
Cette commande permet d'arrêter le flux de transfert A2DP.
Paramètre de commande | Taille | Objectif |
---|---|---|
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" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
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
Sous OCF: 0x04
Cette commande permet d'arrêter le flux de transfert A2DP.
Paramètre de commande | Taille | Objectif |
---|---|---|
Connection Handle |
2 octets | Poignée de la connexion HCI active |
L2CAP_Channel_ID |
2 octets | Identifiant du canal L2CAP ouvert pour le streaming A2DP |
Data_Path_Direction |
1 octet |
0x00 : sortie (source/fusion AVDTP) 0x01 : entrée (piège/fractionnement AVDTP) |
Un événement "Commande terminée" sera généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
Sub_Opcode |
1 octet | 0x04 : Arrêter le déchargement A2DP |
Commande de rapport sur la qualité Bluetooth
La fonctionnalité de commande de rapport sur la qualité du Bluetooth démarre le mécanisme dans le contrôleur Bluetooth pour signaler les événements de qualité du Bluetooth à l'hôte. Vous pouvez activer quatre options:
- Mode de surveillance de la qualité: le contrôleur envoie périodiquement un sous-événement BQR lié à la qualité de liaison à l'hôte.
- Approaching LSTO (Approche du délai avant expiration de la surveillance de liaison) : si aucun paquet n'est reçu de l'appareil BT connecté pendant plus de la moitié de la valeur du délai avant expiration de la surveillance de liaison (LSTO, Link Supervision TimeOut), le contrôleur signale un événement Approaching LSTO à l'hôte.
- Audio A2DP haché: lorsque le contrôleur détecte des facteurs qui provoquent un son haché, il signale un événement audio A2DP haché à l'hôte.
- (e)SCO Voice Choppy: lorsque le contrôleur détecte des facteurs qui provoquent une voix saccadée, il signale un événement (e)SCO Voice Choppy à 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.
- Traçage de message LMP/LL: le contrôleur envoie l'établissement de la liaison LMP/LL avec l'appareil distant à l'hôte.
- Trace de planification multiprofil/Coex Bluetooth: le contrôleur envoie à l'hôte ses informations de planification sur la gestion de plusieurs profils Bluetooth et la coexistence sans fil dans la bande de fréquences 2,4 GHz.
- Mécanisme d'informations de débogage du contrôleur: lorsqu'il est activé, le contrôleur peut signaler de manière autonome des informations de journalisation de débogage à l'hôte via le sous-événement d'informations de débogage du contrôleur.
- Audio saccadé LE: lorsque le contrôleur détecte des facteurs qui provoquent un son saccadé, il signale un événement Audio saccadé LE à l'hôte.
-
Mode "Statistiques RF avancées" : le contrôleur transmet à l'hôte les informations liées à ses statistiques RF, ce qui permet deux cas d'utilisation des rapports :
- Rapports périodiques
- Déclencheurs d'événements (début/arrêt du flux et déclencheur d'événement de qualité de 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 ponctuelle pour le mode de surveillance de la qualité, le mode de surveillance de l'énergie ou un mode d'avance des statistiques RF.
OCF: 0x15E
Paramètre de commande | Taille | Objectif |
---|---|---|
BQR_Report_Action |
1 octet |
Action à effectuer pour ajouter / supprimer le reporting des événements de qualité définis dans le paramètre BQR_Quality_Event_Mask ou pour tout effacer.
0x00 : ajout
La suppression effacera les rapports sur un ou plusieurs événements de qualité spécifiques. |
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 pour les rapports sur les événements de qualité pour le ou les événements de qualité sélectionnés. Le micrologiciel du contrôleur ne doit pas signaler le prochain événement dans l'intervalle de temps défini. Le paramètre d'intervalle doit être respectueux et dédié au ou 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és. 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 de BQR_Minimum_Report_Interval . Lorsque cette valeur est supérieure ou égale à 1, l'intervalle de rapport BQR suit le format . Intervalle de rapport BQR = BQR_Minimum_Report_Interval x Report_interval_multiple. Le micrologiciel du contrôleur ne doit pas signaler le prochain événement dans l'intervalle de temps défini. Le paramètre d'intervalle est spécifiquement dédié au ou aux événements de qualité ajoutés.
Unité: ms BQR_Report_Interval est supérieur aux capacités du contrôleur, le contrôleur doit renvoyer la durée BQR_Report_Interval maximale à la fin de la commande.
|
Un événement "Commande terminée" sera généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
Current_Quality_Event_Mask |
4 octets |
Indique le paramètre de masque de bits actuel. Bit 0: le mode de surveillance de la qualité est activé. Bit 1: Le rapport sur les événements d'approche de l'événement LSTO est activé. Bit 2: Le rapport sur les événements de l'audio haché A2DP est activé. Bit 3 : les rapports sur les événements de voix saccadée (e)SCO sont activés. Bit 4: Le rapport sur les événements d'inflammation des racines est activé. Bit 5: Le mode de surveillance de l'énergie est activé. Bit 6: les rapports sur les événements audio LE Audio hachés sont activés. Bit 7: Événement d'échec de la connexion. Bit 8: défini pour activer le déclencheur d'événements du mode Statistiques RF avancées. Bit 9: défini pour activer le rapport périodique sur les statistiques RF avancées. B bits 10 à 14: réservés. Bit 15: les rapports sur les événements de qualité spécifiques au fournisseur sont activés. Bit 16: la trace des messages LMP/LL est activée. Bit 17: la trace de planification multipoint/Coex Bluetooth est activée. Bit 18: Le mécanisme d'informations de débogage du contrôleur est activé. B bits 19 à 30: réservés. Bit 31: la trace spécifique au fournisseur est activée. |
Current_Vendor_Specific_Quality_Event_Mask |
4 octets | Indique le paramètre de masque de bits actuel. |
Current_Vendor_Specific_Trace_Mask |
4 octets | Indique le paramètre de masque de bits actuel. |
BQR_Report_interval |
4 octets | Indique le paramètre de masque de bits actuel. |
Current_Vendor_Specific_Trace_Mask |
4 octets |
Paramètre de BQR_Report_interval . Il doit s'agir de la valeur minimale entre BQR_Minimum_Report_Interval * Report_interval_multiple ou l'intervalle de prise en charge maximal du contrôleur. |
Commande de tampon audio dynamique
Le tampon audio dynamique réduit les glitchs audio en modifiant la taille du tampon audio dans le contrôleur Bluetooth en fonction de différents scénarios.
OCF: 0x15F
Obtenir la fonctionnalité de durée du tampon audio
Sub OCF: 0x01
Utilisez cette commande pour obtenir la fonctionnalité de temps de tampon audio de la manette Bluetooth.
Paramètre de commande | Taille | Objectif |
---|---|---|
N/A | Liste de paramètres de commande vide |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
Dynamic_Audio_Buffer_opcode |
1 octet | 0x01 : obtenir la durée de la mémoire tampon audio |
Audio_Codec_Type_Supported |
4 octets |
Masques de bits pour les types de codecs compatibles Bit 0 : SBC Bit 1 : AAC Bit 2 : APTX Bit 3 : APTX HD Bit 4 : LDAC Les bits 5 à 31 sont réservés |
Audio_Codec_Buffer_Default_Time_For_Bit_0 |
2 octets |
Durée de tampon par défaut du type de codec de bit 0 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être 0 si le type de codec du 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 de bit 0 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être égale à 0 si le type de codec du bit 0 n'est pas pris en charge. Unité: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 |
2 octets |
Durée de tampon minimale du type de codec de bit 0 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être 0 si le type de codec du bit 0 n'est pas compatible. Unité: ms |
Audio_Codec_Buffer_Default_Time_For_Bit_1 |
2 octets |
Durée de tampon par défaut du type de codec de bit 1 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être 0 si le type de codec de 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 de bit 1 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être 0 si le type de codec de bit 1 n'est pas compatible. Unité: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 |
2 octets |
Durée de tampon minimale du type de codec de bit 1 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être 0 si le type de codec de bit 1 n'est pas compatible. Unité: ms |
...... | ...... | ...... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 |
2 octets |
Durée de tampon par défaut du type de codec de bit 31 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être égale à 0 si le type de codec du 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 de bit 31 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être égale à 0 si le type de codec du bit 31 n'est pas compatible. Unité: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 |
2 octets |
Durée de tampon minimale du type de codec de bit 31 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être égale à 0 si le type de codec du bit 31 n'est pas compatible. Unité: ms |
Définir la durée du tampon audio
Sous-OCF: 0x02
Utilisez cette commande pour définir la durée de la mémoire tampon audio sur la manette Bluetooth.
Paramètre de commande | Taille | Objectif |
---|---|---|
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" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
Dynamic_Audio_Buffer_opcode |
1 octet | 0x02 : définir la durée de la mémoire tampon audio |
Audio_Codec_Buffer_Time |
2 octets |
Durée de la mémoire tampon audio actuelle dans la manette Bluetooth. Unité: ms |
Événement HCI (spécifique au fournisseur)
Dans certains cas, des événements HCI spécifiques au fournisseur sont requis. Reportez-vous à la figure 5.4 à la page 1897 de la spécification BT Core 5.2. Le paramètre d'événement 0 contient toujours le premier code de sous-événement, sur la base duquel le reste de l'événement HCI est décodé.
Paramètre d'événement | Taille | Objectif |
---|---|---|
HCI_vendor_specific_event_code |
1 octet | 0xFF |
sub_event_code |
1 octet | Un code d'événement secondaire a une taille de 1 octet, l'octet immédiatement suivant la longueur de paramètre dans le paquet d'événement HCI. |
Sous-événement de dépassement du seuil de stockage
Cet événement indique que le seuil de stockage a été dépassé.
Code de sous-événement = 0x54
Paramètre de sous-événement | Taille | Objectif |
---|---|---|
Aucune |
Sous-événement de changement d'état de la multipublicité LE
Cet événement indique qu'une instance publicitaire a changé d'é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 de sous-événement = 0x55
Paramètre de sous-événement | Taille | Objectif |
---|---|---|
Advertising_instance |
1 octet |
Identifie l'instance publicitaire spécifique Les valeurs valides sont comprises entre 0 et max_advt_instances -1.
|
State_Change_Reason |
1 octet | 0x00: connexion reçue |
Connection_handle |
2 octets |
Identifie la connexion à l'origine de la désactivation de l'instance advt (0xFFFF si non valide)
|
Sous-événement de suivi des annonces LE
Cet événement indique quand un annonceur est trouvé ou perdu.
Code d'événement secondaire = 0x56
Paramètre de sous-événement | Taille | Objectif |
---|---|---|
APCF_Filter_Index |
1 octet | Indice de filtre (0, max_filter -1) |
Advertiser_State |
1 octet |
0x00: Annonceur trouvé 0x01: Annonceur perdu |
Advt_Info_Present |
1 octet |
0x00: Informations sur l'annonceur (Advt_Info ) présentes0x01: Informations sur l'annonceur ( Advt_Info ) non présentes
|
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 d'informations de débogage de la manette
Cet événement est utilisé par un contrôleur pour fournir des informations de débogage binaires à un hôte.
Code de sous-événement = 0x57
Paramètre de sous-événement | Taille | Objectif |
---|---|---|
debug_block_byte_offset_start |
2 octets | Décalage d'octet du bloc de débogage à partir du début |
last_block |
1 octet |
0x00: Données de débogage supplémentaires 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 en cours |
Debug_Data |
Variable | Données de débogage de cur_payload_sz |
Sous-événement "Rapport sur la qualité du 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 de message LMP/LL et la trace de planification multi-liaison/Coex Bluetooth, ou le contrôleur a vidé les données d'informations de débogage.
Code de sous-événement = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, événement lié à la qualité de la liaison]
Paramètre de sous-événement | Taille | Objectif |
---|---|---|
Quality_Report_Id |
1 octet |
0x01: création de rapports sur la qualité dans le mode de surveillance. 0x02: LSTO approchant. 0x03: Audio A2DP saccadé. 0x04 : voix (e)SCO saccadée. 0x05 à 0x06: réservé. 0x07: audio LE saccadée. 0x08: Échec de la connexion. 0x09 à 0xFF: réservé. |
Packet_Types |
1 octet |
0x01: ID 0x02: NULL 0x03: POLL 0x04: FHS 0x05: HV1 0x06: HV2 0x07: HV3 0x08: DV 0x09: EV3 0x0A: EV4 0x0B: EV5 0x0C: 2-EV3 0x0D: 2-EV5 0x0E: 3-EV3 0x0F: 3-EV5 0x11: DH1 0x12: DM3 0x13: DH3 0x14: DM5 0x15: DH5 0x16: AUX1 0x17: 2-DH1 0x18: 2-DH3 0x19: 2-DH5 0x1A: 3-DH1 0x1B: 3-DH3 0x1C: 3-DH5 0x1D à 0x50: Réservé 0x51: paquet ISO 0x52 à 0xFF: Réservé |
Connection_Handle |
2 octets | Gestionnaire de connexion ACL/(e)SCO/ISO. |
Connection_Role |
1 octet |
Rôle de l'utilisateur effectuant la connexion. 0x00: Central 0x01: Périphérique 0x02 à 0xFF: Réservé. |
TX_Power_Level |
1 octet |
Niveau de puissance d'émission actuel pour le paramètre Connection_Handle spécifié.
Cette valeur doit être identique à celle du contrôleur qui répond à la commande HCI_Read_Transmit_Power_Level. |
RSSI |
1 octet |
[en dBm]
Valeur de l'indicateur d'intensité du signal reçu (RSSI) pour le paramètre Connection_Handle spécifié. |
SNR |
1 octet |
[en dB]
Valeur du rapport signal/bruit (SNR) pour le paramètre Connection_Handle spécifié. |
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 qui sont sujets à des interférences et de mauvaise qualité, mais qui sont tout de même sélectionnés pour l'AFH. Le nombre minimal de canaux autorisés par la spécification Bluetooth est de 20. Par conséquent, même si les 79 canaux sont soumis à des interférences et présentent une mauvaise qualité, le contrôleur doit toujours choisir au moins 20 canaux pour l'AFH. |
LSTO |
2 octets |
Paramètre actuel du délai avant expiration de la supervision des liens. Durée = N * 0,625 ms Plage de durée: 0,625 ms à 40,9 s |
Connection_Piconet_Clock |
4 octets |
Horloge du picoréseau pour le Connection_Handle spécifié. Cette valeur doit être identique à celle du contrôleur qui répond à la commande HCI_Read_Clock avec le paramètre "Which_Clock" de 0x01 (horloge Piconet). Unité: N * 0,3125 ms (1 horloge Bluetooth) |
Retransmission_Count |
4 octets |
Nombre de retransmissions depuis le dernier événement. Ce nombre doit être réinitialisé après avoir été signalé à l'hôte. |
No_RX_Count |
4 octets |
Aucun nombre de réceptions depuis le dernier événement. Le nombre augmente lorsqu'aucun paquet n'est reçu à l'heure prévue ou que le paquet reçu est corrompu. Ce nombre doit être réinitialisé après avoir été signalé à l'hôte. |
NAK_Count |
4 octets |
Nombre de NAK (Negative Acknowledge) depuis le dernier événement. Ce nombre doit être réinitialisé après avoir été signalé à l'hôte. |
Last_TX_ACK_Timestamp |
4 octets |
Code temporel du dernier accusé de réception de transmission. Il est basé sur l'horloge Bluetooth du piconet central (CLK). Unité: N * 0,3125 ms (1 horloge Bluetooth) |
Flow_Off_Count |
4 octets |
Nombre de fois où le contrôleur reçoit un signal de fin de flux (STOP) depuis le dernier événement. Ce nombre doit être réinitialisé après avoir été signalé à l'hôte. |
Last_Flow_On_Timestamp |
4 octets |
Code temporel du dernier transfert (GO). Il est basé sur l'horloge Bluetooth du piconet central (CLK). Unité: N * 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 sous-dépassements de la 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 qui ne reçoivent pas de confirmation. Ce nombre est réinitialisé après avoir été signalé à l'hôte. |
TX_Flushed_Packets |
4 octets |
Nombre de paquets qui ne sont pas envoyés par le point de vidage. Ce nombre est réinitialisé après avoir été signalé à l'hôte. |
TX_Last_Subevent_Packets |
4 octets |
Nombre de paquets que la couche de liaison de données transmet un PDU de données CIS dans le dernier sous-événement d'un événement CIS. Ce nombre est réinitialisé après avoir été signalé à l'hôte. La valeur est nulle si aucune valeur valide n'est définie pour le lien. |
CRC_Error_Packets |
4 octets |
Nombre de paquets reçus avec erreur CRC depuis le dernier événement. Ce nombre est réinitialisé après avoir été signalé à l'hôte. |
RX_Duplicate_Packets |
4 octets |
Nombre de paquets en double (réémission) reçus depuis le dernier événement. Ce nombre est réinitialisé après avoir été signalé à 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 de base Bluetooth). 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 à 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éfini pour indiquer que des activités de coex sont suspectées d'être impliquées lorsque ce rapport est généré (par exemple, coupures A2DP et approche de LSTO). Bit 1 : WL 2G Radio Active (Radio WLAN 2G active) : défini pour indiquer que la radio WLAN 2G est active. Bit 2 : WL 2G Connected (Connecté au réseau 2G WLAN) : défini pour indiquer que la radio WLAN 2G est active et connectée. Bit 3 : WL 5G/6G Radio Active (Radio 5G/6G WLAN active) : défini pour indiquer que la radio 5G/6G WLAN est active. Bit 4 à 15 : réservé |
Paramètre spécifique au fournisseur | (longueur totale du paramètre - à définir) * octets | Pour que le fournisseur du contrôleur obtienne d'autres paramètres spécifiques au fournisseur. |
Code de sous-événement = 0x58 [Quality_Report_Id = 0x05, événement d'inflammation des racines]
Cet événement indique que le HAL Bluetooth ou le contrôleur a rencontré une erreur fatale et que la pile Bluetooth doit enregistrer cette situation et redémarrer. Le contrôleur doit envoyer un Root_Inflammation_Event à la pile Bluetooth avant d'envoyer le premier fragment des événements d'informations de débogage.
Le paramètre Error_Code contient un code d'erreur signalé par le HAL/contrôleur, 0 s'il s'agit d'une erreur spécifique au fournisseur de chipset. Le Vendor_Specific_Error_Code contient un code d'erreur spécifique au fournisseur de chipset à partir de 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 tous les deux être définis sur 0.
Paramètre de sous-événement | Taille | Objectif |
---|---|---|
Quality_Report_Id |
1 octet |
0x00 à 0x04: réservé. 0x05: inflammation de la racine. 0x06 à 0xFF: réservé. |
Error_Code |
1 octet |
0x00: code d'erreur spécifique au fournisseur du chipset inclus. 0x01 à 0xFF: une erreur de contrôleur s'est produite. Pour obtenir la liste des codes d'erreur et leur description, consultez la section D de la spécification Bluetooth [Vol. 2] intitulée "Codes d'erreur". |
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 obtienne d'autres paramètres spécifiques au fournisseur. |
Code de sous-événement = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, événement lié au vidage de journal]
Paramètre de sous-événement | Taille | Objectif |
---|---|---|
Quality_Report_Id |
1 octet |
0x00 à 0x10: réservé. 0x11: trace de message LMP/LL. 0x12: Trace de planification multi-liaison/Coex Bluetooth. 0x13: vidage de données d'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 la trace de message LMP, de la trace de planification Bluetooth Multi-link/Coex et du vidage de données d'informations de débogage du contrôleur. |
Compatibilité avec plusieurs annonceurs
Les objectifs de la prise en charge multi-annonceur sont les suivants:
-
Possibilité d'accepter plusieurs annonces (
max_advt_instances
) - Différentes puissances d'émission pour permettre une portée variable
- Contenu publicitaire différent
- Une réponse personnalisée pour chaque annonceur
- Confidentialité (non traçable) pour chaque annonceur
- Connectable
Pour que cette spécification reste proche des normes existantes, les commandes spécifiques au fournisseur suivantes sont fournies. Ils sont dérivés de la spécification Bluetooth Core 4.1.
LE_Multi_Advt_Command
OCF: 0x154
Paramètre de commande | Taille | Objectif |
---|---|---|
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" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
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
Référence de base: Spécification Bluetooth Core 4.1, page 964 (commande LE Set Advertising Parameter)
Sub OCF: 0x01
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
Advertising_Interval_Min |
Selon les spécifications | Selon les spécifications |
Advertising_Interval_Max |
Selon les spécifications | Selon les spécifications |
Advertising_Type |
Selon les spécifications | Selon les spécifications |
Own_Address_Type |
Selon les spécifications | Selon les spécifications |
Own_Address |
Selon les spécifications | Selon les spécifications |
Direct_Address_Type |
Selon les spécifications | Selon les spécifications |
Direct_Address |
Selon les spécifications | Selon les spécifications |
Advertising_Channel_Map |
Selon les spécifications | Selon les spécifications |
Adverstising_Filter_Policy |
Selon les spécifications | Selon les spécifications |
Advertising_Instance |
1 octet | Indique 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 multi-annonce. Cela permet d'avoir une adresse privée résoluble au moment de la transmission du premier balise. La diffusion d'annonces sur une instance se poursuit, quelle que soit la connexion. La pile BT hôte peut émettre une commande pour démarrer la publicité sur une instance après la connexion.
Un événement "Command Complete" (Commande terminée) sera généré pour cette commande, comme spécifié dans la spécification Bluetooth Core 4.1, conformément à la commande ci-dessus. Le contrôleur répond 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 de retour | Taille | Objectif |
---|---|---|
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
Référence de base: Spécification Bluetooth Core 4.1, page 969 (commande LE Set Advertising Data)
Sub OCF: 0x02
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
Advertising_Data_Length |
Selon les spécifications | Selon les spécifications |
Advertising_Data |
Selon les spécifications | Selon les spécifications |
Advertising_Instance |
1 octet | Indique l'applicabilité des paramètres ci-dessus à une instance |
Un événement "Command Complete" (Commande terminée) sera généré pour cette commande, comme spécifié dans la spécification Bluetooth Core 4.1, conformément à la commande ci-dessus. Le contrôleur répond avec un code d'échec si l'instance publicitaire ou les paramètres Tx_Power
ne sont pas valides.
Paramètre de retour | Taille | Objectif |
---|---|---|
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
Référence de base: Spécification Bluetooth Core 4.1, page 970 (commande de données de réponse à l'analyse LE)
Sub OCF: 0x03
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
Scan_Response_Data_Length |
Selon les spécifications | Selon les spécifications |
Scan_Response_Data |
Selon les spécifications | Selon les spécifications |
Advertising_Instance |
1 octet | Indique l'applicabilité des paramètres ci-dessus à une instance |
Un événement "Command Complete" (Commande terminée) sera généré pour cette commande, comme spécifié dans la spécification Bluetooth Core 4.1, conformément à la commande ci-dessus. Le contrôleur répond 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 de retour | Taille | Objectif |
---|---|---|
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
Référence de base: Spécification Bluetooth Core 4.1, page 963 (commande LE Set Random Address)
Sous OCF: 0x04
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
Adresse aléatoire | Selon les spécifications | Selon les spécifications |
Advertising_Instance |
1 octet | Indique l'applicabilité des paramètres ci-dessus à une instance |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
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 la diffusion LE dans cette spécification de base)
OCF: 0x05
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
Advertising_Enable |
1 octet | Une valeur de 1 signifie "Activer". Toute autre valeur signifie "Désactiver". |
Advertising_Instance |
1 octet | Indique l'applicabilité des paramètres ci-dessus à une instance. L'instance 0 correspond à une instance HCI standard. |
Un événement "Commande terminée" sera généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
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 hors charge
Cette fonctionnalité résout une adresse privée dans le micrologiciel ou le matériel du contrôleur, ce qui offre les avantages suivants:
- Latence associée à l'hôte lors de la résolution d'une adresse privée
- Économiser de l'énergie en évitant de réveiller l'hôte
LE_Set_RPA_Timeout
OCF: 0x15C
Paramètre de commande | Taille | Objectif |
---|---|---|
LE_local_IRK |
16 octets | IRK de l'appareil local utilisé pour générer l'adresse ou les adresses résolvables aléatoires. |
tRPA_min |
2 octets |
Délai avant expiration minimal de la génération d'une RPA (en secondes). Le contrôleur doit générer de nouvelles adresses résolvables pour tous les événements de publicité/numérisation/connexion à partir de ce délai avant expiration. Plage valide: 300 à 1 800 |
tRPA_max |
2 octets |
Délai avant expiration maximal de la génération d'une RPA, en secondes. Le contrôleur doit générer de nouvelles adresses résolvables pour tous les événements de publicité/analyse/connexion avant ou à la date d'expiration. Plage valide: tRPA_min -1800
|
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet |
État de la commande. Valeurs d'état HCI suggérées: 0x00 Succès 0x01 Commande inconnue (si non prise en charge) 0x12 Paramètres de commande non valides (si certains paramètres sont en dehors de la plage donnée) |
LE_RPA_offload_Command
OCF: 0x155
Paramètre de commande | Taille | Objectif |
---|---|---|
RPA_offload_opcode |
1 octet |
0x1 : Activer la fonctionnalité spécifique au client 0x2 : Ajouter un numéro IRK à la liste 0x3 : Supprimer un numéro IRK de la liste 0x4 : Effacer la liste des numéros IRK 0x5 : Lire l'entrée de la liste des numéros IRK |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
Event_RPA_offload_opcode |
1 octet |
0x1 : Activer la fonctionnalité spécifique au client 0x2 : Ajouter un numéro IRK à la liste 0x3 : Supprimer un numéro IRK de la liste 0x4 : Effacer la liste des numéros IRK 0x5 : Lire l'entrée de la liste des numéros IRK |
LE_RPA_offload: Enable_cust_specific_sub_Command
Sub OCF: 0x01
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
enable_customer_specific_feature_set |
1 octet |
0x01 : activez la fonctionnalité d'RPA externalisée 0x00 : désactivez la fonctionnalité d'RPA externalisée |
Le déchargement RPA doit être activé par l'hôte, en fonction des fonctionnalité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" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
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
Sous-OCF: 0x02
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
LE_IRK |
16 octets | IRK LE (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, LSByte) |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
Event_cust_specific_feature_opcode |
1 octet | 0x02 [Ajouter l'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: Remove_IRK_to_list_sub_Command
Sub OCF: 0x03
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
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" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
Event_cust_specific_feature_opcode |
1 octet | 0x03 [Supprimer l'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
Sous OCF: 0x04
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
Aucune |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
Status |
1 octet | État de la commande terminée |
Event_cust_specific_feature_opcode |
1 octet | 0x04 [Effacer la liste des IRK] |
LE_IrkList_AvailableSpaces |
1 octet |
Entrées de la liste IRL disponibles après l'opération en cours [max_irk_list_sz]
|
LE_RPA_offload: Read_IRK_list_sub_Command
OCF secondaire: 0x05
Paramètre de sous-commande | Taille | Objectif |
---|---|---|
LE_read_IRK_list_entry-index |
1 octet | Indice de la liste IRK [0, max_irk_list_sz-1] |
Un événement "Commande terminée" est généré pour cette commande.
Paramètre de retour | Taille | Objectif |
---|---|---|
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 | Indice de l'IRK que l'hôte souhaite lire (la taille maximale de la liste d'IRK est de 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 actuelle pouvant être résolue de cet IRK |