src.bluetooth_sig.gatt.characteristics.templates.scaled¶
Scaled value templates with configurable resolution and offset.
Covers ScaledTemplate (abstract), ScaledUint8/16/24/32, ScaledSint8/16/24/32, and PercentageTemplate.
Classes¶
Name | Description |
|---|---|
Template for percentage values (0-100%) using uint8. |
|
Template for scaled 16-bit signed integer. |
|
Template for scaled 24-bit signed integer with configurable resolution and offset. |
|
Template for scaled 32-bit signed integer with configurable resolution and offset. |
|
Template for scaled 8-bit signed integer. |
|
Base class for scaled integer templates. |
|
Template for scaled 16-bit unsigned integer. |
|
Template for scaled 24-bit unsigned integer with configurable resolution and offset. |
|
Template for scaled 32-bit unsigned integer with configurable resolution and offset. |
|
Template for scaled 8-bit unsigned integer. |
Module Contents¶
- class src.bluetooth_sig.gatt.characteristics.templates.scaled.PercentageTemplate¶
Bases:
src.bluetooth_sig.gatt.characteristics.templates.base.CodingTemplate[int]Template for percentage values (0-100%) using uint8.
- decode_value(data: bytearray, offset: int = 0, ctx: src.bluetooth_sig.gatt.context.CharacteristicContext | None = None, *, validate: bool = True) int¶
Parse percentage value.
- property extractor: src.bluetooth_sig.gatt.characteristics.utils.extractors.RawExtractor¶
Get uint8 extractor.
- property translator: src.bluetooth_sig.gatt.characteristics.utils.translators.IdentityTranslator¶
Return identity translator since validation is separate from translation.
- class src.bluetooth_sig.gatt.characteristics.templates.scaled.ScaledSint16Template(scale_factor: float = 0.01, offset: int = 0)¶
Bases:
ScaledTemplateTemplate for scaled 16-bit signed integer.
Used for signed values that need decimal precision encoded as integers. Can be initialized with scale_factor/offset or Bluetooth SIG M, d, b parameters. Formula: value = scale_factor * (raw + offset) or value = M * 10^d * (raw + b) Example: Temperature -10.5°C stored as -1050 with scale_factor=0.01, offset=0 or M=1, d=-2, b=0
- class src.bluetooth_sig.gatt.characteristics.templates.scaled.ScaledSint24Template(scale_factor: float = 0.01, offset: int = 0)¶
Bases:
ScaledTemplateTemplate for scaled 24-bit signed integer with configurable resolution and offset.
Used for signed values encoded in 3 bytes. Example: Elevation 500.00m stored as bytes with scale_factor=0.01, offset=0
- class src.bluetooth_sig.gatt.characteristics.templates.scaled.ScaledSint32Template(scale_factor: float = 0.01, offset: int = 0)¶
Bases:
ScaledTemplateTemplate for scaled 32-bit signed integer with configurable resolution and offset.
Used for signed values encoded in 4 bytes. Example: Longitude -180.0 to 180.0 degrees stored with scale_factor=1e-7
- class src.bluetooth_sig.gatt.characteristics.templates.scaled.ScaledSint8Template(scale_factor: float = 1.0, offset: int = 0)¶
Bases:
ScaledTemplateTemplate for scaled 8-bit signed integer.
Used for signed values that need decimal precision encoded as integers. Can be initialized with scale_factor/offset or Bluetooth SIG M, d, b parameters. Formula: value = scale_factor * (raw + offset) or value = M * 10^d * (raw + b) Example: Temperature with scale_factor=0.01, offset=0 or M=1, d=-2, b=0
- class src.bluetooth_sig.gatt.characteristics.templates.scaled.ScaledTemplate(scale_factor: float, offset: int)¶
Bases:
src.bluetooth_sig.gatt.characteristics.templates.base.CodingTemplate[float]Base class for scaled integer templates.
Handles common scaling logic: value = (raw + offset) * scale_factor Subclasses implement raw parsing/encoding and range checking.
Exposes extractor and translator for pipeline access.
- decode_value(data: bytearray, offset: int = 0, ctx: src.bluetooth_sig.gatt.context.CharacteristicContext | None = None, *, validate: bool = True) float¶
Parse scaled integer value.
- classmethod from_letter_method(M: int, d: int, b: int) ScaledTemplate¶
Create instance using Bluetooth SIG M, d, b parameters.
- Parameters:
M – Multiplier factor
d – Decimal exponent (10^d)
b – Offset to add to raw value before scaling
- Returns:
ScaledTemplate instance
- classmethod from_scale_offset(scale_factor: float, offset: int) ScaledTemplate¶
Create instance using scale factor and offset.
- Parameters:
scale_factor – Factor to multiply raw value by
offset – Offset to add to raw value before scaling
- Returns:
ScaledTemplate instance
- property extractor: src.bluetooth_sig.gatt.characteristics.utils.extractors.RawExtractor¶
Get the byte extractor for pipeline access.
- property translator: src.bluetooth_sig.gatt.characteristics.utils.translators.LinearTranslator¶
Get the value translator for pipeline access.
- class src.bluetooth_sig.gatt.characteristics.templates.scaled.ScaledUint16Template(scale_factor: float = 1.0, offset: int = 0)¶
Bases:
ScaledTemplateTemplate for scaled 16-bit unsigned integer.
Used for values that need decimal precision encoded as integers. Can be initialized with scale_factor/offset or Bluetooth SIG M, d, b parameters. Formula: value = scale_factor * (raw + offset) or value = M * 10^d * (raw + b) Example: Temperature 25.5°C stored as 2550 with scale_factor=0.01, offset=0 or M=1, d=-2, b=0
- class src.bluetooth_sig.gatt.characteristics.templates.scaled.ScaledUint24Template(scale_factor: float = 1.0, offset: int = 0)¶
Bases:
ScaledTemplateTemplate for scaled 24-bit unsigned integer with configurable resolution and offset.
Used for values encoded in 3 bytes as unsigned integers. Example: Illuminance 1000 lux stored as bytes with scale_factor=1.0, offset=0
- class src.bluetooth_sig.gatt.characteristics.templates.scaled.ScaledUint32Template(scale_factor: float = 0.1, offset: int = 0)¶
Bases:
ScaledTemplateTemplate for scaled 32-bit unsigned integer with configurable resolution and offset.
- class src.bluetooth_sig.gatt.characteristics.templates.scaled.ScaledUint8Template(scale_factor: float = 1.0, offset: int = 0)¶
Bases:
ScaledTemplateTemplate for scaled 8-bit unsigned integer.
Used for unsigned values that need decimal precision encoded as integers. Can be initialized with scale_factor/offset or Bluetooth SIG M, d, b parameters. Formula: value = scale_factor * (raw + offset) or value = M * 10^d * (raw + b) Example: Uncertainty with scale_factor=0.1, offset=0 or M=1, d=-1, b=0