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

📄 e100bexcard.h

📁 nmE100bex网卡驱动程序
💻 H
字号:
// E100bexCard.h: interface for the E100bexCard class.
//
//=============================================================================
//
// Compuware Corporation
// NuMega Lab
// 9 Townsend West
// Nashua, NH 03060  USA
//
// Copyright (c) 2000 Compuware Corporation. All Rights Reserved.
// Unpublished - rights reserved under the Copyright laws of the
// United States.
//
//=============================================================================
//
// Portions copied from Microsoft Windows 2000 DDK sample driver containing the
// following copyright
//
/****************************************************************************
** COPYRIGHT (C) 1994-1997 INTEL CORPORATION                               **
** DEVELOPED FOR MICROSOFT BY INTEL CORP., HILLSBORO, OREGON               **
** HTTP://WWW.INTEL.COM/                                                   **
** THIS FILE IS PART OF THE INTEL ETHEREXPRESS PRO/100B(TM) AND            **
** ETHEREXPRESS PRO/100+(TM) NDIS 5.0 MINIPORT SAMPLE DRIVER               **
****************************************************************************/


#if !defined(AFX_E100BEXCARD_H__0E5098A8_1538_11D4_AFF3_00C04F6A5DA9__INCLUDED_)
#define AFX_E100BEXCARD_H__0E5098A8_1538_11D4_AFF3_00C04F6A5DA9__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


// Forward
class E100bexAdapter;	

const USHORT	CARD_SHARED_MEM_ALIGNMENT	= 16;

///////////////////////////////////////////////////////////////////////
// E100bexCard class declaration	 
//
// This class models the NIC.  The Phy component is modeled by the
// E100bexPhy object.    
//
class E100bexCard
{

	// construction
public:
	E100bexCard(E100bexAdapter& Adapter, KNdisMemoryRange& CSRRange, ADAPTER_INFO& Ai);

	// methods
public:
	VOID	ResumeCommandUnit(void);
	VOID	StartTransmitUnit(ULONG TcbPhys);

	VOID	ResetPhy(void);
	BOOLEAN	DetectPhy(void);

	VOID	AbortReceiveUnit(void);
	VOID	StartReceiveUnit(PNDIS_PHYSICAL_ADDRESS pPhysAddr);
	BOOLEAN ReceiveUnitStarted(void);

	VOID	IssueSelectiveReset(void);

	VOID	EnableInterrupt(void);
	VOID	DisableInterrupt(void);
	BOOLEAN	IsInterrupting(void);
	BOOLEAN AckPendingInterrupts(void);

	USHORT	ReadEEprom(USHORT Reg);
	BOOLEAN Init(ETHERNET_ADDRESS NodeAddress);

	NDIS_STATUS		 SelfTest(void);
	ETHERNET_ADDRESS ReadPermanentNodeAddress(void);

	VOID	SetMcTimeoutFlag(void);
	VOID	ClearAllCounters(void);
	ULONG	GetSharedMemorySize(void);
	ULONG	SetupSharedMemory(ULONG pCbPhys, KNdisSharedMemory& ShMem);
	ULONG	GetPacketFilter(void);
	UINT	GetMcTimeoutFlag(void) { return m_Ai.McTimeoutFlag; }
	VOID	GetUpdatedStats(KNdisStats<ERR_COUNT_STRUC>& Stats);
	ULONG	GetCurrentLineSpeed(void);
	VOID	UpdateStats(void);
	NDIS_STATUS	SetPacketFilter(ULONG Param, BOOLEAN bCheckExisting=TRUE);
	NDIS_STATUS ChangeMCAddresses( PUCHAR PrivateMulticastBuffer, UINT nAddressCount);
	NDIS_MEDIA_STATE GetConnectionStatus(void);

protected:
	VOID	EEpromShiftOutBits(USHORT data, USHORT count);
	VOID	EEpromRaiseClock(USHORT *x);
	VOID	EEpromLowerClock(USHORT *x);
	USHORT	EEpromShiftInBits(void);
	VOID	EEpromCleanup(void);

	VOID	SoftwareReset(void);

	VOID	SelectPhy(UINT SelectPhyAddress, BOOLEAN WaitAutoNeg);
	BOOLEAN SetupPhy(void);
	VOID	FindPhySpeedAndDpx(UINT PhyId);

	BOOLEAN IssueScbCommand(UCHAR ScbCommandLow,BOOLEAN WaitForScb);
	BOOLEAN WaitScb(void);
	BOOLEAN SubmitCommandBlockAndWait(void);

	BOOLEAN Configure(void);
	BOOLEAN SetNodeAddress(ETHERNET_ADDRESS NodeAddress);

	// data
protected:
	E100bexAdapter&	m_Adapter;
	CSRStruc		m_CSRStruc;
	ADAPTER_INFO	m_Ai;

	UCHAR			m_OldParameterField; // old packet filter
	ULONG			m_PacketFilter; 	 // The Current Global Packet Filter 

	E100bexPhy		m_Phy;

	// Shared Memory structures

	volatile PSELF_TEST_STRUC	m_SelfTest;			// 82557/82558 SelfTest
	ULONG						m_SelfTestPhys;

	volatile PNON_TRANSMIT_CB	m_NonTxCmdBlock;	// 82557/82558 (non transmit) Command Block
	ULONG						m_NonTxCmdBlockPhys;
	volatile PCB_HEADER_STRUC	m_NonTxCmdBlockHdr;

	volatile PDUMP_AREA_STRUC	m_DumpSpace;		// 82557/82558 dump buffer area
	ULONG						m_DumpSpacePhys;

	volatile PERR_COUNT_STRUC	m_StatsCounters;	// 82557/82558 statistics
	ULONG						m_StatsCounterPhys;

};


inline NDIS_MEDIA_STATE E100bexCard::GetConnectionStatus()
{
	return m_Phy.GetConnectionStatus();
}

inline ULONG E100bexCard::GetCurrentLineSpeed()
{
	return m_Phy.GetCurrentLineSpeed();
}

inline VOID E100bexCard::ResetPhy()
{
	m_Phy.Reset();
}

inline UCHAR E100bexCard::DetectPhy()
{
	return m_Phy.Detect();
}

inline ULONG E100bexCard::GetPacketFilter()
{
	return m_PacketFilter;
}

#endif // !defined(AFX_E100BEXCARD_H__0E5098A8_1538_11D4_AFF3_00C04F6A5DA9__INCLUDED_)

⌨️ 快捷键说明

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