En esta página

QLowEnergyController Class

La clase QLowEnergyController proporciona acceso a dispositivos Bluetooth de baja energía. Más...

Cabecera: #include <QLowEnergyController>
CMake: find_package(Qt6 REQUIRED COMPONENTS Bluetooth)
target_link_libraries(mytarget PRIVATE Qt6::Bluetooth)
qmake: QT += bluetooth
Hereda: QObject

Tipos Públicos

enum ControllerState { UnconnectedState, ConnectingState, ConnectedState, DiscoveringState, DiscoveredState, …, AdvertisingState }
enum Error { NoError, UnknownError, UnknownRemoteDeviceError, NetworkError, InvalidBluetoothAdapterError, …, RssiReadError }
enum RemoteAddressType { PublicAddress, RandomAddress }
enum Role { CentralRole, PeripheralRole }

Funciones Públicas

virtual ~QLowEnergyController()
QLowEnergyService *addService(const QLowEnergyServiceData &service, QObject *parent = nullptr)
void connectToDevice()
QLowEnergyService *createServiceObject(const QBluetoothUuid &serviceUuid, QObject *parent = nullptr)
void disconnectFromDevice()
void discoverServices()
QLowEnergyController::Error error() const
QString errorString() const
QBluetoothAddress localAddress() const
(since 6.2) int mtu() const
(since 6.5) void readRssi()
QBluetoothAddress remoteAddress() const
QLowEnergyController::RemoteAddressType remoteAddressType() const
QBluetoothUuid remoteDeviceUuid() const
QString remoteName() const
void requestConnectionUpdate(const QLowEnergyConnectionParameters &parameters)
QLowEnergyController::Role role() const
QList<QBluetoothUuid> services() const
void setRemoteAddressType(QLowEnergyController::RemoteAddressType type)
void startAdvertising(const QLowEnergyAdvertisingParameters &parameters, const QLowEnergyAdvertisingData &advertisingData, const QLowEnergyAdvertisingData &scanResponseData = QLowEnergyAdvertisingData())
QLowEnergyController::ControllerState state() const
void stopAdvertising()

Señales

void connected()
void connectionUpdated(const QLowEnergyConnectionParameters &newParameters)
void disconnected()
void discoveryFinished()
(since 6.2) void errorOccurred(QLowEnergyController::Error newError)
void mtuChanged(int mtu)
(since 6.5) void rssiRead(qint16 rssi)
void serviceDiscovered(const QBluetoothUuid &newService)
void stateChanged(QLowEnergyController::ControllerState state)

Miembros públicos estáticos

QLowEnergyController *createCentral(const QBluetoothDeviceInfo &remoteDevice, QObject *parent = nullptr)
QLowEnergyController *createCentral(const QBluetoothDeviceInfo &remoteDevice, const QBluetoothAddress &localDevice, QObject *parent = nullptr)
QLowEnergyController *createPeripheral(QObject *parent = nullptr)
(since 6.2) QLowEnergyController *createPeripheral(const QBluetoothAddress &localDevice, QObject *parent = nullptr)

Descripción Detallada

QLowEnergyController actúa como punto de entrada para el desarrollo de Bluetooth Low Energy.

Bluetooth Low Energy define dos tipos de dispositivos; el periférico y el central. Cada uno realiza una tarea diferente. El dispositivo periférico proporciona datos que son utilizados por los dispositivos centrales. Un ejemplo podría ser un sensor de humedad que mide la humedad de un jardín de invierno. Un dispositivo como un teléfono móvil puede leer el valor del sensor y mostrárselo al usuario en el contexto más amplio de todos los sensores del mismo entorno. En este caso, el sensor es el dispositivo periférico y el teléfono móvil actúa como dispositivo central.

Un controlador en el papel central se crea a través del método de fábrica createCentral(). Dicho objeto actúa esencialmente como un marcador de posición hacia un dispositivo periférico remoto de baja energía, permitiendo características como el descubrimiento de servicios y el seguimiento del estado.

