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

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

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

Оффлайн Pro

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

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

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10496
  • Репутация: +108/-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

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 7705
  • Репутация: +175/-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) Richy64
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250) Simply p8
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32

Оффлайн Pro

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

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10496
  • Репутация: +108/-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

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 7705
  • Репутация: +175/-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) Richy64
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250) Simply p8
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10496
  • Репутация: +108/-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

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10496
  • Репутация: +108/-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

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 7705
  • Репутация: +175/-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) Richy64
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250) Simply p8
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 7705
  • Репутация: +175/-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) Richy64
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250) Simply p8
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32

Оффлайн Pro

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

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

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 7705
  • Репутация: +175/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #506 : 26 Ноябрь 2018, 07:40:22 »
и зачем оно тогда
В принципе да.
может у них в коде параметры из main.conf один раз забираются
Нет, там из клиента вызываются функции майн, и так далее по цепочке, и из всего этого собирается один бинарник - bluetoothctl.
посмотри в код.
Целую неделю смотрел, до сих пор мозги кипят.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250) Simply p8
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10496
  • Репутация: +108/-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

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

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

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10496
  • Репутация: +108/-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/ а дальше можно найти самостоятельно.