User`s guide

Aironet Wireless Communications, Inc. 7-68 Confidential and Proprietary
NOTE: THE FOLLOWING PSUEDO CODE ONLY APPLIES TO INFRASTRUCTURE MODE.
Psp.CurListenInterval = FastListenInterval
Psp.CurDecayValue = ListenDecay
while (1) {
wait until allowed to sleep;
// allowed to go back to sleep as soon as there is no traffic pending to us (no directed or multicast)
// and we have nothing to transmit -- there is no minimum time that we must stay awake for
while (not allowed to sleep) {
if (receive directed packet) Psp.CurListenInterval = 0;
if (transmit packet) Psp.CurListenInterval = 0;
}
// note, receiving or transmitting will set Psp.CurListenInterval to zero
if (Psp.CurListenInterval == 0) {
// use FastListenInterval since we transmitted or received...
Psp.CurListenInterval = FastListenInterval;
Psp.CurDecayValue = ListenDecay;
} else {
if (--Psp.CurDecayValue == 0) {
// double the current listen interval and limit to the user input ListenInterval
Psp.CurListenInterval += Psp.CurListenInterval;
if (Psp.CurListenInterval > ListenInterval) Psp.CurListenInterval = ListenInterval;
Psp.CurDecayValue = ListenDecay;
}
}
timeToWakeUp = currentTime + Psp.CurListenInterval;
timeOfWakeUpBeacon = calculate time of beacon following timeToWakeUp;
if (SleepForDtim == 0) {
// may have to wake up sooner for a DTIM to receive broadcast traffic
timeOfNextDtim = calculate time of next dtim;
// take the sooner of the next dtim or the wakeup beacon
if (timeOfNextDtim < timeOfWakeupBeacon) timeOfWakeUpBeacon = timeOfNextDtim;
}
Sleep until timeOfWakeUpBeacon // do the sleep for the listen interval or until dtim
resynchronize to cell....
}
EXAMPLE
FastListenInterval = 100,
ListenInterval = 2000,
ListenDecay = 2,
then assuming no traffic the listen times would be
-- 100, 100, 200, 200, 400, 400, 800, 800, 1600, 1600, 2000, 2000, 2000, 2000, ...