# Patent

## Title
Channel scanning

## Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for channel scanning. In one aspect, a method includes, while maintaining an association with a first access point on a first channel during first, second, and third consecutive time slices: (i) monitoring, by a client device, a single second channel during the first time slice and the third time slice, and (ii) monitoring, by the client device, the first channel during the second time slice; receiving a beacon from a second access point during the first time slice or the third time slice; and determining a property of the client device or the second access point using the beacon, without using the beacon to determine whether to establish an association with the second access point.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of and claims priority from U.S. patent application Ser. No. 12/957,778, filed on Dec. 1, 2010, the contents of which are incorporated herein by reference in their entirety.


BACKGROUND
The present specification relates to wireless communication.
Many wireless communications systems are designed to transmit and receive information over one of multiple frequency channels. By tuning a transceiver to a particular frequency, a device can communicate over a particular channel. At some point after the device has communicated over one channel, the transceiver can be tuned to a new frequency to communicate over a new channel. Frequently, a device tunes a transceiver to a new channel to establish an association, or in other words, to establish an ongoing connection with an access point that provides access to a network.
SUMMARY
While a client device maintains an association with a first access point on a first channel, the client device can receive information over a second channel. The client device switches between a first channel and a second channel to receive information on both channels at different times. On the second channel, the client device receives a beacon from an access point that with which the client device is not associated. The client device can use the beacon to determine a property of the client device or the access point, without using the beacon to evaluate the potential for association on the second channel. The property can be used to provide customized information to the client device.
One aspect of the subject matter described in this specification is embodied in methods that include the actions of monitoring a single secondary channel during alternate time slices while maintaining an association with a first access point on a primary channel. A beacon can be received that is used not to determine whether to establish a new association, but rather to determine a property of the client device or a second access point.
In general, another aspect of the subject matter described in this specification may be embodied in methods that include the actions of: while maintaining an association with a first access point on a first channel during first, second, and third consecutive time slices: monitoring, by a client device, a single second channel during the first time slice and the third time slice, and monitoring, by the client device, the first channel during the second time slice; receiving a beacon from a second access point during the first time slice or the third time slice; and determining a property of the client device or the second access point using the beacon, without using the beacon to determine whether to establish an association with the second access point.
Other implementations of these aspects include corresponding systems, apparatus, and computer programs, configured to perform the actions of the methods, encoded on computer storage devices.
These and other implementations may each optionally include one or more of the following features. For instance, a transceiver of the client device maintains the association with the first access point and monitors the single second channel; the transceiver is tuned to the first channel during the second time slice; data is exchanged between the client device and the first access point during the second time slice; the first time slice and the third time slice each have a duration greater than a beacon transmission interval of the first access point; both (i) the ratio of the duration of the first time slice to the duration of the second time slice and (ii) the ratio of the duration of the third time slice to the duration of the second time slice are greater than 2 to 1; and/or both (i) the ratio of the duration of the first time slice to the duration of the second time slice and (ii) the ratio of the duration of the third time slice to the duration of the second time slice are approximately 5 to 1.
Advantageous implementations can include one or more of the following features. Information transmitted on a channel other than the channel of association can be received, even when the beacons are transmitted infrequently. The client device can obtain information about a property of the client device or of an access point. Using a property of the client device or the access point, information customized to the client device can be obtained.
A secondary channel can be scanned while an association on a primary channel is maintained. For a time period including many time slices, the amount of time monitoring a secondary channel can be greater than the amount of time tuned to the primary channel. A property of a second access point or the client device can be determined using a beacon received over the secondary channel, without using the beacon to determine whether to establish an association with the second access point.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features and advantages will become apparent from the description, the drawings, and the claims.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a diagram of a system that performs channel scanning.
FIG. 2 is a flow diagram illustrating a process for channel scanning.
FIG. 3 is a swim lane diagram illustrating channel scanning.