Después de haber creado un objeto controlador en el rol central, el primer paso es establecer una conexión a través de connectToDevice(). Una vez establecida la conexión, state() del controlador cambia a QLowEnergyController::ConnectedState y se emite la señal connected(). Es importante mencionar que algunas plataformas como un Linux basado en BlueZ no pueden mantener dos instancias conectadas de QLowEnergyController al mismo dispositivo remoto. En tales casos la segunda llamada a connectToDevice() puede fallar. Es posible que esta limitación desaparezca en el futuro. La función disconnectFromDevice() se utiliza para romper la conexión existente.

El segundo paso tras establecer la conexión es descubrir los servicios que ofrece el dispositivo periférico remoto. Este proceso se inicia mediante discoverServices() y finaliza cuando se emite la señal discoveryFinished(). Los servicios descubiertos pueden enumerarse a través de services().

El último paso consiste en crear objetos de servicio. La función createServiceObject() actúa como fábrica para cada objeto de servicio y espera el UUID del servicio como parámetro. El contexto que llama debe tomar posesión de la instancia QLowEnergyService devuelta.

Cualquier instancia de QLowEnergyService, QLowEnergyCharacteristic o QLowEnergyDescriptor que se cree posteriormente a partir de la conexión de este controlador deja de ser válida en cuanto el controlador se desconecta del dispositivo Bluetooth Low Energy remoto.

Un controlador con el rol de periférico se crea a través del método de fábrica createPeripheral(). Dicho objeto actúa como un dispositivo periférico en sí mismo, habilitando características como servicios de publicidad y permitiendo a los clientes recibir notificaciones sobre cambios en los valores de las características.

Tras haber creado un objeto controlador en el rol periférico, el primer paso es rellenar el conjunto de servicios GATT ofrecidos a los dispositivos cliente mediante llamadas a addService(). Después, se llamaría a startAdvertising() para que el dispositivo emita algunos datos y, dependiendo del tipo de publicidad que se esté haciendo, también escuche las conexiones entrantes de los clientes GATT.

Véase también QLowEnergyService, QLowEnergyCharacteristic, QLowEnergyDescriptor, QLowEnergyAdvertisingParameters, y QLowEnergyAdvertisingData.

Documentación de los tipos de miembros

enum QLowEnergyController::ControllerState

Indica el estado del objeto controlador.

ConstanteValorDescripción
QLowEnergyController::UnconnectedState0El controlador no está conectado a un dispositivo remoto.
QLowEnergyController::ConnectingState1El controlador está intentando conectarse a un dispositivo remoto.
QLowEnergyController::ConnectedState2El controlador está conectado a un dispositivo remoto.
QLowEnergyController::DiscoveringState3El controlador está recuperando la lista de servicios ofrecidos por el dispositivo remoto.
QLowEnergyController::DiscoveredState4El controlador ha descubierto todos los servicios ofrecidos por el dispositivo remoto.
QLowEnergyController::ClosingState5El controlador está a punto de desconectarse del dispositivo remoto.
QLowEnergyController::AdvertisingState (since Qt 5.7)6El controlador está anunciando datos.

enum QLowEnergyController::Error

Indica todas las posibles condiciones de error encontradas durante la existencia del controlador.

ConstanteValorDescripción
QLowEnergyController::NoError0No se ha producido ningún error.
QLowEnergyController::UnknownError1Se ha producido un error desconocido.
QLowEnergyController::UnknownRemoteDeviceError2No se puede encontrar el dispositivo remoto Bluetooth Low Energy con la dirección pasada al constructor de esta clase.
QLowEnergyController::NetworkError3Ha fallado el intento de leer o escribir en el dispositivo remoto.
QLowEnergyController::InvalidBluetoothAdapterError4No se puede encontrar el dispositivo Bluetooth local con la dirección pasada al constructor de esta clase o no hay dispositivo Bluetooth local.
QLowEnergyController::ConnectionError (since Qt 5.5)5Ha fallado el intento de conexión con el dispositivo remoto.
QLowEnergyController::AdvertisingError (since Qt 5.7)6Ha fallado el intento de iniciar la publicidad.
QLowEnergyController::RemoteHostClosedError (since Qt 5.10)7El dispositivo remoto ha cerrado la conexión.
QLowEnergyController::AuthorizationError (since Qt 5.14)8El dispositivo Bluetooth local cerró la conexión debido a una autorización insuficiente.
QLowEnergyController::MissingPermissionsError (since Qt 6.4)9El sistema operativo solicita permisos que el usuario no ha concedido.
QLowEnergyController::RssiReadError (since Qt 6.5)10El intento de leer el RSSI (indicador de intensidad de señal recibida) de un dispositivo remoto finalizó con error.

