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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? usb2lib.h

?? 嵌入式操作系統(tǒng)WINCE5.0下的USB驅(qū)動(dòng)程序
?? H
字號(hào):
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
// 
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
// 
// Module Name:  
//     USB2Lib.h
// 
// Abstract: Provides interface to UHCI host controller
// 
// Notes: 
//

#ifndef __USB2LIB_H_
#define __USB2LIB_H_
#include <sync.hpp>
// all times are in units of bytes
#define	FS_BYTES_PER_MICROFRAME 188
#define MICROFRAMES_PER_FRAME	8
#define FS_SOF 6  // number of byte times allocated to an SOF packet at the beginning of a frame
//#define	MAXFRAMES	8	// scheduling window for budget tracking, periods longer than
#define	MAXFRAMES	32	// scheduling window for budget tracking, periods longer than
				// this are reduced to this.  Also impacts space required for
				// tracking data structures.  Otherwise fairly arbitrary.

#define	MAXMICROFRAMES	(MAXFRAMES * 8)	

// 4 byte sync, 4 byte split token, 1 byte EOP, 11 byte ipg, plus
// 4 byte sync, 3 byte regular token, 1 byte EOP, 11 byte ipg
#define HS_SPLIT_SAME_OVERHEAD 39
// 4 byte sync, 4 byte split token, 1 byte EOP, 11 byte ipg, plus
// 4 byte sync, 3 byte regular token, 1 byte EOP, 1 byte bus turn
#define HS_SPLIT_TURN_OVERHEAD 29
// 4 byte sync, 1 byte PID, 2 bytes CRC16, 1 byte EOP, 11 byte ipg
#define HS_DATA_SAME_OVERHEAD 19
// 4 byte sync, 1 byte PID, 2 bytes CRC16, 1 byte EOP, 1 byte bus turn
#define HS_DATA_TURN_OVERHEAD 9
// 4 byte sync, 1 byte PID, 1 byte EOP, 1 byte bus turn
#define HS_HANDSHAKE_OVERHEAD 7
//#define HS_MAX_PERIODIC_ALLOCATION	6000	// floor(0.8*7500)
#define HS_MAX_PERIODIC_ALLOCATION	7000	// floor(0.8*7500)

// This could actually be a variable based on an HC implementation
// some measurements have shown 3?us between transactions or about 3% of a microframe
// which is about 200+ byte times.  We'll use about half that for budgeting purposes.
#define HS_HC_THINK_TIME 100

// 4 byte sync, 3 byte regular token, 1 byte EOP, 11 byte ipg
#define HS_TOKEN_SAME_OVERHEAD 19
// 4 byte sync, 3 byte regular token, 1 byte EOP, 1 byte bus turn
#define HS_TOKEN_TURN_OVERHEAD 9

// TOKEN: 1 byte sync, 3 byte token, 3 bit EOP, 1 byte ipg
// DATA: 1 byte sync, 1 byte PID, 2 bytes CRC16, 3 bit EOP, 1 byte ipg
// HANDSHAKE: 1 byte sync, 1 byte PID, 3 bit EOP, 1 byte ipg
#define	FS_ISOCH_OVERHEAD 9
#define FS_INT_OVERHEAD 13
//#define LS_INT_OVERHEAD (19*8)
#define LS_INT_OVERHEAD ((14 *8) + 5)
#define HUB_FS_ADJ 30 // periodic allocation at beginning of frame for use by hubs, maximum allowable is 60 bytes
#define FS_MAX_PERIODIC_ALLOCATION	(1157)	// floor(0.9*1500/1.16)
#define FS_BS_MAX_PERIODIC_ALLOCATION 1350 // floor(0.9*1500), includes bitstuffing allowance (for HC classic allocation)

// byte time to qualify as a large FS isoch transaction
//   673 = 1023/1.16 (i.e. 881) - 1microframe (188) - adj (30) or
//   1/2 of max allocation in this case 
// #define LARGEXACT (881-FS_BYTES_PER_MICROFRAME)
#define LARGEXACT (579)

typedef enum {bulk, control, interrupt, isoch} eptype;

