Patent ID: 12213058

DETAILED DESCRIPTION

There remains a need for a system, apparatus, and method which can improve communications between mobile or wearable devices and an AP of a WLAN. In certain embodiments the mobile or wearable device can be referred to as a client station, user equipment, or STA. The presently disclosed subject matter addresses the above need, as well as others needs associated with WLAN and/or client stations. Specifically, the client station can leverage information stored in a database to determine a probe response scan interval and/or a subset channels through which to communicate with the AP. Based on the determined scan interval and subset channels the client station can reduce the amount of battery resources used to transmit and receive probe requests and responses, respectively. The determined scan interval and subset channels can also help to reduce the amount of time used to identify the location of a given client station or confirm that the client station is inside or outside a geo-fence zone.

U.S. patent application Ser. No. 15/291,882, now U.S. Pat. No. 10,142,773 B2, and U.S. patent application Ser. No. 14/988,621 are hereby incorporated by reference. The entire subject matter disclosed in the above referenced applications, including the specification, claims, and figures are incorporated herein.

The present disclosure will now be described more fully hereinafter with reference to the accompanying drawings, which form a part hereof, and which show, by way of illustration, certain example embodiments. Subject matter can, however, be embodied in a variety of different forms and, therefore, covered or claimed subject matter is intended to be construed as not being limited to any example embodiments set forth herein; example embodiments are provided merely to be illustrative. Likewise, a reasonably broad scope for claimed or covered subject matter is intended. Among other things, for example, subject matter can be embodied as methods, devices, apparatus, components, or systems. Accordingly, embodiments can, for example, take the form of hardware, software, firmware or any combination thereof (other than software per se). The following detailed description is, therefore, not intended to be taken in a limiting sense.

As used in the specification and the appended claims, the singular forms “a,” “an” and “the” include plural references unless the context clearly dictates otherwise. Thus, for example, reference to “an access point” can include more than one access point.

As used herein, the terms “comprises,” “comprising,” or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, system, or apparatus that comprises a list of elements does not include only those elements but can include other elements not expressly listed or inherent to such process, method, article, or apparatus.

The term “client station” as used in accordance with the present disclosure can refer to a user equipment, STA, wearable device, wearable tracking device, mobile device, or any other user device used to communicate with an access point of a WLAN. For example, the client station can be a pet or animal wearable device, such as an animal or pet tracking device.

The term “access point” as used in accordance with the present disclosure refers to any device, server, router, gateway, or base station used by to connect the client station to the WLAN. In other words, a client station interfaces with the WLAN via the access point.

The terms “animal” or “pet” as used in accordance with the present disclosure refers to domestic animals including, but not limited to, domestic dogs, domestic cats, horses, cows, ferrets, rabbits, pigs, rats, mice, gerbils, hamsters, goats, and the like. Domestic dogs and cats are particular non-limiting examples of pets. The term “animal” or “pet” as used in accordance with the present disclosure can further refer to wild animals, including, but not limited to bison, elk, deer, venison, duck, fowl, and the like.

As used herein, the term “geo-fence zone” or “geo-fence location” can be a pre-determined, pre-selected, or known geographical area or location selected by the user. The geo-fence zone or location can be used to define a familiar geographical area or location to the pet or animal, such as the residence of the owner or care giver of the pet. In some examples the geo-fence zone or location can be determined using a global positioning system (GPS) or global navigation satellite system (GLONASS) receiver to determine the latitude and longitude of a device. In other examples, the geo-fence zone, location, or presence can be determined using pre-determined, preselected, or known SSID of a WLAN network. When the geo-fence zone or location is determined using an SSID scan, or any other characteristic or measurement associated with the WLAN, the geo-fence zone or location can be referred to as a “beacon zone.” In other words, in certain non-limiting embodiments a client station can be determined to be in a given zone or location when it is within the transmission range of a given access point. To determine whether the client station is located within or outside a geo-fence location or zone, the client station can transmit probe requests and received probe responses from an AP of the WLAN network.

In the detailed description herein, references to “embodiment,” “an embodiment,” “one embodiment,” “in various embodiments,” “certain embodiments,” “some embodiments,” “other embodiments,” “certain other embodiments,” etc., indicate that the embodiment(s) described can include a particular feature, structure, or characteristic, but every embodiment might not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described. After reading the description, it will be apparent to one skilled in the relevant art(s) how to implement the disclosure in alternative embodiments.

The term “based on” can be understood as not necessarily intended to convey an exclusive set of factors and can, instead, allow for existence of additional factors not necessarily expressly described, again, depending at least in part on context.

The term “processor” can be understood as any hardware or software used to execute computer program instructions. These computer program instructions can be provided to a processor of a general purpose computer to alter its function to a special purpose, a special purpose computer, application-specific integrated circuit (ASIC), or other programmable digital data processing apparatus, such that the instructions, which execute via the processor of the client station or other programmable data processing apparatus, implement the functions/acts specified in the block diagrams or operational block or blocks, thereby transforming their functionality in accordance with embodiments herein. In certain non-limiting embodiments, the processor can be a portable embedded micro-controller or micro-computer.

The terms “computer readable medium” “storage medium/media” or “memory” can be understood as any hardware or software that stores computer data. The data can include computer program code (or computer-executable instructions) that is executable by a computer, client station, or access point, in machine readable form. By way of example, and not limitation, a computer readable medium can include computer readable storage media, for tangible or fixed storage of data, or communication media for transient interpretation of code-containing signals. Computer readable storage media, as used herein, can refer to physical or tangible storage (as opposed to signals) and includes without limitation volatile and non-volatile, persistent, removable and non-removable media implemented in any method or technology for the tangible storage of information such as computer-readable instructions, data structures, program modules or other data.FIGS.4A and4Billustrate an example embodiments of a database included within a non-volatile storage400.

Computer readable storage media or memory can include, but is not limited to, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other solid-state memory technology. The computer readable storage media or memory can also include compact disc read-only optical memory (CD-ROM), digital versatile disc (DVD), any other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other physical or material medium which can be used to tangibly store the desired information or data or instructions and which can be accessed by a computer or processor.

