Patent Publication Number: US-9408038-B2

Title: Filtering out access point data based on non-conformity with other access point data

Description:
TECHNICAL FIELD 
     The present disclosure relates to filtering out signal strength data associated with a network device and a client device when the signal strength data fails to correlate with other pieces of signal strength data associated with the client device. This filtered data may be used to produce more accurate client device location estimates by intelligently examining detected signal strength values. 
     BACKGROUND 
     Over the last decade, there has been a substantial increase in the use and deployment of network devices. For example, smartphones, laptop computers, desktop computers, tablet computers, and smart appliances may each communicate over wireless switching networks. Commonly, the location of these devices may be determined using a variety of techniques. 
     For example, strength characteristics of signals transmitted by a wireless device and received by a set of access points may be examined to triangulate the position of the wireless device. However, the strength characteristics for one or more of these wireless signals may be inaccurate or skewed based on anomalies in the transmission environment. As a result, the estimated location of the wireless device, which may be calculated partially based on these inaccurate strength characteristics, may also be inaccurate. 
     The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The embodiments are illustrated by way of example and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. It should be noted that references to “an” or “one” embodiment in this disclosure are not necessarily to the same embodiment, and they mean at least one. In the drawings: 
         FIG. 1  shows a block diagram example of a network system in accordance with one or more embodiments. 
         FIG. 2  shows a component diagram of an access point according to one embodiment. 
         FIG. 3  shows a method for calculating the estimated current location of a client device by filtering signal strength values according to one embodiment. 
         FIG. 4A  shows a client device emitting wireless signals for determining the location of the client device according to one embodiment. 
         FIG. 4B  shows a detected current location of the client device based on distances from a set of access points according to one embodiment. 
         FIG. 5  shows a method for calculating the estimated current location of the client device using error vectors for filtering signal strength values according to one embodiment. 
         FIG. 6A  shows an example of an area in which multiple access points are located according to one embodiment. 
         FIG. 6B  shows the example area split into multiple cells according to one embodiment. 
         FIG. 6C  shows each of the cells with corresponding expected signal strength values and error vectors according to one embodiment. 
     
    
    
     DETAILED DESCRIPTION 
     In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding. One or more embodiments may be practiced without these specific details. Features described in one embodiment may be combined with features described in a different embodiment. In some examples, well-known structures and devices are described with reference to a block diagram form in order to avoid unnecessarily obscuring the present invention. 
     Herein, certain terminology is used to describe features for embodiments of the disclosure. For example, the term “digital device” generally refers to any hardware device that includes processing circuitry running at least one process adapted to control the flow of traffic into the device. Examples of digital devices include a computer, a tablet, a laptop, a desktop, a netbook, a server, a web server, an authentication server, an authentication-authorization-accounting (AAA) server, a Domain Name System (DNS) server, a Dynamic Host Configuration Protocol (DHCP) server, an Internet Protocol (IP) server, a Virtual Private Network (VPN) server, a network policy server, a mainframe, a television, a content receiver, a set-top box, a video gaming console, a television peripheral, a printer, a mobile handset, a smartphone, a personal digital assistant “PDA”, a wireless receiver and/or transmitter, an access point, a base station, a communication management device, a router, a switch, and/or a controller. 
     It is contemplated that a digital device may include hardware logic such as one or more of the following: (i) processing circuitry; (ii) one or more communication interfaces such as a radio (e.g., component that handles the wireless data transmission/reception) and/or a physical connector to support wired connectivity; and/or (iii) a non-transitory computer-readable storage medium (e.g., a programmable circuit; a semiconductor memory such as a volatile memory and/or random access memory “RAM,” or non-volatile memory such as read-only memory, power-backed RAM, flash memory, phase-change memory or the like; a hard disk drive; an optical disc drive; etc.) or any connector for receiving a portable memory device such as a Universal Serial Bus “USB” flash drive, portable hard disk drive, or the like. 
     Herein, the terms “logic” (or “logic unit”) are generally defined as hardware and/or software. For example, as hardware, logic may include a processor (e.g., a microcontroller, a microprocessor, a CPU core, a programmable gate array, an application specific integrated circuit, etc.), semiconductor memory, combinatorial logic, or the like. As software, logic may be one or more software modules, such as executable code in the form of an executable application, an application programming interface (API), a subroutine, a function, a procedure, an object method/implementation, an applet, a servlet, a routine, source code, object code, a shared library/dynamic load library, or one or more instructions. These software modules may be stored in any type of a suitable non-transitory storage medium, or transitory computer-readable transmission medium (e.g., electrical, optical, acoustical or other form of propagated signals such as carrier waves, infrared signals, or digital signals). 
     Lastly, the terms “or” and “and/or” as used herein are to be interpreted as inclusive or meaning any one or any combination. Therefore, “A, B or C” or “A, B and/or C” mean “any of the following: A; B; C; A and B; A and C; B and C; A, B and C.” An exception to this definition will occur only when a combination of elements, functions, steps or acts are in some way inherently mutually exclusive. 
     Network System 
       FIG. 1  shows a block diagram example of a network system  100  in accordance with one or more embodiments. The network system  100 , as illustrated in  FIG. 1 , is a digital system that may include a plurality of digital devices such as one or more access points  101   1 - 101   4 , a client device  103 , a network controller  107  and/or an analytics and/or location engine (ALE)  109 . The client device  103  may be connected or associated with one or more of the access points  101   1 - 101   4  through corresponding wireless connections. In embodiment, one or more devices in the network system  100  may operate to determine the current location of the client device  103 . Each element of the network system  100  will be described below by way of example. In one or more embodiments, the network system  100  may include more or less devices than the devices illustrated in  FIG. 1 , which may be connected to other devices within the network system  100  via wired and/or wireless mediums. For example, in other embodiments, the network system  100  may include additional client devices  103  and/or additional access points  101 . 
     The access points  101   1 - 101   4  may be any device that can associate with the client device  103  to transmit and receive data over wireless channels and/or detect wireless signals transmitted by the client device  103 . In one embodiment, the access points  101   1 - 101   4  may correspond to a network device such as a wireless access point, a switch, a router, or any combination thereof.  FIG. 2  shows a component diagram of the access point  101   1  according to one embodiment. In other embodiments, the access points  101   2 - 101   4  may include similar or identical components to those shown and described in relation to the access point  101   1 . 
     As shown in  FIG. 2 , the access point  101   1  may comprise one or more of: a hardware processor  201 , data storage  203 , an input/output (I/O) interface  205 , and device configuration logic  207 . Each of these components of the access point  101   1  will be described in further detail below. 
     The data storage  203  of the access point  101   1  may include a fast read-write memory for storing programs and data during operations and a hierarchy of persistent memory, such as Read Only Memory (ROM), Erasable Programmable Read Only Memory (EPROM) and/or Flash memory for example, for storing instructions and data needed for the startup and/or operation of the access point  101   1 . In one embodiment, the data storage  203  is a distributed set of data storage components. The data storage  203  may store data that is to be transmitted from the access point  101   1  or data that is received by the access point  101   1 . For example, the access point  101   1  may store data to be forwarded to the client device  103  or to one or more of the access points  101   2 - 101   4 . In another embodiment, the data storage  203  may store signal strength values for one or more wireless signals received from the client device  103 . These strength values may be used for estimating the location of the client device  103 , as will be described in greater detail below. 
     In one embodiment, the I/O interface  205  corresponds to one or more components used for communicating with other devices (e.g., the client device  103 , the controller  107 , the ALE  109 , and/or other access points  101   2 - 101   4  within the system  100 ) via wired or wireless signals. The I/O interface  205  may include a wired network interface such as an IEEE 802.3 Ethernet interface and/or a wireless interface such as an IEEE 802.11 WiFi interface. The I/O interface  205  may communicate with the client device  103 , the controller  107 , the ALE  109 , and/or the access points  101   2 - 101   4  over corresponding wireless channels in the system  100 . 
     In some embodiments, the I/O interface  205  may include one or more antennas  209  for communicating with the client device  103 , the controller  107 , the ALE  109 , the access points  101   2 - 101   4 , other wireless devices in the network system  100 , and/or other devices over the external network  105 . For example, multiple antennas  209  may be used for forming transmission beams to one or more of the client device  103  and/or the access points  101   2 - 101   4  through adjustment of gain and phase values for corresponding antenna  209  transmissions. The generated beams may avoid objects and create an unobstructed path to the client device  103  and/or the access  101   2 - 101   4 . 
     In one embodiment, the I/O interface  205  in conjunction with the antennas  209  may detect wireless signals emitted by the client device  103 . In this embodiment, the client device  103  may not be directly associated with the access point  101   1  such that the client device  103  and the access point  101   1  maintain a data connection, but the access point  101   1  is still able to detect the presence of the proximate/neighboring client device  103 , including signal strength characteristics for corresponding wireless signals. For example, in  FIG. 1  the dashed lines indicates that the client device  103  is visible to and/or in-range of the access points  101   1 ,  101   3 , and  101   4  although the access points  101   1 ,  101   3 , and  101   4  and the client device  103  may not share a data connection. Instead, the client device  103  is only associated and maintains a data connection with the access point  101   2  (e.g., a data connection using one or more network protocols) as signified by the solid line. Accordingly, each of the access points  101   1 ,  101   3 , and  101   4  may detect nearby signals of the client device  103  even without an established data connection. Detection of these signals by the access points  101   1 - 101   4  may be used by to determine an estimated current location of the client device  103  as will be described in greater detail below. 
     In one embodiment, the hardware processor  201  is coupled to the data storage  203  and the I/O interface  205 . The hardware processor  201  may be any processing device including, but not limited to a MIPS/ARM-class processor, a microprocessor, a digital signal processor, an application specific integrated circuit, a microcontroller, a state machine, or any type of programmable logic array. 
     In one embodiment, the device configuration logic  207  includes one or more functional units implemented using firmware, hardware, software, or a combination thereof for configuring parameters associated with the access point  101   1 . In one embodiment, the device configuration logic  207  may be configured to determine a current location for the client device  103  based on signal strength characteristics corresponding to wireless signals transmitted by the client device  103 . 
     As described above, the other access points  101   2 - 101   4  may be similarly configured as described above in relation to the access point  101   1 . For example, access points  101   2 - 101   4  may comprise hardware processor  201 , data storage  203 , input/output (I/O) interface  205 , and device configuration logic  207  in a similar fashion as described above in relation to the access point  101   1 . 
     In one embodiment, the controller  107  and/or the ALE  109  may be similarly configured as described above in relation to the access point  101   1 . For example, the controller  107  and/or the ALE  109  may comprise hardware processor  201 , data storage  203 , input/output (I/O) interface  205 , and device configuration logic  207  in a similar fashion as described above in relation to the access point  101   1 . 
     In one embodiment, the ALE  109  may be a master controller  107  in the network system  100 . In this embodiment, the ALE  109  may perform one or more of the operations, which will be described below, for estimating the current location of the client device  103  based on signal strength characteristics corresponding to wireless signals transmitted by the client device  103 . 
     In one embodiment, the client device  103  may be any wireless electronic devices capable of receiving and transmitting data over wireless mediums. For example, the client device  103  may be one or more of a personal computer, a laptop computer, a netbook computer, a wireless music player, a portable communication device, a smart phone, a tablet computer, and a digital television. In one embodiment, the client device  103  is a digital device that includes a hardware processor, memory hierarchy, and input/output (I/O) interfaces including a wired and/or wireless interface such as an IEEE 802.11 interface. In one embodiment, the configuration of the components within the client device  103  may be similar to those discussed above in relation to the access point  101   1 . 
     Calculating the Location of the Client Device  103  Based on Signal Strength Differences and/or Rate of Change Data 
     Turning now to  FIG. 3 , a method  300  for calculating the estimated current location of the client device  103  according to one embodiment will be described. In one embodiment, each operation of the method  300  may be performed by one or more components of the access points  101   1 - 101   4 , the client device  103 , the controller  107 , and/or the ALE  109 . Although the operations of the method  300  are shown and described in a particular order, in other embodiments the operations may be performed in a different order. For example, in some embodiments, the operations of the method  300  may be performed concurrently or during overlapping time periods. 
     In one embodiment, the method  300  begins at operation  301  with the retrieval of one or more pieces of information that describe wireless signals emitted by the client device  103  and received by one or more of the access points  101   1 - 101   4 . In one embodiment, the information may include signal strength values corresponding to the wireless signals received by the access points  101   1 - 101   4 . For example, as shown in  FIG. 4A , the client device  103  may transmit wireless signals  401 A- 401 D to the access points  101   1 - 101   4 . The wireless signals  401 A- 401 D may be transmitted by the client device  103  at a predefined power level, which is shared with the access points  101   1 - 101   4 . For instance, the wireless signals  401 A- 401 D may be transmitted to the access points  101   1 - 101   4  at 20 dB. 
     In one embodiment, the received signals  401 A- 401 D may be transmitted as part of a data transfer or a communication involving control signals with one or more of the access points  101   1 - 101   4 . For example, the signals  401 A- 401 D may be part of a wireless data transfer or a communication of control signals using an established data connection between the client device  103  and the access point  101   2  (e.g., a data connection using one or more network protocols). These wireless signals  401 A- 401 D may be detected by the access points  101   1 - 101   4  even though the access points  101   1 ,  101   3 , and  101   4  and the client device  103  have not established a data connection. Although described as being related to a data transfer, in other embodiments the wireless signals  401 A- 401 D may be a beacon transmitted by the client device  103  with the intended purpose of determining the current location of the client device  103 . Again, these wireless signals  401 A- 401 D may be detected by the access points  101   1 - 101   4  even though the access points  101   1 ,  101   3 , and  101   4  and the client device  103  may not have established a data connection. 
     As noted above, the information received at operation  301  includes signal strength data. For example, in one embodiment, the data received at operation  301  may include received signal strength indicators (RSSIs) associated with the wireless signals  401 A- 401 D. The RSSI values describe the strength of the wireless signals  401 A- 401 D upon receipt by corresponding access points  101   1 - 101   4 . Since these signals  401 A- 401 D have traversed some distance between the client device  103  and each respective access point  101   1 - 101   4 , the signals  401  may attenuate and decrease in power. For instance, although the signals  401 A- 401 D may have originally been transmitted at 20 dB, the power of the wireless signal  401 A received by the access point  101   1  may be 18 dB, the power of the wireless signal  401 B received by the access point  101   2  may be 15 dB, the power of the wireless signal  401 C received by the access point  101   3  may be 16 dB, and the power of the wireless signal  401 D received by the access point  101   4  may be 19 dB. 
     As noted above, the access points  101   1 - 101   4  may be aware of the power with which the signals  401 A- 401 D were originally transmitted by the client device  103  (e.g., 20 dB). This transmitting power may be shared prior to transmitting the signals  401 A- 401 D or the signals  401 A- 401 D may themselves include this power information encoded therein. 
     Although described above in relation to a single signal strength value for each access point  101   1 - 101   4 , the information received at operation  301  may include multiple signal strength values for each of the access points  101   1 - 101   4 . These multiple values correspond to multiple sets of wireless signals  401 A- 401 D received by each associated access point  101   1 - 101   4  over time. For example, Table 1 below shows an example set of signal strength values (e.g., RSSIs) that may be retrieved/obtained at operation  301 . 
     
       
         
           
               
               
               
             
               
                   
                 TABLE 1 
               
               
                   
                   
               
               
                   
                 Access Point ID 
                 RSSI Values (dB) 
               
               
                   
                   
               
             
            
               
                   
                 Access Point 101 1   
                 (18, 17, 17, 18) 
               
               
                   
                 Access Point 101 2   
                 (14, 15, 14, 22) 
               
               
                   
                 Access Point 101 3   
                 (16, 17, 17, 15) 
               
               
                   
                 Access Point 101 4   
                 (19, 17, 18, 19) 
               
               
                   
                   
               
            
           
         
       
     
     The signal strength values listed in Table 1 correspond to separate points in time. Accordingly, the first signal strength value listed for each access point  101   1 - 101   4  corresponds to time T 1 , the second signal strength value listed for each access point  101   1 - 101   4  corresponds to time T 2 , the third signal strength value listed for each access point  101   1 - 101   4  corresponds to time T 3 , and the fourth signal strength value listed for each access point  101   1 - 101   4  corresponds to time T 4 . In one embodiment, each of the signal strength values shown in Table 1 is transmitted by each corresponding access point  101   1 - 101   4  to the ALE  109  over time. Accordingly, the ALE  109  may collect and store signal strength values for computing the location of the client device  103 . 
     Following operation  301 , operation  303  may determine a correlation between the one or more signal strength values received at operation  301 . For example, operation  303  may determine 1) a difference value between a set of signal strength values for each individual access point  101   1 - 101   4  and/or 2) a rate of change between the signal strength values for each individual access point  101   1 - 101   4 . These computed values may be used for determining/defining the correlation between signal strength values for each access point  101   1 - 101   4 . 
     For example, in one embodiment, operation  303  may compute the difference between the two most recent signal strength values for the access points  101   1 - 101   4  (e.g., the two rightmost signal strength values in Table 1 associated with each of the access points  101   1 - 101   4 ). Using the example dataset in Table 1, the difference between the two most recent signal strength values for the access point  101   1  would be 1 dB (i.e., 18 dB-17 dB), the difference between two most recent signal strength values for the access point  101   2  would be 8 dB (i.e., 22 dB-14 dB), the difference between the two most recent signal strength values for the access point  101   3  would be −2 dB (i.e., 15 dB-17 dB), and the difference between the two most recent signal strength values for the access point  101   4  would be 1 dB (i.e., 19 dB-18 dB). 
     In one embodiment, the computed differences between signal strength values for each access point  101   1 - 101   4  may be compared against a predefined difference threshold to determine whether the signal strength values for a particular access point  101   1 - 101   4  are correlated. For example, the predefined difference threshold may be 2 dB. In one embodiment, an absolute value of the difference values may be used for comparison such that a general variance can be observed. Since the absolute value of the differences 1 dB, −2 dB, and 1 dB corresponding to the access points  101   1 ,  101   3 , and  101   4 , respectively, are equal or below the difference threshold value of 2 dB, operation  303  may determine that the two most recent signal strength values for the access points  101   1 ,  101   3 , and  101   4  are highly correlated. In contrast, since the difference of 8 dB for the access point  101   2  is above the difference threshold value, operation  303  may determine that the two most recent signal strength values for the access point  101   2  have a low correlation and/or are not correlated. 
     As noted above, instead of determining a strict difference between the two most recent signal strength values for each access point  101   1 - 101   4 , operation  303  may determine a rate of change for the signal strength values in relation to each access point  101   1 - 101   4 . This rate of change may thereafter be used to determine correlation. In one embodiment, the last two signal strength values for each of the access points  101   1 - 101   4  and associated times for each of the signal strength values, may be used to compute a rate of change for each of the access points  101   1 - 101   4 . For the example dataset provided above in Table 1, the two most recent signal strength values for the access points  101   1 - 101   4  may represent detected values at 3:01 PM and 3:02 PM, respectively. Accordingly, the rate of change of the signal strength values for the access point  101   1  may be computed as: 
     
       
         
           
             
               rate 
               ⁢ 
               
                   
               
               ⁢ 
               of 
               ⁢ 
               
                   
               
               ⁢ 
               change 
             
             = 
             
               
                 Signal 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 Strength 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 Change 
               
               
                 Time 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 Change 
               
             
           
         
       
       
         
           
             
               rate 
               ⁢ 
               
                 
                     
                 
                 ⁢ 
                 
                     
                 
               
               ⁢ 
               of 
               ⁢ 
               
                   
               
               ⁢ 
               change 
             
             = 
             
               
                 
                   18 
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   dB 
                 
                 - 
                 
                   17 
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   dB 
                 
               
               
                 
                   3 
                   ⁢ 
                   
                     : 
                   
                   ⁢ 
                   02 
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   PM 
                 
                 - 
                 
                   3 
                   ⁢ 
                   
                     : 
                   
                   ⁢ 
                   01 
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   PM 
                 
               
             
           
         
       
       
         
           
             
               rate 
               ⁢ 
               
                   
               
               ⁢ 
               of 
               ⁢ 
               
                   
               
               ⁢ 
               change 
             
             = 
             
               1 
               ⁢ 
               
                   
               
               ⁢ 
               db 
               ⁢ 
               
                 / 
               
               ⁢ 
               minute 
             
           
         
       
     
     Similarly, the rate of changes for the access points  101   2 - 101   4  may be 8 dB/minute, −2 dB/minute, and 1 dB/minute, respectively. The computed rates of change may be compared against a predefined rate of change threshold to determine whether the signal strength values for each of the access points  101   1 - 101   4  are correlated. In one embodiment, an absolute value of the rates of change may be used for comparison such that a general variance can be observed. For example, the predefined rate of change threshold may be 2 dB/minute. Since the absolute value of the rates of change of 1 dB/minute, −2 dB/minute, and 1 dB/minute, corresponding to the access points  101   1 ,  101   3 , and  101   4 , respectively, are equal or below this rate of change threshold value, operation  303  may determine that the most recent signal strength values for the access points  101   1 ,  101   3 , and  101   4  are highly correlated. In contrast, the rate of change of signal strength values for the access point  101   2  may be 8 dB/minute. In this case, since the rate of change for the signal strength values of the access point  101   2  is above the rate of change threshold value, operation  303  may determine that the most recent signal strength values for the access point  101   2  have a low correlation and/or are not correlated. 
     Although described above in relation to a pair of signal strength values for each of the access points  101   1 - 101   4 , in other embodiments three or more signal strength values for each of the access points  101   1 - 101   4  may be used to determine differences/rates of change and corresponding correlations between these datasets. 
     As described above, although operation  303  may utilize difference or rate of change information to determine signal strength correlation, the method  300  will be further explained below in relation to only difference information. However, it is understood that rate of change information or any other data used to describe correlation may be similarly used in place of these difference values. 
     On the basis of the correlation data computed at operation  303  and/or the original signal strength values obtained at operation  301 , operation  305  may determine if the client device  103  has moved between readings of signal strength values. A move of the client device  103  may be exemplified by significant changes in signal strength values for a majority of the access points  101   1 - 101   4  that result in the signal strength values having low or no correlation. For example, operation  305  may examine the correlation data computed at operation  303  for each access point  101   1 - 101   4  to determine if there is a low correlation between the most recent signal strength values for a majority of the access points  101   1 - 101   4 . For example, based on Table 1 above, the signal strength values for the access points  101   1 ,  101   3 , and  101   4  may show a high correlation as described above. Based on this high correlation between signal strength values recorded for each these access points  101   1 ,  101   3 , and  101   4 , operation  305  may conclude that the client device  103  is not moving during a time period between the last two signal strength values. In particular, since the signal strength values for the access points  101   1 ,  101   3 , and  101   4  do not indicate a large difference or rate of change, the client device  103  is likely stable between successive signal strength value readings. In the example dataset presented in Table 1, the signal strength values for the access point  101   2  indicate a low correlation as described above in relation to operation  303 . Although there is a low correlation for signal strength readings for this access point  101   2 , which under some circumstances would indicate movement of the client device  103 , one or more of the signal strength values for this access point  101   2  may be considered an outlier or an anomaly in the face of the high correlation determined for the access points  101   1 ,  101   3 , and  101   4 . In particular, since more of the access points  101   1 - 101   4  have a high correlation for respective signal strength values taken at designated times, the client device  103  may be determined to be stable or not moving despite the low correlation for the signal strength values associated with the access point  101   2 . 
     It should be noted that although the client device  103  is determined not to be moving during successive signal strength readings, the slight movement in these values may be the result of jitter or other minor variances. Accordingly, by comparing these differences or rates of changes against a threshold, the method  300  may avoid a determination that the client device  103  has moved when in fact the changes were the result of system irregularities. 
     Table 2 below shows another example dataset for the access points  101   1 - 101   4 . 
     
       
         
           
               
               
               
             
               
                   
                 TABLE 2 
               
               
                   
                   
               
               
                   
                 Access Point ID 
                 RSSI Values (dB) 
               
               
                   
                   
               
             
            
               
                   
                 Access Point 101 1   
                 (18, 17, 17, 30) 
               
               
                   
                 Access Point 101 2   
                 (14, 15, 14, 26) 
               
               
                   
                 Access Point 101 3   
                 (16, 17, 17, 44) 
               
               
                   
                 Access Point 101 4   
                 (19, 17, 19, 32) 
               
               
                   
                   
               
            
           
         
       
     
     Based on the dataset shown in Table 2, the access points  101   1 - 101   4  have differences between the two most recent signal strength values of 13 dB, 12 dB, 27 dB, and 13 dB, respectively. On the basis of these differences, operation  303  may determine that the access points  101   1 - 101   4  have low correlations between the two most recent signal strength values for each of the access points  101   1 - 101   4 . On the basis of these low correlations, operation  305  may determine that the client device  103  has moved between the period of time the last two signal strength values were detected for each access point  101   1 - 101   4 . 
     Table 3 below shows another example dataset for the access points  101   1 - 101   4 . 
     
       
         
           
               
               
               
             
               
                   
                 TABLE 3 
               
               
                   
                   
               
               
                   
                 Access Point ID 
                 RSSI Values (dB) 
               
               
                   
                   
               
             
            
               
                   
                 Access Point 101 1   
                 (18, 17, 17, 30) 
               
               
                   
                 Access Point 101 2   
                 (14, 15, 14, 26) 
               
               
                   
                 Access Point 101 3   
                 (16, 17, 17, 19) 
               
               
                   
                 Access Point 101 4   
                 (19, 17, 19, 32) 
               
               
                   
                   
               
            
           
         
       
     
     Based on the dataset shown in Table 3, the access points  101   1 - 101   4  have differences between the two most recent signal strength values of 13 dB, 12 dB, 2 dB, and 13 dB, respectively. On the basis of this dataset, operation  303  may determine that the access points  101   1 ,  101   2 , and  101   4  have low correlations between the two most recent signal strength values. In contrast, the access points  101   3  may have a difference between the two most recent signal strength values of 2 dB. On the basis of this relatively small difference, operation  303  may have determined a high correlation between signal strength values for this access point  101   3 . Even though the access point  101   3  exhibited a high correlation between signal strength values, operation  305  may still determine that the client device  103  has moved between the period of time the two most recent signal strength values were detected based on the low correlation of signal strength values for a majority of the access points  101   1 - 101   4  (e.g., the access points  101   1 ,  101   2 , and  101   4 ). 
     Upon determining that the client device  103  has moved at operation  305 , the method  300  may move to operation  307 . At operation  307 , a set of access points  101   1 - 101   4  and corresponding signal strength values are selected to determine the location of the client device  103 . In one embodiment, the selection of access points  101   1 - 101   4  may be based on the magnitude/amount of movement of the client device  103  suggested by each set of signal strength values for each access point  101   1 - 101   4 . In particular, a similar difference or rate of change between signal strength values may be used to select a set of access points  101   1 - 101   4  and corresponding signal strength values. 
     For example, in the dataset shown in Table 2, the signal strength values for each of the access points  101   1 - 101   4  indicate that the client device  103  has moved between the period of time the last two signal strength values for each access point  101   1 - 101   4  were detected. Although the signal strength values for each of the access points  101   1 - 101   4  lead to the same general conclusion (i.e., movement of the client device  103 ), the amount of movement for the client device  103  suggested by the access points  101   1 ,  101   2 , and  101   4  (e.g., 13 dB, 12 dB, and 13 dB) are closer in magnitude than the amount of movement for the client device  103  suggested by the access point  101   3  (e.g., 27 dB). In terms of distance of movement, the access points  101   1 ,  101   2 , and  101   4  may suggest that the client device  103  has moved 5 meters while the access point  101   3  may suggest that the client device  103  has moved 10 meters. 
     Since the signal strength values for the access point  101   3  suggest a magnitude of movement far greater than the signal strength values for the access points  101   1 ,  101   2 , and  101   4 , operation  307  may discard the values for access point  101   3  in favor of the signal strength values for the access points  101   1 ,  101   2 , and  101   4 . Since signal strength values are only needed from three access points  101   1 - 101   4  to accurately triangulate the position of the client device  103 , discarding the signal strength values of the access point  101   3  should not negatively affect location estimation of the client device  103 . 
     In one embodiment, where each of the access points  101   1 - 101   4  return similarly lowly correlated values and/or indicate movement of the client device  103  with similar magnitudes, operation  307  may select access points  101   1 - 101   4  with the highest signal strength values. Generally, the stronger the signal strength values, the more accurate the reading. This increased accuracy is based on the close positioning of the client device  103  to the corresponding access point  101   1 - 101   4 , which yield this stronger/greater signal strength value. In particular, the transmitted signal has less distance to attenuate and be generally altered. 
     Returning again to operation  305 , upon determining that the client device  103  has not moved, the method  300  may move to operation  309 . At operation  309 , the method  300  may discard individual signal strength values that have resulted in a low correlation between signal strength values of a corresponding access point  101   1 - 101   4 . For example, in the dataset shown in Table 1 above, the two most recent signal strength values for the access point  101   2  generate a difference of 8 dB. As noted above, this difference value may indicate a low correlation (i.e., a difference greater than the difference threshold) and corresponding movement of the client device  103 . Since the signal strength values for the other access points  101   1 ,  101   3 , and  101   4  have indicated that the client device  103  is likely not moving, the method  300  may conclude that one or more signal strength values associated with the access point  101   2  are inaccurate. At operation  309 , the inaccurate signal strength values may be discarded. 
     In one embodiment, operation  309  may discard the last detected signal strength value and replace this discarded value with the previous signal strength value. For example, in the dataset shown in Table 1, the signal strength values ( 14 ,  15 ,  14 ,  22 ) corresponding to the access point  101   2  may be replaced with the signal strength values ( 14 ,  15 ,  14 ,  14 ). Since only the last known signal strength value is determined to be inaccurate and the client device  103  has been determined to not have moved since the previous detected signal strength value, replacing the last detected signal strength value with the previous signal strength value should produce an accurate estimation of the location of the client device  103 . 
     Although described as discarding and replacing particular signal strength values, in some embodiments operation  309  may select particular access points  101   1 - 101   4  with corresponding sets of signal strength values in a similar fashion as described above in relation to operation  307 . In one embodiment, the selection of access points  101   1 - 101   4  and corresponding sets of signal strength values may be based on correlation data computed at operation  303 . For example, in the dataset shown in Table 1, the differences between signal strength values for the access points  101   1 - 101   4  are 1 dB, 8 dB, 2 dB, and 1 dB, respectively. Accordingly, the differences for the access points  101   1 ,  101   3 , and  101   4  are between 1 dB-2 dB. In contrast, the difference for the access point  101   2  is 8 dB. Accordingly, the difference value for the access point  101   2  is on the order of 2-4 times that of the difference values for the access points  101   1 ,  101   3 , and  101   4 . Based on this level of dissimilarity, operation  309  may select the access points  101   1 ,  101   3 , and  101   4  and corresponding sets of signal strength values and discard the signal strength values associated with the access point  101   2 . 
     In one embodiment, where each of the access points  101   1 - 101   4  return similarly highly correlated values, operation  309  may select access points  101   1 - 101   4  with the highest signal strength values. As noted above, the stronger the signal strength values, the more accurate the reading. This increased accuracy is based on the close positioning of the client device  103  to the corresponding access point  101   1 - 101   4 , which yield this stronger/greater signal strength value. In particular, the transmitted signal has less distance to attenuate and be generally altered. 
     Although described as simultaneously analyzing a set of signal strength values corresponding to four separate access points  101   1 - 101   4 , in some embodiments the method  300  may first analyze a set of signal strength values corresponding to three separate access points  101   1 - 101   3 . Upon determining that one of the access points  101   1 - 101   3  is returning inaccurate signal strength values, signal strength values for a fourth access point  101   4  may be retrieved and analyzed. 
     Following selection of three access points  101  with corresponding sets of signal strength values at either operation  307  or operation  309 , operation  311  may estimate the location of the client device  103  based on the selected signal strength values. Based on the determined power of the wireless signals  401  at receipt and knowledge of the power of the signals  401  at transmission, each of the selected access points  101  may determine a distance or range separating the client device  103  and each respective access point  101 . As shown in  FIG. 4B  the access points  101   1 - 101   3  may be selected for location estimation of the client device  103  at operations  307  or  309 . The estimated distance between each of the access points  101   1 - 101   3  and the client device  103  may be represented by the circles  407 A- 407 C, where the radius of the circles  407 A- 407 C indicate the estimated distance between the client device  103  and each respective access point  101   1 - 101   3 . These distance estimates may be determined based on 1) estimated transfer function(s) describing signal propagation/degradation between the client device  103  and the access points  101   1 - 101   3  and/or 2) a table mapping signal attenuation to distance estimates. Although described as a single distance estimate between the client device  103  and the access points  101   1 - 101   3 , in some embodiments, a distance range may be provided. 
     As shown in  FIG. 4B , the estimated current location of the client device  103  may be the location X D , which falls in the intersection between the circles  407 A- 407 C. In one embodiment, the estimated current location of the client device  103  may be relative to one or more of the access points  101   1 - 101   3 . In another embodiment, based on knowledge of the location of one or more of the access points  101   1 - 101   3 , the detected current location may be relative to another object (e.g., a landmark), an area (e.g., a room in which the client device  103  and/or the access points  101   1 - 101   3  are located, a campus, or the entire earth (i.e., GPS coordinates)). 
     As described above, the estimated location of the client device  103  is computed based on filtered signal strength values for corresponding access points  101   1 - 101   4 . By filtering signal strength values through a heuristic and intra-access point  101   1 - 101   4  analysis, the method  300  eliminates inaccurate or anomalistic values, which may negatively alter the estimated location of the client device  103 . Accordingly, the method  300  may produce more accurate client device  103  location estimates by intelligently examining detected values. 
     Calculating the Location of the Client Device  103  Based on Signal Strength Value Error Vectors 
     Turning now to  FIG. 5 , a method  500  for calculating the estimated current location of the client device  103  according to one embodiment will be described. In one embodiment, each operation of the method  500  may be performed by one or more components of the access points  101   1 - 101   4 , the client device  103 , the controller  107 , and/or the ALE  109 . Although the operations of the method  500  are shown and described in a particular order, in other embodiments the operations may be performed in a different order. For example, in some embodiments, the operations of the method  500  may be performed concurrently or during overlapping time periods. 
     The method  500  may commence at operation  501  with retrieval of one or more pieces of information that describe wireless signals emitted by the client device  103  and received by one or more of the access points  101   1 - 101   4 . Operation  501  may be performed in a similar fashion as operation  301  described above. In one embodiment, the information retrieved at operation  501  may include signal strength values corresponding to the wireless signals received by the access points  101   1 - 101   4 . For example, Table 4 shows a set of signal strength values that may be retrieved at operation  501 . 
     
       
         
           
               
               
               
             
               
                   
                 TABLE 4 
               
               
                   
                   
               
               
                   
                 Access Point ID 
                 RSSI Values (dB) 
               
               
                   
                   
               
             
            
               
                   
                 Access Point 101 1   
                 18 
               
               
                   
                 Access Point 101 2   
                 22 
               
               
                   
                 Access Point 101 3   
                 15 
               
               
                   
                 Access Point 101 4   
                 19 
               
               
                   
                   
               
            
           
         
       
     
     Each of the signal strength values correspond to a single shared time. Accordingly, the signal strength values may be used to estimate the location of the client device  103  at this shared time. 
     Following operation  501 , operation  503  may divide the area/location in which the access points  101   1 - 101   4  are located into a set of equally sized cells. In this embodiment, the location of each of the access points  101   1 - 101   4  is known.  FIG. 6A  shows an example of an area  600  in which the access points  101   1 - 101   4  are located. The area  600  may be an office, a floor of a building, a campus, or any other environment in which the access points  101   1 - 101   4  are installed. As shown in  FIG. 6B , the area  600  may be divided into twenty-five cells  601 A- 601 Y. 
     At operation  505 , expected signal strength values may be computed for each of the cells  601 . The expected signal strength values represent the signal strength of wireless signals transmitted by each of the access points  101   1 - 101   4  after the signals have propagated through the area  600  to each corresponding cell  601 A- 601 Y. In one embodiment, the expected signal strength value for a cell  601 A- 601 Y located a distance d from a corresponding access point  101   1 - 101   4  may be calculated based on the path loss equation below:
 
