Bluetooth GATT Characteristic Reference
CGM Specific Ops Control Point (0x2AAC)
The CGM Specific Ops Control Point encapsulates all functionality and mechanisms that are unique to a CGM-device. This control point is used with a service to provide CGM specific functionality and the ability to change CGM specific settings of the device. This includes functions like setting the CGM Communication Interval or the sending a calibration value to the device. The criterion in the Operand field is defined by the service that references this characteristic
Quick Summary
Payload length is profile-defined or variable based on field formats. 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 | CGM Specific Ops Control Point |
| UUID | 0x2AAC |
| Type | org.bluetooth.characteristic.cgm_specific_ops_control_point |
| XML Root | Characteristic |
| Source File | org.bluetooth.characteristic.cgm_specific_ops_control_point.xml |
| Field Count | 11 |
Field Specification
Parsed field definitions from the source XML value structure.
| Field | Requirement | Format | Unit | Exponent | Notes |
|---|---|---|---|---|---|
| Op Code | Mandatory | uint8 | - | - | - |
| Op Code - Response Codes | Mandatory | uint8 | - | - | - |
| Operand | Mandatory | variable | - | - | Value defined per Service |
| E2E-CRC | C1 | uint16 | - | - | If the device supports E2E-safety (E2E-CRC-Supported bit is set in CGM Feature), the specific ops control point is secured by a CRC calculated over all fields. Refer to CGM Service specification. |
| Calibration Value - Glucose Concentration of Calibration | Mandatory | SFLOAT | org.bluetooth.unit.mass_density.milligram_per_decilitre | 0 | See Note number 2 below. |
| Calibration Value - Calibration Time | Mandatory | uint16 | org.bluetooth.unit.time.minute | 0 | See Note number 2 below. |
| Calibration Value - Calibration Type | Mandatory | 4bit | - | - | See Note number 2 below. |
| Calibration Value - Calibration Sample Location | Mandatory | 4bit | - | - | See Note number 2 below. |
| Calibration Value - Next Calibration Time | Mandatory | uint16 | org.bluetooth.unit.time.minute | 0 | See Note number 2 below. |
| Calibration Value - Calibration Data Record Number | Mandatory | uint16 | - | - | See Note number 2 below. |
| Calibration Value - Calibration Status | Mandatory | 8bit | - | - | See Note number 2 below. |
Bit Map
Bit-level enumerations extracted from the XML BitField definition.
| Field | Bit | Size | Name | 0 Means | 1 Means |
|---|---|---|---|---|---|
| Calibration Value - Calibration Status | 0 | 1 | Calibration Data rejected (Calibration failed) | False | True |
| Calibration Value - Calibration Status | 1 | 1 | Calibration Data out of range | False | True |
| Calibration Value - Calibration Status | 2 | 1 | Calibration Process Pending | False | True |
Byte Layout and Decode
Payload length is profile-defined or variable based on field formats.
function decodePayload(dataView, offset = 0) {
const op_code = dataView.getUint8(offset + 0);
const op_code_response_codes = dataView.getUint8(offset + 1);
// Parse operand (variable) according to Bluetooth format rules.
const e2e_crc = dataView.getUint16(offset + 2, true);
// Parse calibration_value_glucose_concentration_of_calibration (SFLOAT) according to Bluetooth format rules.
const calibration_value_calibration_time = dataView.getUint16(offset + 4, true);
// Parse calibration_value_calibration_type (4bit) according to Bluetooth format rules.
// Parse calibration_value_calibration_sample_location (4bit) according to Bluetooth format rules.
const calibration_value_next_calibration_time = dataView.getUint16(offset + 6, true);
const calibration_value_calibration_data_record_number = dataView.getUint16(offset + 8, true);
return { op_code, op_code_response_codes, operand, e2e_crc, calibration_value_glucose_concentration_of_calibration, calibration_value_calibration_time };
}
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 CGM Specific Ops Control Point in Bluetooth GATT?
CGM Specific Ops Control Point is defined as a Bluetooth GATT characteristic entry with type org.bluetooth.characteristic.cgm_specific_ops_control_point and UUID 0x2AAC.
What UUID identifies CGM Specific Ops Control Point?
The UUID for CGM Specific Ops Control Point is 0x2AAC.
How should I parse CGM Specific Ops Control Point?
Payload length is profile-defined or variable based on field formats.
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.