📄 sx2.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 + -