Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Exigences HCI

L'interface de contrôleur d'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 Host BT et de contrôleurs BT se conforment à ces exigences de plate-forme afin d'utiliser l'ensemble de fonctionnalités décrit ci-dessous.

Ce document fait référence à la spécification Bluetooth Core 5.1 en tant que «spécification». La spécification Bluetooth Core 5.1 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 de logiciels, d'OEM, de fournisseurs et de capacités de plate-forme et de puce.

Pour gérer le paysage variable 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 standard Bluetooth Core 5.1) est décrite dans ce document. La pile BT hôte peut ensuite utiliser ces capacités pour déterminer les fonctionnalités à activer.

Soutenir les normes ouvertes

L'un des objectifs d'Android est de prendre en charge les normes ouvertes après ratification dans une spécification Bluetooth. Si une fonctionnalité décrite ci-dessous devient disponible dans les méthodes HCI standard dans une future spécification Bluetooth, nous nous pencherons pour 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 Objectif
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 Objectif
Status 1 octet État de la commande terminée
max_advt_instances
(Obsolète)
1 octet Nombre d'instances de publicité prises en charge.

Ce paramètre est obsolète dans la spécification de fonctionnalité Google v0.98 et supérieure au profit de la publicité étendue LE disponible dans la spécification BT version 5.0 et supérieure.
offloaded_resolution_of_private-address
(Obsolète)
1 octet Capacité de puce BT de RPA.
S'il est pris en charge par une puce, il doit être activé par l'hôte.
0 = Incapable
1 = Capable

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 spécification BT version 4.2 et supérieure.
total_scan_results_storage 2 octets Stockage pour les résultats d'analyse en octets
max_irk_list_sz 1 octet Nombre d'entrées IRK prises en charge dans le micrologiciel
filtering_support 1 octet 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 sur l'activité et l'énergie
0 = Incapable
1 = Capable
version_supported 2 octets Spécifie la version de la spécification de fonctionnalité Google prise en charge
byte [0] = nombre majeur
byte [1] = nombre mineur

v0.98
octet [0] = 0x00
octet [1] = 0x62
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 d'analyse étendue et l'intervalle
debug_logging_supported 1 octet Prend en charge la journalisation des informations de débogage binaire à partir du contrôleur
LE_address_generation_offloading_support
(Obsolète)
1 octet 0 = non pris en charge
1 = pris en charge

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 spécification BT version 4.2 et supérieure.
A2DP_source_offload_capability_mask 4 octets Masques binaires pour les types de codec 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 rapport des événements de qualité Bluetooth
0 = Incapable
1 = Capable

Lot de résultats d'analyse

Un objectif de conception est d'améliorer la façon dont les notifications d'événement de réponse de scan Bluetooth LE sont transmises à l'hôte, afin d'économiser l'énergie de l'hôte.

En réduisant la fréquence à laquelle le contrôleur notifie au processeur d'application hôte d'analyser les résultats, le processeur d'application hôte peut rester inactif / 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 pour le stockage des résultats d'analyse.

Cette fonction se concentre sur la gestion et la configuration de la fonction de stockage LE Scan Results dans le contrôleur Bluetooth. Le stockage est utilisé pour regrouper temporairement les données de publicité et analyser les données et les métadonnées qui sont 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 activés simultanément:

  • Tronqué. Contient les éléments d'information suivants: {MAC, TX Power, RSSI, Timestamp}
  • Plein. 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 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 lots
0x3 - Définir les paramètres d'analyse par lots
0x4 - Lire les paramètres de résultat de l'analyse par lots

Un événement Command Complete sera généré pour cette commande. L'activation de la fonction 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 lots
0x3 - Définir les paramètres d'analyse par lots
0x4 - Lire les paramètres de résultat de l'analyse par lots

LE_Batch_Scan_Command: activer la fonction spécifique au client

Sous OCF: 0x01

Paramètre de sous-commande Taille Objectif
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 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 lots
0x3 - Définir les paramètres d'analyse par lots
0x4 - Lire les paramètres de résultat de l'analyse par lots

LE_Batch_Scan_Command: sous-commande Set Batch Scan Storage Paramand

Sous 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 Configuration du niveau de notification (en%) pour le 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é (suppression de la violation du seuil de stockage)