enum QLowEnergyController::RemoteAddressType

Indica qué tipo de dirección Bluetooth utiliza el dispositivo remoto.

ConstanteValorDescripción
QLowEnergyController::PublicAddress0El dispositivo remoto utiliza una dirección Bluetooth pública.
QLowEnergyController::RandomAddress1Una dirección aleatoria es una característica de seguridad de Bluetooth Low Energy. Los periféricos que utilizan este tipo de direcciones pueden cambiar con frecuencia su dirección Bluetooth. Esta información es necesaria cuando se intenta conectar a un periférico.

enum QLowEnergyController::Role

Indica el rol del objeto controlador.

ConstanteValorDescripción
QLowEnergyController::CentralRole0El controlador actúa como un cliente que interactúa con un dispositivo remoto que está en el rol de periférico. El controlador puede iniciar conexiones, descubrir servicios y leer y escribir características.
QLowEnergyController::PeripheralRole1El controlador puede utilizarse para anunciar servicios y gestionar las conexiones entrantes y las solicitudes de los clientes, actuando como un servidor GATT. Un dispositivo remoto conectado al controlador tiene el rol central.

Nota: El rol periférico no está soportado en Windows. Además, en Linux, la gestión del comando ATT "Signed Write" en el lado del servidor requiere BlueZ 5 y la versión 3.7 o posterior del kernel.

Véase también QLowEnergyController::createCentral() y QLowEnergyController::createPeripheral().

Documentación de las funciones miembro

[virtual noexcept] QLowEnergyController::~QLowEnergyController()

Destruye la instancia QLowEnergyController.

QLowEnergyService *QLowEnergyController::addService(const QLowEnergyServiceData &service, QObject *parent = nullptr)

Construye y devuelve un objeto QLowEnergyService con parent desde service. El controlador debe estar en PeripheralRole y en UnconnectedState. El objeto service debe ser válido.

Nota: Una vez que la instancia del periférico se desconecta del dispositivo central remoto o si se llama manualmente a disconnectFromDevice(), toda definición de servicio que se haya añadido previamente mediante esta función se elimina del periférico. Por lo tanto, se debe volver a llamar a esta función antes de volver a anunciar esta instancia de controlador periférico. El comportamiento descrito es específico de la conexión y, por tanto, no depende de si se ha llamado a stopAdvertising().

Véase también stopAdvertising(), disconnectFromDevice() y QLowEnergyServiceData::addIncludedService.

void QLowEnergyController::connectToDevice()

Se conecta al dispositivo Bluetooth Low Energy remoto.

Esta función no hace nada si la señal state() del controlador no es igual a UnconnectedState. La señal connected() se emite una vez que la conexión se ha establecido correctamente.

En sistemas Linux/BlueZ, no es posible conectarse al mismo dispositivo remoto utilizando dos instancias de esta clase. La segunda llamada a esta función puede fallar con un error. Es posible que esta limitación se elimine en futuras versiones.

Véase también disconnectFromDevice().

[signal] void QLowEnergyController::connected()

Esta señal se emite cuando el controlador se conecta con éxito al dispositivo remoto de baja energía (si el controlador está en CentralRole) o si un dispositivo remoto de baja energía se conectó al controlador (si el controlador está en PeripheralRole). En iOS, macOS y Android esta señal no es fiable si el controlador está en PeripheralRole. En iOS y macOS el controlador sólo adivina que alguna central se conectó a nuestro periférico en cuanto esta central intenta escribir/leer una característica/descriptor. En Android el controlador monitoriza todos los dispositivos GATT conectados. En Linux BlueZ DBus peripheral backend la central se considera conectada cuando lee/escribe por primera vez una característica o un descriptor.

[signal] void QLowEnergyController::connectionUpdated(const QLowEnergyConnectionParameters &newParameters)

