亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usb.c

?? Texas Instruments的TUSB3410芯片接鍵盤輸入的固件程序源碼和驅動程序源碼。
?? C
?? 第 1 頁 / 共 4 頁
字號:
// (c)2002 by Texas Instruments Incorporated, All Rights Reserved.
/*----------------------------------------------------------------------------+
|                                                                             |
|                              Texas Instruments                              |
|                                                                             |
|                                     Usb                                     |
|                                                                             | 
+-----------------------------------------------------------------------------+
|  Source: usb.c, v00.01 2002/04/24 11:17                                     |
|  Author: Horng-Ming Lobo Tai lobotai@ti.com                                 |
|                                                                             |
|  For more information, please contact                                       |
|                                                                             |
|  Lobo Tai                                                                   |
|  Texas Instruments                                                          |
|  12500 TI Blvd, MS 8761                                                     |
|  Dallas, TX 75243                                                           |
|  USA                                                                        |
|                                                                             |
|  Tel 214-480-3145                                                           |
|  Fax 214-480-3443                                                           |
|                                                                             |
|  Release Notes:                                                             |
|  Logs:                                                                      |
|                                                                             |
|  WHO       WHEN         WHAT                                                |
|  ---       ----------   --------------------------------------------------  |
|  HMT       08/02/2000   born                                                |
|  HMT       02/14/2001   add i2c support, modified Set Endpoint and Get      |
|                         Endpoint routine. if endpoint is not supported,     |
|                         bootcode does not response (charpter 8)             |
|  HMT       03/02/2001   Optimized usbDecodeAndProcessUsbRequest() routine   |
|  HMT       03/07/2001   removed setup overwirte inteerupt                   |
|  HMT       09/28/2001   NAK both input and output endpoint 0 when setup     |
|                         packet is received.                                 |
|                                                                             |
+----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------+
| Include files                                                               |
+----------------------------------------------------------------------------*/
#ifdef KEIL
#include <reg51.h>      // for KEIL compiler 8051 sfr definition
#else
#include <io51.h>       // for IAR compiler 8051 sfr definition
#endif

#include "types.h"      // Basic Type declarations
#include "usb.h"        // USB-specific Data Structures
#include "i2c.h"
#include "tusb3410.h"
#include "delay.h"
#include "header.h"
#include "watchdog.h"
#include "VenReq.h"
#include "rs232dbg.h"
#include "sample.h"

/*----------------------------------------------------------------------------+
| External Function Prototype                                                 |
+----------------------------------------------------------------------------*/
VOID usbVendorRequest(VOID);

/*----------------------------------------------------------------------------+
| External Variables                                                          |
+----------------------------------------------------------------------------*/
extern idata WORD wCurrentUploadPointer;      // in header.c
extern idata BYTE bi2cDeviceAddress;          // in header.c
extern idata BYTE bCurrentDataType;           // in header.c

#include "descriptors.c" // must use include to prevent warning or error

/*
extern BYTE code abromDeviceDescriptor[SIZEOF_DEVICE_DESCRIPTOR];
extern BYTE code abromConfigurationDescriptorGroup[];

#ifdef RAW_STRING_DESCRIPTOR       
extern BYTE code *abromStringDescriptor;
#endif

//extern char code *mfgDescription;
//extern char code *prodDescription;
//extern char code *serialNumber;

//char code mfgDescription[]="Texas Instruments Incorporated";
//char code prodDescription[]="TI-GRAPH LINK USB";
//char code serialNumber[]="";
*/

/*----------------------------------------------------------------------------+
| Internal Type Definition & Macro                                            |
+----------------------------------------------------------------------------*/
typedef struct _tDEVICE_REQUEST_COMPARE
{
    BYTE    bmRequestType;              // See bit definitions below
    BYTE    bRequest;                   // See value definitions below
    BYTE    bValueL;                    // Meaning varies with request type
    BYTE    bValueH;                    // Meaning varies with request type
    BYTE    bIndexL;                    // Meaning varies with request type
    BYTE    bIndexH;                    // Meaning varies with request type
    BYTE    bLengthL;                   // Number of bytes of data to transfer (LSByte)
    BYTE    bLengthH;                   // Number of bytes of data to transfer (MSByte)
    BYTE    bCompareMask;               // MSB is bRequest, if set 1, bRequest should be matched
    VOID    (*pUsbFunction)(VOID);      // function pointer
} tDEVICE_REQUEST_COMPARE, *ptDEVICE_REQUEST_COMPARE;

