BLE GATT 服务器数据格式
BLE GATT server data format
我正在玩这个例子:
https://doc-snapshots.qt.io/qt5-dev/qtbluetooth-heartrate-server-example.html
更好地了解如何配置 GATT 服务器。
该示例伪造了一个 HeartRate 配置文件。详细地说,它使用此客户端描述符创建了一个特征:
const QLowEnergyDescriptorData clientConfig(QBluetoothUuid::ClientCharacteristicConfiguration, QByteArray(2, 0));
从这里开始:
我知道它默认禁用通知和指示(实际上我需要从客户端应用程序启用它们才能收到通知)。
真正看不懂的是这段代码:
quint8 currentHeartRate = 60;
const auto heartbeatProvider = [&service, ¤tHeartRate, &valueChange]() {
QByteArray value;
value.append(char(0)); // Flags that specify the format of the value.
value.append(char(currentHeartRate)); // Actual value.
QLowEnergyCharacteristic characteristic = service->characteristic(QBluetoothUuid::HeartRateMeasurement);
service->writeCharacteristic(characteristic, value); // Potentially causes notification.
...
嗯,它向特征值附加了两个字节,因为它已在上面定义:
QLowEnergyCharacteristicData charData;
charData.setUuid(QBluetoothUuid::HeartRateMeasurement);
charData.setValue(QByteArray(2, 0));
但是第一个是什么意思?
value.append(char(0)); // Flags that specify the format of the value.
我找不到关于此 "format" 的任何文档。
第一个字节是心率服务 (HRS) 中指定的标志字段here。在这个例子中,flags字段表示心率测量值是uint8格式。
我正在玩这个例子:
https://doc-snapshots.qt.io/qt5-dev/qtbluetooth-heartrate-server-example.html
更好地了解如何配置 GATT 服务器。 该示例伪造了一个 HeartRate 配置文件。详细地说,它使用此客户端描述符创建了一个特征:
const QLowEnergyDescriptorData clientConfig(QBluetoothUuid::ClientCharacteristicConfiguration, QByteArray(2, 0));
从这里开始:
我知道它默认禁用通知和指示(实际上我需要从客户端应用程序启用它们才能收到通知)。
真正看不懂的是这段代码:
quint8 currentHeartRate = 60;
const auto heartbeatProvider = [&service, ¤tHeartRate, &valueChange]() {
QByteArray value;
value.append(char(0)); // Flags that specify the format of the value.
value.append(char(currentHeartRate)); // Actual value.
QLowEnergyCharacteristic characteristic = service->characteristic(QBluetoothUuid::HeartRateMeasurement);
service->writeCharacteristic(characteristic, value); // Potentially causes notification.
...
嗯,它向特征值附加了两个字节,因为它已在上面定义:
QLowEnergyCharacteristicData charData;
charData.setUuid(QBluetoothUuid::HeartRateMeasurement);
charData.setValue(QByteArray(2, 0));
但是第一个是什么意思?
value.append(char(0)); // Flags that specify the format of the value.
我找不到关于此 "format" 的任何文档。
第一个字节是心率服务 (HRS) 中指定的标志字段here。在这个例子中,flags字段表示心率测量值是uint8格式。