//****************************************************************************** // XBMC USB Controller firmware. // Copyright © 2011 Dilshan R Jayakody. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . //****************************************************************************** const unsigned int USB_VENDOR_ID = 0x8420; const unsigned int USB_PRODUCT_ID = 0x0001; const char USB_SELF_POWER = 0xC0; const char USB_MAX_POWER = 50; const char HID_INPUT_REPORT_BYTES = 64; const char HID_OUTPUT_REPORT_BYTES = 64; const char USB_TRANSFER_TYPE = 0x03; const char EP_IN_INTERVAL = 1; const char EP_OUT_INTERVAL = 1; const char USB_INTERRUPT = 1; const char USB_HID_EP = 1; const char USB_HID_RPT_SIZE = 33; const struct { char bLength; char bDescriptorType; unsigned int bcdUSB; char bDeviceClass; char bDeviceSubClass; char bDeviceProtocol; char bMaxPacketSize0; unsigned int idVendor; unsigned int idProduct; unsigned int bcdDevice; char iManufacturer; char iProduct; char iSerialNumber; char bNumConfigurations; } device_dsc = { 0x12, 0x01, 0x0200, 0x00, 0x00, 0x00, 8, USB_VENDOR_ID, USB_PRODUCT_ID, 0x0001, 0x01, 0x02, 0x00, 0x01 }; const char configDescriptor1[]= { 0x09, 0x02, 0x29,0x00, 1, 1, 0, USB_SELF_POWER, USB_MAX_POWER, 0x09, 0x04, 0, 0, 2, 0x03, 0, 0, 0, 0x09, 0x21, 0x01,0x01, 0x00, 1, 0x22, USB_HID_RPT_SIZE,0x00, 0x07, 0x05, USB_HID_EP | 0x80, USB_TRANSFER_TYPE, 0x40,0x00, EP_IN_INTERVAL, 0x07, 0x05, USB_HID_EP, USB_TRANSFER_TYPE, 0x40,0x00, EP_OUT_INTERVAL }; const struct { char report[USB_HID_RPT_SIZE]; }hid_rpt_desc = { {0x06, 0x00, 0xFF, 0x09, 0x01, 0xA1, 0x01, 0x19, 0x01, 0x29, 0x40, 0x15, 0x00, 0x26, 0xFF, 0x00, 0x75, 0x08, 0x95, HID_INPUT_REPORT_BYTES, 0x81, 0x02, 0x19, 0x01, 0x29, 0x40, 0x75, 0x08, 0x95, HID_OUTPUT_REPORT_BYTES, 0x91, 0x02, 0xC0} }; const struct { char bLength; char bDscType; unsigned int string[1]; } strd1 = { 4, 0x03, {0x0409} }; const struct{ char bLength; char bDscType; unsigned int string[18]; }strd2={ 38, 0x03, {'D','i','l','s','h','a','n',' ','R',' ','J','a','y','a','k','o','d','y'} }; const struct{ char bLength; char bDscType; unsigned int string[30]; }strd3={ 62, 0x03, {'M','e','d','i','a',' ','C','e','n','t','e','r',' ','C','o','n','t','r','o','l',' ','I','n','t','e','r','f','a','c','e'} }; const char* USB_config_dsc_ptr[1]; const char* USB_string_dsc_ptr[3]; void USB_Init_Desc(){ USB_config_dsc_ptr[0] = &configDescriptor1; USB_string_dsc_ptr[0] = (const char*)&strd1; USB_string_dsc_ptr[1] = (const char*)&strd2; USB_string_dsc_ptr[2] = (const char*)&strd3; }