Как получить доступ к sdp из api dbus bluez5?

#python #linux #bluetooth #dbus #bluez

Вопрос:

Я пытаюсь перенести pybluez для работы с bluez5, но я не знаю, как получить данные об услуге.

Я могу получить идентификаторы UUID, объявленные устройством, получив свойство UUIDs из org.bluez.Интерфейс dbus Device1, но я не могу получить дополнительную информацию об этих службах (например, имя). С моей точки зрения, эта информация должна быть доступна в свойстве serviceData, но это поле действительно кажется пустым.

В целях тестирования я пробую все это из приложения d-feet.

Редактировать: Я думаю, что то, что я пытаюсь сделать, — это получить доступ к sdp из api-интерфейса bluez dbus

Редактировать:

Например, я создаю на своем ноутбуке сервис https://github.com/pybluez/pybluez/blob/master/examples/simple/rfcomm-server.py (используя параметры совместимости в bluez) и установив имя на Apapatata

Затем с другого компьютера (который сопряжен и подключен) Я запускаю «sudo sdptool записывает MAC моего ноутбука», и в результате я получаю:

 Service Name: Apapatata
Service RecHandle: 0x1000e
Service Class ID List:
  UUID 128: 94f39d29-7d6d-437d-973b-fba39e49d4ee
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 1
Profile Descriptor List:
  "Serial Port" (0x1101)
    Version: 0x0100
 

Как вы можете видеть, Apapatata нет ни в одном списке известных сервисов, и я хотел знать, как получить это имя с помощью api dbus (и, если возможно, других свойств).

Редактировать:

Хорошо, я думаю, что мне удалось восстановить служебную запись, запросив sdp моего ноутбука, который включен только с параметрами совместимости bluez.

И результат от

 import pydbus;
from pprint import pprint; pprint([iface for dpath, iface in pydbus.SystemBus().get('org.bluez', '/').GetManagedObjects().items() if iface.get('org.bluez.Device1', {}).get('Address') == 'xx:xx:xx:xx:xx:xx'])
 

является:

 [{'org.bluez.Device1': {'Adapter': '/org/bluez/hci0',
                        'Address': '84:4B:F5:40:03:00',
                        'AddressType': 'public',
                        'Alias': 'G2',
                        'Blocked': False,
                        'Class': 1835276,
                        'Connected': True,
                        'Icon': 'computer',
                        'LegacyPairing': False,
                        'Modalias': 'usb:v1D6Bp0246d0535',
                        'Name': 'G2',
                        'Paired': True,
                        'RSSI': -55,
                        'ServicesResolved': False,
                        'Trusted': True,
                        'TxPower': 4,
                        'UUIDs': ['00001104-0000-1000-8000-00805f9b34fb',
                                  '00001105-0000-1000-8000-00805f9b34fb',
                                  '00001106-0000-1000-8000-00805f9b34fb',
                                  '00001108-0000-1000-8000-00805f9b34fb',
                                  '0000110a-0000-1000-8000-00805f9b34fb',
                                  '0000110b-0000-1000-8000-00805f9b34fb',
                                  '0000110c-0000-1000-8000-00805f9b34fb',
                                  '0000110d-0000-1000-8000-00805f9b34fb',
                                  '0000110e-0000-1000-8000-00805f9b34fb',
                                  '00001112-0000-1000-8000-00805f9b34fb',
                                  '0000112f-0000-1000-8000-00805f9b34fb',
                                  '00001132-0000-1000-8000-00805f9b34fb',
                                  '00001133-0000-1000-8000-00805f9b34fb',
                                  '00001200-0000-1000-8000-00805f9b34fb',
                                  '00005005-0000-1000-8000-0002ee000001',
                                  '94f39d29-7d6d-437d-973b-fba39e49d4ee']},
  'org.bluez.MediaControl1': {'Connected': True,
                              'Player': '/org/bluez/hci0/dev_84_4B_F5_40_03_00/player0'},
  'org.freedesktop.DBus.Introspectable': {},
  'org.freedesktop.DBus.Properties': {}}]


 

Я совершенно уверен, что то, что я хочу сделать, невозможно с bluez5, и я совершенно уверен, что все, что связано с услугами, должно быть реализовано с использованием интерфейса org.bluez.Профиль 1