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

📄 car6k.hpp

📁 Atheros Communications AR6001 WLAN Driver for SDIO installation Read Me March 26,2007 (based on
💻 HPP
📖 第 1 页 / 共 2 页
字号:

	ULONG                               m_BitrateKpbs;

	USHORT                              m_ChannelList[32];
	ULONG                               m_cChannelList;

	// Boolean indicating whether m_SSID is valid and that
	// we want to be associated with it.
	boolean                             m_WantToBeConnected;
	// SSID to which we are to associate
	NDIS_802_11_SSID                    m_SSID;

	// Boolean indicating we are currently trying to associate to m_SSID
	boolean                             m_ConnectInProgress;

	// Boolean indicating whether we are connected to a peer (e.g. AP)
	boolean                             m_Connected;
	// BSSID of the peer to which we are connected
	BYTE                                m_PeerBSSID[ETHERNET_MAC_ADDRESS_LENGTH];
	// Channel used to connect to the peer
	USHORT                              m_ConnectedChannel;

	boolean                             m_RadioDisabled;
	USHORT                              m_beaconInterval;
	NDIS_802_11_NETWORK_TYPE            m_NetworkTypeInUse;
	
	LONG                                m_TxPending;

	// Type of BSSs for which we want INFO EVENTs indicated
	WMI_BSS_FILTER                      m_WMIBssFilter;

	NDIS_WORK_ITEM                      m_WorkItem;
	NDIS_WORK_ITEM                      m_ResetPowerWorkItem;

	NDIS_EVENT                          m_tgtReadyEvent;
	NDIS_EVENT                          m_WMIReadyEvent;
	NDIS_EVENT							m_tgtStatsEvent;

	// Variables used to support BSSID_LIST retrieval from WMI
	NDIS_WLAN_BSSID_EX                 *m_pBSSIDList;
	ULONG                               m_cbBSSIDList;
	PULONG                              m_pcbBSSIDListNeeded;
	ULONG                               m_BSSIDListNumberOfItems;

	//Variables used to store the association information provided by WMI
	BYTE                                m_AssocReqLen;
	BYTE                                m_AssocRespLen;
	BYTE                                m_BeaconIeLen;
	PBYTE                               m_pAssocInfo;
	USHORT                              m_ListenInterval;

#ifdef SUPPORT_WPA2
	//Variables used to cache the PMKID set by supplicant
	NDIS_802_11_PMKID                  *m_pPMKID;
#endif

	// This index is used to rotate the Grpwise cipher type.
	USHORT                              m_GrpwiseCryptoIndex;
	CRYPTO_TYPE                         m_PairwiseCryptoType;
	CRYPTO_TYPE                         m_GrpwiseCryptoType;

	// MAC Address of the AP that we want to associate with,
	// or 0xFFFFFFFFFFFF if we can associate with any AP
	NDIS_802_11_MAC_ADDRESS             m_DesiredAPBSSID;

	BYTE                                m_Key[4][32];
	ULONG                               m_cbKey[4];
	ULONGLONG                           m_KeyRSC[4];
	ULONG                               m_KeyIndex[4];
	BYTE                                m_KeyUsage[4];

	UINT                                m_NumDataEndpts;
	UINT                                m_RegCode;
	UCHAR                               m_TxPwr;

	WLAN_STA_CONFIG                     m_Config;

	NDIS_DEVICE_POWER_STATE            m_PowerState;
	NDIS_802_11_POWER_MODE             m_80211_PowerMode;
	ULONG                              m_ResumeWlanState;
	DWORD                              m_LastSysState;

	HANDLE                             m_PowerChangeEvent;

	A_UINT32						   m_TargetId;
	    
public:
	CAR6KMini();
	~CAR6KMini();
	void				Init();

#ifdef NDIS_BUS_DRIVER
    PVOID               m_pBusDriverHandle;
#endif
    // NDIS version used
	BYTE                                m_NdisDriverMajorVersion;
	BYTE                                m_NdisDriverMinorVersion;

	NDIS_STATUS         Initialize(IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE pConfigHandle);
	void                Halt();
	BOOLEAN             CheckForHang();
	NDIS_STATUS         Reset(OUT PBOOLEAN pAddressingReset);
	virtual void        SendPackets(IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets);
	virtual void        ReturnPacket(IN PNDIS_PACKET Packet);
	virtual NDIS_STATUS SetInformation(IN NDIS_OID Oid, IN  PVOID Buffer, IN ULONG cbBuffer, OUT PULONG pcbRead, OUT PULONG pcbNeeded);
	virtual NDIS_STATUS QueryInformation(IN NDIS_OID Oid, OUT PVOID Buffer, IN ULONG cbBuffer, OUT PULONG pcbWritten, OUT PULONG pcbNeeded);

	// OID_GEN Query Handlers

	virtual PNDIS_OID             GetSupportedOidList(OUT PNDIS_OID pOidBuffer, IN OUT PULONG pMaxOidsToAddToBuffer, IN OUT PULONG pTotalNumberOfSupportedOids);
	virtual ULONG                 GetGenVendorDriverVersion();
	virtual ULONG                 GetGenMacOptions();
	virtual NDIS_HARDWARE_STATUS  GetGenHardwareStatus();
	virtual NDIS_MEDIA_STATE      GetGenMediaConnectStatus();
	virtual ULONG                 GetGenLinkSpeed();
	virtual ULONG                 GetGenTransmitBufferSpace();
	virtual ULONG                 GetGenReceiveBufferSpace();
	virtual ULONG                 GetGenTransmitBlockSize();
	virtual ULONG                 GetGenReceiveBlockSize();
	virtual ULONG                 GetGenVendorId();
	virtual const char *          GetGenVendorDescription();
	virtual USHORT                GetGenDriverVersion();
	virtual ULONG		      	  GetSupportedPacketTypes();
	virtual ULONG                 GetGenXmitOk();
	virtual ULONG                 GetGenRcvOk();
	virtual ULONG                 GetGenXmitError();
	virtual ULONG                 GetGenRcvError();
	virtual ULONG                 GetGenRcvNoBuffer();
	virtual void                  GetPnpCapabilities(NDIS_PNP_CAPABILITIES *);
	virtual NDIS_STATUS           QueryPnpPower(NDIS_DEVICE_POWER_STATE *);
    

	// OID_802_3 Query Handlers
	virtual BYTE *                Get802_3PermanentAddress();
	virtual BYTE *                Get802_3CurrentAddress();
	virtual ULONG                 Get802_3MacOptions();
	virtual ULONG                 Get802_3RcvErrorAlignment();
	virtual ULONG                 Get802_3XmitOneCollision();
	virtual ULONG                 Get802_3XmitMoreCollision();

	// OID_802_11 Query Handlers
	virtual NDIS_STATUS           Get802_11AssociatedAPBSSID(OUT NDIS_802_11_MAC_ADDRESS *);
	virtual void                  Get802_11SSID(OUT NDIS_802_11_SSID *);
	virtual void                  Get802_11NetworkTypesSupported(OUT NDIS_802_11_NETWORK_TYPE **, OUT PULONG pNumTypes);
	virtual void                  Get802_11NetworkTypeInUse(OUT PNDIS_802_11_NETWORK_TYPE);
	virtual NDIS_STATUS           Get802_11TxPowerLevel(OUT NDIS_802_11_TX_POWER_LEVEL *);
	virtual NDIS_STATUS           Get802_11RSSI(OUT NDIS_802_11_RSSI *);
	virtual NDIS_STATUS           Get802_11RSSITrigger(OUT NDIS_802_11_RSSI *);
	virtual void                  Get802_11InfrastructureMode(OUT NDIS_802_11_NETWORK_INFRASTRUCTURE *);
	virtual NDIS_STATUS           Get802_11FragmentationThreshold(OUT NDIS_802_11_FRAGMENTATION_THRESHOLD *pThreshold);
	virtual NDIS_STATUS           Get802_11RTSThreshold(OUT NDIS_802_11_RTS_THRESHOLD *pThreshold);
	virtual NDIS_STATUS           Get802_11NumberOfAntennas(OUT ULONG *pNumberOfAntennas);
	virtual NDIS_STATUS           Get802_11RxAntennaSelected(OUT NDIS_802_11_ANTENNA *pAntenna);
	virtual NDIS_STATUS           Get802_11TxAntennaSelected(OUT NDIS_802_11_ANTENNA *pAntenna);
	virtual void                  Get802_11SupportedRates(OUT BYTE *Rates);
	virtual NDIS_STATUS           Get802_11DesiredRates(OUT NDIS_802_11_RATES *Rates);
	virtual void                  Get802_11Configuration(OUT PNDIS_802_11_CONFIGURATION pConfiguration);
	virtual NDIS_STATUS           Get802_11Statistics(OUT PNDIS_802_11_STATISTICS pStatistics);
	virtual NDIS_STATUS           Get802_11PowerMode(OUT PNDIS_802_11_POWER_MODE pPowerMode);
	virtual void                  Get802_11BSSIDList(OUT PNDIS_802_11_BSSID_LIST_EX pList, ULONG cbBuffer, PULONG pcbNeeded);
//#ifdef SUPPORT_WPA2
//	virtual void                  Get802_11AuthenticationMode(OUT NDIS_802_11_AUTHENTICATION_MODE_WPA2 *pMode);
//#else
	virtual void                  Get802_11AuthenticationMode(OUT NDIS_802_11_AUTHENTICATION_MODE *pMode);
//#endif
	virtual NDIS_STATUS           Get802_11PrivacyFilter(OUT PNDIS_802_11_PRIVACY_FILTER pFilter);
	virtual void                  Get802_11EncryptionStatus(OUT PNDIS_802_11_ENCRYPTION_STATUS pStatus);
	virtual NDIS_STATUS           Get802_11AssociationInformation(OUT PNDIS_802_11_ASSOCIATION_INFORMATION pInfo, ULONG cbBuffer, PULONG pcbNeeded);
#ifdef SUPPORT_WPA2
	virtual NDIS_STATUS           Get802_11PMKID(OUT NDIS_802_11_PMKID *pPMKID, IN  ULONG cbBuffer, OUT ULONG *pcbNeeded);
	virtual NDIS_STATUS           Get802_11Capability(OUT NDIS_802_11_CAPABILITY *pCap, IN ULONG cbBuffer, OUT ULONG *pcbNeeded);
#endif
	A_STATUS                      ar6000_get_target_stats(void);
	// OID_802_11 Set Handlers
	virtual NDIS_STATUS           SetPnpPower(NDIS_DEVICE_POWER_STATE *);
    
	virtual NDIS_STATUS           Set802_11AssociatedAPBSSID(IN NDIS_802_11_MAC_ADDRESS *);
	virtual NDIS_STATUS           Set802_11SSID(IN NDIS_802_11_SSID *);
	virtual NDIS_STATUS           Set802_11NetworkTypeInUse(IN NDIS_802_11_NETWORK_TYPE);
	virtual NDIS_STATUS           Set802_11TxPowerLevel(NDIS_802_11_TX_POWER_LEVEL);
	virtual NDIS_STATUS           Set802_11RSSITrigger(NDIS_802_11_RSSI);
	virtual NDIS_STATUS           Set802_11InfrastructureMode(NDIS_802_11_NETWORK_INFRASTRUCTURE);
	virtual NDIS_STATUS           Set802_11FragmentationThreshold(NDIS_802_11_FRAGMENTATION_THRESHOLD);
	virtual NDIS_STATUS           Set802_11RTSThreshold(NDIS_802_11_RTS_THRESHOLD);
	virtual NDIS_STATUS           Set802_11RxAntennaSelected(ULONG Antenna);
	virtual NDIS_STATUS           Set802_11TxAntennaSelected(ULONG Antenna);
	virtual NDIS_STATUS           Set802_11DesiredRates(NDIS_802_11_RATES *Rates);
	virtual NDIS_STATUS           Set802_11Configuration(IN NDIS_802_11_CONFIGURATION *pConfiguration);
	virtual NDIS_STATUS           Set802_11Disassociate();
	virtual NDIS_STATUS           Set802_11PowerMode(IN NDIS_802_11_POWER_MODE PowerMode);
	virtual NDIS_STATUS           Set802_11BSSIDListScan();
	virtual NDIS_STATUS           Set802_11PrivacyFilter(IN NDIS_802_11_PRIVACY_FILTER Filter);
	virtual NDIS_STATUS           Set802_11ReloadDefaults(IN NDIS_802_11_RELOAD_DEFAULTS);



//#ifdef SUPPORT_WPA2
//	virtual NDIS_STATUS           Set802_11AuthenticationMode(IN NDIS_802_11_AUTHENTICATION_MODE_WPA2 Mode);
//#else
	virtual NDIS_STATUS           Set802_11AuthenticationMode(IN NDIS_802_11_AUTHENTICATION_MODE Mode);
//#endif
	virtual NDIS_STATUS           Set802_11EncryptionStatus(IN NDIS_802_11_ENCRYPTION_STATUS EncryptionStatus);
	virtual NDIS_STATUS           Set802_11AddWEP(IN NDIS_802_11_WEP *pWEP);
	virtual NDIS_STATUS           Set802_11RemoveWEP(IN NDIS_802_11_KEY_INDEX);
	virtual NDIS_STATUS           Set802_11AddKey(IN NDIS_802_11_KEY *);
	virtual NDIS_STATUS           Set802_11RemoveKey(IN NDIS_802_11_REMOVE_KEY *);
	virtual NDIS_STATUS           Set802_11AssociationInformation(IN NDIS_802_11_ASSOCIATION_INFORMATION *pInfo, ULONG cbInfo);
#ifdef SUPPORT_WPA2
	virtual NDIS_STATUS           Set802_11PMKID(OUT NDIS_802_11_PMKID* pPMKID, IN  ULONG cbBuffer);
#endif
	virtual NDIS_STATUS           Set802_11Test(IN NDIS_802_11_TEST *, IN ULONG cbBuffer);
    
	//OID_CAR6K query Handlers
	NDIS_STATUS                   GetPnpPower(ULONG *);
	NDIS_STATUS                   GetResumeWlanState(ULONG *);
	NDIS_STATUS                   GetFirmwareVersion(ULONG *);

	//OID_CAR6K Set Handlers
	NDIS_STATUS                   SetCAr6k802_11AuthAlg(ULONG);
	NDIS_STATUS                   SetResumeWlanState(ULONG);

	NDIS_STATUS SetCAr6kBmiDone(PVOID);
	NDIS_STATUS SetCAr6kBmiReadMemory(BMI_READ_MEMORY_PARAM *);
	NDIS_STATUS SetCAr6kBmiWriteMemory(BMI_WRITE_MEMORY_PARAM *);
	NDIS_STATUS SetCAr6kBmiExecute(BMI_EXECUTE_PARAM *);
	NDIS_STATUS SetCAr6kBmiSetAppStart(BMI_SET_APP_START_PARAM *);
	NDIS_STATUS SetCAr6kBmiReadSocRegister(BMI_READ_SOC_REG_PARAM *);
	NDIS_STATUS SetCAr6kBmiWriteSocRegister(BMI_WRITE_SOC_REG_PARAM *);

#ifdef HTC_RAW_INTERFACE

	NDIS_STATUS SetCAr6kHtcRawOpen(void);
	NDIS_STATUS SetCAr6kHtcRawClose(void);
	NDIS_STATUS SetCAr6kHtcRawRead(HTC_RAW_READ_PARAM *);
	NDIS_STATUS SetCAr6kHtcRawWrite(HTC_RAW_WRITE_PARAM *);

#endif

	void        TargetAvailableEventHandler(HTC_TARGET *pHTCTarget, HIF_DEVICE *pHIFDevice);
	void        TargetUnavailableEventHandler(HTC_TARGET *pHTCTarget);
	A_STATUS    RegisterEndpointEventHandlers(HTC_ENDPOINT_ID endPointId);
	A_STATUS    StartEndpoints();
	void        StopEndpoints();
	A_STATUS    configTargetParams();
	A_UINT32    getResetPowerState();

// Parse Registry
	NDIS_STATUS           ParseRegistryParameters(NDIS_HANDLE ConfigHandle, WLAN_STA_CONFIG *pConfig);
    A_STATUS              configRegistryParameters();
	void                  ResetPowerWorkItem();
	void				  isMcForUs(MAC_ADDRESS *pAddr, BOOL *mcForUs);

private:
	NDIS_STATUS           TransmitBufferListAllocate();
	PAR6K_TRANSMIT_BUFFER TransmitBufferListRemoveHead();
	void                  TransmitBufferListInsertHead(PAR6K_TRANSMIT_BUFFER pBuffer);
	PNDIS_PACKET          TransmitNdisPacketListRemoveHead();
	void                  TransmitNdisPacketListInsertTail(PNDIS_PACKET pBuffer);
	NDIS_STATUS           TransmitBufferBuild(PAR6K_TRANSMIT_BUFFER pBuffer, PNDIS_PACKET pPacket);
	void                  SendNdisPacket(PNDIS_PACKET, PAR6K_TRANSMIT_BUFFER);
public:
	void                  IndicateReceivePackets();

public:
	void      HTCBufferSentEvent(PVOID cookie);
	void      HTCControlSendCompleted(PVOID cookie);
	void      HTCDataSendCompleted(PVOID cookie);
	void      ReceiveWMIControlPacket(HTC_EVENT_INFO  *evInfo);
	void      ReceiveWMIDataPacket(HTC_EVENT_INFO  *evInfo);
	void      AllocateHTCPacketBuffers(HTC_ENDPOINT_ID  eid, UINT numBuffers);

	// WMI Wrappers
	NDIS_STATUS SendWMIConnectCommand(IN NDIS_802_11_SSID *SSID);
	NDIS_STATUS SendWMIDisconnectCommand();

	// WMI Callback functions
	void      WMILinkQualityIndication(IN BYTE RSSI);
	void      WMIBitrateIndication(IN ULONG BitrateKbps);
	void      WMIChannelListIndication(IN USHORT *pChannelList, IN BYTE numChannels);
	void      WMIReadyIndication(IN PBYTE pMacAddress);
	void      WMIConnectIndication(IN USHORT Channel, IN PBYTE PeerBSSID, 
		                           IN USHORT listenInterval, IN BYTE assocReqLen, 
								   IN BYTE assocRespLen, IN PBYTE assocInfo, IN BYTE beaconIeLen);
	void      WMIDisconnectIndication();
	A_STATUS  WMISendControlPacket(IN PVOID osbuf, IN HTC_ENDPOINT_ID endPointId);

	void      WMIBSSIDInfoAdd(IN  bss_t *pWmiBss);

	void      WMIDsetOpenReq(IN UINT, IN UINT, IN UINT, IN UINT);
	void      WMIDsetDataReq(IN UINT, IN UINT, IN UINT, IN UINT, IN UINT, IN UINT);
	void      WMISetNumDataEndpts(IN UINT); 
	void      WMIRegDomainEvent(IN UINT);
	void      WMINeighborReportEvent(IN UINT, IN WMI_NEIGHBOR_INFO *info);
	void      WMITxPwr(IN UCHAR);
	void      WMIMicErrEvent(A_UINT8 keyid, A_BOOL isMcast);
	void	  WMITargetStatsEvent(WMI_TARGET_STATS *);
};


⌨️ 快捷键说明

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