이 페이지에서

QLowEnergyController Class

QLowEnergyController 클래스는 블루투스 저에너지(Bluetooth Low Energy) 장치에 대한 접근 기능을 제공합니다. 더 보기...

헤더: #include <QLowEnergyController>
CMake: find_package(Qt6 REQUIRED COMPONENTS Bluetooth)
target_link_libraries(mytarget PRIVATE Qt6::Bluetooth)
qmake: QT += bluetooth
상속: 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 &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()

신호

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)는 주변 장치(peripheral)와 중앙 장치(central)라는 두 가지 유형의 장치를 정의합니다. 각 역할은 서로 다른 작업을 수행합니다. 주변 장치는 중앙 장치에서 활용하는 데이터를 제공합니다. 예를 들어, 윈터 가든의 습도를 측정하는 습도 센서가 있습니다. 휴대폰과 같은 기기는 센서의 측정값을 읽어와, 동일한 환경에 있는 모든 센서의 데이터를 종합적으로 고려하여 사용자에게 표시할 수 있습니다. 이 경우 센서는 주변 기기(peripheral)이며, 휴대폰은 중앙 기기(central) 역할을 합니다.

중앙 역할을 수행하는 컨트롤러는 ` createCentral()` 팩토리 메서드를 통해 생성됩니다. 이러한 객체는 본질적으로 원격 Low Energy 주변 기기에 대한 자리 표시자 역할을 수행하여, 서비스 탐색 및 상태 추적과 같은 기능을 가능하게 합니다.

중앙 역할을 수행하는 컨트롤러 객체를 생성한 후, 첫 번째 단계는 connectToDevice()을 통해 연결을 수립하는 것입니다. 연결이 수립되면 컨트롤러의 state() 메서드가 QLowEnergyController::ConnectedState 로 변경되고, connected() 신호가 발신됩니다. BlueZ 기반 리눅스와 같은 일부 플랫폼은 동일한 원격 장치에 대해 두 개의 연결된 QLowEnergyController 인스턴스를 유지할 수 없다는 점을 유의해야 합니다. 이러한 경우, connectToDevice()에 대한 두 번째 호출이 실패할 수 있습니다. 이 제한 사항은 향후 어느 시점에서 사라질 수도 있습니다. disconnectFromDevice() 함수는 기존 연결을 끊는 데 사용됩니다.

연결을 설정한 후 두 번째 단계는 원격 주변 기기가 제공하는 서비스를 탐색하는 것입니다. 이 프로세스는 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::UnconnectedState0컨트롤러가 원격 장치에 연결되어 있지 않습니다.
QLowEnergyController::ConnectingState1컨트롤러가 원격 장치에 연결을 시도 중입니다.
QLowEnergyController::ConnectedState2컨트롤러가 원격 장치에 연결되어 있습니다.
QLowEnergyController::DiscoveringState3컨트롤러가 원격 장치에서 제공하는 서비스 목록을 가져오고 있습니다.
QLowEnergyController::DiscoveredState4컨트롤러가 원격 장치에서 제공하는 모든 서비스를 감지했습니다.
QLowEnergyController::ClosingState5컨트롤러가 원격 장치와의 연결이 끊기려 하고 있습니다.
QLowEnergyController::AdvertisingState (since Qt 5.7)6컨트롤러가 현재 데이터를 알리고 있습니다.

enum QLowEnergyController::Error

컨트롤러의 수명 주기 동안 발견된 모든 가능한 오류 상태를 나타냅니다.

상수값설명
QLowEnergyController::NoError0오류가 발생하지 않았습니다.
QLowEnergyController::UnknownError1알 수 없는 오류가 발생했습니다.
QLowEnergyController::UnknownRemoteDeviceError2이 클래스의 생성자에 전달된 주소를 가진 원격 Bluetooth Low Energy 장치를 찾을 수 없습니다.
QLowEnergyController::NetworkError3원격 장치에서 읽기 또는 쓰기 시도가 실패했습니다.
QLowEnergyController::InvalidBluetoothAdapterError4이 클래스의 생성자에 전달된 주소를 가진 로컬 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