#define	HSSPEED 2
#define FSSPEED 1
#define LSSPEED 0
#define INDIR 0
#define OUTDIR 1
typedef struct _EndpointBuget
{

	// These fields have static information that is valid/constant as long as an
	// endpoint is configured
	USHORT max_packet;	// maximum number of data bytes allowed for this
                        		// endpoint. 0-8 for LS_int, 0-64 for FS_int,
                        		// 0-1023 for FS_isoch.
	USHORT  period;       // desired period of transactions, assumed to be a power of 2
	eptype		ep_type;
	UCHAR  type;
	UCHAR   direction;
	UCHAR   speed;
	UCHAR   moved_this_req;	// 1 when this endpoint has been changed during this allocation request

	// These fields hold dynamically calculated information that changes as (other)
	// endpoints are added/removed.

	USHORT  calc_bus_time;	// bytes of FS/LS bus time this endpoint requires
                        		// including overhead. This can be calculated once.

	USHORT  start_time;		// classic bus time at which this endpoint is budgeted to occupy the classic bus

	USHORT actual_period;	// requested period can be modified:
								// 1. when period is greater than scheduling window (MAXFRAMES)
								// 2. if period is reduced (not currently done by algorithm)

	UCHAR   start_frame;		// first bus frame that is allocated to this endpoint.
	CHAR    start_microframe;		// first bus microframe (in a frame) that can have a
                        		// start-split for this ep.
                        		// Complete-splits always start 2 microframes after a
                        		// start-split.
	UCHAR   num_starts;		// the number of start splits.
	UCHAR   num_completes;	// the number of complete splits.
	/* The numbers above could be (better?) represented as bitmasks. */

	/* corner conditions above: coder beware!!
	   patterns can have the last CS in the "next" frame
	     This is indicated in this design when:
		(start_microframe + num_completes + 1) > 7
	   patterns can have the first SS in the previous frame
             This is indicated in this design when:
                start_microframe = -1
	*/


} EndpointBuget,*LPEndpointBuget;
typedef struct _microframe_rec
{
    DWORD   time_used;
} MICROFRAME_REC,FRAME_REC;

typedef struct _ENDPOINTBUGETLIST *LPEndpointBugetList;
typedef struct _ENDPOINTBUGETLIST {
    LPEndpointBugetList pNextEndpt;
    EndpointBuget endpt;    
}EndpointBugetList;

class TransactionTrasnlate;
class TransactionTrasnlate {
public:
    TransactionTrasnlate (const UCHAR uHubAddress,const UCHAR uPort,TransactionTrasnlate * pNextTT=NULL);
    ~TransactionTrasnlate();
    UCHAR GetHubAddress() { return m_uHubAddress; };
    UCHAR GetHubPort() { return m_uPort; };
    BOOL AddedEp(LPEndpointBuget lEp);
    BOOL DeletedEp(LPEndpointBuget lEp);
    TransactionTrasnlate * SetNextTT(TransactionTrasnlate * pNextTT) { 
        TransactionTrasnlate * pReturn = m_pNextTT;
        m_pNextTT = pNextTT;
        return  pReturn;
    }
    TransactionTrasnlate * GetNextTT() { return  m_pNextTT; };
private:
    BOOL FindBestTimeSlot(USHORT start_time,USHORT time_duration,LPEndpointBugetList lpList,PDWORD pdwReturn);
    BOOL InsertEp(DWORD frameIndex,LPEndpointBuget ep);
    BOOL RemoveEp(DWORD frameIndex,LPEndpointBuget ep);
    const UCHAR m_uHubAddress;
    const UCHAR m_uPort;  
    DWORD m_dwThink_time;
    TransactionTrasnlate * m_pNextTT;
    LPEndpointBugetList TT_frame[MAXFRAMES];
    FRAME_REC frame_budget[MAXFRAMES];
};


