Сайт | Скачать | Видео | Wiki

Автор Тема: Bluez-tray  (Прочитано 111700 раз)

0 Пользователей и 11 Гостей просматривают эту тему.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Bluez-tray
« Ответ #495 : 17 Ноябрь 2018, 12:37:40 »
Нет. Спаривать пытаться ненадо. Только проверить состояние. Пользователь должен решать, надо ли спаривать.

То что у неспареных сервисы определяются, это возможно даже баг в bluez, да и нет толку от этой информации пока устройство не спаренное.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Bluez-tray
« Ответ #496 : 20 Ноябрь 2018, 06:01:07 »
код агента в исходниках https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/agent.c
https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/agent.h

Если научить чтобы брали код не с консоли а с main.conf, то паринг будет автоматический.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #497 : 20 Ноябрь 2018, 08:39:49 »
 Их три
Код
# find . -name agent.?
./mesh/agent.h
./mesh/agent.c
./src/agent.h
./src/agent.c
./client/agent.h
./client/agent.c
и выделить отдельно пока не получается. Работает только агент из bluez-tools-5.37, но тоже криво.
чтобы брали код не с консоли
сегфолтится.
паринг будет автоматический
Ещё вариант - выводить запрос PIN в графическое окно.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Bluez-tray
« Ответ #498 : 20 Ноябрь 2018, 10:11:16 »
Ещё вариант - выводить запрос PIN в графическое окно.
я такое незнаю как сделать. оно же в терминале запрашивает.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Bluez-tray
« Ответ #499 : 20 Ноябрь 2018, 10:57:40 »
./mesh/agent.h
./mesh/agent.c
это точно не то, это для mesh сетей.

./client/agent.h
./client/agent.c
это я не смотрел, но посмотрю
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #500 : 20 Ноябрь 2018, 20:57:24 »
 Некоторые опыты. Используются bluetoothd, bluetoothctl (стандартные от bluez-5.50), bt-agent (от bluez-tools-5.37), bt-scan и bt-browse. Запускаю bt-agent в консоли:
Код
# bt-agent 
Agent registered
Default agent requested

Device: 00-11-67-6A-05-5D (00:11:67:6A:05:5D)
Enter passkey: 0000
unregistering agent...
(здесь полный вывод)
Одновременно во второй консоли:
Код
# bt-scan 
Scanning ...
00:11:67:6A:05:5D "SPARKLE" AV 0
# bt-browse 00:11:67:6A:05:5D
Browsing 00:11:67:6A:05:5D ...
Failed to connect to SDP server on 00:11:67:6A:05:5D: Connection refused
Channel 2 "Headset" 1108
Channel 1 "Handsfree" 111e
# bluetoothctl connect 00:11:67:6A:05:5D
Attempting to connect to 00:11:67:6A:05:5D
[CHG] Device 00:11:67:6A:05:5D Connected: yes
Connection successful
#
После ввода команды "bt-browse" в первой консоли появляется приглашение "Enter passkey:" и после ввода кода во второй консоли появляется список сервисов. контакт устанавливается легко и просто через bluetoothctl. Проверил, звук идёт.
Вот бы вместо первой консоли сделать всплывающее окно ввода.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Bluez-tray
« Ответ #501 : 21 Ноябрь 2018, 01:54:09 »
./client/agent.h
./client/agent.c
ДА вот в них идет запрос пинкода с терминала, только вот непонятно что разработчики подразумевают под pincode а что под passkey.

Вот в /client/agent.c и надо сделать чтобы при параметре bluetoothctl --capabilites=NODISPLAY.... он брал код из main.conf (в main.conf параметр раньше был defaultpin или как его)
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Bluez-tray
« Ответ #502 : 21 Ноябрь 2018, 01:58:52 »
После ввода команды "bt-browse" в первой консоли появляется приглашение "Enter passkey:"
bt-agent вобще-то, нету там bt-browse он во второй. Запятые решают.


Вот бы вместо первой консоли сделать всплывающее окно ввода.
это тупик, агент все равно надо регистрировать, а этот запрос пинкода возможно инициирует само устройство и если попадется такое что оно не захочет при bt-browse делать паринг а просто ошибку выдаст, будет плохо.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #503 : 21 Ноябрь 2018, 08:15:14 »
/client/agent.c и надо сделать
Пробовал, сегфолтится :(
это тупик, агент все равно надо регистрировать
Агент привязан к bluetoothd как дополнительная прилада, вот и запускать их вместе.
а этот запрос пинкода возможно инициирует само устройство
Похоже что так
оно не захочет при bt-browse делать паринг а просто ошибку выдаст, будет плохо.
Если запрос поступает с той стороны, то ошибка будет только при неправильном ответе. Мой телефон, например, выдаёт запрос на pin при connect, и никакой ошибки.
только вот непонятно что разработчики подразумевают под pincode а что под passkey.
Это да :(
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #504 : 25 Ноябрь 2018, 19:14:18 »
/client/agent.c
Этот с моей квалификацией не осилить, там связано с /client/main.c и ещё много чем. Пожалуй надо взять за основу bt-agent, который из консоли нормально работает и добавить ему чтение из файла (есть, но не работает, похоже фильтр кривой) и графическое окно ввода.
« Последнее редактирование: 25 Ноябрь 2018, 19:18:57 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Bluez-tray
« Ответ #505 : 26 Ноябрь 2018, 02:04:10 »
и графическое окно ввода.
и зачем оно тогда, если из файла брать данные?

Этот с моей квалификацией не осилить, там связано с /client/main.c и ещё много чем.
ну ясно дело, все пересекается. может у них в коде параметры из main.conf один раз забираются при старте и потом используются, посмотри в код.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #506 : 26 Ноябрь 2018, 07:40:22 »
и зачем оно тогда
В принципе да.
может у них в коде параметры из main.conf один раз забираются
Нет, там из клиента вызываются функции майн, и так далее по цепочке, и из всего этого собирается один бинарник - bluetoothctl.
посмотри в код.
Целую неделю смотрел, до сих пор мозги кипят.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Bluez-tray
« Ответ #507 : 26 Ноябрь 2018, 08:23:52 »
Нет, там из клиента вызываются функции майн, и так далее по цепочке, и из всего этого собирается один бинарник - bluetoothctl.
ну это понятно, я имею ввиду парсинг main.conf найти, в него вписать чтобы pincode бралось, потом уже в /client/agent.c обрабатывать параметр. В качестве образца взять обработку параметра Name или DiscoverableTimeout из main.conf
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Bluez-tray
« Ответ #508 : 27 Ноябрь 2018, 04:37:34 »
я имею ввиду парсинг main.conf найти
почитал код, да main.conf обрабатывается в main.c, потом из него все растаскивается по остальным частям.

Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Bluez-tray
« Ответ #509 : 27 Ноябрь 2018, 09:37:04 »
патч для main.c , добавляется парсинг параметра DefaultPin, параметр становится доступен в переменной main_opts.defaultpin

У меня сомнения что 0000 в переменную присвоятся именно в этом виде.

теперь этот main_opts.defaultpin надо обработать в /src/agent.c как-то для capabilites=NoinputNooutput
« Последнее редактирование: 04 Декабрь 2018, 08:38:10 от Pro »
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.