원격 장치가 사용하는 블루투스 주소의 유형을 나타냅니다.

상수값설명
QLowEnergyController::PublicAddress0원격 장치는 공용 블루투스 주소를 사용합니다.
QLowEnergyController::RandomAddress1무작위 주소는 블루투스 저에너지(Bluetooth Low Energy)의 보안 기능입니다. 이러한 주소를 사용하는 주변 기기는 블루투스 주소를 자주 변경할 수 있습니다. 이 정보는 주변 기기에 연결을 시도할 때 필요합니다.

enum QLowEnergyController::Role

컨트롤러 객체의 역할을 나타냅니다.

상수값설명
QLowEnergyController::CentralRole0컨트롤러는 주변기기 역할을 수행하는 원격 장치와 상호 작용하는 클라이언트 역할을 합니다. 컨트롤러는 연결을 시작하고, 서비스를 탐색하며, 특성을 읽고 쓸 수 있습니다.
QLowEnergyController::PeripheralRole1컨트롤러는 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 시스템에서는 이 클래스의 두 인스턴스를 사용하여 동일한 원격 장치에 연결할 수 없습니다. 이 함수를 두 번째로 호출하면 오류가 발생하여 실패할 수 있습니다. 이 제한 사항은 향후 릴리스에서 제거될 수 있습니다.

disconnectFromDevice()도 참조하십시오 .

[signal] void QLowEnergyController::connected()

이 신호는 컨트롤러가 원격 저에너지 기기와 성공적으로 연결되었을 때(컨트롤러가 ‘ CentralRole ’ 상태인 경우) 또는 컨트롤러에 연결된 원격 저에너지 기기가 있을 때(컨트롤러가 ‘ PeripheralRole ’ 상태인 경우) 전송됩니다. iOS, macOS 및 Android에서 컨트롤러가 PeripheralRole 상태인 경우 이 신호는 신뢰할 수 없습니다. iOS와 macOS에서 컨트롤러는 특정 센트럴이 특성(characteristic)이나 설명자(descriptor)를 읽거나 쓰려고 시도하는 즉시, 해당 센트럴이 우리 주변 기기에 연결되었다고 추정할 뿐입니다. 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 는 나중에 연결이 설정될 장치를 가리킵니다.

컨트롤러는 연결 관리를 위해 로컬 기본 블루투스 어댑터를 사용합니다.

QLowEnergyController::CentralRole도 참조하십시오 .

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

parent 를 가진 이 클래스의 새 인스턴스를 반환합니다.

remoteDevice 에는 이 객체가 나중에 연결을 시도해야 할 원격 Bluetooth Low Energy 장치의 주소가 포함되어 있어야 합니다.

연결은 ` localDevice`을 통해 설정됩니다. ` localDevice `이 유효하지 않은 경우, 로컬 기본 장치가 자동으로 선택됩니다. ` localDevice `이 로컬 블루투스 어댑터가 아닌 로컬 장치를 지정하는 경우, ` connectToDevice()`가 호출되면 ` error()`가 ` InvalidBluetoothAdapterError `로 설정됩니다.

연결에 사용할 로컬 장치를 지정하는 것은 BlueZ를 사용할 때만 가능하다는 점에 유의하십시오. 다른 모든 플랫폼은 이 기능을 지원하지 않습니다.

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

PeripheralRole 에 속하며 부모 객체가 parent 인 이 클래스의 새 객체를 반환합니다. 일반적으로 다음 단계로는 몇 가지 서비스를 추가한 후, 반환된 객체에서 startAdvertising()을 호출합니다.

컨트롤러는 연결 관리를 위해 로컬 기본 블루투스 어댑터를 사용합니다.

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 인스턴스들은 내부 데이터를 공유합니다. 따라서 인스턴스 중 하나가 서비스 세부 정보 탐색을 시작하면, 다른 인스턴스들도 자동으로 탐색 상태로 전환됩니다.

