Bluetooth GATT Characteristic Reference
Position Quality (0x2A69)
The Position Quality characteristic is a variable length structure containing a Flags field and at least one of the optional data fields listed below
Quick Summary
Payload length is 16 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 | Position Quality |
| UUID | 0x2A69 |
| Type | org.bluetooth.characteristic.position_quality |
| XML Root | Characteristic |
| Source File | org.bluetooth.characteristic.position_quality.xml |
| Field Count | 8 |
Field Specification
Parsed field definitions from the source XML value structure.
| Field | Requirement | Format | Unit | Exponent | Notes |
|---|---|---|---|---|---|
| Flags | Mandatory | 16bit | - | - | - |
| Number of Beacons in Solution | Optional | uint8 | org.bluetooth.unit.unitless | 0 | Unitless with a resolution of 1 |
| Number of Beacons in View | Optional | uint8 | org.bluetooth.unit.unitless | 0 | Unitless with a resolution of 1 |
| Time to First Fix | Optional | uint16 | org.bluetooth.unit.time.second | -1 | Unit is in seconds with a resolution of 1/10 |
| EHPE | Optional | uint32 | org.bluetooth.unit.length.meter | -2 | Unit is in meters with a resolution of 1/100 |
| EVPE | Optional | uint32 | org.bluetooth.unit.length.meter | -2 | Unit is in meters with a resolution of 1/100 |
| HDOP | Optional | uint8 | org.bluetooth.unit.unitless | -1 | Unitless with a resolution of 2/10 |
| VDOP | Optional | uint8 | org.bluetooth.unit.unitless | -1 | Unitless with a resolution of 2/10 |
Bit Map
Bit-level enumerations extracted from the XML BitField definition.
| Field | Bit | Size | Name | 0 Means | 1 Means |
|---|---|---|---|---|---|
| Flags | 0 | 1 | Number of Beacons in Solution Present | False | True |
| Flags | 1 | 1 | Number of Beacons in View Present | False | True |
| Flags | 2 | 1 | Time to First Fix Present | False | True |
| Flags | 3 | 1 | EHPE Present | False | True |
| Flags | 4 | 1 | EVPE Present | False | True |
| Flags | 5 | 1 | HDOP Present | False | True |
| Flags | 6 | 1 | VDOP Present | False | True |
| Flags | 7 | 2 | Position Status | No Position | Position Ok |
Byte Layout and Decode
Payload length is 16 bytes.
function decodePayload(dataView, offset = 0) {
// Parse flags (16bit) according to Bluetooth format rules.
const number_of_beacons_in_solution = dataView.getUint8(offset + 0);
const number_of_beacons_in_view = dataView.getUint8(offset + 1);
const time_to_first_fix = dataView.getUint16(offset + 2, true);
const ehpe = dataView.getUint32(offset + 4, true);
const evpe = dataView.getUint32(offset + 8, true);
const hdop = dataView.getUint8(offset + 12);
const vdop = dataView.getUint8(offset + 13);
return { flags, number_of_beacons_in_solution, number_of_beacons_in_view, time_to_first_fix, ehpe, evpe };
}
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 Position Quality in Bluetooth GATT?
Position Quality is defined as a Bluetooth GATT characteristic entry with type org.bluetooth.characteristic.position_quality and UUID 0x2A69.
What UUID identifies Position Quality?
The UUID for Position Quality is 0x2A69.
How should I parse Position Quality?
Payload length is 16 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.