L'interface du contrôleur hôte (HCI) est utilisée pour interagir avec un contrôleur Bluetooth.
Ce document fournit une liste des exigences HCI Bluetooth (BT) et Bluetooth Low Energy (BLE). L'objectif est que les fournisseurs de piles hôtes BT et les fournisseurs de contrôleurs BT se conforment à ces exigences de plate-forme afin d'utiliser l'ensemble des fonctionnalités décrites ci-dessous.
Ce document fait référence à la spécification Bluetooth Core 5.2 sous le nom de « 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 générale de la conception
Capacités et configuration de la puce
En tant que plate-forme ouverte, Android dispose d'une matrice de versions logicielles, d'OEM, de fournisseurs, ainsi que de capacités de plate-forme et de puces.
Pour gérer les différents paysages et gérer les migrations, une philosophie de conception permettant aux contrôleurs BT d'exposer leurs capacité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 capacités pour déterminer les fonctionnalités à activer.
Prise en charge des normes ouvertes
L'un des objectifs d'Android est de prendre en charge les normes ouvertes après ratification d'une spécification Bluetooth. Si une fonctionnalité décrite ci-dessous devient disponible dans les méthodes HCI standard dans une future spécification Bluetooth, nous tendrons à faire de cette approche la valeur par défaut.
Capacités spécifiques au fournisseur
Commande spécifique au fournisseur : LE_Get_Vendor_Capabilities_Command
Champ de commande OpCode (OCF) : 0x153
Paramètre de commande | Taille | But |
---|---|---|
N / A | Liste de paramètres de commande vide |
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | État de la commande terminée |
max_advt_instances (Obsolète) | 1 octet | Nombre d'instances de publicité prises en charge. Réservé après la v0.98. Ce paramètre est obsolète dans la spécification de fonctionnalité Google v0.98 et supérieure en faveur de LE Extended Advertising disponible dans la version 5.0 et supérieure de la spécification BT. |
offloaded_resolution_of_private-address (Obsolète) | 1 octet | Capacité de la puce BT du RPA. S'il est pris en charge par une puce, il doit être activé par l'hôte. 0 = Pas capable 1 = Capable Réservé après la v0.98. Ce paramètre est obsolète dans la spécification de fonctionnalité Google v0.98 et supérieure au profit de la fonctionnalité de confidentialité disponible dans la version 4.2 et supérieure de la spécification BT. |
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 firmware |
filtering_support | 1 octet | Prise en charge du filtrage dans le contrôleur 0 = Non pris en charge 1 = Pris en charge |
max_filter | 1 octet | Nombre de filtres pris en charge |
activity_energy_info_support | 1 octet | Prend en charge le reporting des informations d'activité et d'énergie 0 = Pas capable 1 = Capable |
version_supported | 2 octets | Spécifie la version de la spécification de fonctionnalité Google prise en charge octet[0] = nombre majeur octet[1] = nombre 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 | Prend en charge la fenêtre et l'intervalle d'analyse étendus |
debug_logging_supported | 1 octet | Prend en charge la journalisation des informations de débogage binaire du contrôleur |
LE_address_generation_offloading_support (Obsolète) | 1 octet | 0 = Non pris en charge 1 = Pris en charge Réservé après la v0.98. Ce paramètre est obsolète dans la spécification de fonctionnalité Google v0.98 et supérieure au profit de la fonctionnalité de confidentialité disponible dans la version 4.2 et supérieure de la spécification BT. |
A2DP_source_offload_capability_mask | 4 octets | Masques de bits pour les types de codecs pris en charge 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 | Prend en charge le reporting des événements de qualité Bluetooth 0 = Pas capable 1 = Capable |
dynamic_audio_buffer_support | 4 octets | Prend en charge le tampon audio dynamique dans le contrôleur Bluetooth Masques de bits pour les types de codecs pris en charge 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 | Prend en charge les commandes A2dp Offload v2 dans le contrôleur Bluetooth (voir Démarrer le déchargement A2DP , Arrêter le déchargement A2DP ) 0 = Non pris en charge 1 = Pris en charge |
Regroupement 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 dans l'hôte.
En réduisant la fréquence à laquelle le contrôleur demande au processeur d'application hôte d'analyser les résultats, le processeur d'application hôte 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 l'installation de stockage des résultats du scan LE dans le contrôleur Bluetooth. Le stockage est utilisé pour regrouper temporairement les données publicitaires et analyser les données et métadonnées reçues par le contrôleur pour une livraison ultérieure à l'hôte.
Le micrologiciel doit prendre en charge deux types de traitement par lots, qui peuvent être engagés simultanément :
- Tronqué. Contient les éléments d'information suivants : {MAC, TX Power, RSSI, Timestamp}
- Complet. 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 | But |
---|---|---|
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 lots 0x3 - Définir les paramètres d'analyse par lots 0x4 - Lire les paramètres du résultat de l'analyse par lots |
Un événement Command Complete sera 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 | But |
---|---|---|
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 lots 0x3 - Définir les paramètres d'analyse par lots 0x4 - Lire les paramètres du résultat de l'analyse par lots |
LE_Batch_Scan_Command : activer la fonctionnalité spécifique au client
Sous-OCF : 0x01
Paramètre de sous-commande | Taille | But |
---|---|---|
enable_customer_specific_feature_set | 1 octet | 0x01 - Activer la fonction d'analyse par lots 0x00 - Désactiver la fonction d'analyse par lots |
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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 lots 0x3 - Définir les paramètres d'analyse par lots 0x4 - Lire les paramètres du résultat de l'analyse par lots |
LE_Batch_Scan_Command : sous-commande Définir le paramètre de stockage d'analyse par lots
Sous-OCF : 0x02
Paramètre de sous-commande | Taille | But |
---|---|---|
Batch_Scan_Full_Max | 1 octet | Espace de stockage maximum (en %) alloué au style complet [Plage : 0-100] |
Batch_Scan_Truncated_Max | 1 octet | Espace de stockage maximum (en %) alloué au style tronqué [Plage : 0-100] |
Batch_Scan_Notify_Threshold | 1 octet | Niveau de notification de configuration (en %) pour un pool de stockage individuel [Plage : 0-100] Le réglage sur 0 désactivera 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 Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | État de la commande terminée |
Batch_scan_opcode | 1 octet | 0x02 [Définir les paramètres d'analyse par lots] |
LE_Batch_Scan_Command : sous-commande Définir le paramètre d'analyse par lots
Sous-OCF : 0x03
Paramètre de sous-commande | Taille | But |
---|---|---|
Batch_Scan_Mode | 1 octet | 0x00 – L'analyse par lots 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 lots (nombre d'emplacement) |
Duty_cyle_scan_interval | 4 octets | Période d'intervalle d'analyse par lots (nombre d'emplacement) |
own_address_type | 1 octet | 0x00 - Adresse publique de l'appareil 0x01 - Adresse de périphérique aléatoire |
Batch_scan_Discard_Rule | 1 octet | 0 - Supprimer la publicité la plus ancienne 1 - Supprimer la publicité avec le RSSI le plus faible |
Cette sous-commande lancera l'analyse par lots, si elle est activée. Dans l'analyse tronquée, les résultats sont stockés sous une forme tronquée où la clé unique pour le style tronqué = { BD_ADDR,
scan_interval}. Cela signifie qu'un seul BD_ADDR will
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 sera utilisée et les réponses à l'analyse seront enregistrées. La 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}. Dans le style Full, le même paquet AD, lorsqu'il est vu plusieurs fois sur différents intervalles d'analyse, n'est enregistré qu'une seule fois. Cependant, 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 est la valeur moyenne de tous les doublons d'une publicité unique au cours d'un intervalle d'analyse.
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | État de la commande terminée |
Batch_scan_opcode | 1 octet | 0x03 [Définir les paramètres d'analyse par lots] |
LE_Batch_Scan_Command : sous-commande Lire les résultats de l'analyse par lots
Sous-OCF : 0x04
Paramètre de sous-commande | Taille | But |
---|---|---|
Batch_Scan_Data_read | 1 octet | 0x01 – Données en mode tronqué 0x02 – Données en mode complet |
Un événement Command Complete sera généré pour cette commande. Lorsque l'hôte émet cette commande, tous les résultats du contrôleur peuvent ne pas tenir dans un seul événement Command Complete. L'hôte répétera l'émission de cette commande jusqu'à ce que les résultats correspondants dans l'événement Command Complete 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 Command Complete peut contenir plusieurs enregistrements d’un seul type de données (complètes ou tronquées).
Les références temporelles du contrôleur et de l’hôte ne sont pas synchronisées. L'unité de l'horodatage est de 50 ms. La valeur de l'horodatage est basée sur le moment où Read_Batch_Scan_Results_Sub_cmd
est donné par l'hôte. Si l'heure d'arrivée d'une commande est T_c
dans le micrologiciel, alors l'heure réelle à laquelle l'horodatage a été pris dans le micrologiciel est T_fw
. L'heure du rapport sera : ( T_c
- T_fw
). T_c
et T_fw
sont 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 | But |
---|---|---|
Status | 1 octet | État de la commande terminée |
Batch_scan_opcode | 1 octet | 0x03 [Définir les paramètres d'analyse par lots] |
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 | Mode tronqué : Adresse[0] : 6 octets Address_Type[0] : 1 octet Tx_Pwr[0] : 1 octet RSSI[0] : 1 octet Horodatage[0] : 2 octets [plusieurs enregistrements ( num_of_records ) avec le format ci-dessus]Mode complet : Adresse[0] : 6 octets Address_Type[0] : 1 octet Tx_Pwr[0] : 1 octet RSSI[0] : 1 octet Horodatage[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] : octets Scan_data_resp [plusieurs enregistrements avec le format ci-dessus ( num_of_records )] |
Filtre de contenu de paquet publicitaire
Utilisez-le pour activer/désactiver/configurer le filtre de contenu de paquets publicitaires (APCF) dans le contrôleur. APCF filtre les rapports publicitaires dans le contrôleur mais ne filtre pas les publicités périodiques.
LE_APCF_Command
OCF : 0x157
Paramètre de commande | Taille | But |
---|---|---|
APCF_opcode | 1 octet | 0x00 - APCF activé 0x01 - APCF Définir les paramètres de filtrage 0x02 - Adresse du diffuseur APCF 0x03 - UUID du service APCF 0x04 - UUID de sollicitation de service APCF 0x05 - Nom local APCF 0x06 - Données du fabricant APCF 0x07 - Données de service APCF 0x08 - Service de découverte de transport APCF 0x09 - Filtre de type AD APCF 0x10 ~ 0xAF - Réservé pour une utilisation future 0xB0 ~ 0xDF - Réservé au fournisseur 0xE0 ~ 0xFE - Réservé pour une utilisation future 0xFF - Fonctionnalités étendues de lecture APCF |
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Statut de retour |
APCF_opcode | 1 octet | 0x00 - APCF activé 0x01 - APCF Définir les paramètres de filtrage 0x02 - Adresse du diffuseur APCF 0x03 - UUID du service APCF 0x04 - UUID de sollicitation de service APCF 0x05 - Nom local APCF 0x06 - Données du fabricant APCF 0x07 - Données de service APCF 0x08 - Service de découverte de transport APCF 0x09 - Filtre de type AD APCF 0x10 ~ 0xAF - Réservé pour une utilisation future 0xB0 ~ 0xDF - Réservé au fournisseur 0xE0 ~ 0xFE - Réservé pour une utilisation future 0xFF - Fonctionnalités étendues de lecture APCF |
LE_APCF_Command : Enable_sub_cmd
Sous-OCF : 0x00
Paramètre de sous-commande | Taille | But |
---|---|---|
APCF_enable | 1 octet | 0x01 - Activer la fonctionnalité APCF 0x00 - Désactiver la fonctionnalité APCF |
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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 est utilisée pour ajouter ou supprimer une spécification de filtre ou effacer une liste de filtres pour le filtrage sur puce.
Sous-OCF : 0x01
Paramètre de sous-commande | Taille | But |
---|---|---|
APCF_Action | 1 octet | 0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer Supprimer effacera le filtre spécifique ainsi que les entrées de fonctionnalités associées dans d’autres tableaux. Effacer effacera tous les filtres et entrées associées dans d’autres tables. |
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 du service Bit 3 : défini pour activer la vérification de l'UUID de la 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 AD |
APCF_List_Logic_Type | 2 octets | Opération logique pour chaque sélection de fonctionnalité (position par bit) spécifiée dans APCF_Feature_Selection .Valable uniquement lorsqu'une fonctionnalité est activée. Valeur de position du bit : 0 : OU 1 : ET Si la logique « ET » est sélectionnée, un paquet ADV passera le filtre uniquement s'il contient TOUTES les entrées de la liste. Si la logique « OU » est sélectionnée, un paquet ADV passera 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 logique est N/A pour les trois premiers champs de APCF_Feature_Selection , qui est toujours une logique « ET ». Ils ne sont applicables que pour (Bit 3 - Bit 6) quatre champs de APCF_Feature_Selection . |
rssi_high_thresh | 1 octet | [en dBm] L'annonceur est considéré comme vu uniquement si le signal est supérieur au seuil haut RSSI. Sinon, le firmware 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 | Valable uniquement si delivery_mode est on_found .[en millisecondes] Il est temps pour le micrologiciel de s'attarder et de collecter des publicités supplémentaires avant de signaler. |
onfound_timeout_cnt | 1 octet | Valable uniquement si delivery_mode est on_found .[compter] Si une publicité dans onFound persiste dans le micrologiciel pendant la durée onfound_timeout , elle collectera quelques publicités et le décompte sera vérifié. Si le nombre dépasse onfound_timeout_cnt , il est signalé OnFound immédiatement après. |
rssi_low_thresh | 1 octet | Valable uniquement si delivery_mode est on_found .[en dBm] Le paquet annonceur est considéré comme non vu si le RSSI du paquet reçu n'est pas supérieur au seuil bas RSSI. |
onlost_timeout | 2 octets | Valable uniquement si delivery_mode est on_found .[en millisecondes] Si une publicité, après avoir été trouvée, n'est pas vue de manière contiguë pendant la période lost_timeout , elle sera immédiatement signalée comme perdue. |
num_of_tracking_entries | 2 octets | Valable uniquement si delivery_mode est on_found .[compter] 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 doit pouvoir configurer plusieurs filtres avec APCF_Application_Address_type
défini sur 0x02 (pour toutes les adresses de diffuseur) pour gérer diverses combinaisons de filtres.
Le filtrage, le traitement par lots et le reporting sont des concepts interdépendants. Chaque publicité et réponse d’analyse associée devra 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 de livraison sont les suivants : report_immediately
, batch
et onFound
. La valeur OnLost
est liée à OnFound
dans le sens où elle viendra après OnFound
en cas de perte.
Ce flux de traitement décrit le modèle conceptuel :
Lorsqu'une trame de publicité (ou de réponse d'analyse) est reçue, elle est appliquée à tous les filtres dans un ordre sériel. Il est possible qu'une publicité provoque un rapport immédiat basé sur un filtre et un regroupement de ceux-ci en raison d'une action de filtre différente.
Les seuils de niveau RSSI (haut et bas) permettent de contrôler le moment où la trame est visible pour le traitement du filtre, même lorsqu'un paquet valide est reçu par le contrôleur. Dans le cas où le mode de livraison est défini sur immédiat ou par lots, le RSSI d'une trame est pris en compte pour le traitement ultérieur du contrôleur. Différentes applications nécessitent un comportement différent en matière de reporting et de traitement par lots. Cela permet à plusieurs applications d'avoir simultanément des rapports directs et/ou un regroupement des résultats dans le micrologiciel. Un exemple est le cas où une analyse par lots est active à partir d'une application et plus tard, une analyse LE régulière est émise par une autre application. Avant qu'une analyse par lots 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 lots précédent continue. Cependant, en raison de l'analyse régulière, 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 régulière est désactivée, le contrôleur revient à une analyse par lots précédente, si elle existait.
Le mode de livraison OnFound
est basé sur des filtres configurés. Une combinaison qui déclenche la réussite de l'action d'un 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
pour un filtre (si activé) ressemblera à ce qui suit :
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | État de la commande terminée |
APCF_opcode | 1 octet | 0x01 - APCF définit les paramètres de filtrage |
APCF_Action | 1 octet | APCF_Action de la commande Echo Back |
APCF_AvailableSpaces | 1 octet | Nombre d'entrées disponibles dans le tableau des filtres |
LE_APCF_Command : diffusion_adresse_sub_cmd
Cette sous-commande est utilisée pour ajouter ou supprimer une adresse d'annonceur ou pour effacer la liste d'adresses d'annonceur pour le filtrage sur puce.
Sous-OCF : 0x02
Paramètre de sous-commande | Taille | But |
---|---|---|
APCF_Action | 1 octet | 0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer Supprimer supprimera l’adresse du diffuseur spécifiée dans le filtre spécifié. Effacer effacera toutes les adresses de diffuseur 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 sur 6 octets à ajouter ou à supprimer de la liste d'adresses du diffuseur |
APCF_Application_Address_type | 1 octet | 0x00 : Publique 0x01 : aléatoire 0x02 : NA (type d'adresse non applicable) |
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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 Echo Back |
APCF_AvailableSpaces | 1 octet | Nombre d'entrées gratuites encore disponibles dans le tableau Adresse de diffusion |
LE_APCF_Command : service_uuid_sub_cmd
Cette sous-commande est utilisée pour ajouter ou supprimer un UUID de service ou pour effacer une liste d'UUID de service pour le filtrage sur puce.
Sous-OCF : 0x03
Paramètre de sous-commande | Taille | But |
---|---|---|
APCF_Action | 1 octet | 0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer Supprimer supprimera l’adresse UUID du service spécifiée dans le filtre spécifié. Clear effacera tous les UUID de service dans le filtre spécifié. |
APCF_Filter_Index | 1 octet | Indice de filtre (0, max_filter -1) |
APCF_UUID | 2,4,16 octets | L'UUID du service (16 bits, 32 bits ou 128 bits) pour l'ajout ou la suppression de la liste. |
APCF_UUID_MASK | 2,4,16 octets | Le masque UUID du service (16 bits, 32 bits ou 128 bits) à ajouter à la liste. Il doit avoir la même longueur que APCF_UUID. |
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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 Echo Back |
APCF_AvailableSpaces | 1 octet | Nombre d'entrées gratuites encore disponibles dans la table Service UUID |
LE_APCF_Command : sollicitation_uuid_sub_cmd
Cette sous-commande est utilisée pour ajouter ou supprimer un UUID de sollicitation ou pour effacer une liste d'UUID de sollicitation pour le filtrage sur puce.
Sous-OCF : 0x04
Paramètre de sous-commande | Taille | But |
---|---|---|
APCF_Action | 1 octet | 0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer Supprimer supprimera l’adresse UUID de sollicitation dans le filtre spécifié. Clear effacera tous les UUID de sollicitation dans le filtre spécifié. |
APCF_Filter_Index | 1 octet | Indice de filtre (0, max_filter -1) |
APCF_UUID | 2,4,16 octets | L'UUID de sollicitation (16 bits, 32 bits ou 128 bits) à ajouter ou à supprimer de la liste. |
APCF_UUID_MASK | 2,4,16 octets | Le 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 Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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 Echo Back |
APCF_AvailableSpaces | 1 octet | Nombre d'entrées gratuites encore disponibles dans le tableau UUID de sollicitation |
LE_APCF_Command : nom_local_sub_cmd
Cette sous-commande est utilisée pour ajouter ou supprimer une chaîne de nom local ou pour effacer la liste de chaînes de nom local pour le filtrage sur puce.
Sous-OCF : 0x05
Paramètre de sous-commande | Taille | But |
---|---|---|
APCF_Action | 1 octet | 0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer Supprimer supprimera la chaîne de nom local spécifiée dans le filtre spécifié. Clear effacera toutes les chaînes de noms locaux dans le filtre spécifié. |
APCF_Filter_Index | 1 octet | Indice de filtre (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData | Taille variable | Une chaîne de caractères pour le nom local. Remarques:
|
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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 Echo Back |
APCF_AvailableSpaces | 1 octet | Nombre d'entrées gratuites encore disponibles dans la table Nom local |
LE_APCF_Command : manf_data_sub_cmd
Cette sous-commande est utilisée pour ajouter ou supprimer une chaîne de données de fabricant ou pour effacer la liste de chaînes de données de fabricant pour le filtrage sur puce.
Sous-OCF : 0x06
Paramètre de sous-commande | Taille | But |
---|---|---|
APCF_Action | 1 octet | 0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer Supprimer supprimera la chaîne de données du fabricant spécifiée dans le filtre spécifié. Clear effacera 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 | Une chaîne de caractères pour les données du fabricant. Remarques:
|
APCF_ManData_Mask | Taille variable | Le 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 Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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 Echo Back |
APCF_AvailableSpaces | 1 octet | Nombre d'entrées gratuites encore disponibles dans le tableau Données Fabricant |
LE_APCF_Command : service_data_sub_cmd
Cette sous-commande est utilisée pour ajouter ou supprimer une chaîne de données de service ou pour effacer la liste des chaînes de données de service pour le filtrage sur puce.
Sous-OCF : 0x07
Paramètre de sous-commande | Taille | But |
---|---|---|
APCF_Action | 1 octet | 0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer Supprimer supprimera la chaîne de données de service spécifiée dans le filtre spécifié. Clear effacera toutes les chaînes de données de service dans le filtre spécifié. |
APCF_Filter_Index | 1 octet | Indice de filtre (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData | Taille variable | Une chaîne de caractères pour les données de service. Remarques:
|
APCF_LocName_Mandata_or_SerData_Mask | Taille variable | Le 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 Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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 Echo Back |
APCF_AvailableSpaces | 1 octet | Nombre d'entrées gratuites encore disponibles pour le tableau Données de service |
LE_APCF_Command : ad_type_sub_cmd
Cette sous-commande est utilisée pour ajouter ou supprimer un type AD ou pour effacer une liste de types AD pour le filtrage sur puce. Utilisez read_extended_features_sub_cmd
pour vérifier si cette commande est prise en charge ou non.
Sous-OCF : 0x09
Paramètre de sous-commande | Taille | But |
---|---|---|
APCF_Action | 1 octet | 0x00 - Ajouter 0x01 - Supprimer 0x02 - Effacer Supprimer supprimera le type AD spécifié dans le filtre spécifié. Clear effacera tous les types AD dans le filtre spécifié. |
APCF_Filter_Index | 1 octet | Indice de filtre (0, max_filter -1) |
APCF_AD_TYPE | 1 octet | Le type AD à ajouter ou à supprimer dans la liste. Ignorer lorsque APCF_Action est 0x02 (Effacer) |
APCF_AD_DATA_Length | Taille variable | 0x00 - signifie ne pas filtrer le contenu des données Ignorer lorsque APCF_Action est 0x02 (Effacer) |
APCF_AD_DATA | Taille variable | Ignorer lorsque APCF_Action est 0x02 (Effacer) |
APCF_AD_DATA_MASK | Taille variable | Ignorer lorsque APCF_Action est 0x02 (Effacer) Il doit avoir la même longueur que APCF_AD_DATA . |
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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 Echo Back |
APCF_AvailableSpaces | 1 octet | Nombre d'entrées gratuites encore disponibles dans le tableau Type AD |
LE_APCF_Command : read_extended_features_sub_cmd
Cette sous-commande est utilisée pour lire les fonctionnalités APCF étendues.
Sous-OCF : 0xFF
Paramètre de sous-commande | Taille | But |
---|---|---|
N'est pas applicable | Paramètre de commande vide. |
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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 pris en charge :
Valeur du bit
|
Activité du contrôleur et commande d'informations sur l'énergie
L'objectif de ces informations est que les fonctions supérieures du système hôte analysent les activités totales de tous les composants, y compris le contrôleur BT et son état macro, en conjonction avec ce qui se passe dans les applications et le framework. Pour ce faire, les informations suivantes sont requises de la pile BT et du contrôleur :
- Pile BT : rapporter l'état macro-opérationnel actuel du contrôleur
- Micrologiciel : rapporter des informations globales sur l'activité et l'énergie
États des macros de la pile hôte BT, tels que déterminés au niveau de l'utilisateur :
- Inactif : [analyse de page, annonce LE, analyse de demande]
- Scan : [pagination/demande/tentative de connexion]
- Actif : [Lien ACL activé, lien SCO en cours, mode reniflage]
Les activités que le contrôleur suit tout au long de sa durée de vie sont le temps Tx, le temps Rx, 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 spécifique au fournisseur.
OCF : 0x159
Paramètre de sous-commande | Taille | But |
---|---|---|
N / A | Paramètres de commande vides |
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | État de la commande terminée |
total_tx_time_ms | 4 octets | Temps total d'exécution de Tx |
total_rx_time_ms | 4 octets | Temps total d'exécution du Rx |
total_idle_time_ms | 4 octets | Temps total d'inactivité (états de faible consommation hors 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 de définition étendue LE
Cette commande peut être utilisée pour activer une fenêtre et un intervalle d'analyse plus grands dans le contrôleur. Conformément à la spécification BT Core 5.2, une fenêtre et un intervalle d'analyse ont une limite supérieure de 10,24 secondes, ce qui entrave 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)
OCF : 0x15A
Paramètre de commande | Taille | But |
---|---|---|
LE_Ex_Scan_Type | 1 octet | 0x00 - Analyse passive. Aucun paquet SCAN_REQ ne doit être envoyé (par défaut).0x01 - Analyse active. Les paquets SCAN_REQ peuvent être envoyés. |
LE_Ex_Scan_Interval | 4 octets | Défini comme l'intervalle de temps entre le moment où le contrôleur a démarré sa dernière scrutation LE et le début de la scrutation LE suivante. Plage : 0x0004 à 0x00FFFFFF Par défaut : 0x0010 (10 ms) Temps = N * 0,625 ms Plage de temps : 2,5 ms à 10 442,25 secondes |
LE_Ex_Scan_Window | 4 octets | La durée du scan LE. LE_Scan_Window doit être inférieur ou égal à LE_Scan_Interval .Plage : 0x0004 à 0xFFFF Par défaut : 0x0010 (10 ms) Temps = N * 0,625 ms Plage de temps : 2,5 ms à 40,95 secondes |
Own_Address_Type | 1 octet | 0x00 - Adresse publique de l'appareil (par défaut) 0x01 - Adresse de périphérique aléatoire |
LE_Ex_Scan_Filter_Policy | 0x00 - Accepte tous les paquets publicitaires (par défaut). Les paquets de publicité dirigée qui ne sont pas adressés à cet appareil doivent être ignorés. 0x01 - Ignorer les paquets publicitaires des appareils ne figurant pas dans la liste Liste blanche uniquement. Les paquets de publicité dirigée qui ne sont pas adressés à cet appareil doivent être ignorés. |
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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'acquérir des informations de débogage du contrôleur par un hôte, sous forme binaire, pour un post-traitement et une analyse. Cela aide à déboguer les problèmes sur le terrain et fournit aux ingénieurs une boîte à outils pour enregistrer les informations à des fins d'analyse. Un contrôleur peut fournir les informations à la demande d'un hôte via l'événement (sous-événement Controller Debug Info) ou de manière autonome lorsque le contrôleur le souhaite. Des exemples d'utilisation pourraient consister à rapporter des informations sur l'état du micrologiciel, des informations de vidage sur incident, des informations de journalisation, etc.
OCF : 0x15B
Paramètre de commande | Taille | But |
---|---|---|
N / A | Liste de paramètres de commande vide |
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | État de la commande terminée |
Prise en charge du déchargement matériel A2DP
La fonction de déchargement A2DP prend en charge le déchargement du processus de codage audio A2DP vers un processeur audio connecté au contrôleur BT. Le flux de données audio codé passe directement du processeur audio au contrôleur BT sans la participation de l'hôte BT. L'hôte BT est toujours responsable de la configuration et du contrôle de la session A2DP. Deux versions des commandes sont disponibles. Les commandes héritées avec Sub OCF 0x01-0x02 ne prennent en charge que les codecs open source. Les versions avec Sub-OCF 0x02-0x03 sont indépendantes du codec configuré.
OCF : 0x15D
Démarrer le déchargement A2DP (hérité)
Sous-OCF : 0x01
Utilisez cette commande à la fois pour configurer le processus de déchargement A2DP et pour démarrer le flux A2DP.
Paramètre de commande | Taille | But |
---|---|---|
Codec | 4 octets | Spécifie le type de codec 0x01 - SBC 0x02 - CAA 0x04 -APTX 0x08 - APTXHD 0x10 - LDAC |
Max_Latency | 2 octets | Latence maximale autorisée (en ms). Une valeur de zéro désactive le vidage. |
SCMS-T_Enable | 2 octets | Octet 0 : indicateur qui permet l’ajout d’un en-tête SCMS-T.
Octet 1 : valeur de l'en-tête SCMS-T, lorsqu'il est activé. |
Sampling_Frequency | 4 octets | 0x01 - 44100 Hz 0x02 - 48 000 Hz 0x04 - 88200 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 | Le débit audio codé en bits par seconde. 0x00000000 - Le débit audio n'est pas spécifié/inutilisé. 0x00000001 - 0x00FFFFFF - Débit audio codé en bits par seconde. 0x01000000 - 0xFFFFFFFF - Réservé. |
Connection_Handle | 2 octets | Handle 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 des paquets audio codés |
Codec_Information | 32 octets | Informations spécifiques au codec. Codec SBC : Reportez-vous aux éléments d'information spécifiques au codec SBC dans A2DP v1.3. Codec AAC : Reportez-vous aux éléments d'information spécifiques au codec AAC dans A2DP v1.3. Codec LDAC : Octet 0-3 : ID du fournisseur Octet 4-5 : ID du codec Octet 6 : Indice de débit binaire : Octet 7 : Mode canal LDAC Octet 8-31 : réservé Tous les autres codecs : Octet 0-31 : réservé |
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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
Sous-OCF : 0x03
Utilisez cette commande à la fois pour configurer le processus de déchargement A2DP et pour démarrer le flux A2DP.
Paramètre de commande | Taille | But |
---|---|---|
Connection Handle | 2 octets | Handle de la connexion HCI active |
L2CAP_Channel_ID | 2 octets | Identifiant du canal L2CAP ouvert au streaming A2DP |
Data_Path_Direction | 1 octet | 0x00 - Sortie (Source AVDTP/Fusion) 0x01 - Entrée (récepteur/split AVDTP) |
Peer_MTU | 2 octets | Taille maximale des paquets L2CAP, négociée avec le homologue. |
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 Bluetooth Audio HAL, CodecParameters.vendorSpecificParameters[] . |
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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)
Sous-OCF : 0x02
Cette commande est utilisée pour arrêter le flux de déchargement A2DP.
Paramètre de commande | Taille | But |
---|---|---|
N / A | Liste de paramètres de commande vide. |
Aucun paramètre n'est défini pour cette commande.
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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 est utilisée pour arrêter le flux de déchargement A2DP.
Paramètre de commande | Taille | But |
---|---|---|
Connection Handle | 2 octets | Handle de la connexion HCI active |
L2CAP_Channel_ID | 2 octets | Identifiant du canal L2CAP ouvert au streaming A2DP |
Data_Path_Direction | 1 octet | 0x00 - Sortie (Source AVDTP/Fusion) 0x01 - Entrée (récepteur/split AVDTP) |
Un événement Command Complete sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
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 fonction de commande BT Quality Report démarre le mécanisme du contrôleur Bluetooth pour 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 périodiquement un sous-événement BQR lié à la qualité de la qualité à l'hôte.
- Approchant LSTO: Si aucun paquet n'est reçu du périphérique BT connecté pour plus de la moitié de la valeur de tempsut de supervision de liaison (LSTO), le contrôleur rapporte un événement LSTO approchant à l'hôte.
- Audio A2DP Shoppy: Lorsque le contrôleur détecte les facteurs qui provoquent un son saccadé, le contrôleur rapporte un événement audio A2DP SOSSPY à l'hôte.
- (e) voix SCO saccageuse: lorsque le contrôleur détecte les facteurs qui provoquent une voix agitée, le contrôleur rapporte un événement (e) voix sco de la voix saccade à l'hôte.
- Inflammation 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 Bluetooth.
- Trace du message LMP / LL: le contrôleur envoie le message de message LMP / LL avec le périphérique distant à l'hôte.
- Bluetooth Multi-Profile / Coex Planage Trace: Le contrôleur envoie ses informations de planification lors de la gestion de plusieurs profils Bluetooth et de la coexistence sans fil dans la bande 2,4 GHz à l'hôte.
- Mécanisme d'information de débogage du contrôleur: Lorsqu'il est activé, le contrôleur peut signaler de manière autonome les informations de journalisation de débogage via le sous-événement des informations de débogage du contrôleur à l'hôte.
OCF: 0x15E
Paramètre de commande | Taille | But |
---|---|---|
BQR_Report_Action | 1 octet | Action pour ajouter / supprimer les rapports d'événements de qualité définis dans le paramètre bqr_quality_event_mask, ou effacez tout. 0x00 - Ajouter Delete effacera des rapports d'événements de qualité spécifiques. |
BQR_Quality_Event_Mask | 4 octets | Masques de bits pour les rapports d'événements de qualité sélectionnés. Bit 0: réglé pour activer le mode de surveillance de la qualité. |
BQR_Minimum_Report_Interval | 2 octets | Définissez l'intervalle de temps minimum de rapports d'événements de qualité pour les événements de qualité sélectionnés. Le firmware du contrôleur ne doit pas signaler l'événement suivant dans l'intervalle de temps défini. Le réglage d'intervalle doit être respectif et dédié aux événements de qualité qui sont ajoutés. Unité: MS |
BQR_Vendor_Specific_Quality_Event_Mask | 4 octets | Masques de bits pour le rapport d'événements de qualité spécifique au fournisseur sélectionné. Ce paramètre n'est valide que lorsque le bit 15 de BQR_Quality_Event_Mask est défini.Bit 0 ~ 31: Réservé. |
BQR_Vendor_Specific_Trace_Mask | 4 octets | Masques de bits pour le rapport de trace spécifique au fournisseur sélectionné. Ce paramètre n'est valide que lorsque le bit 31 de BQR_Quality_Event_Mask est défini.Bit 0 ~ 31: Réservé. |
Un événement complet de commande sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
Current_Quality_Event_Mask | 4 octets | Indique le réglage du masque de bit actuel. Bit 0: le mode de surveillance de la qualité est activé. BIT 1: L'approche des rapports d'événements LSTO est activé. Bit 2: Le rapport d'événements audio A2DP est activé. Bit 3: (E) Les rapports d'événements SCO Voice Sogpy sont activés. Bit 4: Les rapports d'événements d'inflammation des racines sont activés. Bit 5: Le mode de surveillance de l'énergie est activé. Bit 6: Le rapport d'événements audio saissage est activé. Bit 7: Connectez l'événement FAIL. Bit 8 ~ 14: Réservé. Bit 15: Le rapport d'événements de qualité spécifique au fournisseur est activé. Bit 16: la trace de message LMP / LL est activée. Bit 17: La trace de planification multi-link / coex Bluetooth est activée. Bit 18: le mécanisme d'information de débogage du contrôleur est activé. Bit 19 ~ 30: Réservé. Bit 31: La trace spécifique au fournisseur est activée. |
Current_Vendor_Specific_Quality_Event_Mask | 4 octets | Indique le réglage du masque de bit actuel. |
Current_Vendor_Specific_Trace_Mask | 4 octets | Indique le réglage du masque de bit actuel. |
Commande de tampon audio dynamique
Le tampon audio dynamique réduit le glitch audio en modifiant la taille du tampon audio dans le contrôleur Bluetooth en fonction de divers scénarios.
OCF: 0x15f
Obtenez la capacité de temps du tampon audio
Sub OCF: 0x01
Utilisez cette commande pour obtenir la capacité de temps du tampon audio du contrôleur Bluetooth.
Paramètre de commande | Taille | But |
---|---|---|
N / A | Liste des paramètres de commande vide |
Un événement complet de commande sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
Dynamic_Audio_Buffer_opcode | 1 octet | 0x01 - Obtenez l'heure du tampon audio |
Audio_Codec_Type_Supported | 4 octets | Masques de bits pour les types de codec pris en charge Bit 0 - SBC Bit 1 - aac Bit 2 - aptx Bit 3 - APTX HD Bit 4 - LDAC Le bit 5-31 est réservé |
Audio_Codec_Buffer_Default_Time_For_Bit_0 | 2 octets | Temps de tampon par défaut du type de code de bit 0 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être 0 si le type de codec bit 0 n'est pas pris en charge. Unité: MS |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 | 2 octets | Temps de tampon maximum du type de code Bit 0 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être 0 si le type de codec bit 0 n'est pas pris en charge. Unité: MS |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 | 2 octets | Temps de tampon minimum du type de code Bit 0 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être 0 si le type de codec bit 0 n'est pas pris en charge. Unité: MS |
Audio_Codec_Buffer_Default_Time_For_Bit_1 | 2 octets | Temps de tampon par défaut du type de code BIT 1 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être 0 si le type de codec bit 1 n'est pas pris en charge. Unité: MS |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 | 2 octets | Temps de tampon maximum du type de code Bit 1 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être 0 si le type de codec bit 1 n'est pas pris en charge. Unité: MS |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 | 2 octets | Temps de tampon minimum du type de code Bit 1 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être 0 si le type de codec bit 1 n'est pas pris en charge. Unité: MS |
...... | ...... | ...... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 | 2 octets | Temps de tampon par défaut du type de codec bit 31 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être 0 si le type de codec bit 31 n'est pas pris en charge. Unité: MS |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 | 2 octets | Temps de tampon maximum du type de code 3 31 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être 0 si le type de codec bit 31 n'est pas pris en charge. Unité: MS |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 | 2 octets | Temps de tampon minimum du type de code Bit 31 spécifié dans Audio_Codec_Type_Supported. Cette valeur doit être 0 si le type de codec bit 31 n'est pas pris en charge. Unité: MS |
Définir l'heure du tampon audio
Sub OCF: 0x02
Utilisez cette commande pour définir l'heure du tampon audio sur le contrôleur Bluetooth.
Paramètre de commande | Taille | But |
---|---|---|
Audio_Codec_Buffer_Time | 2 octets | Temps de tampon audio demandé pour le codec utilisé actuel. Unité: MS |
Un événement complet de commande sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
Dynamic_Audio_Buffer_opcode | 1 octet | 0x02 - Définissez l'heure du tampon audio |
Audio_Codec_Buffer_Time | 2 octets | Temps de tampon audio actuel dans le contrôleur Bluetooth. Unité: MS |
Événement HCI (spécifique au fournisseur)
Des événements HCI spécifiques au fournisseur sont nécessaires dans certains cas. Reportez-vous à la figure 5.4 à la page 1897 de la spécification BT Core 5.2. Le paramètre de l'événement 0 contiendra toujours le premier code de sous-événement, sur la base duquel le reste de l'événement HCI est décodé.
Paramètre de l'événement | Taille | But |
---|---|---|
HCI_vendor_specific_event_code | 1 octet | 0xff |
sub_event_code | 1 octet | Un code de sous-événement sera de 1 octet, l'octet immédiatement suivant la longueur du paramètre dans le paquet d'événements HCI. |
Sous-événement du seuil de stockage
Cet événement indique que le seuil de stockage a été violé.
Code de sous-événement = 0x54
Paramètre de sous-événement | Taille | But |
---|---|---|
Aucun |
Sous-événement de changement d'état multi-advertissant le
Cet événement indique qu'une instance publicitaire a changé son état. À l'heure actuelle, 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 | But |
---|---|---|
Advertising_instance | 1 octet | Identifie l'instance publicitaire spécifique Les valeurs valides sont 0 à max_advt_instances -1 |
State_Change_Reason | 1 octet | 0x00: connexion reçue |
Connection_handle | 2 octets | Identifie la connexion qui a fait désactiver l'instance advt (0xffff si non valide) |
Sous-événement du suivi de la publicité Le
Cet événement indique quand un annonceur est trouvé ou perdu.
Code de sous-événement = 0x56
Paramètre de sous-événement | Taille | But |
---|---|---|
APCF_Filter_Index | 1 octet | Index de filtre (0, max_filter -1) |
Advertiser_State | 1 octet | 0x00: annonceur trouvé 0x01: l'annonceur perdu |
Advt_Info_Present | 1 octet | 0x00: Informations sur l'annonceur ( Advt_Info ) Présent0x01: Informations sur l'annonceur ( Advt_Info ) Non présent |
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 |
Sous-événement de débogage du contrôleur
Cet événement est utilisé par un contrôleur pour fournir des informations de débogage binaire à un hôte.
Code de sous-événement = 0x57
Paramètre de sous-événement | Taille | But |
---|---|---|
debug_block_byte_offset_start | 2 octets | Débogage de l'octet de blocs Offset dès le départ |
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 en cours |
Debug_Data | Variable | Débogage des données de cur_payload_sz |
Sous-événement du 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 téléchargé la trace de message LMP / LL et la trace de planification multi-link / coex Bluetooth, ou les données d'informations de débogage vidées du contrôleur.
Code de sous-événement = 0x58 [Quality_Report_id = 0x01 ~ 0x04, Event de la qualité liée à la qualité]
Paramètre de sous-événement | Taille | But |
---|---|---|
Quality_Report_Id | 1 octet | 0x01: Rapports de qualité sur le mode de surveillance. 0x02: approche de LSTO. 0x03: A2DP audio soppy. 0x04: (e) SCO Voice soppy. 0x05 ~ 0x06: réservé. 0x07: le soppy audio. 0x08: Connect Fail. 0x09 ~ 0xff: réservé. |
Packet_Types | 1 octet | 0x01: id 0x02: null 0x03: sondage 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 | Poignée de connexion ACL / (E) SCO / ISO. |
Connection_Role | 1 octet | Effectuer un rôle pour la connexion. 0x00: Central 0x01: périphérique 0x02 ~ 0xff: réservé. |
TX_Power_Level | 1 octet | Courant le niveau de puissance de transmission pour la connexion spécifiée_handle. Cette valeur doit être la même que la réponse du contrôleur à la commande hci hci_read_transmit_power_level. |
RSSI | 1 octet | [en DBM] Valeur d'indication de résistance du signal reçue (RSSI) pour la connexion spécifiée_handle. |
SNR | 1 octet | [en db] Valeur signal / bruit (SNR) pour la connexion spécifiée_handle. |
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 interférés et ont une mauvaise qualité, mais ils sont toujours sélectionnés pour l'AFH. Le nombre minimum de canaux autorisés par la spécification Bluetooth est de 20, donc même si les 79 canaux sont interférés et ont une mauvaise qualité, le contrôleur doit encore choisir au moins 20 canaux pour AFH. |
LSTO | 2 octets | Paramètre de délai d'expiration de supervision des liens actuel. Temps = n * 0,625 ms Plage de temps: 0,625 ms à 40,9 s |
Connection_Piconet_Clock | 4 octets | Piconet Clock pour la connexion spécifiée_handle. Cette valeur doit être la même que le contrôleur qui répond à la commande hci_read_clock hCI avec le paramètre "qui_clock" de 0x01 (horloge Piconet). Unité: N * 0,3125 ms (1 horloge Bluetooth) |
Retransmission_Count | 4 octets | Le nombre de retransmissions depuis le dernier événement. Ce décompte doit être réinitialisé après avoir fait rapport à l'hôte. |
No_RX_Count | 4 octets | Pas de compte Rx depuis le dernier événement. Le décompte augmente lorsqu'aucun paquet n'est reçu sur le créneau horaire prévu ou que le paquet reçu est corrompu. Ce décompte doit être réinitialisé après avoir fait rapport à l'hôte. |
NAK_Count | 4 octets | Nak (Reconnaissance négative) compte depuis le dernier événement. Ce décompte doit être réinitialisé après avoir fait rapport à l'hôte. |
Last_TX_ACK_Timestamp | 4 octets | Timestamp du dernier TX ACK. Il est basé sur l'horloge Bluetooth du Piconet Central (CLK). Unité: N * 0,3125 ms (1 horloge Bluetooth) |
Flow_Off_Count | 4 octets | Le nombre de fois où le contrôleur reçoit le débit (arrêt) depuis le dernier événement. Ce décompte doit être réinitialisé après avoir fait rapport à l'hôte. |
Last_Flow_On_Timestamp | 4 octets | Timestamp du dernier flux (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 octet] Nombre de débordement de tampon depuis le dernier événement. |
Buffer_Underflow_Bytes | 4 octets | [en octet] Le nombre de sous-flux de tampon depuis le dernier événement. |
bdaddr | 6 octets | Adresse du périphérique distant |
cal_failed_item_count | 1 octet | Le nombre d'étalonnages a échoué les éléments |
TX_Total_Packets | 4 octets | Le nombre de paquets envoyés. |
TX_UnAcked_Packets | 4 octets | Le nombre de paquets qui ne reçoivent pas de reconnaissance. Ce décompte est réinitialisé après avoir fait rapport à l'hôte. |
TX_Flushed_Packets | 4 octets | Le nombre de paquets qui ne sont pas envoyés par son point de chasse. Ce décompte est réinitialisé après avoir fait rapport à l'hôte. |
TX_Last_Subevent_Packets | 4 octets | Le nombre de paquets qui lient la couche transmet un PDU de données CIS dans le dernier sous-événement d'un événement CIS. Ce décompte est réinitialisé après avoir fait rapport à l'hôte. La valeur est zéro s'il n'y a pas de valeur valide pour le lien. |
CRC_Error_Packets | 4 octets | Le nombre de packages reçus avec une erreur CRC depuis le dernier événement. Ce décompte est réinitialisé après avoir fait rapport à l'hôte. |
RX_Duplicate_Packets | 4 octets | Le nombre de packages en double (retransmission) reçus depuis le dernier événement. Ce décompte est réinitialisé après avoir fait rapport à l'hôte. |
Paramètre spécifique au fournisseur | (Paramètre Longueur totale - TBD) * Ocktets | Pour que le fournisseur de contrôleur obtienne plus de paramètres spécifiques au fournisseur. |
Code de sous-événement = 0x58 [Quality_Report_id = 0x05, événement d'inflammation racine]
Cet événement indique que Bluetooth HAL ou le contrôleur a rencontré une erreur fatale et a besoin d'une pile Bluetooth pour 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 de débogage d'informations dans tous les cas.
Le paramètre error_code contient un code d'erreur rapporté à partir de HAL / Controller, 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 du fournisseur de chipset de HAL / Controller. Il doit définir 0 si le paramètre error_code n'est pas 0. Les paramètres error_code et vendor_specific_error_code ne doivent pas être 0.
Paramètre de sous-événement | Taille | But |
---|---|---|
Quality_Report_Id | 1 octet | 0x00 ~ 0x04: réservé. 0x05: inflammation racinaire. 0x06 ~ 0xff: réservé. |
Error_Code | 1 octet | 0x00: le code d'erreur spécifique au fournisseur du chipset est inclus. 0x01 ~ 0xff: une défaillance du contrôleur s'est produite. Voir Bluetooth Spec [Vol 2] Partie D, codes d'erreur pour une liste de codes d'erreur et descriptions. |
Vendor_Specific_Error_Code | 1 octet | 0x00: aucun code d'erreur spécifique au fournisseur de chipset n'est inclus. 0x01 ~ 0xff: code d'erreur spécifique du fournisseur de chipset. |
Paramètre spécifique au fournisseur | (Paramètre Longueur totale - 4) * Octets | Pour que le fournisseur de contrôleur obtienne plus de paramètres spécifiques au fournisseur. |
Code de sous-événement = 0x58 [Quality_Report_id = 0x11 ~ 0x13, événement lié à un vidage de journal]
Paramètre de sous-événement | Taille | But |
---|---|---|
Quality_Report_Id | 1 octet | 0x00 ~ 0x10: réservé. 0x11: trace de message LMP / LL. 0x12: trace de planification multi-link / coex Bluetooth. 0x13: Dumpt 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 | (Paramètre Longueur totale - 4) * Octets | Format spécifique au fournisseur de la trace de message LMP, Bluetooth Multi-link / coex PROCHAGE ET CONTRACTION DU CONTRÔLEUR DES DONNÉES D'INFORMATIONS. |
Support multi-advertiser
Les objectifs du support multi-advertiser sont les suivants:
- Capacité à prendre en charge plusieurs publicités (
max_advt_instances
) - Différentes pouvoirs de transmission pour permettre une plage variable
- Contenu publicitaire différent
- Une réponse individualisée pour chaque annonceur
- Confidentialité (non tracassable) pour chaque annonceur
- Connecté
Pour garder cette spécification 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 | But |
---|---|---|
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 complet de commande sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
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: Bluetooth Core 4.1 Spécifications, page 964 (Commande de paramètre publicitaire LE SET)
Sub OCF: 0x01
Paramètre de sous-commande | Taille | But |
---|---|---|
Advertising_Interval_Min | Par spécification | Par spécification |
Advertising_Interval_Max | Par spécification | Par spécification |
Advertising_Type | Par spécification | Par spécification |
Own_Address_Type | Par spécification | Par spécification |
Own_Address | Par spécification | Par spécification |
Direct_Address_Type | Par spécification | Par spécification |
Direct_Address | Par spécification | Par spécification |
Advertising_Channel_Map | Par spécification | Par spécification |
Adverstising_Filter_Policy | Par spécification | Par spécification |
Advertising_Instance | 1 octet | Spécifie l'applicabilité des paramètres ci-dessus à une instance |
Tx_power | 1 octet | Puissance de transmission Unité - en DBM (entier signé) Gamme (-70 à +20) |
Le paramètre Own_Address
pourrait être une adresse configurée par l'hôte au moment de la configuration de cette instance multi-adversation. Cela offre la possibilité d'avoir une adresse privée résolunable au moment de la transmission de la première balise. La publicité sur une instance se poursuivra quelle que soit la connexion. La pile BT hôte peut émettre une commande pour démarrer la publicité sur une instance, publication de connexion.
Un événement complet de commande sera généré pour cette commande comme spécifié dans la spécification Bluetooth Core 4.1, selon la commande ci-dessus. Le contrôleur répondra avec un code non inscriptif (paramètre non valide) si l'instance publicitaire ou les paramètres Tx_Power
ne sont pas valides.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
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: Bluetooth Core 4.1 Spécification, page 969 (Commande de données publicitaires LE SET)
Sub OCF: 0x02
Paramètre de sous-commande | Taille | But |
---|---|---|
Advertising_Data_Length | Par spécification | Par spécification |
Advertising_Data | Par spécification | Par spécification |
Advertising_Instance | 1 octet | Spécifie l'applicabilité des paramètres ci-dessus à une instance |
Un événement complet de commande sera généré pour cette commande comme spécifié dans la spécification Bluetooth Core 4.1, selon la commande ci-dessus. Le contrôleur répondra par un code non inscriptif si l'instance publicitaire ou les paramètres Tx_Power
ne sont pas valides.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
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: Bluetooth Core 4.1 Spécification, page 970 (Commande de données de réponse à Set Scan)
Sub OCF: 0x03
Paramètre de sous-commande | Taille | But |
---|---|---|
Scan_Response_Data_Length | Par spécification | Par spécification |
Scan_Response_Data | Par spécification | Par spécification |
Advertising_Instance | 1 octet | Spécifie l'applicabilité des paramètres ci-dessus à une instance |
Un événement complet de commande sera généré pour cette commande comme spécifié dans la spécification Bluetooth Core 4.1, selon la commande ci-dessus. Le contrôleur répondra avec un code non inscriptif (paramètre non valide) si l'instance publicitaire ou les paramètres Tx_Power
ne sont pas valides.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
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: Bluetooth Core 4.1 Spécification, page 963 (Commande d'adresse aléatoire du set)
Sub OCF: 0x04
Paramètre de sous-commande | Taille | But |
---|---|---|
Adresse aléatoire | Par spécification | Par spécification |
Advertising_Instance | 1 octet | Spécifie l'applicabilité des paramètres ci-dessus à une instance |
Un événement complet de commande sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
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: Bluetooth Core 4.1 Spécification, page 971 (Commande SET ANTERRICY Activer dans cette spécification de base)
OCF: 0x05
Paramètre de sous-commande | Taille | But |
---|---|---|
Advertising_Enable | 1 octet | Une valeur de 1 signifie activer. Toute autre valeur signifie désactiver. |
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 complet de commande sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
Multi_advt_opcode | 1 octet | 0x05 [ Set_Advt_Enable_Multi_Sub_Cmd] |
Résolution déchargée de l'adresse privée
Cette fonctionnalité résout une adresse privée dans le firmware ou le matériel du contrôleur, qui offre les avantages suivants:
- Latence impliquée avec l'hôte pour résoudre une adresse privée
- Économiser de l'énergie en s'abstenant de réveiller l'hôte
Le_set_rpa_timeout
OCF: 0x15c
Paramètre de commande | Taille | But |
---|---|---|
LE_local_IRK | 16 octets | Le dispositif local IRK a utilisé pour générer les adresses résolvables aléatoires. |
tRPA_min | 2 octets | Le délai d'expiration minimale de la génération RPA en secondes. Le contrôleur doit générer de nouvelles adresses résolvables pour tous les événements publicitaires / numérisation / connexion sur ou après ce temps mort. Plage valide: 300-1800 |
tRPA_max | 2 octets | Le temps mort de génération RPA maximale en secondes. Le contrôleur doit générer de nouvelles adresses résolvables pour tous les événements publicitaires / numérisation / connexion au plus tard ce délai d'attente. Plage valide: tRPA_min -1800 |
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Le statut de la commande. Valeurs de statut HCI suggérées: 0x00 Succès 0x01 Commande inconnue (si elle n'est pas prise en charge) 0x12 Paramètres de commande non valides (si des paramètres sont en dehors de la plage donnée) |
Le_rpa_offload_command
OCF: 0x155
Paramètre de commande | Taille | But |
---|---|---|
RPA_offload_opcode | 1 octet | 0x1 - Activer la fonctionnalité spécifique au client 0x2 - Ajouter IRK à la liste 0x3 - Supprimer IRK de la liste 0x4 - Liste des IRK Clear 0x5 - Lire l'entrée de la liste IRK |
Un événement complet de commande sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
Event_RPA_offload_opcode | 1 octet | 0x1 - Activer la fonctionnalité spécifique au client 0x2 - Ajouter IRK à la liste 0x3 - Supprimer IRK de la liste 0x4 - Liste des IRK Clear 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 | But |
---|---|---|
enable_customer_specific_feature_set | 1 octet | 0x01 - Activer la fonction RPA déchargée 0x00 - Désactiver la fonction RPA déchargée |
Le déchargement RPA doit être activé par l'hôte, en fonction de la capacité de puce. Reportez-vous à LE_Get_Vendor_Capabilities_Command
. Chaque puce peut avoir un max_irk_list_sz
variable dans le firmware.
Un événement complet de commande sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
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 | But |
---|---|---|
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 complet de commande sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
Event_cust_specific_feature_opcode | 1 octet | 0x02 [Ajouter IRK à la liste] |
LE_IrkList_AvailableSpaces | 1 octet | Entrées de liste IRL disponible après le fonctionnement actuel |
Le_RPA_OFFLOAD: REPOUP_IRK_TO_LIST_SUB_COMMAND
Sub OCF: 0x03
Paramètre de sous-commande | Taille | But |
---|---|---|
Address_Type | 1 octet | 0: Adresse publique 1: Adresse aléatoire |
LE_Device_Address | 6 octets | Adresse publique ou aléatoire qui s'associe à l'IRK |
Un événement complet de commande sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
Event_cust_specific_feature_opcode | 1 octet | 0x03 [Supprimer IRK de la liste] |
LE_IrkList_AvailableSpaces | 1 octet | Entrées de liste IRL disponible après le fonctionnement actuel |
Le_rpa_offload: clear_irk_list_sub_command
Sub OCF: 0x04
Paramètre de sous-commande | Taille | But |
---|---|---|
Aucun |
Un événement complet de commande sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
Event_cust_specific_feature_opcode | 1 octet | 0x04 [LISTE CLEAR IRK] |
LE_IrkList_AvailableSpaces | 1 octet | Entrées de liste IRL disponible après l'opération actuelle [ max_irk_list_sz] |
Le_rpa_offload: read_irk_list_sub_command
Sub OCF: 0x05
Paramètre de sous-commande | Taille | But |
---|---|---|
LE_read_IRK_list_entry-index | 1 octet | Index de la liste IRK [0, max_irk_list_sz-1] |
Un événement complet de commande sera généré pour cette commande.
Paramètre de retour | Taille | But |
---|---|---|
Status | 1 octet | Commande Statut complet |
Event_cust_specific_feature_opcode | 1 octet | 0x05 [LIRE ENTRÉE DE LISTE IRK] |
LE_Read_IRK_List_entry | 1 octet | Index de l'IRK que l'hôte veut lire (la taille maximale de la liste des IRK est de 32) |
LE_IRK | 16 octets | Valeur d'inlan |
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 résolue résolue actuelle de cette IRK |