services()도 참조하십시오 .

void QLowEnergyController::disconnectFromDevice()

원격 장치와의 연결을 끊습니다.

현재 연결을 통해 생성된 모든 QLowEnergyService, QLowEnergyCharacteristic 또는 QLowEnergyDescriptor 인스턴스는 자동으로 무효화됩니다. 이러한 객체 중 하나라도 무효화되면, 이 컨트롤러 객체가 다시 연결되더라도 계속 무효 상태로 유지됩니다.

컨트롤러가 UnconnectedState 상태인 경우 이 함수는 아무 작업도 수행하지 않습니다.

컨트롤러가 주변기기(peripheral) 역할에 있는 경우, 광고를 중지하고 이전에 addService()를 통해 추가된 모든 서비스를 제거합니다. QLowEnergyController 인스턴스를 재사용하려면 애플리케이션에서 서비스를 다시 추가하고 startAdvertising()를 호출하여 광고 모드를 다시 시작해야 합니다.

connectToDevice()도 참조하십시오 .

[signal] void QLowEnergyController::disconnected()

이 신호는 컨트롤러가 원격 저전력(Low Energy) 장치와의 연결이 끊어지거나, 그 반대의 경우 발생합니다. iOS 및 macOS에서는 컨트롤러가 ‘ PeripheralRole ’ 상태에 있을 때 이 신호의 신뢰성이 떨어집니다. Android에서는 마지막으로 연결된 장치가 연결이 끊어지면 이 신호가 발생합니다. BlueZ DBus 백엔드에서는 속성에 마지막으로 접근한 클라이언트가 연결을 끊었을 때 컨트롤러가 연결이 끊어진 것으로 간주됩니다.

void QLowEnergyController::discoverServices()

서비스 검색 프로세스를 시작합니다.

탐색 진행 상황은 ` serviceDiscovered()` 신호를 통해 표시됩니다. 프로세스가 완료되면 ` discoveryFinished()` 신호가 발신됩니다.

컨트롤러 인스턴스가 연결되어 있지 않거나 컨트롤러가 이미 서비스 검색을 수행한 경우, 이 함수는 아무 작업도 수행하지 않습니다.

참고: 일부 플랫폼은 과거에 검색된 장치의 서비스 목록을 내부적으로 캐시합니다. 원격 장치가 서비스 목록이나 포함 트리를 변경한 경우 이로 인해 문제가 발생할 수 있습니다. 이러한 동작이 문제가 될 경우, 가장 좋은 해결 방법은 블루투스를 일시적으로 끄는 것입니다. 이렇게 하면 캐시 데이터가 재설정됩니다. 현재 안드로이드에서 이러한 캐시 동작이 나타납니다.

