?lang_form? ?lang_select? ?lang_submit? ?lang_endform?
{HEADER END}
{BLAME START}

library

?curdirlinks? -

Blame information for rev 32

Line No. Rev Author Line
1 32 kaklik /******************************************************************************
2  
3 MRF24WB0M Driver API Interface
4 Module for Microchip TCP/IP Stack
5 -Provides access to MRF24WB0M WiFi controller
6 -Reference: MRF24WB0M Data sheet, IEEE 802.11 Standard
7  
8 *******************************************************************************
9 FileName: WFApi.h
10 Dependencies: TCP/IP Stack header files
11 Processor: PIC18, PIC24F, PIC24H, dsPIC30F, dsPIC33F, PIC32
12 Compiler: Microchip C32 v1.10b or higher
13 Microchip C30 v3.22 or higher
14 Microchip C18 v3.34 or higher
15 Company: Microchip Technology, Inc.
16  
17 Software License Agreement
18  
19 Copyright (C) 2002-2010 Microchip Technology Inc. All rights reserved.
20  
21 Microchip licenses to you the right to use, modify, copy, and distribute:
22 (i) the Software when embedded on a Microchip microcontroller or digital
23 signal controller product ("Device") which is integrated into
24 Licensee's product; or
25 (ii) ONLY the Software driver source files ENC28J60.c, ENC28J60.h,
26 ENCX24J600.c and ENCX24J600.h ported to a non-Microchip device used in
27 conjunction with a Microchip ethernet controller for the sole purpose
28 of interfacing with the ethernet controller.
29  
30 You should refer to the license agreement accompanying this Software for
31 additional information regarding your rights and obligations.
32  
33 THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
34 KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY
35 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
36 NON-INFRINGEMENT. IN NO EVENT SHALL MICROCHIP BE LIABLE FOR ANY INCIDENTAL,
37 SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST
38 OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, ANY CLAIMS BY
39 THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS
40 FOR INDEMNITY OR CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON
41 THE BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF WARRANTY, OR
42 OTHERWISE.
43  
44  
45 Author Date Comment
46 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
47 KH 27 Jan 2010 Created for MRF24WB0M
48 ******************************************************************************/
49  
50 #ifndef __WF_API_H_
51 #define __WF_API_H_
52  
53 /*
54 *********************************************************************************************************
55 * DEFINES
56 *********************************************************************************************************
57 */
58 /*-----------------------------*/
59 /* WiFi Driver Version Number */
60 /*-----------------------------*/
61 #define WF_HOST_DRIVER_VERSION_NUMBER "2.5.2"
62  
63 /* API defines */
64 #define WF_MAX_NUM_CHANNELS (14)
65 #define WF_MAX_NUM_CONNECTION_PROFILES (8)
66 #define WF_CP_LIST_LENGTH (8)
67 #define WF_MAX_SSID_LENGTH (32)
68 #define WF_BSSID_LENGTH (6)
69 #define WF_RETRY_FOREVER (255)
70 #define WF_CHANNEL_LIST_LENGTH (14)
71 #define WF_MAX_SECURITY_KEY_LENGTH (64)
72 #define WF_NUM_THROTTLE_TABLE_ROWS (4)
73  
74 #define WF_MIN_NUM_CPID (1)
75 #define WF_MAX_NUM_CPID (8)
76  
77 #define WF_NO_CPID_ACTIVE (0)
78  
79 #define WF_RTS_THRESHOLD_MAX (2347) /* maximum RTS threshold size in bytes */
80  
81 #define WF_MAX_NUM_RATES (8)
82  
83 /* Key size defines */
84 #define WF_MIN_WPA_PASS_PHRASE_LENGTH (8)
85 #define WF_MIN_WPA_PASS_PHRASE_LENGTH (8)
86 #define WF_MAX_WPA_PASS_PHRASE_LENGTH (64)
87 #define WF_MAX_WPA2_PASS_PHRASE_LENGTH (64)
88 #define WF_WPA_KEY_LENGTH (32)
89 #define WF_WPA2_KEY_LENGTH (32)
90  
91 /*------------------------------------------------------------------------------*/
92 /* These are error codes returned in the result field of a management response. */
93 /*------------------------------------------------------------------------------*/
94 #define WF_SUCCESS ((UINT16)1)
95 #define WF_ERROR_INVALID_SUBTYPE ((UINT16)2)
96 #define WF_ERROR_OPERATION_CANCELLED ((UINT16)3)
97 #define WF_ERROR_FRAME_END_OF_LINE_OCCURRED ((UINT16)4)
98 #define WF_ERROR_FRAME_RETRY_LIMIT_EXCEEDED ((UINT16)5)
99 #define WF_ERROR_EXPECTED_BSS_VALUE_NOT_IN_FRAME ((UINT16)6)
100 #define WF_ERROR_FRAME_SIZE_EXCEEDS_BUFFER_SIZE ((UINT16)7)
101 #define WF_ERROR_FRAME_ENCRYPT_FAILED ((UINT16)8)
102 #define WF_ERROR_INVALID_PARAM ((UINT16)9)
103 #define WF_ERROR_AUTH_REQ_ISSUED_WHILE_IN_AUTH_STATE ((UINT16)10)
104 #define WF_ERROR_ASSOC_REQ_ISSUED_WHILE_IN_ASSOC_STATE ((UINT16)11)
105 #define WF_ERROR_INSUFFICIENT_RESOURCES ((UINT16)12)
106 #define WF_ERROR_TIMEOUT_OCCURRED ((UINT16)13)
107 #define WF_ERROR_BAD_EXCHANGE_ENCOUNTERED_IN_FRAME_RECEPTION ((UINT16)14)
108 #define WF_ERROR_AUTH_REQUEST_REFUSED ((UINT16)15)
109 #define WF_ERROR_ASSOCIATION_REQUEST_REFUSED ((UINT16)16)
110 #define WF_ERROR_PRIOR_MGMT_REQUEST_IN_PROGRESS ((UINT16)17)
111 #define WF_ERROR_NOT_IN_JOINED_STATE ((UINT16)18)
112 #define WF_ERROR_NOT_IN_ASSOCIATED_STATE ((UINT16)19)
113 #define WF_ERROR_NOT_IN_AUTHENTICATED_STATE ((UINT16)20)
114 #define WF_ERROR_SUPPLICANT_FAILED ((UINT16)21)
115 #define WF_ERROR_UNSUPPORTED_FEATURE ((UINT16)22)
116 #define WF_ERROR_REQUEST_OUT_OF_SYNC ((UINT16)23)
117 #define WF_ERROR_CP_INVALID_ELEMENT_TYPE ((UINT16)24)
118 #define WF_ERROR_CP_INVALID_PROFILE_ID ((UINT16)25)
119 #define WF_ERROR_CP_INVALID_DATA_LENGTH ((UINT16)26)
120 #define WF_ERROR_CP_INVALID_SSID_LENGTH ((UINT16)27)
121 #define WF_ERROR_CP_INVALID_SECURITY_TYPE ((UINT16)28)
122 #define WF_ERROR_CP_INVALID_SECURITY_KEY_LENGTH ((UINT16)29)
123 #define WF_ERROR_CP_INVALID_WEP_KEY_ID ((UINT16)30)
124 #define WF_ERROR_CP_INVALID_NETWORK_TYPE ((UINT16)31)
125 #define WF_ERROR_CP_INVALID_ADHOC_MODE ((UINT16)32)
126 #define WF_ERROR_CP_INVALID_SCAN_TYPE ((UINT16)33)
127 #define WF_ERROR_CP_INVALID_CP_LIST ((UINT16)34)
128 #define WF_ERROR_CP_INVALID_CHANNEL_LIST_LENGTH ((UINT16)35)
129 #define WF_ERROR_NOT_CONNECTED ((UINT16)36)
130 #define WF_ERROR_ALREADY_CONNECTING ((UINT16)37)
131 #define WF_ERROR_DISCONNECT_FAILED ((UINT16)38)
132 #define WF_ERROR_NO_STORED_BSS_DESCRIPTOR ((UINT16)39)
133 #define WF_ERROR_INVALID_MAX_POWER ((UINT16)40)
134  
135 /*---------------------------------------------------------------------*/
136 /* Used for eventNotificationField bit mask in tWFCAElements structure */
137 /*---------------------------------------------------------------------*/
138 #define WF_NOTIFY_CONNECTION_ATTEMPT_SUCCESSFUL ((UINT8)(0x01))
139 #define WF_NOTIFY_CONNECTION_ATTEMPT_FAILED ((UINT8)(0x02))
140 #define WF_NOTIFY_CONNECTION_TEMPORARILY_LOST ((UINT8)(0x04))
141 #define WF_NOTIFY_CONNECTION_PERMANENTLY_LOST ((UINT8)(0x08))
142 #define WF_NOTIFY_CONNECTION_REESTABLISHED ((UINT8)(0x10))
143 #define WF_NOTIFY_ALL_EVENTS ((UINT8)(0x1f))
144  
145 /*------------------------------------------------------------------------------------------*/
146 /* Multicast Filter ID's */
147 /* Infrastructure can use 2,3,4,5 and AdHoc can only use 4,5. Use 4,5 which works for both */
148 /*------------------------------------------------------------------------------------------*/
149 #define WF_MULTICAST_FILTER_1 (4)
150 #define WF_MULTICAST_FILTER_2 (5)
151  
152 #define WF_SCAN_ALL ((UINT8)(0xff))
153 /*
154 *********************************************************************************************************
155 * DATA TYPES
156 *********************************************************************************************************
157 */
158  
159 /*----------------------------------------------------------------------------*/
160 /* Events that can be invoked in WF_ProcessEvent(). Note that the */
161 /* connection events are optional, all other events the app must be notified. */
162 /*----------------------------------------------------------------------------*/
163 typedef enum
164 {
165 WF_EVENT_CONNECTION_SUCCESSFUL = 1, /* Connection attempt to network successful */
166 WF_EVENT_CONNECTION_FAILED = 2, /* Connection attempt failed */
167  
168  
169 WF_EVENT_CONNECTION_TEMPORARILY_LOST = 3, /* Connection lost; MRF24WB0M attempting to reconnect */
170 WF_EVENT_CONNECTION_PERMANENTLY_LOST = 4, /* Connection lost; MRF24WB0M no longer trying to connect */
171 WF_EVENT_CONNECTION_REESTABLISHED = 5,
172  
173 WF_EVENT_FLASH_UPDATE_SUCCESSFUL = 6, /* Update to FLASH successful */
174 WF_EVENT_FLASH_UPDATE_FAILED = 7, /* Update to FLASH failed */
175  
176  
177  
178 WF_EVENT_KEY_CALCULATION_COMPLETE = 8, /* Key calculation has completed */
179  
180 WF_EVENT_SCAN_RESULTS_READY = 9, /* scan results are ready */
181 WF_EVENT_IE_RESULTS_READY = 10, /* IE data ready */
182  
183  
184 WF_EVENT_RX_PACKET_RECEIVED = 11 /* Rx data packet has been received by MRF24WB0M */
185  
186 } tWFEvents;
187  
188 typedef struct WFMacStatsStruct
189 {
190 /**
191 Number of frames received with the Protected Frame subfield of the Frame
192 Control field set to zero and the value of dot11ExcludeUnencrypted causes
193 that frame to be discarded.
194 */
195 UINT32 MibWEPExcludeCtr;
196 UINT32 MibTxBytesCtr; // Total number of Tx bytes that have been transmitted
197  
198 /**
199 Number of frames successfully transmitted that had the multicast bit set
200 in the destination MAC address.
201 */
202 UINT32 MibTxMulticastCtr;
203 /**
204 Number of Tx frames that failed due to the number of transmits exceeding
205 the retry count.
206 */
207 UINT32 MibTxFailedCtr;
208 UINT32 MibTxRtryCtr; // Number of times a transmitted frame needed to be retried
209 UINT32 MibTxMultRtryCtr; // Number of times a frame was successfully transmitted after more than one retransmission.
210 UINT32 MibTxSuccessCtr; // Number of Tx frames successfully transmitted.
211 UINT32 MibRxDupCtr; // Number of frames received where the Sequence Control field indicates a duplicate.
212 UINT32 MibRxCtsSuccCtr; // Number of CTS frames received in response to an RTS frame.
213 UINT32 MibRxCtsFailCtr; // Number of times an RTS frame was not received in response to a CTS frame.
214 UINT32 MibRxAckFailCtr; // Number of times an Ack was not received in response to a Tx frame.
215 UINT32 MibRxBytesCtr; // Total number of Rx bytes received.
216 UINT32 MibRxFragCtr; // Number of successful received frames (management or data)
217 UINT32 MibRxMultCtr; // Number of frames received with the multicast bit set in the destination MAC address.
218 UINT32 MibRxFCSErrCtr; // Number of frames received with an invalid Frame Checksum (FCS).
219  
220 /**
221 Number of frames received where the Protected Frame subfield of the Frame Control Field is set to
222 one and the WEPOn value for the key mapped to the transmitter’s MAC address indicates the frame
223 should not have been encrypted.
224 */
225 UINT32 MibRxWEPUndecryptCtr;
226 UINT32 MibRxFragAgedCtr; // Number of times that fragments ‘aged out’, or were not received in the allowable time.
227 UINT32 MibRxMICFailureCtr; // Number of MIC failures that have occurred.
228 } tWFMacStats;
229  
230  
231 /*-------------------------------------------------------*/
232 /* Security Type defines */
233 /* Used in WF_CPSet/GetSecurityType WF_CPSet/GetElements */
234 /*-------------------------------------------------------*/
235 #define WF_SECURITY_OPEN (0)
236 #define WF_SECURITY_WEP_40 (1)
237 #define WF_SECURITY_WEP_104 (2)
238 #define WF_SECURITY_WPA_WITH_KEY (3)
239 #define WF_SECURITY_WPA_WITH_PASS_PHRASE (4)
240 #define WF_SECURITY_WPA2_WITH_KEY (5)
241 #define WF_SECURITY_WPA2_WITH_PASS_PHRASE (6)
242 #define WF_SECURITY_WPA_AUTO_WITH_KEY (7)
243 #define WF_SECURITY_WPA_AUTO_WITH_PASS_PHRASE (8)
244  
245 /*---------------------------------------------------------------------*/
246 /* Network Type defines */
247 /* Used in WF_CPSet/GetNetworkType, WF_CPSetElements, WF_CPGetElements */
248 /*---------------------------------------------------------------------*/
249 typedef enum
250 {
251 WF_INFRASTRUCTURE = 1,
252 WF_ADHOC = 2
253 } tWFNetworkType;
254  
255 /*--------------------------------------------------------*/
256 /* Ad Hoc behavior defines */
257 /* Used in WF_CPSet/GetAdhocBehavor, WF_CPSet/GetElements */
258 /*--------------------------------------------------------*/
259 typedef enum
260 {
261 WF_ADHOC_CONNECT_THEN_START = 0,
262 WF_ADHOC_CONNECT_ONLY = 1,
263 WF_ADHOC_START_ONLY = 2
264 } tWFAdhocBehavior;
265  
266 /*----------------------------------------------------*/
267 /* Scan type defines */
268 /* Used in WF_CASet/GetScanType, WF_CASet/GetElements */
269 /*----------------------------------------------------*/
270 typedef enum
271 {
272 WF_ACTIVE_SCAN = 1,
273 WF_PASSIVE_SCAN = 2
274 } tWFScanTypes;
275  
276 /*-----------------------------------------------------------------------------------------*/
277 /* Beacon Timeout and Deauth defines */
278 /* Used in WF_CASet/GetBeaconTimeoutAction, WF_CASet/GetDeauthAction, WF_CASet/GetElements */
279 /*-----------------------------------------------------------------------------------------*/
280 typedef enum
281 {
282 WF_DO_NOT_ATTEMPT_TO_RECONNECT = 0,
283 WF_ATTEMPT_TO_RECONNECT = 1
284 } tWFConnectionLossActions;
285  
286 typedef enum
287 {
288 WF_DISABLED = 0,
289 WF_ENABLED = 1
290 } tWFEnableDisable;
291  
292 /* eventInfo defines for WF_ProcessEvent(), case WF_EVENT_CONNECTION_FAILED */
293 /* Also value for index 3 of WF_CONNECTION_FAILED_EVENT_SUBTYPE */
294 typedef enum
295 {
296 WF_JOIN_FAILURE = 2,
297 WF_AUTHENTICATION_FAILURE = 3,
298 WF_ASSOCIATION_FAILURE = 4,
299 WF_WEP_HANDSHAKE_FAILURE = 5,
300 WF_PSK_CALCULATION_FAILURE = 6,
301 WF_PSK_HANDSHAKE_FAILURE = 7,
302 WF_ADHOC_JOIN_FAILURE = 8,
303 WF_SECURITY_MISMATCH_FAILURE = 9,
304 WF_NO_SUITABLE_AP_FOUND_FAILURE = 10,
305 WF_RETRY_FOREVER_NOT_SUPPORTED_FAILURE = 11
306  
307 } tWFConnectionFailureCodes;
308  
309 /* eventInfo defines for WF_ProcessEvent(), case WF_EVENT_CONNECTION_TEMPORARILY_LOST */
310 typedef enum
311 {
312 WF_BEACON_TIMEOUT = 1,
313 WF_DEAUTH_RECEIVED = 2,
314 WF_DISASSOCIATE_RECEIVED = 3
315 } tWFConnectionLostCodes;
316  
317 /* Tx Data Rates */
318 typedef enum
319 {
320 WF_ONE_MBIT_TX_RATE = 0,
321 WF_TWO_MBIT_TX_RATE = 1
322 } tWFTxDataRates;
323  
324 /* WiFi Device Types */
325 typedef enum
326 {
327 MRF24WB0M_DEVICE = 1
328 } tWFDeviceTypes;
329  
330 /* Regional Domains */
331 typedef enum
332 {
333 WF_DOMAIN_FCC = 0, /* Available Channels: 1 - 11 */
334 WF_DOMAIN_IC = 1, /* Available Channels: 1 - 11 */
335 WF_DOMAIN_ETSI = 2, /* Available Channels: 1 - 13 */
336 WF_DOMAIN_SPAIN = 3, /* Available Channels: 1 - 13 */
337 WF_DOMAIN_FRANCE = 4, /* Available Channels: 1 - 13 */
338 WF_DOMAIN_JAPAN_A = 5, /* Available Channels: 14 */
339 WF_DOMAIN_JAPAN_B = 6 /* Available Channels: 1 - 13 */
340 } tWFRegDomain;
341  
342 /* Power save states */
343 typedef enum
344 {
345 WF_PS_HIBERNATE = 1,
346 WF_PS_PS_POLL_DTIM_ENABLED = 2,
347 WF_PS_PS_POLL_DTIM_DISABLED = 3,
348 WF_PS_OFF = 4
349 } tWFPowerSaveState;
350  
351 typedef enum
352 {
353 WF_LOW = 0,
354 WF_HIGH = 1
355 } tWFPinLevel;
356  
357 /*-----------------------------------------------------------------------*/
358 /* defines used for the p_currentCpID value in WF_CMGetConnectionState() */
359 /*-----------------------------------------------------------------------*/
360 #define WF_CURRENT_CPID_NONE (0)
361 #define WF_CURRENT_CPID_LIST (0xff)
362  
363 /* Connection States */
364 typedef enum
365 {
366 WF_CSTATE_NOT_CONNECTED = 1,
367 WF_CSTATE_CONNECTION_IN_PROGRESS = 2,
368 WF_CSTATE_CONNECTED_INFRASTRUCTURE = 3,
369 WF_CSTATE_CONNECTED_ADHOC = 4,
370 WF_CSTATE_RECONNECTION_IN_PROGRESS = 5,
371 WF_CSTATE_CONNECTION_PERMANENTLY_LOST = 6
372 } tWFConnectionStates;
373  
374 /* eventInfo define for WF_ProcessEvent() when no additional info is supplied */
375 #define WF_NO_ADDITIONAL_INFO ((UINT16)0xffff)
376  
377 /*-----------------------------*/
378 /* Connection Profile Elements */
379 /*-----------------------------*/
380  
381 // Connection profile elements structure
382 typedef struct WFCPElementsStruct
383 {
384 /**
385 SSID, which must be less than or equal to 32 characters. Set to all 0’s
386 if not being used. If ssidLength is 0 this field is ignored. If SSID is
387 not defined then the MRF24WB0M, when using this profile to connect, will
388 scan all channels within its regional domain.
389  
390 Default: SSID not used.
391 */
392 UINT8 ssid[WF_MAX_SSID_LENGTH];
393 /**
394 Basic Service Set Identifier, always 6 bytes. This is the 48-bit MAC of
395 the SSID. It is an optional field that can be used to specify a specific
396 SSID if more than one AP exists with the same SSID. This field can also
397 be used in lieu of the SSID.
398  
399 Set each byte to 0xFF if BSSID is not going to be used.
400 Default: BSSID not used (all FF’s)
401 */
402 UINT8 bssid[WF_BSSID_LENGTH];
403 /**
404 Number of ASCII bytes in ssid. Set to 0 is SSID is not going to be used.
405  
406 Default: 0
407 */
408 UINT8 ssidLength;
409 /**
410 Designates the desired security level for the connection. Choices are:
411 <table>
412 WF_SECURITY_OPEN No security encryption used.
413 WF_SECURITY_WEP_40 Use WEP security.
414 WEP key, using four 5-byte keys will be provided in securityKey.
415 Note that only open authentication is supported for WEP.
416 WF_SECURITY_WEP_104 Use WEP security.
417 WEP key, using four 13-byte keys will be provided in securityKey.
418 Note that only open authentication is supported for WEP.
419 WF_SECURITY_WPA_WITH_KEY Use WPA security.
420 Binary PSK (Pre-shared Key) key will be provided in securityKey.
421 WF_SECURITY_WPA_WITH_PASS_PHRASE Use WPA security.
422 ASCII WPA passphrase will be provided in securityKey and,
423 after a call to WF_CMConnect(), the MRF24WB0M will calculate
424 the PSK key (which can take up to 30 seconds).
425 WF_SECURITY_WPA2_WITH_KEY Use WPA-2 security.
426 Binary WPA-2 key will be provided in securityKey.
427 WF_SECURITY_WPA2_WITH_PASSPHRASE Use WPA-2 security.
428 ASCII WPA-2 passphrase will be provided in securityKey and,
429 after a call to WF_CMConnect(), the MRF24WB0M will calculate
430 the PSK key (which can take up to 30 seconds).
431 WF_SECURITY_WPA_AUTO_WITH_KEY Same as WF_SECURITY_WPA_WITH_KEY or WF_SECURITY_WPA2_WITH_KEY
432 except connection manager will connect to the AP using highest
433 level security the AP supports (WPA or WPA2).
434 WF_SECURITY_WPA_AUTO_WITH_PASSPHRASE Same as WF_SECURITY_WPA_WITH_PASS_PHRASE or
435 WF_SECURITY_WPA2_WITH_PASS_PHRASE except connection manager
436 will connect to the AP using highest level security the AP
437 supports (WPA or WPA2).
438 </table>
439 Default: WF_SECURITY_OPEN
440 */
441 UINT8 securityType;
442 /**
443 Set to NULL if securityType is WF_SECURITY_OPEN. If securityKeyLength is 0
444 this field is ignored.
445 <table>
446 WEP Keys If using WEP this field must contain 4 keys. Each key must be
447 either 5 bytes in length (if securityType is WF_SECURITY_WEP_40)
448 or 13 bytes in length (if securityType is WF_SECURITY_WEP_104).
449 The keys must be contiguous within this field. For example, if
450 using 5 bytes keys the first key starts at index 0, the second
451 key at index 5, the third key at index 10, and the last key at
452 index 15. Unused keys should be set to all 0’s.
453 WPA/WPA2 Keys If using WPA or WPA2 you can provide the actual binary key or
454 ASCII passphrase used to generate a key. [64 byte array covers
455 all cases of keys or passphrases]. If using this field for a
456 security passphrase the MRF24WB0M will need to calculate the
457 binary key after the call to WF_CMConnect() – this can add about
458 30 seconds to the connection time.
459 </table>
460 Default: No security key defined
461 */
462 UINT8 securityKey[WF_MAX_SECURITY_KEY_LENGTH];
463 /**
464 Number of bytes used in the securityKey. Set to 0 if securityType is WF_SECURITY_OPEN.
465 <table>
466 WEP Keys If securityType is WF_SECURITY_WEP_40 or WF_SECURITY_WEP_104
467 then this field is the length of the four WEP keys.
468  
469 Range is
470 20 if securityType is WF_SECURITY_WEP_40 (four 5-byte keys),
471 52 if securityType is WF_SECURITY_WEP_104 (four 13-byte keys)
472 WPA/WPA2 Keys If securityType is one of the WPA or WPA2 choices then this
473 field is the number of bytes in the binary key or the
474 passphrase, whichever is being used.
475  
476 </table>
477 Default: 0
478 */
479 UINT8 securityKeyLength;
480 /**
481 This field is only used if securityType is WF_SECURITY_WEP. This field
482 designates which of the four WEP keys defined in securityKey to use when
483 connecting to a WiFi network. The range is 0 thru 3, with the default
484 being 0.
485 */
486 UINT8 wepDefaultKeyId;
487 /**
488 WF_INFRASTRUCTURE or WF_ADHOC
489  
490 Default: WF_INFRASTRUCTURE
491 */
492 UINT8 networkType;
493 /**
494 Only applicable if networkType is WF_ADHOC. Configures Adhoc behavior. Choices are:
495 <table>
496 WF_ADHOC_CONNECT_THEN_START Attempt to connect to existing network.
497 If that fails, then start a network.
498 WF_ADHOC_CONNECT_ONLY Connect only to an existing network.
499 Do not start a network.
500 WF_ADHOC_START_ONLY Only start a network.
501 </table>
502 Default: WF_ADHOC_CONNECT_THEN_START
503 */
504 UINT8 adHocBehavior;
505 } tWFCPElements;
506  
507 /*-------------------------------*/
508 /* Connection Algorithm Elements */
509 /*-------------------------------*/
510 typedef struct WFCAElementsStruct
511 {
512 /**
513 This parameter is only used when PS Poll mode is enabled. See
514 WF_PsPollEnable(). Number of 100ms intervals between instances when the
515 MRF24WB0M wakes up to received buffered messages from the network. Range
516 is from 1 (100ms) to 6553.5 sec (~109 min).
517  
518 Note that the 802.11 standard defines the listen interval in terms of
519 Beacon Periods, which are typically 100ms. If the MRF24WB0M is communicating
520 to a network with a network that has Beacon Periods that is not 100ms it
521 will round up (or down) as needed to match the actual Beacon Period as
522 closely as possible.
523  
524 Important Note: If the listenInterval is modified while connected to a
525 network the MRF24WB0M will automatically reconnect to the network with the
526 new Beacon Period value. This may cause a temporary loss of data packets.
527 */
528 UINT16 listenInterval;
529 /**
530 WF_ACTIVE_SCAN (Probe Requests sent out) or WF_PASSIVE_SCAN (listen only)
531  
532 Default: WF_ACTIVE_SCAN
533 */
534 UINT8 scanType;
535 /**
536 Specifies RSSI restrictions when connecting. This field is only used if:
537 1. The Connection Profile has not defined a SSID or BSSID, or
538 2. An SSID is defined in the Connection Profile and multiple AP’s are discovered with the same SSID.
539  
540 <table>
541  
542 1-254 Only connect to a network if the RSSI is greater than or equal to the specified value.
543 255 Connect to the highest RSSI found (default)
544 </table>
545 */
546 UINT8 rssi;
547 /**
548 <b>Note: Connection Profile lists are not yet supported. This array should be set to all FF’s.</b>
549 */
550 UINT8 connectionProfileList[WF_CP_LIST_LENGTH];
551 /**
552 This field is used to specify the number of retries for the single
553 connection profile before taking the connection lost action.
554  
555 Range 1 to 254 or WF_RETRY_FOREVER (255)
556  
557 Default is 3
558 */
559 UINT8 listRetryCount;
560 /**
561 There are several connection-related events that can occur. The Host has
562 the option to be notified (or not) when some of these events occur. This
563 field controls event notification for connection-related events.
564 <table>
565 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
566 ----- ----- ----- ----- ----- ----- ----- -----
567 Not Not Not Event Event Event Event Event
568 used used used E D C B A
569 </table>
570 The defines for each bit are shown below.
571 <table>
572 Event Code #define
573 ---------- -------
574 A WF_NOTIFY_CONNECTION_ATTEMPT_SUCCESSFUL
575 B WF_NOTIFY_CONNECTION_ATTEMPT_FAILED
576 C WF_NOTIFY_CONNECTION_TEMPORARILY_LOST
577 D WF_NOTIFY_CONNECTION_PERMANENTLY_LOST
578 E WF_NOTIFY_CONNECTION_REESTABLISHED
579 </table>
580 If a bit is set, then the host will be notified if the associated event
581 occurs. If the bit is not set then the host will not be notified if the
582 associated event occurs. A #define, WF_NOTIFY_ALL_EVENTS, exists as a
583 shortcut to allow notification for all events.
584  
585 Note that if an event is not in the above bit mask the application will
586 always be notified of the event via the call to WF_ProcessEvent().
587  
588 Default: WF_NOTIFY_ALL_EVENTS
589 */
590 UINT8 eventNotificationAction;
591 /**
592 Specifies the action the Connection Manager should take if a Connection is
593 lost due to a Beacon Timeout.
594 If this field is set to WF_ATTEMPT_TO_RECONNECT then the number of attempts
595 is limited to the value in listRetryCount.
596  
597 Choices are:
598 WF_ATTEMPT_TO_RECONNECT or WF_DO_NOT_ATTEMPT_TO_RECONNECT
599  
600 Default: WF_ATTEMPT_TO_RECONNECT
601 */
602 UINT8 beaconTimeoutAction;
603 /**
604 Designates what action the Connection Manager should take if it receives a
605 Deauthentication message from the AP.
606  
607 If this field is set to WF_ATTEMPT_TO_RECONNECT then the number of attempts
608 is limited to the value in listRetryCount.
609  
610 Choices are:
611 WF_ATTEMPT_TO_RECONNECT or WF_DO_NOT_ATTEMPT_TO_RECONNECT
612  
613 Default: WF_ATTEMPT_TO_RECONNECT
614 */
615 UINT8 deauthAction;
616 /**
617 List of one or more channels that the MRF24WB0M should utilize when
618 connecting or scanning. If numChannelsInList is set to 0 then this
619 parameter should be set to NULL.
620  
621 Default: All valid channels for the regional domain of the MRF24WB0M (set
622 at manufacturing).
623 */
624 UINT8 channelList[WF_CHANNEL_LIST_LENGTH];
625 /**
626 Number of channels in channelList. If set to 0 then the MRF24WB0M will
627 populate the list with all valid channels for the regional domain.
628  
629 Default: The number of valid channels for the regional domain of the
630 MRF24WB0M (set at manufacturing).
631 */
632 UINT8 numChannelsInList;
633 /**
634 Specifies the number of beacons that can be missed before the action
635 described in beaconTimeoutAction is taken.
636  
637 <table>
638  
639 * Will not indicate this condition to Host
640 1-255 Beacons missed before disconnect event occurs and beaconTimeoutAction
641 occurs. If enabled, host will receive an event message indicating
642 connection temporarily or permanently lost, and if retrying, a
643 connection successful event.
644 </table>
645 Default: 0 (no monitoring or notification of beacon timeout)
646 */
647 UINT8 beaconTimeout;
648 /**
649 The number of times to scan a channel while attempting to find a particular
650 access point.
651  
652 Default: 1
653 */
654 UINT8 scanCount;
655 UINT8 pad1;
656 /**
657 The minimum time (in milliseconds) the connection manager will wait for a
658 probe response after sending a probe request. If no probe responses are
659 received in minChannelTime then the connection manager will go on to the
660 next channel, if any are left to scan, or quit.
661  
662 Default: 200ms
663 */
664 UINT16 minChannelTime;
665 /**
666 If a probe response is received within minChannelTime then the connection
667 manager will continue to collect any additional probe responses up to
668 maxChannelTime before going to the next channel in the channelList. Units
669 are in milliseconds.
670  
671 Default: 400ms
672 */
673 UINT16 maxChannelTime;
674 /**
675 The number of microseconds to delay before transmitting a probe request
676 following the channel change event.
677  
678 Default: 20us
679 */
680 UINT16 probeDelay;
681 } tWFCAElements;
682  
683 /*-------------------*/
684 /* Tx Throttle Table */
685 /*-------------------*/
686 typedef struct WFThrottleTableStruct
687 {
688 UINT8 dataRate[WF_NUM_THROTTLE_TABLE_ROWS]; // WF_ONE_MBIT_TX_RATE or WF_TWO_MBIT_TX_RATE
689 INT8 txPower[WF_NUM_THROTTLE_TABLE_ROWS]; // -10dB to +10dB
690 } tWFThrottleTable;
691  
692 /*--------------------------*/
693 /* used in WF_GetDeviceInfo */
694 /*--------------------------*/
695 typedef struct tWFDeviceInfoStruct
696 {
697 UINT8 deviceType; /* MRF24WB0M_DEVICE_TYPE */
698 UINT8 romVersion; /* ROM version number */
699 UINT8 patchVersion; /* Patch version number */
700 } tWFDeviceInfo;
701  
702 /*--------------*/
703 /* Scan Results */
704 /*--------------*/
705 typedef struct
706 {
707 UINT8 bssid[WF_BSSID_LENGTH]; // Network BSSID value
708 UINT8 ssid[WF_MAX_SSID_LENGTH]; // Network SSID value
709  
710 /**
711 Access point configuration
712 <table>
713 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
714 ----- ----- ----- ----- ----- ----- ----- -----
715 WPA2 WPA Preamble Privacy Reserved Reserved Reserved IE
716 </table>
717  
718 <table>
719 IE 1 if AP broadcasting one or more Information Elements, else 0
720 Privacy 0 : AP is open (no security)
721 1: AP using security, if neither WPA and WPA2 set then security is WEP.
722 Preamble 0: AP transmitting with short preamble
723 1: AP transmitting with long preamble
724 WPA Only valid if Privacy is 1.
725 0: AP does not support WPA
726 1: AP supports WPA
727 WPA2 Only valid if Privacy is 1.
728 0: AP does not support WPA2
729 1: AP supports WPA2
730 </table>
731 */
732 UINT8 apConfig;
733 UINT8 reserved;
734 UINT16 beaconPeriod; // Network beacon interval
735 UINT16 atimWindow; // Only valid if bssType = WF_INFRASTRUCTURE
736  
737 /**
738 List of Network basic rates. Each rate has the following format:
739  
740 Bit 7
741 * 0 – rate is not part of the basic rates set
742 * 1 – rate is part of the basic rates set
743  
744 Bits 6:0
745 Multiple of 500kbps giving the supported rate. For example, a value of 2
746 (2 * 500kbps) indicates that 1mbps is a supported rate. A value of 4 in
747 this field indicates a 2mbps rate (4 * 500kbps).
748 */
749 UINT8 basicRateSet[WF_MAX_NUM_RATES];
750 UINT8 rssi; // Signal strength of received frame beacon or probe response
751 UINT8 numRates; // Number of valid rates in basicRates
752 UINT8 DtimPeriod; // Part of TIM element
753 UINT8 bssType; // WF_INFRASTRUCTURE or WF_ADHOC
754 UINT8 channel; // Channel number
755 UINT8 ssidLen; // Number of valid characters in ssid
756  
757 } tWFScanResult;
758  
759 #if defined(WF_CM_DEBUG)
760 typedef struct
761 {
762 UINT8 byte[12*4]; // Currently, CM has 12 states; 4-byte for each state info entry.
763 } tWFCMInfoFSMStats;
764 #endif
765  
766 /*------------------------*/
767 /* if asserts are enabled */
768 /*------------------------*/
769 #ifdef WF_DEBUG
770  
771 /*---------------------------------------------------------*/
772 /* Module numbers that will be used in the WF_ASSERT macro */
773 /*---------------------------------------------------------*/
774 typedef enum
775 {
776 WF_MODULE_MAIN_DEMO = 0, /* MainDemo.c */
777 WF_MODULE_WF_CONFIG = 1, /* WF_Config.c */
778 WF_MODULE_WF_EINT = 2, /* WF_Eint.c */
779 WF_MODULE_WF_SPI = 3, /* WF_Spi.c */
780 WF_MODULE_WF_MAC = 4, /* WFMac.c */
781 WF_MODULE_WF_PARAM_MSG = 5, /* WFParamMsg.c */
782 WF_MODULE_WF_CONNECTION_PROFILE = 6, /* WFConnectionProfile.c */
783 WF_MODULE_WF_CONNECTION_ALGORITHM = 7, /* WFConnectionAlgorithm.c */
784 WF_MODULE_WF_CONNECTION_MANAGER = 8, /* WFConnectionManager.c */
785 WF_MODULE_WF_DRIVER_COM = 9, /* WFDriverCom.c */
786 WF_MODULE_WF_INIT = 10, /* WFInit.c */
787 WF_MODULE_WF_DRIVER_RAW = 11, /* WFDriverRaw.c */
788 WF_MODULE_WF_MGMT_MSG = 12, /* WFMgmtMsg.c */
789 WF_MODULE_MGMT_MSG_TEST = 13, /* WFMgmtMsgTest.c */
790 WF_MODULE_WF_TX_POWER = 14, /* WFTxPower.c */
791 WF_MODULE_WF_POWER_SAVE = 15, /* WFPowerSave.c */
792 WF_MODULE_EVENT_HANDLER = 16, /* WFEventHandler.c */
793 WF_MODULE_WF_SCAN = 17, /* WFScan.c */
794 WF_MODULE_WF_DATA_TX_RX = 18, /* WFDataTxRx */
795  
796 WF_MODULE_IPERF_APP = 100, /* IperfApp.c */
797 WF_MODULE_HOST_BRIDGE = 101, /* WFHostBridge.c */
798 WF_MODULE_WF_IPERF_CLIENT = 102, /* WF_iperfClient.c */
799 WF_MODULE_WF_IPERF_SERVER = 103, /* WF_iperfServer.c */
800 WF_MODULE_WF_IPERF_COMMON = 104 /* WF_iperfCommon.c */
801  
802 } tWFModuleNumber;
803  
804  
805 void WF_AssertionFailed(UINT8 moduleNumber, UINT16 lineNumber);
806  
807 #define WF_ASSERT(expr) \
808 if (!(expr)) \
809 { \
810 WF_AssertionFailed(WF_MODULE_NUMBER, __LINE__); \
811 }
812 /*---------------------------*/
813 /* else asserts are disabled */
814 /*---------------------------*/
815 #else
816 #define WF_ASSERT(expr)
817 #endif /* WF_DEBUG */
818  
819  
820 /*
821 *********************************************************************************************************
822 * FUNCTION PROTOTYPES
823 *********************************************************************************************************
824 */
825  
826 /*--------------------------*/
827 /* Initialization Functions */
828 /*--------------------------*/
829 void WF_Init(void);
830  
831 /*-------------------*/
832 /* Version functions */
833 /*-------------------*/
834 void WF_GetDeviceInfo(tWFDeviceInfo *p_deviceInfo);
835  
836 /*----------------------------*/
837 /* WF Driver process function */
838 /*----------------------------*/
839 void WFProcess(void);
840  
841  
842 /*---------------------------------------*/
843 /* WF Driver External Interrupt function */
844 /* Must be called when: */
845 /* 1) External interrupt is enabled AND */
846 /* 2) EXINT line is asserted (low) */
847 /*---------------------------------------*/
848 void WFEintISR(void);
849  
850 /*-----------------------*/
851 /* MAC Address Functions */
852 /*-----------------------*/
853 void WF_SetMacAddress(UINT8 *p_mac);
854 void WF_GetMacAddress(UINT8 *p_mac);
855  
856  
857 /*------------------------------*/
858 /* Connection Profile Functions */
859 /*------------------------------*/
860 void WF_CPCreate(UINT8 *p_CpId);
861 void WF_CPDelete(UINT8 CpId);
862 void WF_CPGetIds(UINT8 *cpIdList);
863  
864 #if defined(WF_USE_GROUP_SET_GETS)
865 void WF_CPSetElements(UINT8 CpId, tWFCPElements *p_elements);
866 void WF_CPGetElements(UINT8 CpId, tWFCPElements *p_elements);
867 #endif
868  
869 #if defined(WF_USE_INDIVIDUAL_SET_GETS)
870 void WF_CPSetSsid(UINT8 CpId, UINT8 *p_ssid, UINT8 ssidLength);
871 void WF_CPGetSsid(UINT8 CpId, UINT8 *p_ssid, UINT8 *p_ssidLength);
872 void WF_CPSetBssid(UINT8 CpId, UINT8 *p_bssid);
873 void WF_CPGetBssid(UINT8 CpId, UINT8 *p_bssid);
874 void WF_CPSetSecurity(UINT8 CpId,
875 UINT8 securityType,
876 UINT8 wepKeyIndex,
877 UINT8 *p_securityKey,
878 UINT8 securityKeyLength);
879 void WF_CPGetSecurity(UINT8 CpId,
880 UINT8 *p_securityType,
881 UINT8 *p_wepKeyIndex,
882 UINT8 *p_securityKey,
883 UINT8 *p_securityKeyLength);
884 void WF_CPSetDefaultWepKeyIndex(UINT8 CpId, UINT8 defaultWepKeyIndex);
885 void WF_CPGetDefaultWepKeyIndex(UINT8 CpId, UINT8 *p_defaultWepKeyIndex);
886 void WF_CPSetNetworkType(UINT8 CpId, UINT8 networkType);
887 void WF_CPGetNetworkType(UINT8 CpId, UINT8 *p_networkType);
888 void WF_CPSetAdHocBehavior(UINT8 CpId, UINT8 adHocBehavior);
889 void WF_CPGetAdHocBehavior(UINT8 CpId, UINT8 *p_adHocBehavior);
890  
891 #endif /* WF_USE_INDIVIDUAL_SET_GETS */
892  
893 /*--------------------------------*/
894 /* Connection Algorithm Functions */
895 /*--------------------------------*/
896 #if defined(WF_USE_GROUP_SET_GETS)
897 void WF_CASetElements(tWFCAElements *p_elements);
898 void WF_CAGetElements(tWFCAElements *p_elements);
899 #endif
900  
901 #if defined(WF_USE_INDIVIDUAL_SET_GETS)
902 void WF_CASetScanType(UINT8 scanType);
903 void WF_CAGetScanType(UINT8 *p_scanType);
904 void WF_CASetRssi(UINT8 rssi);
905 void WF_CAGetRssi(UINT8 *p_rssi);
906 void WF_CASetConnectionProfileList(UINT8 cpList[WF_CP_LIST_LENGTH]);
907 void WF_CAGetConnectionProfileList(UINT8 cpList[WF_CP_LIST_LENGTH]);
908 void WF_CASetListRetryCount(UINT8 listRetryCount);
909 void WF_CAGetListRetryCount(UINT8 *p_listRetryCount);
910 void WF_CASetEventNotificationAction(UINT8 eventNotificationAction);
911 void WF_CAGetEventNotificationAction(UINT8 *p_eventNotificationAction);
912 void WF_CASetBeaconTimeoutAction(UINT8 beaconTimeoutAction);
913 void WF_CAGetBeaconTimeoutAction(UINT8 *p_beaconTimeoutAction);
914 void WF_CASetDeauthAction(UINT8 deauthAction);
915 void WF_CAGetDeauthAction(UINT8 *p_deauthAction);
916 void WF_CASetChannelList(UINT8 *p_channelList, UINT8 numChannels);
917 void WF_CAGetChannelList(UINT8 *p_channelList, UINT8 *p_numChannels);
918 void WF_CASetListenInterval(UINT16 listenInterval);
919 void WF_CAGetListenInterval(UINT16 *p_listenInterval);
920 void WF_CASetBeaconTimeout(UINT8 beaconTimeout);
921 void WF_CAGetBeaconTimeout(UINT8 *p_beaconTimeout);
922 void WF_CASetScanCount(UINT8 scanCount);
923 void WF_CAGetScanCount(UINT8 *p_scanCount);
924 void WF_CASetMinChannelTime(UINT16 minChannelTime);
925 void WF_CAGetMinChannelTime(UINT16 *p_minChannelTime);
926 void WF_CASetMaxChannelTime(UINT16 minChannelTime);
927 void WF_CAGetMaxChannelTime(UINT16 *p_minChannelTime);
928 void WF_CASetProbeDelay(UINT16 probeDelay);
929 void WF_CAGetProbeDelay(UINT16 *p_probeDelay);
930 #endif /* WF_USE_INDIVIDUAL_SET_GETS */
931  
932 /*--------------------------------*/
933 /* Connection Manager Functions */
934 /*--------------------------------*/
935 void WF_CMConnect(UINT8 CpId);
936 void WF_CMDisconnect(void);
937 void WF_CMGetConnectionState(UINT8 *p_state, UINT8 *p_currentCpId);
938  
939 /*----------------------------*/
940 /* Tx Power Control Functions */
941 /*----------------------------*/
942 #if defined(WF_USE_TX_POWER_CONTROL_FUNCTIONS)
943 void WF_ThrottleTableSet(tWFThrottleTable *p_table);
944 void WF_ThrottleTableGet(tWFThrottleTable *p_table);
945 void WF_ThrottleTableEnable(void);
946 void WF_ThrottleTableDisable(UINT8 txPower);
947 void WF_ThrottleTableGetState(BOOL *p_state, UINT8 *p_bitRate);
948 void WF_TxPowerSetMinMax(INT8 minTxPower, INT8 maxTxPower);
949 void WF_TxPowerGetMinMax(INT8 *p_minTxPower, INT8 *p_maxTxPower);
950 void WF_TxPowerGetFactoryMax(INT8 *p_factoryMaxTxPower);
951 #endif
952  
953 /*----------------------------*/
954 /* Power Management Functions */
955 /*----------------------------*/
956 #if defined(WF_USE_POWER_SAVE_FUNCTIONS)
957 void WF_PsPollDisable(void);
958 void WF_PsPollEnable(BOOL rxDtim);
959 void WF_GetPowerSaveState(UINT8 *p_powerSaveState);
960 void WF_HibernateEnable(void);
961 #endif
962  
963 /*-------------------------*/
964 /* RTS Threshold Functions */
965 /*-------------------------*/
966 void WF_SetRtsThreshold(UINT16 rtsThreshold);
967 void WF_GetRtsThreshold(UINT16 *p_rtsThreshold);
968  
969 /*---------------------------*/
970 /* Regional Domain Functions */
971 /*---------------------------*/
972 void WF_SetRegionalDomain(UINT8 regionalDomain); /* see tWFRegDomain enumerated types */
973 void WF_GetRegionalDomain(UINT8 *p_regionalDomain); /* see tWFRegDomain enumerated types */
974  
975 /*---------------------*/
976 /* Multicast Functions */
977 /*---------------------*/
978 #if defined(WF_USE_MULTICAST_FUNCTIONS)
979 void WF_SetMultiCastFilter(UINT8 multicastFilterId, UINT8 multicastAddress[6]);
980 void WF_GetMultiCastFilter(UINT8 multicastFilterId, UINT8 multicastAddress[6]);
981 #endif
982  
983 /* MAC Stats */
984 void WF_GetMacStats(tWFMacStats *p_macStats);
985  
986 /*----------------*/
987 /* Scan Functions */
988 /*----------------*/
989 #if defined(WF_USE_SCAN_FUNCTIONS)
990 void WF_Scan(UINT8 CpId);
991 void WF_ScanGetResult(UINT8 listIndex,
992 tWFScanResult *p_scanResult);
993 #endif /* WF_SCAN_FUNCTIONS */
994  
995 /*------------------------------*/
996 /* External Interrupt Functions */
997 /*------------------------------*/
998 void WF_EintInit(void);
999 void WF_EintEnable(void);
1000 void WF_EintDisable(void);
1001 BOOL WF_EintIsDisabled(void);
1002 void WFEintHandler(void);
1003 /* WF_EintIsPending - used by the WF Driver to test for whether */
1004 /* external interrupts are pending. The pending case is not something */
1005 /* that should normally happen. It says we have the interrupt line */
1006 /* asserted but the WF_EINT_IF bit is not set, thus, no interrupt generated */
1007 BOOL WF_EintIsPending(void);
1008  
1009 /*---------------*/
1010 /* SPI Functions */
1011 /*---------------*/
1012 void WF_SpiInit(void);
1013 void WF_SpiEnableChipSelect(void);
1014 void WF_SpiDisableChipSelect(void);
1015 void WFSpiTxRx(UINT8 *p_txBuf,
1016 UINT16 txLen,
1017 UINT8 *p_rxBuf,
1018 UINT16 rxLen);
1019  
1020 #if defined (__18CXX)
1021 void WFSpiTxRx_Rom(ROM UINT8 *p_txBuf,
1022 UINT16 txLen,
1023 UINT8 *p_rxBuf,
1024 UINT16 rxLen);
1025 #endif /* __18CXX */
1026  
1027  
1028  
1029 #if defined(WF_USE_DATA_TX_RX_FUNCTIONS)
1030 /*------------*/
1031 /* Data Tx/Rx */
1032 /*------------*/
1033 void WF_TxDataAllocateBuffer(UINT16 txDataPacketLength);
1034 void WF_TxDataWrite(UINT8 *p_txData,
1035 UINT16 length,
1036 UINT16 startIndex);
1037 void WF_TxDataSendPacket(UINT16 length);
1038 void WF_RxDataReadPacket(UINT8 *p_rxData,
1039 UINT16 length,
1040 UINT16 startIndex);
1041 void WF_RxDataDeallocateBuffer(void);
1042 #endif
1043  
1044 /*--------------------------*/
1045 /* Event Handling Functions */
1046 /*--------------------------*/
1047 /*******************************************************************************
1048 Function:
1049 void WF_ProcessEvent(UINT8 event,
1050 UINT16 eventInfo);
1051  
1052 Summary:
1053 Process events from the MRF24WB0M
1054  
1055 Description:
1056  
1057 Precondition:
1058 MACInit must be called first.
1059  
1060 Parameters:
1061 event -- The event that occurred
1062 eventInfo -- Additional information about the event. This is not applicable
1063 to all events.
1064  
1065 Returns:
1066 None.
1067  
1068 Remarks:
1069 None.
1070 *****************************************************************************/
1071 void WF_ProcessEvent(UINT8 event, UINT16 eventInfo);
1072  
1073 #if defined(WF_CM_DEBUG)
1074 /*--------------------------*/
1075 /* CM Info Functions */
1076 /*--------------------------*/
1077 void WF_CMInfoGetFSMStats(tWFCMInfoFSMStats *p_info);
1078 #endif
1079  
1080 #endif /* __WF_API_H_ */
1081  
1082  
1083  
{BLAME END}
{FOOTER START}

Powered by WebSVN v2.8.3