Bluetooth GATT Attribute Reference
Characteristic Declaration (0x2803)
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.
| Property | Value |
|---|---|
| Name | Characteristic Declaration |
| UUID | 0x2803 |
| Type | org.bluetooth.attribute.gatt.characteristic_declaration |
| XML Root | Attribute |
| Source File | org.bluetooth.attribute.gatt.characteristic_declaration.xml |
| Field Count | 3 |
Field Specification
Parsed field definitions from the source XML value structure.
| Field | Requirement | Format | Unit | Exponent | Notes |
|---|---|---|---|---|---|
| Characteristic Properties | Mandatory | uint8 | - | - | - |
| Characteristic Value Handle | Mandatory | uint16 | - | - | - |
| Characteristic UUID | Mandatory | gatt_uuid | - | - | - |
Bit Map
Bit-level enumerations extracted from the XML BitField definition.
| Field | Bit | Size | Name | 0 Means | 1 Means |
|---|---|---|---|---|---|
| Characteristic Properties | 0 | 1 | Broadcast | No Broadcast | Broadcast |
| Characteristic Properties | 1 | 1 | Read | No Read | Read |
| Characteristic Properties | 2 | 1 | Write Without Response | No Write Without Response | Write Without Response |
| Characteristic Properties | 3 | 1 | Write | No Write | Write |
| Characteristic Properties | 4 | 1 | Notify | No Notify | Notify |
| Characteristic Properties | 5 | 1 | Indicate | No Indicate | Indicate |
| Characteristic Properties | 6 | 1 | Authenticated Signed Writes | No Authenticated Signed Writes | Authenticated Signed Writes |
| Characteristic Properties | 7 | 1 | Extended Properties | No Extended Properties | Extended 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.