| /* |
| * public_commands.h |
| * |
| * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * * Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in |
| * the documentation and/or other materials provided with the |
| * distribution. |
| * * Neither the name Texas Instruments nor the names of its |
| * contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| /********************************************************************************************************************** |
| |
| FILENAME: public_commands.h |
| |
| DESCRIPTION: Command definitions shared with host |
| |
| |
| |
| ***********************************************************************************************************************/ |
| #ifndef PUBLIC_COMMANDS_H |
| #define PUBLIC_COMMANDS_H |
| |
| |
| #include "public_types.h" |
| #include "public_radio.h" |
| |
| typedef enum |
| { |
| CMD_INTERROGATE = 1, /*use this to read information elements*/ |
| CMD_CONFIGURE = 2, /*use this to write information elements*/ |
| CMD_ENABLE_RX = 3, |
| CMD_ENABLE_TX = 4, |
| CMD_DISABLE_RX = 5, |
| CMD_DISABLE_TX = 6, |
| CMD_SCAN = 8, |
| CMD_STOP_SCAN = 9, |
| |
| CMD_START_JOIN = 11, |
| CMD_SET_KEYS = 12, |
| CMD_READ_MEMORY = 13, |
| CMD_WRITE_MEMORY = 14, |
| |
| CMD_SET_TEMPLATE = 19, |
| CMD_TEST = 23, |
| |
| CMD_NOISE_HIST = 28, |
| |
| CMD_LNA_CONTROL = 32, |
| CMD_SET_BCN_MODE = 33, |
| |
| CMD_MEASUREMENT = 34, |
| CMD_STOP_MEASUREMENT = 35, |
| CMD_DISCONNECT = 36, |
| CMD_SET_PS_MODE = 37, |
| |
| CMD_CHANNEL_SWITCH = 38, |
| CMD_STOP_CHANNEL_SWICTH = 39, |
| |
| CMD_AP_DISCOVERY = 40, |
| CMD_STOP_AP_DISCOVERY = 41, |
| |
| CMD_SPS_SCAN = 42, |
| CMD_STOP_SPS_SCAN = 43, |
| |
| CMD_HEALTH_CHECK = 45, |
| CMD_DEBUG = 46, |
| CMD_TRIGGER_SCAN_TO = 47, |
| |
| CMD_CONNECTION_SCAN_CFG = 48, |
| CMD_CONNECTION_SCAN_SSID_CFG = 49, |
| CMD_START_PERIODIC_SCAN = 50, |
| CMD_STOP_PERIODIC_SCAN = 51, |
| CMD_SET_STA_STATE = 52, |
| |
| NUM_COMMANDS, |
| MAX_COMMAND_ID = 0xFFFF |
| } Command_enum; |
| |
| #ifdef HOST_COMPILE |
| typedef uint16 Command_e; |
| #else |
| typedef Command_enum Command_e; |
| #endif |
| |
| |
| #ifdef HOST_COMPILE |
| |
| #define CMD_MAILBOX_IDLE 0 |
| #define CMD_STATUS_SUCCESS 1 |
| #define CMD_STATUS_UNKNOWN_CMD 2 |
| #define CMD_STATUS_UNKNOWN_IE 3 |
| #define CMD_STATUS_REJECT_MEAS_SG_ACTIVE 11 |
| #define CMD_STATUS_RX_BUSY 13 |
| #define CMD_STATUS_INVALID_PARAM 14 |
| #define CMD_STATUS_TEMPLATE_TOO_LARGE 15 |
| #define CMD_STATUS_OUT_OF_MEMORY 16 |
| #define CMD_STATUS_STA_TABLE_FULL 17 |
| #define CMD_STATUS_RADIO_ERROR 18 |
| #define CMD_STATUS_WRONG_NESTING 19 |
| #define CMD_STATUS_TIMEOUT 21 /* Driver internal use.*/ |
| #define CMD_STATUS_FW_RESET 22 /* Driver internal use.*/ |
| #define MAX_COMMAND_STATUS MAX_POSITIVE16 |
| |
| #else |
| |
| typedef enum |
| { |
| CMD_MAILBOX_IDLE = 0, |
| CMD_STATUS_SUCCESS = 1, |
| CMD_STATUS_UNKNOWN_CMD = 2, |
| CMD_STATUS_UNKNOWN_IE = 3, |
| CMD_STATUS_REJECT_MEAS_SG_ACTIVE = 11, |
| CMD_STATUS_RX_BUSY = 13, |
| CMD_STATUS_INVALID_PARAM = 14, |
| CMD_STATUS_TEMPLATE_TOO_LARGE = 15, |
| CMD_STATUS_OUT_OF_MEMORY = 16, |
| CMD_STATUS_STA_TABLE_FULL = 17, |
| CMD_STATUS_RADIO_ERROR = 18, |
| CMD_STATUS_WRONG_NESTING = 19, |
| CMD_STATUS_TIMEOUT = 21, /* Driver internal use.*/ |
| CMD_STATUS_FW_RESET = 22, /* Driver internal use.*/ |
| MAX_COMMAND_STATUS = MAX_POSITIVE16 |
| } CommandStatus_enum; |
| |
| #endif |
| |
| #ifdef HOST_COMPILE |
| typedef uint16 CommandStatus_e; |
| #else |
| typedef CommandStatus_enum CommandStatus_e; |
| #endif |
| |
| #define MAX_CMD_PARAMS 610 |
| |
| #define DEBUG_INDICATOR 0x8000 |
| |
| typedef struct |
| { |
| Command_e cmdID; |
| CommandStatus_e cmdStatus; |
| uint8 parameters[MAX_CMD_PARAMS]; |
| } Command_t; |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_INTERROGATE |
| Desc: This command requests an information element from the WiLink. The |
| interface for this command is somewhat different from other commands |
| since the interface is bi-directional and asymmetric. |
| The host structure consists of the Command ID, a Command Status |
| (returned by WiLink) place holder, and the Information Element Heading |
| (ID and expected length). |
| The response to that command is a buffer of the information element's |
| actual values returned by the WiLink just after the command is issued. |
| The response to that command is a buffer of the information element's |
| actual values returned by the WiLink just after the command is issued. |
| Params: InfoElement_t - see below. |
| |
| |
| ******************************************************************************/ |
| /* |
| Description of InfoElement structure - defined in "public_infoele.h" |
| offset length source description |
| ====== ====== ====== =========== |
| 0 2 host Information Element ID - contains the ID of the requested |
| information element (refer to InfoElement_enum in |
| pblic_infoele.h). In response to this command, the WiLink |
| writes the requested information element to the response area |
| for the command mailbox. |
| 2 4 wilink Length - the length of the response (different for each IE |
| according to definitions in public_infoele.h). |
| 4 Length wilink IE payload according to definition in public_infoele.h. |
| */ |
| |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_CONFIGURE |
| Desc: This command configures an information element in the WiLink. |
| Params: InfoElement_t - see below. |
| |
| ******************************************************************************/ |
| /* |
| Description of InfoElement structure - defined in "public_infoele.h" |
| offset length source description |
| ====== ====== ====== =========== |
| 0 2 host Information Element ID - contains the ID of the requested |
| information element (refer to InfoElement_enum in |
| pblic_infoele.h). In response to this command, the WiLink |
| writes the requested information element to the response area |
| for the command mailbox. |
| 2 4 host Length - the length of the response (different for each IE |
| according to definitions in public_infoele.h). |
| 4 Length host IE payload according to definition in public_infoele.h. |
| */ |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_ENABLE_RX |
| Desc: This command enables the normal reception of frames. |
| Params: Channel Number - this field indicates the radio channel on which to |
| receive data. This parameter also sets the channel on |
| which to transmit. The last channel number used, |
| regardless of the order in which the ENABLE_RX and |
| ENABLE_TX commands are issued, is the channel number |
| for both RX and TX. This command must be issued after |
| the host has set all necessary configuration elements |
| appropriately. |
| |
| ******************************************************************************/ |
| |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_ENABLE_TX |
| Desc: This command enables the normal transmission of frames. |
| Params: Channel Number - this field indicates the radio channel on which to |
| transmit data. This parameter also sets the channel on |
| which to receive. The last channel number used, |
| regardless of the order in which the ENABLE_RX and |
| ENABLE_TX commands are issued, is the channel number |
| for both RX and TX. This command must be issued after |
| the host has set all necessary configuration elements |
| appropriately. |
| |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| |
| ID: CMD_DISABLE_RX |
| Desc: This command disables the normal reception of packets over the |
| Baseband interface. |
| Params: None |
| |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| |
| ID: CMD_DISABLE_TX |
| Desc: This command disables the normal transmission of frames. |
| Params: None. |
| |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| |
| ID: CMD_SCAN |
| Desc: This command instructs the WiLink to scan for BSS/IBSSs. The host |
| may perform either an active scan or a passive scan. During an active |
| scan, the WiLink transmits a probe request on the specified channel(s) |
| and then listens for beacon/probe responses. During a passive scan, the |
| WiLink monitors the specified channel(s) for beacons. |
| The WiLink sends SCAN_COMPLETE event to notify the host when it has |
| completed a scan. |
| Params: ScanParameters_t - see below |
| |
| ******************************************************************************/ |
| /* |
| Offset Length Definition |
| 0 8 RX filters for Scan (refer to ACXRxConfigStruct) |
| 8 2 Scan options (Band select, Voice mode and Scan type = Active/Passive) |
| 10 1 NumChannels |
| 11 1 Number of Probe requests (used for Active scan) |
| 12 2 Probe request rate & modulation |
| 14 1 AC trigger (for Voice mode only) |
| 15 1 SSID length |
| 16 32 SSID string (Null terminated) |
| 48 2 Channel [0] ScanMinDuration |
| 50 2 Channel [0] ScanMaxDuration |
| 52 6 Channel [0] BSSID (4 bytes LOW and 2 bytes HIGH) |
| 58 1 Channel [0].bit0-3: Early Termination count. Bit 4-5: Condition |
| 59 1 Channel [0] TX power level for Scan (0 means do not change - other values:1-5) |
| 60 1 Channel [0] Channel |
| 61 3 Channel [0] Reserved |
| 64-404 340 Optional Channel [1] - Channel [15] - same format as Channel [0] fields above. |
| */ |
| |
| /* Defines for Rx "ConfigOptions".*/ |
| /* Only bits 2-10 can be configured by the Driver".*/ |
| #define CFG_RX_SERIAL BIT_0 /* 0 = use parallel interface, 1 = use serial interface from ACX101- not valid.*/ |
| #define CFG_RX_RAW BIT_1 /* 1 = write all data from baseband to frame buffer including PHY header.*/ |
| #define CFG_RX_FCS BIT_2 /* 1 = write FCS to end of frame in memory, 0 = do not write FCS to memory.*/ |
| #define CFG_RX_ALL_GOOD BIT_3 /* promiscuous mode, receive all good frames.*/ |
| #define CFG_UNI_FILTER_EN BIT_4 /* local MAC address filter enable.*/ |
| #define CFG_BSSID_FILTER_EN BIT_5 /* BSSID filter enable.*/ |
| #define CFG_MC_FILTER_EN BIT_6 /* 0 = receive all multicast, 1 = use one or both multicast address filters.*/ |
| #define CFG_MC_ADDR0_EN BIT_7 /* 1 = receive frames from mc_addr0, 0 = do not use this filter.*/ |
| #define CFG_MC_ADDR1_EN BIT_8 /* 1 = receive frames from mc_addr1, 0 = do not use this filter .*/ |
| #define CFG_BC_REJECT_EN BIT_9 /* 0 = receive all broadcast, 1 = filter all broadcast.*/ |
| #define CFG_SSID_FILTER_EN BIT_10 /* SSID Filter Enable.*/ |
| #define CFG_RX_INT_FCS_ERROR BIT_11 /* 1 = give rx complete interrupt for FCS errors.*/ |
| #define CFG_RX_INT_ENCRYPTED BIT_12 /* 1 = only give rx header interrupt if frame is encrypted.*/ |
| #define CFG_RX_WR_RX_STATUS BIT_13 /* 0 = do not write three status words, 1 = write three receive status words to top of rx'd MPDU.*/ |
| #define CFG_RX_FILTER_NULTI BIT_14 /* 1 = filter multicast/broadcast frame if SA matchs local MAC addr->.*/ |
| #define CFG_RX_RESERVE BIT_15 /* reserve.*/ |
| #define CFG_RX_TIMESTAMP_TSF BIT_16 /* 1 = sample frame's' arrival time in 32bits TSF, 0 = write it in MAC time stamp.*/ |
| |
| |
| /* Defines for Rx "FilterOptions".*/ |
| /* The rx filter enables control what type of receive frames will be rejected or received by the rx hardware*/ |
| /* 1 = frame is written to memory,*/ |
| /* 0 = not written to memory, rejected.*/ |
| #define CFG_RX_RSV_EN BIT_0 /* reserved types and subtypes.*/ |
| #define CFG_RX_RCTS_ACK BIT_1 /* rts, cts, ack frames.*/ |
| #define CFG_RX_PRSP_EN BIT_2 /* probe response.*/ |
| #define CFG_RX_PREQ_EN BIT_3 /* probe request.*/ |
| #define CFG_RX_MGMT_EN BIT_4 /* type = management.*/ |
| #define CFG_RX_FCS_ERROR BIT_5 /* frames with FCS errors.*/ |
| #define CFG_RX_DATA_EN BIT_6 /* type = data.*/ |
| #define CFG_RX_CTL_EN BIT_7 /* type = control.*/ |
| #define CFG_RX_CF_EN BIT_8 /* contention free frames.*/ |
| #define CFG_RX_BCN_EN BIT_9 /* beacons.*/ |
| #define CFG_RX_AUTH_EN BIT_10 /* authentication, deauthentication.*/ |
| #define CFG_RX_ASSOC_EN BIT_11 /* association related frames (all 5 subtypes – assoc req/resp,*/ |
| |
| |
| typedef struct |
| { |
| uint32 ConfigOptions; |
| uint32 FilterOptions; |
| } ACXRxConfigStruct; |
| |
| |
| /* ScanOptions bit mask field.*/ |
| #define SCAN_ACTIVE 0 |
| #define SCAN_PASSIVE 1 /* 1 = passive scan, 0 = active scan*/ |
| /* #define SCAN_5GHZ_BAND 2 */ /* 1 = scan channel list in 5 Ghz band, 0 = scan channel list in 2.4 Ghz band*/ |
| #define TRIGGERED_SCAN 2 /* 1 = Triggered scan, 0 = Normal scan*/ |
| #define SCAN_PRIORITY_HIGH 4 /* 1 = High priority scan, 0 = Low priority scan*/ |
| |
| typedef uint8 TidTrigger_t; |
| |
| /* General scan parameters.*/ |
| typedef struct |
| { |
| ACXRxConfigStruct rxCfg; /* Rx filter to be used for each channel scan. */ |
| /* The BSSID filter enable will be set (by the */ |
| /* scan process) to ON for a specific channel if*/ |
| /* the BSSID of this channel is a unicast address.*/ |
| /* Otherwise it will be set to OFF (Refer to */ |
| /* ACXRxConfig IE in public_infoele.h).*/ |
| |
| uint16 scanOptions; /* This bitwise field indicates the scan options. */ |
| /* Bits [4:15] are reserved. */ |
| /* Bits [0:3] are defined as follows: */ |
| /* Scan Type (bit 0) - When this bit is set, the */ |
| /* WiLink performs a passive scan. When this bit*/ |
| /* is cleared, the WiLink performs an active scan. */ |
| /* Band Select (bit 1) - When this bit is set, the*/ |
| /* WiLink scans the specified channels in the */ |
| /* 5GHz band. When this bit is cleared, the */ |
| /* WiLink scans the specified channels in the */ |
| /* 2.4GHz band. */ |
| /* Voice mode (bit 2) - When this bit is set, */ |
| /* the request is for a voice scan. When this bit*/ |
| /* is cleared, the request is for a normal scan. */ |
| /* Scan priority (bit 3) - When this bit is set, */ |
| /* the request is for a high priority scan. When*/ |
| /* this bit is cleared, the request is for a low*/ |
| /* priority scan.*/ |
| |
| uint8 numChannels; /* Number of scan channels in the list (minimum is*/ |
| /* 1, maximum is 30).*/ |
| |
| uint8 numOfProbRqst; /* This field indicates the number of probe */ |
| /* requests to send per channel, in active scan. */ |
| |
| EHwRateBitFiled txdRateSet; /* This EHwRateBitFiled format field specifies the rate and */ |
| /* modulation to transmit the probe request during*/ |
| /* an active scan. It is not used for passive scans.*/ |
| |
| TidTrigger_t tidTrigger; /* used for TidTriggered scan only.*/ |
| |
| uint8 ssidLength; /* This field specifies the size of the SSID, */ |
| /* which can be up to 32 bytes long. If this field*/ |
| /* equals to zero, SSID filter is not applied. */ |
| |
| uint8 padding1[2]; /* in order to align */ |
| |
| |
| uint32 ssidStr[8]; /* This field specifies the SSID packets from that*/ |
| /* are relevant for the Scan result. The WiLink*/ |
| /* uses this information to filter beacon, probe*/ |
| /* response frames (if the SSID length field of */ |
| /* this command structure is not zero) */ |
| |
| RadioBand_e band; /* Band to scan */ |
| |
| uint8 useSsidList; /* Whether to use SSID list (configured seperately) |
| when transmitting probe-requests */ |
| |
| uint8 scanTag; /* Scan results tag */ |
| |
| uint8 padding2; /* in order to align */ |
| |
| } BasicScanParameters_t; |
| |
| |
| |
| #define SCAN_ET_COND_MASK 0x30 |
| #define SCAN_ET_COUNT_MASK 0x0F |
| |
| #define SCAN_MAX_NUM_OF_CHANNELS 24 |
| |
| /* Early Termination condition (bits 4-5) - This field can have one of the following */ |
| /* values (note that bits 0-3 indicates Early Termination count): */ |
| typedef enum |
| { |
| ET_COND_DISABLE = 0x00, /* Disable - No early termination condition.*/ |
| |
| ET_COND_BEACON = 0x10, /* Beacon only. When this value is selected, the */ |
| /* Early Termination count field specifies the */ |
| /* maximum number of beacons to collect before */ |
| /* ending a scan. */ |
| |
| ET_COND_PROBE_RESP = 0x20, /* Probe responses only. When this value is */ |
| /* selected, the Early Termination count field */ |
| /* specifies the maximum number of probe responses*/ |
| /* to collect before ending a scan. */ |
| |
| ET_COND_BEACON_PROBE_RESP = 0x30,/* Beacon/probe response. When this value is */ |
| /* selected, the Early Termination count field */ |
| /* specifies the maximum number of beacons or probe*/ |
| /* responses to collect before ending a scan. */ |
| |
| ET_COND_INVALID = 0xFF |
| } ETCondition_enum; |
| |
| #ifdef HOST_COMPILE |
| typedef uint8 ETCondition_e; |
| #else |
| typedef ETCondition_enum ETCondition_e; |
| #endif |
| |
| |
| typedef uint8 ETCondCount_t; |
| |
| |
| |
| #define PROCESS_SCAN_IS_HIGH(pScanParameters) ((pScanParameters)->basicScanParameters.scanOptions & SCAN_PRIORITY_HIGH) |
| #define PROCESS_SCAN_IS_LOW(pScanParameters) ((PROCESS_SCAN_IS_HIGH(pScanParameters)) == 0) |
| |
| |
| /* Per-Channel scan parameters.*/ |
| typedef struct |
| { |
| |
| uint32 scanMinDuration; /* For active scans, this field specifies the */ |
| /* minimum amount of time, in time units (TUs), */ |
| /* to wait for a frame on a channel. This */ |
| /* parameter is not used for passive scans. The*/ |
| /* value can range from 0 to 65535 TUs */ |
| /* (67.1 seconds). */ |
| |
| uint32 scanMaxDuration; /* For active scans, this field specifies the */ |
| /* maximum amount of time, in time units (TUs), */ |
| /* to wait for a probe response on a channel.*/ |
| /* For passive scans, this field specifies the */ |
| /* amount of time, in time units (TUs), to listen*/ |
| /* on a channel. The value can range from 0 to */ |
| /* 65535 TUs (67.1 seconds). */ |
| |
| |
| uint32 bssIdL; /* 32 LSBits of BSSID of the AP to scan for. */ |
| /* If scanning on this channel any BSSID, this */ |
| /* field shall be set to broadcast BSSID. */ |
| |
| uint16 bssIdH; /* 16 MSBits of BSSID of the AP to scan for.*/ |
| |
| ETCondCount_t ETCondCount; /* bit 0-3: Early Termination count - This field */ |
| /* defines the maximum number of beacons*/ |
| /* or probe responses or both (according*/ |
| /* to condition) to collect before ending*/ |
| /* a scan.*/ |
| |
| /* Bit 4-5: Early Termination Condition (refer */ |
| /* to ETCondition_enum).*/ |
| |
| uint8 txPowerAttenuation; /* TX power level to be used per channel scanned. */ |
| /* If 0, leave normal TX power level for this */ |
| /* channel. Range: 0 - 20 [dB].*/ |
| |
| Channel_e channel; /* Channel number to scan, valid range 0-255 */ |
| /* (1-14 for 802.11b). */ |
| |
| Bool_e dfsCandidate; /* FW internal use only! */ |
| Bool_e activityDetected; /* FW internal use only! */ |
| |
| uint8 padding[1]; /* for alignment to 32 bits boundry*/ |
| } BasicScanChannelParameters_t; |
| |
| /* The Scan command structure.*/ |
| typedef struct |
| { |
| BasicScanParameters_t basicScanParameters; /* refer to BasicScanParameters_t */ |
| /* definition*/ |
| |
| BasicScanChannelParameters_t basicScanChannelParameters[SCAN_MAX_NUM_OF_CHANNELS]; |
| } ScanParameters_t; |
| |
| /***************************************************************************** |
| |
| ID: CMD_TRIGGER_SCAN_TO |
| Desc: This Command will configure the enhanced Trigger Scan Timeout |
| information. |
| To use legacy Trigger Scan, configure the parameter to 0 |
| Params: None |
| |
| ******************************************************************************/ |
| typedef struct |
| { |
| uint32 slicedScanTimeOut; /* 0 - Split Scan Disable |
| any other value will represent the timeout |
| for each channel "mini scan" in uSec */ |
| }enhancedTriggerTO_t; |
| |
| |
| |
| /***************************************************************************** |
| |
| ID: CMD_STOP_SCAN |
| Desc: This command instructs the WiLink to terminate any scan in progress. |
| After processing this command, the WiLink returns to its previous state |
| (the state before the scan was started) and generates the SCAN_COMPLETE |
| information message. |
| Params: None |
| |
| ******************************************************************************/ |
| |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_START_JOIN |
| Desc: This command instructs the WiLink to either join a BSS or IBSS, or |
| start an IBSS. When the device has joined the BSS or IBSS the Join |
| Complete event is raised to the host. |
| Params: StartJoinRequest_t - see below. |
| |
| ******************************************************************************/ |
| |
| /* |
| * Join command control bit mask field: |
| */ |
| |
| |
| |
| /* Cyclic counter in range 1-7, advanced on every Join command to enable the FW distinguish |
| between connection sessions and drop obsolete Tx packets. */ |
| #define JOIN_CMD_CTRL_TX_SESSION (BIT_3 | BIT_2 | BIT_1) |
| |
| /* When this bit is set,the firmware will flush all Tx frames in the pipe and will not transmit them. */ |
| #define JOIN_CMD_CTRL_TX_FLUSH BIT_7 |
| |
| /* Offsets of the above fields */ |
| #define JOIN_CMD_CTRL_OFFSET_TX_SESSION 1 |
| #define JOIN_CMD_CTRL_OFFSET_TX_FLUSH 7 |
| |
| |
| typedef enum |
| { |
| BSS_TYPE_IBSS = 0, |
| BSS_TYPE_STA_BSS = 2, |
| BSS_TYPE_AP_BSS = 3, |
| MAX_BSS_TYPE = 0xFF |
| } BssType_enum; |
| |
| #ifdef HOST_COMPILE |
| typedef uint8 BSS_e; |
| #else |
| typedef BssType_enum BSS_e; |
| #endif |
| |
| #define MAX_SSID_STR_LEN_BYTESX4 8 |
| |
| typedef struct |
| { |
| uint32 bssIdL; /* This field indicates the 32 LSBits of the MAC*/ |
| /* address of the BSS to join. */ |
| /* Note: To correctly generate beacon frames, the */ |
| /* byte order of the BSS ID field must be */ |
| /* reversed. for example, if the MAC address of */ |
| /* the AP is 00 7E 99 11 22 33, program the BSS */ |
| /* ID field as 33 22 11 99 7E 00.*/ |
| |
| uint16 bssIdH; /* This field indicates the 16 MSBits of the MAC*/ |
| /* address of the BSS to join. */ |
| |
| uint16 beaconInterval;/* This field specifies the time between target */ |
| /* beacon transmission times (TBTTs), in time */ |
| /* units (TUs). Valid values are 1 to 1024.*/ |
| |
| ACXRxConfigStruct rxFilter; /* This filed is the Rx filter configuration for*/ |
| /* the device while connected to the BSS or IBSS.*/ |
| /* This setting is overridden in case of a */ |
| /* measurement or a scan activity and is reset */ |
| /* after these activities end.*/ |
| |
| EHwRateBitFiled basicRateSet; /* For 802.11b, this field specifies the control*/ |
| /* response frame rate for the BSS or IBSS (that*/ |
| /* is, the BSSBasicRateSet parameter in the */ |
| /* 802.11 Specification). The WiLink uses this */ |
| /* field to determine the rate at which to */ |
| /* transmit control frame responses (such as ACK */ |
| /* or CTS frames). */ |
| |
| uint8 dtimInterval; /* This field specifies the number of beacon */ |
| /* intervals between DTIM beacon frames. The host*/ |
| /* is only required to set this field when the */ |
| /* BSS Type is infrastructure BSS (STA) or AP. */ |
| /* For an independent BSS, the host should set */ |
| /* this field to 1.*/ |
| |
| BSS_e bssType; /* bits 0-2: This bitwise field specifies the type */ |
| /* of BSS to start or join (Refer to BssType_enum). */ |
| /* bit 4: Band - The radio band in which to join*/ |
| /* or start.*/ |
| /* 0 - 2.4GHz band */ |
| /* 1 - 5GHz band*/ |
| /* bits 3, 5-7: Reserved*/ |
| |
| Channel_e channelNumber; /* This field specifies the channel number of the*/ |
| /* BSS to join or start. Valid values are 1 to 14. */ |
| /* If the specified channel is not allowed in the*/ |
| /* regulatory domain, the command is rejected and*/ |
| /* the status code 0x0005 is returned in the */ |
| /* Command Status field.*/ |
| |
| uint8 ssidLength; /* This field specifies the size of the SSID, which*/ |
| /* can be up to 32 bytes long.*/ |
| |
| uint32 ssidStr[MAX_SSID_STR_LEN_BYTESX4]; |
| /* This field specifies the SSID of the BSS to */ |
| /* start or join. The WiLink uses this information*/ |
| /* to filter beacon, probe response and probe */ |
| /* request frames (if configured to do so in bit 10*/ |
| /* in the Receive Configuration field of the */ |
| /* ACXRxConfig information element). */ |
| /* It also uses this information to determine if a*/ |
| /* probe response should be transmitted in */ |
| /* response to a received probe request.*/ |
| |
| uint8 ctrl; /* Join command control field (refer to */ |
| /* the JOIN_CMD_CTRL... specified above).*/ |
| |
| uint8 reserved[3]; |
| } StartJoinRequest_t; |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_SET_KEYS |
| Desc: The host issues this command to manage the WEP key cache in the WiLink. |
| The host can issue this command during the configuration or operation |
| phase. |
| Params: SetKey_t - see below. |
| |
| ******************************************************************************/ |
| |
| #define NUM_ACCESS_CATEGORIES_COPY 4 |
| |
| #define MAX_KEY_SIZE 32 |
| |
| typedef enum |
| { |
| KEY_ADD_OR_REPLACE = 1, /* Add or replace a key in the WEP cache*/ |
| KEY_REMOVE = 2, /* Remove a key from the WEP cache*/ |
| KEY_SET_ID = 3, /* Set Key ID*/ |
| MAX_KEY_ACTION = MAX_POSITIVE16 /* force this enum to be uint16*/ |
| } KeyAction_enum; |
| |
| #ifdef HOST_COMPILE |
| typedef uint16 KeyAction_e; |
| #else |
| typedef KeyAction_enum KeyAction_e; |
| #endif |
| |
| |
| /* |
| Key Size+Key Data table (valid value) |
| KeyType_enum Key Type Valid Key Size Key Data Field Format |
| ============ ======== ============== ===================== |
| 0x00 WEP default key 5, 13, 29 Key Size bytes of key data |
| |
| 0x01 WEP key mapping key 5, 13, 29 Key Size bytes of key data |
| |
| 0x04 AES Group Key 16 16 bytes of key data |
| |
| 0x05 AES Pairwise Key 16 16 bytes of key data |
| |
| 0x0A TKIP and MIC Group Key 32 16 bytes of TKIP key data |
| 8 bytes of Rx MIC key data |
| 8 bytes of Tx MIC key data |
| |
| 0x0B TKIP and MIC Pairwise Key 32 16 bytes of TKIP key data |
| 8 bytes of Rx MIC key data |
| 8 bytes of Tx MIC key data |
| |
| 0x0C GEM and MIC Group Key 32 16 bytes of GEM key data |
| 16 bytes of MIC key data |
| |
| 0x0D GEM and MIC Pairwise Key 32 16 bytes of GEM key data |
| 16 bytes of MIC key data |
| |
| */ |
| |
| |
| typedef enum |
| { |
| CIPHER_SUITE_NONE = 0, |
| CIPHER_SUITE_WEP = 1, |
| CIPHER_SUITE_TKIP = 2, |
| CIPHER_SUITE_AES = 3, |
| CIPHER_SUITE_GEM = 4, |
| MAX_KEY_TYPE |
| } CipherSuite_enum; |
| |
| #ifdef HOST_COMPILE |
| typedef uint8 CipherSuite_e; |
| #else |
| typedef CipherSuite_enum CipherSuite_e; |
| #endif |
| |
| typedef enum |
| { |
| NO_KEY = 0, |
| KEY_SIZE_WEP_64 = 5, |
| KEY_SIZE_WEP_128 = 13, |
| KEY_SIZE_WEP_256 = 29, |
| KEY_SIZE_TKIP = MAX_KEY_SIZE |
| } KeySize_enum; /* WEP keysizes reflect 3 bytes appended from IV.*/ |
| |
| #ifdef HOST_COMPILE |
| typedef uint8 KeySize_e; |
| #else |
| typedef KeySize_enum KeySize_e; |
| #endif |
| |
| |
| typedef struct |
| { |
| uint8 addr[MAC_ADDR_SIZE]; /* This field specifies the MAC address of the station to*/ |
| /* add or remove from the WEP key cache. This field is */ |
| /* ignored if a WEP default key is being added or removed.*/ |
| |
| KeyAction_e action; /* This field specifies the action to be performed.*/ |
| /* Refer to KeyAction_enum.*/ |
| |
| uint16 reserved; |
| KeySize_e keySize; /* This field indicates the size of the key in bytes */ |
| /* being added. Valid values are listed in the Valid Key */ |
| /* Size column in the above "Key Size+Key Data table". */ |
| |
| CipherSuite_e type; /* This field indicates the type of key being added.*/ |
| /* Valid values are listed in the Value column in the*/ |
| /* KeyType_enum.*/ |
| |
| uint8 ssidProfile; /* This field indicates the SSID profile for which the */ |
| /* key is set.*/ |
| uint8 id; /* Key ID - For TKIP and AES key types, this field */ |
| /* indicates the value that should be inserted into the*/ |
| /* KeyID field of frames transmitted using this key */ |
| /* entry. For WEP default key types, this field indicates*/ |
| /* the ID of the key to add or remove. */ |
| /* For WEP key mapping key types, this field is ignored.*/ |
| /* Valid values for this field are 0 to 3.*/ |
| |
| uint8 reserved2[6]; |
| uint8 key[MAX_KEY_SIZE]; |
| /* This field holds the security key data to add to the*/ |
| /* STA table. The format of this field varies depending*/ |
| /* on the type field. The format of this field for each*/ |
| /* key type is described in the Key Data Field Format */ |
| /* column in the "Key Size+Key Data table", above.*/ |
| |
| uint16 AcSeqNum16[NUM_ACCESS_CATEGORIES_COPY]; |
| /* This field indicates the lower part of the PN\IV */ |
| /* sequence number that is used, for the four Access*/ |
| /* Categories.*/ |
| |
| uint32 AcSeqNum32[NUM_ACCESS_CATEGORIES_COPY]; |
| /* This field indicates the higher part of the PN\IV */ |
| /* sequence number that is used, for four Access */ |
| /* Categories.*/ |
| |
| } SetKey_t; |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_READ_MEMORY |
| Desc: The host issues this command to read the WiLink device |
| memory/registers. |
| Params: ReadWriteCommand_t - see below. |
| Note: The Base Band address has special handling (16 bits registers and |
| addresses). For more information, see the hardware specification. |
| |
| ******************************************************************************/ |
| /****************************************************************************** |
| |
| ID: CMD_WRITE_MEMORY |
| Desc: The host issues this command to write the WiLink device memory/registers. |
| Params: ReadWriteCommand_t - see below. |
| Note: The Base Band address has special handling (16 bits registers and |
| addresses). For more information, see the hardware specification. |
| |
| ******************************************************************************/ |
| |
| #define MAX_READ_SIZE 256 |
| |
| typedef struct |
| { |
| uint32 addr; /* The address of the memory to read from or write to.*/ |
| uint32 size; /* The amount of data in bytes to read from or write */ |
| /* to the WiLink device.*/ |
| uint8 value[MAX_READ_SIZE]; /* The actual value read from or written to the Wilink.*/ |
| /* The source of this field is the Host in WRITE */ |
| /* command or the Wilink in READ command.*/ |
| } ReadWriteCommand_t; |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_BEACON |
| Desc: This command specifies the contents of the beacon template stored in |
| the WiLink. |
| Params: PktTemplate_t - see below. |
| |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| |
| ID: CMD_PROBE_RESP |
| Desc: This command specifies the contents of the probe response template |
| stored in the WiLink. |
| Params: PktTemplate_t - see below. |
| |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| |
| ID: CMD_NULL_DATA |
| Desc: This command specifies the contents of the Null data template |
| stored in the WiLink. |
| Params: PktTemplate_t - see below. |
| |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| |
| ID: CMD_PROBE_REQ |
| Desc: This command specifies the contents of the probe request template |
| stored in the WiLink. |
| Params: PktTemplate_t - see below. |
| |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| |
| ID: CMD_PS_POLL |
| Desc: This command specifies the contents of the PS-poll template |
| stored in the WiLink. |
| Params: PktTemplate_t - see below. |
| |
| ******************************************************************************/ |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_QOS_NULL_DATA |
| Desc: This command specifies the contents of the QOS-Null template |
| stored in the WiLink. |
| Params: PktTemplate_t - see below. |
| |
| ******************************************************************************/ |
| /* Template command data structure.*/ |
| typedef enum |
| { |
| TEMPLATE_NULL_DATA = 0, |
| TEMPLATE_BEACON, |
| CFG_TEMPLATE_PROBE_REQ_2_4, |
| CFG_TEMPLATE_PROBE_REQ_5, |
| TEMPLATE_PROBE_RESPONSE, |
| TEMPLATE_QOS_NULL_DATA, |
| TEMPLATE_PS_POLL, |
| TEMPLATE_KLV, |
| TEMPLATE_DISCONNECT, |
| TEMPLATE_PROBE_REQ_2_4, /*for firmware internal use only*/ |
| TEMPLATE_PROBE_REQ_5, /*for firmware internal use only*/ |
| TEMPLATE_BAR, /*for firmware internal use only*/ |
| TEMPLATE_CTS, /* For CTS-to-self (FastCTS) mechanism for BT/WLAN coexistence (SoftGemini). */ |
| TEMPLATE_ARP_RSP, /* Template for Automatic ARP reply by FW */ |
| |
| MAX_NUM_OF_TEMPLATES = 0xff |
| } TemplateType_enum; |
| |
| #ifdef HOST_COMPILE |
| typedef uint8 TemplateType_e; |
| #else |
| typedef TemplateType_enum TemplateType_e; |
| #endif |
| |
| #define MAX_TEMPLATES_SIZE 252 /* according to max size of FW memblock */ |
| #define RATE_MASK_UNSPECIFIED 0 /* Let the FW select the rates mask internally */ |
| |
| /* |
| aflag definition: |
| bit field description |
| ========= =========== |
| 0 Truncate - If set, then attempts to send a frame stop when the total |
| valid per-rate attempts have been exhausted; |
| otherwise transmissions will continue at the lowest available rate |
| until the appropriate one of the Short Retry Limit, Long Retry Limit, |
| dot11MaxTransmitMsduLifetime, or MAX TX Life Time (in ACXTIDConfig), |
| if supported and supplied, is exhausted. |
| 1 Preamble Override - Indicates if the preamble type should be used in TX. |
| 2 Preamble Type - The type of the preamble to be used by the policy. |
| 0 - long preamble, |
| 1 - short preamble. |
| 3-7 Reserved |
| */ |
| |
| /* definition of single rate policy*/ |
| typedef struct |
| { |
| |
| uint32 enabledRates; /* A Bit Mask which indicates which Rates are enabled */ |
| /* The rates bitmap is defined in EHwBitRate. */ |
| /* If set to RATE_MASK_UNSPECIFIED, the FW sets it internally */ |
| |
| uint8 shortRetryLimit; /* The dot11ShortRetryLimit used */ |
| /* for Tx retries.*/ |
| |
| uint8 longRetryLimit; /* The dot11LongRetryLimit used */ |
| /* for Tx retries. */ |
| |
| uint8 aflags; /* Flags controlling attributes */ |
| /* of the transmission. */ |
| /* see above description for the */ |
| /* structure of this field.*/ |
| |
| uint8 reserved; |
| }txAttrClass_t; |
| |
| /* Template command data structure.*/ |
| typedef struct |
| { |
| uint16 len; |
| TemplateType_e templateType; |
| uint8 index; /* relevant only for KLV_TEMPLATE type */ |
| txAttrClass_t templateTxAttribute; |
| uint8 templateStart[MAX_TEMPLATES_SIZE]; |
| } PktTemplate_t; |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_NOISE_HIST |
| Desc: This command starts/stops the noise histogram measurements. |
| Params: NoiseHistRequest_t - see below. |
| |
| ******************************************************************************/ |
| #define NOISE_HIST_LEN 8 |
| |
| typedef enum |
| { |
| NOISE_HIST_STOP, |
| NOISE_HIST_START, |
| NOISE_HIST_INVALID = MAX_POSITIVE16 /* Force to be 16 bits enum*/ |
| } NoiseHistMode_enum; |
| |
| #ifdef HOST_COMPILE |
| typedef uint16 NoiseHistMode_e; |
| #else |
| typedef NoiseHistMode_enum NoiseHistMode_e; |
| #endif |
| |
| typedef struct |
| { |
| NoiseHistMode_e mode; /* Start or stop the FW engine. */ |
| /* Possible values are 1 (Start) and 0 (Stop).*/ |
| |
| uint16 sampleIntervalUSec; /* The time interval in usec between measurements.*/ |
| /* Valid values are between 100us (default) and */ |
| /* 2ms (with 100us jumps). This parameter is */ |
| /* relevant only when Mode is Start (1).*/ |
| |
| uint8 thresholds[NOISE_HIST_LEN];/* An array of eight 8 bit thresholds. The FW */ |
| /* takes noise measurements, once every */ |
| /* SampleIntervalUSec interval. If the measured */ |
| /* noise level is between the threshold[X] and */ |
| /* threshold[X 1], then the FW increments the */ |
| /* noise histogram counter[X]. */ |
| /* The counters are read via the */ |
| /* ACXNoiseHistogramResults IE. This parameter is */ |
| /* relevant only when Mode is Start (1).*/ |
| } NoiseHistRequest_t; |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_LNA_CONTROL |
| Desc: This command controls the LNA state. |
| Params: LNAControl_t - see below. |
| |
| ******************************************************************************/ |
| |
| typedef enum |
| { |
| LNA_MODE_MANUAL, /* 0: The LNA is set to manual mode and is turned off.*/ |
| LNA_MODE_AUTO, /* 1: The LNA is set to automatic mode.*/ |
| LNA_MODE_INVALID = 0xFF |
| } LnaMode_enum; |
| |
| #ifdef HOST_COMPILE |
| typedef uint8 LnaMode_e; |
| #else |
| typedef LnaMode_enum LnaMode_e; |
| #endif |
| |
| typedef struct |
| { |
| LnaMode_e LNAControlField; /* refer to LnaMode_enum*/ |
| uint8 padding[3]; /* for alignment to 32 bits boundry*/ |
| } LNAControl_t; |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_MEASUREMENT |
| Desc: This command instructs the WiLink device to begin a basic channel |
| load measurement on the specified channel. When the measurement |
| process actually starts running the WilLink device will raise the |
| Measurement Started event. When the measurement process completes as |
| a result of the end of the measurement duration or a STOP_MEASUREMENT |
| command, the WilLink device will raise a Measurement Complete event. |
| Params: MeasurementParameters_t - see below. |
| |
| ******************************************************************************/ |
| typedef struct |
| { |
| ACXRxConfigStruct rxFilter; /* This field is the Rx filter configuration for the */ |
| /* device while the measurement process is running. */ |
| /* When the process ends the previous Rx filter */ |
| /* configuration is reset. The filter configuration is*/ |
| /* composed of two 32 bit registers. When they are set*/ |
| /* to 0xFFFFFFFF the Rx filter configuration is not*/ |
| /* changed.*/ |
| |
| uint32 duration; /* Specifies the measurement process duration in */ |
| /* microseconds. The value of 0 means infinite duration*/ |
| /* in which only a STOP_MEASUREMENT command can*/ |
| /* stop the measurement process.*/ |
| |
| Channel_e channel; /* Channel number on which the measurement is performed,*/ |
| /* valid range 0-255 (1-14 for 802.11b).*/ |
| |
| RadioBand_e band; /* Specifies the band to which the channel belongs. */ |
| /* 0 - 2.4GHz */ |
| /* 1 - 5GHz , */ |
| /* 0xFF - Current band.*/ |
| |
| uint8 scanTag; /* results tag */ |
| |
| uint8 padding[1]; /* for alignment to 32 bits boundry*/ |
| } MeasurementParameters_t; |
| |
| /****************************************************************************** |
| |
| ID: CMD_STOP_MEASUREMENT |
| Desc: This command instructs the WiLink to terminate any measurement in |
| progress. After processing this command, the WiLink returns to its |
| previous state (the state before the measurement was started) and |
| generates the Measurment Complete event. |
| Params: None. |
| |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| |
| ID: CMD_DISCONNECT |
| Desc: This command instructs the WiLink device to stop all BSS or IBSS activity. |
| The device will cancel all of its TSF dependent events and activities. |
| Power Save dependent activities are an exception to this, therefore |
| the host must exit Power Save mode by issuing the SET_PS_MODE command |
| before calling this command. When this command is complete the Disconnect |
| Complete event is raised to the host and the WiLink device is allowed |
| to enter the configured low power state. |
| Params: DisconnectParameters_t - see below. |
| |
| ******************************************************************************/ |
| |
| typedef enum |
| { |
| DISCONNECT_IMMEDIATE, /* Disconnect without sending any frame */ |
| DISCONNECT_DE_AUTH, /* Send deauthentication frame upon disconnecting */ |
| DISCONNECT_DIS_ASSOC /* Send disassociation frame upon disconnecting */ |
| } DisconnectType_enum; |
| |
| #ifdef HOST_COMPILE |
| typedef uint8 DisconnectType_e; |
| #else |
| typedef DisconnectType_enum DisconnectType_e; |
| #endif |
| |
| |
| |
| typedef struct |
| { |
| ACXRxConfigStruct rxFilter; |
| uint16 disconnectReason; |
| DisconnectType_e disconnectType; |
| uint8 padding[1]; /* for alignment to 32 bits boundry */ |
| } DisconnectParameters_t; |
| |
| |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_SET_PS_MODE |
| Desc: This command turns ON/OFF Power save protocol on the WiLink. |
| After HW configuration, FW sends Null data packet to the AP with Power |
| Management bit set accordingly to the field "Mode" of this command |
| structure. After processing this command, the FW generates the |
| PS_COMPLETE event. |
| Params: PSModeParameters_t - see below. |
| |
| ******************************************************************************/ |
| |
| typedef enum |
| { |
| STATION_ACTIVE_MODE, |
| STATION_POWER_SAVE_MODE |
| } StationPSMode_enum; |
| |
| #ifdef HOST_COMPILE |
| typedef uint8 StationPowerSaveMode_e; |
| #else |
| typedef StationPSMode_enum StationPowerSaveMode_e; |
| #endif |
| |
| |
| typedef struct |
| { |
| StationPowerSaveMode_e mode; /* This field specifies the future Power save*/ |
| /* protocol mode of the system. */ |
| /* When set, Power save protocol is enabled. */ |
| /* When cleared, Power save protocol is */ |
| /* disabled (refer to StationPSMode_enum).*/ |
| |
| uint8 needToSendNullData; |
| uint8 numberOfRetries; /* This field specifies the maximum allowed */ |
| /* number of retries of the Null data packet */ |
| /* that FW will send after switching the */ |
| /* Power Save Protocol mode.*/ |
| |
| uint8 hangOverPeriod; /* This field specifies the hangover period, */ |
| /* which is the time in TUs during which the */ |
| /* WiLink remains awake after sending an MPDU */ |
| /* with the Power Save bit set, indicating that*/ |
| /* the station is to go into Power Save mode. */ |
| /* Setting bit 0 does not affect the hangover */ |
| /* period.*/ |
| |
| EHwRateBitFiled rateToTransmitNullData; /* This EHwBitRate format field specifies the rate and */ |
| /* modulation to transmit the Null data packet*/ |
| /* to the AP. */ |
| |
| } PSModeParameters_t; |
| |
| /****************************************************************************** |
| |
| ID: CMD_CHANNEL_SWITCH |
| Desc: This command instructs the WiLink to switch serving channel at the given |
| time. Once the channel switch is performed, the Channel Switch Complete |
| event is raised to the host. |
| Params: ChannelSwitchParameters_t - see below. |
| |
| ******************************************************************************/ |
| typedef struct |
| { |
| Channel_e channel; /* The new serving channel.*/ |
| uint8 switchTime; /* Relative time of the serving channel switch in TBTT units.*/ |
| Bool_e txSuspend; /* 1: Suspend TX till switch time; */ |
| /* 0: Do not suspend TX*/ |
| Bool_e flush; /* 1: Flush TX at switch time; */ |
| /* 0: Do not flush*/ |
| |
| } ChannelSwitchParameters_t; |
| |
| /****************************************************************************** |
| |
| ID: CMD_STOP_CHANNEL_SWICTH |
| Desc: This command instructs the WiLink device to cancel performing a |
| pending channel switch event command. |
| Params: None. |
| |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| |
| ID: CMD_AP_DISCOVERY |
| Desc: This command instructs the WiLink device to perform an AP discovery |
| measurement on a single channel. This command can only be issued after |
| a measurement process has been started by the WiLink device as a result |
| of a previous Measurement command. The Measurement command specifies the |
| channel on which the AP discovery is performed. Once the "AP discovery" |
| measurement is completed either by a STOP_AP_DISCOVERY command or when |
| the duration has expired, it will send an "AP discovery complete event" |
| to the host. |
| Params: ApDiscoveryParameters_t - see below. |
| |
| ******************************************************************************/ |
| |
| |
| typedef struct |
| { |
| ACXRxConfigStruct rxFilter; /* This field is the Rx filter configuration for the */ |
| /* device while the AP Discovery process is running. */ |
| /* When the process ends the previous Rx filter */ |
| /* configuration is reset. The filter configuration is*/ |
| /* composed of two 32 bit registers. When they are set */ |
| /* to 0xFFFFFFFF the Rx filter configuration is not */ |
| /* changed.*/ |
| |
| uint32 scanDuration; /* This field specifies the amount of time, in time*/ |
| /* units (TUs), to perform the AP discovery. The value*/ |
| /* can range from 0 to 65535 TUs (67.1 seconds). */ |
| |
| uint16 scanOptions; /* This field specifies whether the AP discovery is */ |
| /* performed by an active scan or a passive scan. */ |
| /* 0 - ACTIVE, 1 - PASSIVE.*/ |
| |
| uint8 numOfProbRqst; /* This field indicates the number of probe requests to*/ |
| /* send per channel, when active scan is specified. */ |
| /* Note: for XCC measurement this value should be set */ |
| /* to 1.*/ |
| |
| uint8 txPowerAttenuation; /* TX power level to be used for sending probe requests*/ |
| /* when active scan is specified. */ |
| /* If 0, leave normal TX power level for this channel. */ |
| |
| EHwRateBitFiled txdRateSet; /* This EHwBitRate format field specifies the rate and modulation*/ |
| /* to transmit the probe request when an active scan is*/ |
| /* specified. */ |
| |
| } ApDiscoveryParameters_t; |
| |
| /****************************************************************************** |
| |
| ID: CMD_STOP_AP_DISCOVERY |
| Desc: This command instructs the WiLink to terminate the AP Discovery |
| measurement in progress. After processing this command, the WiLink |
| returns to its previous state and generates the AP Discovery Complete |
| Event. |
| Params: None. |
| |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| |
| ID: CMD_SPS_SCAN |
| Desc: This command instructs the WiLink to perform a scheduled passive |
| scan for BSS/IBSSs. The WiLink monitors the specified channel(s) |
| for beacons. The WiLink sends Scheduled Scan Complete event to notify |
| the host when it has completed a scan. |
| Params: InfoElement_t - see below. |
| |
| ******************************************************************************/ |
| /* Scheduled - General scan parameters.*/ |
| typedef struct |
| { |
| ACXRxConfigStruct rxCfg; /* Rx filter to be used for each channel scan. */ |
| /* The BSSID filter enable will be set (by the scan*/ |
| /* process) to ON for a specific channel if the*/ |
| /* BSSID of this channel is a unicast address. */ |
| /* Otherwise it will be set to OFF (Refer to */ |
| /* ACXRxConfigStruct).*/ |
| |
| uint32 scanCmdTime_h; /* This filed is the latest 32 MSBits of TSF known*/ |
| /* at the time the SPS command was issued. When the*/ |
| /* scan process is about to begin, this value is */ |
| /* used to determine if the AP has performed a */ |
| /* recovery by comparing this value to the current*/ |
| /* TSF. (An AP that has performed a recovery should*/ |
| /* have a lower TSF then the one that was saved).*/ |
| |
| uint32 scanCmdTime_l; /* This filed is the latest 32 LSBits of TSF known*/ |
| /* at the time the SPS command was issued. */ |
| |
| uint16 scanOptions; /* This bitwise field indicates the scan options. */ |
| /* 0 - ACTIVE, 1 - PASSIVE.*/ |
| |
| uint8 numChannels; /* Number of scan channels in the list (minimum */ |
| /* (minimumis 1, maximum is 30).*/ |
| |
| RadioBand_e band; /* Band to scan */ |
| uint8 scanTag; /* results tag */ |
| } ScheduledGeneralParameters_t; |
| |
| |
| /* Scheduled - Per-Channel scan parameters.*/ |
| typedef struct |
| { |
| uint32 scanStartTime; /* Duration in microseconds of the scan on this channel */ |
| /* (Scan could be aborted before this duration in case of*/ |
| /* early termination condition met on the channel). */ |
| |
| uint32 scanMaxDuration; /* Lower 4 bytes of TSF time in microseconds when the */ |
| /* scan should start listening on the desired channel. */ |
| |
| uint32 bssIdL; /* 32 LSBits of BSSID of the AP to scan for. If scanning */ |
| /* on this channel any BSSID, this field shall be set */ |
| /* to broadcast BSSID. */ |
| |
| uint16 bssIdH; /* 16 MSBits of BSSID of the AP to scan for. */ |
| |
| ETCondCount_t ETCondCount; /* bit 0-3: Early Termination count - This field */ |
| /* defines the maximum number of beacons*/ |
| /* or probe responses or both (according*/ |
| /* to condition) to collect before ending*/ |
| /* a scan.*/ |
| |
| /* Bit 4-5: Early Termination Condition (refer */ |
| /* to ETCondition_enum).*/ |
| Channel_e channel; /* Channel number to scan, valid range 0-255 */ |
| /* (1-14 for 802.11b).*/ |
| } ScheduledChannelParameters_t; |
| |
| |
| /* The Scheduled Scan command structure.*/ |
| typedef struct |
| { |
| ScheduledGeneralParameters_t scheduledGeneralParameters; |
| ScheduledChannelParameters_t scheduledChannelParameters[SCAN_MAX_NUM_OF_CHANNELS]; |
| } ScheduledScanParameters_t; |
| |
| /****************************************************************************** |
| |
| ID: CMD_STOP_SPS_SCAN |
| Desc: This command instructs the WiLink to terminate a currently running |
| SPS or a pending SPS.. After processing this command, the WiLink |
| returns to its previous state and generates the Scheduled Scan |
| Complete Event. |
| Params: None. |
| |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| |
| ID: CMD_HEALTH_CHECK |
| Desc: This command instructs the WiLink to raise a MAC status event |
| which contains the current FCS Error counter. |
| Params: None. |
| |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| |
| ID: CMD_DEBUG |
| Desc: |
| Params: debugCommnad_t - see below. |
| |
| ******************************************************************************/ |
| #define MAX_DEBUG_PARAMETERS 10 |
| |
| typedef struct |
| { |
| uint32 id; |
| uint32 params[MAX_DEBUG_PARAMETERS]; |
| } debugCommnad_t; |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_CONNECTION_SCAN_CFG |
| Desc: This command configures the periodic connection scan feature |
| Params: ConnectionScanParameters_t followed by active and passive channel |
| lists (variable size structure) |
| |
| ******************************************************************************/ |
| |
| typedef enum |
| { |
| BSS_INDEPENDENT = 0, |
| BSS_INFRASTRUCTURE = 1, |
| BSS_ANY = 2, |
| BSS_MAX = 0xFF |
| } ScanBssType_enum; |
| |
| #ifdef HOST_COMPILE |
| typedef uint8 ScanBssType_e; |
| #else |
| typedef ScanBssType_enum ScanBssType_e; |
| #endif |
| |
| typedef enum |
| { |
| SCAN_SSID_FILTER_TYPE_ANY = 0, |
| SCAN_SSID_FILTER_TYPE_SPECIFIC = 1, |
| SCAN_SSID_FILTER_TYPE_LIST = 2, |
| SCAN_SSID_FILTER_TYPE_LIST_FILTER_DISABLED = 3, |
| MAX_SCAN_SSID_FILTER_TYPE = 0xFF |
| } ScanSsidFilterType_enum; |
| |
| #ifdef HOST_COMPILE |
| typedef uint8 ScanSsidFilterType_e; |
| #else |
| typedef ScanSsidFilterType_enum ScanSsidFilterType_e; |
| #endif |
| |
| #define CONN_SCAN_MAX_CHANNELS_BG 14 |
| #define CONN_SCAN_MAX_CHANNELS_J 4 |
| #define CONN_SCAN_MAX_CHANNELS_A 23 |
| #define CONN_SCAN_MAX_CHANNELS_ALL_BANDS ((CONN_SCAN_MAX_CHANNELS_BG) + (CONN_SCAN_MAX_CHANNELS_A) + (CONN_SCAN_MAX_CHANNELS_J)) |
| #define CONN_SCAN_MAX_NUM_OF_CYCLES_INTERVALS (16) /* Maximum number of configured inter-cycle intervals */ |
| |
| #define CONN_SCAN_MAX_BAND (3) /* Maximum number of bands in scan configuration */ |
| |
| #define CONN_SCAN_DFS_CANDIDATE_CHANNEL BIT_0 |
| #define CONN_SCAN_DFS_ENABLED_CHANNEL BIT_1 |
| |
| typedef struct |
| { |
| uint16 scanMinDuration; /* Min duration (in ms)*/ |
| uint16 scanMaxDuration; /* Max duration (in ms)*/ |
| uint16 passiveScanDuration; /* Duration to use for passive scans (in ms)*/ |
| uint8 channel; /* channel number (channel_e) */ |
| uint8 txPowerLevelDbm; /* TX power level in dbm */ |
| uint8 channelFlags; /* BIT 0: DFS channel */ |
| /* BIT 1: DFS enabled (to be included in active scan) */ |
| uint8 padding[3]; |
| } ConnScanChannelInfo_t; |
| |
| typedef struct |
| { |
| uint32 cycleIntervals[CONN_SCAN_MAX_NUM_OF_CYCLES_INTERVALS]; /* Intervals between each scan cycle */ |
| int8 rssiThreshold; /* RSSI threshold */ |
| int8 snrThreshold; /* SNR threshold */ |
| uint8 maxNumOfCycles; /* number of cycles to run */ |
| uint8 reportThreshold; /* Report after N results are received */ |
| uint8 terminateOnReport; /* Terminate after report */ |
| uint8 resultsTag; /* Tag for filtered scan results */ |
| ScanBssType_e bssType; /* BSS type to filter (0 - Infra, 1 - IBSS, 2 - Any) */ |
| ScanSsidFilterType_e ssidFilterType; /* SSID filter Type (0 - Any, 1 - specified in command, 2 - use SSID list, 3 - use SSID list no filter) */ |
| uint8 ssidLength; /* SSID Length (if ssidType is specified in command) */ |
| uint8 ssid[32]; /* SSID (if ssidType is specified in command) */ |
| uint8 numProbe; /* Number of probe requests to transmit per (hidden) SSID per channel */ |
| |
| uint8 numOfPassive[CONN_SCAN_MAX_BAND]; |
| uint8 numOfActive[CONN_SCAN_MAX_BAND]; |
| uint8 numOfDfs; |
| uint8 padding[ 3 ]; |
| ConnScanChannelInfo_t channelList[CONN_SCAN_MAX_CHANNELS_ALL_BANDS]; |
| } ConnScanParameters_t; |
| |
| /****************************************************************************** |
| |
| ID: CMD_CONNECTION_SCAN_SSID_CFG |
| Desc: This command configures the SSID filter list to be used in the |
| periodic connection scan |
| Params: None. |
| |
| ******************************************************************************/ |
| |
| #define CONN_SCAN_MAX_NUMBER_OF_SSID_ENTRIES (8) |
| |
| typedef enum |
| { |
| SCAN_SSID_TYPE_PUBLIC = 0, |
| SCAN_SSID_TYPE_HIDDEN = 1, |
| MAX_SCAN_SSID_TYPE = 0xFF |
| } ScanSsidType_enum; |
| |
| #ifdef HOST_COMPILE |
| typedef uint8 ScanSsidType_e; |
| #else |
| typedef ScanSsidType_enum ScanSsidType_e; |
| #endif |
| |
| typedef struct |
| { |
| ScanSsidType_e ssidType; |
| uint8 ssidLength; |
| uint8 ssid[32]; |
| } ConnScanSSID_t; |
| |
| |
| typedef struct |
| { |
| uint8 numOfSSIDEntries; |
| ConnScanSSID_t SSIDList[CONN_SCAN_MAX_NUMBER_OF_SSID_ENTRIES]; |
| } ConnScanSSIDList_t; |
| |
| |
| /****************************************************************************** |
| |
| ID: CMD_START_PERIODIC_SCAN |
| Desc: This command instructs the WiLink to start a periodic scan |
| process (either connection-scan or discovery) |
| Params: None. |
| |
| ******************************************************************************/ |
| |
| typedef struct |
| { |
| uint8 scanTag; |
| uint8 uReserved[3]; |
| } PeriodicScanTag; |
| |
| /****************************************************************************** |
| |
| ID: CMD_STOP_PERIODIC_SCAN |
| Desc: This command instructs the WiLink to stop a periodic scan |
| process (either connection-scan or discovery) |
| Params: None. |
| |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| |
| ID: CMD_SET_STATUS |
| Desc: This command instructs the station state |
| Params: None. |
| |
| ******************************************************************************/ |
| |
| #define STA_STATE_CONNECTED 1 |
| |
| typedef struct |
| { |
| uint8 staState; |
| uint8 pad[3]; |
| } SetStaState_t; |
| |
| /* PLT public definitions*/ |
| #define TEST_CONTINUOUS 0x04 /* transmit frames contimuously */ |
| |
| |
| /*This typedef corresponds to the Fig 1 Frame Format for PER test given in PER test doc.*/ |
| #define PER_MODE_TX 1 |
| #define PER_MODE_RX 2 |
| #define INFRA 0x2 /* BSS is in Infrastructure mode */ |
| #define LOCAL_MEM_LAST 0x02000000 |
| #define PBCC_MODULATION_MASK 0x80 |
| #define OFDM_MODULATION_MASK 0x40 |
| #define BAND_SELECT_5GHZ 0x10 |
| #define CTL_PREAMBLE 0x01 |
| |
| |
| |
| #endif /* PUBLIC_COMMANDS_H*/ |