# Patent

## Title
Detecting mobile access points

## Abstract

In some implementations, a method includes receiving, from a server, location data identifying locations of access points and mobile access points. A mobile device may determine an identifier of an access point within a communication range. The identifier is compared with the location data to identify parameters for the access point. The access point is determined to be a mobile access point based on the identified parameters included in the location data. In response to identifying the mobile access point, operating parameters executed by the mobile device are updated.

## Background
TECHNICAL FIELD
This disclosure relates to mobile access points.
BACKGROUND
Mobile devices typically include features for determining a geographic location. For example, a mobile device can include a receiver for receiving signals from a global satellite system (e.g., global positioning system or GPS). The mobile device can determine a geographic location, including latitude and longitude, using the received GPS signals. In many places, GPS signals can be non-existent, weak, or subject to interference, such that it is not possible to determine a location using the GPS functions of a mobile device accurately. In such cases, the mobile device can determine its location using other technologies. For example, if the location of a wireless access gateway (e.g., a cellular tower) is known, and a mobile device can detect the wireless access gateway, the mobile device can then estimate a current location using a location of the detected wireless access gateway. The location of wireless access gateways can be stored in a location database. In some instances, the mobile device may determine the current location using triangulation based on strength of the signals received from the wireless access gateways and their locations.
SUMMARY
In some implementations, a method includes receiving, from a server, location data identifying locations of access points and mobile access points. A mobile device may determine an identifier of an access point within a communication range. The identifier is compared with the location data to identify parameters for the access point. The access point is determined to be a mobile access point based on the identified parameters included in the location data. In response to identifying the mobile access point, operating parameters executed by the mobile device are updated.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the implementations will be apparent from the description and drawings, and from the claims.



DESCRIPTION OF DRAWINGS
FIG. 1 illustrates an example location system for identifying mobile access points and updating operating parameters of mobile devices.
FIG. 2 illustrates an example system for determining mobile access points using crowd sourced data.
FIG. 3 is a flow chart illustrating an example method for determining mobile access points.
FIG. 4 is a flow chart illustrating an example method for updating operating conditions in response to a mobile access point.
FIG. 5 is a block diagram illustrating exemplary device architecture of a mobile device implementing the features and operations described in reference to FIGS. 1-4.



