CCS HID joystick çift yönlü iletişim

Başlatan pathetic, 05 Mart 2012, 18:48:23

pathetic

Selam,
Elimde aşağıdaki gibi bir Hid Descriptor var. Joystick olarak tanıtmayı başardım ama asıl amacım bu joysticke veri göndermek. Normalde yazdığım HID cihazlar ile veri alıp gönderebiliyorum ama joystickte bunu başaramadım.
Proteusta denediğimde joystick olarak tanıyor ama gönderdiğim verileri kabul etmiyor.
Hıd Joysticke çift yönlü iletişim ile ilgili önerilerinizi rica ediyorum.
Amaç : windows tarafından otomatik tanınan joystick cihazıma kendi yazdığım ikinci bir programla Led yak söndür gibi bazı komutlar göndermek

#DEFINE USB_HID_DEVICE  TRUE

#define USB_EP1_TX_ENABLE  USB_ENABLE_INTERRUPT   //turn on EP1 for IN bulk/interrupt transfers
#define USB_EP1_TX_SIZE 20

#define USB_EP1_RX_ENABLE  USB_ENABLE_INTERRUPT   //turn on EP1 for IN bulk/interrupt transfers
#define USB_EP1_RX_SIZE 8


const char USB_CLASS_SPECIFIC_DESC[] = { 
0x05,  0x01,                    //   USAGE_PAGE (Generic Desktop) 
0x09, 0x05,                   //   USAGE (Joystick) 
0xa1, 0x01,                  //   COLLECTION (Application) 
0xa1,  0x01,                    //   COLLECTION (Application) 
0x09,   0x01,                    //   USAGE (Pointer) 
0xa1,  0x00,                    //   COLLECTION (Physical) 
0x05,  0x01,                   //   USAGE_PAGE (Generic Desktop) 
0x09,   0x33,                   //   USAGE (X Rotation) 
0x09,   0x34,                    //   USAGE (Y Rotation) 
0x09,  0x35,                    //   USAGE (Z Rotation) 
0x15,  0x81,                    //   LOGICAL_MINIMUM (-128) 
0x25,   0x7f,                    //   LOGICAL_MAXIMUM (127) 
0x75,  0x08,                  //   REPORT_SIZE (8) 
0x95,   0x03,                   //   REPORT_COUNT (3) 
0x81,  0x02,                   //   INPUT (Data,Var,Abs) 
0x05,   0x09,                   //   USAGE_PAGE (Button) 
0x19,   0x01,                   //   USAGE_MINIMUM (Button 1) 
0x29,   0x20,                    //   USAGE_MAXIMUM (Button 32) 
0x15,   0x00,                    //   LOGICAL_MINIMUM (0) 
0x25,    0x01,                    //   LOGICAL_MAXIMUM (1) 
0x75,  0x01,                    //   REPORT_SIZE (1) 
0x95,   0x20,                    //   REPORT_COUNT (32) 
0x81,   0x02,                    //   INPUT (Data,Var,Abs) 
0x95,   0x08,                   //   REPORT_COUNT (8) 
0x81,    0x03,                    //   INPUT (Data,Var,Abs) 
0xc0,                             //   END_COLLECTION 
0xc0,                             //   END_COLLECTION 
0x05,   0x01,                   //   USAGE_PAGE (Generic Desktop) 
0x09,    0x00,                    //   USAGE (Undefined) 
0x15,   0x00,                    //   LOGICAL_MINIMUM (0) 
0x26,   0xff,   0x00,           //   LOGICAL_MAXIMUM (255) 
0x75,   0x08,                    //   REPORT_SIZE (8) 
0x95,   0x40,                  //   REPORT_COUNT (64) 
0x91,   0x02,                  //   OUTPUT (Data,Var,Abs) 
0xc0                             //   END_COLLECTION 
 };