Esta señal se emite cuando cambian los parámetros de la conexión. Esto puede ocurrir como resultado de llamar a requestConnectionUpdate() o por otras razones, por ejemplo porque el otro lado de la conexión solicitó nuevos parámetros. Los nuevos valores pueden recuperarse desde newParameters.

Véase también requestConnectionUpdate().

[static] QLowEnergyController *QLowEnergyController::createCentral(const QBluetoothDeviceInfo &remoteDevice, QObject *parent = nullptr)

Devuelve un nuevo objeto de esta clase que está en CentralRole y tiene como objeto padre parent. El remoteDevice se refiere al dispositivo con el que se establecerá una conexión posteriormente.

El controlador utiliza el adaptador Bluetooth local por defecto para la gestión de la conexión.

Véase también QLowEnergyController::CentralRole.

[static] QLowEnergyController *QLowEnergyController::createCentral(const QBluetoothDeviceInfo &remoteDevice, const QBluetoothAddress &localDevice, QObject *parent = nullptr)

Devuelve una nueva instancia de esta clase con parent.

remoteDevice debe contener la dirección del dispositivo Bluetooth Low Energy remoto al que este objeto debe intentar conectarse posteriormente.

La conexión se establece a través de localDevice. Si localDevice no es válido, se selecciona automáticamente el dispositivo local por defecto. Si localDevice especifica un dispositivo local que no es un adaptador Bluetooth local, error() se convierte en InvalidBluetoothAdapterError una vez que se llama a connectToDevice().

Tenga en cuenta que especificar el dispositivo local que se utilizará para la conexión sólo es posible cuando se utiliza BlueZ. El resto de plataformas no admiten esta función.

[static] QLowEnergyController *QLowEnergyController::createPeripheral(QObject *parent = nullptr)

Devuelve un nuevo objeto de esta clase que está en PeripheralRole y tiene el objeto padre parent. Normalmente, los siguientes pasos son añadir algunos servicios y finalmente llamar a startAdvertising() sobre el objeto devuelto.

El controlador utiliza el adaptador Bluetooth local por defecto para la gestión de la conexión.

Véase también QLowEnergyController::PeripheralRole.

[static, since 6.2] QLowEnergyController *QLowEnergyController::createPeripheral(const QBluetoothAddress &localDevice, QObject *parent = nullptr)

Devuelve un nuevo objeto de esta clase que está en PeripheralRole y tiene el objeto padre parent y está usando localDevice. Típicamente, los siguientes pasos son añadir algunos servicios y finalmente llamar a startAdvertising() sobre el objeto devuelto.

El periférico se crea en localDevice. Si localDevice no es válido, se selecciona automáticamente el dispositivo local por defecto. Si localDevice especifica un dispositivo local que no es un adaptador Bluetooth local, error() se establece en InvalidBluetoothAdapterError.

La selección de localDevice sólo se admite en Linux. En otras plataformas, el parámetro se ignora.

Esta función se introdujo en Qt 6.2.

Véase también QLowEnergyController::PeripheralRole.

QLowEnergyService *QLowEnergyController::createServiceObject(const QBluetoothUuid &serviceUuid, QObject *parent = nullptr)

Crea una instancia del servicio representado por serviceUuid. El parámetro serviceUuid debe haberse obtenido a través de services().

La persona que llama toma la propiedad del puntero devuelto y puede pasar un parámetro parent como propietario por defecto.

Esta función devuelve un puntero nulo si no se encuentra ningún servicio con serviceUuid en el dispositivo remoto o si el controlador está desconectado.

Esta función también puede devolver instancias para servicios secundarios. Las relaciones de inclusión entre servicios pueden expresarse mediante QLowEnergyService::includedServices().

Si se llama a esta función varias veces utilizando el mismo UUID de servicio, las instancias QLowEnergyService devueltas comparten sus datos internos. Por lo tanto, si una de las instancias inicia el descubrimiento de los detalles del servicio, las demás instancias también pasan automáticamente al estado de descubrimiento.

Véase también services().

void QLowEnergyController::disconnectFromDevice()

Se desconecta del dispositivo remoto.

