Можно ли изменить интервал рекламы по умолчанию в BlueZ?

Вероятно, потому, что это было удобно в то время, и это был самый простой способ сделать его доступным для пользователя, используя уже существующие структуры ядра.

Малоизвестно, что можно записывать в /dev/input/eventXфайлы и таким образом генерировать события входного -уровня.

Таким же образом можно записатьEV_SNDсобытия в /dev/input/eventXфайл, представляющий спикера (или на одну из симлинков, обычно /dev/input/by-path/platform-pcspkr-event-spkr), и таким образом использовать спикера для генерировать звук. Это еще менее известно.:-)

Вот Perl oneliner для 32-битных систем, который генерирует ноту с заданной высотой тона

perl -e 'print pack("qssl", 0, 0x12, 2, 2000)' > /dev/input/by-path/platform-pcspkr-event-spkr

и вот еще один онлайнер, чтобы его отключить

perl -e 'print pack("qssl", 0, 0x12, 2, 0)' > /dev/input/by-path/platform-pcspkr-event-spkr

Для 64-битных систем используйте

пакет ("qqssl", 0, 0, 0x12, 2, ШАГ)

Фактический макет зависит от того, как скомпилирован заголовочный файл C, определяющий структуру.

Кстати, события подключения для аудиоустройств HDA также отображаются на входном слое в виде файлов /dev/input/eventX. Хотя логичнее классифицировать их как фактические входные события.

2
21.08.2019, 11:08
1 ответ

вывести желаемое значение в следующие два файла:

/sys/kernel/debug/bluetooth/hci0/adv_min_interval
/sys/kernel/debug/bluetooth/hci0/adv_max_interval

где hci0 — ваше устройство bt/ble. Доп. интервал рассчитывается как значение *0,625 мс

Для того, чтобы это работало, вам нужно иметь CONFIG _BT _DEBUGFS=y в конфигурации вашего ядра.

Это работает на bluez -5.50, не уверен насчет предыдущих версий.

1
27.01.2020, 22:16

Теги

Похожие вопросы