src.bluetooth_sig.gatt.special_values_resolver¶
Resolver for merged special-value rules with runtime overrides.
This module provides SpecialValueResolver that centralises special-value lookups with a priority: user overrides > class rules > spec rules.
It reuses the data types defined in bluetooth_sig.types.special_values.
Classes¶
Name | Description |
|---|---|
Resolve raw integers to SpecialValueResult and provide reverse lookups. |
Module Contents¶
- class src.bluetooth_sig.gatt.special_values_resolver.SpecialValueResolver(spec_rules: dict[int, bluetooth_sig.types.special_values.SpecialValueRule] | None = None, class_rules: dict[int, bluetooth_sig.types.special_values.SpecialValueRule] | None = None)¶
Resolve raw integers to SpecialValueResult and provide reverse lookups.
Behavior: - The resolver stores three sources:
spec_rules (lowest priority)
class_rules
user_overrides (highest priority)
Users may add rules at runtime or disable a raw value (by setting a sentinel None in user_overrides).
- add_special_value(rule: bluetooth_sig.types.special_values.SpecialValueRule) None¶
Convenience to add a user-defined special rule.
- disable_special_value(raw_value: int) None¶
Disable special-value handling for a raw value (treat as normal data).
- get_raw_for_meaning(meaning: str) int | None¶
Return first raw value where meaning contains the given string (ci, partial).
- get_raw_for_type(value_type: src.bluetooth_sig.types.units.SpecialValueType) int | None¶
Return the first raw value matching the given SpecialValueType.
Search priority: user > class > spec.
- list_all_rules() dict[int, tuple[bluetooth_sig.types.special_values.SpecialValueRule, str]]¶
Return merged rules with source tag (‘user’,’class’,’spec’).
User overrides (including disables) take precedence and may remove a rule by setting it to None.
- resolve(raw_value: int) bluetooth_sig.types.special_values.SpecialValueResult | None¶
Return SpecialValueResult if raw_value is special, otherwise None.
- set_user_override(raw_value: int, rule: bluetooth_sig.types.special_values.SpecialValueRule) None¶
Set or replace a user override for a raw value.