Bluetooth GATT Characteristic Reference
Cycling Power Vector (0x2A64)
The Cycling Power Vector characteristic is a variable length structure containing a Flags fieldand based on the contents of the Flags field, may contain one or more additional fields as shown in the table below.
Quick Summary
Payload length is 11 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 | Cycling Power Vector |
| UUID | 0x2A64 |
| Type | org.bluetooth.characteristic.cycling_power_vector |
| XML Root | Characteristic |
| Source File | org.bluetooth.characteristic.cycling_power_vector.xml |
| Field Count | 6 |
Field Specification
Parsed field definitions from the source XML value structure.
| Field | Requirement | Format | Unit | Exponent | Notes |
|---|---|---|---|---|---|
| Flags | Mandatory | 8bit | - | - | - |
| Crank Revolution Data - Cumulative Crank Revolutions | C1 | uint16 | org.bluetooth.unit.unitless | 0 | Unitless |
| Crank Revolution Data - Last Crank Event Time | C1 | uint16 | org.bluetooth.unit.time.second | - | Unit is in seconds with a resolution of 1/1024. |
| First Crank Measurement Angle | Optional | uint16 | org.bluetooth.unit.plane_angle.degree | 0 | Unit is in degrees with a resolution of 1. |
| Instantaneous Force Magnitude Array | C2 | sint16 | org.bluetooth.unit.force.newton | 0 | The unit is in newtons with a resolution of 1 |
| Instantaneous Torque Magnitude Array | C2 | sint16 | org.bluetooth.unit.moment_of_force.newton_metre | - | Unit is in newton/meter with a resolution of 1/32 |
Bit Map
Bit-level enumerations extracted from the XML BitField definition.
| Field | Bit | Size | Name | 0 Means | 1 Means |
|---|---|---|---|---|---|
| Flags | 0 | 1 | Crank Revolution Data Present | False | True |
| Flags | 1 | 1 | First Crank Measurement Angle Present | False | True |
| Flags | 2 | 1 | Instantaneous Force Magnitude Array Present | False | True |
| Flags | 3 | 1 | Instantaneous Torque Magnitude Array Present | False | True |
| Flags | 4 | 2 | Instantaneous Measurement Direction | Unknown | Tangential Component |
Byte Layout and Decode
Payload length is 11 bytes.
function decodePayload(dataView, offset = 0) {
// Parse flags (8bit) according to Bluetooth format rules.
const crank_revolution_data_cumulative_crank_revolutions = dataView.getUint16(offset + 0, true);
const crank_revolution_data_last_crank_event_time = dataView.getUint16(offset + 2, true);
const first_crank_measurement_angle = dataView.getUint16(offset + 4, true);
const instantaneous_force_magnitude_array = dataView.getInt16(offset + 6, true);
const instantaneous_torque_magnitude_array = dataView.getInt16(offset + 8, true);
return { flags, crank_revolution_data_cumulative_crank_revolutions, crank_revolution_data_last_crank_event_time, first_crank_measurement_angle, instantaneous_force_magnitude_array, instantaneous_torque_magnitude_array };
}
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 Cycling Power Vector in Bluetooth GATT?
Cycling Power Vector is defined as a Bluetooth GATT characteristic entry with type org.bluetooth.characteristic.cycling_power_vector and UUID 0x2A64.
What UUID identifies Cycling Power Vector?
The UUID for Cycling Power Vector is 0x2A64.
How should I parse Cycling Power Vector?
Payload length is 11 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.