//----------------------------------------------------------------------------
typedef enum
{
    STATUS_ACTION_NOTHING,
    STATUS_ACTION_DATA_IN,
    STATUS_ACTION_DATA_OUT
} tSTATUS_ACTION_LIST;

/*----------------------------------------------------------------------------+
| Internal Constant Definition                                                |
+----------------------------------------------------------------------------*/
#define NO_MORE_DATA 0xFFFF
#define USB_RETURN_DATA_LENGTH 4

//#include "descriptors.c"

/*
BYTE code abromDeviceDescriptor[SIZEOF_DEVICE_DESCRIPTOR] = {
    SIZEOF_DEVICE_DESCRIPTOR,       // Length of this descriptor (12h bytes)
    DESC_TYPE_DEVICE,               // Type code of this descriptor (01h)
    0x10,0x01,                      // Release of USB spec (Rev 1.1)
    0xff,                           // Device's base class code - vendor specific
    0,                              // Device's sub class code
    0,                              // Device's protocol type code
    EP0_PACKET_SIZE,                // End point 0's packet size = 8
    FUNCTION_VID_L,FUNCTION_VID_H,  // Vendor ID for device, TI=0x0451
#ifdef UMPDBG
    FUNCTION_PID_L+1,FUNCTION_PID_H,// Product ID for device, 0x3411 for debug on UMP board
#else    
    FUNCTION_PID_L,FUNCTION_PID_H,  // Product ID for device, 0x3410
#endif    
    0x00,0x01,                      // Revision level of device, Rev=1.0
    1,                              // Index of manufacturer name string desc
    2,                              // Index of product name string desc
    3,                              // Index of serial number string desc
    1                               // Number of configurations supported
};

BYTE code abromConfigurationDescriptorGroup[SIZEOF_BOOTCODE_CONFIG_DESC_GROUP] =
{
    // Configuration  Descriptor, size=0x09
    SIZEOF_CONFIG_DESCRIPTOR,        // bLength
    DESC_TYPE_CONFIG,                // bDescriptorType
    SIZEOF_BOOTCODE_CONFIG_DESC_GROUP, 0x00, // wTotalLength
    0x01,                            // bNumInterfaces
    0x01,                            // bConfigurationValue
    0x00,                            // iConfiguration
    0x80,                            // bmAttributes, bus bootcode
    0x32,                            // Max. Power Consumption at 2mA unit

    // Interface Descriptor, size = 0x09
    SIZEOF_INTERFACE_DESCRIPTOR,    // bLength
    DESC_TYPE_INTERFACE,            // bDescriptorType
    0x00,                           // bInterfaceNumber
    0x00,                           // bAlternateSetting
    1,                              // bNumEndpoints
    0xFF,                           // bInterfaceClass - vendor-specific
    0,                              // bInterfaceSubClass, zero for hub
    0,                              // bInterfaceProtocol
    0x00,                           // iInterface

    // Endpoint Descriptor, size = 0x07 for OEP1
    SIZEOF_ENDPOINT_DESCRIPTOR,     // bLength
    DESC_TYPE_ENDPOINT,             // bDescriptorType
    0x01 ,                          // bEndpointAddress; bit7=1 for IN, bits 3-0=1 for ep1
    EP_DESC_ATTR_TYPE_BULK,         // bmAttributes, bulk transfer
    0x40, 0x00,                     // wMaxPacketSize, 64 bytes
    0x00                            // bInterval
};

BYTE code abromStringDescriptor[SIZEOF_BOOTCODE_STRING_DESC_GROUP] = {
    // string index 0, language support
    4,
    3,
    0x09,0x04,                      // 0x0409 for English

    // string index 1, manufacture
    36,                             // Length of this string descriptor
    DESC_TYPE_STRING,
    'T',0x00,'e',0x00,'x',0x00,'a',0x00,'s',0x00,' ',0x00,
    'I',0x00,'n',0x00,'s',0x00,'t',0x00,'r',0x00,'u',0x00,
    'm',0x00,'e',0x00,'n',0x00,'t',0x00,'s',0x00,
    
    // string index 2, product
    42,                             // Length of this string descriptor
    DESC_TYPE_STRING,
    'T',0x00,'U',0x00,'S',0x00,'B',0x00,'3',0x00,'4',0x00,'1',0x00,'0',0x00,' ',0x00,
    'B',0x00,'o',0x00,'o',0x00,'t',0x00,' ',0x00,
    'D',0x00,'e',0x00,'v',0x00,'i',0x00,'c',0x00,'e',0x00,

    // string index 3, serial number
    34,                             // Length of this string descriptor
    DESC_TYPE_STRING,
    'T',0x00,'U',0x00,'S',0x00,'B',0x00,
    '3',0x00,'4',0x00,'1',0x00,'0',0x00,
    ' ',0x00,' ',0x00,' ',0x00,' ',0x00,
    ' ',0x00,' ',0x00,' ',0x00,' ',0x00
};
*/