The term “server” as used in accordance with the present disclosure refers to a service point which provides processing, database, and communication facilities. By way of example, and not limitation, the term “server” can refer to a single, physical processor with associated communications and data storage and database facilities, or it can refer to a networked or clustered complex of processors and associated network and storage devices, as well as operating software and one or more database systems and application software that support the services provided by the server. Servers can vary widely in configuration or capabilities, but generally a server can include one or more central processing units and memory. A server can also include one or more mass storage devices, one or more power supplies, one or more wired or wireless network interfaces, one or more input/output interfaces, or one or more operating systems.

A server can include, for example, dedicated rack-mounted servers, desktop computers, laptop computers, set top boxes, integrated devices combining various features, such as two or more features of the foregoing devices, or the like. Servers can vary widely in configuration or capabilities, but generally a server can include one or more central processing units and memory. A server can also include one or more mass storage devices, one or more power supplies, one or more wired or wireless network interfaces, one or more input/output interfaces, or one or more operating systems.

The term “network” as used in accordance with the present disclosure refers to a network that can couple devices so that communications can be exchanged, such as between a server and a client device or other types of devices, including between wireless devices coupled via a wireless network, for example. A network can also include mass storage, such as network attached storage (NAS), a storage area network (SAN), or other forms of computer or machine-readable media, for example. A network can include the Internet, one or more wireless local area networks (WLANs), one or more local area networks (LANs), one or more wide area networks (WANs), wire-line type connections, wireless type connections, cellular or any combination thereof. Likewise, sub-networks, which can employ differing architectures or can be compliant or compatible with differing protocols, can interoperate within a larger network. Various types of devices can, for example, be made available to provide an interoperable capability for differing architectures or protocols. As one illustrative example, a router can provide a link between otherwise separate and independent LANs.

A communication link or channel can include, for example, analog telephone lines, such as a twisted wire pair, a coaxial cable, full or fractional digital lines including T1, T2, T3, or T4 type lines, Integrated Services Digital Networks (ISDNs), Digital Subscriber Lines (DSLs), wireless links including satellite links, or other communication links or channels, such as can be known to those skilled in the art. Furthermore, a computing device or other related electronic devices can be remotely coupled to a network, such as via a wired or wireless line or link, for example.

For purposes of this disclosure, a “wireless network” should be understood to couple client devices with a network. A wireless network can employ stand-alone ad-hoc networks, mesh networks, WLANs, cellular networks, or the like. A wireless network can further include a system of terminals, gateways, routers, or the like coupled by wireless radio links, or the like, which can move freely, randomly or organize themselves arbitrarily, such that network topology can change, at times even rapidly.

A wireless network can further employ a plurality of network access technologies, including WLAN, such as IEEE 802.11, Long Term Evolution (LTE), LTE-Advanced, Wireless Router (WR) mesh, or 2nd, 3rd, or 4th generation (2G, 3G, or 4G) cellular technology, or newer Internet of Things (IOT), fifth generation (5G), or new radio (NR) technology and the like. Network access technologies can enable wide area coverage for devices, such as client devices with varying degrees of mobility, for example.

For example, a network can enable RF or wireless type communication via one or more network access technologies, such as Global System for Mobile communication (GSM), Universal Mobile Telecommunications System (UMTS), General Packet Radio Services (GPRS), Enhanced Data GSM Environment (EDGE), 3GPP Long Term Evolution (LTE), LTE Advanced, Wideband Code Division Multiple Access (WCDMA), Bluetooth, IEEE 802.11b/g/n, or any other 802.11 protocol. A wireless network can include virtually any type of wireless communication mechanism by which signals can be communicated between devices, such as a client device or a computing device, between or within a network, or the like.

The present disclosure is described below with reference to block diagrams and operational illustrations of methods and devices. It is understood that each block of the block diagrams or operational illustrations, and combinations of blocks in the block diagrams or operational illustrations, can be implemented by means of analog or digital hardware and computer program instructions. These computer program instructions can be provided to a processor of a general purpose computer to alter its function as detailed herein, a special purpose computer, ASIC, or other programmable data processing apparatus, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, implement the functions/acts specified in the block diagrams or operational block or blocks. In some alternate implementations, the functions/acts noted in the blocks can occur out of the order noted in the operational illustrations. For example, two blocks shown in succession can in fact be executed substantially concurrently or the blocks can sometimes be executed in the reverse order, depending upon the functionality/acts involved.

FIG.1illustrates a system according to certain non-limiting embodiments. In particular, as illustrated inFIG.1, the system100can include a client station102, such as a pet or animal wearable device, a mobile device104used by the owner or care giver of the pet or animal, a server106, and/or a network108, such as a WLAN. Client station102can be a wearable device placed on a collar of the pet or animal. Client station102can be used to track, monitor, and/or detect the activity or location of the pet. Mobile device104can include a web-based application that can communicate with client station102.

When client station102is located in a geo-fence zone, the probe response received by client station102from the AP of the WLAN can be stored in a database. The database, for example, can be located in server106. On the other hand, when client station102has exited a geo-fence zone, the client station102can turn on its GPS receiver and transmit the coordinates to server106using network108, which can be a cellular network or a WLAN. Server106can then transmit an alert to mobile device104, or the web-based application located on mobile device104, informing the user that client station102has exited a geo-fence zone. The alert can be an interactive map, a text message, and/or an e-mail message. In other non-limiting embodiments, client station102can directly or indirectly initiate the transmittal and/or transmit the alert to mobile device104.

In one non-limiting embodiment, client station102can include the hardware illustrated inFIG.2.FIG.2illustrates a client station or access point according to certain non-limiting embodiments. The client station102can be configured to collect data generated by various hardware or software components, generally referred to as sensors, present within the tracking device102. For example, a GPS receiver210or one or more sensors208, such as accelerometer, gyroscope, or any other device or component used to record, collect, or receive data regarding the movement or activity can be included within client station102. The location of client station102, in some non-limiting embodiments, can mimic the movement of the pet on which the tracking device is located.

