| from typing import List |
| from dataclasses import dataclass |
| from chip.ble.library_handle import _GetBleLibraryHandle |
| |
| |
| @dataclass |
| class AdapterInfo: |
| index: int |
| address: str |
| name: str |
| alias: str |
| powered_on: bool |
| |
| |
| def GetAdapters() -> List[AdapterInfo]: |
| """Get a list of BLE adapters available on the system. """ |
| handle = _GetBleLibraryHandle() |
| |
| result = [] |
| nativeList = handle.pychip_ble_adapter_list_new() |
| if nativeList == 0: |
| raise Exception('Failed to get BLE adapter list') |
| |
| try: |
| while handle.pychip_ble_adapter_list_next(nativeList): |
| result.append( |
| AdapterInfo( |
| index=handle.pychip_ble_adapter_list_get_index(nativeList), |
| address=handle.pychip_ble_adapter_list_get_address( |
| nativeList).decode('utf8'), |
| name=handle.pychip_ble_adapter_list_get_name(nativeList).decode( |
| 'utf8'), |
| alias=handle.pychip_ble_adapter_list_get_alias(nativeList).decode( |
| 'utf8'), |
| powered_on=handle.pychip_ble_adapter_list_is_powered( |
| nativeList), |
| )) |
| |
| finally: |
| handle.pychip_ble_adapter_list_delete(nativeList) |
| |
| return result |