Skip to content
AF

Glucose Measurement (0x2A18): byte layout

GATT characteristic · org.bluetooth.characteristic.glucose_measurement · read from the Bluetooth SIG’s repository on 2026-10-17 · commit 408f4a0 (2026-10-14)

Glucose Measurement is Bluetooth GATT characteristic 0x2A18, org.bluetooth.characteristic.glucose_measurement in the Bluetooth SIG's assigned numbers. The SIG's GATT Specification Supplement file lays its value out as 7 fields: Flags, Sequence Number, Base Time, Time Offset, Glucose Concentration and 2 more. The first, Flags, is a boolean[8]; 4 of the others are present only when a bit of it is set as the field's text states, so after the first of those, a field's offset depends on which bits are set.

UUID
0x2A18
Identifier
org.bluetooth.characteristic.glucose_measurement
The SIG’s description
The Glucose Measurement characteristic is used to represent data related to a glucose measurement record.The structure of this characteristic is defined below.
Service the SIG’s files tie it to
None: no file in the repository lists this characteristic under a service.
Source file
gss/org.bluetooth.characteristic.glucose_measurement.yaml

Byte layout: 7 fields

In the order the SIG’s structure lists them. Type and size are as published; sizes count octets except where a struct is marked as sized in bits. The offset is printed only where every earlier field has a fixed size; where an earlier field can be absent or vary, the cell names what it depends on. “Present when” is read from the field’s own “Present if” line, shown in full in the field notes below.

OffsetFieldTypeSizePresent whenUnit
0Flagsboolean[8]1Always (fixed size)—
1Sequence Numberuint162Always (fixed size)—
3Base Timestruct7Always (fixed size)—
10Time Offsetint160 or 2Bit 0 of Flags is 1time (minute)org.bluetooth.unit.time.minute
Depends on Flags (bit 0)Glucose Concentrationmedfloat160 or 2Bit 1 of Flags is 1not an id in units.yamlorg.bluetooth.unit.mass_density.kilogram_per_liternot an id in units.yamlorg.bluetooth.unit.mass_density.mole_per_litre
Depends on Flags (bits 0 and 1)Type-Sample Locationstruct0 or 1Bit 1 of Flags is 1—
+0 bits↳ Typeuint44 bitsAlways (fixed size)unitlessorg.bluetooth.unit.unitless
+4 bits↳ Sample Locationuint44 bitsAlways (fixed size)unitlessorg.bluetooth.unit.unitless
Depends on Flags (bits 0 and 1)Sensor Status Annunciationboolean[16]0 or 2Bit 3 of Flags is 1—

Field notes

Each field’s text in the SIG’s file, line by line.

Flags boolean[8] · 1
See Flags
Sequence Number uint16 · 2
Contains a sequence number of the record. It is used to number a sequence of measurements as defined by the service.
Base Time struct · 7
Refer to Date Time characteristic in Date Time (0x2A08)
Time Offset int16 · 0 or 2
Specifies the time difference from the value of the Base Time field.See Time Offsetunit: org.bluetooth.unit.time.minutePresent if bit 0 of Flags field is set to 1
Glucose Concentration medfloat16 · 0 or 2
If bit 2 of Flags field is set to 0,unit: org.bluetooth.unit.mass_density.kilogram_per_literIf bit 2 of Flags field is set to 1,unit: org.bluetooth.unit.mass_density.mole_per_litrePresent if bit 1 of Flags field is set to 1
Type-Sample Location struct · 0 or 1
See Type-Sample LocationPresent if bit 1 of Flags field is set to 1
Sensor Status Annunciation boolean[16] · 0 or 2
See Sensor Status AnnunciationPresent if bit 3 of Flags field is set to 1

Flags and value tables

The definitions the SIG’s file gives for its fields, every row as published. On a flags table the last column lists the fields whose “Present if” line names that bit.

Flags

The bits of this field are defined below.

BitDescriptionFields its condition names
0Time Offset Flag:0 = Time Offset field not present1 = Time Offset field presentTime Offset when 1
1Glucose Concentration and Type-Sample Location Flag:0 = Glucose Concentration and Type-Sample Location fields not present1 = Glucose Concentration and Type-Sample Location fields presentGlucose Concentration when 1Type-Sample Location when 1
2Glucose Units Flag:0 = Glucose concentration in units of mg/dL1 = Glucose concentration in units of mmol/L—
3Sensor Status Annunciation Flag:0 = Sensor Status Annunciation field not present1 = Sensor Status Annunciation field presentSensor Status Annunciation when 1
4Context Information Flag:0 = This record does not include context information1 = This record includes context information—
5–7Reserved for Future Use—

Time Offset

The values of this field are defined below

ValueDescription
0x0000–0xFFFFTime offset in minutes

Type-Sample Location(sizes in bits, as the file marks)

The structure of this field is defined below.

FieldData typeSizeDescription
Typeuint44Unit: org.bluetooth.unit.unitlessSee Type
Sample Locationuint44Unit: org.bluetooth.unit.unitlessSee Sample Location

Type

The values of this field are defined below.

ValueDescription
0x0Reserved for Future Use
0x1Capillary Whole blood
0x2Capillary Plasma
0x3Venous Whole blood
0x4Venous Plasma
0x5Arterial Whole blood
0x6Arterial Plasma
0x7Undetermined Whole blood
0x8Undetermined Plasma
0x9Interstitial Fluid (ISF)
0xAControl Solution
0xB–0xFReserved for Future Use