DETAILED DESCRIPTION
FIG. 1 is a diagram of a system that performs channel scanning FIG. 1 also illustrates a flow of data, shown in states (A) to (H), as well as a user interface 120 that is shown on a mobile client computing device (“client device”) 102 during state (H). States (A) to (H) may occur in the illustrated sequence, or they may occur in a sequence that is different than the illustrated sequence.
Most client devices exchange data over a single frequency channel at a time. A client device usually requests association with a particular access point on a primary channel and maintains that association for an extended period of time. While the association is intact, the client device maintains communication over a network through the access point. If the client device does not transmit any information to an access point for a long time, for example if the client device tunes a wireless transceiver away from the primary channel for a long time, the client device may lose the association with the access point. This can cause pending data transfers to be terminated and cause the client device to lose the connection to the network.
To receive information over a secondary channel and still maintain an association on a primary channel, the client device can tune to the secondary channel for a short time and then return to the primary channel. The client device can tune to a single secondary channel repeatedly to increase the likelihood that information will be received while tuned to the secondary channel.
Because the client device returns to the first channel frequently, the association with the first access point can be maintained. By repeatedly monitoring the same second channel during alternate time periods, the client device can monitor a single secondary channel for a significant amount of time. This enables the client device to receive a beacon frame (a “beacon”) over the second channel even when the beacon is transmitted relatively infrequently. The client device can receive a beacon from over the second channel that is sent not to facilitate an association with a second access point, but rather to transmit information about a property of the second access point or the client device.
System 100 includes the client device 102, a first access point 104, a second access point 106, a network 108, and a server system 110.
Examples of client devices 102 include laptop computers, cellular phones, and tablet computers. The client device 102 includes a processor, memory, input devices, and output devices. For example, the client device 102 includes a screen on which a user interface 120 or other output can be displayed.
The client device 102 may include a wireless transceiver. The client device 102 may include only one wireless transceiver, or more than one wireless transceiver. The wireless transceiver includes a wireless receiver and a wireless transmitter. The wireless transceiver can be capable of sending and receiving information over each of multiple radio frequency channels, but may be configured to communicate over only one channel at a time. The client device 102 can be enabled to programmatically tune the wireless transceiver from one channel to another channel. Switching from one channel to another may involve tuning a radio of the wireless transceiver from one frequency band to another frequency band.
The first access point 104 can include a wireless transceiver including a radio that can receive and transmit radio frequency signals. The radio can be tuned to a particular frequency channel. For example, for communication according to the 802.11 standard, the radio may be tuned to one of 14 standard channels in the 2.4 GHz range. The radio may also be configured for operation according to the 802.16 standard as well as other frequencies and protocols. The channel on which the first access point 104 operates is referred to as “channel A.”
The first access point 104 can establish an association with the client device 102. The access point can receive data from and transmit data to the client device 102 while the association is maintained. For example, the first access point 104 may pass data between the client device 102 and the network 108.
The second access point 106 can include a radio configured to transmit data over a frequency channel different from the channel of the first access point 104. The second access point 106 may be capable of transmitting on any of multiple frequency channels, including channel A, but may be configured to transmit on a particular frequency channel other than channel A. The transmitter of the second access point 106 can be configured to operate according to the same standards, protocols, and frequency ranges as the radios of the first access point 104 and the client device 102. The channel of operation for the second access point 106 is referred to as “channel B.”
In one implementation, the second access point 106 may not accept or respond to association requests from the client device 102. The second access point 106 may likewise not provide the client device 102 with a connection to the network 108. In some instances, the second access point 106 may not monitor or respond to transmissions from the client device 102 or other traffic on channel B.
The network 108 may include a local area network and/or wide area network, and may include the Internet. The server system 110 can be configured to transmit and receive information over the network 108, for example, to provide information in response to a query or request.
During state (A), the client device 102 establishes an association with the first access point 104 on a primary channel (in the figure, “channel A”). The radio of the client device 102 can be tuned to channel A. The client device 102 may receive, over the primary channel, a beacon (not shown) that identifies the first access point 104 and describes the connection available to the client device 102. The beacon may include a timestamp, an identifier for the first access point 106, and other information to facilitate an association with the first access point 104.
The client device 102 can then request association with the first access point 104 by sending an association request frame in response to the beacon. The first access point 104 and the client device 102 can exchange data to authenticate the client device 102, and the first access point can respond to the association request with an association response frame that accept the association of the client device 102.
During state (B), the client device 102 exchanges data with the first access point 104 over the primary channel. While the association between the client device 102 and the first access point 104 is maintained, the first access point 104 connects the client device 102 to the network 108. Data exchanged between the client device 102 and the first access point 104 is transferred wirelessly over channel A.
Maintaining an association with the first access point 104 does not require the transceiver of the client device 102 to be exclusively tuned to the primary channel, as will be discussed in greater detail. For example, a client device 102 can monitor channels other than the primary channel while communication over channel A is not occurring and still maintain the association with the first access point. The client device 102 can also interrupt communication over channel A to monitor another channel and maintain the association if the client device 102 continues communicating over channel A soon afterward.
During state (C), the client device 102 monitors a secondary channel (in the figure, “channel B”). The client device 102 can alternate tuning the transceiver of the client device 102 between the primary channel and the secondary channel. The tuning of the transceiver can be different for different time periods, or time slices 111a-111g. The client device 102 can automatically tune the transceiver according to a predefined pattern.
For example, the client device 102 can tune the transceiver to the primary channel during a first time slice 111a, and can tune the transceiver to the secondary channel during a second time slice 111b. The client device 102 can tune the transceiver back to the primary channel during a third time slice 111c, and can tune the transceiver once more to the secondary channel for a fourth time slice 111d, etc. The time slices 111a, 111c, 111e, 111g can each have generally equal durations, and the time slices 111b, 111d, 111f can each have generally equal durations. The time slices 111a-111g may also have varying durations.
The client device 102 can continue to alternate the tuning of the transceiver between the primary channel and the secondary channel during alternating time slices 111a-111g. During successive alternate time slices 111b, 111d, 111f (in other words, during every other time slice 111a-111g), the client device 102 tunes the transceiver to the monitored secondary channel. Between the time slices 111b, 111d, 111f (during which the transceiver is tuned to the secondary channel), the client device 102 tunes the transceiver to the primary channel, i.e., during the time slices 111a, 111c, 111e, 111g. For example, the client device 102 monitors the secondary channel during time slice 111b and time slice 111d, and monitors the primary channel during exactly one time slice 111c in between. The time slices 111a, 111c, 111e, 111g correspond to the times that the transceiver is listening to the primary channel and can thus be referred to as primary time slices. The time slices 111b, 111d, 111f correspond to the times that the transceiver is listening to the secondary channel and can thus be referred to as secondary time slices.
By monitoring a single secondary channel during successive alternate time slices 111b, 111d, 111f, the client device 102 can spend a substantial amount of time monitoring the secondary channel without losing the connection over the primary channel. The client device 102 is configured to thoroughly scan a single secondary channel rather than scanning multiple secondary channels. The scanning of the secondary channel can occur for a particular number of time slices 111b, 111d, 111f, a particular amount of time spent monitoring the secondary channel, or a particular amount of time that elapses since the client device 102 began monitoring the secondary channel. Although monitoring of only a single secondary channel is illustrated, the client device 102 can monitor any of multiple secondary channels. The client device 102 can monitor one secondary channel during successive alternate time slices 111b, 111d, 111f and later monitor a different secondary channel on other successive alternate time slices.
To provide a substantial overall amount of time monitoring the secondary channel, the time slices 111b, 111d, 111f can be longer than the time slices 111a, 111c, 111e, 111g. As a result, for a period of time including many time slices 111a-111g, the client device 102 spends more time with the transceiver tuned to the secondary channel than the time tuned to the primary channel.
For example, the time slices 111b, 111d, 111f may each have a duration of approximately 250 milliseconds (msec), and the time slices 111a may each have a duration of approximately 130 msec. Accordingly, the ratio of the time the receiver is tuned to the secondary channel to the time that the transceiver is tuned to the primary channel can be approximately 2:1. The ratio can also be greater or less than 2:1. For example, the time slices 111b, 111d, 111f may each have a duration of approximately “250 msec,” and the time slices 111a may each have a duration of approximately “50 msec.” Thus the ratio of the time that the transceiver is tuned to the secondary channel to the time that the transceiver is tuned to the primary channel can be approximately 5:1.
During the time slices 111b, 111d, 111f that the transceiver is tuned to the secondary channel, the client device 102 can receive transmissions (for example, packets, beacons, or other transmissions) from the second access point 106. During the time slices 111b, 111d, 111f, the client device 102 can be configured to only receive information, and to not transmit information to the second access point 106 over the secondary channel.
The duration of the time slices 111a-111g can be set to ensure that the association over the primary channel is maintained. The first access point 104 may terminate an association with the client device 102 if, for example, no transmissions from the client device 102 are received within a timeout threshold. For example, the timeout threshold may be approximately one second or “300 msec.” In some instances, the loss of an association disrupts transfers of data over the network 108 and the amount of time required to re-establish a lost association is significant.
To prevent the association from being terminated, the client device 102 can set the duration of the time slices 111b, 111d, 111f to be less than the timeout threshold of the first access point 104. The client device 102 then transmits data to the first access point over the primary channel during each time slice 111a. This ensures that the first access point 104 receives data from the client device 102 before the timeout threshold is reached, preventing the first access point 104 from terminating the association with the client device 102. By maintaining the association, the client device 102 can avoid incurring a re-association delay.
By maintaining the association with the first access point 104, the client device 102 can also continue to transfer data over the primary channel. The client device 102 can exchange data during the time slices 111a over the primary channel so that the user of the client device 102 retains access to the network 108 even though the transceiver is not continuously tuned to the primary channel.
During the time slices 111a that the transceiver of the client device 102 is tuned to the primary channel, data transfers between the client device 102 and the first access point can occur as normal. The client device 102 may not receive the transmissions (e.g., packets) from the first access point 104 during the time slices 111b, 111d, 111f, but the first access point 104 can store packets that were not received by the client device 102. The first access point 104 can resend the packets during one or the time slices 111a when the transceiver of the client device 102 is tuned to the primary channel. Similarly, the client device 102 can store packets to send to the first access point 104 until the transceiver is tuned to the primary channel.
The duration of the time slices 111a can be sufficient to maintain an acceptable data transfer rate that does not disrupt the flow of data between the client device 102 and the network 108. For example, time slices 111a each having a duration of approximately “130 msec” can facilitate reception of broadcast packets and multicast packets, and may support packet-rate-sensitive applications such as Voice over Internet Protocol (VoIP).
During state (D), the second access point 106 transmits a beacon 112 over the secondary channel. The beacon 112 (for example, a beacon frame or beacon packet) can be transmitted periodically to provide information to the client device 102. For example, the beacon 112 can have some or all of the same fields as a standard 802.11 management frame. Unlike standard beacons, the beacon 112 can include information encoded in one or more fields that is not related to wireless connections and associations. For example, the beacon 112 can include information encoded in the SSID field in addition to or instead of information that is used to identify the second access point 106. Other types of management frames and packets besides beacon frames can also be used.
The second access point 106 can be configured to provide information with the beacons 112 but to not invite and to not accept associations with client devices 102. As a result, information that is generally used to establish an association with an access point may be incomplete or omitted entirely from the beacon 112. By contrast, beacons transmitted by a standard access point (for example, the first access point 104), may broadcast beacons to facilitate establishing an association and a connection to the network 108.
The second access point 106 may transmit beacons 112 infrequently, for example, only once each second or once every three seconds. By contrast, a standard access point (for example, the first access point 104) may transmit beacons at short intervals. The first access point 104 may have a beacon transmission interval of, for example, approximately “100 msec.”
During state (E), the client device 102 receives the beacon 112 transmitted by the second access point 106 over the secondary channel. For example, the beacon 112 can be received during one or the time slices 111b, 111d, 111f that the receiver of the client device 102 is tuned to the secondary channel.
Because the client device 102 does not continuously monitor the secondary channel, but rather monitors the time slices 111b, 111d, 111f of the secondary channel, the client device 102 may not receive every beacon 112 transmitted by the second access point 106. For example, a beacon 112 transmitted while the transceiver of the client device 102 is tuned to the primary channel may not be received. Nevertheless, because the time slices 111b, 111d, 111f can have a longer duration than the time slices 111a, the client device 102 has an increased likelihood of receiving a particular beacon 112. Indeed, it is likely that few beacons 112 will be missed by the client device 102 before the transmission of a beacon 112 occurs during one or the time slices 111b, 111d, 111f. Because the beacons 112 may be transmitted infrequently, this high likelihood reduces the likely delay between the start of monitoring the secondary channel and the receipt of a beacon 112.
The client device 102 uses the beacon 112 to determine a property of the client device 102 or the second access point 106, without necessarily using the beacon to determine whether to establish an association with the second access point. The client device 102 may be configured to receive beacons without evaluating the potential for association with the second access point 106. The client device 102 can monitor the secondary channel for a purpose other than to determine the potential for connection or association with the second access point 106 or any other access point over the secondary channel.
The client device 102 can extract information from the beacon 112, or derive information from the beacon 112, that indicates a property of the client device 102 or the second access point 106. As an example, one property can include a location of the client device 102 or the second access point 106, for example, a geographic location. Another property may include a temperature. The property can be a property that is not related to connection or association within a wireless network. The beacon 112 can describe a property of the client device 102 even when the client device 102 has transmitted no information to the second access point 106. Similarly, the beacon 112 can describe a property of the client device 102 even when the second access point 106 has received no information about the client device 102 from any source. The property may be a property that is generally applicable to both the client device 102 and the second access point 106.
The extracted information may indicate a property of the client device 102 or the second access point 106. For example, the information extracted from the beacon 112 may include an identifier 113 that can be used to access a property in combination with additional information. The identifier 113 may or may not be unique to the second access point 106. The client device 102 can extract an identifier from the beacon 112 and use the extracted information to determine a property of the client device 102 or the second access point 106.
During state (F), the client device 102 transmits the identifier 113 to a server system 110. The identifier 113 may be transmitted in connection with a request from the client device 102 to provide a particular type of information. For example, the identifier can be transmitted with a query for nearby restaurants or a request for information about the local weather.
During state (G), the server system 110 uses the identifier 113 to determine a property of the client device 102 or the second access point 106, and sends information based on the property to the client device 102, for example, as a web page 119. The property can be directly or indirectly indicated by the identifier 113.
For example, the server system 110 receives the identifier 113 in connection with a request for the weather at the location of the client device 102, but the location of the client device 102 may be unknown or imprecise. The identifier can indicate the location of the client device 102. For example, the identifier 113 can indicate the location of the second access point 106, and the second access point 106 can be located in the same general location of the client device 102. The server system 110 determines the location of the client device 102 using the identifier 113, for example, by accessing information that associates the identifier 113 with a particular location.
The server system 110 provides information to the client device 102 based on the property determined using the identifier 113. For example, the server system 110 can determine information about the current or forecasted weather at the location determined using the identifier 113. The server system 110 transmits the weather information to the client device 102.
During state (H), the client device 102 displays information received from the server system 110. The information may be displayed on, for example, the user interface 120. The information displayed is based on the property that was determined using the identifier 113 from the beacon 112. For example, the information displayed may include a description of the current weather at the location of the client device 102, where the location was determined using the identifier 113.
The client device 102 can execute a computer program that causes the changes in tuning of the transceiver of the client device 102 to occur. For example, the client device 102 may execute the computer code in Table 1 to build a scan request that alternates between the primary channel and the secondary channel.










