src.bluetooth_sig.gatt.characteristics.cgm_feature

CGM Feature characteristic implementation.

Implements the CGM Feature characteristic (0x2AA8). Fixed-size structure of 6 bytes: 24-bit feature flags + packed nibble type/location + 16-bit E2E-CRC.

Structure (from GSS YAML):

CGM Feature (3 bytes, boolean[24]) CGM Type-Sample Location (1 byte, two 4-bit nibbles packed) E2E-CRC (2 bytes, uint16) – always present per spec

References

Bluetooth SIG Continuous Glucose Monitoring Service org.bluetooth.characteristic.cgm_feature (GSS YAML)

Classes

Name

Description

CGMFeatureCharacteristic

CGM Feature characteristic (0x2AA8).

CGMFeatureData

Parsed data from CGM Feature characteristic.

CGMFeatureFlags

CGM Feature flags (24-bit).

CGMSampleLocation

CGM sample location (upper nibble).

CGMType

CGM sample type (lower nibble).

Module Contents

class src.bluetooth_sig.gatt.characteristics.cgm_feature.CGMFeatureCharacteristic

Bases: src.bluetooth_sig.gatt.characteristics.base.BaseCharacteristic[CGMFeatureData]

CGM Feature characteristic (0x2AA8).

Reports the supported features, sample type, sample location, and E2E-CRC for a CGM sensor. Fixed 6-byte structure.

expected_length: int = 6
expected_type
class src.bluetooth_sig.gatt.characteristics.cgm_feature.CGMFeatureData

Bases: msgspec.Struct

Parsed data from CGM Feature characteristic.

features

24-bit CGM feature flags.

cgm_type

CGM sample type.

sample_location

CGM sample location.

e2e_crc

E2E-CRC value.

cgm_type: CGMType
e2e_crc: int
features: CGMFeatureFlags
sample_location: CGMSampleLocation
class src.bluetooth_sig.gatt.characteristics.cgm_feature.CGMFeatureFlags

Bases: enum.IntFlag

CGM Feature flags (24-bit).

CALIBRATION_SUPPORTED = 1
CGM_QUALITY_SUPPORTED = 65536
CGM_TREND_INFORMATION_SUPPORTED = 32768
DEVICE_SPECIFIC_ALERT = 32
E2E_CRC_SUPPORTED = 4096
GENERAL_DEVICE_FAULT = 2048
HYPER_ALERTS = 8
HYPO_ALERTS = 4
LOW_BATTERY_DETECTION = 512
MULTIPLE_BOND_SUPPORTED = 8192
MULTIPLE_SESSIONS_SUPPORTED = 16384
PATIENT_HIGH_LOW_ALERTS = 2
RATE_ALERTS = 16
SENSOR_MALFUNCTION_DETECTION = 64
SENSOR_RESULT_HIGH_LOW_DETECTION = 256
SENSOR_TEMP_HIGH_LOW_DETECTION = 128
SENSOR_TYPE_ERROR_DETECTION = 1024
class src.bluetooth_sig.gatt.characteristics.cgm_feature.CGMSampleLocation

Bases: enum.IntEnum

CGM sample location (upper nibble).

ALTERNATE_SITE_TEST = 2
CONTROL_SOLUTION = 4
EARLOBE = 3
FINGER = 1
NOT_AVAILABLE = 15
SUBCUTANEOUS_TISSUE = 5
class src.bluetooth_sig.gatt.characteristics.cgm_feature.CGMType

Bases: enum.IntEnum

CGM sample type (lower nibble).

ARTERIAL_PLASMA = 6
ARTERIAL_WHOLE_BLOOD = 5
CAPILLARY_PLASMA = 2
CAPILLARY_WHOLE_BLOOD = 1
CONTROL_SOLUTION = 10
INTERSTITIAL_FLUID = 9
UNDETERMINED_PLASMA = 8
UNDETERMINED_WHOLE_BLOOD = 7
VENOUS_PLASMA = 4
VENOUS_WHOLE_BLOOD = 3