Cualquier instancia de QLowEnergyService, QLowEnergyCharacteristic o QLowEnergyDescriptor resultante de la conexión actual se invalida automáticamente. Una vez que cualquiera de esos objetos se invalida, permanecen inválidos incluso si este objeto controlador se vuelve a conectar.

Esta función no hace nada si el controlador está en UnconnectedState.

Si el controlador está en el rol periférico, detiene la publicidad y elimina todos los servicios que hayan sido añadidos previamente a través de addService(). Para reutilizar la instancia QLowEnergyController, la aplicación debe volver a añadir servicios y reiniciar el modo de publicidad llamando a startAdvertising().

Véase también connectToDevice().

[signal] void QLowEnergyController::disconnected()

Esta señal se emite cuando el controlador se desconecta del dispositivo remoto de baja energía o viceversa. En iOS y macOS esta señal no es fiable si el controlador está en PeripheralRole. En Android la señal se emite cuando el último dispositivo conectado se desconecta. En BlueZ DBus backend el controlador se considera desconectado cuando el último cliente que ha accedido a los atributos se ha desconectado.

void QLowEnergyController::discoverServices()

Inicia el proceso de descubrimiento del servicio.

El progreso del descubrimiento se indica mediante la señal serviceDiscovered(). La señal discoveryFinished() se emite cuando el proceso ha finalizado.

Si la instancia del controlador no está conectada o el controlador ya ha realizado el descubrimiento de servicios, esta función no hará nada.

Nota: Algunas plataformas almacenan internamente en caché la lista de servicios de un dispositivo que fue descubierto en el pasado. Esto puede ser problemático si el dispositivo remoto cambió su lista de servicios o su árbol de inclusión. Si este comportamiento es un problema, la mejor solución es desactivar temporalmente Bluetooth. Esto provoca un reinicio de los datos de la caché. Actualmente Android muestra este comportamiento de la caché.

[signal] void QLowEnergyController::discoveryFinished()

Esta señal se emite cuando finaliza el descubrimiento del servicio en ejecución. La señal no se emite si el proceso de descubrimiento finaliza con un error.

Esta señal sólo puede emitirse si el controlador se encuentra en CentralRole.

Véase también discoverServices() y error().

QLowEnergyController::Error QLowEnergyController::error() const

Devuelve el último error ocurrido o NoError.

[signal, since 6.2] void QLowEnergyController::errorOccurred(QLowEnergyController::Error newError)

Esta señal se emite cuando se produce un error. El parámetro newError describe el error que se ha producido.

Esta función se introdujo en Qt 6.2.

Véase también error() y errorString().

QString QLowEnergyController::errorString() const

Devuelve una representación textual del último error ocurrido. La cadena se traduce.

QBluetoothAddress QLowEnergyController::localAddress() const

Devuelve la dirección del adaptador Bluetooth local que se está utilizando para la comunicación.

Si se solicitó que esta instancia de clase utilizara el adaptador predeterminado, pero no había ningún adaptador predeterminado cuando se creó esta instancia de clase, el QBluetoothAddress devuelto será null.

Véase también QBluetoothAddress::isNull().

[since 6.2] int QLowEnergyController::mtu() const

Devuelve el tamaño de la MTU.

Durante la configuración de la conexión, se negocia el tamaño de la MTU de ATT. Este método proporciona el resultado de esta negociación. Puede utilizarse para optimizar el tamaño de los paquetes en algunas situaciones. La cantidad máxima de datos que se pueden transferir en un solo paquete es mtu-3 bytes. Se necesitan 3 bytes para la cabecera del protocolo ATT.

Antes de la configuración de la conexión y la negociación de MTU, se devolverá el valor por defecto de 23.

No todas las plataformas exponen el valor MTU. En esas plataformas (por ejemplo, Linux) esta función siempre devuelve -1.

Si el controlador está en PeripheralRole, puede haber varios dispositivos centrales conectados a él. En esos casos esta función devuelve la MTU de la última conexión que se negoció.

Esta función se introdujo en Qt 6.2.

[signal] void QLowEnergyController::mtuChanged(int mtu)