While client station102can be attached to the collar of the pet, as described in U.S. patent application Ser. No. 14/231,615, hereby incorporated by reference in its entirety, in other embodiments client station102can be attached to any other item worn by the pet. In some non-limiting embodiments, client station102can be located on or inside the pet itself, such as, for example, a microchip implanted within the pet.

As discussed in more detail herein, client station102can further include a processor202capable of processing the one or more data collected from client station102. Processor202can be embodied by any computational or data processing device, such as a central processing unit (CPU), digital signal processor (DSP), application specific integrated circuit (ASIC), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), digitally enhanced circuits, or comparable device or a combination thereof. The processors can be implemented as a single controller, or a plurality of controllers or processors. In some embodiments, client station102can specifically be configured to collect, sense, or receive data, and/or pre-process data prior to transmittal. In addition to sensing, recording, and/or processing data, client station102can further be configured to initiate transmittal of data, including location and any other monitored or tracked data, to other devices or severs via network108. For example, processor202within client station102can initiate the transmittal of an alert to server106or mobile device104via network108.

In certain non-limiting embodiments, client station102can transmit any tracked or monitored data continuously to the network. In other non-limiting embodiments, client station102can discretely transmit any tracked or monitored data. Discrete transmittal can be transmitting data after a finite period of time. For example, client station102can transmit data once an hour or twice an hour. This can help to reduce the battery power consumed by client station102, while also conserving network resources used for transmittal of data through the network.

As shown inFIG.1, client station102can communicate with network108. Although illustrated as a single network, network108can comprise multiple or a plurality of networks facilitating communication between devices. Network108can be a radio-based communication network that uses any available radio access technology. Available radio access technologies can include, for example, Bluetooth, WLAN, Global System for Mobile Communications (GMS), Universal Mobile Telecommunications System (UMTS), any Third Generation Partnership Project (“3GPP”) Technology, including LTE, LTE-Advanced, 3G, 5G/NR technology. Network108can use any of the above radio access technologies, or any other available radio access technology, to communicate with tracking device102, server106, and/or mobile device104.

In one embodiment, the network108can include a WLAN, such as a wireless fidelity (“Wi-Fi”) network defined by the Institute of Electrical and Electronics Engineers (IEEE) 802.11 standard or equivalent standards. In this embodiment, network108can enable the transfer of location and/or any tracked or monitored data from client station102to server106. Additionally, the network108can facilitate the transfer of data between client station102and mobile device104. In an alternative embodiment, the network108can comprise a mobile network such as a cellular network. In this embodiment, data can be transferred between the illustrated devices in a manner similar to the embodiment wherein the network108is a WLAN.

In one non-limiting embodiment, client station102and mobile device104can transfer data directly between the devices. Such direct transfer can be referred to as device-to-device communication or mobile-to-mobile communication. While described in isolation, network108can include multiple networks. For example, network108can include a Bluetooth network that can help to facilitate transfers of data between client station102and mobile device104, a WLAN, and a mobile or cellular network.

The system100can further include a mobile device104. Mobile device104can be any available user equipment or mobile station, such as a mobile phone, a smart phone or multimedia device, or a tablet device. In alternative embodiments, mobile device104can be a computer, such as a laptop computer, provided with wireless communication capabilities, personal data or digital assistant (PDA) provided with wireless communication capabilities, portable media player, digital camera, pocket video camera, navigation unit provided with wireless communication capabilities or any combinations thereof. Mobile device104can communicate with a client station102. In such non-limiting embodiments, mobile device104can receive location information or any other data related to a pet, such as wellness assessment and/or health recommendation from client station102, server106, and/or network108.

Additionally, client station102can receive data from mobile device104, server106, and/or network108. In particular, as shown inFIG.5, descried below, client station102can receive a probe response from the AP of the WLAN. Client station102can store the probe response, or information included therein, within a database of server106. For example, the probe response can include at least one of signal strength information (SSI), success rate, or an identification of the channels from which the probe response was received. This information can be stored within the database of server106. Client station102can access and use this information to determine a subset of channels and/or a scan time interval associated with a WLAN.

Mobile device104(or non-mobile device) can additionally communicate with server106or client station102to receive data or alerts. For example, server106can include one or more application servers providing a networked application or application programming interface (API). In one embodiment, mobile device104can be equipped with one or more mobile or web-based applications that communicates with server106via an API to retrieve and present data within the application. In one non-limiting embodiment, server106can provide visualizations or displays of location or data received from client102. In other non-limiting embodiments mobile device104can communicate with client station102directly, and receive alerts from client station102.

FIG.2illustrates a computing device according to certain non-limiting embodiments. The computing device200can be, for example, client station102, server106, or mobile device104shown inFIG.1. Device200can include a processor202, memory204, non-volatile storage206, sensor208, GPS receiver210, cellular transceiver212, Bluetooth transceiver216, and wireless transceiver214. The device can include any other hardware, software, processor, memory, transceiver, and/or graphical user interface.

As discussed with respect toFIG.1, computing device200can be a client station102designed to be worn, or otherwise carried, by a pet. Device200includes one or more sensors208, such as a three axis accelerometer. The one or more sensors can be used in combination with GPS receiver210, for example. GPS receiver210can be used along with sensor208which monitor the device200to identify its position (via GPS receiver210) and its acceleration, for example, (via sensor208). Although illustrated as single components, sensor208and GPS receiver210can alternatively each include multiple components providing similar functionality.

Sensor208and GPS receiver210generate data as described in more detail herein and transmits the data to other components via processor202. Alternatively, or in conjunction with the foregoing, sensor208and GPS receiver210can transmit data to memory204for short-term storage. Memory204can be a non-volatile storage medium or any other suitable storage device, such as a non-transitory computer-readable medium, hard disk drive (HDD), RAM, flash memory, or other suitable memory.

