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

📄 wlan_phoenix.h

📁 利用PIC单片机来驱动WLAN卡
💻 H
字号:
//************************************************************************************************
//* WLAN PHOENIX DRIVER
//* LAST UPDATED 08/09/2008
//* FIRMWARE BY FRED EADY FOR NUTS AND VOLTS MAGAZINE's DESIGN CYCLE
//* CHANGES/ADDITIONS
//************************************************************************************************

//* COMMAND/STATUS
#define  Command_Register		0x0000	// Define Compact Flash IO registers
#define  Param0_Register		0x0002
#define  Param1_Register		0x0004
#define  Param2_Register		0x0006
#define  Status_Register		0x0008
#define  Resp0_Register			0x000A
#define  Resp1_Register			0x000C
#define  Resp2_Register			0x000E
//* FID MANAGEMENT
#define  InfoFID_Register		0x0010
#define  RxFID_Register			0x0020
#define  AllocFID_Register 		0x0022
#define  TxComplFID_Register	0x0024
//* BAP0
#define  BAP0					0			
#define  Select0_Register		0x0018
#define  Offset0_Register 		0x001C
#define  Data0_Register 		0x0036
//* BAP1
#define  BAP1					1				
#define  Select1_Register		0x001A
#define  Offset1_Register 		0x001E
#define  Data1_Register 		0x0038
//* EVENT
#define  EvStat_Register		0x0030
#define  IntEn_Register			0x0032
#define  EvAck_Register			0x0034
//* HOST SOFTWARE
#define  SwSupport0_Register	0x0028
//* BIT MASKS
#define  CmdCode_Mask		    		0x003F
#define  CmdBusy_Bit_Mask				0x8000	
#define  EvStat_Tick_Bit_Mask			0x8000
#define  EvStat_WTErr_Bit_Mask			0x4000
#define  EvStat_InfDrop_Bit_Mask		0x2000
#define	 EvStat_Info_Bit_Mask			0x0080
#define  EvStat_DTIM_Bit_Mask			0x0020			
#define  EvStat_Cmd_Bit_Mask			0x0010
#define  EvStat_Alloc_Bit_Mask			0x0008
#define  EvStat_TxExc_Bit_Mask			0x0004
#define	 EvStat_Tx_Bit_Mask				0x0002
#define	 EvStat_Rx_Bit_Mask				0x0001

#define  Status_Result_Mask		0x7F00
#define  Status_CmdCode_Mask	0x003F
#define  BAP0Busy_Bit_Mask		0x8000		//busy bit in Offset0 register
#define  BAP0Err_Bit_Mask		0x4000		//Err bit in Offset0 register
#define  BAP1Busy_Bit_Mask		0x8000		//busy bit in Offset1 register
#define  BAP1Err_Bit_Mask		0x4000		//Err bit in Offset1 register
#define  AccessWrite_Mask		0x0100		//Write RID to MAC, in Access command
#define  TransmitReclaim_Mask	0x0100		//Transmit frame, with FID reclaim

//* COMMANDS
#define  Initialize_Cmd			0x0000		
#define  EnableMAC_Cmd			0x0001
#define  Disable_Cmd			0x0002
#define  Diagnose_Cmd			0x0003
#define  Allocate_Cmd 			0x000A
#define  Transmit_Cmd			0x000B
#define  TransmitReclaim_Cmd	0x010B	
#define  Inquire_Cmd			0x0011
#define  Access_Cmd				0x0021

//* RID CONFIGURATION RECORDS
#define  RID_cfgPortType					0xFC00
#define  RID_cfgPortType_Length				2
#define  RID_cfgPortType_IBSS				0		//sets IBSS or ad-hoc network operation
#define  RID_cfgPortType_Infrastructure		1		//sets BSS or infrastructure network operation

#define  RID_cfgOwnMACAddress				0xFC01	//our MAC address

#define  RID_cfgDesiredSSID					0xFC02	//the SSID of the BSS we want to join
#define  RID_DesiredSSID_Length				18		//word count of the DesiredSSID RID

#define  RID_cfgOwnChannel					0xFC03	//set the channel
#define  RID_cfgOwnChannel_Length			2

#define  RID_cfgOwnSSID						0xFC04	//set the SSID
#define  RID_cfgOwnSSID_Length				18

#define  RID_cfgMaxDataLength				0xFC07  //set maximum length of frame body data
#define	 RID_cfgMaxDataLength_Length		2
#define  RID_cfgMaxDataLength_Value			1500

#define  RID_cfgWEPDefaultKeyID				0xFC23	//which key will do encryption
#define  RID_cfgWEPDefaultKeyID_Length 		2
#define  RID_cfgWEPDefaultKeyID_Value0		0x0000	//encryption key0 
#define  RID_cfgWEPDefaultKeyID_Value1		0x0001	//encryption key1 
#define  RID_cfgWEPDefaultKeyID_Value2		0x0010	//encryption key2 
#define  RID_cfgWEPDefaultKeyID_Value3		0x0011	//encryption key3 

#define  RID_Default128Key_Length			8		//128-bit encryption with a 13-byte key
#define  RID_Default64Key_Length 			4		//64-bit encryption with a 5-byte key and a 24-bit IV