Esta señal se emite como resultado de un cambio exitoso de MTU. mtu representa el nuevo valor.

Nota: Si el controlador está en PeripheralRole, el valor de MTU se negocia para cada cliente/dispositivo central individualmente. Por lo tanto, esta señal puede emitirse varias veces seguidas para uno o varios dispositivos.

Véase también mtu().

[since 6.5] void QLowEnergyController::readRssi()

readRssi() lee el RSSI (indicador de intensidad de señal recibida) de un dispositivo remoto conectado. Si la lectura se ha realizado correctamente, el RSSI se notifica mediante la señal rssiRead().

Nota: Antes de llamar a readRssi(), este controlador debe estar conectado a un periférico. Este controlador debe ser creado usando createCentral().

Nota: En caso de que el backend Bluetooth que esté utilizando no soporte la lectura de RSSI, la señal errorOccurred() se emite con un código de error QLowEnergyController::RssiReadError. Por el momento, las plataformas que soportan la lectura de RSSI incluyen Android, iOS y macOS.

Esta función se introdujo en Qt 6.5.

Véase también rssiRead(), connectToDevice(), state(), createCentral() y errorOccurred().

QBluetoothAddress QLowEnergyController::remoteAddress() const

Devuelve la dirección del dispositivo Bluetooth Low Energy remoto.

Para un controlador en CentralRole, este valor siempre será el que se pasó cuando se creó el objeto controlador. Para un controlador en PeripheralRole, este valor es una de las direcciones del dispositivo cliente conectado actualmente. Esta dirección no será válida si el controlador no se encuentra actualmente en ConnectedState.

QLowEnergyController::RemoteAddressType QLowEnergyController::remoteAddressType() const

Devuelve el tipo de remoteAddress(). Por defecto, este valor se inicializa a PublicAddress.

Véase también setRemoteAddressType().

QBluetoothUuid QLowEnergyController::remoteDeviceUuid() const

Devuelve el identificador único del dispositivo Bluetooth Low Energy remoto.

En macOS/iOS/tvOS CoreBluetooth no expone/acepta direcciones hardware para dispositivos LE; en su lugar los desarrolladores deben usar UUIDs únicos de 128 bits, generados por CoreBluetooth. Estos UUIDS permanecerán constantes para el mismo par central <-> periférico y los utilizaremos cuando nos conectemos a un dispositivo remoto. Para un controlador en CentralRole, este valor será siempre el que se pasó cuando se creó el objeto controlador. Para un controlador en PeripheralRole, este valor no es válido.

QString QLowEnergyController::remoteName() const

Devuelve el nombre del dispositivo Bluetooth Low Energy remoto, si el controlador se encuentra en CentralRole. De lo contrario, el resultado no se especifica.

void QLowEnergyController::requestConnectionUpdate(const QLowEnergyConnectionParameters &parameters)

Solicita al controlador que actualice la conexión según parameters. Si la solicitud tiene éxito, se emitirá la señal connectionUpdated() con los nuevos parámetros reales. Consulte la clase QLowEnergyConnectionParameters para obtener más información sobre los parámetros de conexión.

Android sólo permite indirectamente el ajuste de este conjunto de parámetros. Los parámetros de conexión están separados en tres categorías (prioridad alta, baja y equilibrada). Cada categoría implica un conjunto preconfigurado de valores para QLowEnergyConnectionParameters::minimumInterval(), QLowEnergyConnectionParameters::maximumInterval() y QLowEnergyConnectionParameters::latency(). Aunque la solicitud de conexión es una operación asíncrona, Android no proporciona una llamada de retorno que indique el resultado de la solicitud. Se trata de un error reconocido de Android. Debido a este bug Android no emite la señal connectionUpdated().

Nota: Actualmente, esta funcionalidad sólo está implementada en el kernel backend de Linux y Android.

Véase también connectionUpdated().

QLowEnergyController::Role QLowEnergyController::role() const

Devuelve el rol en el que se encuentra este objeto controlador.

El rol se determina al construir una instancia de QLowEnergyController utilizando createCentral() o createPeripheral().

[signal, since 6.5] void QLowEnergyController::rssiRead(qint16 rssi)

