⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sx2.h

📁 windows CE下cypress USB driver的例程
💻 H
字号:
//
// 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: 

        SX2.H

Abstract:

        NetChip sx2 USB Function Platform-Dependent Driver header.

--*/

#ifndef _SX2_H_
#define _SX2_H_

#include <windows.h>
#include <usbfntypes.h>
#include <usbfn.h>
#include <ceddk.h>
#include "drv_glob.h"
#include "XSC1.h"
#include "XSC1bd.h"

#define SX2_MAX_DESCRIPTOR_LENGTH   500

#define FORCE_16_BIT_OUT
#define FORCE_16_BIT_IN
//#define USINGEP8

#define TRACE_FLAG      0
#define TRACE_FLAG_INIT 0

#define SX2_MAX_FIFOS       5


#define EP_STATE_IDLE 0
#define EP_STATE_WAITING_FOR_HEADER 1
#define EP_STATE_WAITING_FOR_DATA 2


typedef struct _EP_STATUS {
    DWORD                  dwEndpoint;
    DWORD                   dwTypeSupported;
    DWORD                   dwDirectionSupported;
    DWORD                   dwPacketSizeSupported;
    DWORD                   dwPacketSizeAssigned;
     BOOL                      fInitialized;
    DWORD                    EpState;
   volatile LPWORD         pFifoAddr;
    CRITICAL_SECTION  csEndpoint;
    UFN_TRANSFER_LIST hTransferList;
    PSTransfer                pTransfer;
    DWORD                    dwNumBytesToRead;
    BYTE                        bCfgRegValue;
    DWORD                   cbLeftOverBytes;
    BOOL                    fSentZeroLengthPacket;
} EP_STATUS, *PEP_STATUS;
enum  PDD_ACTIVE_PROTOCOL{
PDD_SETUP_FOR_MASS_STORAGE = 1,
PDD_SETUP_FOR_MTP,
PDD_SETUP_FOR_RNDIS,
};


typedef struct _SX2_CONTEXT {
    DWORD               dwSig;
    PVOID               pvMddContext;
    HANDLE              hIST;
    HANDLE              hISTSX2Int;
    HANDLE              hISTSX2FlagAB;
    HANDLE              hISTSX2FlagC;
    DWORD               dwISTPriority;
    BOOL                fInitialized;
    BOOL                fRegistered;
    BOOL                fRunning;
    PEP_STATUS          pEpStatus;
    BOOL                fSpeedReported;
    DEVICE_EVENT        CableState;
    BOOL                fExitIST;

    BOOL beforeWait;
    BOOL afterWait;

    CRITICAL_SECTION    csTransmit;
    CRITICAL_SECTION    csHwReg;
    CRITICAL_SECTION    csReadReg;
    CRITICAL_SECTION    csWriteReg;
    
    DWORD       dwIntID;
    HANDLE      hevInterrupt;
 
    DWORD       dwIntIDOther;
    HANDLE      hevFlagInterrupt;
    
    DWORD       dwIntIDRxPF;
    HANDLE      hevRxPfInterrupt;

    HANDLE      hevMain;
    HANDLE      hevFlagA;
    HANDLE      hevFlagB;
    HANDLE      hevFlagC;
    HANDLE      hevSetupPktCmd;
    HANDLE      hevOutPhaseCmd;

    BOOL        fWaitingOnWrite;
    BOOL        fWaitingOnRead;
    HANDLE      hevWaitingOnRead;
    HANDLE      hevWaitingOnWrite;
    HANDLE      hevWaitingOnInShortPktAck;

    HANDLE      hevReady;

    HANDLE     hevPowerOn;

    BYTE        rgbDescriptors[SX2_MAX_DESCRIPTOR_LENGTH];
    DWORD       cbDescriptors;

    DWORD       dwControlTransferLength;
    DWORD       dwFlagAEndpointAssigned;
    DWORD       dwFlagBEndpointAssigned;
    DWORD       dwFlagCEndpointAssigned;

    UCHAR        HighSpeedConfigurationNumber;
    UCHAR        FullSpeedConfigurationNumber;
    
    volatile LPWORD     pFIFOBaseAddress;   // virtual mapped base address of FIFO buffers (FIFOADR)
    volatile LPWORD     pInterruptAddr;
    volatile LPWORD     pCmdINAddr;
    volatile LPWORD     pCmdOUTAddr;
    volatile GPIO_REGS *pGPIORegs;          // GPIO registers base address
    volatile PDRIVER_GLOBALS pDrvGlobals;
    DWORD                   pFifoPhyAddressIn;
    DWORD                   pFifoPhyAddressOut;
    BOOL                      bForceNak;
    BOOL                      bCurrentlyNaking;
    PDD_ACTIVE_PROTOCOL    dwProtocolActive;
    BOOL                      fSendHandshake;
    WORD                    wIntSource;

	//Command OUT
	WORD		wOUTWrRegRspCmd;
	WORD		wOUTRdRegRspCmd;

#define SX2_MAX_OUTEP0BUF_LENGTH 0x256
	BYTE  		pbOutEP0Buf[SX2_MAX_OUTEP0BUF_LENGTH];
	DWORD		cbOutEP0Buf;
	DWORD		cbOutEP0DataReceived;

	BOOL		fSX2IsReady;

	USB_DEVICE_REQUEST UsbDevReq;

} SX2_CONTEXT, *PSX2_CONTEXT;

#define SX2_SIG '2XS' // "SX2" signature

#define IS_VALID_SX2_CONTEXT(ptr) \
    ( (ptr != NULL) && (ptr->dwSig == SX2_SIG) )


    


#define RegOpenKey(hkey, lpsz, phk) \
        RegOpenKeyEx((hkey), (lpsz), 0, 0, (phk))

#ifndef SHIP_BUILD
#define STR_MODULE _T("SX2!")
#define SETFNAME(name) LPCTSTR pszFname = STR_MODULE name _T(":")
#else
#define SETFNAME(name)
#endif

#endif _SX2_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -