QLowEnergyController Class
QLowEnergyController クラスは Bluetooth Low Energy デバイスへのアクセスを提供します。詳細...
Header: | #include <QLowEnergyController> |
qmake: | QT += bluetooth |
Inherits: | QObject |
パブリックタイプ
enum | ControllerState { UnconnectedState, ConnectingState, ConnectedState, DiscoveringState, DiscoveredState, …, AdvertisingState } |
enum | Error { NoError, UnknownError, UnknownRemoteDeviceError, NetworkError, InvalidBluetoothAdapterError, …, RssiReadError } |
enum | RemoteAddressType { PublicAddress, RandomAddress } |
enum | Role { CentralRole, PeripheralRole } |
パブリック関数
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 ¶meters) |
QLowEnergyController::Role | role() const |
QList<QBluetoothUuid> | services() const |
void | setRemoteAddressType(QLowEnergyController::RemoteAddressType type) |
void | startAdvertising(const QLowEnergyAdvertisingParameters ¶meters, const QLowEnergyAdvertisingData &advertisingData, const QLowEnergyAdvertisingData &scanResponseData = QLowEnergyAdvertisingData()) |
QLowEnergyController::ControllerState | state() const |
void | stopAdvertising() |
信号
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) |
静的パブリックメンバー
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) |
詳細説明
QLowEnergyControllerはBluetooth Low Energy開発のエントリーポイントとして機能します。
Bluetooth Low Energyは、周辺機器と中央機器の2種類のデバイスを定義しています。それぞれの役割は異なるタスクを実行します。周辺デバイスは中央デバイスが利用するデータを提供します。例えば、冬の庭の湿度を測定する湿度センサーがそうです。携帯電話のようなデバイスはセンサーの値を読み取り、同じ環境にあるすべてのセンサーという大きなコンテキストの中でユーザーに表示する。この場合、センサーは周辺機器であり、携帯電話は中央機器として機能する。
中心的な役割を果たすコントローラは、createCentral() ファクトリーメソッドで作成されます。このようなオブジェクトは、基本的にリモートのLow Energy周辺デバイスのプレースホルダとして機能し、サービス検出や状態追跡などの機能を実現します。
中央の役割にコントローラオブジェクトを作成した後、最初のステップは、connectToDevice ()を介して接続を確立することです。接続が確立されると、コントローラのstate() がQLowEnergyController::ConnectedState に変更され、connected() シグナルが発信される。BlueZベースのLinuxなど、一部のプラットフォームでは、QLowEnergyController の同じリモート・デバイスへの2つの接続インスタンスを維持することができない。そのような場合、connectToDevice ()の2回目の呼び出しが失敗することがある。この制限は、将来的になくなる可能性がある。既存の接続を切断するには、disconnectFromDevice ()関数を使用する。
接続確立後の第2段階は、リモート周辺デバイスが提供するサービスを検出することである。この処理は、discoverServices ()を介して開始され、discoveryFinished ()シグナルが発せられた時点で終了する。検出されたサービスは、services ()を介して列挙することができる。
最後のステップは、サービス・オブジェクトの作成である。createServiceObject ()関数は、各サービス・オブジェクトのファクトリーとして動作し、パラメータとしてサービスのUUIDを要求する。呼び出し元のコンテキストは、返されたQLowEnergyService インスタンスの所有権を持つ必要がある。
このコントローラのコネクションから後に作成されたQLowEnergyService 、QLowEnergyCharacteristic またはQLowEnergyDescriptor インスタンスは、コントローラがリモートの Bluetooth Low Energy デバイスから切断されると同時に無効になります。
周辺機器の役割のコントローラは、createPeripheral()ファクトリメソッドで作成される。このようなオブジェクトは、それ自体が周辺デバイスとして動作し、サービスの広告や、特性値の変更に関する通知をクライアントが取得できるようにするなどの機能を有効にします。
ペリフェラルロールでコントローラオブジェクトを作成した後、最初のステップは、addService()の呼び出しによって、クライアントデバイスに提供されるGATTサービスのセットを入力することである。その後、startAdvertising()を呼 び出して、デバイスにいくつかのデータをブロードキャストさせ、実行される広告のタ イプによっては、GATTクライアントからの着信接続もリッスンする。
QLowEnergyService 、QLowEnergyCharacteristic 、QLowEnergyDescriptor 、QLowEnergyAdvertisingParameters 、QLowEnergyAdvertisingDataも参照のこと 。
メンバタイプ ドキュメント
enum QLowEnergyController::ControllerState
コントローラオブジェクトの状態を示す。
定数 | 値 | 説明 |
---|---|---|
QLowEnergyController::UnconnectedState | 0 | コントローラはリモートデバイスに接続されていない。 |
QLowEnergyController::ConnectingState | 1 | コントローラはリモートデバイスに接続しようとしている。 |
QLowEnergyController::ConnectedState | 2 | コントローラはリモートデバイスに接続されている。 |
QLowEnergyController::DiscoveringState | 3 | コントローラは、リモートデバイスが提供するサービスのリストを取得中です。 |
QLowEnergyController::DiscoveredState | 4 | コントローラが、リモートデバイスが提供するすべてのサービスを検出しました。 |
QLowEnergyController::ClosingState | 5 | コントローラがリモートデバイスから切断しようとしている。 |
QLowEnergyController::AdvertisingState (since Qt 5.7) | 6 | コントローラは現在データをアドバタイズ中です。 |
enum QLowEnergyController::Error
コントローラが存在する間に見つかった、可能性のあるすべてのエ ラー状態を示す。
定数 | 値 | 説明 |
---|---|---|
QLowEnergyController::NoError | 0 | エ ラ ーは発生 し ていない。 |
QLowEnergyController::UnknownError | 1 | 不明なエラーが発生しました。 |
QLowEnergyController::UnknownRemoteDeviceError | 2 | このクラスのコンストラクタに渡されたアドレスを持つリモートの Bluetooth Low Energy デバイスが見つかりません。 |
QLowEnergyController::NetworkError | 3 | リモート・デバイスからの読み取りまたはリモート・デバイスへの書き込みに失敗しました。 |
QLowEnergyController::InvalidBluetoothAdapterError | 4 | このクラスのコンストラクタに渡されたアドレスを持つローカルの Bluetooth デバイスが見つからないか、ローカルの Bluetooth デバイスが存在しません。 |
QLowEnergyController::ConnectionError (since Qt 5.5) | 5 | リモート・デバイスへの接続に失敗しました。 |
QLowEnergyController::AdvertisingError (since Qt 5.7) | 6 | 広告の開始に失敗しました。 |
QLowEnergyController::RemoteHostClosedError (since Qt 5.10) | 7 | リモート・デバイスが接続を閉じました。 |
QLowEnergyController::AuthorizationError (since Qt 5.14) | 8 | 認証が不十分なため、ローカルの Bluetooth デバイスが接続を閉じました。 |
QLowEnergyController::MissingPermissionsError (since Qt 6.4) | 9 | オペレーティングシステムが、ユーザーによって許可されていないパーミッションを要求した。 |
QLowEnergyController::RssiReadError (since Qt 6.5) | 10 | リモートデバイスの RSSI (受信信号強度インジケーター) を読み取ろうとしましたが、エラーで終了しました。 |
enum QLowEnergyController::RemoteAddressType
リモートデバイスが使用している Bluetooth アドレスの種類を示します。
定数 | 値 | 説明 |
---|---|---|
QLowEnergyController::PublicAddress | 0 | リモートデバイスはパブリック Bluetooth アドレスを使用しています。 |
QLowEnergyController::RandomAddress | 1 | ランダムアドレスはBluetooth Low Energyのセキュリティ機能です。このようなアドレスを使用している周辺機器は、Bluetoothアドレスを頻繁に変更するかもしれません。この情報は、周辺機器に接続しようとするときに必要です。 |
enum QLowEnergyController::Role
コントローラオブジェクトの役割を示します。
定数 | 値 | 説明 |
---|---|---|
QLowEnergyController::CentralRole | 0 | コントローラは、ペリフェラルの役割を持つリモートデバイスと対話するクライアントとして動作します。コントローラは、コネクションを開始し、サービスを検出し、特性を読み書きできる。 |
QLowEnergyController::PeripheralRole | 1 | コントローラは、サービスをアドバタイズし、GATTサーバーとして動作して、着信コネクションやクライアントリクエストを処理するために使用できる。コントローラに接続されたリモートデバイスは、セントラルロールになる。 |
注記: ペリフェラルの役割は、Windowsではサポートされていない。さらにLinuxでは、サーバー側で「Signed Write」ATTコマンドを処理するには、BlueZ 5とカーネルバージョン3.7以降が必要です。
QLowEnergyController::createCentral() およびQLowEnergyController::createPeripheral()も参照のこと 。
メンバ関数ドキュメント
[virtual noexcept]
QLowEnergyController::~QLowEnergyController()
QLowEnergyController インスタンスを破棄する。
QLowEnergyService *QLowEnergyController::addService(const QLowEnergyServiceData &service, QObject *parent = nullptr)
service からparent を持つQLowEnergyService オブジェクトを構築して返します。 コントローラはPeripheralRole とUnconnectedState になければなりません。service オブジェクトは有効でなければなりません。
注意: 周辺機器インスタンスがリモートセントラルデバイスから切断されるか、またはdisconnectFromDevice() が手動で呼び出されると、この関数によって以前に追加されたすべてのサービス定義が周辺機器から削除されます。したがって、この周辺コントローラーインスタンスを再広告する前に、この関数を再度呼び出す必要があります。記述された動作は接続固有であるため、stopAdvertising()が呼び出されたかどうかには依存しない。
stopAdvertising()、disconnectFromDevice()、QLowEnergyServiceData::addIncludedServiceも参照のこと 。
void QLowEnergyController::connectToDevice()
リモートのBluetooth Low Energyデバイスに接続します。
コントローラのstate() がUnconnectedState と等しくない場合、この関数は何もしない。接続が正常に確立されると、connected() シグナルが発行される。
Linux/BlueZ システムでは、このクラスのインスタンスを 2 つ使用して同じリモートデバイスに接続することはできません。この関数の2回目の呼び出しはエラーで失敗することがあります。この制限は、将来のリリースでは削除される可能性があります。
disconnectFromDevice()も参照 。
[signal]
void QLowEnergyController::connected()
このシグナルは、コントローラがリモートLow Energyデバイスに正常に接続した場合(コントローラがCentralRole にある場合)、またはリモートLow Energyデバイスがコントローラに接続した場合(コントローラがPeripheralRole にある場合)に発行されます。iOS、macOS、およびAndroidでは、コントローラがPeripheralRole にある場合、この信号は信頼できません。iOSとmacOSでは、コントローラは、このセントラルが特性/ディスクリプタの書き込み/読み取りを試みるとすぐに、周辺機器に接続されたセントラルを推測します。Android では、コントローラは接続された全ての GATT デバイスを監視します。Linux BlueZ DBusペリフェラルバックエンドでは、リモートが最初に特性やディスクリプタを読み書きしたときに接続されたとみなされます。
[signal]
void QLowEnergyController::connectionUpdated(const QLowEnergyConnectionParameters &newParameters)
このシグナルは、接続パラメータが変更されたときに発せられます。これは、requestConnectionUpdate()を呼び出した結果、または他の理由、例えば接続の相手側が新しいパラメータを要求したために起こる可能性があります。新しい値はnewParameters から取得できる。
requestConnectionUpdate()も参照 。
[static]
QLowEnergyController *QLowEnergyController::createCentral(const QBluetoothDeviceInfo &remoteDevice, QObject *parent = nullptr)
CentralRole にあり、親オブジェクトparent を持つ、このクラスの新しいオブジェクトを返します。remoteDevice は、後で接続を確立するデバイスを指します。
コントローラは、接続管理にローカルのデフォルトBluetoothアダプタを使用します。
QLowEnergyController::CentralRoleも参照してください 。
[static]
QLowEnergyController *QLowEnergyController::createCentral(const QBluetoothDeviceInfo &remoteDevice, const QBluetoothAddress &localDevice, QObject *parent = nullptr)
このクラスの新しいインスタンスをparent で返します。
remoteDevice には、このオブジェクトが後で接続を試みるリモート Bluetooth Low Energy デバイスのアドレスを含める必要があります。
接続はlocalDevice を介して確立されます。localDevice が無効な場合、ローカルのデフォルト・デバイスが自動的に選択されます。localDevice がローカルの Bluetooth アダプタではないローカル・デバイスを指定した場合、connectToDevice() が呼び出されるとerror() はInvalidBluetoothAdapterError に設定されます。
接続に使用するローカル・デバイスの指定は、BlueZを使用している場合にのみ可能であることに注意してください。その他のプラットフォームでは、この機能はサポートされていません。
[static]
QLowEnergyController *QLowEnergyController::createPeripheral(QObject *parent = nullptr)
PeripheralRole にあり、親オブジェクトparent を持つ、このクラスの新しいオブジェクトを返します。通常、次のステップでは、いくつかのサービスを追加し、最後に返されたオブジェクトに対してstartAdvertising() を呼び出します。
コントローラは、接続管理にローカルのデフォルトBluetoothアダプタを使用します。
QLowEnergyController::PeripheralRoleも参照してください 。
[static, since 6.2]
QLowEnergyController *QLowEnergyController::createPeripheral(const QBluetoothAddress &localDevice, QObject *parent = nullptr)
PeripheralRole にあり、親オブジェクトparent を持ち、localDevice を使用している、このクラスの新しいオブジェクトを返します。通常、次のステップはいくつかのサービスを追加し、最後に返されたオブジェクトに対してstartAdvertising() を呼び出すことです。
ペリフェラルはlocalDevice に作成される。localDevice が無効な場合、ローカルのデフォルトデバイスが自動的に選択されます。localDevice がローカルの Bluetooth アダプタではないローカルデバイスを指定した場合、error() はInvalidBluetoothAdapterError に設定されます。
localDevice の選択は Linux でのみサポートされています。他のプラットフォームでは、パラメータは無視されます。
この関数は Qt 6.2 で導入されました。
QLowEnergyController::PeripheralRoleも参照してください 。
QLowEnergyService *QLowEnergyController::createServiceObject(const QBluetoothUuid &serviceUuid, QObject *parent = nullptr)
serviceUuid で表されるサービスのインスタンスを作成します。serviceUuid パラメータはservices() で取得されている必要があります。
呼び出し元は返されたポインタの所有権を持ち、デフォルトの所有者としてparent パラメータを渡すことができます。
この関数は、リモートデバイス上にserviceUuid を持つサービスが見つからない場合、またはコントローラが切断されている場合、NULLポインタを返す。
この関数は、セカンダリサービスのインスタンスも返すことができます。サービス間のインクルード関係は、QLowEnergyService::includedServices()で表すことができる。
同じサービスUUIDを使用してこの関数を複数回呼び出すと、返されるQLowEnergyService インスタンスは内部データを共有する。したがって、インスタンスの1つがサービス詳細の発見を開始すると、他のインスタンスも自動的に発見状態に遷移する。
services()も参照のこと 。
void QLowEnergyController::disconnectFromDevice()
リモートデバイスとの接続を切断する。
現在の接続から生じたQLowEnergyService 、QLowEnergyCharacteristic 、QLowEnergyDescriptor インスタンスはすべて自動的に無効になる。これらのオブジェクトが無効になると、このコントロー ラオブジェクトが再接続しても、無効のままになる。
コントローラがUnconnectedState の場合、この関数は何もしない。
コントローラがペリフェラルロールの場合、広告を停止し、addService()を使用して追加されたすべてのサービスを削除する。QLowEnergyController インスタンスを再利用するには、アプリケーションでサービスを再追加し、startAdvertising()を呼び出してアドバタイズモードを再開する必要がある。
connectToDevice()も参照 。
[signal]
void QLowEnergyController::disconnected()
このシグナルは、コントローラがリモートのLow Energyデバイスから切断されたとき、またはその逆のときに発信されます。iOS と macOS では、コントローラがPeripheralRole にある場合、この信号は信頼できません。 Android では、最後に接続されたデバイスが切断されると、この信号が発信されます。BlueZ DBusバックエンドでは、最後に属性にアクセスしたクライアントが切断されると、コントローラは切断されたとみなされる。
void QLowEnergyController::discoverServices()
サービス検出プロセスを開始します。
ディスカバリの進行状況は、serviceDiscovered() シグナルで示されます。処理が終了すると、discoveryFinished() シグナルが発行されます。
コントローラインスタンスが接続されていない場合、またはコントローラがすでにサービス検出を実行している場合、この関数は何もしません。
注意: 一部のプラットフォームでは、過去に検出されたデバイスのサービスリストを内部 的にキャッシュします。これは、リモートデバイスがサービスのリストまたはそのインクルードツリーを変更した場合に問題となる可能性があります。この動作が問題となる場合、最善の回避策はBluetoothを一時的にオフにすることです。これによりキャッシュデータがリセットされます。現在、Androidはこのようなキャッシュ動作を示している。
[signal]
void QLowEnergyController::discoveryFinished()
このシグナルは、実行中のサービス検出が終了すると発行されます。ディスカバリープロセスがエラーで終了した場合は、このシグナルは発行されません。
このシグナルは、コントローラがCentralRole にある場合にのみ発行される。
discoverServices() およびerror()も参照 。
QLowEnergyController::Error QLowEnergyController::error() const
最後に発生したエラーまたはNoError を返す。
[signal, since 6.2]
void QLowEnergyController::errorOccurred(QLowEnergyController::Error newError)
このシグナルは、エラーが発生したときに発行されます。newError パラメータには、発生したエラーが記述されます。
この関数は Qt 6.2 で導入されました。
error() およびerrorString()も参照してください 。
QString QLowEnergyController::errorString() const
最後に発生したエラーのテキスト表現を返します。文字列は翻訳されます。
QBluetoothAddress QLowEnergyController::localAddress() const
通信に使用されているローカル Bluetooth アダプタのアドレスを返します。
このクラス・インスタンスがデフォルト・アダプタを使用するように要求されていたにもかかわらず、このクラス・インスタンスの作成時にデフォルト・アダプタが存在しなかった場合、返されるQBluetoothAddress は null になります。
QBluetoothAddress::isNull()も参照してください 。
[since 6.2]
int QLowEnergyController::mtu() const
MTU サイズを返します。
接続のセットアップ中に、ATT MTU サイズがネゴシエートされます。このメソッドは、このネゴシエーションの結果を提供します。これは、状況によってはパケットサイズを最適化するために使用できる。1つのパケットで転送できるデータの最大量はmtu-3バイトである。3 バイトが ATT プロトコルヘッダに必要である。
接続セットアップと MTU ネゴシエーションの前に、デフォルト値の23
が返される。
すべてのプラットフォームがMTU値を公開しているわけではありません。そのようなプラットフォーム (Linux など) では、この関数は常に-1
を返します。
コントローラがPeripheralRole にある場合、複数のセントラルデバイスが接続されている可能性があります。そのような場合、この関数は、最後にネゴシエートされた接続のMTUを返します。
この関数はQt 6.2で導入されました。
[signal]
void QLowEnergyController::mtuChanged(int mtu)
このシグナルは、MTUの変更に成功すると発行されます。mtu は新しい値を表します。
注意: コントローラがPeripheralRole にある場合、MTU 値は各クライアント/セントラルデバイスに対して個別にネゴシエートされます。そのため、このシグナルは、1つまたは複数のデバイスに対して複数回連続して発信される可能性があります。
mtu()も参照のこと 。
[since 6.5]
void QLowEnergyController::readRssi()
readRssi() は、接続されているリモート・デバイスの RSSI (受信信号強度インジケータ) を読み取ります。読み取りが成功した場合、RSSI はrssiRead() シグナルで報告される。
注意: readRssi()を呼び出す前に、このコントローラを周辺機器に接続しておく必要があります。このコントローラは、createCentral() を使用して作成する必要があります。
注意: 使用している Bluetooth バックエンドが RSSI の読み取りをサポートしていない場合、errorOccurred() シグナルがエラーコードQLowEnergyController::RssiReadError とともに出力されます。現在のところ、RSSI の読み取りをサポートしているプラットフォームは Android、iOS、macOS です。
この関数は Qt 6.5 で導入されました。
rssiRead(),connectToDevice(),state(),createCentral(),errorOccurred()も参照してください 。
QBluetoothAddress QLowEnergyController::remoteAddress() const
リモートの Bluetooth Low Energy デバイスのアドレスを返します。
CentralRole のコントローラの場合、この値は常に、コントローラオブジェク トの作成時に渡された値になる。PeripheralRole のコントローラの場合、この値は、現在接続されているクライアント デバイスのアドレスの1つである。コントローラが現在ConnectedState にない場合、このアドレスは無効です。
QLowEnergyController::RemoteAddressType QLowEnergyController::remoteAddressType() const
remoteAddress()のタイプを返す。デフォルトでは、この値はPublicAddress に初期化される。
setRemoteAddressType()も参照 。
QBluetoothUuid QLowEnergyController::remoteDeviceUuid() const
リモートの Bluetooth Low Energy デバイスの一意の識別子を返します。
macOS/iOS/tvOS では、CoreBluetooth は LE デバイスのハードウェア・アドレスを公開/受け付けない。これらの UUID は、同じセントラル<->ペリフェラルのペアに対して一定であり、リモートデバイ スに接続する際に使用される。CentralRole のコントローラの場合、この値は常に、コントローラオブジェクトの作成時に渡された値になります。PeripheralRole のコントローラの場合、この値は無効です。
QString QLowEnergyController::remoteName() const
コントローラがCentralRole にある場合、リモートのBluetooth Low Energy デバイスの名前を返す。
void QLowEnergyController::requestConnectionUpdate(const QLowEnergyConnectionParameters ¶meters)
コントローラに、parameters に従ってコネクションを更新するよう要求する。 要求が成功すると、実際の新しいパラメータを含むconnectionUpdated() シグナルが発行される。接続パラメータの詳細については、QLowEnergyConnectionParameters クラスを参照してください。
Androidでは、このパラメータ・セットの調整は間接的にしか許可されていません。接続パラメータは、3つのカテゴリー(高優先度、低優先度、バランス優先度)に分かれています。各カテゴリは、QLowEnergyConnectionParameters::minimumInterval ()、QLowEnergyConnectionParameters::maximumInterval ()、QLowEnergyConnectionParameters::latency ()の値の事前設定セットを意味します。接続リクエストは非同期操作ですが、Androidはリクエストの結果を示すコールバックを提供しません。これはAndroidのバグとして認められています。このバグのため、AndroidはconnectionUpdated ()シグナルを発信しません。
注: 現在、この機能はLinuxカーネルバックエンドとAndroidにのみ実装されています。
connectionUpdated()も参照 。
QLowEnergyController::Role QLowEnergyController::role() const
このコントローラオブジェクトのロールを返します。
ロールは、createCentral() またはcreatePeripheral() を使用してQLowEnergyController インスタンスを作成する際に決定されます。
[signal, since 6.5]
void QLowEnergyController::rssiRead(qint16 rssi)
rssi パラメータは新しい値を表します。
この関数は Qt 6.5 で導入されました。
readRssi()も参照してください 。
[signal]
void QLowEnergyController::serviceDiscovered(const QBluetoothUuid &newService)
このシグナルは、新しいサービスが発見されるたびに発行されます。newService パラメータには、発見されたサービスの UUID が含まれます。
このシグナルは、コントローラがCentralRole
にある場合にのみ発行されます。
discoverServices() およびdiscoveryFinished()も参照 。
QList<QBluetoothUuid> QLowEnergyController::services() const
コントローラがCentralRole にある場合、リモートデバイスが提供するサービスのリ ストを返す。
このリストには、プライマリサービスとセカンダリサービスがすべて含まれる。
createServiceObject()も参照 。
void QLowEnergyController::setRemoteAddressType(QLowEnergyController::RemoteAddressType type)
リモートアドレスtype を設定する。このタイプは、リモートのBluetooth Low Energyデバイスに接続するために必要です。
この属性は、古い Linux カーネル(v3.3 以下)の Linux/BlueZ システム、または実行ファイルに CAP_NET_ADMIN が設定されていない場合にのみ設定する必要があります。この属性のデフォルト値はRandomAddress です。
注: 他のすべてのプラットフォームはこのフラグを透過的に処理するため、アプリ ケーションはこのフラグを完全に無視することができます。Linux では、アドレス・タイプ・フラグは BlueZ によって直接公開されません。このフラグを検出する唯一の方法は、LinuxカーネルのBluetooth Management API(カーネル・バージョン3.4以上が必要)を経由することです。ただし、このAPIにはCAP_NET_ADMIN機能が必要です。ローカルのQtBluetooth プロセスにこのケイパビリティが設定されている場合、QtBluetooth はこの API を使用します。これは、QLowEnergyController::connectToDevice() を呼び出す前にQBluetoothDeviceDiscoveryAgent が使用されていることを前提としている。
remoteAddressType()も参照のこと 。
void QLowEnergyController::startAdvertising(const QLowEnergyAdvertisingParameters ¶meters, const QLowEnergyAdvertisingData &advertisingData, const QLowEnergyAdvertisingData &scanResponseData = QLowEnergyAdvertisingData())
parameters で設定されたパラメータを使用して、advertisingData およびscanResponseData で指定されたデータの広告を開始する。コントローラは、PeripheralRole にある必要がある。parameters が、アドバタイズが接続可能であることを示す場合、この関数は、着信クライア ント接続のリッスンも開始する。
scanResponseData parameters
advertisingData と は、31バイトのユーザーデータに制限される。たとえば、 に128ビットのuidがいくつか追加された場合、アドバタイズされるパケッ トはすべてのuidを含まないかもしれない。既存の制限によって、uuidsが切り捨てられた可能性がある。このような場合、 が追加情報として使用される。scanResponseData advertisingData scanResponseData
BlueZ DBus のバックエンドでは、BlueZ がスキャン応答で使用するかどうか、またどのデータを使用するかを決定します。したがって、すべてのアドバタイズ・データは、メインのadvertisingData パラメータに設定することを推奨する。アドバタイズ・データとスキャン・レスポンス・データの両方が設定されている場合は、スキャン・レスポンス・データが優先されます。
このオブジェクトが現在UnconnectedState にない場合、何も起こらない。
stopAdvertising()も参照 。
QLowEnergyController::ControllerState QLowEnergyController::state() const
コントローラの現在の状態を返す。
stateChanged()も参照 。
[signal]
void QLowEnergyController::stateChanged(QLowEnergyController::ControllerState state)
このシグナルは、コントローラの状態が変化したときに発行されます。新しいstate を取得するには、state() を使用します。
state()も参照 。
void QLowEnergyController::stopAdvertising()
このオブジェクトが現在広告状態にある場合、広告を停止します。
この関数を使用するには、コントローラがPeripheralRole 。この関数は、addService() によって追加されたサービスを無効にすることはありません。
startAdvertising()も参照して ください。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。