/*----------------------------------------------------------------------------+
| Internal Variables                                                          |
+----------------------------------------------------------------------------*/
idata BYTE bConfigurationNumber;      // Set to 1 when USB device has been
                                // configured, set to 0 when unconfigured
idata BYTE bInterfaceNumber;          // interface number
WORD wBytesRemainingOnIEP0;     // For endpoint zero transmitter only
                                // Holds count of bytes remaining to be
                                // transmitted by endpoint 0.  A value
                                // of 0 means that a 0-length data packet
                                // A value of 0xFFFF means that transfer
                                // is complete.
idata WORD wBytesRemainingOnOEP0;     // For endpoint zero transmitter only
                                // Holds count of bytes remaining to be
                                // received by endpoint 0.  A value
                                // of 0 means that a 0-length data packet
                                // A value of 0xFFFF means that transfer
                                // is complete.
idata BOOL bHostAskMoreDataThanAvailable;
                                // If host ask more data then function has
                                // It will send one zero-length packet
                                // if the asked lenght is a multiple of
                                // max. size of endpoint 0
idata PBYTE pbIEP0Buffer;             // A buffer pointer to input end point 0
                                // Data sent back to host is copied from
                                // this pointed memory location
idata PBYTE pbOEP0Buffer;             // A buffer pointer to output end point 0
                                // Data sent from host is copied to
                                // this pointed memory location

idata BYTE abUsbRequestReturnData[USB_RETURN_DATA_LENGTH];


// for firmware download
//WORD wCurrentFirmwareAddress;   // for firmware downloading
//WORD wFirmwareLength;
//BYTE bFirmwareChecksum;
//BYTE bRAMChecksum;
//BOOL bExecuteFirmware;          // flag set by USB request to run the firmware
//BOOL bReboot;
idata BYTE bStatusAction;
//BYTE bLoadFirmwareFromI2C;
idata BYTE bFunctionSuspended=FALSE;        // TRUE if function is suspended

idata BYTE bRemoteWakeup;

/*----------------------------------------------------------------------------+
| Global Variables                                                            |
+----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------+
| Hardware Related Structure Definition                                       |
+----------------------------------------------------------------------------*/
#ifdef KEIL

//#pragma memory = dataseg(TUSB3410_EP0_EDB_SEG)
//tEDB0 tEndPoint0DescriptorBlock;
//#pragma memory = default
xdata tEDB0 tEndPoint0DescriptorBlock _at_ 0xff80;

//#pragma memory = dataseg(TUSB3410_SETUPPACKET_SEG)
//tDEVICE_REQUEST tSetupPacket;
//#pragma memory = default
xdata tDEVICE_REQUEST tSetupPacket _at_ 0xff00;

//#pragma memory = dataseg(TUSB3410_OEP_EDB_SEG)
//tEDB tOutputEndPointDescriptorBlock[3];
//#pragma memory = default
xdata tEDB tOutputEndPointDescriptorBlock[3] _at_ 0xff08;

//#pragma memory = dataseg(TUSB3410_IEP_EDB_SEG)
//tEDB tInputEndPointDescriptorBlock[3];
//#pragma memory = default
xdata tEDB tInputEndPointDescriptorBlock[3] _at_ 0xff48;

//#pragma memory = dataseg(TUSB3410_IEP0BUFFER_SEG)
//BYTE abIEP0Buffer[EP0_PACKET_SIZE];
//#pragma memory = default
xdata BYTE abIEP0Buffer[EP0_PACKET_SIZE] _at_ 0xfef8;

//#pragma memory = dataseg(TUSB3410_OEP0BUFFER_SEG)
//BYTE abOEP0Buffer[EP0_PACKET_SIZE];
//#pragma memory = default
xdata BYTE abOEP0Buffer[EP0_PACKET_SIZE] _at_ 0xfef0;

//#pragma memory = dataseg(TUSB3410_OEP1_X_BUFFER_SEG)
//BYTE pbXBufferAddress[0x40];
//#pragma memory = default

// User defined segment
//#pragma memory = dataseg(TUSB3410_DESC_SEG)
//BYTE abDescriptor[MAX_DESC_SIZE]; 
//#pragma memory = default
xdata BYTE abDescriptor[MAX_DESC_SIZE] _at_ 0xf840; 

#else

//#pragma memory = dataseg(TUSB3410_EXTERNAL_RAM_SEG)
//BYTE abDownloadFirmware[1024*16];
//#pragma memory = default

#pragma memory = dataseg(TUSB3410_EP0_EDB_SEG)
tEDB0 tEndPoint0DescriptorBlock;
#pragma memory = default

#pragma memory = dataseg(TUSB3410_SETUPPACKET_SEG)
tDEVICE_REQUEST tSetupPacket;
#pragma memory = default

#pragma memory = dataseg(TUSB3410_OEP_EDB_SEG)
tEDB tOutputEndPointDescriptorBlock[3];
#pragma memory = default

#pragma memory = dataseg(TUSB3410_IEP_EDB_SEG)
tEDB tInputEndPointDescriptorBlock[3];
#pragma memory = default

#pragma memory = dataseg(TUSB3410_IEP0BUFFER_SEG)
BYTE abIEP0Buffer[EP0_PACKET_SIZE];
#pragma memory = default

#pragma memory = dataseg(TUSB3410_OEP0BUFFER_SEG)
BYTE abOEP0Buffer[EP0_PACKET_SIZE];
#pragma memory = default

//#pragma memory = dataseg(TUSB3410_OEP1_X_BUFFER_SEG)
//BYTE pbXBufferAddress[0x40];
//#pragma memory = default

// User defined segment
#pragma memory = dataseg(TUSB3410_DESC_SEG)
BYTE abDescriptor[MAX_DESC_SIZE]; 
#pragma memory = default

//#pragma memory = dataseg(TUSB3410_XDATA_SEG)
//BYTE abStringDescriptor[sizeof(abromStringDescriptor)];
//#pragma memory = default