TABLE 1










single_channel_scan(channel, time) {




  /* Build the scan request */




  set_scan_header(buf);




  i = (time − 1) / 250 + 1;




  j = 0;




  while ( j < i ) {




    add_to_scan_request(buf, channel, 250);




    j++;




  }




  set_home_channel_time(buf, 130);




  send_scan_request(buf);




}










The code in Table 1 may be included in a program that can control wireless connections and transceiver functions of the client device 102, for example, a supplicant according to 802.1x specifications, such as the wpa_supplicant code. The function “single_channel_scan” is a function that generates a scan request that alternates between the primary channel (or “home channel”) and the secondary channel. The function receives two parameters, “channel” and “time,” which may each be a value, a data structure, or a reference to a value or data structure. The channel parameter identifies the particular secondary channel to scan during the time slices 111b, 111d, 111f. The time parameter indicates that total amount of time that the client device 102 should spend scanning the secondary channel, in milliseconds.
The “set_scan_header” function fills a buffer named “buf” with initial control and formatting information for the scan request. A variable named “i” receives a value that equals the number of time slices 111b, 111d, 111f required to achieve the total scanning time indicated by the time parameter. The number “250” indicates that the duration of each time slice 111b, 111d, 111f should be “250 msec.” For example, if the time parameter is 10,000, then the value of the variable i would be 40 (or (10000−1)/250+1), indicating that the transceiver should be tuned to the secondary channel for a total of 40 time slices 111b, 111d, 111f, each with a duration of “250 msec.” The loop counter variable “j” is initialized to zero. The while loop then begins, and continues while j is less than i. For each iteration of the while loop, (i) a scan request for a single time slice 111b, 111d, 111f is appended to the buffer with the function “add_to_scan_request” and (ii) the variable j is incremented. The function receives parameters: buf, the destination buffer for the appended information; channel, the variable that identifies the secondary channel; and a literal value of 250, which indicates the duration of each time slice 111b, 111d, 111f, in milliseconds. Ultimately, the while loop executes for the number of iterations indicated in the variable i.
After termination of the while loop, the “set_home_channel_time” function is invoked to append to the scan request the duration of time that the transceiver of the client device 102 should be tuned to the primary channel. For example, the function can append to the buffer information that indicates that the transceiver should be tuned to the primary channel for “130 msec,” as indicated by the parameter “130” passed to the function. The scan request, stored in the buffer buf, is transmitted by invoking the function “send_scan_request.” The scan request can then be carried out by other programs and hardware devices to perform the functions described above.
FIG. 2 is a flow diagram illustrating a process 200 for channel scanning Briefly, the process includes (i) while maintaining an association with a first access point on a first channel during first, second, and third consecutive time slices, monitoring a single second channel during the first time slice and the third time slice, and monitoring the first channel during the second time slice, (ii) receiving a beacon from a second access point during first time slice or the third time slice, (iii) and determining a property of the client device or the second access point using the beacon, without using the beacon to determine whether to establish an association with the second access point.
In further detail, while maintaining an association on a first channel during first, second, and third consecutive time slices, the second channel is monitored during the first and third time slices, and the first channel is monitored during the second time slice (202). A transceiver of the client device can maintain the association with the first access point and the same transceiver can monitor the single secondary channel.
During the third time slice, the transceiver can be tuned to the first channel. Data can be exchanged during the portion of time that the transceiver is tuned to the first channel. The portion of time that the transceiver is tuned to the secondary channel can be greater than a beacon transmission interval of the first access point, for example, greater than approximately 100 milliseconds. The ratio of time that the transceiver is tuned to the secondary channel to the time that the transceiver is tuned to the first channel can be greater than 2:1. The ratio of time that the transceiver is tuned to the secondary channel to the time that the transceiver is tuned to the first channel can be approximately 5:1. The first time slice and the third time slice can each have a duration of approximately 250 milliseconds, and the second time slice can have a duration of approximately 50 milliseconds.
A beacon from a second access point is received during the first time slice or the third time slice (204). The beacon can be received over the secondary channel while the transceiver is tuned to the secondary channel. One or more beacons can be received during both the first time slice and the third time slice.
A property of the client device or the second access point can be determined using the beacon (206). The property is determined without using the beacon to determine whether to establish an association with the second access point. The property can be a property that is not related to connection or association within a wireless network. The property can be the location of the client device or the second access point. In some implementations, signal strength of transmissions from the second access point can be used to approximate the distance between the client device and the second access point.
Determining the property can include extracting an identifier from the beacon and using the identifier to determine the property. For example, determining the property may include transmitting the identifier to a server system and receiving a property indicated, at least in part, by the identifier.
The process 200 can also include displaying information associated with the property. The client device can receive information associated with the property. For example, when the property indicates a location, the information can include information about weather, stores, or traffic near the location.
The process 200 can also include determining that the beacon was not transmitted to facilitate association with the second access point. The process 200 can also include determining that the beacon indicates a non-connection-related property of the client device or the access point.
FIG. 3 is a swim lane diagram 300 illustrating channel scanning. The diagram 300 shows the tuning of a transceiver (transmitter and receiver) of a client device 302. The diagram 300 also illustrates the interaction of the client device 302 with the first access point 304 and a second access point 306 during various time slices 311a-311f. The first access point 304 communicates over the primary channel (in the figure “channel A”), and the second access point 306 communicates over the secondary channel (in the figure, “channel B”).
The client device 302 monitors the secondary channel during successive alternate time slices 311b, 311d, 311f. In between each of the time slices 311b, 311d, 311f, the receiver of the client device 302 is tuned to the primary channel, for example, during time slices 311c, 311e. 
The client device 302 initially tunes a receiver to the primary channel and establishes an association with the first access point 304. The first access point 304 and the client device 302 exchange data over the primary channel during the first time slice 311a. The first time slice 311a has a duration of approximately “130 msec.”
The client device 302 tunes the receiver to the secondary channel and listens for transmissions from the second access point 306 during the second time slice 311b. The client device 302 does not transmit any data to the second access point 306. The second time slice has a duration of approximately “250 msec,” which is longer than the duration of the first time slice 311a. 
The client device 302 then tunes the receiver back to the primary channel to begin the third time slice 311c, the channel on which the association with the first access point 304 is ongoing. The client device 302 and the first access point 304 exchange data. Because the first access point 304 receives transmissions from the client device 302 at least periodically, the first access point 304 will not terminate the association with the client device 302. The duration of the third time slice 311c is approximately “130 msec,” the same as the duration of the first time slice 311a. 
The client device 302 tunes the receiver to the secondary channel for the fourth time slice 311d. During the fourth time slice 311d, the second access point 306 transmits a beacon 312 over the secondary channel. Because the receiver of the client device 302 is tuned to the secondary channel, the client device 302 receives the beacon 312. The client device 302 can process the beacon 312, for example, to determine a property of the client device or the second access point 306. The client device 302 does not respond to the beacon 312 and does not use the beacon to determine whether to establish an association with the second access point 306. The fourth time slice 311d has a duration of approximately “250 msec,” the same as the duration of the time slice 311b. 
The client device 302 tunes the receiver to the primary channel during the fifth time slice 311e. The client device 302 can continue to alternate the tuning of the receiver, to monitor the secondary channel during alternate time slices 311b, 311d, 311f, and to tune to the primary channel and exchange data during the other time slices 311a, 311c, 311e. The duration of the various time slices 311a-311f can vary. For example, the time slices 311a, 311c, 311e during which the receiver of the client device 302 is tuned to the primary channel may be “50 msec” instead of the “130 msec” illustrated.
A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. For example, various forms of the flows shown above may be used, with steps re-ordered, added, or removed.
Implementations and all of the functional operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Implementations can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer readable medium for execution by, or to control the operation of, data processing apparatus. The computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them. The term “data processing apparatus” encompasses all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to suitable receiver apparatus.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a tablet computer, a mobile telephone, a personal digital assistant (PDA), a mobile audio player, a Global Positioning System (GPS) receiver, to name just a few. Computer readable media suitable for storing computer program instructions and data include all forms of non volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, processes can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
Processes can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with any implementation, or any combination of one or more such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
While this specification contains many specifics, these should not be construed as limitations on scope or of what may be claimed, but rather as descriptions of features specific to particular implementations. Certain features that are described in this specification in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
In each instance where an HTML file is mentioned, other file types or formats may be substituted. For instance, an HTML file may be replaced by an XML, JSON, plain text, or other types of files. Moreover, where a table or hash table is mentioned, other data structures (such as spreadsheets, relational databases, or structured files) may be used.
Particular implementations have been described. Other implementations are within the scope of the following claims. For example, the steps recited in the claims can be performed in a different order and still achieve desirable results.

## Claims

1. A computer-implemented method comprising:
monitoring, by a client device during a first time slice in a sequence of three consecutive time slices, a single second channel while maintaining an association with a first access point on a first channel, the sequence of three consecutive time slices comprising the first time slice, followed by a second time slice, followed by a third time slice, wherein a transceiver of the client device is tuned to the single second channel during the first time slice;
monitoring, by the client device during the second time slice of the three consecutive time slices, the first channel while maintaining the association with the first access point on the first channel, wherein the transceiver is tuned to the first channel during the second time slice;
monitoring, by the client device during the third time slice of the three consecutive time slices, the same single second channel monitored during the first time slice while maintaining the association with the first access point on the first channel, wherein the transceiver is tuned to the single second channel during the third time slice;
receiving, by the client device, a beacon from a second access point during the third time slice; and
determining, by the client device, a location of the client device using the beacon, without using the beacon to determine whether to establish an association with the second access point.

2. The computer-implemented method of claim 1, wherein data is exchanged between the client device and the first access point during the second time slice.

3. The computer-implemented method of claim 1, wherein the first time slice and the third time slice each have a duration greater than a beacon transmission interval of the first access point.

4. The computer-implemented method of claim 1, wherein both (i) the ratio of the duration of the first time slice to the duration of the second time slice and (ii) the ratio of the duration of the third time slice to the duration of the second time slice are greater than 2 to 1.

5. The computer-implemented method of claim 1, wherein both (i) the ratio of the duration of the first time slice to the duration of the second time slice and (ii) the ratio of the duration of the third time slice to the duration of the second time slice are approximately 5 to 1.

6. The computer-implemented method of claim 1, further comprising:
extracting, by the client device, information from the received beacon;
transmitting, by the client device, the extracted information to a server system over a network; and
receiving, by the client device, a web page generated by the server system using the transmitted information.

7. The computer-implemented method of claim 1, wherein the first time slice and the third time slice of the three consecutive time slices each have a length that is less than an association timeout threshold of the first access point.

8. The computer-implemented method of claim 1, wherein the each of the three consecutive time slices has a length less than an association timeout threshold of the first access point.

9. A non-transitory computer storage medium encoded with a computer program, the program comprising instructions that when executed by one or more computers cause the one or more computers to perform operations comprising:
monitoring, by a client device during a first time slice in a sequence of three consecutive time slices, a single second channel while maintaining an association with a first access point on a first channel, the sequence of three consecutive time slices comprising the first time slice, followed by a second time slice, followed by a third time slice, wherein a transceiver of the client device is tuned to the single second channel during the first time slice;
monitoring, by the client device during the second time slice of the three consecutive time slices, the first channel while maintaining the association with the first access point on the first channel, wherein the transceiver is tuned to the first channel during the second time slice;
monitoring, by the client device during the third time slice of the three consecutive time slices, the same single second channel monitored during the first time slice while maintaining the association with the first access point on the first channel, wherein the transceiver is tuned to the single second channel during the third time slice;
receiving, by the client device, a beacon from a second access point during the third time slice; and
determining, by the client device, a location of the client device using the beacon, without using the beacon to determine whether to establish an association with the second access point.

