Bluetooth GATT Characteristic Reference
Blood Pressure Measurement (0x2A35)
The Blood Pressure Measurement characteristic is a variable length structure containing a Flags field, a Blood Pressure Measurement Compound Value field, and contains additional fields such as Time Stamp, Pulse Rate and User ID as determined by the contents of the Flags field.
Quick Summary
Payload length is profile-defined or variable based on field formats. 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 | Blood Pressure Measurement |
| UUID | 0x2A35 |
| Type | org.bluetooth.characteristic.blood_pressure_measurement |
| XML Root | Characteristic |
| Source File | org.bluetooth.characteristic.blood_pressure_measurement.xml |
| Field Count | 11 |
Field Specification
Parsed field definitions from the source XML value structure.
| Field | Requirement | Format | Unit | Exponent | Notes |
|---|---|---|---|---|---|
| Flags | Mandatory | 8bit | - | - | These flags define which data fields are present in the Characteristic value |
| Blood Pressure Measurement Compound Value - Systolic (mmHg) | C1 | SFLOAT | org.bluetooth.unit.pressure.millimetre_of_mercury | - | C1: Field exists if the key of bit 0 of the Flags field is set to 0 |
| Blood Pressure Measurement Compound Value - Diastolic (mmHg) | C1 | SFLOAT | org.bluetooth.unit.pressure.millimetre_of_mercury | - | C1: Field exists if the key of bit 0 of the Flags field is set to 0 |
| Blood Pressure Measurement Compound Value - Mean Arterial Pressure (mmHg) | C1 | SFLOAT | org.bluetooth.unit.pressure.millimetre_of_mercury | - | C1: Field exists if the key of bit 0 of the Flags field is set to 0 |
| Blood Pressure Measurement Compound Value - Systolic (kPa) | C2 | SFLOAT | org.bluetooth.unit.pressure.pascal | 3 | C2: Field exists if the key of bit 0 of the Flags field is set to 1 |
| Blood Pressure Measurement Compound Value - Diastolic (kPa) | C2 | SFLOAT | org.bluetooth.unit.pressure.pascal | 3 | C2: Field exists if the key of bit 0 of the Flags field is set to 1 |
| Blood Pressure Measurement Compound Value - Mean Arterial Pressure (kPa) | C2 | SFLOAT | org.bluetooth.unit.pressure.pascal | 3 | C2: Field exists if the key of bit 0 of the Flags field is set to 1 |
| Time Stamp | C3 | N/A | - | - | C3: Field exists if the key of bit 1 of the Flags field is set to 1 |
| Pulse Rate | C4 | SFLOAT | org.bluetooth.unit.period.beats_per_minute | - | C4: Field exists if the key of bit 2 of the Flags field is set to 1 |
| User ID | C5 | uint8 | - | - | C5: Field exists if the key of bit 3 of the Flags field is set to 1 |
| Measurement Status | C6 | 16bit | - | - | C6: Field exists if the key of bit 4 of the Flags field is set to 1 |
Bit Map
Bit-level enumerations extracted from the XML BitField definition.
| Field | Bit | Size | Name | 0 Means | 1 Means |
|---|---|---|---|---|---|
| Flags | 0 | 1 | Blood Pressure Units Flag | Blood pressure for Systolic, Diastolic and MAP in units of mmHg | Blood pressure for Systolic, Diastolic and MAP in units of kPa |
| Flags | 1 | 1 | Time Stamp Flag | Time Stamp not present | Time Stamp present |
| Flags | 2 | 1 | Pulse Rate Flag | Pulse Rate not present | Pulse Rate present |
| Flags | 3 | 1 | User ID Flag | User ID not present | User ID present |
| Flags | 4 | 1 | Measurement Status Flag | Measurement Status not present | Measurement Status present |
| Measurement Status | 0 | 1 | Body Movement Detection Flag | No body movement | Body movement during measurement |
| Measurement Status | 1 | 1 | Cuff Fit Detection Flag | Cuff fits properly | Cuff too loose |
| Measurement Status | 2 | 1 | Irregular Pulse Detection Flag | No irregular pulse detected | Irregular pulse detected |
| Measurement Status | 3 | 2 | Pulse Rate Range Detection Flags | Pulse rate is within the range | Pulse rate exceeds upper limit |
| Measurement Status | 5 | 1 | Measurement Position Detection Flag | Proper measurement position | Improper measurement position |
Byte Layout and Decode
Payload length is profile-defined or variable based on field formats.
function decodePayload(dataView, offset = 0) {
// Parse flags (8bit) according to Bluetooth format rules.
// Parse blood_pressure_measurement_compound_value_systolic_mmhg (SFLOAT) according to Bluetooth format rules.
// Parse blood_pressure_measurement_compound_value_diastolic_mmhg (SFLOAT) according to Bluetooth format rules.
// Parse blood_pressure_measurement_compound_value_mean_arterial_pressure_mmhg (SFLOAT) according to Bluetooth format rules.
// Parse blood_pressure_measurement_compound_value_systolic_kpa (SFLOAT) according to Bluetooth format rules.
// Parse blood_pressure_measurement_compound_value_diastolic_kpa (SFLOAT) according to Bluetooth format rules.
// Parse blood_pressure_measurement_compound_value_mean_arterial_pressure_kpa (SFLOAT) according to Bluetooth format rules.
// Parse time_stamp (N/A) according to Bluetooth format rules.
// Parse pulse_rate (SFLOAT) according to Bluetooth format rules.
const user_id = dataView.getUint8(offset + 0);
return { flags, blood_pressure_measurement_compound_value_systolic_mmhg, blood_pressure_measurement_compound_value_diastolic_mmhg, blood_pressure_measurement_compound_value_mean_arterial_pressure_mmhg, blood_pressure_measurement_compound_value_systolic_kpa, blood_pressure_measurement_compound_value_diastolic_kpa };
}
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 Blood Pressure Measurement in Bluetooth GATT?
Blood Pressure Measurement is defined as a Bluetooth GATT characteristic entry with type org.bluetooth.characteristic.blood_pressure_measurement and UUID 0x2A35.
What UUID identifies Blood Pressure Measurement?
The UUID for Blood Pressure Measurement is 0x2A35.
How should I parse Blood Pressure Measurement?
Payload length is profile-defined or variable based on field formats.
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.