Sample Location

The values of this field are defined below

ValueDescription
0x0Reserved for Future Use
0x1Finger
0x2Alternate Site Test (AST)
0x3Earlobe
0x4Control solution
0x5–0xEReserved for Future Use
0xFSample Location value not available

Sensor Status Annunciation

The bits of this field are defined below.

BitDescriptionFields its condition names
0Device battery low:0 = The battery was not low at the time of measurement.1 = The battery was low at the time of measurement.—
1Sensor malfunction:0 = The sensor was not malfunctioning or faulting at the time of measurement.1 = The sensor was malfunctioning or faulting at the time of measurement.—
2Sample size insufficient:0 = There was enough blood or control solution on the strip during the measurement.1 = There was not enough blood or control solution on the strip during the measurement.—
3Strip insertion error:0 = The strip was inserted correctly.1 = The strip was not inserted correctly.—
4Strip type incorrect:0 = The strip was the right type for the device.1 = The strip was not the right type for the device.—
5Sensor result too high:0 = The reading or value was not higher than the device can process.1 = The reading or value was higher than the device can process.—
6Sensor result too low:0 = The reading or value was not lower than the device can process.1 = The reading or value was lower than the device can process.—
7Sensor temperature too high:0 = The ambient temperature was not too high for a valid test/result at the time of measurement.1 = The ambient temperature was too high for a valid test/result at the time of measurement.—
8Sensor temperature too low:0 = The ambient temperature was not too low for a valid test/result at the time of measurement.1 = The ambient temperature was too low for a valid test/result at the time of measurement.—
9Sensor read interrupted:0 = The reading was not interrupted and the strip was not pulled too soon during the measurement.1 = The reading was interrupted or the strip was pulled too soon during the measurement.—
10General device fault:0 = A general device fault has not occurred in the sensor device.1 = A general device fault has occurred in the sensor device.—
11Time fault:0 = A time fault has not occurred in the sensor device.1 = A time fault has occurred in the sensor device and the time is inaccurate.—
12–15Reserved for Future Use—

Guides on this site

The metric Glucose Measurement carries, on every platform this site covers — each type quoted in its platform's own words:

No guide on this site names 0x2A18 yet. The connected-devices guides cover pairing, subscribing and testing for the device types they do name.

Questions

What is the UUID of the Glucose Measurement characteristic?
0x2A18. The Bluetooth SIG's characteristic_uuids.yaml lists Glucose Measurement as 0x2A18 with the identifier org.bluetooth.characteristic.glucose_measurement. No file in the SIG's repository ties it to a service: the repository lists service and characteristic UUIDs separately.
Which Glucose Measurement fields are optional?
4 of its 7 fields have a published size that can be zero: Time Offset (0 or 2; Present if bit 0 of Flags field is set to 1); Glucose Concentration (0 or 2; Present if bit 1 of Flags field is set to 1); Type-Sample Location (0 or 1; Present if bit 1 of Flags field is set to 1); Sensor Status Annunciation (0 or 2; Present if bit 3 of Flags field is set to 1). Flags (1), Sequence Number (2) and Base Time (7) have a fixed size.
What units does Glucose Measurement use?
The SIG's text names a unit for 2 of the 7 fields: Time Offset: time (minute) (org.bluetooth.unit.time.minute); Glucose Concentration: org.bluetooth.unit.mass_density.kilogram_per_liter (not an id in units.yaml) and org.bluetooth.unit.mass_density.mole_per_litre (not an id in units.yaml), each on its own line of the field's text with the condition it states.
What do the bits of the Glucose Measurement Flags field mean?
The SIG defines them as: bit 0, Time Offset Flag: 0 = Time Offset field not present; 1 = Time Offset field present (Time Offset when 1); bit 1, Glucose Concentration and Type-Sample Location Flag: 0 = Glucose Concentration and Type-Sample Location fields not present; 1 = Glucose Concentration and Type-Sample Location fields present (Glucose Concentration when 1, Type-Sample Location when 1); bit 2, Glucose Units Flag: 0 = Glucose concentration in units of mg/dL; 1 = Glucose concentration in units of mmol/L; bit 3, Sensor Status Annunciation Flag: 0 = Sensor Status Annunciation field not present; 1 = Sensor Status Annunciation field present (Sensor Status Annunciation when 1); bit 4, Context Information Flag: 0 = This record does not include context information; 1 = This record includes context information. The remaining bits are reserved for future use.

Source

Read on 2026-10-17 from gss/org.bluetooth.characteristic.glucose_measurement.yaml and assigned_numbers/uuids/characteristic_uuids.yaml in the Bluetooth SIG’s public repository (branch main, commit 408f4a0, committed 2026-10-14), by scripts/fetch-bluetooth-gatt.mjs. The file’s notice says it is proprietary to Bluetooth SIG, that furnishing it grants no licence, and that it is subject to change without notice; it is © Bluetooth SIG, Inc., and its text is quoted here for identification. Generated by AIFitnessAPI, which is not affiliated with Bluetooth SIG; the SIG’s file remains the authority. The full notice and the conventions used on these pages are on the reference hub.

← All Bluetooth GATT characteristics