Un événement Command Complete sera 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 [Définir les paramètres d'analyse par lots]

LE_Batch_Scan_Command: sous-commande Set Batch Scan Param

Sous OCF: 0x03

Paramètre de sous-commande Taille Objectif
Batch_Scan_Mode 1 octet 0x00 - Le scan par lots est désactivé
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 Temps de scan par lots (# de slot)
Duty_cyle_scan_interval 4 octets Période d'intervalle de scan par lots (# de slot)
own_address_type 1 octet 0x00 - Adresse d'appareil publique
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 forme tronquée où la clé unique du style BD_ADDR, = { BD_ADDR, scan_interval}. Cela signifie qu'un seul BD_ADDR will enregistré pour chaque intervalle de balayage. L'enregistrement à conserver pour le mode BD_ADDR 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 d'analyse seront enregistrées. La clé unique de style complet = {MAC, paquet d'annonces}, 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 complet, le même paquet AD, lorsqu'il est vu plusieurs fois sur différents intervalles de balayage, n'est enregistré qu'une seule fois. Cependant, en mode BA_ADDR , c'est la visibilité de BA_ADDR travers différents intervalles de scrutation qui est intéressante (une fois par intervalle de scrutation). Le RSSI est la valeur moyenne de tous les doublons d'une publicité unique dans un intervalle d'analyse.

Un événement Command Complete sera 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 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 Objectif
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 événement de fin de commande. L'hôte effectuera une itération en émettant cette commande jusqu'à ce que les résultats correspondants dans l'événement Commande terminée indiquent 0 dans le nombre d'enregistrements, ce qui indique que le contrôleur n'a plus d'enregistrements à communiquer à l'hôte. Chaque événement de commande terminée peut contenir plusieurs enregistrements d'un seul type de données (complet ou tronqué).

Les références d'heure 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ù le Read_Batch_Scan_Results_Sub_cmd est donné par l'hôte. Si une heure d'arrivée de 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 Objectif
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]: octets Adv_packet_len
Scan_data_resp_len [0]: 1 octet
Scan_data_resp [0]: octets Scan_data_resp
[plusieurs enregistrements au format ci-dessus ( num_of_records )]

Filtre de contenu de paquet publicitaire

Utilisez cette option pour activer / désactiver / configurer le filtre de contenu de paquet publicitaire (APCF) dans le contrôleur.

LE_APCF_Command

OCF: 0x157

Paramètre de commande Taille Objectif
APCF_opcode 1 octet 0x00 - Activation APCF
0x01 - APCF Définit 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

Un événement Command Complete sera généré pour cette commande.

Paramètre de retour Taille Objectif
Status 1 octet Statut de retour
APCF_opcode 1 octet 0x00 - Activation APCF
0x01 - APCF Définit 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

LE_APCF_Command: Enable_sub_cmd

Sous OCF: 0x00

Paramètre de sous-commande Taille Objectif
APCF_enable 1 octet 0x01 - Activer la fonction APCF
0x00 - Désactiver la fonction APCF

Un événement Command Complete 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 0x0 - Activation APCF
APCF_Enable 1 octet L'activation / 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 Objectif
APCF_Action 1 octet 0x00 - Ajouter
0x01 - Supprimer
0x02 - Effacer
Supprimer effacera le filtre spécifique ainsi que les entrées d'entités associées dans d'autres tables.
Clear effacera tous les filtres et les entrées associées dans les autres tables.
APCF_Filter_Index 1 octet Index de filtre (0, max_filter-1 )
APCF_Feature_Selection 2 octets Masques de bits pour les fonctionnalités sélectionnées:
Bit 0: réglé 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 sollicitation de service
Bit 4: réglé pour activer la vérification du nom local
Bit 5: réglé pour activer la vérification des données du fabricant
Bit 6: réglé pour activer la vérification des données de service
APCF_List_Logic_Type 2 octets Opération logique pour chaque sélection de fonction (position par bit) spécifiée dans APCF_Feature_Selection .
Valide uniquement lorsqu'une fonctionnalité est activée.
Valeur de position de 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 de logique est N / A pour les trois premiers champs de APCF_Feature_Selection , qui est toujours la 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 n'est considéré comme vu que 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 - par batched
onfound_timeout 2 octets Valide 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 Valide uniquement si delivery_mode est on_found .
[compter]
Si une publicité dans onFound persiste dans le micrologiciel pendant la durée de 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 Valide uniquement si delivery_mode est on_found .
[en dBm]
Le paquet d'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 Valide uniquement si delivery_mode est on_found .
[en millisecondes]
Si une annonce, 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 Valide uniquement si delivery_mode est on_found .
[compter]
Nombre total d'annonceurs à suivre par filtre.

