Есть некоторый девайс, который умеет цепляться по Bluetooth с использованием профиля последовательного порта. Задача - написать серверное приложение под Линукс, которое бы обрабатывала запросы от этого девайса.
Приблизительная схема работы следующая:
Девайс с заранее неизвестным адресом цепляется к компу и отправляет некоторые данные. Софтина должна эти данные принять и отправить девайсу ответ, после чего связь разрывается.
Стоит bluez 4.28, девайс видит комп, при подключении девайса hcidump выдает информацию, что он реально подключился.
Пробовал делать на основе http://people.csail.mit.edu/albert/bluez-intro/x502.html сокет открывается, все нормально, но все останавливается на accept и подключение девайса просто не видится, что непонятно.
Второй вариант программы хотел сделать на основе использования /dev/rfcommX, но столкнулся с проблемой, что в rfcomm.conf надо прописывать адреса устройств, с которыми будет связь, что мне не подходит по той причине что адрес устройства заранее неизвестен.
Для эксперимента узнал адрес девайса и указал его в файле, но появился вопрос, как узнать, что девайс подключился? Если девайс отключен, то попытка открыть /dev/rfcomm0 заканчивается ошибкой "Host Down". Если же правильно подобрать момент, то через /dev/rfcomm0 связь нормально идет.
Собственно, что вы думаете по этому поводу?
Почему программа на сокетах не видит подключения?
Или как можно заставить rfcomm ассоциировать девайсы с ЛЮБЫМИ адресами с одним и тем же /dev/rfcomm0? И как при этом увидеть факт подключения устройства?
Заранее благодарю за помощь.
Bluetooth SPP
Модератор: Модераторы разделов