Alternatively, or in conjunction with the foregoing, sensor208and GPS receiver210can transmit data directly to non-volatile storage medium206. In this embodiment, processor202can access the data (e.g., location and/or probe data) from memory204. In some embodiments, non-volatile storage206can comprise a solid-state storage device (e.g., a “flash” storage device) or a traditional storage device (e.g., a hard disk). WhileFIG.2illustrates both memory204and non-volatile storage medium206, the two can be combined into one memory component referred to as either memory or non-volatile storage medium. Specifically, GPS receiver210can transmit location data (e.g., latitude, longitude, etc.) to processor202, memory204, or non-volatile storage206in similar manners.

As illustrated inFIG.2, device200can include multiple network interfaces including cellular transceiver212, wireless transceiver214, and Bluetooth transceiver216. Cellular transceiver212enables device200to transmit data, information, or an alert to a server or a mobile device via any radio access network. Additionally, processor202can determine the format and contents of data transmitted or received using cellular transceiver212, wireless transceiver214, and Bluetooth transceiver216based upon detected network conditions. Transceivers212,214,216can each, independently, be a transmitter, a receiver, or both a transmitter and a receiver, or a unit or device that can be configured both for transmission and reception. The transmitter and/or receiver (as far as radio parts are concerned) can also be implemented as a remote radio head which is not located in the device itself, but in a mast, for example. Wireless transceiver214can be used to transmit probe requests and receive probe responses to as AP of a WLAN, as shown inFIG.4.

FIG.3illustrates another example of the client station according to certain non-limiting embodiments. As illustrated inFIG.3, a device300, such as client station102can include a GPS receiver302, a geo-fence detector304, a sensor306, storage308, CPU310, and network interfaces312. GPS receiver302, sensor306, storage308, and CPU310can be similar to GPS receiver210, sensor208, memory404/non-volatile storage206, or processor202, respectively. Network interfaces312can correspond to one or more of transceivers212,214,216, as shown inFIG.2. Device300can also include one or more power sources, such as a battery, AC power source, or any other power source. Device300can also include a charging port, which can be used to charge the battery. The charging port can be, for example, a type-A universal serial bus (“USB”) port, a type-B USB port, a mini-USB port, a micro-USB port, or any other type of port. In some other non-limiting embodiments, the battery of device300can be wirelessly charged.

In the illustrated embodiment, GPS receiver302records location data associated with the device300including numerous data points representing the location of the device300as a function of time. GPS receiver302can be turned on and off based on the location of device300. For example, when device300exits a geo-fence location or zone GPS receiver302can be turned on, and the received GPS coordinates can be transmitted to a server or a mobile device.

In one embodiment, geo-fence detector304stores details regarding known geo-fence zones. For example, geo-fence detector304can store a plurality of latitude and longitude points for a plurality of polygonal geo-fences. The latitude and/or longitude points or coordinates can be manually inputted by the user and/or automatically detected by the wearable device. In alternative embodiments, geo-fence detector304can store the names of known SSIDs of known WLANs, and associate each of the SSIDs with a geo-fence. In non-limiting one embodiment, geo-fence detector304can store, in addition to an SSID, one or more thresholds for determining when the device300exits a geo-fence zone. Although illustrated as a separate component, in some embodiments, geo-fence detector304can be implemented within CPU310, for example, as a software module.

In one non-limiting embodiment, GPS receiver302can transmit latitude and longitude data to geo-fence detector304via storage308or, alternatively, indirectly to storage308via CPU310. A geo-fence can be a virtual fence or safe space defined for a given pet. The geo-fence can be defined based on a latitude and/or longitudinal coordinates and/or by the boundaries of a given WLAN connection signal. For example, geo-fence detector304receives the latitude and longitude data representing the current location of the device300and determines whether the device300is within or has exited a geo-fence zone. If geo-fence detector304determines that the device300has exited a geo-fence zone the geo-fence detector304can transmit the notification or indication to CPU310for further processing. After the notification has been processed by CPU310, the notification or indication can be transmitted to the mobile device either directly or via the server.

Alternatively, geo-fence detector304can query network interfaces312to determine whether device300is connected to a WLAN network. In doing so, device300can transmit probe requests to an AP within the WLAN and wait to receive a probe response from the AP. In this embodiment, geo-fence detector304can compare the current WLAN SSID (or lack thereof) to a list of known SSIDs. The list of known SSIDs can be based on those WLAN connections that have been previously approved by the user. The user, for example, can be asked to approve an SSID as a home geo-fence location or zone during the set-up process for a given wearable device. In another example, the list of known SSIDs can be automatically populated based on those WLAN connections already known to the mobile device of the user. If geo-fence detector304does not detect that the device300is currently connected to a known SSID, geo-fence detector304can transmit a notification to CPU310that the device has exited a geo-fence zone.

Alternatively, or in addition to, geo-fence detector304can receive the strength of a WLAN network and determine whether the current strength of a WLAN connection is within a pre-determined threshold. The signal strength can take the form of a SSI, and can be included in a probe response received at client station102. In certain non-limiting embodiments, when a client station is determined to be within the presence of a known WLAN connection, meaning that the client station can be within the transmission range of a given access point, the client station can be placed in a low-power mode. The low-power mode can help to preserve the client station's battery. If the WLAN connection is outside the pre-determined threshold, the wearable device can be nearing the outer border of the geo-fence. Receiving a notification once a network strength threshold is surpassed can allow a user to receiver a preemptive warning that the pet is about to exit the geo-fence.

As illustrated inFIG.3, device300further includes storage308. In one embodiment, storage308can temporarily or preeminently store data sensed or received by device300. For example, storage308can store information included within a probe response. In other non-limiting embodiments, instead of storing previously sensed and/or received data in storage308, device300can transmit the data to be stored in a database of a server, such as server106shown inFIG.1.