Les valeurs RSSI doivent utiliser le complément de 2 pour représenter les valeurs négatives.

L'hôte doit être en mesure de configurer plusieurs filtres avec APCF_Application_Address_type mis à 0x02 (pour toutes les adresses de diffuseur) pour gérer diverses combinaisons de filtres.

Le filtrage, le traitement par lots et la création de rapports sont des concepts interdépendants. Chaque annonce 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 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 l'ordre série. Il est possible qu'une publicité puisse provoquer un rapport immédiat basé sur un filtre et un traitement par lots de celui-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 réglé sur immédiat ou par lots, le RSSI d'une trame est pris en compte pour un traitement ultérieur par le contrôleur. Différentes applications nécessitent des rapports et un comportement par lots différents. Cela permet à plusieurs applications d'avoir des rapports directs et / ou des lots de résultats dans le micrologiciel, simultanément. Un exemple est un 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 lancée, 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 se poursuit. Cependant, en raison de l'analyse régulière, cela revient à ajouter conceptuellement un filtre nul (avec tous les filtres existants) avec la commande d'analyse LE. 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 l'action d'un filtre pour réussir 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) ressemblera à ce qui suit:

Un événement Command Complete 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 0x02 - APCF Définit les paramètres de filtrage
APCF_Action 1 octet APCF_Action la commande Echo back
APCF_AvailableSpaces 1 octet Nombre d'entrées disponibles dans le tableau des filtres

LE_APCF_Command: broadcast_address_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 Objectif
APCF_Action 1 octet 0x00 - Ajouter
0x01 - Supprimer
0x02 - Effacer
Supprimer supprimera l'adresse de 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 Index de filtre (0, max_filter-1 )
APCF_Broadcaster_Address 6 octets Adresse d'appareil de 6 octets à ajouter ou à supprimer de la liste d'adresses du diffuseur
APCF_Application_Address_type 1 octet 0x00: public
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 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 la commande Echo back
APCF_AvailableSpaces 1 octet Nombre d'entrées gratuites encore disponibles dans le tableau des adresses 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 Objectif
APCF_Action 1 octet 0x00 - Ajouter
0x01 - Supprimer
0x02 - Effacer
Supprimer supprimera l'adresse UUID de 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 Index de filtre (0, max_filter -1)
APCF_UUID 2,4,16 octet 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 octet Le 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 Command Complete 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 0x03 - UUID du service APCF
APCF_Action 1 octet APCF_Action la commande Echo back
APCF_AvailableSpaces 1 octet Nombre d'entrées gratuites encore disponibles dans la table UUID du service

LE_APCF_Command: solicitation_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 Objectif
APCF_Action 1 octet 0x00 - Ajouter
0x01 - Supprimer
0x02 - Effacer
Supprimer supprimera l'adresse UUID de sollicitation dans le filtre spécifié.
Effacer effacera tous les UUID de sollicitation dans le filtre spécifié.
APCF_Filter_Index 1 octet Index de filtre (0, max_filter -1)
APCF_UUID 2,4,16 octet UUID de sollicitation (16 bits, 32 bits ou 128 bits) à ajouter ou à supprimer de la liste.
APCF_UUID_MASK 2,4,16 octet Le masque UUID de sollicitation (16 bits, 32 bits ou 128 bits) à ajouter à la liste. Il doit avoir la même longueur que l' APCF_UUID .

Un événement Command Complete 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 0x04 - UUID de sollicitation APCF
APCF_Action 1 octet APCF_Action la commande Echo back
APCF_AvailableSpaces 1 octet Nombre d'entrées gratuites encore disponibles dans le tableau UUID de sollicitation

LE_APCF_Command: local_name_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 Objectif
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 nom locales dans le filtre spécifié.
APCF_Filter_Index 1 octet Index de filtre (0, max_filter -1)
APCF_LocName_Mandata_or_SerData Taille variable Une chaîne de caractères pour le nom local.