class USB2lib :LockObject {
public:
    USB2lib() ;
    ~USB2lib();
    BOOL    Init(void) { return TRUE; };
    BOOL    AddedTt( UCHAR uHubAddress,UCHAR uPort);
    BOOL    DeleteTt( UCHAR uHubAddress,UCHAR uPort);
    TransactionTrasnlate * GetTT( const UCHAR uHubAddress,const UCHAR uHubPort);
    BOOL    AllocUsb2BusTime(IN const UCHAR uHubAddress,IN const UCHAR uHubPort, LPEndpointBuget lpEndpointDescriptor);
    void    FreeUsb2BusTime(IN const UCHAR uHubAddress,IN const UCHAR uHubPort, LPEndpointBuget lpEndpointDescriptor);
    UCHAR   GetSMASK(LPEndpointBuget lpEndpointDescriptor);
    UCHAR   GetCMASK(LPEndpointBuget lpEndpointDescriptor);
//
    UCHAR   GetNewPeriod(LPEndpointBuget lpEndpointDescriptor) const  { return (UCHAR) lpEndpointDescriptor->actual_period;};
    ULONG   GetScheduleOffset(LPEndpointBuget lpEndpointDescriptor) const { return  lpEndpointDescriptor->start_frame; };
    
    ULONG   GetAllocedBusTime(LPEndpointBuget lpEndpointDescriptor) const {  return  lpEndpointDescriptor->calc_bus_time;};
private:
    TransactionTrasnlate * pTTRoot;
    unsigned Add_bitstuff(unsigned bus_time) const;
    int     Compute_nonsplit_overhead(LPEndpointBuget ep);
    VOID ConvertBtoHFrame(UCHAR BFrame, UCHAR BUFrame, PUCHAR HFrame, PUCHAR HUFrame);
    DWORD   thinktime;
    DWORD   allocation_limit;   // maximum allocation allowed for this HC
    DWORD   speed;              // HS or FS
    MICROFRAME_REC HS_microframe_info[MAXFRAMES][MICROFRAMES_PER_FRAME];    // HS bus time allocated to
#define SIZE_OF_CMASK 8
    static UCHAR CMASKS [SIZE_OF_CMASK];
    
};