DETAILED DESCRIPTION
Exemplary Operating Environment
FIG. 1 is an example location system 100 for identifying mobile access points and updating operations of mobile devices in response to identifying mobile access points. For example, the system 100 may determine an access point is mobile based on crowd sourced data. In some implementations, the system 100 may determine locations of multiple mobile devices interacting with an access point over time and determine distances between the different locations. In these instances, the system 100 may determine the access point is a mobile access point based on the distances and update location data to identify the access point as a mobile access point. The distances between the different locations may be compared with a predefined threshold, and, if one of the distances exceeds the threshold, the access point can be identified as a mobile access point. Location data typically includes identifiers of access points (e.g., Media Access Control (MAC) addresses), access-point locations, timestamps, and information identifying a subset of the access points as mobile access points. In some implementations, the system 100 may periodically determine locations of a mobile device interacting with an access point and associate the mobile-device locations with the access point. Using the mobile-device locations associated with an access point at multiple times, the system 100 may determine whether the access point has moved and is a mobile access point. For example, the system 100 may determine distances between the mobile-device locations associated with the access point and determine whether any of the distances exceeds a predefined threshold. In response to determining an access point is mobile, the system 100 may update location data with information identifying the access point as a mobile access point. In response to identifying a mobile access point, the system 100 may infer that a mobile device interacting with the mobile access point is in a motorized vehicle and update operating parameters for the mobile device accordingly. For example, the updated operating parameters may include at least one of updating a Global Positioning System (GPS) algorithm, a frequency for time zone determinations, or operating modes of the mobile device.
In some implementations, the location system 100 includes one or more computers programmed to determine mobile access points from mobile-device locations and update operating parameters for a mobile device interacting with a mobile access point. As illustrated, the location system 100 includes a location server 102 communicatively coupled to mobile devices 104a-c through a wireless network 106. The wireless network 106 includes access points 110, 112, and 114 configured to wirelessly communicate with the mobile devices 104a-c. The mobile devices 104a-c are configured to determine current locations based on, for example, signals from a satellite 108, triangulating signals from access points 110, 112, and 114, or other techniques. In addition, each of the mobile devices 104a-c is configured to periodically transmit, to the location server 102, a submission 116 identifying current locations and access points 110, 112, 114 within communication range of that mobile device 104. For each mobile device 104, the location server 102 is configured to determine mobile access points based on the mobile-device locations at different times and update location data identifying both access-points locations and mobile access points. Once updated, the location server 102 may transmit location data 118 identifying access-point locations and mobile access points to one or more of the mobile devices 104a-c. Based on the location data 118, the mobile device 104 may update operating parameters in response to identifying a mobile access point within communication range. For example, the mobile device 104 may determine the user occupies a motorized vehicle based on proximity to a mobile access point and update operating parameters in response to the determination.
As for a more detailed description of the system 100, the location server 102 can include any software, hardware, firmware, or combination thereof configured to determine whether an access point is a mobile access point based on locations of a mobile device 104 interacting with the access point at difference times. For example, the location server 102 may determine that the access point 110 is a mobile access point based on a distance between locations of a mobile device 104 over a period of time. In some implementations, the location server 102 receives a submission 116 identifying both locations of a mobile device 104 during a time period (e.g., 24 hours) and access points within communication range at those locations. In response to an event (e.g., receiving the submission 116), the location server 102 may determine a distance between the locations associated with the access point 110, 112, 114 at different times and whether any of the distances exceeds a predefined threshold (e.g., 10 miles, 50 miles, 100 miles). If any of the distances exceed the predefined thresholds, the location server 102 may update location data for the access point 110, 112, 114 to indicate a mobile access point. In some implementations, the location server 102 can aggregate results of processing multiple submissions 116 to raise or lower the confidence that the access point 110, 112, 114 is a mobile access point. In other words, the location server 102 may receive submissions 166 from multiple mobile devices 104 (e.g., five difference submissions) and determine whether the submissions 115 indicate that the access point 110, 112, 114 is a mobile access point. In doing so, the location server 102 may determine or otherwise associate a confidence level to the determination.
In addition, the location server 102 may determine a speed associated with the mobile access point based on the distance and an associated time difference between location determinations. By determining the speed, the location server 102 may determine a type of motorized vehicle (e.g., airplane, boat, train) including the mobile access point and update the location data to identify a vehicle type. To increase confidence level associated with determining a vehicle type, the location server 102 may execute geocoding to determine a textual location of coordinates associated with the mobile device. For example, the location server 102 may determine whether the locations overlap an airport, train station, a boat dock and whether the textual location is associated with the determined vehicle type.
In some implementations, the location server 102 may estimate location areas for the access points 110, 112, and 114 based on the different locations of the mobile devices 104a-c. The location areas indicate communication ranges of access points 110, 112, and 114. To calculate location areas, the location server 102 may apply an iterative process (e.g., by performing a multi-pass analysis). The iterative process may determine a location area (e.g., a circle) that is associated with an access point 110, 112, 114. The location area may have a center that corresponds to an average geographic location based on device locations of the mobile devices 104a-c. For example, the location area may be a circle having a radius that corresponds to an error margin, which can be determined by, for example, the average geographic location and an associated radius. Further details on the iterative process are described below in reference to FIG. 2. The iterative process may be executed periodically (e.g., every six hours) to capture potential movement of access points 110, 112, and 114. The location server 102 may periodically, or in response to an event, transmit to the mobile devices 104a-c the location data 118 identifying access-point locations and mobile access points. An event may include activation of the mobile device 104, registration with an access point 110, 112, 114, or others.
The mobile devices 104a-c can include any software, hardware, firmware, or combination thereof configured to update operating parameters in response identifying mobile access points within communication range. For example, the mobile device 104 may update operating parameters of a GPS module in response to determining the mobile device 104 is travelling or otherwise moving in a motorized vehicle (e.g., airplane). In some implementations, the mobile device 104 may receive, from the location server 102, location data 118 identifying access points 110, 112, and 114 and mobile access points. The mobile device 104 may determine identifiers of access points 110, 112, and 114 within communication range and compare the access-point identifiers to the location data 118. For example, the mobile device 104 may compare MAC addresses of access points 110, 112, and 114 to identifiers of mobile access points included in the location data 118. If the any of the identifiers match identifiers for mobile access points in the location data 118, the mobile device 104 may update one or more operating parameters. For example, the updated operating parameters may include one or more of the following: updating a frequency for executing time zone corrections; switching to or presenting a request to switch to Airplane mode; or updating GPS operations. For example, updates to the GPS operation may include at least one of disregarding land-based user dynamics, increasing a search range, or modifying GPS tracking algorithms for user dynamics. For example, user dynamics can be used to at least one of adjusting tracking-loop dynamics (e.g., measurement engine optimization) or adjusting a positioning engine's kalman filter dynamics model.
Access point 110, 112, 114 can communicate with wireless devices (e.g., mobile devices 104a-c) using various communication protocols. In some implementations, access point 110, 112, 114 can be an access point of a WiFi network, which implements an Institute of Electrical and Electronics Engineers (IEEE) 802.11 based protocol (e.g., IEEE 802.11a). In some implementations, access point 110, 112, 114 can be an access point of a worldwide interoperability for microwave access (WiMAX) network, which implements an IEEE 802.16 based protocol (e.g., IEEE 802.16-2004 or IEEE 802.16e-2005). Access point 110, 112, 114 may have a communication range from less than ten meters to several hundred meters, depending on factors including configuration of access point 110, 112, 114 and physical surroundings. Mobile devices 104a-c can connect to an access point when mobile devices 104a-c are within the communication range of access point 110, 112, 114. In turn, multiple access points 110, 112, 114 can be available to a single mobile device 104. Mobile devices 104a-c may select an access point 110, 112, 114 based on various factors. For example, the selection can be based on whether mobile device 104 is authorized to connect to access point 110, 112, 114 or whether access point 110, 112, 114 can provide the strongest signal for the wireless connection to mobile device 104.
Example Location Server for Identifying Mobile Access Points
FIG. 2 illustrates an example location server 102 of FIG. 1 for identifying mobile access points. For example, the system 200 may determine mobile access points based on differences in locations associated with access points. As illustrated, the location server 102 includes a submission 202 identifying locations of a mobile device and access points identified at those locations, a mobile module 204 for determining mobile access points based on the mobile-device locations identified in the submission 202, a location database 206 for storing information identifying mobile access points and location areas of access points, a submission database 208 for storing submissions from mobile devices, a location module 210 for determining location areas of access points based on the mobile-device locations of multiple mobile devices, and location data 212 for identifying mobile access points and locations of access points to mobile devices. In particular, the submission 202 may be received from a mobile devices 104, as described with respect to FIG. 1, and identify locations over a period of time and access points within communication range at those locations. For example, the submission 202 may include times, device coordinates, identifiers of detected access points (e.g., MAC addresses) as well as other data. Regardless, the submission 202 is passed to the mobile module 204 and the submission database 208.
The mobile module 204 can include any software, hardware, firmware, or combination thereof for determining whether access points are mobile access points based on the locations of a mobile device. In particular, the mobile module 204 may determine whether distances between locations of a mobile device associated with an access point exceed a predetermined threshold. For example, the mobile module 204 may determine distances between locations associated with an access point at different times and whether any of the distances exceeds a predefined threshold. In response to a distance exceeding the threshold, the mobile module 204 may identify the access point as a mobile access point in the location database 206. To increase or decrease a confidence level associated with identifying a mobile access point, the mobile module 204 may execute this determination on submissions from multiple mobile devices. For example, the mobile module 204 may identify locations at different times associated with an access point for multiple mobile devices and, for each mobile device, determine whether the locations at different times indicate a mobile access point. In doing so, the location server 102 may determine or otherwise associate a confidence level to the determination.
In addition, the mobile module 204 may determine a type of motorized vehicle including a mobile access point based on an estimated speed of the mobile access point. For example, the mobile module 204 may estimate the speed of the mobile access point based on the distance between locations and the difference in time for the location determinations. In these instances, the mobile module 204 may compare the speed to different thresholds or ranges to determine a vehicle type (e.g., boat, train, airplane). For example, the mobile module 204 may determine a vehicle type is an airplane if the estimated speed exceeds a threshold such as 300 miles per hour. In some implementations, the mobile module 204 may update the location database 206 with information identifying an access point as a mobile access point and a vehicle type including the mobile access point. In some implementations, the mobile module 204 may execute reverse geocoding to map or otherwise associate access-point coordinates with facilities housing or including the determined vehicle type. For example, the mobile module 204 may determine a type of facility associated with the locations of the mobile device interacting with the access point. The facility types may include an airport, train station, and a boat dock. In doing so, the mobile module 204 may increase or decrease a confidence level for the determined vehicle type.
The location database 206 can include any software, hardware, firmware, or combination thereof to store location data for multiple access points. For example, the location database 206 may store one or more tables mapping or otherwise associating identifiers of access points to information identifying an estimated location and whether the access point is a mobile access point. In some implementations, the location database 206 may store or otherwise identify one or more of the following for each access point: access-point identifier; estimated coordinates and associated radius; time; date; mobile access point indicator; vehicle type; or others. In some implementations, the location database may transmit the location data 212 to one or more mobile devices in response to an event.
As previously mentioned, the submission 202 may be passed to the submission database 208 for storing historical locations for multiple mobile devices within communication range of an access point. In particular, the submission database 208 stores coordinates (X, Y)1, (X, Y)2, . . . , (X, Y)n for n different mobile devices interacting with an access point. In addition, the stored locations (X, Y)1, (X, Y)2, . . . , (X, Y)n may be associated with other parameters such as, for example, a time or time period. The times may be used to manage entries in the submission database 208 or used to determine a time period between location determinations associated with the access point.
In response to a trigger event, the location module 210 can include any software, hardware, firmware, or combination thereof configured to execute an algorithm on the locations (X, Y)1, (X, Y)2, . . . , (X, Y)n for an access point stored in the submission database 208 to determine a location area for an access point. For example, the location module 210 may apply an iterative process by performing a multi-pass analysis to entries in the submission database 208 to determine a location area for an access point including an estimated geometric center (X, Y) and an associated radius R. A trigger event can be any event that triggers a location procedure in the location server 102. For example, the trigger event can be based on time, location, mobile device activity, an application request, received harvest data, expiration of a time period, or other events.
The location module 210 stores the determined location areas in the location database 206. For each location area, the location module 210 may determine a representative location (X, Y) for each access point and an associated radius R. For example, the location module 210 may determine mean coordinates (Xm, Ym) for each access point as follows:




  
    
      
        
          
            X
            m
          
          =
          
            
              
                ∑
                
                  i
                  =
                  1
                
                N
              
              ⁢
              
                X
                i
              
            
            N
          
        
        ,
        and
      
    
    
      
        [
        1
        ]
      
    
  
  
    
      
        
          Y
          m
        
        =
        
          
            
              ∑
              
                i
                =
                1
              
              N
            
            ⁢
            
              Y
              i
            
          
          N
        
      
    
    
      
        [
        2
        ]
      
    
  




where N is the number of locations for mobile devices interacting with an access point. In other words, the representative location for an access point may be a mean of the device coordinates of mobile devices that interacted with the access point over a period of time. The location module 210 may use other algorithms for determining a representative location center (Xm, Ym) for an access point without departing from the scope of this disclosure. In addition, the location module 210 may determine a radius R for each representative location. In some implementations, the radius may be based on a percentage (e.g., 80%) of the largest distance between locations associated with the access point, the standard deviation of the magnitudes of the coordinates, or others.

Example Process for Determining Mobile Access Points and Updating Operating Parameters in Response to Mobile Access Points
FIGS. 3 and 4 are flow charts illustrating example methods 300 and 400 for identifying mobile access points and updating operating parameters in response to mobile access points. Methods 300 and 400 are described with respect to the system 100 of FIG. 1. Though, the associated system may use or implement any suitable technique for performing these and other tasks. These methods are for illustration purposes only and the described or similar techniques may be performed at any appropriate time, including concurrently, individually, or in combination. In addition, many of the steps in these flowcharts may take place simultaneously and/or in different orders than as shown. Moreover, the associated system may use methods with additional steps, fewer steps, and/or different steps, so long as the methods remain appropriate.
Referring to FIG. 3, method 300 begins at step 302 where a submission is received from a mobile device interacting with access points over a period of time. For example, the location server 102 in FIG. 1 may receive the submission 116 from the mobile device 104 interacting with the access point 110. As previously mentioned, the submission 116 may include or otherwise identify locations at different times and detected or otherwise identified access points at those times. At step 304, differences between locations at different times are calculated for each access point. In the example, the location server 102 may determine that an access point 110, 112, 114 is associated with locations of a mobile device 104 at different times and calculate the distances between the locations. Next, at step 306, the distance between locations at different times is compared to a predefined threshold. In the example, the location server 102 may compare the distance between the different locations for the access point 110 to a predefined threshold. For an access point with a distance exceeding the threshold, the location data is updated to identify the access point as a mobile access point at step 308. As for the example, the location server 102 may update a status of the access point 110 to indicate it as a mobile access point if the distance exceeds the predefined threshold. Next, at step 310, an average speed of the mobile access point is determined. In the example, the location server 102 may divide the distance by the associated time period to estimate an average speed of the access point 110. At step 312, a vehicle type including the mobile access point is determined based on the estimated speed. Again in the example, the location server 102 may compare the average speed of the access point 110 to a speed threshold to determine a vehicle type.
Referring to FIG. 4, method 400 begins at step 402 where location data identifying access-point locations and mobile access points is received. For example, the mobile device 104a may receive, from the location server 102, location data 118 identifying locations of the access points 110, 112, and 114 and whether any of the access points 110, 112, and 114 are mobile access points. At step 404, the identifiers of access points within communication range are determined. In the example, the mobile device 104a may determine identifiers for access points 110, 112, and 114 within communication range. Next, at step 406, the access-point identifiers are compared with the location data. Again in the example, the mobile device 104a may compare the MAC addresses of the access points 110, 112, and 114 to the location data 118. At step 408, portions of the location data are mapped to or otherwise associated with the access-point identifiers. In the example, the mobile device 104a may determine parameters in the location data 118 that map to or are otherwise associated with the access points 110, 112, and 114. If the access point is not a mobile access point at decisional step 410, then execution ends. If the access point is a mobile access point, then, at step 412, operating conditions of the mobile device is updated. As for the example, the mobile device 104a may determine that the access point 110 is a mobile access point based on the location data and update operating parameters of at least one of a GPS algorithm, time zone activity, operating mode, or other operations.
Example Mobile Device Architecture
FIG. 5 is a block diagram of exemplary architecture 500 of a mobile device including an electronic magnetometer. The mobile device 500 can include memory interface 502, one or more data processors, image processors and/or central processing units 504, and peripherals interface 506. Memory interface 502, one or more processors 504 and/or peripherals interface 506 can be separate components or can be integrated in one or more integrated circuits. Various components in mobile device architecture 500 can be coupled together by one or more communication buses or signal lines.
Sensors, devices, and subsystems can be coupled to peripherals interface 506 to facilitate multiple functionalities. For example, motion sensor 510, light sensor 512, and proximity sensor 514 can be coupled to peripherals interface 506 to facilitate orientation, lighting, and proximity functions of the mobile device. Location processor 515 (e.g., GPS receiver) can be connected to peripherals interface 506 to provide geopositioning. Electronic magnetometer 516 (e.g., an integrated circuit chip) can also be connected to peripherals interface 506 to provide data that can be used to determine the direction of magnetic North.
Camera subsystem 520 and Optical sensor 522, e.g., a charged coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS) optical sensor, can be utilized to facilitate camera functions, such as recording photographs and video clips.
Communication functions can be facilitated through one or more wireless communication subsystems 524, which can include radio frequency receivers and transmitters and/or optical (e.g., infrared) receivers and transmitters. The specific design and implementation of communication subsystem 524 can depend on the communication network(s) over which the mobile device is intended to operate. For example, the mobile device may include communication subsystems 524 designed to operate over a GSM network, a GPRS network, an EDGE network, a Wi-Fi or WiMax network, and a BluetoothTM network. In particular, wireless communication subsystems 524 may include hosting protocols such that the mobile device may be configured as a base station for other wireless devices.
Audio subsystem 526 can be coupled to speaker 528 and microphone 530 to facilitate voice-enabled functions, such as voice recognition, voice replication, digital recording, and telephony functions. Note that speaker 528 could introduce magnetic interference to the magnetometer, as described in reference to FIGS. 1-2.
I/O subsystem 540 can include touch-screen controller 542 and/or other input controller(s) 544. Touch-screen controller 542 can be coupled to touch screen 546. Touch screen 546 and touch-screen controller 542 can, for example, detect contact and movement or break thereof using any of a plurality of touch sensitivity technologies, including but not limited to capacitive, resistive, infrared, and surface acoustic wave technologies, as well as other proximity sensor arrays or other elements for determining one or more points of contact with touch screen 546.
Other input controller(s) 544 can be coupled to other input/control devices 548, such as one or more buttons, rocker switches, thumb-wheel, infrared port, USB port, docking station and/or a pointer device such as a stylus. The one or more buttons (not shown) can include an up/down button for volume control of speaker 528 and/or microphone 530.
In one implementation, a pressing of the button for a first duration may disengage a lock of touch screen 546; and a pressing of the button for a second duration that is longer than the first duration may turn power to the mobile device on or off. The user may be able to customize a functionality of one or more of the buttons. Touch screen 546 can, for example, also be used to implement virtual or soft buttons and/or a keyboard.
In some implementations, the mobile device can present recorded audio and/or video files, such as MP3, AAC, and MPEG files. In some implementations, the mobile device can include the functionality of an MP3 player, such as an iPod Touch®.
Memory interface 502 can be coupled to memory 550. Memory 550 can include high-speed random access memory and/or non-volatile memory, such as one or more magnetic disk storage devices, one or more optical storage devices, and/or flash memory (e.g., NAND, NOR). Memory 550 can store operating system instructions 552, such as Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as VxWorks. Operating system instructions 552 may include instructions for handling basic system services and for performing hardware dependent tasks. In some implementations, operating system instructions 552 can be a kernel (e.g., UNIX kernel).
Memory 550 may also store communication instructions 554 to facilitate communicating with one or more additional devices, one or more computers and/or one or more servers. Memory 550 may include graphical user interface instructions 556 to facilitate graphic user interface processing; sensor processing instructions 558 to facilitate sensor-related processing and functions; phone instructions 560 to facilitate phone-related processes and functions; electronic messaging instructions 562 to facilitate electronic-messaging related processes and functions; web browsing instructions 564 to facilitate web browsing-related processes and functions; media processing instructions 566 to facilitate media processing-related processes and functions; GPS/Navigation instructions 568 to facilitate GPS and navigation-related processes and instructions; camera instructions 570 to facilitate camera-related processes and functions; location data 572 and mobile access point instructions 574 to facilitate updating operating parameters in response to mobile access points, as described in reference to FIG. 1-4. In some implementations, GUI instructions 556 and/or media processing instructions 566 implement the features and operations described in reference to FIGS. 1-4.
Memory 550 may also store other software instructions (not shown), such as web video instructions to facilitate web video-related processes and functions; and/or web shopping instructions to facilitate web shopping-related processes and functions. In some implementations, media processing instructions 566 are divided into audio processing instructions and video processing instructions to facilitate audio processing-related processes and functions and video processing-related processes and functions, respectively. An activation record and International Mobile Equipment Identity (IMEI) or similar hardware identifier can also be stored in memory 550.
Each of the above-identified instructions and applications can correspond to a set of instructions for performing one or more functions described above. These instructions need not be implemented as separate software programs, procedures, or modules. Memory 550 can include additional instructions or fewer instructions. Furthermore, various functions of the mobile device may be implemented in hardware and/or in software, including in one or more signal processing and/or application-specific integrated circuits.
The disclosed and other implementations and 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. The disclosed and other 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, or a combination of one or more them. The term “data processing apparatus” means 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 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. 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, the disclosed implementations 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.
The disclosed implementations 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 an implementation of what is disclosed here, 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.
While this specification contains many specifics, these should not be construed as limitations on the scope of what is being claimed 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 understand 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.
A number of implementations of the disclosure have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. Accordingly, other implementations are within the scope of the following claims.
A number of implementations of the implementation have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the implementation. Accordingly, other implementations are within the scope of the following claims.

## Claims

1. A method, comprising:
receiving, from a mobile device at different times, data associated with a plurality of different locations of the mobile device during interaction of the mobile device with an access point at the different times;
determining, based on the data associated with each of the plurality of different locations, a distance between the plurality of different locations at which the mobile devices interacted with the access point at the different times;
comparing each of the determined distances with a predefined distance threshold;
determining, in response to the comparing, the access point is a mobile access point based on one of the determined distances exceeding the predefined distance threshold; and
transmitting, to other mobile devices, location data identifying a location of the access point that has been determined to be a mobile access point.

2. The method of claim 1, updating, at a server, a location database identifying the access point as being the mobile access point.

3. The method of claim 1, further comprising:
estimating an average speed of the access point based on a particular one of the determined distances and an associate time difference between locations used to determine the particular one of the determined distances; and
comparing the estimated average speed with a predefined average speed threshold,
determining, based upon the comparing the estimated average speed with a predefined average speed threshold, a vehicle type based on the average speed exceeding a predefined average speed threshold.

4. The method of claim 3, wherein the vehicle type comprises an airplane.

5. The method of claim 3, further comprising:
determining, based on the data associated with the plurality of different locations of the mobile device during the interaction of the mobile device, a type of facility; and
determining, in response to the determining a type of facility, whether the determined vehicle type matches the determined facility type.

6. The method of claim 1, further comprising:
determining, for each of a plurality of mobile devices, distances between other locations at the different times associated with the access point; and
determining, for each of the plurality of the mobile devices, whether any of the distances exceed the predefined distance threshold.

7. A computer program product encoded on non-transitory medium, the product comprising computer readable instructions for causing one or more processors to perform operations comprising:
receiving, from a mobile device at different times, data associated with a plurality of different locations of the mobile device during interaction of the mobile device with an access point at the different times;
determining, based on the data associated with each of the plurality of different locations, a distance between the plurality of different locations at which the mobile devices interacted with the access point at the different times;
comparing each of the determined distances with a predefined distance threshold;
determining, in response to the comparing, the access point is a mobile access point based on one of the determined distances exceed the predefined distance threshold; and
transmitting, to other mobile devices, location data identifying a location of the access point that has been determined to be a mobile access point.

8. The computer program product of claim 7, the instructions further comprising:
estimating an average speed of the access point based on a particular one of the determined distances and an associate time difference between locations used to determine the particular one of the determined distances; and
comparing the estimated average speed with a predefined average speed threshold,
determining, based upon the comparing the estimated predefined average speed with a predefined average speed threshold, a vehicle type based on the average speed exceeding a predefined average speed threshold.

9. The computer program product of claim 8, the instructions further comprising:
determining, based on the data associated with the plurality of different locations of the mobile device during the interaction of the mobile device, a type of facility; and
determining, in response to the determining a type of facility, whether the determined vehicle type matches the determined facility type.

10. The computer program product of claim 7, the instructions further comprising:
determining, for each of a plurality of mobile devices, distances between other locations at the different times associated with the access point; and
determining, for each of the plurality of the mobile devices, whether any of the distances exceed the predefined distance threshold.