1/****************************************************************************
2**+-----------------------------------------------------------------------+**
3**|                                                                       |**
4**| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
5**| All rights reserved.                                                  |**
6**|                                                                       |**
7**| Redistribution and use in source and binary forms, with or without    |**
8**| modification, are permitted provided that the following conditions    |**
9**| are met:                                                              |**
10**|                                                                       |**
11**|  * Redistributions of source code must retain the above copyright     |**
12**|    notice, this list of conditions and the following disclaimer.      |**
13**|  * Redistributions in binary form must reproduce the above copyright  |**
14**|    notice, this list of conditions and the following disclaimer in    |**
15**|    the documentation and/or other materials provided with the         |**
16**|    distribution.                                                      |**
17**|  * Neither the name Texas Instruments nor the names of its            |**
18**|    contributors may be used to endorse or promote products derived    |**
19**|    from this software without specific prior written permission.      |**
20**|                                                                       |**
21**| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
22**| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
23**| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
24**| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
25**| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
26**| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
27**| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
28**| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
29**| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
30**| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
31**| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
32**|                                                                       |**
33**+-----------------------------------------------------------------------+**
34****************************************************************************/
35
36#ifndef PUBLIC_COMMANDS_H
37#define PUBLIC_COMMANDS_H
38
39
40#include "public_types.h"
41#include "public_radio.h"
42
43typedef enum
44{
45    CMD_RESET           = 0,
46    CMD_INTERROGATE     = 1,    /*use this to read information elements*/
47    CMD_CONFIGURE       = 2,    /*use this to write information elements*/
48    CMD_ENABLE_RX       = 3,
49    CMD_ENABLE_TX       = 4,
50    CMD_DISABLE_RX      = 5,
51    CMD_DISABLE_TX      = 6,
52    CMD_SCAN            = 8,
53    CMD_STOP_SCAN       = 9,
54    CMD_VBM             = 10,
55    CMD_START_JOIN      = 11,
56    CMD_SET_KEYS        = 12,
57    CMD_READ_MEMORY     = 13,
58    CMD_WRITE_MEMORY    = 14,
59
60    CMD_BEACON          = 19,
61    CMD_PROBE_RESP      = 20,
62    CMD_NULL_DATA       = 21,
63    CMD_PROBE_REQ       = 22,
64    CMD_TEST            = 23,
65
66    CMD_RADIO_CALIBRATE     = 25,   /* OBSOLETE !!!*/
67
68    CMD_ENABLE_RX_PATH      = 27,   /* OBSOLETE !!! (what is the difference from CMD_ENABLE_RX)*/
69    CMD_NOISE_HIST      = 28,
70    CMD_RX_RESET        = 29,
71
72    CMD_PS_POLL         = 30,
73    CMD_QOS_NULL_DATA   = 31,
74
75    CMD_LNA_CONTROL     = 32,
76    CMD_SET_BCN_MODE    = 33,
77
78    CMD_MEASUREMENT      = 34,
79    CMD_STOP_MEASUREMENT = 35,
80    CMD_DISCONNECT       = 36,
81    CMD_SET_PS_MODE      = 37,
82
83    CMD_CHANNEL_SWITCH   = 38,
84    CMD_STOP_CHANNEL_SWICTH = 39,
85
86    CMD_AP_DISCOVERY     = 40,
87    CMD_STOP_AP_DISCOVERY = 41,
88
89    CMD_SPS_SCAN = 42,
90    CMD_STOP_SPS_SCAN = 43,
91
92    CMD_HEALTH_CHECK     = 45,
93    CMD_DEBUG            = 46,
94	CMD_TRIGGER_SCAN_TO  = 47,
95
96NUM_COMMANDS,
97    MAX_COMMAND_ID = 0xFFFF
98} Command_enum;
99
100#ifdef HOST_COMPILE
101typedef uint16 Command_e;
102#else
103typedef Command_enum Command_e;
104#endif
105
106
107#ifdef HOST_COMPILE
108
109#define 	CMD_MAILBOX_IDLE               		0
110#define     CMD_STATUS_SUCCESS             		1
111#define     CMD_STATUS_UNKNOWN_CMD         		2
112#define     CMD_STATUS_UNKNOWN_IE          		3
113#define		CMD_STATUS_REJECT_MEAS_SG_ACTIVE 	11
114#define     CMD_STATUS_RX_BUSY             		13
115#define     CMD_STATUS_INVALID_PARAM       		14
116#define     CMD_STATUS_TEMPLATE_TOO_LARGE  		15
117#define     CMD_STATUS_OUT_OF_MEMORY       		16
118#define     CMD_STATUS_STA_TABLE_FULL      		17
119#define     CMD_STATUS_RADIO_ERROR         		18
120#define     CMD_STATUS_WRONG_NESTING       		19
121#define     CMD_STATUS_TIMEOUT             		21 /* Driver internal use.*/
122#define     CMD_STATUS_FW_RESET            		22 /* Driver internal use.*/
123#define     MAX_COMMAND_STATUS             		MAX_POSITIVE16
124
125#else
126
127typedef enum
128{
129	CMD_MAILBOX_IDLE              		=  0,
130    CMD_STATUS_SUCCESS            		=  1,
131    CMD_STATUS_UNKNOWN_CMD        		=  2,
132    CMD_STATUS_UNKNOWN_IE         		=  3,
133	CMD_STATUS_REJECT_MEAS_SG_ACTIVE 	= 11,
134    CMD_STATUS_RX_BUSY            		= 13,
135    CMD_STATUS_INVALID_PARAM      		= 14,
136    CMD_STATUS_TEMPLATE_TOO_LARGE 		= 15,
137    CMD_STATUS_OUT_OF_MEMORY      		= 16,
138    CMD_STATUS_STA_TABLE_FULL     		= 17,
139    CMD_STATUS_RADIO_ERROR        		= 18,
140    CMD_STATUS_WRONG_NESTING      		= 19,
141    CMD_STATUS_TIMEOUT            		= 21, /* Driver internal use.*/
142    CMD_STATUS_FW_RESET           		= 22, /* Driver internal use.*/
143    MAX_COMMAND_STATUS            		= MAX_POSITIVE16
144} CommandStatus_enum;
145
146#endif
147
148#ifdef HOST_COMPILE
149typedef uint16 CommandStatus_e;
150#else
151typedef CommandStatus_enum CommandStatus_e;
152#endif
153
154
155#ifdef FW_RUNNING_AS_STA
156#define MAX_CMD_PARAMS 572
157#else
158#define MAX_CMD_PARAMS 384
159#endif
160
161#define DEBUG_INDICATOR      0x8000
162
163typedef struct
164{
165    Command_e cmdID;
166    CommandStatus_e cmdStatus;
167    uint8 parameters[MAX_CMD_PARAMS];
168} Command_t;
169
170
171/******************************************************************************
172
173    ID:		  CMD_RESET
174	Desc:	  This command resets all state machines in the WiLink to their power
175	          up state and restarts the eCPU. This command has no parameters. After
176			  issuing this command, the host must reconfigure the adapter before
177			  normal operations resume.
178	          In general, the host should only use this command if the WiLink has
179			  stopped functioning properly.
180    Params:	  None.
181	Note:     The WiLink does not return a response/status message for this command.
182
183******************************************************************************/
184
185
186/******************************************************************************
187
188    ID:		  CMD_INTERROGATE
189	Desc:	  This command requests an information element from the WiLink. The
190	          interface for this command is somewhat different from other commands
191			  since the interface is bi-directional and asymmetric.
192	          The host structure consists of the Command ID, a Command Status
193			  (returned by WiLink) place holder, and the Information Element Heading
194			  (ID and expected length).
195	          The response to that command is a buffer of the information element's
196			  actual values returned by the WiLink just after the command is issued.
197			  The response to that command is a buffer of the information element's
198              actual values returned by the WiLink just after the command is issued.
199	Params:	  InfoElement_t - see below.
200
201
202******************************************************************************/
203/*
204Description of InfoElement structure - defined in "public_infoele.h"
205offset	length	source	description
206======	======	======	===========
2070		2		host	Information Element ID - contains the ID of the requested
208                        information element (refer to InfoElement_enum in
209						pblic_infoele.h). In response to this command, the WiLink
210						writes the requested information element to the response area
211						for the command mailbox.
2122		4		wilink	Length - the length of the response (different for each IE
213						according to definitions in public_infoele.h).
2144       Length	wilink  IE payload according to definition in public_infoele.h.
215*/
216
217
218
219/******************************************************************************
220
221    ID:		  CMD_CONFIGURE
222	Desc:	  This command configures an information element in the WiLink.
223    Params:	  InfoElement_t - see below.
224
225******************************************************************************/
226/*
227Description of InfoElement structure - defined in "public_infoele.h"
228offset	length	source	description
229======	======	======	===========
2300		2		host	Information Element ID - contains the ID of the requested
231                        information element (refer to InfoElement_enum in
232						pblic_infoele.h). In response to this command, the WiLink
233						writes the requested information element to the response area
234						for the command mailbox.
2352		4		host	Length - the length of the response (different for each IE
236						according to definitions in public_infoele.h).
2374       Length	host    IE payload according to definition in public_infoele.h.
238*/
239
240
241/******************************************************************************
242
243    ID:		  CMD_ENABLE_RX
244	Desc:	  This command enables the normal reception of frames.
245    Params:	  Channel Number - this field indicates the radio channel on which to
246	                           receive data. This parameter also sets the channel on
247							   which to transmit. The last channel number used,
248							   regardless of the order in which the ENABLE_RX and
249							   ENABLE_TX commands are issued, is the channel number
250							   for both RX and TX. This command must be issued after
251							   the host has set all necessary configuration elements
252							   appropriately.
253
254******************************************************************************/
255
256
257
258/******************************************************************************
259
260    ID:		  CMD_ENABLE_TX
261	Desc:	  This command enables the normal transmission of frames.
262    Params:	  Channel Number - this field indicates the radio channel on which to
263	                           transmit data. This parameter also sets the channel on
264							   which to receive. The last channel number used,
265							   regardless of the order in which the ENABLE_RX and
266							   ENABLE_TX commands are issued, is the channel number
267							   for both RX and TX. This command must be issued after
268							   the host has set all necessary configuration elements
269							   appropriately.
270
271******************************************************************************/
272
273/******************************************************************************
274
275    ID:		  CMD_DISABLE_RX
276	Desc:	  This command disables the normal reception of packets over the
277	          Baseband interface.
278    Params:	  None
279
280******************************************************************************/
281
282/******************************************************************************
283
284    ID:		  CMD_DISABLE_TX
285	Desc:	  This command disables the normal transmission of frames.
286    Params:	  None.
287
288******************************************************************************/
289
290/******************************************************************************
291
292    ID:		  CMD_SCAN
293	Desc:	  This command instructs the WiLink to scan for BSS/IBSSs. The host
294			  may perform either an active scan or a passive scan. During an active
295			  scan, the WiLink transmits a probe request on the specified channel(s)
296			  and then listens for beacon/probe responses. During a passive scan, the
297			  WiLink monitors the specified channel(s) for beacons.
298	          The WiLink sends SCAN_COMPLETE event to notify the host when it has
299			  completed a scan.
300	Params:	  ScanParameters_t - see below
301
302******************************************************************************/
303/*
304Offset	Length	Definition
3050		8		RX filters for Scan (refer to ACXRxConfigStruct)
3068		2		Scan options (Band select, Voice mode and Scan type = Active/Passive)
30710		1		NumChannels
30811		1		Number of Probe requests (used for Active scan)
30912		2		Probe request rate & modulation
31014		1		AC trigger (for Voice mode only)
31115		1		SSID length
31216		32		SSID string (Null terminated)
31348		2		Channel [0] ScanMinDuration
31450		2		Channel [0] ScanMaxDuration
31552		6		Channel [0] BSSID (4 bytes LOW and 2 bytes HIGH)
31658		1		Channel [0].bit0-3: Early Termination count. Bit 4-5: Condition
31759		1		Channel [0] TX power level for Scan (0 means do not change - other values:1-5)
31860		1		Channel [0] Channel
31961		3		Channel [0] Reserved
32064-404	340		Optional Channel [1] - Channel [15] - same format as Channel [0] fields above.
321*/
322
323/* Defines for Rx "ConfigOptions".*/
324/* Only bits 2-10 can be configured by the Driver".*/
325#define CFG_RX_SERIAL           BIT_0    /* 0 = use parallel interface,         1 = use serial interface from ACX101- not valid.*/
326#define CFG_RX_RAW              BIT_1    /* 1 = write all data from baseband to frame buffer including PHY header.*/
327#define CFG_RX_FCS              BIT_2    /* 1 = write FCS to end of frame in memory, 0 = do not write FCS to memory.*/
328#define CFG_RX_ALL_GOOD         BIT_3    /* promiscuous mode, receive all good frames.*/
329#define CFG_UNI_FILTER_EN       BIT_4    /* local MAC address filter enable.*/
330#define CFG_BSSID_FILTER_EN     BIT_5    /* BSSID filter enable.*/
331#define CFG_MC_FILTER_EN        BIT_6    /* 0 = receive all multicast,          1 = use one or both multicast address filters.*/
332#define CFG_MC_ADDR0_EN         BIT_7    /* 1 = receive frames from mc_addr0,   0 = do not use this filter.*/
333#define CFG_MC_ADDR1_EN         BIT_8    /* 1 = receive frames from mc_addr1,   0 = do not use this filter .*/
334#define CFG_BC_REJECT_EN        BIT_9    /* 0 = receive all broadcast,          1 = filter all broadcast.*/
335#define CFG_SSID_FILTER_EN      BIT_10   /* SSID Filter Enable.*/
336#define CFG_RX_INT_FCS_ERROR    BIT_11   /* 1 = give rx complete interrupt for FCS errors.*/
337#define CFG_RX_INT_ENCRYPTED    BIT_12   /* 1 = only give rx header interrupt if frame is encrypted.*/
338#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.*/
339#define CFG_RX_FILTER_NULTI     BIT_14   /* 1 = filter multicast/broadcast frame if SA matchs local MAC addr->.*/
340#define CFG_RX_RESERVE          BIT_15   /* reserve.*/
341#define CFG_RX_TIMESTAMP_TSF    BIT_16   /* 1 = sample frame's' arrival time in 32bits TSF, 0 = write it in MAC time stamp.*/
342
343
344/* Defines for Rx "FilterOptions".*/
345/* The rx filter enables control what type of receive frames will be rejected or received by the rx hardware*/
346/* 1 = frame is written to memory,*/
347/* 0 = not written to memory, rejected.*/
348#define CFG_RX_RSV_EN       BIT_0  /* reserved types and subtypes.*/
349#define CFG_RX_RCTS_ACK     BIT_1  /* rts, cts, ack frames.*/
350#define CFG_RX_PRSP_EN      BIT_2  /* probe response.*/
351#define CFG_RX_PREQ_EN      BIT_3  /* probe request.*/
352#define CFG_RX_MGMT_EN      BIT_4  /* type = management.*/
353#define CFG_RX_FCS_ERROR    BIT_5  /* frames with FCS errors.*/
354#define CFG_RX_DATA_EN      BIT_6  /* type = data.*/
355#define CFG_RX_CTL_EN       BIT_7  /* type = control.*/
356#define CFG_RX_CF_EN        BIT_8  /* contention free frames.*/
357#define CFG_RX_BCN_EN       BIT_9  /* beacons.*/
358#define CFG_RX_AUTH_EN      BIT_10 /* authentication, deauthentication.*/
359#define CFG_RX_ASSOC_EN     BIT_11 /* association related frames (all 5 subtypes  assoc req/resp,*/
360
361
362typedef struct
363{
364#ifdef FW_RUNNING_AS_AP
365    uint16          ConfigOptions;
366    uint16          FilterOptions;
367#else
368    uint32          ConfigOptions;
369    uint32          FilterOptions;
370#endif
371} ACXRxConfigStruct;
372
373/*
374TxdRateSet_t definition
375Bit     Description
376===     ===========
3770-12    Every one of bits 0-12 specifies rate described in the column on left. Only
378        one bit could be set for the command, all other should be zeroed.
3790       1 MBPS
3801       2 MBPS
3812       5.5 MBPS
3823       6 MBPS
3834       9 MBPS
3845       11 MBPS
3856       12 MBPS
3867       18 MBPS
3878       22 MBPS
3889       24 MBPS
38910      36 MBPS
39011      48 MBPS
39112      54 MBPS
39213      Unused (set to 0).
39314      PBCC - When this bit is set, the WiLink transmits probe requests with PBCC
394        modulation.
395        Notes:
396           Does not apply (set to 0) for rates 1 and 2 Mbps.
397           Does not apply (set to 0) for RevG-OFDM rates.
39815      Preamble - When this bit is set, the WiLink transmits probe requests with a
399                   short preamble. When this bit is clear, the WiLink transmits the
400				   frame with a long preamble.
401                   Notes:
402                     Must be LONG (0) for 1Mbps rate.
403				     Does not apply (set to 0) for RevG-OFDM rates.
404
405If neither the PBCC bit or OFDM rate are set, then the modulation format for probe
406requests is CCK for 5.5 or 11 Mbps or DBPSK/DQPSK for 1 and 2 Mbps.
407*/
408
409/* ScanOptions bit mask field.*/
410#define SCAN_ACTIVE         0
411#define SCAN_PASSIVE        1   /* 1 = passive scan, 0 = active scan*/
412#define SCAN_5GHZ_BAND      2   /* 1 = scan channel list in 5 Ghz band, 0 = scan channel list in 2.4 Ghz band*/
413#define TRIGGERED_SCAN      4   /* 1 = Triggered scan, 0 = Normal scan*/
414#define SCAN_PRIORITY_HIGH  8   /* 1 = High priority scan, 0 = Low priority scan*/
415
416typedef uint8 TidTrigger_t;
417
418/* General scan parameters.*/
419typedef struct
420{
421    ACXRxConfigStruct  rxCfg;         /* Rx filter to be used for each channel scan. */
422                                      /* The BSSID filter enable will be set (by the */
423	                                  /* scan process) to ON for a specific channel if*/
424	                                  /* the BSSID of this channel is a unicast address.*/
425	                                  /* Otherwise it will be set to OFF (Refer to */
426	                                  /* ACXRxConfig IE in public_infoele.h).*/
427
428    uint16             scanOptions;   /* This bitwise field indicates the scan options. */
429	                                  /* Bits [3:15] are reserved. */
430	                                  /* Bits [0:2] are defined as follows: */
431                                      /* Scan Type (bit 0) - When this bit is set, the */
432	                                  /*  WiLink performs a passive scan. When this bit*/
433	                                  /*  is cleared, the WiLink performs an active scan. */
434		                              /* Band Select (bit 1) - When this bit is set, the*/
435	                                  /*  WiLink scans the specified channels in the */
436	                                  /*  5GHz band. When this bit is cleared, the */
437	                                  /*  WiLink scans the specified channels in the */
438	                                  /*  2.4GHz band. */
439		                              /* Voice mode (bit 2) - When this bit is set, */
440	                                  /*  the request is for a voice scan. When this bit*/
441	                                  /*  is cleared, the request is for a normal scan. */
442		                              /* Scan priority (bit 3) - When this bit is set, */
443	                                  /*  the request is for a high priority scan. When*/
444	                                  /*  this bit is cleared, the request is for a low*/
445	                                  /*  priority scan.*/
446
447    uint8              numChannels;   /* Number of scan channels in the list (minimum is*/
448	                                  /* 1, maximum is 30).*/
449
450    uint8              numOfProbRqst; /* This field indicates the number of probe */
451	                                  /* requests to send per channel, in active scan. */
452
453    TxdRateSet_t       txdRateSet;    /* This bitwise field specifies the rate and */
454	                                  /* modulation to transmit the probe request during*/
455	                                  /* an active scan. The allowable values for this */
456	                                  /* field are listed in the above table (refer to */
457	                                  /* TxdRateSet). It is not used for passive scans.*/
458
459    TidTrigger_t       tidTrigger;    /* used for TidTriggered scan only.*/
460
461    uint8              ssidLength;    /* This field specifies the size of the SSID, */
462	                                  /* which can be up to 32 bytes long. If this field*/
463	                                  /* equals to zero, SSID filter is not applied. */
464
465    uint32             ssidStr[8];    /* This field specifies the SSID packets from that*/
466	                                  /* are relevant for the Scan result. The WiLink*/
467	                                  /* uses this information to filter beacon, probe*/
468	                                  /* response frames (if the SSID length field of */
469	                                  /* this command structure is not zero) */
470} BasicScanParameters_t;
471
472
473
474#define SCAN_ET_COND_MASK  0x30
475#define SCAN_ET_COUNT_MASK 0x0F
476
477#define SCAN_MAX_NUM_OF_CHANNELS 16
478
479/* Early Termination condition (bits 4-5) - This field can have one of the following */
480/* values (note that bits 0-3 indicates Early Termination count): */
481typedef enum
482{
483    ET_COND_DISABLE = 0x00,          /* Disable - No early termination condition.*/
484
485	ET_COND_BEACON  = 0x10,          /* Beacon only. When this value is selected, the */
486		                             /* Early Termination count field specifies the */
487									 /* maximum number of beacons to collect before */
488									 /* ending a scan. */
489
490    ET_COND_PROBE_RESP = 0x20,       /* Probe responses only. When this value is */
491	                                 /* selected, the Early Termination count field */
492									 /* specifies the maximum number of probe responses*/
493									 /* to collect before ending a scan. */
494
495    ET_COND_BEACON_PROBE_RESP = 0x30,/* Beacon/probe response. When this value is */
496	                                 /* selected, the Early Termination count field */
497									 /* specifies the maximum number of beacons or probe*/
498									 /* responses to collect before ending a scan. */
499
500    ET_COND_INVALID = 0xFF
501} ETCondition_enum;
502
503#ifdef HOST_COMPILE
504typedef uint8 ETCondition_e;
505#else
506typedef ETCondition_enum ETCondition_e;
507#endif
508
509
510typedef uint8 ETCondCount_t;
511
512
513
514#define PROCESS_SCAN_IS_HIGH(pScanParameters) ((pScanParameters)->basicScanParameters.scanOptions & SCAN_PRIORITY_HIGH)
515#define PROCESS_SCAN_IS_LOW(pScanParameters) ((PROCESS_SCAN_IS_HIGH(pScanParameters)) == 0)
516
517
518/* Per-Channel scan parameters.*/
519typedef struct
520{
521
522    uint32        scanMinDuration;    /* For active scans, this field specifies the */
523                                      /* minimum amount of time, in time units (TUs), */
524                                      /* to wait for a frame on a channel. This */
525                                      /* parameter is not used for passive scans. The*/
526                                      /*  value can range from 0 to 65535 TUs */
527                                      /* (67.1 seconds). */
528
529    uint32        scanMaxDuration;    /* For active scans, this field specifies the */
530	                                  /* maximum amount of time, in time units (TUs), */
531	                                  /* to wait for a probe response on a channel.*/
532	                                  /* For passive scans, this field specifies the */
533	                                  /* amount of time, in time units (TUs), to listen*/
534	                                  /* on a channel. The value can range from 0 to */
535	                                  /* 65535 TUs (67.1 seconds). */
536
537
538    uint32        bssIdL;             /* 32 LSBits of BSSID of the AP to scan for. */
539	                                  /* If scanning on this channel any BSSID, this */
540	                                  /* field shall be set to broadcast BSSID. */
541
542    uint16        bssIdH;             /* 16 MSBits of BSSID of the AP to scan for.*/
543
544    ETCondCount_t ETCondCount;        /* bit 0-3: Early Termination count - This field */
545	                                  /*          defines the maximum number of beacons*/
546	                                  /*          or probe responses or both (according*/
547	                                  /*          to condition) to collect before ending*/
548	                                  /*          a scan.*/
549
550	                                  /* Bit 4-5: Early Termination Condition (refer */
551	                                  /*          to ETCondition_enum).*/
552
553    uint8         txPowerAttenuation; /* TX power level to be used per channel scanned. */
554	                                  /* If 0, leave normal TX power level for this */
555	                                  /* channel. Range: 0 - 20 [dB].*/
556
557    Channel_e     channel;            /* Channel number to scan, valid range 0-255 */
558	                                  /* (1-14 for 802.11b). */
559    uint8		  padding[3];             /* for alignment to 32 bits boundry*/
560} BasicScanChannelParameters_t;
561
562/* The Scan command structure.*/
563typedef struct
564{
565    BasicScanParameters_t basicScanParameters; /* refer to BasicScanParameters_t */
566	                                           /* definition*/
567
568    BasicScanChannelParameters_t basicScanChannelParameters[SCAN_MAX_NUM_OF_CHANNELS];
569} ScanParameters_t;
570
571/*****************************************************************************
572
573    ID:		  CMD_TRIGGER_SCAN_TO
574	Desc:	  This Command will configure the enhanced Trigger Scan Timeout
575				information.
576			  To use legacy Trigger Scan, configure the parameter to 0
577    Params:	  None
578
579******************************************************************************/
580typedef struct
581{
582	uint32	SlicedScanTimeOut;			/* 0 - Split Scan Disable
583										   any other value will represent the timeout
584										   for each channel "mini scan" in uSec */
585}enhancedTriggerTO_t;
586
587
588
589/*****************************************************************************
590
591    ID:		  CMD_STOP_SCAN
592	Desc:	  This command instructs the WiLink to terminate any scan in progress.
593	          After processing this command, the WiLink returns to its previous state
594			  (the state before the scan was started) and generates the SCAN_COMPLETE
595			  information message.
596    Params:	  None
597
598******************************************************************************/
599
600
601
602/******************************************************************************
603
604    ID:		  CMD_VBM
605	Desc:	  This command specifies the contents of the beacon TIM template stored
606	          in the WiLink.
607    Params:	  VBMUpdateRequest_t - see below.
608	Note:     Second part of Beacon template
609
610******************************************************************************/
611typedef struct
612{
613    uint8 identity;       /* TIM IE ID*/
614    uint8 length;         /* TIM IE Length*/
615    uint8 DTIM_count;
616    uint8 DTIM_period;
617    uint8 BitMap_ctrl;
618    uint8 PVB_field[251]; /* Partial Virtual Bitmap*/
619} TIMStruct_t;
620
621
622typedef struct
623{
624    uint16 len;           /* length*/
625    uint8  padding[2];    /* for alignment to 32 bits boundry*/
626    TIMStruct_t tim;
627} VBMUpdateRequest_t;
628
629
630/******************************************************************************
631
632    ID:		  CMD_START_JOIN
633	Desc:	  This command instructs the WiLink to either join a BSS or IBSS, or
634	          start an IBSS. When the device has joined the BSS or IBSS the Join
635			  Complete event is raised to the host.
636    Params:	  StartJoinRequest_t - see below.
637
638******************************************************************************/
639
640#define JOIN_CMD_CTRL_TX_FLUSH         0x80 // When this bit is set, the firmware will flush all Tx
641		                                    // frames in the pipe and will not transmit them.
642#define JOIN_CMD_CTRL_EARLY_WAKEUP_ENABLE  0x01 // When this bit is set, the firmware will support
643		                                        // early wakeup time
644
645typedef enum
646{
647    BSS_TYPE_IBSS = 0,
648    BSS_TYPE_STA_BSS = 2,
649    BSS_TYPE_AP_BSS = 3,
650    MAX_BSS_TYPE = 0xFF
651} BssType_enum;
652
653#ifdef HOST_COMPILE
654typedef uint8 BSS_e;
655#else
656typedef BssType_enum BSS_e;
657#endif
658
659#define MAX_SSID_STR_LEN_BYTESX4 8
660/*
661BasicRateSet_t definition
662Bit     Description
663===     ===========
6640       When this bit is set, 1 MBPS is a member of the basic rate set.
6651       When this bit is set, 2 MBPS is a member of the basic rate set.
6662       When this bit is set, 5.5 MBPS is a member of the basic rate set.
6673       Must be set to 0.
6684       Must be set to 0.
6695       When this bit is set, 11 MBPS is a member of the basic rate set.
6706       Must be set to 0.
6717       Must be set to 0.
6728       When this bit is set, 22 MBPS is a member of the basic rate set.
6739-15    Must be set to 0.
674
675Note: For OFDM, the control response frame rates 6, 9, 12, 18, 24 and 36 Mbps are the
676      default values and are not configurable. Contact your TI representative for
677	  information.
678*/
679
680
681typedef struct
682{
683    uint32            bssIdL;        /* This field indicates the 32 LSBits of the MAC*/
684	                                 /* address of the BSS to join. */
685                                     /* Note: To correctly generate beacon frames, the */
686	                                 /* byte order of the BSS ID field must be */
687	                                 /* reversed. for example, if the MAC address of */
688	                                 /* the AP is 00 7E 99 11 22 33, program the BSS */
689	                                 /* ID field as 33 22 11 99 7E 00.*/
690
691    uint16            bssIdH;        /* This field indicates the 16 MSBits of the MAC*/
692	                                 /* address of the BSS to join. */
693
694    uint16            beaconInterval;/* This field specifies the time between target */
695	                                 /* beacon transmission times (TBTTs), in time */
696	                                 /* units (TUs). Valid values are 1 to 1024.*/
697
698#ifdef FW_RUNNING_AS_STA
699    ACXRxConfigStruct rxFilter;      /* This filed is the Rx filter configuration for*/
700	                                 /* the device while connected to the BSS or IBSS.*/
701	                                 /* This setting is overridden in case of a */
702	                                 /* measurement or a scan activity and is reset */
703	                                 /* after these activities end.*/
704#endif
705    BasicRateSet_t    basicRateSet;  /* For 802.11b, this field specifies the control*/
706	                                 /* response frame rate for the BSS or IBSS (that*/
707	                                 /* is, the BSSBasicRateSet parameter in the */
708	                                 /* 802.11 Specification). The WiLink uses this */
709	                                 /* field to determine the rate at which to */
710	                                 /* transmit control frame responses (such as ACK */
711	                                 /* or CTS frames). The format of this field is */
712	                                 /* shown in the above table (refer to */
713	                                 /* BasicRateSet_t).*/
714
715    uint8             dtimInterval;  /* This field specifies the number of beacon */
716	                                 /* intervals between DTIM beacon frames. The host*/
717	                                 /* is only required to set this field when the */
718	                                 /* BSS Type is infrastructure BSS (STA) or AP. */
719	                                 /* For an independent BSS, the host should set */
720	                                 /* this field to 1.*/
721
722    Rate_e            txCtrlFrmRate; /* OBSOLETE (replaced by ACX_FW_GEN_FRAME_RATES)*/
723    Mod_e             txCtrlFrmMod;  /* OBSOLETE (replaced by ACX_FW_GEN_FRAME_RATES)*/
724
725    BSS_e             bssType;       /* bits 0-2: This bitwise field specifies the type */
726	                                 /*  of BSS to start or join (Refer to BssType_enum). */
727	                                 /* bit 4: Band - The radio band in which to join*/
728	                                 /*  or start.*/
729                                     /*  0 - 2.4GHz band	*/
730	                                 /*  1 - 5GHz band*/
731	                                 /* bits 3, 5-7: Reserved*/
732
733    Channel_e         channelNumber; /* This field specifies the channel number of the*/
734	                                 /* BSS to join or start. Valid values are 1 to 14. */
735	                                 /* If the specified channel is not allowed in the*/
736	                                 /* regulatory domain, the command is rejected and*/
737	                                 /* the status code 0x0005 is returned in the */
738	                                 /* Command Status field.*/
739
740    uint8             ssidLength;    /* This field specifies the size of the SSID, which*/
741	                                 /* can be up to 32 bytes long.*/
742
743    uint32              ssidStr[MAX_SSID_STR_LEN_BYTESX4];
744	                                 /* This field specifies the SSID of the BSS to */
745	                                 /* start or join. The WiLink uses this information*/
746	                                 /* to filter beacon, probe response and probe */
747	                                 /* request frames (if configured to do so in bit 10*/
748	                                 /* in the Receive Configuration field of the */
749	                                 /* ACXRxConfig information element). */
750	                                 /* It also uses this information to determine if a*/
751	                                 /* probe response should be transmitted in */
752	                                 /* response to a received probe request.*/
753
754    uint8             ctrl;          /* Join command control field (refer to */
755	                                 /* JoinCmdCtrl_enum).*/
756
757    Rate_e            txMgmtFrmRate; /* OBSOLETE (replaced by ACX_FW_GEN_FRAME_RATES)*/
758    Mod_e             txMgmtFrmMod;  /* OBSOLETE (replaced by ACX_FW_GEN_FRAME_RATES)*/
759    uint8               reserved1;
760} StartJoinRequest_t;
761
762
763/******************************************************************************
764
765    ID:		  CMD_SET_KEYS
766	Desc:	  The host issues this command to manage the WEP key cache in the WiLink.
767	          The host can issue this command during the configuration or operation
768			  phase.
769    Params:	  SetKey_t - see below.
770
771******************************************************************************/
772
773#define NUM_ACCESS_CATEGORIES_COPY 4
774
775#define MAX_KEY_SIZE 32
776
777typedef enum
778{
779    KEY_ADD_OR_REPLACE = 1,             /* Add or replace a key in the WEP cache*/
780	KEY_REMOVE         = 2,             /* Remove a key from the WEP cache*/
781	KEY_SET_ID         = 3,             /* Set Key ID*/
782    MAX_KEY_ACTION     = MAX_POSITIVE16 /* force this enum to be uint16*/
783} KeyAction_enum;
784
785#ifdef HOST_COMPILE
786typedef uint16 KeyAction_e;
787#else
788typedef KeyAction_enum KeyAction_e;
789#endif
790
791typedef enum
792{
793    KEY_WEP_DEFAULT       = 0,
794    KEY_WEP_ADDR          = 1,
795    KEY_AES_GROUP         = 4,
796    KEY_AES_PAIRWISE      = 5,
797    KEY_WEP_GROUP         = 6,
798    KEY_TKIP_MIC_GROUP    = 10,
799    KEY_TKIP_MIC_PAIRWISE = 11
800} KeyType_enum;
801
802/*
803Key Size+Key Data table (valid value)
804KeyType_enum  Key Type	                  Valid Key Size	Key Data Field Format
805============  ========	                  ==============    =====================
8060x00          WEP default key	          5, 13, 29	        Key Size bytes of key data
807
8080x01          WEP key mapping key	      5, 13, 29         Key Size bytes of key data
809
8100x04          AES Group Key	              16                16 bytes of key data
811
8120x05          AES Pairwise Key	          16                16 bytes of key data
813
8140x0A          TKIP and MIC Group Key      32                16 bytes of TKIP key data
815                                                        8 bytes of Rx MIC key data
816                                                        8 bytes of Tx MIC key data
817
8180x0B          TKIP and MIC Pairwise Key   32                16 bytes of TKIP key data
819                                                        8 bytes of Rx MIC key data
820                                                        8 bytes of Tx MIC key data
821*/
822
823#ifdef HOST_COMPILE
824typedef uint8 KeyType_e;
825#else
826typedef KeyType_enum KeyType_e;
827#endif
828
829
830typedef enum
831{
832    NO_KEY            =  0,
833    KEY_SIZE_WEP_64   =  5,
834    KEY_SIZE_WEP_128  = 13,
835    KEY_SIZE_WEP_256  = 29,
836    KEY_SIZE_TKIP     = MAX_KEY_SIZE
837} KeySize_enum;                      /* WEP keysizes reflect 3 bytes appended from IV.*/
838
839#ifdef HOST_COMPILE
840typedef uint8 KeySize_e;
841#else
842typedef KeySize_enum KeySize_e;
843#endif
844
845
846typedef struct
847{
848    uint8 addr[MAC_ADDR_SIZE]; /* This field specifies the MAC address of the station to*/
849	                           /* add or remove from the WEP key cache. This field is */
850	                           /* ignored if a WEP default key is being added or removed.*/
851
852    KeyAction_e action;        /* This field specifies the action to be performed.*/
853	                           /* Refer to KeyAction_enum.*/
854
855    uint16      reserved;
856    KeySize_e   keySize;       /* This field indicates the size of the key in bytes */
857	                           /* being added. Valid values are listed in the Valid Key */
858	                           /* Size column in the above "Key Size+Key Data table". */
859
860    KeyType_e   type;          /* This field indicates the type of key being added.*/
861	                           /* Valid values are listed in the Value column in the*/
862	                           /* KeyType_enum.*/
863
864    uint8       ssidProfile;   /* This field indicates the SSID profile for which the */
865	                           /* key is set.*/
866    uint8       id;            /* Key ID - For TKIP and AES key types, this field */
867	                           /* indicates the value that should be inserted into the*/
868	                           /* KeyID field of frames transmitted using this key */
869	                           /* entry. For WEP default key types, this field indicates*/
870	                           /* the ID of the key to add or remove. */
871	                           /* For WEP key mapping key types, this field is ignored.*/
872	                           /* Valid values for this field are 0 to 3.*/
873
874    uint8       reserved2[6];
875    uint8       key[MAX_KEY_SIZE];
876	                           /* This field holds the security key data to add to the*/
877	                           /* STA table. The format of this field varies depending*/
878	                           /* on the type field. The format of this field for each*/
879	                           /* key type is described in the Key Data Field Format */
880	                           /* column in the "Key Size+Key Data table", above.*/
881
882    uint16      AcSeqNum16[NUM_ACCESS_CATEGORIES_COPY];
883	                           /* This field indicates the lower part of the PN\IV */
884	                           /* sequence number that is used, for the four Access*/
885	                           /* Categories.*/
886
887    uint32      AcSeqNum32[NUM_ACCESS_CATEGORIES_COPY];
888	                           /* This field indicates the higher part of the PN\IV */
889	                           /* sequence number that is used, for four Access */
890	                           /* Categories.*/
891
892} SetKey_t;
893
894
895/******************************************************************************
896
897    ID:		  CMD_READ_MEMORY
898	Desc:	  The host issues this command to read the WiLink device
899	          memory/registers.
900    Params:	  ReadWriteCommand_t - see below.
901	Note:     The Base Band address has special handling (16 bits registers and
902	          addresses). For more information, see the hardware specification.
903
904******************************************************************************/
905/******************************************************************************
906
907    ID:		  CMD_WRITE_MEMORY
908	Desc:	  The host issues this command to write the WiLink device memory/registers.
909    Params:	  ReadWriteCommand_t - see below.
910	Note:     The Base Band address has special handling (16 bits registers and
911	          addresses). For more information, see the hardware specification.
912
913******************************************************************************/
914
915#define MAX_READ_SIZE 256
916
917typedef struct
918{
919    uint32 addr;                 /* The address of the memory to read from or write to.*/
920    uint32 size;                 /* The amount of data in bytes to read from or write */
921	                             /* to the WiLink device.*/
922    uint8  value[MAX_READ_SIZE]; /* The actual value read from or written to the Wilink.*/
923	                             /* The source of this field is the Host in WRITE */
924	                             /* command or the Wilink in READ command.*/
925} ReadWriteCommand_t;
926
927
928/******************************************************************************
929
930    ID:		  CMD_BEACON
931	Desc:	  This command specifies the contents of the beacon template stored in
932	          the WiLink.
933    Params:	  PktTemplate_t - see below.
934
935******************************************************************************/
936
937/******************************************************************************
938
939    ID:		  CMD_PROBE_RESP
940	Desc:	  This command specifies the contents of the probe response template
941	          stored in the WiLink.
942    Params:	  PktTemplate_t - see below.
943
944******************************************************************************/
945
946/******************************************************************************
947
948    ID:		  CMD_NULL_DATA
949	Desc:	  This command specifies the contents of the Null data template
950	          stored in the WiLink.
951    Params:	  PktTemplate_t - see below.
952
953******************************************************************************/
954
955/******************************************************************************
956
957    ID:		  CMD_PROBE_REQ
958	Desc:	  This command specifies the contents of the probe request template
959	          stored in the WiLink.
960    Params:	  PktTemplate_t - see below.
961
962******************************************************************************/
963
964/******************************************************************************
965
966    ID:		  CMD_PS_POLL
967	Desc:	  This command specifies the contents of the PS-poll template
968	          stored in the WiLink.
969    Params:	  PktTemplate_t - see below.
970
971******************************************************************************/
972
973
974/******************************************************************************
975
976    ID:		  CMD_QOS_NULL_DATA
977	Desc:	  This command specifies the contents of the QOS-Null template
978	          stored in the WiLink.
979    Params:	  PktTemplate_t - see below.
980
981******************************************************************************/
982/* Template command data structure.*/
983#define MAX_TEMPLATES_SIZE 300
984typedef struct
985{
986	uint16 len;
987	uint8  templateStart[MAX_TEMPLATES_SIZE];
988} PktTemplate_t;
989
990
991/******************************************************************************
992
993      ID:	  CMD_TEST
994	Desc:	The TEST command can be issued immediately after the firmware has
995		  been downloaded, with no further configuration of the WiLink required.
996		  Full initialization of the WiLink is not required to invoke the TEST
997		  command and perform the radio test function.
998		  After testing, the system must be reset.
999		  Test parameters can be modified while a test is executing.
1000		  For instance, the host program can change the channel without resetting
1001		  the system.
1002
1003      Params:	  TestCmd_t - see below.
1004		  The returned values are copied to the cmd/sts MB replacing  the command
1005		  (similar to the interrogate mechanism).
1006
1007******************************************************************************/
1008typedef enum
1009{
1010    TEST_CMD_FCC                            = 0x01,
1011    TEST_CMD_TELEC							= 0x02,
1012    TEST_CMD_PLT_FCC_TELEC_TX_STOP			= 0x04,
1013    TEST_CMD_PLT_GAIN_GET                  	= 0x05,
1014    TEST_CMD_PLT_GAIN_ADJUST				= 0x06,
1015    TEST_CMD_PLT_TXPOWER_CAL_START			= 0x07,
1016    TEST_CMD_PLT_TXPOWER_CAL_STOP			= 0x08,
1017    TEST_CMD_PLT_GET_NVS_UPDATE_BUFFER     	= 0x09,
1018	TEST_CMD_PLT_RX_CALIBRATION			   	= 0x0a,
1019    TEST_CMD_RADIO_TUNE			   	        = 0x0b,
1020    TEST_CMD_RX_PER_START			   	    = 0x0c,
1021    TEST_CMD_RX_PER_STOP			   	    = 0x0d,
1022    MAX_TEST_CMD_ID							= 0xFF
1023} TestCmdID_enum;
1024
1025#ifdef HOST_COMPILE
1026typedef uint8 TestCmdID_e;
1027#else
1028typedef TestCmdID_enum TestCmdID_e;
1029#endif
1030
1031/******************************************************************************/
1032typedef enum
1033{
1034 	TEST_MODE_HOST_ORIGINATED_DATA				= 0x00,
1035	TEST_MODE_FIXED_SEQ_NUMBER					= 0x00,
1036	TEST_MODE_FW_ORIGINATED_DATA					= 0x01,
1037	TEST_MODE_RANDOM_DATA							= 0x05,
1038	TEST_MODE_ZOZO_DATA							= 0x09,
1039	TEST_MODE_FILLING_PATERN_MASK					= 0x0F,
1040	TEST_MODE_DELAY_REQUIRED						= 0x10,
1041	TEST_MODE_DISABLE_SRCRAMBLING_FLAG			= 0x20
1042}TestModeCtrlTypes_e;
1043
1044#ifdef HOST_COMPILE
1045typedef uint8 FccTestType_e;
1046#else
1047typedef TestModeCtrlTypes_e FccTestType_e;
1048#endif
1049
1050/******************************************************************************/
1051#define 	TEST_SEQ_NUM_MODE_FIXED				(0)
1052#define     TEST_SEQ_NUM_MODE_INCREMENTED		(1)
1053
1054/******************************************************************************
1055
1056  TestCmdId :	TEST_CMD_FCC - Tx continuous test
1057
1058  Description:  Continuous transmit series of numbers with a valid MAC header
1059                as was received from driver.
1060				However there is no 802.11 air access compliance.
1061
1062  Params:     	PERTxCfg_t fcc - see below.
1063
1064******************************************************************************/
1065#define NUM_OF_MAC_ADDR_ELEMENTS 6
1066typedef struct PERTxCfg_t
1067{
1068			/*input parameters*/
1069            uint32 numFrames;       /* number of frams to transmit, 0 = endless*/
1070            uint32 interFrameGap;   /* time gap in uSec */
1071            uint32 seqNumMode;      /* Fixed / Incremented */
1072            uint32 frameBodySize;    /* length of Mac Payload */
1073            uint8 channel;          /*channel number*/
1074            uint8 dataRate;         /* MBps 1,2,11,22,... 54           */
1075            uint8 modPreamble;		/* CTL_PREAMBLE 0x01 */
1076            uint8 band;				/* {BAND_SELECT_24GHZ 0x00 | BAND_SELECT_5GHZ 0x01} */
1077            uint8 modulation;		/* {PBCC_MODULATION_MASK |OFDM_MODULATION_MASK }*/
1078            FccTestType_e testModeCtrl;
1079            uint8 dest[NUM_OF_MAC_ADDR_ELEMENTS];          /* set to hard codded default {0,0,0xde,0xad,0xbe,0xef}; */
1080} PERTxCfg_t;
1081
1082/******************************************************************************
1083   TestCmdId :		TEST_CMD_TELEC
1084
1085   Description:  	Generate carrier wave in a specific channel and band
1086
1087   Params:     	TestCmdChannelBand_t        telec  - see below.
1088
1089******************************************************************************/
1090typedef struct
1091{
1092			/*input parameters*/
1093           Channel_e    channel; 		 /*Channel number*/
1094           RadioBand_e  band;           /* {BAND_SELECT_24GHZ 0x00 | BAND_SELECT_5GHZ 0x01} */
1095           uint8        padding[2];     /* padding to 32 bit */
1096} TestCmdChannelBand_t;
1097
1098/******************************************************************************
1099
1100  TestCmdId :		TEST_CMD_PLT_GAIN_GET
1101
1102	Description: Retrieves the TX chain gain settings.
1103
1104  Params:    		PltGainGet_t       gainGet - see public_radio.h
1105
1106
1107******************************************************************************/
1108
1109/******************************************************************************
1110
1111	TestCmdId:	TEST_CMD_PLT_GET_NVS_UPDATE_BUFFER
1112
1113	Description: This PLT function provides the all information required by
1114					the upper driver in order to update the NVS image.
1115					It received a parameter defining the type of update
1116					information required and provides an array of elements
1117					defining the data bytes to be written to the NVS image
1118					and the byte offset in which they should be written.
1119 Params:     PltNvsResultsBuffer_t nvsUpdateBuffer  - see public_radio.h
1120
1121
1122*****************************************************************************/
1123
1124
1125/******************************************************************************
1126
1127  TestCmdId :	TEST_CMD_PLT_GAIN_ADJUST
1128
1129	Description: retrieves the TX chain gain settings.
1130
1131	Params:     int32                txGainAdjust
1132
1133*****************************************************************************/
1134
1135/******************************************************************************
1136
1137  TestCmdId :	TEST_CMD_PLT_RX_CALIBRATION
1138
1139	Description: Used as part of the  RX calibration procedure, call this
1140			function for every calibration channel.
1141			The response for that function indicates only that command had been received by th FW,
1142			and not that the calibration procedure had been finished.
1143			The upper layer need to wait amount of ((numOfSamples*intervalBetweenSamplesUsec).
1144			To make sure that the RX  calibration  completed. before calling to the next command.
1145
1146	Params:     PltRxCalibrationRequest_t	 rxCalibration
1147
1148  ******************************************************************************/
1149typedef struct PltRxCalibrationRequest_t
1150{
1151	int32           expectedRssi;				/* The calibration generated signal power (db) */
1152	int32	        intervalBetweenSamplesUsec; /* uSec - recommended value 100 */
1153    uint8	        channel;
1154    RadioBand_e     band;
1155    int16	        numOfSamples;				/* recommended value  1000*/
1156}PltRxCalibrationRequest_t;
1157
1158/******************************************************************************
1159
1160TestCmdId :	TEST_CMD_PLT_TXPOWER_CAL_START
1161
1162Description:
1163
1164Params:     PltTxCalibrationRequest_t
1165
1166******************************************************************************/
1167typedef struct
1168{
1169	uint8			refTxPower;
1170	uint8			padding[3];
1171}PltTxCalibrationRequest_t;
1172
1173/******************************************************************************
1174	TestCmd_t - the main PLT structure
1175*******************************************************************************/
1176typedef struct TestCmd_t
1177{
1178    union
1179    {
1180           PERTxCfg_t	         			fcc;
1181           TestCmdChannelBand_t        			telec;
1182           PltGainGet_t          			gainGet;
1183           PltNvsResultsBuffer_t 			nvsUpdateBuffer;
1184           PltRxCalibrationRequest_t	 	rxCalibration;
1185           uint32               			txGainAdjust;
1186           TestCmdChannelBand_t     		radioTune;
1187		   PltTxCalibrationRequest_t		txCalibration;
1188    }testCmd_u;
1189    TestCmdID_e		testCmdId;
1190	int8			padding[3];
1191}TestCmd_t;
1192
1193
1194
1195/******************************************************************************
1196
1197    ID:		  CMD_NOISE_HIST
1198	Desc:	  This command starts/stops the noise histogram measurements.
1199    Params:	  NoiseHistRequest_t - see below.
1200
1201******************************************************************************/
1202#define NOISE_HIST_LEN 8
1203
1204typedef enum
1205{
1206    NOISE_HIST_STOP,
1207    NOISE_HIST_START,
1208    NOISE_HIST_INVALID = MAX_POSITIVE16 /* Force to be 16 bits enum*/
1209} NoiseHistMode_enum;
1210
1211#ifdef HOST_COMPILE
1212typedef uint16 NoiseHistMode_e;
1213#else
1214typedef NoiseHistMode_enum NoiseHistMode_e;
1215#endif
1216
1217typedef struct
1218{
1219    NoiseHistMode_e mode;             /* Start or stop the FW engine. */
1220	                                  /* Possible values are 1 (Start) and 0 (Stop).*/
1221
1222    uint16 sampleIntervalUSec;        /* The time interval in usec between measurements.*/
1223	                                  /* Valid values are between 100us (default) and */
1224	                                  /* 2ms (with 100us jumps). This parameter is */
1225	                                  /* relevant only when Mode is Start (1).*/
1226
1227    uint8  thresholds[NOISE_HIST_LEN];/* An array of eight 8 bit thresholds. The FW */
1228	                                  /* takes noise measurements, once every */
1229	                                  /* SampleIntervalUSec interval. If the measured */
1230	                                  /* noise level is between the threshold[X] and */
1231	                                  /* threshold[X 1], then the FW increments the */
1232	                                  /* noise histogram counter[X]. */
1233	                                  /* The counters are read via the */
1234	                                  /* ACXNoiseHistogramResults IE. This parameter is */
1235	                                  /* relevant only when Mode is Start (1).*/
1236} NoiseHistRequest_t;
1237
1238
1239/******************************************************************************
1240
1241    ID:		  CMD_RX_RESET
1242	Desc:	  This command resets the MAC Rx path. After the command is issued,
1243	          the MAC Rx path is reset the next time a frame is received (in the PHY
1244			  Rx Header interrupt).
1245    Params:	  None.
1246	Note:     This command is for TI internal use only.
1247
1248******************************************************************************/
1249
1250
1251/******************************************************************************
1252
1253    ID:		  CMD_LNA_CONTROL
1254	Desc:	  This command controls the LNA state.
1255    Params:	  LNAControl_t - see below.
1256
1257******************************************************************************/
1258
1259typedef enum
1260{
1261    LNA_MODE_MANUAL,    /* 0: The LNA is set to manual mode and is turned off.*/
1262	LNA_MODE_AUTO,      /* 1: The LNA is set to automatic mode.*/
1263    LNA_MODE_INVALID = 0xFF
1264} LnaMode_enum;
1265
1266#ifdef HOST_COMPILE
1267typedef uint8 LnaMode_e;
1268#else
1269typedef LnaMode_enum LnaMode_e;
1270#endif
1271
1272typedef struct
1273{
1274	LnaMode_e LNAControlField; /* refer to LnaMode_enum*/
1275    uint8	  padding[3];      /* for alignment to 32 bits boundry*/
1276} LNAControl_t;
1277
1278
1279/******************************************************************************
1280
1281    ID:		  CMD_MEASUREMENT
1282	Desc:	  This command instructs the WiLink device to begin a basic channel
1283	          load measurement on the specified channel. When the measurement
1284			  process actually starts running the WilLink device will raise the
1285			  Measurement Started event. When the measurement process completes as
1286			  a result of the end of the measurement duration or a STOP_MEASUREMENT
1287			  command, the WilLink device will raise a Measurement Complete event.
1288    Params:	  MeasurementParameters_t - see below.
1289
1290******************************************************************************/
1291typedef struct
1292{
1293    ACXRxConfigStruct rxFilter; /* This field is the Rx filter configuration for the */
1294	                            /* device while the measurement process is running. */
1295	                            /* When the process ends the previous Rx filter */
1296	                            /* configuration is reset. The filter configuration is*/
1297	                            /* composed of two 32 bit registers. When they are set*/
1298	                            /* to 0xFFFFFFFF the Rx filter configuration is not*/
1299	                            /* changed.*/
1300
1301    uint32 duration;            /* Specifies the measurement process duration in */
1302	                            /* microseconds. The value of 0 means infinite duration*/
1303	                            /* in which only a STOP_MEASUREMENT command can*/
1304	                            /* stop the measurement process.*/
1305
1306    Channel_e channel;          /* Channel number on which the measurement is performed,*/
1307	                            /* valid range 0-255 (1-14 for 802.11b).*/
1308
1309    RadioBand_e band;           /* Specifies the band to which the channel belongs. */
1310	                            /* 0 - 2.4GHz */
1311	                            /* 1 - 5GHz , */
1312	                            /* 0xFF - Current band.*/
1313
1314    uint8 padding[2];           /* for alignment to 32 bits boundry*/
1315} MeasurementParameters_t;
1316
1317/******************************************************************************
1318
1319    ID:		  CMD_STOP_MEASUREMENT
1320	Desc:	  This command instructs the WiLink to terminate any measurement in
1321	          progress. After processing this command, the WiLink returns to its
1322			  previous state (the state before the measurement was started) and
1323			  generates the Measurment Complete event.
1324    Params:	  None.
1325
1326******************************************************************************/
1327
1328/******************************************************************************
1329
1330    ID:		  CMD_DISCONNECT
1331	Desc:	  This command instructs the WiLink device to stop all BSS or IBSS activity.
1332	          The device will cancel all of its TSF dependent events and activities.
1333			  Power Save dependent activities are an exception to this, therefore
1334			  the host must exit Power Save mode by issuing the SET_PS_MODE command
1335			  before calling this command. When this command is complete the Disconnect
1336			  Complete event is raised to the host and the WiLink device is allowed
1337			  to enter the configured low power state.
1338    Params:	  DisconnectParameters_t - see below.
1339
1340******************************************************************************/
1341typedef struct
1342{
1343    ACXRxConfigStruct rxFilter; /* This field is the Rx filter configuration for the*/
1344	                            /* device that is set after the disconnection is */
1345	                            /* complete. */
1346
1347
1348} DisconnectParameters_t;
1349
1350
1351/******************************************************************************
1352
1353    ID:		  CMD_SET_PS_MODE
1354	Desc:	  This command turns ON/OFF Power save protocol on the WiLink.
1355	          After HW configuration, FW sends Null data packet to the AP with Power
1356			  Management bit set accordingly to the field "Mode" of this command
1357			  structure. After processing this command, the FW generates the
1358			  PS_COMPLETE event.
1359    Params:	  PSModeParameters_t - see below.
1360
1361******************************************************************************/
1362
1363typedef enum
1364{
1365    STATION_ACTIVE_MODE,
1366    STATION_POWER_SAVE_MODE
1367} StationPSMode_enum;
1368
1369#ifdef HOST_COMPILE
1370typedef uint8 StationPowerSaveMode_e;
1371#else
1372typedef StationPSMode_enum StationPowerSaveMode_e;
1373#endif
1374
1375/*
1376TxdRateSet_t definition
1377Bit     Description
1378===     ===========
13790-12    Every one of bits 0-12 specifies rate described in the column on left. Only
1380        one bit could be set for the command, all other should be zeroed.
13810       1 MBPS
13821       2 MBPS
13832       5.5 MBPS
13843       6 MBPS
13854       9 MBPS
13865       11 MBPS
13876       12 MBPS
13887       18 MBPS
13898       22 MBPS
13909       24 MBPS
139110      36 MBPS
139211      48 MBPS
139312      54 MBPS
139413      Unused (set to 0).
139514      PBCC - When this bit is set, the WiLink transmits probe requests with PBCC
1396        modulation.
139715      Preamble - When this bit is set, the WiLink transmits probe requests with a
1398                   short preamble. When this bit is clear, the WiLink transmits the
1399				   frame with a long preamble.
1400
1401If neither the PBCC bit or OFDM rate are set, then the modulation format for probe
1402requests is CCK for 5.5 or 11 Mbps or DBPSK/DQPSK for 1 and 2 Mbps.
1403*/
1404
1405typedef struct
1406{
1407    StationPowerSaveMode_e mode;         /* This field specifies the future Power save*/
1408	                                     /* protocol mode of the system. */
1409	                                     /* When set, Power save protocol is enabled. */
1410	                                     /* When cleared, Power save protocol is */
1411	                                     /* disabled (refer to StationPSMode_enum).*/
1412
1413    uint8                  needToSendNullData;
1414    uint8 numberOfRetries;               /* This field specifies the maximum allowed */
1415	                                     /* number of retries of the Null data packet */
1416	                                     /* that FW will send after switching the */
1417	                                     /* Power Save Protocol mode.*/
1418
1419    uint8 hangOverPeriod;                /* This field specifies the hangover period, */
1420	                                     /* which is the time in TUs during which the */
1421	                                     /* WiLink remains awake after sending an MPDU */
1422	                                     /* with the Power Save bit set, indicating that*/
1423	                                     /* the station is to go into Power Save mode. */
1424	                                     /* Setting bit 0 does not affect the hangover */
1425	                                     /* period.*/
1426
1427    TxdRateSet_t rateToTransmitNullData; /* This bitwise field specifies the rate and */
1428	                                     /* modulation to transmit the Null data packet*/
1429	                                     /* to the AP. refer to above table */
1430	                                     /* (TxdRateSet_t). */
1431
1432    uint8 padding[2];                    /* for alignment to 32 bits boundry*/
1433} PSModeParameters_t;
1434
1435/******************************************************************************
1436
1437    ID:		  CMD_CHANNEL_SWITCH
1438	Desc:	  This command instructs the WiLink to switch serving channel at the given
1439	          time. Once the channel switch is performed, the Channel Switch Complete
1440			  event is raised to the host.
1441    Params:	  ChannelSwitchParameters_t - see below.
1442
1443******************************************************************************/
1444typedef struct
1445{
1446    Channel_e channel;  /* The new serving channel.*/
1447    uint8 switchTime;   /* Relative time of the serving channel switch in TBTT units.*/
1448    Bool_e txSuspend;   /* 1: Suspend TX till switch time; */
1449	                    /* 0: Do not suspend TX*/
1450    Bool_e flush;       /* 1: Flush TX at switch time; */
1451	                    /* 0: Do not flush*/
1452
1453} ChannelSwitchParameters_t;
1454
1455/******************************************************************************
1456
1457    ID:		  CMD_STOP_CHANNEL_SWICTH
1458	Desc:	  This command instructs the WiLink device to cancel performing a
1459	          pending channel switch event command.
1460    Params:	  None.
1461
1462******************************************************************************/
1463
1464/******************************************************************************
1465
1466    ID:		  CMD_AP_DISCOVERY
1467	Desc:	  This command instructs the WiLink device to perform an AP discovery
1468	          measurement on a single channel. This command can only be issued after
1469	          a measurement process has been started by the WiLink device as a result
1470	          of a previous Measurement command. The Measurement command specifies the
1471	          channel on which the AP discovery is performed. Once the "AP discovery"
1472	          measurement is completed either by a STOP_AP_DISCOVERY command or when
1473	          the duration has expired, it will send an "AP discovery complete event"
1474	          to the host.
1475    Params:	  ApDiscoveryParameters_t - see below.
1476
1477******************************************************************************/
1478/*
1479TxdRateSet_t definition
1480Bit     Description
1481===     ===========
14820-12    Every one of bits 0-12 specifies rate described in the column on left. Only
1483        one bit could be set for the command, all other should be zeroed.
14840       1 MBPS
14851       2 MBPS
14862       5.5 MBPS
14873       6 MBPS
14884       9 MBPS
14895       11 MBPS
14906       12 MBPS
14917       18 MBPS
14928       22 MBPS
14939       24 MBPS
149410      36 MBPS
149511      48 MBPS
149612      54 MBPS
149713      Unused (set to 0).
149814      PBCC - When this bit is set, the WiLink transmits probe requests with PBCC
1499        modulation.
1500        Notes:
1501           Does not apply (set to 0) for rates 1 and 2 Mbps.
1502           Does not apply (set to 0) for RevG-OFDM rates.
150315      Preamble - When this bit is set, the WiLink transmits probe requests with a
1504                   short preamble. When this bit is clear, the WiLink transmits the
1505				   frame with a long preamble.
1506                   Notes:
1507                     Must be LONG (0) for 1Mbps rate.
1508				     Does not apply (set to 0) for RevG-OFDM rates.
1509
1510If neither the PBCC bit or OFDM rate are set, then the modulation format for probe
1511requests is CCK for 5.5 or 11 Mbps or DBPSK/DQPSK for 1 and 2 Mbps.
1512*/
1513typedef struct
1514{
1515    ACXRxConfigStruct rxFilter; /* This field is the Rx filter configuration for the */
1516	                            /* device while the AP Discovery process is running. */
1517	                            /* When the process ends the previous Rx filter */
1518	                            /* configuration is reset. The filter configuration is*/
1519	                            /* composed of two 32 bit registers. When they are set */
1520	                            /* to 0xFFFFFFFF the Rx filter configuration is not */
1521	                            /* changed.*/
1522
1523    uint32 scanDuration;        /* This field specifies the amount of time, in time*/
1524	                            /* units (TUs), to perform the AP discovery. The value*/
1525	                            /* can range from 0 to 65535 TUs (67.1 seconds). */
1526
1527    uint16 scanOptions;         /* This field specifies whether the AP discovery is */
1528	                            /* performed by an active scan or a passive scan. */
1529	                            /* 0 - ACTIVE, 1 - PASSIVE.*/
1530
1531    uint8  numOfProbRqst;       /* This field indicates the number of probe requests to*/
1532	                            /* send per channel, when active scan is specified. */
1533                                /* Note: for EXC measurement this value should be set */
1534	                            /*       to 1.*/
1535
1536    uint8 txPowerAttenuation;   /* TX power level to be used for sending probe requests*/
1537	                            /* when active scan is specified. */
1538	                            /* If 0, leave normal TX power level for this channel. */
1539
1540    TxdRateSet_t txdRateSet;    /* This bitwise field specifies the rate and modulation*/
1541	                            /* to transmit the probe request when an active scan is*/
1542	                            /* specified. Refer to above descrption ob TxdRateSet.*/
1543    uint8 padding[3];           /* for alignment to 32 bits boundry*/
1544} ApDiscoveryParameters_t;
1545
1546/******************************************************************************
1547
1548    ID:		  CMD_STOP_AP_DISCOVERY
1549	Desc:	  This command instructs the WiLink to terminate the AP Discovery
1550	          measurement in progress. After processing this command, the WiLink
1551			  returns to its previous state  and generates the AP Discovery Complete
1552			  Event.
1553    Params:	  None.
1554
1555******************************************************************************/
1556
1557/******************************************************************************
1558
1559    ID:		  CMD_SPS_SCAN
1560	Desc:	  This command instructs the WiLink to perform a scheduled passive
1561	          scan for BSS/IBSSs. The WiLink monitors the specified channel(s)
1562			  for beacons. The WiLink sends Scheduled Scan Complete event to notify
1563			  the host when it has completed a scan.
1564    Params:	  InfoElement_t - see below.
1565
1566******************************************************************************/
1567/* Scheduled - General scan parameters.*/
1568typedef struct
1569{
1570    ACXRxConfigStruct rxCfg;         /* Rx filter to be used for each channel scan. */
1571	                                 /* The BSSID filter enable will be set (by the scan*/
1572	                                 /* process) to ON for a specific channel if the*/
1573	                                 /* BSSID of this channel is a unicast address. */
1574	                                 /* Otherwise it will be set to OFF (Refer to */
1575	                                 /* ACXRxConfigStruct).*/
1576
1577    uint32            scanCmdTime_h; /* This filed is the latest 32 MSBits of TSF known*/
1578	                                 /* at the time the SPS command was issued. When the*/
1579	                                 /* scan process is about to begin, this value is */
1580	                                 /* used to determine if the AP has performed a */
1581	                                 /* recovery by comparing this value to the current*/
1582	                                 /* TSF. (An AP that has performed a recovery should*/
1583	                                 /* have a lower TSF then the one that was saved).*/
1584
1585    uint32            scanCmdTime_l; /* This filed is the latest 32 LSBits of TSF known*/
1586	                                 /* at the time the SPS command was issued. */
1587
1588    uint16            scanOptions;   /* This bitwise field indicates the scan options. */
1589	                                 /* Bits [0,2:15] are reserved. */
1590	                                 /* Bit 1 is defined as follows:*/
1591	                                 /*  Band Select - When this bit is set, the WiLink*/
1592	                                 /*                scans the specified channels in */
1593	                                 /*                the 5GHz band. */
1594	                                 /*                When this bit is cleared, the */
1595	                                 /*                WiLink scans the specified */
1596	                                 /*                channels in the 2.4GHz band. */
1597
1598
1599    uint8             numChannels;   /* Number of scan channels in the list (minimum */
1600	                                 /* (minimumis 1, maximum is 30).*/
1601
1602    uint8		      padding;       /* for alignment to 32 bits boundry*/
1603} ScheduledGeneralParameters_t;
1604
1605
1606/* Scheduled - Per-Channel scan parameters.*/
1607typedef struct
1608{
1609    uint32 scanStartTime;      /* Duration in microseconds of the scan on this channel */
1610	                           /* (Scan could be aborted before this duration in case of*/
1611	                           /* early termination condition met on the channel). */
1612
1613    uint32 scanMaxDuration;    /* Lower 4 bytes of TSF time in microseconds when the */
1614	                           /* scan should start listening on the desired channel. */
1615
1616    uint32 bssIdL;             /* 32 LSBits of BSSID of the AP to scan for. If scanning */
1617	                           /* on this  channel any BSSID, this field shall be set */
1618	                           /* to broadcast BSSID. */
1619
1620    uint16 bssIdH;             /* 16 MSBits of BSSID of the AP to scan for. */
1621
1622    ETCondCount_t ETCondCount; /* bit 0-3: Early Termination count - This field */
1623	                           /*          defines the maximum number of beacons*/
1624	                           /*          or probe responses or both (according*/
1625	                           /*          to condition) to collect before ending*/
1626	                           /*          a scan.*/
1627
1628	                           /* Bit 4-5: Early Termination Condition (refer */
1629	                           /*          to ETCondition_enum).*/
1630    Channel_e     channel;     /* Channel number to scan, valid range 0-255 */
1631	                           /* (1-14 for 802.11b).*/
1632} ScheduledChannelParameters_t;
1633
1634
1635/* The Scheduled Scan command structure.*/
1636typedef struct
1637{
1638    ScheduledGeneralParameters_t scheduledGeneralParameters;
1639    ScheduledChannelParameters_t scheduledChannelParameters[SCAN_MAX_NUM_OF_CHANNELS];
1640} ScheduledScanParameters_t;
1641
1642/******************************************************************************
1643
1644    ID:		  CMD_STOP_SPS_SCAN
1645	Desc:	  This command instructs the WiLink to terminate a currently running
1646	          SPS or a pending SPS.. After processing this command, the WiLink
1647			  returns to its previous state and generates the Scheduled Scan
1648			  Complete Event.
1649    Params:	  None.
1650
1651******************************************************************************/
1652
1653/******************************************************************************
1654
1655    ID:		  CMD_HEALTH_CHECK
1656	Desc:	  This command instructs the WiLink to raise a MAC status event
1657	          which contains the current FCS Error counter.
1658    Params:	  None.
1659
1660******************************************************************************/
1661
1662/******************************************************************************
1663
1664    ID:		  CMD_DEBUG
1665	Desc:
1666    Params:	  debugCommnad_t - see below.
1667
1668******************************************************************************/
1669#define MAX_DEBUG_PARAMETERS 10
1670
1671typedef struct
1672{
1673    uint32  id;
1674    uint32  params[MAX_DEBUG_PARAMETERS];
1675} debugCommnad_t;
1676
1677/* PLT public definitions*/
1678#define TEST_CONTINUOUS 0x04       /* transmit frames contimuously */
1679
1680
1681/*This typedef corresponds to the Fig 1 Frame Format for PER test given in PER test doc.*/
1682#define PER_MODE_TX 1
1683#define PER_MODE_RX 2
1684#define INFRA   0x2         /* BSS is in Infrastructure mode */
1685#define LOCAL_MEM_LAST      0x02000000
1686#define PBCC_MODULATION_MASK 0x80
1687#define OFDM_MODULATION_MASK 0x40
1688#define BAND_SELECT_5GHZ     0x10
1689#define CTL_PREAMBLE         0x01
1690
1691
1692
1693#endif /* PUBLIC_COMMANDS_H*/
1694