BLE GATT服务器数据格式

时间:2016-06-19 12:53:43

标签: qt bluetooth format bluetooth-lowenergy gatt

我正在玩这个例子:

https://doc-snapshots.qt.io/qt5-dev/qtbluetooth-heartrate-server-example.html

更好地了解如何配置GATT服务器。 该示例伪造了HeartRate配置文件。详细地说,它使用此客户端描述符创建一个特征:

const QLowEnergyDescriptorData clientConfig(QBluetoothUuid::ClientCharacteristicConfiguration, QByteArray(2, 0));

从这里开始:

https://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.client_characteristic_configuration.xml

我知道它默认禁用通知和指示(实际上我需要从客户端应用程序启用它们才能收到通知)。

我真正不明白的是这段代码:

quint8 currentHeartRate = 60;
const auto heartbeatProvider = [&service, &currentHeartRate, &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.

我找不到任何有关此“格式”的文档。

1 个答案:

答案 0 :(得分:1)

第一个字节是心率服务(HRS)here中指定的标志字段。在此示例中,flags字段表示心率测量值采用uint8格式。