#endif
/*----------------------------------------------------------------------------+
| System Initialization Routines                                              |
+----------------------------------------------------------------------------*/
VOID UsbReset(VOID)
{
    RESET_WATCHDOG;

    wBytesRemainingOnIEP0   = NO_MORE_DATA;
    wBytesRemainingOnOEP0   = NO_MORE_DATA;
    bStatusAction           = STATUS_ACTION_NOTHING;

    pbIEP0Buffer            = (PBYTE)0x0000;
    pbOEP0Buffer            = (PBYTE)0x0000;
    bConfigurationNumber    = 0x00;         // device unconfigured
    bInterfaceNumber        = 0x00;         
//    bExecuteFirmware        = FALSE;        // a flag set by USB request
                                            // before bootocode hands over
                                            // control to firmware
//    wCurrentFirmwareAddress = 0x0000;
//    bRAMChecksum            = 0x00;
//    wFirmwareLength         = 0x0000;


    bFunctionSuspended      = FALSE;    
//    bReboot                 = FALSE;
//    bLoadFirmwareFromI2C    = FALSE;
//    bExecuteFirmware        = FALSE;

    // NAK both 0 endpoints and enable endpoint 0 interrupt
    tEndPoint0DescriptorBlock.bIEPBCNT = EPBCT_NAK;
    tEndPoint0DescriptorBlock.bOEPBCNT = EPBCT_NAK;
    tEndPoint0DescriptorBlock.bIEPCNFG = EPCNF_USBIE | EPCNF_UBME | EPCNF_STALL;    // 8 byte data packet
    tEndPoint0DescriptorBlock.bOEPCNFG = EPCNF_USBIE | EPCNF_UBME | EPCNF_STALL;    // 8 byte data packet
    
    // call user defined USB Reset routines
    UsbUserReset();

}

/*
//----------------------------------------------------------------------------
BYTE GetBCD(BYTE bByte)
{
    RESET_WATCHDOG;
    if(bByte > 9) return (bByte+('A'-10));
    else return (bByte + '0');
}
*/

