Bluetooth GATT Characteristic Reference
Heart Rate Measurement (0x2A37)
Heart Rate Measurement is defined in the Bluetooth GATT XML specification with type org.bluetooth.characteristic.heart_rate_measurement and UUID 0x2A37.
Quick Summary
Payload length is 8 bytes. This page is generated from official GATT XML and presented as implementation-ready guidance.
At a Glance
Key reference details for BLE implementation, interoperability testing, and AI-assisted troubleshooting.
| Property | Value |
|---|---|
| Name | Heart Rate Measurement |
| UUID | 0x2A37 |
| Type | org.bluetooth.characteristic.heart_rate_measurement |
| XML Root | Characteristic |
| Source File | org.bluetooth.characteristic.heart_rate_measurement.xml |
| Field Count | 5 |
Field Specification
Parsed field definitions from the source XML value structure.
| Field | Requirement | Format | Unit | Exponent | Notes |
|---|---|---|---|---|---|
| Flags | Mandatory | 8bit | - | - | - |
| Heart Rate Measurement Value (uint8) | C1 | uint8 | org.bluetooth.unit.period.beats_per_minute | - | Note: The format of the Heart Rate Measurement Value field is dependent upon bit 0 of the Flags field. |
| Heart Rate Measurement Value (uint16) | C2 | uint16 | org.bluetooth.unit.period.beats_per_minute | - | Note: The format of the Heart Rate Measurement Value field is dependent upon bit 0 of the Flags field. |
| Energy Expended | C3 | uint16 | org.bluetooth.unit.energy.joule | - | The presence of the Energy Expended field is dependent upon bit 3 of the Flags field. |
| RR-Interval | C4 | uint16 | org.bluetooth.unit.time.second | - | - |
Bit Map
Bit-level enumerations extracted from the XML BitField definition.
| Field | Bit | Size | Name | 0 Means | 1 Means |
|---|---|---|---|---|---|
| Flags | 0 | 1 | Heart Rate Value Format bit | Heart Rate Value Format is set to UINT8. Units: beats per minute (bpm) | Heart Rate Value Format is set to UINT16. Units: beats per minute (bpm) |
| Flags | 1 | 2 | Sensor Contact Status bits | Sensor Contact feature is not supported in the current connection | Sensor Contact feature is not supported in the current connection |
| Flags | 3 | 1 | Energy Expended Status bit | Energy Expended field is not present | Energy Expended field is present. Units: kilo Joules |
| Flags | 4 | 1 | RR-Interval bit | RR-Interval values are not present. | One or more RR-Interval values are present. |
Byte Layout and Decode
Payload length is 8 bytes.
function decodePayload(dataView, offset = 0) {
// Parse flags (8bit) according to Bluetooth format rules.
const heart_rate_measurement_value_uint8 = dataView.getUint8(offset + 0);
const heart_rate_measurement_value_uint16 = dataView.getUint16(offset + 1, true);
const energy_expended = dataView.getUint16(offset + 3, true);
const rr_interval = dataView.getUint16(offset + 5, true);
return { flags, heart_rate_measurement_value_uint8, heart_rate_measurement_value_uint16, energy_expended, rr_interval };
}
Use Cases and Integration Notes
BLE Telemetry
Map characteristic values into dashboards and alerts for device observability.
Firmware Regression
Compare decoded fields across builds to detect protocol or scaling changes.
App Integration
Build stable parsing paths that convert raw payloads into typed app models.
Implementation Checklist
- Validate payload length and mandatory fields before decode.
- Decode with Bluetooth-specified signedness, unit, and exponent handling.
- Convert units at presentation boundaries to avoid drift in business logic.
- Persist raw packets and decoded values for reproducible troubleshooting.
FAQ
What is Heart Rate Measurement in Bluetooth GATT?
Heart Rate Measurement is defined as a Bluetooth GATT characteristic entry with type org.bluetooth.characteristic.heart_rate_measurement and UUID 0x2A37.
What UUID identifies Heart Rate Measurement?
The UUID for Heart Rate Measurement is 0x2A37.
How should I parse Heart Rate Measurement?
Payload length is 8 bytes.
Where does this definition come from?
This page is generated from the Bluetooth SIG mirror XML in the oesmith/gatt-xml repository.
How does this page support BLE implementation?
The page combines structured tables, practical Q&A, and JSON-LD metadata to help teams validate integrations and troubleshoot consistently.