Remarques:
  • Actuellement, le nombre maximum de caractères dans une chaîne de nom local est de 29
  • Non applicable lorsque l'action est "Effacer" (0x2)

Un événement Command Complete 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 0x05 - Nom local APCF
APCF_Action 1 octet APCF_Action la commande Echo back
APCF_AvailableSpaces 1 octet Nombre d'entrées gratuites encore disponibles dans le tableau des noms locaux

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 Objectif
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é.
Effacer effacera toutes les chaînes de données du fabricant dans le filtre spécifié.
APCF_Filter_Index 1 octet Index 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:
  • Actuellement, le nombre maximum de caractères dans une chaîne de nom local est de 29
  • Non applicable lorsque l'action est "Effacer" (0x2)
APCF_ManData_Mask Taille variable 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 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 la commande Echo back
APCF_AvailableSpaces 1 octet Nombre d'entrées gratuites encore disponibles dans le tableau des données du 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 de chaînes de données de service pour le filtrage sur puce.

Sous OCF: 0x07

Paramètre de sous-commande Taille Objectif
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 Index 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:
  • Actuellement, le nombre maximum de caractères dans une chaîne de nom local est de 29
  • Non applicable lorsque l'action est "Effacer" (0x2)
APCF_LocName_Mandata_or_SerData_Mask Taille variable 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 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 la commande Echo back
APCF_AvailableSpaces 1 octet Nombre d'entrées gratuites encore disponibles pour le tableau des données de service

Commande des informations sur l'activité et l'énergie du contrôleur

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 cadre. Pour ce faire, les informations suivantes sont requises de la pile BT et du contrôleur:

  • Pile BT: rapport de l'état macro-opérationnel actuel du contrôleur
  • Micrologiciel: rapport sur l'activité agrégée et les informations énergétiques