Expected Path Loss= k+ 10 ×n  log( d )
 
     In the above equation, d may be the distance a wireless signal travels and the values k and n may be estimated for the environment in which the access points  101   1 - 101   4  are located. For example, in indoor environments, k may be 40 and n may be 4. Based on the expected path loss, the expected signal strength values for each of the cells  601 A- 601 Y may be calculated and associated with each cell  601 A- 601 Y as shown in  FIG. 6C . 
     Following calculation of expected signal strength values at operation  505 , operation  507  may determine an error vector for each cell  601 A- 601 Y in the area  600  as shown in  FIG. 6C . In one embodiment, the error vector may be calculated based on the expected signal strength values calculated at operation  505  and the actual signal strength values retrieved at operation  501 . In particular, the error vector may be calculated as the difference between the expected signal strength values for each access point  101   1 - 101   4  and the actual signal strength values. The error vector represents the likelihood the client device  103  is in each cell  601 A- 601 Y based on the actual signal strength values. Accordingly, low error vector values may indicate a strong likelihood that the client device  103  is located in a particular cell  601 . 
     At operation  509 , a cell  601  may be selected as the estimated location of the client device  103 . In one embodiment, the selection at operation  509  may be performed to minimize error vector values (or minimize the absolute value of the error vector values) while maximizing the actual signal strength values received for a particular cell  601 A- 601 Y. Generally, the stronger the signal strength values, the more accurate the reading. This increased accuracy is based on the close positioning of the client device  103  to the corresponding access point  101   1 - 101   4 , which yield this stronger/greater signal strength value. In particular, the transmitted signal has less distance to attenuate and be generally altered by the characteristics of the area  600 . 
     As described above, the estimated location of the client device  103  is computed based on determining error vectors and selecting the cell  601  within the area with the lowest error vector values. By filtering/selecting a cell  601  in this fashion, the method  500  eliminates signal strength values that are likely inaccurate. Accordingly, the method  300  may produce more accurate client device  103  location estimates by intelligently examining detected values. 
     An embodiment of the invention may be an article of manufacture in which a machine-readable medium (such as microelectronic memory) has stored thereon instructions which program one or more data processing components (generically referred to here as a “processor”) to perform the operations described above. In other embodiments, some of these operations might be performed by specific hardware components that contain hardwired logic (e.g., dedicated digital filter blocks and state machines). Those operations might alternatively be performed by any combination of programmed data processing components and fixed hardwired circuit components. Also, although the discussion focuses on uplink medium control with respect to frame aggregation, it is contemplated that control of other types of messages are applicable. 
     Any combination of the above features and functionalities may used in accordance with one or more embodiments. In the foregoing specification, embodiments have been described with reference to numerous specific details that may vary from implementation to implementation. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. The sole and exclusive indicator of the scope of the invention, and what is intended by the applicants to be the scope of the invention, is the literal and equivalent scope of the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction.