Цитата(khach @ Dec 11 2013, 20:05)

Проблема в том, что никогда хост не писал, и как его переделывать- пока имею смутное предположение.
Берется демо библиотека Хоста от СТМ. В ее инициализации есть указатель на пользовательский класс _Device_cb.
Необходимо реализовать 4 функции
Цитата
● Init: this function is called at the startup of a class operation for assuring all required
initializations. This includes:
– Parsing interface and endpoint descriptors (please note that the current USB host
library supports only one interface).
– Opening and allocating host channels for non-control endpoints,
– Calling a user callback, in case the device is not supported by the class.
● Denit: this function is called for freeing allocated host channels when re-initializing the
host. It is called when a device is unplugged or in case of unrecovered error.
● Requests: this function implements the class request state machine. It is called during
the HOST_CLASS_REQUEST state. It is used to process initial class requests.
● Machine: implements the class core state machine. It is called during the
HOST_CLASS core state.
В примерах есть реализация этих функций для ХИДа и массСторейджа.
Ну и так же в инициализацию пихается указатель на класс USR_Callbacks, который плюется мессагами типа
Цитата
> USB host Library started.
> Device attached
> High speed detected.
VID:0483h
PID: 3251h
Но с библиотеками от СТМ есть такая проблема, что в них периодически встречаются (или подразумеваются) комментарии в стиле "эта функция могла бы вернуть ошибку, но мы это не реализовали...". Иногда спасает версия посвежее. Как-то две недели пытался понять почему один ЮСБ джойстик работает идеально, а второй подвисает. Оказалось что PIDы DATA0 и DATA1, которые как бы должны чередоваться, этого делать не хотят...