Esta señal se emite tras la lectura correcta del RSSI (indicador de intensidad de señal recibida) de un dispositivo remoto conectado. El parámetro rssi representa el nuevo valor.

Esta función se introdujo en Qt 6.5.

Véase también readRssi().

[signal] void QLowEnergyController::serviceDiscovered(const QBluetoothUuid &newService)

Esta señal se emite cada vez que se descubre un nuevo servicio. El parámetro newService contiene el UUID del servicio encontrado.

Esta señal sólo puede emitirse si el controlador se encuentra en CentralRole.

Véase también discoverServices() y discoveryFinished().

QList<QBluetoothUuid> QLowEnergyController::services() const

Devuelve la lista de servicios ofrecidos por el dispositivo remoto, si el controlador se encuentra en CentralRole. De lo contrario, el resultado no se especifica.

La lista contiene todos los servicios primarios y secundarios.

Véase también createServiceObject().

void QLowEnergyController::setRemoteAddressType(QLowEnergyController::RemoteAddressType type)

Establece la dirección remota type. El tipo es necesario para conectar con el dispositivo Bluetooth Low Energy remoto.

Sólo es necesario establecer este atributo en sistemas Linux/BlueZ con kernels Linux antiguos (v3.3 o inferior), o si CAP_NET_ADMIN no está establecido para el ejecutable. El valor por defecto del atributo es RandomAddress.

Nota: Todas las demás plataformas gestionan este indicador de forma transparente y, por tanto, las aplicaciones pueden ignorarlo por completo. En Linux, BlueZ no expone directamente el indicador de tipo de dirección, aunque algunos casos de uso requieren esta información. La única forma de detectar el indicador es a través de la API de gestión Bluetooth del kernel de Linux (se requiere la versión 3.4+ del kernel). Esta API requiere las capacidades CAP_NET_ADMIN. Si el proceso local QtBluetooth tiene esta capacidad, QtBluetooth utilizará la API. Esto asume que QBluetoothDeviceDiscoveryAgent fue utilizado antes de llamar a QLowEnergyController::connectToDevice().

Véase también remoteAddressType().

void QLowEnergyController::startAdvertising(const QLowEnergyAdvertisingParameters &parameters, const QLowEnergyAdvertisingData &advertisingData, const QLowEnergyAdvertisingData &scanResponseData = QLowEnergyAdvertisingData())

Inicia la publicidad de los datos indicados en advertisingData y scanResponseData, utilizando los parámetros establecidos en parameters. PeripheralRole Si parameters indica que el anuncio debe ser conectable, entonces esta función también comienza a escuchar las conexiones entrantes de los clientes.

Proporcionar scanResponseData no es necesario, ya que no es aplicable para ciertas configuraciones de parameters. advertisingData y scanResponseData están limitados a datos de usuario de 31 bytes. Si, por ejemplo, se añaden varios uuids de 128 bits a advertisingData, es posible que los paquetes anunciados no contengan todos los uuids. El límite existente puede haber provocado el truncamiento de los uuids. En tales casos, puede utilizarse scanResponseData para obtener información adicional.

En BlueZ DBus backend BlueZ decide si, y qué datos, utilizar en una respuesta de escaneo. Por lo tanto, se recomienda establecer todos los datos de publicidad en el parámetro principal advertisingData. Si se definen tanto los datos de publicidad como los de respuesta de escaneo, tendrán prioridad los datos de respuesta de escaneo.

Si este objeto no está actualmente en UnconnectedState, no ocurre nada.

Véase también stopAdvertising().

QLowEnergyController::ControllerState QLowEnergyController::state() const

Devuelve el estado actual del controlador.

Véase también stateChanged().

[signal] void QLowEnergyController::stateChanged(QLowEnergyController::ControllerState state)

Esta señal se emite cuando cambia el estado del controlador. El nuevo state también puede recuperarse a través de state().

Véase también state().

void QLowEnergyController::stopAdvertising()

Detiene la publicidad, si este objeto se encuentra actualmente en estado de publicidad.

El controlador debe estar en PeripheralRole para que esta función funcione. No invalida los servicios que se hayan añadido previamente mediante addService().

Véase también startAdvertising().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.