#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类小说欧美激情| 日韩美一区二区三区| 亚洲欧洲性图库| www.欧美色图| 亚洲欧美电影院| 欧亚洲嫩模精品一区三区| 亚洲小少妇裸体bbw| 91精品国产一区二区| 久久黄色级2电影| 国产女同互慰高潮91漫画| 成人av电影免费在线播放| 亚洲男帅同性gay1069| 欧美私人免费视频| 美腿丝袜亚洲一区| 国产精品女人毛片| 欧美性感一类影片在线播放| 日韩av在线播放中文字幕| 久久综合九色欧美综合狠狠| 成人国产精品免费观看| 亚洲成精国产精品女| 日韩免费观看高清完整版| 丁香六月久久综合狠狠色| 一区二区三区影院| 日韩欧美久久久| av毛片久久久久**hd| 三级一区在线视频先锋| 欧美激情在线一区二区三区| 欧美午夜宅男影院| 国产精选一区二区三区| 一区二区三区欧美| 2023国产精华国产精品| 色综合天天综合在线视频| 麻豆精品新av中文字幕| 亚洲欧美色图小说| 欧美精品一区二区三区视频| 日本道色综合久久| 国产麻豆视频一区二区| 亚洲午夜久久久久久久久电影院| 精品动漫一区二区三区在线观看| 色8久久人人97超碰香蕉987| 国模少妇一区二区三区| 亚洲成av人影院在线观看网| 国产欧美日韩不卡| 日韩精品一区二区三区在线观看 | 亚洲成人综合视频| 久久久精品国产99久久精品芒果| 欧美日韩三级一区| 成人毛片在线观看| 精品亚洲成a人| 日韩中文字幕1| 亚洲欧美视频一区| 国产精品美女一区二区在线观看| 日韩欧美一区二区免费| 中文字幕久久午夜不卡| 欧美日韩精品一二三区| 成人激情免费电影网址| 韩国欧美一区二区| 青青草原综合久久大伊人精品 | 99视频一区二区| 国产制服丝袜一区| 免费在线视频一区| 亚洲电影第三页| 亚洲一区二区三区免费视频| 一区在线观看免费| 中文字幕在线观看不卡视频| 国产亚洲一区字幕| 久久久久久亚洲综合影院红桃| 欧美日韩高清影院| 欧美日本在线播放| 欧美日韩国产乱码电影| 欧美色精品在线视频| 欧美视频一区在线观看| 欧美色精品天天在线观看视频| 色嗨嗨av一区二区三区| 91极品视觉盛宴| 91福利在线导航| 欧美在线一区二区| 欧美日韩国产欧美日美国产精品| 欧美日韩精品免费观看视频| 欧美三级日本三级少妇99| 欧美亚洲国产bt| 欧美亚洲高清一区二区三区不卡| 在线免费观看一区| 欧美日韩美女一区二区| 欧美美女一区二区在线观看| 欧美美女黄视频| 日韩欧美一区电影| 久久免费看少妇高潮| 日本一区二区三区国色天香| 中文字幕+乱码+中文字幕一区| 国产精品久久久久久久久搜平片| 国产精品进线69影院| 亚洲乱码一区二区三区在线观看| 樱桃视频在线观看一区| 丝瓜av网站精品一区二区 | 一区二区欧美在线观看| 亚洲福利视频导航| 美国十次了思思久久精品导航| 麻豆91在线观看| 国产91色综合久久免费分享| av欧美精品.com| 69堂精品视频| 久久久国产精品午夜一区ai换脸| 国产精品五月天| 亚洲综合成人在线| 免费观看久久久4p| 成人av网站大全| 欧美老人xxxx18| 国产日本亚洲高清| 亚洲一区免费观看| 韩国欧美国产1区| 色综合久久综合网欧美综合网 | 欧美久久久久久蜜桃| 久久人人超碰精品| 亚洲视频1区2区| 日日骚欧美日韩| 成人福利在线看| 欧美一区二区精品| 国产精品每日更新| 日韩高清一区二区| 成人18精品视频| 51精品国自产在线| 17c精品麻豆一区二区免费| 秋霞国产午夜精品免费视频| 成人午夜碰碰视频| 日韩欧美国产综合一区| 亚洲三级视频在线观看| 精品一区二区三区免费| 欧美午夜理伦三级在线观看| 久久久精品免费免费| 午夜激情一区二区| 91视频在线观看免费| 欧美精品一区二区三区高清aⅴ | 欧美日韩国产中文| 国产精品三级在线观看| 六月丁香婷婷色狠狠久久| 在线日韩国产精品| 亚洲国产岛国毛片在线| 久久激情综合网| 欧美日韩久久一区二区| 最新中文字幕一区二区三区| 国产一区二区三区久久久| 欧美精品vⅰdeose4hd| 亚洲欧美日韩一区二区| 成人久久18免费网站麻豆 | 天堂av在线一区| 色综合一区二区三区| 国产精品免费免费| 精品午夜久久福利影院| 3atv一区二区三区| 亚洲成人高清在线| 精品婷婷伊人一区三区三| 最近中文字幕一区二区三区| 大白屁股一区二区视频| 久久久亚洲精品石原莉奈| 裸体歌舞表演一区二区| 欧美一区二区免费观在线| 天堂蜜桃一区二区三区| 欧美系列日韩一区| 亚洲第四色夜色| 欧美日韩国产首页| 日韩中文字幕1| 欧美丰满一区二区免费视频| 亚洲成人综合视频| 欧美日韩不卡一区| 日韩精品乱码av一区二区| 制服丝袜国产精品| 日本不卡1234视频| 日韩欧美国产一区在线观看| 美女精品一区二区| 精品国产乱子伦一区| 国精品**一区二区三区在线蜜桃| 精品成人免费观看| 国产一区二区不卡老阿姨| 国产亚洲精品超碰| 成人av网址在线| 亚洲免费伊人电影| 91麻豆免费在线观看| 亚洲综合色噜噜狠狠| 91.com视频| 国模冰冰炮一区二区| 国产精品伦一区二区三级视频| eeuss影院一区二区三区| 亚洲狼人国产精品| 欧美美女bb生活片| 精品一区二区免费看| 日本一区二区免费在线观看视频| 成人爱爱电影网址| 亚洲免费观看高清完整| 欧美久久一区二区| 极品尤物av久久免费看| 欧美激情在线观看视频免费| 色噜噜狠狠成人网p站| 婷婷中文字幕一区三区| 久久亚区不卡日本| 91影院在线观看| 热久久一区二区| 国产精品欧美久久久久一区二区| 91精品福利视频| 国模冰冰炮一区二区|