États de la macro de la pile hôte BT, tels que déterminés au niveau de l'utilisateur:

  • Inactif: [numérisation de page, annonce LE, numérisation d'enquête]
  • Scan: [pagination / demande / tentative de connexion]
  • Actif: [lien ACL activé, lien SCO en cours, mode sniff]

Les activités que le contrôleur surveille au cours de sa vie sont le temps Tx, le temps Rx, le temps d'inactivité et l'énergie totale consommée. Ils sont effacés lorsqu'ils sont lus sur 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 Objectif
N / A Paramètres de commande vides

Un événement Command Complete sera 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 Temps total d'exécution de Tx
total_rx_time_ms 4 octets Temps total d'exécution de Rx
total_idle_time_ms 4 octets Temps total d'inactivité (états de faible consommation sans veille)
total_energy_used 4 octets Énergie totale utilisée [produit du courant (mA), de la tension (V) et du temps (ms)]

Commande LE Extended Set Scan Paramètres

Cette commande peut être utilisée pour activer une fenêtre d'analyse et un intervalle plus grands dans le contrôleur. Selon la spécification BT Core 5.1, une fenêtre d'analyse et un intervalle ont une limite supérieure de 10,24 secondes, ce qui empêche les applications d'intervalles d'analyse plus longs au-delà de 10,24 secondes.

Référence de base: Spécification BT Core 5.1, page 1331 (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. SCAN_REQ 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 commencé son dernier balayage LE et celui où il a commencé le balayage LE suivant.
Plage: 0x0004 à 0x00FFFFFF
Par défaut: 0x0010 (10 ms)
Temps = N * 0,625 ms
Plage de temps: 2,5 ms à 10442,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 du périphérique public (par défaut)
0x01 - Adresse de périphérique aléatoire
LE_Ex_Scan_Filter_Policy 0x00 - Accepte tous les paquets d'annonces (par défaut). Les paquets publicitaires dirigés qui ne sont pas adressés pour cet appareil doivent être ignorés.
0x01 - Ignore les paquets d'annonces provenant de périphériques ne figurant pas dans la liste Liste blanche uniquement. Les paquets publicitaires dirigés qui ne sont pas adressés pour cet appareil doivent être ignorés.

Un événement Command Complete sera généré pour cette commande.

Paramètre de retour Taille Objectif
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 le post-traitement et l'analyse. Cela aide à déboguer les problèmes sur le terrain et fournit aux ingénieurs une boîte à outils pour consigner 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 être de 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 Objectif
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 Objectif
Statut 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 intervention de l'hôte BT. L'hôte BT est toujours responsable de la configuration et du contrôle de la session A2DP.

OCF: 0x15D

Démarrer le déchargement A2DP

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 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). Une valeur de zéro désactive le vidage.
SCMS-T_Enable 2 octets Octet 0: indicateur qui permet l'ajout de l'en-tête SCMS-T.
  • 0x00 - En-tête SCMS-T non inclus.
  • 0x01 - En-tête SCMS-T inclus.

Octet 1: valeur de l'en-tête SCMS-T, lorsqu'il est activé.

Fréquence d'échantillonnage 4 octets 0x01 - 44100 Hz
0x02 - 48 000 Hz
0x04 - 88200 Hz
0x08 - 96000 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 binaire 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 Poignée de connexion de la connexion A2DP en cours de configuration
L2CAP_Channel_ID 2 octets ID de canal L2CAP à utiliser pour cette connexion A2DP
L2CAP_MTU_Size 2 octets Taille maximale du MTU L2CAP contenant des paquets audio encodés
Codec_Information 32 octets Informations spécifiques au codec.

Codec SBC:

Reportez-vous aux éléments d'information spécifiques au codec SBC dans A2DP v1.3.
Octet 0: longueur du bloc | Sous-bandes | Méthode d'allocation
Octet 1: valeur minimale de Bitpool
Octet 2: valeur maximale de Bitpool
Octet 3: Fréquence d'échantillonnage | Mode canal
Octet 4-31: réservé

Codec AAC:

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

Codec LDAC:

Octet 0-3: identifiant du fournisseur
0x0000012D

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

Octet 6: Indice de débit binaire:
0x00 - Élevé
0x01 - Milieu
0x02 - Faible
0x03 - 0x7E - Réservé
0x7F - ABR (débit binaire adaptatif)
0x80 - 0xFF - Réservé

Octet 7: Mode de canal L2DC
0x01 - Stéréo
0x02 - Double
0x04 - Mono
D'autres sont réservés

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 Objectif
Statut 1 octet État de la commande terminée
Sous_Opcode 1 octet 0x0- Démarrer le déchargement A2DP

Arrêter le déchargement A2DP

Sous OCF: 0x02

Cette commande est utilisée pour arrêter le flux de déchargement A2DP.

Paramètre de commande Taille Objectif
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 Objectif
Statut 1 octet État de la commande terminée
Sous_Opcode 1 octet 0x02 - Arrêter le déchargement A2DP

Commande de rapport de qualité Bluetooth

La fonction de commande de rapport de qualité BT 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 de rapport de qualité BT à l'hôte.
  • Approaching LSTO: Si aucun paquet n'est reçu du périphérique BT connecté pendant plus de la moitié de la valeur de Link Supervision TimeOut (LSTO), le contrôleur signale un événement Approaching LSTO à l'hôte.
  • A2DP Audio Choppy: lorsque le contrôleur détecte des facteurs qui provoquent un son saccadé, le contrôleur signale un événement A2DP Audio Choppy à l'hôte.
  • (e) SCO Voice Choppy: lorsque le contrôleur détecte des facteurs qui provoquent une voix saccadée, le contrôleur signale un événement (e) SCO Voice Choppy à l'hôte.

OCF: 0x15E

Paramètre de commande Taille Objectif
BQR_Report_Action 1 octet Action pour ajouter / supprimer le rapport sur les événements de qualité définis dans le paramètre BQR_Quality_Event_Mask, ou tout effacer.

0x00 - Ajouter
0x01 - Supprimer
0x02 - Effacer

Supprimer effacera les rapports d'événement (s) de qualité spécifiques.
Clear effacera tous les rapports d'événements de qualité (le paramètre BQR_Quality_Event_Mask peut être ignoré).

BQR_Quality_Event_Mask 4 octets Masques de bits pour le rapport d'événement de qualité sélectionné.

Bit 0: réglé pour activer le mode de surveillance de la qualité.
Bit 1: réglé pour activer l'événement LSTO en approche.
Bit 2: réglé pour activer l'événement A2DP Audio Choppy.
Bit 3: réglé pour activer l'événement (e) SCO Voice Choppy.
Bit 4 ~ 31: réservé.

BQR_Minimum_Report_Interval 2 octets Définissez l'intervalle de temps minimum du rapport d'événement qualité pour le ou les événements qualité sélectionnés. Le micrologiciel du contrôleur ne doit pas signaler l'événement suivant dans l'intervalle de temps défini. Le réglage de l'intervalle doit être respectif et dédié au ou aux événements de qualité qui sont ajoutés.

Unité: ms
Par défaut: 0 (aucune limitation pour l'intervalle.)
Plage: 0 ~ 65535 ms

Un événement Command Complete sera généré pour cette commande.

Paramètre de retour Taille Objectif
Statut 1 octet État de la commande terminée
Current_Quality_Event_Mask 4 octets Indique le réglage actuel du masque de bits.
Bit 0: le mode de surveillance de la qualité est activé.
Bit 1: Le rapport d'événement LSTO en approche est activé.
Bit 2: le rapport d'événement A2DP Audio Choppy est activé.
Bit 3: (e) Le rapport d'événement SCO Voice Choppy est activé.
Bit 4 ~ 31: réservé.

É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 776 de la spécification BT Core 5.1. Le paramètre d'é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 d'événement Taille Objectif
HCI_vendor_specific_event_code 1 octet 0xFF
sub_event_code 1 octet Un code de sous-événement aura une taille de 1 octet, l'octet suivant immédiatement la longueur du paramètre dans le paquet d'événements HCI.

Sous-événement de violation de 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
Aucun

Sous-événement de changement d'état multi-publicité 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 vont de 0 à max_advt_instances -1
State_Change_Reason 1 octet 0x00: connexion reçue
Connection_handle 2 octets Identifie la connexion qui a provoqué la advt instance advt (0xFFFF si invalide)

Sous-événement de suivi publicitaire LE

This event indicates when an advertiser is found or lost.

Sub event code = 0x56

Sub-event Parameter Size Purpose
APCF_Filter_Index 1 octet Filter Index (0, max_filter -1)
Advertiser_State 1 octet 0x00: Advertiser found
0x01: Advertiser lost
Advt_Info_Present 1 octet 0x00: Advertiser information ( Advt_Info ) present
0x01: Advertiser information ( Advt_Info ) not present
Advertiser_Address 6 octets Public or random address
Advertiser_Address_Type 1 octet 0x00: Public address
0x01: Random address
Advt_Info Tx_Pwr[0] : 1 octet
RSSI[0] : 1 octet
Timestamp[0] : 2 octets
Adv packet_len[0] : 1 octet
Adv_packet[0] : Adv_packet_len octets
Scan_data_resp_len[0] : 1 octet
Scan_data_resp[0] : Scan_data_resp octets

Controller debug info sub-event

This event is used by a Controller to provide binary debug information to a host.

Sub-event code = 0x57

Sub-event Parameter Size Purpose
debug_block_byte_offset_start 2 octets Debug block byte offset from the start
last_block 1 octet 0x00: More debug data present
0x01: Last binary block; no more debug data
cur_pay_load_sz 2 octets Binary block size in a current event
Debug_Data Variable Debug data of cur_payload_sz

Bluetooth Quality Report sub-event

This event indicates that a Bluetooth audio / voice / link quality event happened.

Sub-event code = 0x58

Sub-event Parameter Size Purpose
Quality_Report_Id 1 octet 0x01: Quality reporting on the monitoring mode.
0x02: Approaching LSTO.
0x03: A2DP Audio Choppy.
0x04: (e)SCO Voice Choppy.
0x05 ~ 0xFF: Reserved.
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 ~ 0xFF: Reserved.
Connection_Handle 2 octets Connection Handle.
Connection_Role 1 octet Performing Role for the connection.
0x00: Master
0x01: Follower
0x02 ~ 0xFF: Reserved.
TX_Power_Level 1 octet Current transmit power level for the specified Connection_Handle.

This value shall be the same as the controller's responding to the HCI_Read_Transmit_Power_Level HCI command.

RSSI 1 octet [in dBm]

Received Signal Strength Indication (RSSI) value for the specified Connection_Handle.
This value shall be an absolute receiver signal strength value.
Range: -127 to +20

SNR 1 octet [in dB]

Signal-to-Noise Ratio (SNR) value for the specified Connection_Handle.
The controller shall provide the average SNR of all the channels currently used by the link currently.

Unused_AFH_Channel_Count 1 octet Indicates the number of unused channels in AFH_channel_map.
0x4F ~ 0xFF: Reserved.
AFH_Select_Unideal_Channel_Count 1 octet Indicates the number of the channels which are interfered and have bad quality, but they are still selected for AFH.
The minimum number of channels allowed by the Bluetooth specification is 20, so even if all 79 channels are interfered and have bad quality, the controller still needs to choose at least 20 channels for AFH.
LSTO 2 octets Current Link Supervision Timeout Setting.
Time = N * 0.625 ms
Time Range: 0.625 ms to 40.9 s
Connection_Piconet_Clock 4 octets Piconet Clock for the specified Connection_Handle.
This value shall be the same as the controller's responding to HCI_Read_Clock HCI command with parameter "Which_Clock" of 0x01 (Piconet Clock).
Unit: N * 0.3125 ms (1 Bluetooth Clock)
Retransmission_Count 4 octets The number of retransmissions since the last event.
This count shall be reset after reporting to the host.
No_RX_Count 4 octets No RX count since the last event.
The count increases when no packet is received at the scheduled time slot or the received packet is corrupted.
This count shall be reset after reporting to the host.
NAK_Count 4 octets NAK (Negative Acknowledge) count since the last event.
This count shall be reset after reporting to the host.
Last_TX_ACK_Timestamp 4 octets Timestamp of last TX ACK. It is based on the Bluetooth Clock of the piconet master (CLK).
Unit: N * 0.3125 ms (1 Bluetooth Clock)
Flow_Off_Count 4 octets The number of times the controller receives Flow-off (STOP) since the last event.
This count shall be reset after reporting to the host.
Last_Flow_On_Timestamp 4 octets Timestamp of last Flow-on (GO). It is based on the Bluetooth Clock of the piconet master (CLK).
Unit: N * 0.3125 ms (1 Bluetooth Clock)
Buffer_Overflow_Bytes 4 octets [in Byte]

Buffer overflow count since the last event.
The controller counts how many bytes of data are dropped.
This count shall be reset after reporting to host.

Buffer_Underflow_Bytes 4 octets [in Byte]

Buffer underflow count since the last event.
This count shall be reset after reporting to host.

Vendor Specific Parameter (Parameter Total Length - 48) * octets For the controller vendor to obtain more vendor specific parameters.

Multi-advertiser support

The objectives of multi-advertiser support are the following:

  • Ability to support multiple advertisements ( max_advt_instances )
  • Different transmit powers to allow for a varying range
  • Different advertising content
  • An individualized response for each advertiser
  • Privacy (non-trackable) for each advertiser
  • Connectable

To keep this specification close to existing standards, the following vendor-specific commands are provided. They are derived from the Bluetooth Core 4.1 Specification.

LE_Multi_Advt_Command

OCF: 0x154

Command parameter Size Purpose
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

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
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

Base reference: Bluetooth Core 4.1 Specification, page 964 (LE Set Advertising Parameter Command)

Sub OCF: 0x01

Sub-command parameter Size Purpose
Advertising_Interval_Min Per spec Per spec
Advertising_Interval_Max Per spec Per spec
Advertising_Type Per spec Per spec
Own_Address_Type Per spec Per spec
Own_Address Per spec Per spec
Direct_Address_Type Per spec Per spec
Direct_Address Per spec Per spec
Advertising_Channel_Map Per spec Per spec
Adverstising_Filter_Policy Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance
Tx_power 1 octet Transmit_Power
Unit - in dBm (signed integer)
Range (-70 to +20)

The Own_Address parameter could be a host-configured address at the time of setting up this multi-advertisement instance. This provides the ability to have a resolvable private address at the time of the transmit of the first beacon. Advertisement on an instance will continue irrespective of the connection. The host BT stack could issue a command to start advertisement on an instance, post connection.

A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success (invalid parameter) code if the advertising instance or Tx_Power parameters are invalid.

Return parameter Size Purpose
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x01 [ Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 969 (LE Set Advertising Data Command)

Sub OCF: 0x02

Sub-command parameter Size Purpose
Advertising_Data_Length Per spec Per spec
Advertising_Data Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance

A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success code if the advertising instance or Tx_Power parameters are invalid.

Return parameter Size Purpose
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x02 [ Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 970 (LE Set Scan Response Data Command)

Sub OCF: 0x03

Sub-command parameter Size Purpose
Scan_Response_Data_Length Per spec Per spec
Scan_Response_Data Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance

A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success code (invalid parameter) if the advertising instance or Tx_Power parameters are invalid.

Return parameter Size Purpose
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x03 [ Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 963 (LE Set Random Address Command)

Sub OCF: 0x04

Sub-command parameter Size Purpose
Random Address Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x04 [ Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 971 (LE Set Advertise Enable Command in that core specification)

OCF: 0x05

Sub-command parameter Size Purpose
Advertising_Enable 1 octet A value of 1 means enable. Any other value means disable.
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance. Instance 0 means a standard HCI instance.

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x05 [ Set_Advt_Enable_Multi_Sub_Cmd]

Offloaded resolution of private address

This feature resolves a private address in the controller firmware or hardware, which provides the following benefits:

  • Latency involved with the host in resolving a private address
  • Saving power by refraining from waking up the host

LE_Set_RPA_Timeout

OCF: 0x15C

Command parameter Size Purpose
LE_local_IRK 16 octet The local device IRK used to generate the random resolvable address(es).
tRPA_min 2 octets The minimum RPA generation timeout in seconds. The controller must generate new resolvable addresses for any advertising/scanning/connection events on or after this timeout.
Valid range: 300-1800
tRPA_max 2 octets The maximum RPA generation timeout in seconds. The controller must generate new resolvable addresses for any advertising/scanning/connection events on or before this timeout.
Valid range: tRPA_min -1800
Return parameter Size Purpose
Status 1 octet The status of the command.

Suggested HCI status values:
0x00 Success
0x01 Unknown command (if not supported)
0x12 Invalid command parameters (if any parameters are outside the given range)

LE_RPA_offload_Command

OCF: 0x155

Command parameter Size Purpose
RPA_offload_opcode 1 octet 0x1 - Enable customer specific feature
0x2 - Add IRK to the list
0x3 - Remove IRK from the list
0x4 - Clear IRK list
0x5 - Read IRK list entry

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Event_RPA_offload_opcode 1 octet 0x1 - Enable customer specific feature
0x2 - Add IRK to the list
0x3 - Remove IRK from the list
0x4 - Clear IRK list
0x5 - Read IRK list entry

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

Sub-command parameter Size Purpose
enable_customer_specific_feature_set 1 octet 0x01 - Enable offloaded RPA feature
0x00 - Disable offloaded RPA feature

RPA offload is required to be enabled by the host, based on the chip capability. Refer to the LE_Get_Vendor_Capabilities_Command . Each chip can have a varying max_irk_list_sz in the firmware.

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x01 [Enable customer-specific feature]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

Sub-command parameter Size Purpose
LE_IRK 16 octets LE IRK (1st byte LSB)
Address_Type 1 octet 0: Public address
1: Random address
LE_Device_Address 6 octets Public or random address associated to the IRK (1st byte LSB)

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x02 [Add IRK to the list]
LE_IrkList_AvailableSpaces 1 octet Available IRL list entries after current operation

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

Sub-command parameter Size Purpose
Address_Type 1 octet 0: Public address
1: Random address
LE_Device_Address 6 octets Public or random address that associates to the IRK

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x03 [Remove IRK from the list]
LE_IrkList_AvailableSpaces 1 octet Available IRL list entries after current operation

LE_RPA_offload: Clear_IRK_list_sub_Command

Sub OCF: 0x04

Sub-command parameter Size Purpose
None

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x04 [Clear IRK List]
LE_IrkList_AvailableSpaces 1 octet Available IRL list entries after current operation [ max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

Sub-command parameter Size Purpose
LE_read_IRK_list_entry-index 1 octet Index of the IRK list [0, max_irk_list_sz-1]

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x05 [Read IRK List Entry]
LE_Read_IRK_List_entry 1 octet Index of the IRK that the host wants to read back (maximum IRK list size is 32)
LE_IRK 16 octets IRK value
Address_Type 1 octet 0: Public address
1: Random address
LE_Device_Address 6 octets Public or random address associated to the IRK
LE_Resolved_Private_Address 6 octets Current resolved resolvable private address of this IRK