VelocAI logo Bluetooth Explorer Documentation

Bluetooth GATT Characteristic Reference

Position Quality (0x2A69)

org.bluetooth.characteristic.position_quality

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.

PropertyValue
NamePosition Quality
UUID0x2A69
Typeorg.bluetooth.characteristic.position_quality
XML RootCharacteristic
Source Fileorg.bluetooth.characteristic.position_quality.xml
Field Count8

Field Specification

Parsed field definitions from the source XML value structure.

Field Requirement Format Unit Exponent Notes
FlagsMandatory16bit---
Number of Beacons in SolutionOptionaluint8org.bluetooth.unit.unitless0Unitless with a resolution of 1
Number of Beacons in ViewOptionaluint8org.bluetooth.unit.unitless0Unitless with a resolution of 1
Time to First FixOptionaluint16org.bluetooth.unit.time.second-1Unit is in seconds with a resolution of 1/10
EHPEOptionaluint32org.bluetooth.unit.length.meter-2Unit is in meters with a resolution of 1/100
EVPEOptionaluint32org.bluetooth.unit.length.meter-2Unit is in meters with a resolution of 1/100
HDOPOptionaluint8org.bluetooth.unit.unitless-1Unitless with a resolution of 2/10
VDOPOptionaluint8org.bluetooth.unit.unitless-1Unitless 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
Flags01Number of Beacons in Solution PresentFalseTrue
Flags11Number of Beacons in View PresentFalseTrue
Flags21Time to First Fix PresentFalseTrue
Flags31EHPE PresentFalseTrue
Flags41EVPE PresentFalseTrue
Flags51HDOP PresentFalseTrue
Flags61VDOP PresentFalseTrue
Flags72Position StatusNo PositionPosition 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.