//----------------------------------------------------------------------------
VOID UsbDataInitialization(VOID)
{
//    BYTE bTemp;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久这里只有精品6| 91福利小视频| 国产精品99久| 高清视频一区二区| 成人av集中营| 91视视频在线观看入口直接观看www| 国产资源在线一区| 99久久国产综合色|国产精品| 成人免费观看视频| 欧美日韩国产中文| 欧洲av在线精品| 色综合久久久久网| 欧美日韩国产一区二区三区地区| 欧美日韩成人一区二区| 日韩一级免费一区| 久久久99精品免费观看| 亚洲视频你懂的| 日韩高清不卡在线| 91在线观看美女| 欧美成人免费网站| 亚洲美女视频在线观看| 精品一区二区久久久| 岛国av在线一区| 欧美一区二区性放荡片| 亚洲女同ⅹxx女同tv| 亚洲a一区二区| 99re热这里只有精品视频| 欧美一区二区三区视频免费播放 | 久久久三级国产网站| 亚洲精品ww久久久久久p站| 免费人成在线不卡| 日本韩国欧美三级| 成人免费视频在线观看| 亚洲高清中文字幕| 成人黄色av电影| 精品国产91亚洲一区二区三区婷婷| 亚洲欧美日韩国产综合| 国产91高潮流白浆在线麻豆| 欧美精品一区二区蜜臀亚洲| 麻豆一区二区在线| 91精品国产综合久久精品app| 一级日本不卡的影视| 91女厕偷拍女厕偷拍高清| 中文字幕欧美三区| 97久久精品人人爽人人爽蜜臀| 国产精品久线在线观看| 成人福利在线看| 亚洲丝袜精品丝袜在线| 波多野结衣视频一区| 亚洲毛片av在线| 7878成人国产在线观看| 极品少妇xxxx精品少妇| 久久久亚洲精华液精华液精华液| 久久成人免费电影| 欧美经典一区二区| 91激情五月电影| 狠狠网亚洲精品| 亚洲乱码国产乱码精品精可以看 | 精品国产一区二区三区av性色| 免费在线观看一区| 欧美韩国日本不卡| 欧美电影在哪看比较好| 精品一区二区三区免费观看| 久久久久久久久一| 在线免费观看日韩欧美| 国精产品一区一区三区mba桃花| 国产精品久久综合| 欧美高清在线一区| 日韩欧美一级特黄在线播放| 91视频在线观看免费| 日韩电影在线一区二区三区| 亚洲日本在线看| 久久久久国产成人精品亚洲午夜| 欧美人与z0zoxxxx视频| 成人免费视频一区| 国产一区在线不卡| 精品在线观看视频| 麻豆精品视频在线观看免费| 亚洲夂夂婷婷色拍ww47| 中文字幕一区二区三区精华液 | 日本中文字幕一区二区有限公司| 亚洲最大色网站| 日韩三级中文字幕| 欧美日韩一区二区三区高清| 91婷婷韩国欧美一区二区| 成人av在线播放网站| 国产一区二区三区电影在线观看| 蜜桃久久久久久| 国产呦萝稀缺另类资源| 国产乱人伦偷精品视频不卡| 韩国女主播成人在线| 国产盗摄一区二区| 国产.欧美.日韩| 日韩一级高清毛片| 欧美成人vps| 国产精品三级视频| 最新国产成人在线观看| 一区二区三区鲁丝不卡| 午夜久久久影院| 国产一区二区三区日韩| 国产69精品久久久久毛片| 色香色香欲天天天影视综合网| 欧美日韩免费观看一区二区三区 | 亚洲欧美日韩精品久久久久| 亚洲国产日韩综合久久精品| 乱一区二区av| 一本久久a久久免费精品不卡| 欧美一区二区三区在线视频| 久久精品视频免费| 午夜久久久久久久久| 午夜私人影院久久久久| 国产一区二区精品久久99| 色呦呦国产精品| 精品国产一区久久| 午夜国产不卡在线观看视频| 国产成a人亚洲| 日韩一区二区三区在线观看| 日韩美女视频一区| 国产一区久久久| 欧美一级生活片| 午夜激情综合网| 日韩欧美一区二区视频| 亚洲美女免费视频| 不卡一卡二卡三乱码免费网站| 欧美一区二区在线播放| 亚洲综合精品久久| 在线视频一区二区三区| 亚洲精品视频在线看| 国产91精品一区二区麻豆亚洲| 日韩一区二区视频| 老司机精品视频一区二区三区| 欧美色精品在线视频| 亚洲成a人v欧美综合天堂下载| 91麻豆成人久久精品二区三区| 国产精品成人免费在线| 91一区二区三区在线观看| 亚洲黄色小视频| 欧美日韩视频第一区| 青青草国产精品亚洲专区无| 欧美精品久久一区| 国产成人在线视频网址| 欧美久久一二区| 麻豆高清免费国产一区| 欧美大片一区二区| 成人综合婷婷国产精品久久蜜臀 | 在线观看一区不卡| 丝袜诱惑亚洲看片| wwwwxxxxx欧美| 一本久久综合亚洲鲁鲁五月天 | 日韩三级视频在线看| 国产麻豆日韩欧美久久| 亚洲一区二区在线观看视频 | 91麻豆精品国产综合久久久久久| 免费人成在线不卡| 国产精品久久久久一区二区三区| 日本精品一区二区三区四区的功能| 亚洲成人免费av| 国产精品乱码人人做人人爱| 欧美系列在线观看| 国产电影一区二区三区| 日本亚洲三级在线| 一区二区免费在线| 日韩一区二区在线看片| av不卡一区二区三区| 国产综合久久久久影院| 亚洲国产乱码最新视频| 国产精品传媒在线| 国产免费观看久久| 国产免费久久精品| 精品国产伦理网| 日韩久久久精品| 日韩免费在线观看| 欧美一区二区人人喊爽| 在线播放一区二区三区| 播五月开心婷婷综合| 91一区二区三区在线观看| 成人一区在线看| 99久久精品国产一区二区三区| 国产精品综合一区二区| 精品一区二区三区日韩| 青青草国产精品亚洲专区无| 青草av.久久免费一区| 激情综合色播五月| 狠狠网亚洲精品| 97国产一区二区| 欧美精品乱码久久久久久| 日韩欧美一区二区视频| 亚洲激情六月丁香| 奇米在线7777在线精品 | 欧美日韩一区久久| 欧美人与禽zozo性伦| 久久综合久久综合亚洲| 中文乱码免费一区二区| 亚洲高清不卡在线观看| 另类小说综合欧美亚洲| 成人的网站免费观看| 色就色 综合激情| 精品视频1区2区3区| 久久久久久久久伊人| 亚洲成人精品一区二区|