Limitations

What this library does not do.

❌ Bluetooth Classic (BR/EDR)

Not supported:

  • RFCOMM, A2DP, HFP, and other Classic Bluetooth profiles

  • SDP service discovery

  • L2CAP for Classic connections

This library focuses exclusively on BLE GATT.


❌ BLE Stack Implementation

Not provided:

  • ATT protocol handling

  • L2CAP implementation

  • HCI interface

  • Link layer implementation

  • GATT server/peripheral role

The library works at the application layer. Lower-level protocols are handled by your BLE backend (bleak, simplepyble, etc.) and OS.


❌ Hardware Abstraction

Not included:

  • Bluetooth adapter management

  • Driver installation

  • Platform-specific configuration

  • USB dongle management

Hardware abstraction is provided by the OS Bluetooth stack and your chosen BLE library.


❌ Real-Time Streaming

Not optimized for:

  • High-frequency data (>100 Hz)

  • Sub-millisecond latency requirements

  • Audio/video streaming

  • Large file transfers

Best suited for: Periodic sensor reads, notifications, device queries (<1ms parse time).


❌ Embedded/Firmware

Not designed for:

  • BLE peripheral devices

  • Embedded systems (ESP32, Arduino, nRF52)

  • Resource-constrained environments

  • Server/peripheral role

Requires Python 3.9+ runtime with standard library.


❌ Persistent Storage

Not included:

  • Connection history

  • Credential storage

  • Pairing database

  • Cross-session state

Platform-level pairing is handled by the OS. Application-level persistence is your responsibility.


❌ GUI/Application Framework

This is a library, not an application. No desktop apps, mobile apps, web interfaces, or dashboards are provided.


❌ BLE Device Simulators

Not included:

  • Mock BLE peripherals

  • Hardware test fixtures

  • Compliance testing tools

For testing, mock at the data level—the translator accepts raw bytes without hardware.


⚠️ Type Safety for Dynamic UUID Parsing

Partially supported:

When parsing characteristics via UUID strings (discovered at runtime), return types are Any because Python’s type system cannot infer the concrete type from a runtime string value.

Solution: Pass characteristic classes directly for full type safety:

from bluetooth_sig import BluetoothSIGTranslator
from bluetooth_sig.gatt.characteristics import BatteryLevelCharacteristic

translator = BluetoothSIGTranslator()

# Type-safe: IDE automatically infers return type as int
level = translator.parse_characteristic(BatteryLevelCharacteristic, data)

# Not type-safe: returns Any (type determined at runtime)
result = translator.parse_characteristic("2A19", data)

See Type-Safe vs Dynamic Parsing for detailed guidance.


❌ Connection Manager Implementations

The library provides ConnectionManagerProtocol (abstract base class) but not production-ready adapters. Example adapters in examples/connection_managers/ demonstrate the pattern for bleak, simplepyble, and bluepy—adapt these for your needs.


Summary

Category

Status

BLE GATT parsing

✅ Supported

Device abstraction

✅ Supported (requires adapter)

Type-safe parsing (class input)

✅ Supported

Type-safe parsing (UUID string)

⚠️ Returns Any

Bluetooth Classic

❌ Not supported

BLE stack/protocols

❌ Not implemented

Hardware abstraction

❌ Not included

Real-time streaming

❌ Not optimized

Embedded devices

❌ Not supported

Persistent storage

❌ Not included

GUI framework

❌ Not included

See Also