Bluetooth GATT Characteristic Reference
PLX Continuous Measurement Characteristic (0x2A5F)
The PLX Continuous Measurement characteristic, if supported, is used to send periodic pulse oximetry measurements. This characteristic is a variable length structure containing the Flags field (to indicate presence of optional fields), the SpO2PR-Normal field, and depending on the contents of the Flags field, the SpO2PR-Fast field, the SpO2PR-Slow field, the Measurement Status field, the Device and Sensor Status field, and/or the Pulse Amplitude Index field.
Quick Summary
Payload length is 20 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 | PLX Continuous Measurement Characteristic |
| UUID | 0x2A5F |
| Type | org.bluetooth.characteristic.plx_continuous_measurement |
| XML Root | Characteristic |
| Source File | org.bluetooth.characteristic.plx_continuous_measurement.xml |
| Field Count | 10 |
Field Specification
Parsed field definitions from the source XML value structure.
| Field | Requirement | Format | Unit | Exponent | Notes |
|---|---|---|---|---|---|
| Flags | Mandatory | 8bit | - | - | - |
| SpO2PR-Normal - SpO2 | Mandatory | SFLOAT | org.bluetooth.unit.percentage | 0 | Unit is percentage with a resolution of 1 |
| SpO2PR-Normal - PR | Mandatory | SFLOAT | org.bluetooth.unit.period.beats_per_minute | 0 | Unit is beats per minute with a resolution of 1 |
| SpO2PR-Fast - SpO2 | C1 | SFLOAT | org.bluetooth.unit.percentage | 0 | Unit is percentage with a resolution of 1 |
| SpO2PR-Fast - PR | C1 | SFLOAT | org.bluetooth.unit.period.beats_per_minute | 0 | Unit is beats per minute with a resolution of 1 |
| SpO2PR-Slow - SpO2 | C2 | SFLOAT | org.bluetooth.unit.percentage | 0 | Unit is percentage with a resolution of 1 |
| SpO2PR-Slow - PR | C2 | SFLOAT | org.bluetooth.unit.period.beats_per_minute | 0 | Unit is beats per minute with a resolution of 1 |
| Measurement Status | C3 | 16bit | - | - | - |
| Device and Sensor Status | C4 | 24bit | - | - | - |
| Pulse Amplitude Index | C5 | SFLOAT | org.bluetooth.unit.percentage | 0 | Unit is percentage with a resolution of 1 |
Bit Map
Bit-level enumerations extracted from the XML BitField definition.
| Field | Bit | Size | Name | 0 Means | 1 Means |
|---|---|---|---|---|---|
| Flags | 0 | 1 | SpO2PR?Fast field is present | False | True |
| Flags | 1 | 1 | SpO2PR-Slow field is present | False | True |
| Flags | 2 | 1 | Measurement Status field is present | False | True |
| Flags | 3 | 1 | Device and Sensor Status field is present | False | True |
| Flags | 4 | 1 | Pulse Amplitude Index field is present | False | True |
| Measurement Status | 5 | 1 | Measurement Ongoing | False | True |
| Measurement Status | 6 | 1 | Early Estimated Data | False | True |
| Measurement Status | 7 | 1 | Validated Data | False | True |
| Measurement Status | 8 | 1 | Fully Qualified Data | False | True |
| Measurement Status | 9 | 1 | Data from Measurement Storage | False | True |
| Measurement Status | 10 | 1 | Data for Demonstration | False | True |
| Measurement Status | 11 | 1 | Data for Testing | False | True |
| Measurement Status | 12 | 1 | Calibration Ongoing | False | True |
| Measurement Status | 13 | 1 | Measurement Unavailable | False | True |
| Measurement Status | 14 | 1 | Questionable Measurement Detected | False | True |
| Measurement Status | 15 | 1 | Invalid Measurement Detected | False | True |
| Device and Sensor Status | 0 | 1 | Extended Display Update Ongoing bit supported | False | True |
| Device and Sensor Status | 1 | 1 | Equipment Malfunction Detected bit supported | False | True |
| Device and Sensor Status | 2 | 1 | Signal Processing Irregularity Detected bit supported | False | True |
| Device and Sensor Status | 3 | 1 | Inadequite Signal Detected bit supported | False | True |
| Device and Sensor Status | 4 | 1 | Poor Signal Detected bit supported | False | True |
| Device and Sensor Status | 5 | 1 | Low Perfusion Detected bit supported | False | True |
| Device and Sensor Status | 6 | 1 | Erratic Signal Detected bit supported | False | True |
| Device and Sensor Status | 7 | 1 | Nonpulsatile Signal Detected bit supported | False | True |
| Device and Sensor Status | 8 | 1 | Questionable Pulse Detected bit supported | False | True |
| Device and Sensor Status | 9 | 1 | Signal Analysis Ongoing bit supported | False | True |
| Device and Sensor Status | 10 | 1 | Sensor Interference Detected bit supported | False | True |
| Device and Sensor Status | 11 | 1 | Sensor Unconnected to User bit supported | False | True |
| Device and Sensor Status | 12 | 1 | Unknown Sensor Connected bit supported | False | True |
| Device and Sensor Status | 13 | 1 | Sensor Displaced bit supported | False | True |
| Device and Sensor Status | 14 | 1 | Sensor Malfunctioning bit supported | False | True |
| Device and Sensor Status | 15 | 1 | Sensor Disconnected bit supported | False | True |
Byte Layout and Decode
Payload length is 20 bytes.
function decodePayload(dataView, offset = 0) {
// Parse flags (8bit) according to Bluetooth format rules.
// Parse spo2pr_normal_spo2 (SFLOAT) according to Bluetooth format rules.
// Parse spo2pr_normal_pr (SFLOAT) according to Bluetooth format rules.
// Parse spo2pr_fast_spo2 (SFLOAT) according to Bluetooth format rules.
// Parse spo2pr_fast_pr (SFLOAT) according to Bluetooth format rules.
// Parse spo2pr_slow_spo2 (SFLOAT) according to Bluetooth format rules.
// Parse spo2pr_slow_pr (SFLOAT) according to Bluetooth format rules.
// Parse measurement_status (16bit) according to Bluetooth format rules.
// Parse device_and_sensor_status (24bit) according to Bluetooth format rules.
// Parse pulse_amplitude_index (SFLOAT) according to Bluetooth format rules.
return { flags, spo2pr_normal_spo2, spo2pr_normal_pr, spo2pr_fast_spo2, spo2pr_fast_pr, spo2pr_slow_spo2 };
}
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 PLX Continuous Measurement Characteristic in Bluetooth GATT?
PLX Continuous Measurement Characteristic is defined as a Bluetooth GATT characteristic entry with type org.bluetooth.characteristic.plx_continuous_measurement and UUID 0x2A5F.
What UUID identifies PLX Continuous Measurement Characteristic?
The UUID for PLX Continuous Measurement Characteristic is 0x2A5F.
How should I parse PLX Continuous Measurement Characteristic?
Payload length is 20 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.