[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

통신에 사용 중인 로컬 블루투스 어댑터의 주소를 반환합니다.

이 클래스 인스턴스에 기본 어댑터 사용이 요청되었으나, 이 클래스 인스턴스를 생성할 당시 기본 어댑터가 없었던 경우, 반환되는 QBluetoothAddress 는 null이 됩니다.

QBluetoothAddress::isNull()도 참조하십시오 .

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

MTU 크기를 반환합니다.

연결 설정 과정에서 ATT MTU 크기가 협상됩니다. 이 메서드는 해당 협상 결과를 반환합니다. 특정 상황에서 패킷 크기를 최적화하는 데 사용할 수 있습니다. 단일 패킷으로 전송할 수 있는 최대 데이터 양은 mtu-3바이트입니다. ATT 프로토콜 헤더에 3바이트가 필요합니다.

연결 설정 및 MTU 협상 이전에는 23 의 기본값이 반환됩니다.

모든 플랫폼이 MTU 값을 노출하는 것은 아닙니다. 해당 플랫폼(예: Linux)에서는 이 함수가 항상 ` -1`를 반환합니다.

컨트롤러가 PeripheralRole 에 있는 경우, 해당 컨트롤러에 여러 중앙 장치가 연결되어 있을 수 있습니다. 이러한 경우 이 함수는 마지막으로 협상된 연결의 MTU를 반환합니다.

이 함수는 Qt 6.2에서 도입되었습니다.

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

이 신호는 MTU 변경이 성공적으로 완료된 결과로 전송됩니다. ‘ mtu ’는 새로운 값을 나타냅니다.

참고: 컨트롤러가 PeripheralRole 모드에 있는경우 , MTU 값은 각 클라이언트/중앙 장치별로 개별적으로 협상됩니다. 따라서 이 신호는 하나 또는 여러 장치에 대해 연속적으로 여러 번 발신될 수 있습니다.

mtu()항목도 참조하십시오 .

[since 6.5] void QLowEnergyController::readRssi()

readRssi()는 연결된 원격 장치의 RSSI(수신 신호 강도 지표)를 읽습니다. 읽기가 성공하면, RSSI 값은 rssiRead() 신호를 통해 보고됩니다.

참고: readRssi()를 호출하기전에 , 이 컨트롤러는 주변 기기와 연결되어 있어야 합니다. 이 컨트롤러는 createCentral()를 사용하여 생성되어야 합니다.

참고: 사용 중인 블루투스 백엔드가 RSSI 읽기를 지원하지 않는경우 , errorOccurred() 신호가 오류 코드 QLowEnergyController::RssiReadError 와 함께 발생합니다. 현재 RSSI 읽기를 지원하는 플랫폼으로는 Android, iOS 및 macOS가 있습니다.

이 함수는 Qt 6.5에서 도입되었습니다.

rssiRead(), connectToDevice(), state(), createCentral() 및 errorOccurred()도 참조하십시오 .

QBluetoothAddress QLowEnergyController::remoteAddress() const

원격 블루투스 저에너지(BLE) 장치의 주소를 반환합니다.

CentralRole 에 있는 컨트롤러의 경우, 이 값은 항상 컨트롤러 객체가 생성될 때 전달된 값과 동일합니다. PeripheralRole 에 있는 컨트롤러의 경우, 이 값은 현재 연결된 클라이언트 장치 주소 중 하나입니다. 컨트롤러가 현재 ConnectedState 에 속해 있지 않은 경우, 이 주소는 유효하지 않습니다.

QLowEnergyController::RemoteAddressType QLowEnergyController::remoteAddressType() const

remoteAddress()의 반환 유형을 반환합니다. 기본적으로 이 값은 PublicAddress 로 초기화됩니다.

setRemoteAddressType()도 참조하십시오 .

QBluetoothUuid QLowEnergyController::remoteDeviceUuid() const

원격 블루투스 저에너지(Bluetooth Low Energy) 장치의 고유 식별자를 반환합니다.

macOS/iOS/tvOS에서 CoreBluetooth는 LE 기기의 하드웨어 주소를 노출하거나 수락하지 않으며, 대신 개발자는 CoreBluetooth에서 생성한 고유한 128비트 UUID를 사용해야 합니다. 이러한 UUID는 동일한 센트럴 <-> 페리페럴 쌍에 대해 변하지 않으며, 원격 기기에 연결할 때 이를 사용합니다. CentralRole 의 컨트롤러에 대해서는, 이 값은 항상 컨트롤러 객체가 생성될 때 전달된 값과 동일합니다. PeripheralRole 의 컨트롤러에 대해서는 이 값이 유효하지 않습니다.

QString QLowEnergyController::remoteName() const

컨트롤러가 ‘ CentralRole ’ 상태에 있는 경우, 원격 블루투스 저에너지(Bluetooth Low Energy) 장치의 이름을 반환합니다. 그렇지 않은 경우 결과는 정의되지 않습니다.

void QLowEnergyController::requestConnectionUpdate(const QLowEnergyConnectionParameters &parameters)

컨트롤러에 parameters 에 따라 연결을 업데이트하도록 요청합니다. 요청이 성공하면, 실제 새로운 매개변수와 함께 connectionUpdated() 신호가 발신됩니다. 연결 매개변수에 대한 자세한 내용은 QLowEnergyConnectionParameters 클래스를 참조하십시오.

Android에서는 이 매개변수 세트의 조정을 간접적으로만 허용합니다. 연결 매개변수는 세 가지 범주(높은 우선순위, 낮은 우선순위, 균형 잡힌 우선순위)로 구분됩니다. 각 범주는 QLowEnergyConnectionParameters::minimumInterval(), QLowEnergyConnectionParameters::maximumInterval() 및 QLowEnergyConnectionParameters::latency()에 대해 미리 구성된 값 세트를 의미합니다. 연결 요청은 비동기 작업이지만, Android는 요청 결과를 알려주는 콜백을 제공하지 않습니다. 이는 Android에서 공식적으로 인정된 버그입니다. 이 버그로 인해 Android는 connectionUpdated() 신호를 발생시키지 않습니다.

참고: 현재 이 기능은 리눅스 커널 백엔드와 Android에서만 구현되어 있습니다.

connectionUpdated()도 참조하십시오 .

QLowEnergyController::Role QLowEnergyController::role() const

이 컨트롤러 객체가 속한 역할을 반환합니다.

이 역할은 createCentral() 또는 createPeripheral()를 사용하여 QLowEnergyController 인스턴스를 생성할 때 결정됩니다.

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

이 신호는 연결된 원격 장치의 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 장치에 연결하려면 이 유형을 지정해야 합니다.

이 속성은 구형 리눅스 커널(v3.3 이하)을 사용하는 리눅스/BlueZ 시스템에서, 또는 실행 파일에 CAP_NET_ADMIN이 설정되지 않은 경우에만 설정해야 합니다. 이 속성의 기본값은 RandomAddress 입니다.

참고: 다른모든 플랫폼에서는 이 플래그를 투명하게 처리하므로, 애플리케이션은 이를 완전히 무시해도 됩니다. 리눅스에서 주소 유형 플래그는 BlueZ에 의해 직접 노출되지 않지만, 일부 사용 사례에서는 이 정보가 필요합니다. 이 플래그를 감지할 수 있는 유일한 방법은 리눅스 커널의 블루투스 관리 API(Linux kernel version 3.4+ 필요)를 이용하는 것입니다. 단, 이 API를 사용하려면 CAP_NET_ADMIN 권한이 필요합니다. 로컬 QtBluetooth 프로세스에 이 권한이 설정되어 있다면 QtBluetooth 는 해당 API를 사용합니다. 이는 QLowEnergyController::connectToDevice()를 호출하기 전에 QBluetoothDeviceDiscoveryAgent 가 사용되었음을 전제로 합니다.

remoteAddressType()도 참조하십시오 .

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

parameters 에 설정된 매개변수를 사용하여 advertisingData 및 scanResponseData 에 명시된 데이터를 광고하기 시작합니다. 컨트롤러는 PeripheralRole 에 위치해야 합니다. parameters 가 광고가 연결 가능해야 함을 나타내는 경우, 이 함수는 들어오는 클라이언트 연결에 대한 수신 대기도 시작합니다.

scanResponseData 를 제공할 필요는 없습니다. 이는 parameters 의 특정 구성에서는 적용되지 않기 때문입니다. advertisingData 와 scanResponseData 는 31바이트의 사용자 데이터로 제한됩니다. 예를 들어, advertisingData 에 여러 개의 128비트 UUID가 추가된 경우, 광고된 패킷에 모든 UUID가 포함되지 않을 수 있습니다. 기존의 제한으로 인해 UUID가 잘릴 수 있습니다. 이러한 경우 추가 정보를 얻기 위해 scanResponseData 를 사용할 수 있습니다.

BlueZ DBus 백엔드에서는 BlueZ가 스캔 응답에 데이터를 사용할지 여부와 어떤 데이터를 사용할지 결정합니다. 따라서 모든 광고 데이터는 main 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()도 참조하십시오 .

© 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.