Jump to content

    

CSR BC04-EXT, USB, bulk

Приветствую всех.

 

Возникла задача заставить BC04 прикинуться на USB не чем нибудь, а PL2303 от Prolific (USB to COM)

Прикинуться удалось. Изваяние опознано системой (XP) и устройством для которого это все делается, драйвера установлены. Для передачи данных открыто два ендпоинта в bulk режиме.

Данные с bluetooth в usb едут без проблем.

 

А вот с приемом с usb конкретная грабля - каждая порция данных падает с дополнительным байтом в начале. Это циклический счетчик, я так понимаю, связанный именно с гарантированной доставкой в bulk режиме и служит для отслеживания повторной передачи порции данных. Но какого он падает мне в данные, разве это не дело драйверов csr отрезать его?...ну этот вопрос скорее риторический.

 

Да все бы ничего пока передача идет малыми порция. Тогда сообщение MESSAGE_MORE_DATA содержит только одну порцию данных и счетчик можно откусить. Но когда плотность потока возрастает, данные уже приходят пачками например 13 байт где на самом деле 1+1 и 1+10 и различить где счетчик уже нельзя. Пробовал входящий стрим мапить через SourceMapHeader, говорит нет хидера, размер ноль.

 

Попробовал сцепить потоки через TransformSlice с отрезанием первого байта. Данные поехали но криво. Что именно криво пока не выяснил.

Результат выглядит странно - если например в терминалке (использую TeraTerm) включить передачу большого файла без подтверждения с другой стороны, то передача идет рывками с очень большой паузой, что наводит на мысль о проблеме именно с usb.

 

Как вариант осталось отправить поток на kalimba и там попробовать что-то сделать, но это уж как-то слишком, так что будет на закусь :)

Остался без закуси, калимбы то в BC04 нету... :(

 

Ну и собственно вопрос - кто имел дело с usb в BC04, отзовитесь, что я делаю не так?

Edited by Menchinskiy

Share this post


Link to post
Share on other sites

Дабы логически завершить поднятую тему...

 

Я не знаю, сколько народу сошло с ума пытаясь решить эту проблему, ибо тянется она, судя по форумах, лет пять минимум. Упущу сколько было просмотрено форумов, но результат печален - на чипах BC04 эту фишку выключить нельзя. Никак нельзя. Хоть и написано в доке на новый фирмварь что можно, но на самом деле - нельзя. Это ответ инженера CSR. А вот на BC-05 и последующих - вроде без проблем.

Благо, проект был не денежный а больше для самообразования и делался в свободное время...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this