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

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

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

Онлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8174
  • Репутация: +183/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #90 : 10 Июль 2017, 12:17:39 »
НАШЕЛ /sys/kernel/debug/bluetooth/hci0
У меня /sys/kernel/debug/ пустой :(
Обнаружил после компиляции в bluez-5.45/tools несколько неустановившихся бинарников, в том числе bdaddr
Код
# ./bdaddr 
Manufacturer:   Integrated System Solution Corp. (57)
Device address: 00:11:67:BF:03:0C
но работает только при поднятом интерфейсе, так же как и hcitool в bluez4.
Читаю исходники, может наведут на какую-нибудь мысль.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10607
  • Репутация: +109/-2
Re: Bluez-tray
« Ответ #91 : 10 Июль 2017, 13:44:54 »
Если ориентируешься на bluez5,  то придётся осваивать dbus. Примеры я привёл, через них можно уже считывать и устанавлвать параметры

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

Онлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8174
  • Репутация: +183/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #92 : 10 Июль 2017, 16:11:39 »
Если ориентируешься на bluez5,  то придётся осваивать dbus.
Как будто в bluez4 его нет.
Вот простейший "открыватель hci сокета"
Код
#include <stdlib.h>
#include <sys/ioctl.h>
/*Эти добавить из bluez-5.45/lib/ */
#include "bluetooth.h"
#include "hci.h"

static struct hci_dev_info di;

int main(void) {
int ctl;

/* Open HCI socket  */
if ((ctl = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI)) < 0) {
perror("Can't open HCI socket.");
exit(1);
}

if (ioctl(ctl, HCIGETDEVINFO, (void *) &di)) {
perror("Can't get device info");
exit(1);
}

printf("%s\t%x\n", di.name, di.bdaddr);
close(ctl);
return 0;
}
Правда bdaddr выдаёт не полностью, почему-то без первых четырёх цифр. Зато работает независимо от bluetoothd, hciconfig hci0 up и dbus-daemon.
« Последнее редактирование: 10 Июль 2017, 16:43:08 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10607
  • Репутация: +109/-2
Re: Bluez-tray
« Ответ #93 : 10 Июль 2017, 16:37:48 »
Он есть давно, но ранее утилитами можно было контролировать,  сейчас видимо нет. У меня bluetoothctl глючит если hci0 дергать через hcitool hciconfig, закономерность не выявил пока. Лечу перезагрузками.

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

Онлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8174
  • Репутация: +183/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #94 : 10 Июль 2017, 16:45:57 »
хрен знает что.
Это потому что каша в голове.
ты на bluez5 нацелился
Bluez5 у меня работает, Bluez4 - нет.
« Последнее редактирование: 10 Июль 2017, 16:47:49 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10607
  • Репутация: +109/-2
Re: Bluez-tray
« Ответ #95 : 10 Июль 2017, 16:49:10 »
Какая каша, утилиту трея на dbus переведи, пока действий мало. Примеры в инете есть, d-feet покажет параметры доступные.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10607
  • Репутация: +109/-2
Re: Bluez-tray
« Ответ #96 : 11 Июль 2017, 05:00:56 »
Зато работает независимо от bluetoothd, hciconfig hci0 up и dbus-daemon.
а шо толку, без bluetoothd ты все равно ничего нормального не сделаешь, так что чем раньше он будет запущен - тем лучше.

Включение адаптера через dbus
Код
dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0 org.freedesktop.DBus.Properties.Set string:org.bluez.Adapter1 string:Powered variant:boolean:true
--print-reply может ненужен если код завершения анализировать.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Онлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8174
  • Репутация: +183/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #97 : 11 Июль 2017, 09:14:15 »
Цитата из hciconfig.c bluez-5.45 строки 475 - 495
Код
static void cmd_up(int ctl, int hdev, char *opt)
{
/* Start HCI device */
if (ioctl(ctl, HCIDEVUP, hdev) < 0) {
if (errno == EALREADY)
return;
fprintf(stderr, "Can't init device hci%d: %s (%d)\n",
hdev, strerror(errno), errno);
exit(1);
}
}

static void cmd_down(int ctl, int hdev, char *opt)
{
/* Stop HCI device */
if (ioctl(ctl, HCIDEVDOWN, hdev) < 0) {
fprintf(stderr, "Can't down device hci%d: %s (%d)\n",
hdev, strerror(errno), errno);
exit(1);
}
}
Всё через ioctl, никакого dbus. И вообще непонятно, зачем он нужен? Очередное "пятое колесо"? Объясни пожалуйста.
чем раньше он будет запущен - тем лучше.
Раньше, чем через udev только через init.d при старте.
« Последнее редактирование: 11 Июль 2017, 09:21:33 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10607
  • Репутация: +109/-2
Re: Bluez-tray
« Ответ #98 : 11 Июль 2017, 09:29:04 »
Раньше, чем через udev только через init.d при старте.
udev вполне достаточно.

Всё через ioctl, никакого dbus. И вообще непонятно, зачем он нужен?
я не знаю. Народ все еще не разобрался как им жить без rfcomm.
еще есть утилита btmgmt - идет как замена hciconfig.

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

Онлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8174
  • Репутация: +183/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #99 : 11 Июль 2017, 18:19:14 »
утилита btmgmt
Надо посмотреть подробнее, но на первый взгляд вещь хорошая. У тебя она есть? А то могу поделиться.
Предлагаю разделить функционал
Я с самого начала так и задумывал.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10607
  • Репутация: +109/-2
Re: Bluez-tray
« Ответ #100 : 12 Июль 2017, 02:18:40 »
У тебя она есть? А то могу поделиться.
у меня есть.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Онлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8174
  • Репутация: +183/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #101 : 15 Июль 2017, 21:02:52 »
 Саша, посмотри этот бинарник. Это заготовка для infomsg в bluez-tray. У меня даёт такой выхлоп:
Код
# ./hci_info  
Device hci0:
00:11:67:BF:03:0C
UP RUNNING
не зависимо от версии bluez, 4 или 5.
Имеет зависимость libbluetooth.so.3
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64

Онлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8174
  • Репутация: +183/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #102 : 16 Июль 2017, 09:17:47 »
 Встроил infomsg, up и down. Добавил в меню pscan, iscan, piscan, noscan.
« Последнее редактирование: 16 Июль 2017, 20:38:00 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10607
  • Репутация: +109/-2
Re: Bluez-tray
« Ответ #103 : 16 Июль 2017, 11:47:01 »
В понедельник проверю
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Онлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8174
  • Репутация: +183/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #104 : 16 Июль 2017, 13:25:18 »
 По клику запускает bluetoothctl
Код
system("urxvt -e /usr/bin/bluetoothctl");

 Добавил выбор
Код
if ((system("urxvt -e /usr/bin/bluetoothctl &")) == 0) system("/usr/bin/puppybt &");
« Последнее редактирование: 16 Июль 2017, 20:37:20 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64