FIG.4Aillustrates a database according to certain non-limiting embodiments. The database400can be located in the non-volatile storage of mobile device104shown inFIG.1. Database400can be referred to as an event manager (EVTMGR). Client station102or mobile device104can read, write, or erase data from the database. For example, mobile device104can read data from the database and/or upload the read data to server106periodically or non-periodically. In other examples Mobile device104can write data to database106, such as pet activity data, debug logging, calibration data associated with the scanning algorithm, and/or any other available data. In certain embodiments, database400can be included in non-volatile storage and help manage the data stored therein. Alternatively, the database can operate or be included in any other hardware or cloud-based memory. In the example embodiment shown inFIG.4A, database400can include status block410, block pointer420, and/or data blocks430. In some embodiments each of the components of database400can have a reserved section within the non-volatile memory.

FIG.4Billustrates a database according to certain non-limiting embodiments. In particular,FIG.4Billustrates a detailed example of the database shown inFIG.4A. Database400can be an ultra-low footprint storage system that can be used in embedded systems. Database400supports writing, reading, and erasing data blocks, such as opaque data blocks, in a circular, first-in-first-out (FIFO) fashion, to a non-volatile memory. In certain embodiments, data included within the database can be read in the order it was written. Such embodiments can help to provide a simplified configuration that can reduce the quantity of resources used by the database.

Data blocks430of database400can include one or more data blocks. The total number of blocks can be referred to as “N.” A data block can be a contiguous string of bytes living somewhere in the non-volatile memory. In certain embodiments the data can be unaccompanied by any metadata. Rather, the metadata, which can include, for example, the length of the data block, checksum for verifying the data block, address of the data block, or any other form of metadata, can be kept in block pointer420. Block pointer420can include one or more block pointers.FIG.4B, for example, illustrates seven block pointers. A single block pointer can hold the metadata for a single data block. The metadata can include the address of the data, the length of the data, and/or a checksum that can be used to verify the integrity of the data. In certain embodiments, the data can have a length of 256 bytes. In other embodiments the length of the data can be larger or smaller than 256 bytes.

Status block410can be used to hold the head and tail status of the database. In other words, status block410can be a pointer to block pointers420. Status block410provides a high-level picture of where the storage system can be read from and/or written to. In certain non-limiting embodiments a fresh or updated copy of the read or write block pointer addresses can be kept. The read pointer address can be kept in a tail pointer address, illustrated as tail ptr inFIG.4B, while the write pointer address can be kept in a head pointer address, illustrated as head ptr inFIG.4B. In other words, the head pointer address can be used to write data onto the next available block, and the tail pointer address can be used to read data onto the next available or oldest data block.

When a user or client station wishes to store an opaque block of data, meaning a client station would like to write data onto database400, the client can send the data to database400, along with the length of the data. Status block410can then calculate a checksum, retrieve the next available free memory address, and write the data to the non-volatile storage medium or memory. If the non-volatile memory is completely full, the oldest data block can be overwritten, and the corresponding block pointer can be updated. Status block410can then construct a block pointer for the data, and write the constructed block pointer to block pointer420. If block pointer memory is full, the oldest block pointer can be overwritten and the corresponding data can be erased. Status block410can then be updated to reflect the new head pointer.

In certain other non-limiting embodiments, a client station can read data from database400, for example when uploading to a server. The read or tail address of status410can indicate where the oldest read block pointer is located or from where the oldest read block can be retrieved. Using this address, status block410can locate the first block pointer to read. Using the metadata in block pointer420, the data block can be read at the retrieved address, and up to the length specified in the block pointer. The data can then be validated against its checksum to confirm integrity, and returned to the client station. If the client station successfully uploads the data to the server, the client station can send a notification to database400. Sending the notification can be similar to performing an erase. Database400can advance the tail pointer inside of status block410, thereby losing track of the data to which the block pointer is associated. In certain embodiments, the above reading of the data can continue looping until all the data has been read, or until the client station has read its desired number of stored bytes.

For example, the client station can periodically upload stored data to the server, so that the server can present relevant data, such as pet activity, location, and/or usage statistics, to the user via the mobile phone application. Periodically, the client station can establish a connection to the server and transmit some or all of the data available to the client station in the database to the server. The server can acknowledge that the transmission was successful via a notification, for example using an HTTP status code200. Once the notification is received the data can be treated as having been successfully consumed and the block pointers can be advanced. Advancing the block pointers can erase or effectively erase the data that was stored, and free space on the client station's non-volatile memory for new data.

In certain embodiments, erasing data or metadata can occur as a result of reading a data block, and then moving the block pointer address that was pointing to the data block forward. In other words, because of the FIFO nature of database400, erasing can merely include advancing the tail pointer inside the status block.

FIG.5illustrates a system diagram with a client station and access point according to certain non-limiting embodiments. Client station510can be similar to client station210shown inFIG.2. The In some examples, client station510can be a portable, wearable device that can be attached to a pet or animal collar. Client station510can include medial access control (MAC) and/or physical layer (PHY) interface used to transmit probe requests and receive or listen to probe responses from an AP over a WLAN. AP520, for example, can be a network router or base station for the WLAN. The WLAN can be defined by the IEEE 802.11 standard or equivalent standards.

AlthoughFIG.5and the below description focus on the 2.4 GHz radio frequency band, any of the below embodiments can also utilize a 5 GHz band, as described at least in IEEE 802.11(n) or (ac) protocols. In a 2.4 GHz band, the WLAN is limited to 14 different channels. As shown inFIG.5, the 2.4 GHz band can range from a radio frequency of 2.402 to 2.483 GHz. Each of the channels can be 20 megahertz (MHz) wide, with the channel centers being separated by 5 MHz to avoid channel overlap. By avoiding channel overlap, WLANs can help suppress harmful signal interference caused by usage of adjacent channels. As such, the 2.4 GHz band can offer at most three non-overlapping channels, channels 1, 6, and 11. On the other hand, the 5 GHz band provides for a larger frequency range, which can offer as many as 24 non-overlapping channels.

