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

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

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

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8634
  • Репутация: +187/-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, 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
« Ответ #91 : 10 Июль 2017, 13:44:54 »
Если ориентируешься на bluez5,  то придётся осваивать dbus. Примеры я привёл, через них можно уже считывать и устанавлвать параметры

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

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8634
  • Репутация: +187/-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, 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
« Ответ #93 : 10 Июль 2017, 16:37:48 »
Он есть давно, но ранее утилитами можно было контролировать,  сейчас видимо нет. У меня bluetoothctl глючит если hci0 дергать через hcitool hciconfig, закономерность не выявил пока. Лечу перезагрузками.

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

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8634
  • Репутация: +187/-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, 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
« Ответ #95 : 10 Июль 2017, 16:49:10 »
Какая каша, утилиту трея на dbus переведи, пока действий мало. Примеры в инете есть, d-feet покажет параметры доступные.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Pro

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

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

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8634
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Bluez-tray
« Ответ #99 : 11 Июль 2017, 18:19:14 »
утилита btmgmt
Надо посмотреть подробнее, но на первый взгляд вещь хорошая. У тебя она есть? А то могу поделиться.
Предлагаю разделить функционал
Я с самого начала так и задумывал.
Моноблок 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
« Ответ #100 : 12 Июль 2017, 02:18:40 »
У тебя она есть? А то могу поделиться.
у меня есть.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8634
  • Репутация: +187/-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, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8634
  • Репутация: +187/-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, 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
« Ответ #103 : 16 Июль 2017, 11:47:01 »
В понедельник проверю
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8634
  • Репутация: +187/-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, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64