| Line No. | Rev | Author | Line | 
|---|---|---|---|
| 1 | 32 | kaklik | /****************************************************************************** | 
| 2 | |||
| 3 |  MRF24WB0M Driver Power Save functions | ||
| 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:		WFPowerSave.c | ||
| 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 | /* | ||
| 51 | ********************************************************************************************************* | ||
| 52 | *                                           INCLUDES                                | ||
| 53 | ********************************************************************************************************* | ||
| 54 | */ | ||
| 55 | |||
| 56 | #include "TCPIP Stack/WFMac.h" | ||
| 57 | #if defined(WF_CS_TRIS) && defined(WF_USE_POWER_SAVE_FUNCTIONS) | ||
| 58 | |||
| 59 | |||
| 60 | /* | ||
| 61 | ********************************************************************************************************* | ||
| 62 | *                                           DEFINES                                | ||
| 63 | ********************************************************************************************************* | ||
| 64 | */ | ||
| 65 | |||
| 66 | /* used for assertions */ | ||
| 67 | #ifdef WF_DEBUG | ||
| 68 |     #define WF_MODULE_NUMBER   WF_MODULE_WF_POWER_SAVE | ||
| 69 | #endif | ||
| 70 | |||
| 71 | #define REG_ENABLE_LOW_POWER_MASK   ((UINT16)(0x01)) | ||
| 72 | |||
| 73 | /* | ||
| 74 | ********************************************************************************************************* | ||
| 75 | *                                           LOCAL DATA TYPES                                | ||
| 76 | ********************************************************************************************************* | ||
| 77 | */ | ||
| 78 | |||
| 79 | /* Enumeration of valid values for WFSetPowerSaveMode() */ | ||
| 80 | typedef enum | ||
| 81 | { | ||
| 82 |     PS_POLL_ENABLED = 0,    /* power save mode enabled  */ | ||
| 83 |     PS_POLL_DISABLED        /* power save mode disabled */  | ||
| 84 | } tWFPsPwrMode; | ||
| 85 | |||
| 86 | typedef struct pwrModeRequestStruct | ||
| 87 | { | ||
| 88 |     UINT8 mode; | ||
| 89 |     UINT8 wake; | ||
| 90 |     UINT8 rcvDtims; | ||
| 91 |     UINT8 reserved;            /* pad byte */ | ||
| 92 | } tWFPwrModeReq; | ||
| 93 | |||
| 94 | |||
| 95 | /* | ||
| 96 | ********************************************************************************************************* | ||
| 97 | *                                           LOCAL GLOBAL VARIABLES                               | ||
| 98 | ********************************************************************************************************* | ||
| 99 | */ | ||
| 100 | |||
| 101 | static UINT8 g_powerSaveState = WF_PS_OFF; | ||
| 102 | static BOOL  g_psPollActive   = FALSE;      | ||
| 103 | |||
| 104 | /* | ||
| 105 | ********************************************************************************************************* | ||
| 106 | *                                           LOCAL FUNCTION PROTOTYPES                           | ||
| 107 | ********************************************************************************************************* | ||
| 108 | */ | ||
| 109 | |||
| 110 | static void SendPowerModeMsg(tWFPwrModeReq *p_powerMode); | ||
| 111 | static void SetPowerSaveState(UINT8 powerSaveState); | ||
| 112 | |||
| 113 | |||
| 114 | /******************************************************************************* | ||
| 115 |   Function:	 | ||
| 116 |     void WFConfigureLowPowerMode(UINT8 action) | ||
| 117 | |||
| 118 |   Summary: | ||
| 119 |     Driver function to configure PS Poll mode. | ||
| 120 | |||
| 121 |   Description: | ||
| 122 |     This function is only used by the driver, not the application.  This | ||
| 123 |     function, other than at initialization, is only used when the application | ||
| 124 |     has enabled PS-Poll mode.  This function is used to temporarily deactivate  | ||
| 125 |     PS-Poll mode when there is mgmt or data message tx/rx and then, when message  | ||
| 126 |     activity has ceased, to again activate PS-Poll mode.  | ||
| 127 | |||
| 128 |   Precondition: | ||
| 129 |   	MACInit must be called first. | ||
| 130 | |||
| 131 |   Parameters: | ||
| 132 |     action - Can be either: | ||
| 133 |              * WF_LOW_POWER_MODE_ON | ||
| 134 |              * WF_LOW_POWER_MODE_OFF | ||
| 135 | |||
| 136 |   Returns: | ||
| 137 |   	None. | ||
| 138 | |||
| 139 |   Remarks: | ||
| 140 |   	None. | ||
| 141 |   *****************************************************************************/ | ||
| 142 | void WFConfigureLowPowerMode(UINT8 action) | ||
| 143 | { | ||
| 144 |     UINT16 lowPowerStatusRegValue; | ||
| 145 | |||
| 146 |     /*--------------------------------------*/ | ||
| 147 |     /* if activating PS-Poll mode on MRF24WB0M */ | ||
| 148 |     /*--------------------------------------*/ | ||
| 149 |     if (action == WF_LOW_POWER_MODE_ON) | ||
| 150 |     { | ||
| 151 |         Write16BitWFRegister(WF_PSPOLL_H_REG, REG_ENABLE_LOW_POWER_MASK); | ||
| 152 |         g_psPollActive = TRUE;            | ||
| 153 |     }         | ||
| 154 |     /*---------------------------------------------------------------------------------------------*/     | ||
| 155 |     /* else deactivating PS-Poll mode on MRF24WB0M (taking it out of low-power mode and waking it up) */ | ||
| 156 |     /*---------------------------------------------------------------------------------------------*/ | ||
| 157 |     else /* action == WF_LOW_POWER_MODE_OFF */ | ||
| 158 |     { | ||
| 159 |         Write16BitWFRegister(WF_PSPOLL_H_REG, 0x00);       | ||
| 160 |         g_psPollActive = FALSE;                  | ||
| 161 | |||
| 162 |         /* poll the response bit that indicates when the MRF24WB0M has come out of low power mode */ | ||
| 163 |         do | ||
| 164 |         { | ||
| 165 |             /* set the index register to the register we wish to read (kWFCOMRegLoPwrStatusReg) */ | ||
| 166 |             Write16BitWFRegister(WF_INDEX_ADDR_REG, WF_LOW_POWER_STATUS_REG); | ||
| 167 |             lowPowerStatusRegValue = Read16BitWFRegister(WF_INDEX_DATA_REG); | ||
| 168 | |||
| 169 |         } while (lowPowerStatusRegValue & REG_ENABLE_LOW_POWER_MASK); | ||
| 170 |     }     | ||
| 171 | } | ||
| 172 | |||
| 173 | /******************************************************************************* | ||
| 174 |   Function:	 | ||
| 175 |     void WF_PsPollEnable(BOOL rxDtim) | ||
| 176 | |||
| 177 |   Summary: | ||
| 178 |     Enables PS Poll mode. | ||
| 179 | |||
| 180 |   Description: | ||
| 181 |     Enables PS Poll mode.  PS-Poll (Power-Save Poll) is a mode allowing for  | ||
| 182 |     longer battery life.  The MRF24WB0M coordinates with the Access Point to go  | ||
| 183 |     to sleep and wake up at periodic intervals to check for data messages, which  | ||
| 184 |     the Access Point will buffer.  The listenInterval in the Connection  | ||
| 185 |     Algorithm defines the sleep interval.  By default, PS-Poll mode is disabled. | ||
| 186 | |||
| 187 |     When PS Poll is enabled, the WF Host Driver will automatically force the  | ||
| 188 |     MRF24WB0M to wake up each time the Host sends Tx data or a control message  | ||
| 189 |     to the MRF24WB0M.  When the Host message transaction is complete the  | ||
| 190 |     MRF24WB0M driver will automatically re-enable PS Poll mode. | ||
| 191 | |||
| 192 |     When the application is likely to experience a high volume of data traffic  | ||
| 193 |     then PS-Poll mode should be disabled for two reasons: | ||
| 194 |     1. No power savings will be realized in the presence of heavy data traffic. | ||
| 195 |     2. Performance will be impacted adversely as the WiFi Host Driver  | ||
| 196 |         continually activates and deactivates PS-Poll mode via SPI messages. | ||
| 197 | |||
| 198 |   Precondition: | ||
| 199 |   	MACInit must be called first. | ||
| 200 | |||
| 201 |   Parameters: | ||
| 202 |     rxDtim -- TRUE if MRF24WB0M should wake up periodically and check for | ||
| 203 |               buffered broadcast messages, else FALSE | ||
| 204 | |||
| 205 |   Returns: | ||
| 206 |   	None. | ||
| 207 | |||
| 208 |   Remarks: | ||
| 209 |   	None. | ||
| 210 |   *****************************************************************************/ | ||
| 211 | void WF_PsPollEnable(BOOL rxDtim) | ||
| 212 | { | ||
| 213 |     tWFPwrModeReq   pwrModeReq; | ||
| 214 | |||
| 215 |     /* fill in request structure and send message to MRF24WB0M */ | ||
| 216 |     pwrModeReq.mode     = PS_POLL_ENABLED; | ||
| 217 |     pwrModeReq.wake     = 0; | ||
| 218 |     pwrModeReq.rcvDtims = rxDtim; | ||
| 219 |     SendPowerModeMsg(&pwrModeReq); | ||
| 220 | |||
| 221 |     if (rxDtim == TRUE) | ||
| 222 |     { | ||
| 223 |         SetPowerSaveState(WF_PS_PS_POLL_DTIM_ENABLED); | ||
| 224 |     }     | ||
| 225 |     else | ||
| 226 |     { | ||
| 227 |         SetPowerSaveState(WF_PS_PS_POLL_DTIM_DISABLED); | ||
| 228 |     }     | ||
| 229 | |||
| 230 |     WFConfigureLowPowerMode(WF_LOW_POWER_MODE_ON); | ||
| 231 | } | ||
| 232 | |||
| 233 | /******************************************************************************* | ||
| 234 |   Function:	 | ||
| 235 |     void WF_PsPollDisable(void) | ||
| 236 | |||
| 237 |   Summary: | ||
| 238 |     Disables PS-Poll mode. | ||
| 239 | |||
| 240 |   Description: | ||
| 241 |     Disables PS Poll mode.  The MRF24WB0M will stay active and not go sleep. | ||
| 242 | |||
| 243 |   Precondition: | ||
| 244 |   	MACInit must be called first. | ||
| 245 | |||
| 246 |   Parameters: | ||
| 247 |     None. | ||
| 248 | |||
| 249 |   Returns: | ||
| 250 |   	None. | ||
| 251 | |||
| 252 |   Remarks: | ||
| 253 |   	None. | ||
| 254 |   *****************************************************************************/ | ||
| 255 | void WF_PsPollDisable(void) | ||
| 256 | { | ||
| 257 |    tWFPwrModeReq   pwrModeReq; | ||
| 258 | |||
| 259 |     pwrModeReq.mode     = PS_POLL_DISABLED; | ||
| 260 |     pwrModeReq.wake     = 1; | ||
| 261 |     pwrModeReq.rcvDtims = 1; | ||
| 262 |     SendPowerModeMsg(&pwrModeReq); | ||
| 263 | |||
| 264 |     SetPowerSaveState(WF_PS_OFF); | ||
| 265 |     WFConfigureLowPowerMode(WF_LOW_POWER_MODE_OFF);     | ||
| 266 | }    | ||
| 267 | |||
| 268 | /******************************************************************************* | ||
| 269 |   Function:	 | ||
| 270 |     void WF_GetPowerSaveState(UINT8 *p_powerSaveState) | ||
| 271 | |||
| 272 |   Summary: | ||
| 273 |     Returns current power-save state. | ||
| 274 | |||
| 275 |   Description: | ||
| 276 |     Returns the current MRF24WB0M power save state. | ||
| 277 | |||
| 278 |     <table> | ||
| 279 |     Value                       Definition | ||
| 280 |     -----                       ---------- | ||
| 281 |     WF_PS_HIBERNATE             MRF24WB0M in hibernate state | ||
| 282 |     WF_PS_PS_POLL_DTIM_ENABLED  MRF24WB0M in PS-Poll mode with DTIM enabled | ||
| 283 |     WF_PS_PS_POLL_DTIM_DISABLED MRF24WB0M in PS-Poll mode with DTIM disabled | ||
| 284 |     WF_PS_POLL_OFF              MRF24WB0M is not in any power-save state | ||
| 285 |     </table> | ||
| 286 | |||
| 287 |   Precondition: | ||
| 288 |   	MACInit must be called first. | ||
| 289 | |||
| 290 |   Parameters: | ||
| 291 |     p_powerSaveState -- pointer to where power state is written | ||
| 292 | |||
| 293 |   Returns: | ||
| 294 |   	None. | ||
| 295 | |||
| 296 |   Remarks: | ||
| 297 |   	None. | ||
| 298 |   *****************************************************************************/ | ||
| 299 | void WF_GetPowerSaveState(UINT8 *p_powerSaveState) | ||
| 300 | { | ||
| 301 |     *p_powerSaveState = g_powerSaveState; | ||
| 302 | }   | ||
| 303 | |||
| 304 | /******************************************************************************* | ||
| 305 |   Function:	 | ||
| 306 |     BOOL WFisPsPollEnabled(void) | ||
| 307 | |||
| 308 |   Summary: | ||
| 309 |     Determines if application has enable PS-Poll mode. | ||
| 310 | |||
| 311 |   Description: | ||
| 312 | |||
| 313 |   Precondition: | ||
| 314 |   	MACInit must be called first. | ||
| 315 | |||
| 316 |   Parameters: | ||
| 317 |     None. | ||
| 318 | |||
| 319 |   Returns: | ||
| 320 |   	TRUE if application has enabled PS-Poll mode, else returns FALSE | ||
| 321 | |||
| 322 |   Remarks: | ||
| 323 |   	None. | ||
| 324 |   *****************************************************************************/ | ||
| 325 | BOOL WFisPsPollEnabled(void) | ||
| 326 | { | ||
| 327 |     if ((g_powerSaveState == WF_PS_PS_POLL_DTIM_ENABLED) || (g_powerSaveState == WF_PS_PS_POLL_DTIM_DISABLED))  | ||
| 328 |     { | ||
| 329 |         return TRUE; | ||
| 330 |     }     | ||
| 331 |     else | ||
| 332 |     { | ||
| 333 |         return FALSE; | ||
| 334 |     }     | ||
| 335 | }     | ||
| 336 | |||
| 337 | /******************************************************************************* | ||
| 338 |   Function:	 | ||
| 339 |     BOOL WFIsPsPollActive(void) | ||
| 340 | |||
| 341 |   Summary: Determine if PS Poll is currently active. | ||
| 342 | |||
| 343 |   Description: | ||
| 344 |     This function is only called when PS-Poll mode has been enabled by the  | ||
| 345 |     application.  When transmitting or receiving data or mgmt messages the  | ||
| 346 |     driver will temporarily disable PS-Poll.  This function is used by the  | ||
| 347 |     driver to determine if PS-Poll is active or has been temporarily disabled.  | ||
| 348 | |||
| 349 |   Precondition: | ||
| 350 |   	MACInit must be called first. | ||
| 351 | |||
| 352 |   Parameters: | ||
| 353 |     None. | ||
| 354 | |||
| 355 |   Returns: | ||
| 356 |   	TRUE if driver has enabled PS-Poll, else FALSE | ||
| 357 | |||
| 358 |   Remarks: | ||
| 359 |   	None. | ||
| 360 |   *****************************************************************************/ | ||
| 361 | BOOL WFIsPsPollActive(void) | ||
| 362 | { | ||
| 363 |     return g_psPollActive; | ||
| 364 | }     | ||
| 365 | |||
| 366 | /******************************************************************************* | ||
| 367 |   Function:	 | ||
| 368 |     void EnsureWFisAwake() | ||
| 369 | |||
| 370 |   Summary: | ||
| 371 |     If PS-Poll is active or the MRF24WB0M is asleep, ensure that it is woken up. | ||
| 372 | |||
| 373 |   Description: | ||
| 374 |     Called by the WiFi driver when it needs to transmit or receive a data or  | ||
| 375 |     mgmt message. If the application has enabled PS-Poll mode and the WiFi  | ||
| 376 |     driver has activated PS-Poll mode then this function will deactivate PS-Poll | ||
| 377 |     mode and wake up the MRF24WB0M. | ||
| 378 | |||
| 379 |   Precondition: | ||
| 380 |   	MACInit must be called first. | ||
| 381 | |||
| 382 |   Parameters: | ||
| 383 |     None. | ||
| 384 | |||
| 385 |   Returns: | ||
| 386 |   	None. | ||
| 387 | |||
| 388 |   Remarks: | ||
| 389 |   	None. | ||
| 390 |   *****************************************************************************/ | ||
| 391 | void EnsureWFisAwake() | ||
| 392 | { | ||
| 393 |     /* if the application desires the MRF24WB0M to be in PS-Poll mode (PS-Poll with DTIM enabled or disabled */ | ||
| 394 |     if ((g_powerSaveState == WF_PS_PS_POLL_DTIM_ENABLED) || (g_powerSaveState == WF_PS_PS_POLL_DTIM_DISABLED))  | ||
| 395 |     { | ||
| 396 |         /* if the WF driver has activated PS-Poll */ | ||
| 397 |         if (g_psPollActive == TRUE) | ||
| 398 |         { | ||
| 399 |             /* wake up MRF24WB0M */ | ||
| 400 |             WFConfigureLowPowerMode(WF_LOW_POWER_MODE_OFF); | ||
| 401 |         }     | ||
| 402 |     } | ||
| 403 | }         | ||
| 404 | |||
| 405 | /******************************************************************************* | ||
| 406 |   Function:	 | ||
| 407 |     void WF_HibernateEnable() | ||
| 408 | |||
| 409 |   Summary: | ||
| 410 |     Puts the MRF24WB0M into hibernate mode. | ||
| 411 | |||
| 412 |   Description: | ||
| 413 |     Enables Hibernate mode on the MRF24WB0M, which effectively turns off the  | ||
| 414 |     device for maximum power savings.   | ||
| 415 | |||
| 416 |     MRF24WB0M state is not maintained when it transitions to hibernate mode.   | ||
| 417 |     To remove the MRF24WB0M from hibernate mode call WF_Init(). | ||
| 418 | |||
| 419 |   Precondition: | ||
| 420 |   	MACInit must be called first. | ||
| 421 | |||
| 422 |   Parameters: | ||
| 423 |     None. | ||
| 424 | |||
| 425 |   Returns: | ||
| 426 |   	None. | ||
| 427 | |||
| 428 |   Remarks: | ||
| 429 |   	Note that because the MRF24WB0M does not save state, there will be a | ||
| 430 |     disconnect between the TCP/IP stack and the MRF24B0M state.  If it is | ||
| 431 |     desired by the application to use hibernate, additional measures must be | ||
| 432 |     taken to save application state.  Then the host should be reset.  This will | ||
| 433 |     ensure a clean connection between MRF24WB0M and TCP/IP stack | ||
| 434 | |||
| 435 |     Future versions of the stack might have the ability to save stack context | ||
| 436 |     as well, ensuring a clean wake up for the MRF24WB0M without needing a host | ||
| 437 |     reset. | ||
| 438 |   *****************************************************************************/ | ||
| 439 | void WF_HibernateEnable() | ||
| 440 | { | ||
| 441 |     WF_SetCE_N(WF_HIGH);   /* set XCEN33 pin high, which puts MRF24WB0M in hibernate mode */ | ||
| 442 | |||
| 443 |     SetPowerSaveState(WF_PS_HIBERNATE); | ||
| 444 | } | ||
| 445 | |||
| 446 | /******************************************************************************* | ||
| 447 |   Function:	 | ||
| 448 |     static void SendPowerModeMsg(tWFPwrModeReq *p_powerMode) | ||
| 449 | |||
| 450 |   Summary: | ||
| 451 |     Send power mode management message to the MRF24WB0M. | ||
| 452 | |||
| 453 |   Description: | ||
| 454 | |||
| 455 |   Precondition: | ||
| 456 |   	MACInit must be called first. | ||
| 457 | |||
| 458 |   Parameters: | ||
| 459 |     p_powerMode -- pointer to tWFPwrModeReq structure to send to MRF24WB0M. | ||
| 460 | |||
| 461 |   Returns: | ||
| 462 |   	None. | ||
| 463 | |||
| 464 |   Remarks: | ||
| 465 |   	None. | ||
| 466 |   *****************************************************************************/ | ||
| 467 | static void SendPowerModeMsg(tWFPwrModeReq *p_powerMode) | ||
| 468 | { | ||
| 469 |     UINT8 hdr[2]; | ||
| 470 | |||
| 471 |     hdr[0] = WF_MGMT_REQUEST_TYPE; | ||
| 472 |     hdr[1] = WF_SET_POWER_MODE_SUBTYPE; | ||
| 473 | |||
| 474 |     SendMgmtMsg(hdr, | ||
| 475 |                 sizeof(hdr), | ||
| 476 |                (UINT8 *)p_powerMode, | ||
| 477 |                sizeof(tWFPwrModeReq)); | ||
| 478 | |||
| 479 |     /* wait for mgmt response, free buffer after it comes in (no data to read) */ | ||
| 480 | 	WaitForMgmtResponse(WF_SET_POWER_MODE_SUBTYPE, FREE_MGMT_BUFFER); | ||
| 481 | |||
| 482 | }     | ||
| 483 | |||
| 484 | /******************************************************************************* | ||
| 485 |   Function:	 | ||
| 486 |     static void SetPowerSaveState(UINT8 powerSaveState) | ||
| 487 | |||
| 488 |   Summary: | ||
| 489 |     Sets the desired power save state of the MRF24WB0M. | ||
| 490 | |||
| 491 |   Description: | ||
| 492 | |||
| 493 |   Precondition: | ||
| 494 |   	MACInit must be called first. | ||
| 495 | |||
| 496 |   Parameters: | ||
| 497 |     powerSaveState -- value of the power save state desired. | ||
| 498 | |||
| 499 |     <table> | ||
| 500 |     Value                       Definition | ||
| 501 |     -----                       ---------- | ||
| 502 |     WF_PS_HIBERNATE             MRF24WB0M in hibernate state | ||
| 503 |     WF_PS_PS_POLL_DTIM_ENABLED  MRF24WB0M in PS-Poll mode with DTIM enabled | ||
| 504 |     WF_PS_PS_POLL_DTIM_DISABLED MRF24WB0M in PS-Poll mode with DTIM disabled | ||
| 505 |     WF_PS_POLL_OFF              MRF24WB0M is not in any power-save state | ||
| 506 |     </table> | ||
| 507 | |||
| 508 |   Returns: | ||
| 509 |   	None. | ||
| 510 | |||
| 511 |   Remarks: | ||
| 512 |   	None. | ||
| 513 |   *****************************************************************************/ | ||
| 514 | static void SetPowerSaveState(UINT8 powerSaveState) | ||
| 515 | { | ||
| 516 |     g_powerSaveState = powerSaveState; | ||
| 517 | }     | ||
| 518 | #endif /* WF_CS_TRIS && WF_USE_POWER_SAVE_FUNCTIONS */ | 
Powered by WebSVN v2.8.3