To communicate with the WLAN, client station510transmits a probe request to AP520on one or more channels of the WLAN. The probe request, also referred to as a probe request frame, can be a specific WLAN frame transmitted from client station510requesting information from a single AP520or from all APs within a given area. Client station510can then wait or listen for a finite period of time, referred to as a scan interval, to receive the probe response from AP520. The probe response received at client station510from AP520can include any information related to the WLAN or AP, such as SSI, probe response success rate, or an identification of the channels from which the probe response was received. Probe responses, in other words, can include some of the same information used by a client station to initiate communication with the AP.

Certain non-limiting embodiments are directed to reduce or minimize the scan time interval, while also reducing or minimizing the number of channels through which the probe requests are transmitted. Doing so can help to reduce battery usage at the client station, while also reducing network resources associated with transmitting and receiving probe requests and responses. In addition, reducing the scan interval and number of channels through which probe request are transmitted can help to reduce the execution time for identifying of the location of the client station, as well as the time spent by the client station to communicate with the WLAN. This can help to elongate the battery life of the client station, while also limiting the network bandwidth resources used by the client station. As will be discussed below, the scan interval and subset of channels used by the client station can be determined based on previously information stored in the database that can be accessed by the client station.

As shown inFIG.5, client station510can periodically transmit probe request frames, and listen for a set amount of time for a probe response from AP520or a particular AP located in a given WLAN. To reduce the power and total time spent performing the scan from the client station's perspective, the WLAN channels on which the probe requests are transmitted can be reduced. In addition, the amount of time spent listening for a probe response from the AP, also known as a scan time interval (STI) or scan interval, can be reduced.

FIG.6illustrates a system flow diagram that describes a system or method according to certain non-limiting embodiments. In some embodiments the method shown inFIG.6can operate without any user interaction, meaning that the method can be undetected by the user. As shown in610, the client station, referred to as STA inFIG.6, can determine whether it is connected to a battery charger. As shown in620, the calibration of the scan interval can occur while the client station is connected to a charging source, such as a battery charger. Calibrating while the client station is connected to the charging source helps to reduce the calibration's impact of the device's battery between charges. In some other embodiments, however, the scan time interval can also be calibrated when the client station is not charging. This can allow the client station to account for APs that are not located within the vicinity of the charging station.

Calibrating the scan time interval can mean determining the amount of time the client station listens for a probe response to be transmitted from an AP on a given channel of the WLAN. The scan interval can be specific to a given channel within the WLAN or can be specific to a given SSID. When scanning for a specific SSID, without knowing which particular APs are in range of the client station, a client station can adopt the highest scan time interval amongst all the APs in the SSID for which the client station is calibrated. For example, the highest scan time interval can be 200 milliseconds (ms), 500 ms, 1 second, or 5 seconds. In other examples the highest scan time interval can be lower than 200 ms or larger than 5 seconds. Information associated with the scan time interval can be collected and/or stored on a per AP or BSSID basis.

In some non-limiting embodiments, the calibration can be performed as frequently as device operation will allow, while in other embodiments the calibration can be limited to a finite number of times for a given period of time. For example, the calibration can be performed once a day, once every other day, or once a week. The purpose of the calibration of the scan time interval can be to determine a minimum scan interval such that an asymptote has been reached in the success rate at which the probe response is received at the client station from the AP given a statistically significant number of trials.

An example of such an asymptote is shown inFIG.7. In particular,FIG.7illustrates a scan time interval chart according to certain embodiments. Dashed line710can be used to mark the point in the asymptote at which the probe response success rate levels off. The scan interval time at which the probe response success rate levels off can serve as the determined scan interval time used by the client station. In other words, determining a scan time interval associated with the SSID can include calibration of the scan time interval.

In certain non-limiting embodiments shown inFIG.6, when client station610is charging, and not running solely on battery power, scan time interval calibration620can occur. The scan time interval calibration can include performing a multi-channel scan using a high scan time interval. The multi-channel scan can include sending probe requests to a plurality of channels within an SSID of the WLAN. The initial high scan time interval can help to establish a baseline probe response success rate. The results of the multi-channel scan can be stored in the database. The multi-channel scan can be repeated more than once. For example, the multi-channel scan can be repeated three or more times.

If the AP does not respond during any of the performed multi-channel scans, the calibration cannot take place. On the other hand, if the AP responded at least once, the client station can continue to perform multi-channel scans. In some examples, if the AP responds ten or more multi-channel scans directed to the specific AP can be performed. For each multi-channel scan performed, the client station can keep track or store in the database the probe response received at the client station. The probe response, for example, can include at least one of signal strength information, such as a received signal strength indicator (RSSI), the probe success rate, meaning whether a response was received after a probe request was transmitted, and/or an identification of the channels from which the probe response was received. The client station can calculate not only the probe success rate, but also other metrics such as the standard deviation of the success rate.

The above information included within the probe response, and/or the calculated success rate metrics, can be transmitted to the server and stored in the database. The stored information can be accessed to determine the scan time interval associated with the SSID. For example, in certain non-limiting embodiments a binary search can be performed to determine the scan time interval. The binary search can be performed by the client station and/or by the server that contains the database. Binary search, also known as the half-interval search or binary chop, can be a search method used to find a target value within a sorted list of probe response success rates. In particular, binary search can act to repeatedly divide in half the portion of the list probe response success rates that could contain the target scan time interval, until the list is narrowed down to an optimal or minimum scan time interval, with an acceptable success rate level.

The binary search can be based on at least one of the signal strength information or probe response success rate. Given that the binary search is performed as part of the calibration, in certain embodiments the binary search can be performed when the client station is charging. Using the binary search, the multi-channel scan can be repeated by the client station until a scan interval is identified in which the success rate is 50% or less from the success rate previously achieved. The binary search can be performed while the client station continues to collect data using the multi-channel scan. During the collection of data, the client station can continue to favor the side of the binary search with the higher success rate. When a scan time interval associated with a given success rate is found to have a similar standard deviation, with a success rate that is within 0.5 of the previously used scan time interval, the client station or server can determine or choose such a scan time interval.

