изменить Bluetooth с ведущего на ведомое устройство с помощью библиотеки bluez

Описание.
У меня есть небольшое домашнее устройство с функцией Bluetooth. В настоящий момент к этому ящику подключаются другие устройства.

Требование:
Теперь мы должны сделать его подчиненным, чтобы он мог подключаться к другим устройствам. Интересно, как это сделать? Мне не нужен исходный код или что-то еще, только ваши взгляды.

Дополнительная информация:
Приложение использует библиотеки Bluez для отправки команд прошивке / оборудованию, и мы широко используем HCItool.

Операционная система:
Fedora.

Мне тоже интересно, нужно ли менять чипсет? Судя по Google, не похоже, что нам нужно это менять.

Любая помощь пойдет нам на пользу.
Спасибо


person samprat    schedule 08.07.2014    source источник


Ответы (1)


Чтобы добиться желаемого из командной строки, используйте #hcitool. Однако сначала вы должны быть подключены. Попробуйте эту последовательность:

hcitool cc AA:BB:CC:DD:EE:FF            #Connect to the device
hcitool con                             #To make sure you are in a connection
hcitool sr AA:BB:CC:DD:EE:FF <role>     #switch master/slave role

Если вывод "hcitool con" указывает на то, что вы не находитесь в соединении, попробуйте следующую последовательность:

hciconfig hci0 sspmode 1
hciconfig hci0 piscan 
sdptool add SP
rfcomm connect /dev/rfcomm0 AA:BB:CC:DD:EE:FF 1 &
hcitool con
hcitool sr AA:BB:CC:DD:EE:FF <role>

Приведенный выше код предназначен специально для последовательного профиля, но он работал у меня несколько раз, когда «hcitool cc» не удался.

Если вы хотите увидеть исходный код для этого, откройте исходный файл tools / hcitool.c в каталоге bluez и перейдите к функции:

static void cmd_sr(int dev_id, int argc, char **argv)

Это функция, которая запускает последовательность переключения между ролью ведущего и ведомого. Следуя этой функции, вы можете увидеть, что именно происходит через стек bluez.

Надеюсь, это поможет.

person Youssif Saeed    schedule 09.07.2014
comment
привет Йосуф, я дал команду что-то вроде hcitool sr 74: F0: 6D: E1: 35: 02 slave, где bd-addr я получил от hcitool dev, и каждый раз, когда я получаю неподключенный результат. Почему это так? - person samprat; 09.07.2014
comment
Спасибо большое за быструю помощь - person samprat; 09.07.2014
comment
Похоже, вы должны быть подключены, чтобы переключаться между ролями на устройстве, к которому вы подключены. Я отредактировал свой вопрос, чтобы принять это во внимание. Обратите внимание, что MAC-адрес AA: BB: CC: DD: EE: FF - это MAC-адрес подключенного устройства, а не локального устройства. Другими словами, MAC-адрес должен быть результатом команды hcitool scan, а НЕ команды hcitool con. - person Youssif Saeed; 09.07.2014
comment
Йосуиф, так в принципе, как только вы подключитесь к удаленному устройству, вы можете ТОГДА сделать наше локальное устройство ведомым или главным? - person samprat; 09.07.2014
comment
Мне нужна помощь, связанная с SCO Loopback? Я много искал, но не смог найти ответ на свой запрос. Хотите знать, подниму ли я новый вопрос, если вы об этом знаете? - person samprat; 09.07.2014
comment
Да, если вы подключены, вы сможете переключаться между ролями. Я не работал с SCO Loopback, поэтому не думаю, что могу помочь, но все равно подниму вопрос. - person Youssif Saeed; 09.07.2014
comment
Спасибо друг. Ваша помощь действительно очень полезна для меня. - person samprat; 09.07.2014