LazyCamel (06.04.2006 15:59, просмотров: 1) ответил Котик на Тут уж не до выражений... неделю занимался любовью с юсб хид протоколом и тут выплывает, что ендпоинтам при енумирации задаются атрибуты bulk, при том что мои данные енумерации (параметры ендпойнтов) шли в разрез с тем что написано в означенной функции
Ответ: Прав был Лозинский - лишние знания дуракам только помеха... Детали внутри. Какого извините черта две недели лазить в коде в котором не бум-бум вместо того чтобы спокойно сесть и прочитать окументацию про УСБ.
И не нужно станет тогда делать выводы космической широты и космической же глупости.
Цитирую из hid_enumerate.c
/* Endpoint 1 descriptor */
0x07, // bLength
0x05, // bDescriptorType
0x80 + EP_NUMBER, // bEndpointAddress
0x03, // bmAttributes INT
0x04, // wMaxPacketSize: 3 bytes (button, x, y)
0x00,
0x0A // bInterval
Ткните меня носом где здесь написано что ендпоинт имеет тип "Балк",а ?
Я третий день пытаюсь добиться от вас чем (каким методом) со стороны РС вы пытаетесь передать данные в ХИД-устройства. Нет ответа.
Было предложено таки посмотреть на пример работы джойстика из состава FreeRTOS, потому что энумерация мыши идет в два прохода вместо одного, как для всех ХИД устройств кроме мышей и клавиатур - нет ответа.
Есть только громкие и глупые крики от человека который даже не подумал хоть чуть чуть сесть и разобраться что же он делает, а не мастурбировать в коде.
Причем так-как это конференция старейшая по АРМам, то эти недалекие выкрики с мест люди сами не начавшие осваивать ЮСБ вообще и ХИД в частности понесут по просторам Интернета.
Вы хендл ХИД устройства на РС получили ?
Тогда найдите в конце концов в описании WINAPI функции HidD_SetFeature/ HidD_GetFeature и используйте их.
В прошивке в функцию AT91F_HID_Enumerate надо добавить обработку class-specific request"ов HID_GET_Report, HID_SET_Report, а также в место стандартного мышиного HID дескриптора сделайте что-то типа этого:
const short mouseDescriptor[] = {
0x06, 0x00, 0xff, // USAGE_PAGE (Generic Desktop)
0x09, 0x01, // USAGE (Vendor Usage 1)
0xa1, 0x01, // COLLECTION (Application)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x03, // REPORT_COUNT (3)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
0xc0 // END_COLLECTION
}
и гоняйте свои три байта в любых направлениях. Заодно конечную точку 1 можете вообще выкинуть из обработки.
ТОЛЬКО ОБЯЗАТЕЛЬНО прочитайте сначала хотя бы "USB in a Nutshell", чтобы не смотреть на код как баран на новые ворота.