#define  RID_cfgDefaultKey0					0xFC24	//key bytes for key0
#define  RID_cfgDefaultKey1					0xFC25	//key bytes for key1
#define  RID_cfgDefaultKey2					0xFC26	//key bytes for key2
#define  RID_cfgDefaultKey3					0xFC27	//key bytes for key3

#define  RID_cfgWEPFlags					0xFC28	//turn WEP ON or OFF and decide how much to use IV
#define  RID_cfgWEPFlags_Length 			2
#define  RID_cfgWEPFlags_Value_ON			0x0001	//encryption/decryption enabled and IV reuse every frame
#define  RID_cfgWEPFlags_Value_OFF			0x0000	//encryption/decryption disabled

#define  RID_cfgAuthentication				0xFC2A	//choose Open System or Shared Key Authentication
#define  RID_cfgAuthentication_Length 		2
#define  RID_cfgAuthentication_Value_OS		0x0001	// Allow Open System authentication
#define  RID_cfgAuthentication_Value_SK		0x0002	// Allow Shared Key authentication
#define  RID_cfgAuthentication_Value_OK		0x0003	// Allow both Open System and Shared Key authentication

#define  RID_TxRateControl					0xFC84	//set transmission bit rates
#define  RID_TxRateControl_Length			2
#define  RID_TxRateControl_Value_1			0x0001	//1 Mbps 
#define  RID_TxRateControl_Value_2			0x0002	//2 Mbps 
#define  RID_TxRateControl_Value_55			0x0004	//5.5 Mbps 
#define  RID_TxRateControl_Value_11			0x0008	//11 Mbps
#define  RID_TxRateControl_Value_ALL		0x000F	//11 Mbps

#define  RID_ScanRequest					0xFCE1	// Request a host scan (check results with FD88 or FD89 ?)
#define  RID_ScanRequest_Length				3

#define  RID_HostScan						0xFCE5	// Request a host scan -- is supposed to return Info FID of InfoType F103 (but doesn't), might be
#define  RID_HostScan_Length  				4 			// able to specify a target SSID (but only documents using a zero-length string)
//* RID INFORMATION RECORDS
#define	 RID_STAIdentity					0xFD20	// Station Identity
#define  RID_PortStatus						0xFD40	// Request the current port status
#define  RID_PortStatus_Disabled			0x0001
#define  RID_PortStatus_Searching			0x0002
#define  RID_PortStatus_IBSS				0x0003
#define  RID_PortStatus_BSS					0x0004
#define  RID_PortStatus_OutofRange			0x0005

#define  RID_CurrentTxRate					0xFD44	// Request the current transmission bit rate
#define  RID_CurrentSSID					0xFD41	// Request the current SSID string
#define  RID_CurrentBSSID					0xFD42	// Request the current BSSID (MAC address format)

#define  RID_CommsQuality					0xFD43	// Request the current communications quality
#define  RID_CommsQuality_Length			4

#define  RID_AuthenticationAlgorithm		0xFD4D	// Check what authentication algorithms are supported
#define  RID_PrivacyOptionImplemented		0xFD4F	// Check whether privacy (WEP) is implemented
#define  RID_ScanResults					0xFD88		// Firmware-maintained scan table
#define  RID_HostScanResults				0xFD89
#define  RID_AuthenticationUsed				0xFD8A	// Ask what authentication algorithm is being used in the current association
#define	 RID_FWID							0xFFFF	// Request the Firmware Identifier

#define  Info_CommunicationTallies			0xF100	// Communication tallies
#define  Info_HostScanResults				0xF103	// HostScanResults
#define  Info_LinkStatus					0xF200	// Link Status
#define  Info_AssociationStatus				0xF201	// Association status


#define DEVICE_TUPLE		0x01
#define DEVICE_A_TUPLE		0x17
#define DEVICE_OC_TUPLE		0x1C
#define DEVICE_OA_TUPLE		0x1D
#define VERS_1_TUPLE		0x15  // TPL_CODE for CISTPL_VERS_1, which has an identification string
#define MANFID_TUPLE		0x20
#define FUNCID_TUPLE		0x21
#define FUNCE_TUPLE			0x22	// TPL_CODE for CISTPL_FUNCE, which can have the MAC address
#define CONFIG_TUPLE		0x1A	// TPL_CODE for CISTPL_CONFIG, COR
#define CFTABLE_ENTRY_TUPLE	0x1B
#define END_TUPLE			0xFF

//#define TransmitBuffers_Number		CFPRISM_NUMBER_XMIT_BUFS // Number of TransmitBuffers to pre-allocate (MUST match TransmitBuffers_Mask)
//#define TransmitBuffers_Mask			0x8000	// Set the bit corresponding to the highest buffer number (MUST MATCH TransmitBuffers_Number)

//static char NoPacketBuffer;	// Timer to count how many times _pktentry in ReadRxFrame() can't store a received frame

#define ad802_11Header		0						// Use transmit frame structure 802.11 header (otherwise use 802.3 header)

⌨️ 快捷键说明

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