10. The non-transitory computer storage medium of claim 9, wherein data is exchanged between the client device and the first access point during the second time slice.

11. The non-transitory computer storage medium of claim 9, wherein the first time slice and the third time slice each have a duration greater than a beacon transmission interval of the first access point.

12. The non-transitory computer storage medium of claim 9, wherein both (i) the ratio of the duration of the first time slice to the duration of the second time slice and (ii) the ratio of the duration of the third time slice to the duration of the second time slice are greater than 2 to 1.

13. The non-transitory computer storage medium of claim 9, wherein both (i) the ratio of the duration of the first time slice to the duration of the second time slice and (ii) the ratio of the duration of the third time slice to the duration of the second time slice are approximately 5 to 1.

14. A system comprising:
one or more computers; and
a computer-readable medium coupled to the one or more computers having instructions stored thereon which, when executed by the one or more computers, cause the one or more computers to perform operations comprising:
monitoring, by a client device during a first time slice in a sequence of three consecutive time slices, a single second channel while maintaining an association with a first access point on a first channel, the sequence of three consecutive time slices comprising the first time slice, followed by a second time slice, followed by a third time slice, wherein a transceiver of the client device is tuned to the single second channel during the first time slice;
monitoring, by the client device during the second time slice of the three consecutive time slices, the first channel while maintaining the association with the first access point on the first channel, wherein the transceiver is tuned to the first channel during the second time slice;
monitoring, by the client device during the third time slice of the three consecutive time slices, the same single second channel monitored during the first time slice while maintaining the association with the first access point on the first channel, wherein the transceiver is tuned to the single second channel during the third time slice;
receiving, by the client device, a beacon from a second access point during the third time slice; and
determining, by the client device, a location of the client device using the beacon, without using the beacon to determine whether to establish an association with the second access point.

15. The system of claim 14, wherein data is exchanged between the client device and the first access point during the second time slice.

16. The system of claim 14, wherein the first time slice and the third time slice each have a duration greater than a beacon transmission interval of the first access point.

17. The system of claim 14, wherein both (i) the ratio of the duration of the first time slice to the duration of the second time slice and (ii) the ratio of the duration of the third time slice to the duration of the second time slice are approximately 5 to 1.