VelocAI logo Bluetooth Explorer Documentation

Bluetooth GATT Attribute Reference

Characteristic Declaration (0x2803)

org.bluetooth.attribute.gatt.characteristic_declaration

Characteristic Declaration is defined in the Bluetooth GATT XML specification with type org.bluetooth.attribute.gatt.characteristic_declaration and UUID 0x2803.

Quick Summary

Payload length ranges from 5 to 19 bytes depending on UUID width or variable fields. 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
NameCharacteristic Declaration
UUID0x2803
Typeorg.bluetooth.attribute.gatt.characteristic_declaration
XML RootAttribute
Source Fileorg.bluetooth.attribute.gatt.characteristic_declaration.xml
Field Count3

Field Specification

Parsed field definitions from the source XML value structure.

Field Requirement Format Unit Exponent Notes
Characteristic PropertiesMandatoryuint8---
Characteristic Value HandleMandatoryuint16---
Characteristic UUIDMandatorygatt_uuid---

Bit Map

Bit-level enumerations extracted from the XML BitField definition.

Field Bit Size Name 0 Means 1 Means
Characteristic Properties01BroadcastNo BroadcastBroadcast
Characteristic Properties11ReadNo ReadRead
Characteristic Properties21Write Without ResponseNo Write Without ResponseWrite Without Response
Characteristic Properties31WriteNo WriteWrite
Characteristic Properties41NotifyNo NotifyNotify
Characteristic Properties51IndicateNo IndicateIndicate
Characteristic Properties61Authenticated Signed WritesNo Authenticated Signed WritesAuthenticated Signed Writes
Characteristic Properties71Extended PropertiesNo Extended PropertiesExtended Properties

Byte Layout and Decode

Payload length ranges from 5 to 19 bytes depending on UUID width or variable fields.

function decodePayload(dataView, offset = 0) {
  const characteristic_properties = dataView.getUint8(offset + 0);
  const characteristic_value_handle = dataView.getUint16(offset + 1, true);
  const characteristic_uuidRaw = new Uint8Array(dataView.buffer, dataView.byteOffset + offset + 3);
  const characteristic_uuid = characteristic_uuidRaw.length === 2
    ? `0x${characteristic_uuidRaw[0].toString(16).padStart(2, "0")}${characteristic_uuidRaw[1].toString(16).padStart(2, "0")}`
    : Array.from(characteristic_uuidRaw).map((b) => b.toString(16).padStart(2, "0")).join("");
  // UUID width can be 2 bytes (16-bit) or 16 bytes (128-bit).
  return { characteristic_properties, characteristic_value_handle, characteristic_uuid };
}

Use Cases and Integration Notes

GATT Table Parsing

Interpret declaration attributes to build reliable handles and operation maps in clients.

Code Generation

Use attribute metadata to auto-generate strongly-typed BLE client APIs.

Firmware QA

Check declaration consistency against actual values to catch table defects early.

Implementation Checklist

  • Parse attribute fields strictly in declared order and format.
  • Treat handles and value references as separate entities where required.
  • Guard for variable-width UUID formats in mixed 16-bit and 128-bit profiles.
  • Log parsed attribute metadata for post-run debugging and audits.

FAQ

What is Characteristic Declaration in Bluetooth GATT?

Characteristic Declaration is defined as a Bluetooth GATT attribute entry with type org.bluetooth.attribute.gatt.characteristic_declaration and UUID 0x2803.

What UUID identifies Characteristic Declaration?

The UUID for Characteristic Declaration is 0x2803.

How should I parse Characteristic Declaration?

Payload length ranges from 5 to 19 bytes depending on UUID width or variable fields.

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.