Once a given scan interval is chosen, the binary search can continue by focusing on the chosen scan interval and the lowest scan interval that had a poor or failed success rate. In other words, the binary search can attempt to determine if the scan time interval can be lowered or minimized even further. In certain non-limiting embodiments, when the difference between the standard deviation and success rate of two binary search nodes begin to diverge, the client station or server can determine that the last chosen scan time interval is the minimum scan interval that can be used. In other words, the client station or server can determine that the last chosen scan time interval reflects the success rate asymptote, as shown inFIG.7.

The results of the scan time interval calibration can be stored in the database, as shown in step630ofFIG.6. The results of the calibration can include one or more of the determined scan time intervals, mean probe response success rates, probe response success rate standard deviations, mean signal strengths, and/or standard deviation of the signal strengths, or any other metrics. In addition to determining the scan time interval, certain embodiments can also determine a subset of channels via which the probe requests can be transmitted. As shown in step640, the client station can attempt to pull historical results and associated calculations from the database. If the database does not include any historical results or a sufficient number of historical results, a channel learning method can be performed to choose, select, or determine the subset of channels, as shown in step650. In certain embodiments the channel learning method can be performed before calibration of the scan time interval, while in other non-limiting embodiments the channel learning method can be performed after calibration of the scan time interval.

As discussed above, a 2.4 GHz WLAN radio frequency band can include 14 different channels on which an AP can receive probe requests and/or transmit probe responses. In some non-limiting embodiments, the AP can switch between the WLAN channels. When a client station transmits a probe request on a channel not used by a given AP, the client station will not receive a probe response from the given AP. In addition, if multiple APs share the same S SID, meaning that they are located within a similar area of the WLAN, each AP can use a different channel. Certain embodiments disclosed herein provide a system or method that can dynamically adapt and learn the best channel or channels to scan for when searching for a particular SSID. In certain embodiments the channel scan can be performed for a particular SSID, while in other embodiments the channel scan can be performed on a per-AP or BSSID basis.

FIG.8illustrates a chart of WLAN channels810according to certain embodiments. WhileFIG.8illustrates an example of a WLAN using a 2.4 GHz band, certain other embodiments can use a 5 GHz band. As discussed above, a WLAN using a 2.4 GHz radio frequency band can have 14 possible channels via which the AP can communicate. As can be seen in the histogram shown inFIG.8, there are 14 possible channels. 300 probe responses have been received via channel 1, 200 probe responses have been received via channel 6, 275 probe response have been received from channel 11, and an additional 40 responses have been received in channel 8. While the histogram suggests that the client station should only transmit on channels 1, 6, and 11, it can be beneficial to account for the responses received in channel 8. It can be possible, for example, that the last 40 occurrences have all been transmitted from the AP on channel 8, suggesting that the client station should transmit probe requests via channel 8, as opposed to channels 1, 6, or 11. The embodiments describes herein can dynamically account for all of the channels, including any channel trends exhibited by the AP.

In certain non-limiting embodiments, the channel learning system, process, or method shown in step650ofFIG.6can utilize a circular buffer. For example, “K” can be a number of elements in a rolling or circular first-in, first-out (FIFO) buffer, which can be used in the construction of a channel occurrence histogram. While “K” can be any number, in certain embodiments discussed below K can assume a value of 150.

An observed channel can be stored in a FIFO buffer included in the database. If the buffer is full, the oldest element included within the buffer can be discarded. The element can refer to the identification of a channel through which the probe response was received at the client station. In some non-limiting embodiments the buffer can be populated with a new element when a scan was successful, meaning that a probe response was received at the client stations. The subset of channels can be determined based on at least one of a latest or most occurring of the channels stored in the buffer. The determined subset of channels can include one or more channels. In a 2.4 GHz band, the subset of channels can include between 1 to 14 channels, which can include up to 3 non-overlapping channels. In a 5 GHz band, on the hand, the subset of channels can include 24 non-overlapping channels.

One or more criteria can be used to determine the latest or most occurring of the channels stored in the buffer. For example, in certain embodiments if a channel appears in K/2 occurrences in the buffer then it can be deemed the latest or most occurring channel. For example, if channel 6 appears 75 times or more in a buffer of 150 occurrences then channel 6 can be deemed the most occurring channel. In such an embodiment the client station can choose to transmit probe requests only on channel 6, given that it has been determined to be the most occurring channel. In another example, any channel that has K/5 or more occurrences can be included in the subset. For example, channels 1, 6, and 11 can each appear 50 times in the buffer. In such an embodiment, the client station can determine the subset of channels to be channels 1, 6, and 11, and transmit probe requests only on those three channels. If no channels meet the above criteria, the client station can choose to forgo the subset scan altogether and perform a multi-channel scan, meaning that the client station transmits probe requests on all channels. In other words, if the one or more criteria is not met, in certain embodiments no subset of channels can be selected and the client station can perform a multi-channel scan.

Once the subset of channels and/or the scan interval are determined, a client station can perform a scan based on the and determined subset of channels and/or scan interval, as shown in step660. The scan can help to determine whether a given AP is located within range of a client station. In other words, the client station can use the scan to confirm that the client station is located in a pre-determined geo-fence zone or outside a pre-determined geo-fence zone.

If the client station is determined to be located outside a geo-fence zone, an indication that the client station has exited the pre-determined geo-fence zone can be transmitted to a mobile device, a user equipment, or a web-based application included therein. The indication can be any form of notification emitted through the graphical user interface, speaker, or vibration device of the user equipment. For example, the indication can be an alert displayed on the graphical user interface of the mobile device or user equipment. In yet another example, the indication can be a sound emitted through the speaker of the mobile device. In certain non-limiting embodiments, an indication that the client station has exited the geo-fence location or zone can be reflected in the client station. For example, an illumination device located in the client station can be turned on. The illumination device can include a light emitting diode (LED).

FIG.9illustrates a flow diagram according to certain non-limiting embodiments. In particular,FIG.9illustrates determining the scan time interval while the client station is charging, as shown in step620ofFIG.6. In step910, the server or client station can initiate or begin the process of calibrating the scan time interval. In step920, the client station can perform a multi-channel scan using a high scan time interval to establish a high baseline probe response success rate. The multi-channel scan can be repeated 2 or more times. In step930, the client station can evaluate whether it received a probe response from the AP. If not, the calibration can end. If the probe response is received, the multi-channel scan with a high scan time interval can be performed for “N” number of times, as shown in step940. In step950, a binary search can be performed for the smallest scan time interval, which has a success rate and standard deviation that diverges with the high baseline scan time interval results. The determined scan time interval results can then be stored in the database of the per-AP or per-BSSID basis.

FIG.10illustrates a flow diagram according to certain non-limiting embodiments. In particular,FIG.10illustrates determining a subset of channels using a channel learning system, as shown in step650ofFIG.6. In step1010, the process for selecting a channel subset for the probe request transmission can begin. In step1020, the FIFO channel circular buffer having a length K can be used to determine the last or most observed channel. The client station or server can then determine whether a given channel appears K/2 times or more in the buffer, as shown in step1030. If so, the given channel can be the only channel included in the channel subset, as shown in step1040. If not, the channel can be included in the subset of channels, as shown in step1050. In step1060, the client station or server can determine if any of the channels occur K/5 times or more in the buffer. If so, all of those channels that meet the K/5 criteria can be included in the subset, as shown in step1070. If not, and none of the above criteria are met, the client station can merely perform a multi-channel scan.

FIG.11illustrates a flow diagram according to certain non-limiting embodiments. In step1110, the process for determining whether an AP within a given SSID is in range can be initiated. The client station can sense or detect an SSID for a WLAN. In step1120the client station can pull calibrated parameters from the memory or a database located within the memory. In other words, the client station can determine a subset of channels within the WLAN by accessing information stored in the database. The client station can also determine a scan time interval associated with the SSID by accessing the information stored in the database. In step1130, a probe request can be constructed using the SSID. The probe request can then be transmitted via the determined channel subset. In other words, the probe request can be transmitted on the determined channel subset using the channel learning method, as shown in step1140.

In step1150, the client station can evaluate whether a probe response was received from the AP. If the probe response is received at the client station from the AP during the determined scan time interval, the probe response can be stored by the client station in the database, as shown in step1170. If the probe response is not received, a multi-channel scan can be performed by the client station using a high scan time interval.

In certain non-limiting embodiments, the AP located within a wireless access network can receive a probe request from a client station through a subset of channels. The AP can also transmit a probe response to the client station during a scan time interval. The probe response can be used to confirm that the client station is inside or outside a geo-fence zone.

FIG.12(a)illustrates a probe response chart according to certain embodiments. In particular,FIG.12(a)illustrates a multi-channel scan performed by the client station, with the x-axis representing time, and the y-axis representing power consumption. As can be seen in the chart, a large high amount of power can be consumed for transmitting the probe requests on all channels, while the scan time interval or the probe response listen time can be 200 millisecond (ms) in length. The multi-channel scan can consume an average of 475 milliwatts (mW) over 1.8 seconds of transmitting probe requests.

FIG.12(b)illustrates a probe response chart according to certain embodiments. In particular,FIG.12(b)illustrates an embodiment that utilizes the systems, methods, and apparatus disclosed above and inFIGS.1-11. As shown inFIG.12(b), a probe request can be transmitted on only a single channel, while the scan time interval or the probe response listen time can be reduced to 25 ms. Using the above embodiments can help to reduce the power consumption to an average of 360 mW over 380 ms.

The embodiments disclosed above, therefore, help to improve both the client station and the AP itself by reducing the network resources used by the client station. Reducing the network resources can help to decrease the battery consumption of the client station by decreasing the amount of time and battery resources needed to identify the location of the client station relative to an AP in the WLAN. From the perspective of the network, on the other hand, resources can be conserved by decreasing the number of multi-channel scans performed by the client station. This can help to prevent the client station from indiscriminately flooding the channels of the WLAN with probe requests. The systems, methods, and apparatus described above therefore help to provide improvements to the functioning of the client station, AP, and other components of the WLAN network.

For the purposes of this disclosure a module is a software, hardware, or firmware (or combinations thereof) system, process or functionality, or component thereof, that performs or facilitates the processes, features, and/or functions described herein (with or without human interaction or augmentation). A module can include sub-modules. Software components of a module can be stored on a computer readable medium for execution by a processor. Modules can be integral to one or more servers, or be loaded and executed by one or more servers. One or more modules can be grouped into an engine or an application.

Those skilled in the art will recognize that the methods and systems of the present disclosure can be implemented in many manners and as such are not to be limited by the foregoing exemplary embodiments and examples. In other words, functional elements being performed by single or multiple components, in various combinations of hardware and software or firmware, and individual functions, can be distributed among software applications at either the client level or server level or both. In this regard, any number of the features of the different embodiments described herein can be combined into single or multiple embodiments, and alternate embodiments having fewer than, or more than, all of the features described herein are possible.

Functionality can also be, in whole or in part, distributed among multiple components, in manners now known or to become known. Thus, myriad software/hardware/firmware combinations are possible in achieving the functions, features, interfaces and preferences described herein. Moreover, the scope of the present disclosure covers conventionally known manners for carrying out the described features and functions and interfaces, as well as those variations and modifications that can be made to the hardware or software or firmware components described herein as would be understood by those skilled in the art now and hereafter.

Furthermore, the embodiments of methods presented and described as flowcharts in this disclosure are provided by way of example in order to provide a more complete understanding of the technology. The disclosed methods are not limited to the operations and logical flow presented herein. Alternative embodiments are contemplated in which the order of the various operations is altered and in which sub-operations described as being part of a larger operation are performed independently.

While various embodiments have been described for purposes of this disclosure, such embodiments should not be deemed to limit the teaching of this disclosure to those embodiments. Various changes and modifications can be made to the elements and operations described above to obtain a result that remains within the scope of the systems and processes described in this disclosure.