| /* |
| * Copyright (C) 2008 The Android Open Source Project |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * * Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in |
| * the documentation and/or other materials provided with the |
| * distribution. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
| * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
| * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
| * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
| * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS |
| * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
| * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| * SUCH DAMAGE. |
| */ |
| |
| static unsigned short manufacturer_string[] = { |
| (TYPE_STRING << 8) | (12 * 2), |
| 'G', 'o', 'o', 'g', 'l', 'e', ',', ' ', 'I', 'n', 'c', |
| }; |
| |
| static unsigned short product_string[] = { |
| (TYPE_STRING << 8) | (12 * 2), |
| 'A', 'n', 'd', 'r', 'o', 'i', 'd', ' ', '1', '.', '0', |
| }; |
| |
| static unsigned short default_string[] = { |
| (TYPE_STRING << 8) | (8 * 2), |
| 'd', 'e', 'f', 'a', 'u', 'l', 't', |
| }; |
| |
| static unsigned short language_table[] = { |
| (TYPE_STRING << 8) | 4, |
| 0x0409, // LANGID for US English |
| }; |
| |
| static unsigned char device_desc[] = { |
| 18, // length |
| TYPE_DEVICE, // type |
| 0x10, 0x02, // usb spec rev 1.00 |
| 0x00, // class |
| 0x00, // subclass |
| 0x00, // protocol |
| 0x40, // max packet size |
| 0xD1, 0x18, // vendor id |
| 0x0D, 0xD0, // product id |
| 0x00, 0x01, // version 1.0 |
| 0x01, // manufacturer str idx |
| 0x02, // product str idx |
| 0x00, // serial number index |
| 0x01, // number of configs, |
| }; |
| |
| static unsigned char config_desc[] = { |
| 0x09, // length |
| TYPE_CONFIGURATION, |
| 0x20, 0x00, // total length |
| 0x01, // # interfaces |
| 0x01, // config value |
| 0x00, // config string |
| 0x80, // attributes |
| 0x80, // XXX max power (250ma) |
| |
| 0x09, // length |
| TYPE_INTERFACE, |
| 0x00, // interface number |
| 0x00, // alt number |
| 0x02, // # endpoints |
| 0xFF, |
| 0x42, |
| 0x03, |
| 0x00, // interface string |
| |
| 0x07, // length |
| TYPE_ENDPOINT, |
| 0x81, // in, #1 |
| 0x02, // bulk |
| 0x00, 0x02, // max packet 512 |
| 0x00, // interval |
| |
| 0x07, // length |
| TYPE_ENDPOINT, |
| 0x01, // out, #1 |
| 0x02, // bulk |
| 0x00, 0x02, // max packet 512 |
| 0x01, // interval |
| }; |
| |
| static unsigned char config_desc_fs[] = { |
| 0x09, // length |
| TYPE_CONFIGURATION, |
| 0x20, 0x00, // total length |
| 0x01, // # interfaces |
| 0x01, // config value |
| 0x00, // config string |
| 0x80, // attributes |
| 0x80, // XXX max power (250ma) |
| |
| 0x09, // length |
| TYPE_INTERFACE, |
| 0x00, // interface number |
| 0x00, // alt number |
| 0x02, // # endpoints |
| 0xFF, |
| 0x42, |
| 0x03, |
| 0x00, // interface string |
| |
| 0x07, // length |
| TYPE_ENDPOINT, |
| 0x81, // in, #1 |
| 0x02, // bulk |
| 0x40, 0x00, // max packet 64 |
| 0x00, // interval |
| |
| 0x07, // length |
| TYPE_ENDPOINT, |
| 0x01, // out, #1 |
| 0x02, // bulk |
| 0x40, 0x00, // max packet 64 |
| 0x00, // interval |
| }; |
| |
| typedef struct |
| { |
| void *data; |
| unsigned short length; |
| unsigned short id; |
| } dtable; |
| |
| #define ID(type,num) ((type << 8) | num) |
| |
| static dtable descr_hs[] = { |
| { device_desc, sizeof(device_desc), ID(TYPE_DEVICE, 0) }, |
| { config_desc, sizeof(config_desc), ID(TYPE_CONFIGURATION, 0) }, |
| { manufacturer_string, sizeof(manufacturer_string), ID(TYPE_STRING, 1) }, |
| { product_string, sizeof(product_string), ID(TYPE_STRING, 2) }, |
| { default_string, sizeof(default_string), ID(TYPE_STRING, 4) }, |
| { language_table, sizeof(language_table), ID(TYPE_STRING, 0) }, |
| { 0, 0, 0 }, |
| }; |
| |
| static dtable descr_fs[] = { |
| { device_desc, sizeof(device_desc), ID(TYPE_DEVICE, 0) }, |
| { config_desc_fs, sizeof(config_desc), ID(TYPE_CONFIGURATION, 0) }, |
| { manufacturer_string, sizeof(manufacturer_string), ID(TYPE_STRING, 1) }, |
| { product_string, sizeof(product_string), ID(TYPE_STRING, 2) }, |
| { default_string, sizeof(default_string), ID(TYPE_STRING, 4) }, |
| { language_table, sizeof(language_table), ID(TYPE_STRING, 0) }, |
| { 0, 0, 0 }, |
| }; |