IP Library › Granted Patent US 9,749,794
Granted Patent B2
US 9,749,794 · App. 14/980,357 · Granted Aug 29, 2017

Scalability and reliability of hardware geo-fencing with failover support

Inventors: Sanjib Saha (Sammamish, WA); Fernando Gonzalez (Bellevue, WA); Shaun Hedrick (Seattle, WA); Parmjeet Singh (Seattle, WA); Ashish Gadre (Kirkland, WA); Frank Gorgenyi (Bremerton, WA); Mark Inderhees (Woodinville, WA); Janet Schneider (Bellevue, WA); Stuart Harper (Seattle, WA)
Assignee: Microsoft Technology Licensing, LLC
H04W4/021G01S19/34G01S19/48
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,749,794
App. No.
14/980,357
Granted
Aug 29, 2017
Kind
B2
Abstract

A computing device includes at least one processor and a memory, the memory storing computer-executable instructions for causing the device to be configured to load a subset of geo-fences from secondary storage to primary storage for tracking by the computing device, the subset of geo-fences selected from a set of available geo-fences stored in the secondary storage, based on a selection criteria. The computing device further creates a boundary geo-fence with a radius corresponding to a distance between a current location of the computing device and an edge of a geo-fence in the subset of geo-fences that is furthest from the current location of the computing device. Upon detecting a geo-fence event associated with a new location of the computing device in relation to the boundary geo-fence, a new subset of geo-fences is re-loaded, and a new boundary geo-fence is created based on the new location of the computing device.

Claims (53)

1. A computing device comprising at least one processor and a memory, the memory storing computer-executable instructions for causing the computing device to be configured to:

load a subset of geo-fences from secondary storage to primary storage for tracking by the computing device, the subset of geo-fences selected from a set of available geo-fences stored in the secondary storage, based on a selection criteria;

create a boundary geo-fence with a radius corresponding to a distance between a current location of the computing device and an edge of a geo-fence in the subset of geo-fences that is furthest from the current location of the computing device; and

upon detecting a geo-fence event associated with a new location of the computing device in relation to the boundary geo-fence, re-load a new subset of geo-fences and create a new boundary geo-fence based on the new location of the computing device, wherein the geo-fence event comprises one of a geo-fence enter event or a geo-fence exit event.

2. The computing device according to claim 1 , wherein the selection criteria is based on at least one of:

a distance of each of the available geo-fences to a current location of the computing device; and

a maximum number of geo-fences established for the subset of geo-fences.

3. The computing device according to claim 1 , wherein the computer-executable instructions cause the computing device to be further configured to:

adjust the boundary geo-fence by reducing the radius by a pre-determined amount.

4. The computing device according to claim 1 , wherein the computer-executable instructions cause the computing device to be further configured to:

upon detecting the geo-fence event, record a state change for a selected one or more of the subset of geo-fences in one of the primary storage or the secondary storage.

5. The computing device according to claim 4 , wherein the state change comprises:

an entry state change indicating that a location of the computing device has moved from outside the selected one or more geo-fences to inside the selected one or more geo-fences; and

an exit state change indicating that a location of the computing device has moved from inside the selected one or more geo-fences to outside the selected one or more geo-fences.

6. The computing device according to claim 4 , wherein the computer-executable instructions cause the computing device to be further configured to:

upon detecting a device restart event, restoring the selected one or more of the subset of geo-fences based on the recorded state change.

7. The computing device according to claim 1 , wherein the computer-executable instructions cause the computing device to be further configured to:

detect at least one new geo-fence stored in secondary storage; and

determine whether to update the subset of geo-fences based on a location of the at least one new geo-fence in relation to the boundary geo-fence.

8. The computing device according to claim 7 , wherein the computer-executable instructions cause the computing device to be further configured to:

include the at least one new geo-fence in the subset of geo-fences, when a distance between the current location of the computing device and an edge of the at least one new geo-fence that is closest to the current location of the computing device, is smaller than the radius of the boundary geo-fence.

9. A method, comprising:

by a computing device:

selecting a subset of available geo-fences for tracking by the computing device, based on a selection criteria;

loading the subset of available geo-fences from secondary storage to primary storage for tracking by the computing device;

creating a boundary geo-fence enclosing the selected subset of available geo-fences;

upon detecting a geo-fence exit event for the boundary geo-fence, updating the selected subset of available geo-fences with at least one new geo-fence, comprising:

unloading at least a portion of the subset of available geo-fences from the primary storage, upon detecting the geo-fence exit event; and

updating the boundary geo-fence to include the updated subset of available geo-fences.

10. The method according to claim 9 , further comprising:

configuring the boundary geo-fence to have a radius corresponding to a distance between a current location of the computing device and an edge of a geo-fence in the selected subset of geo-fences that is furthest from the current location of the computing device.

11. The method according to claim 9 , further comprising:

re-loading a new subset of geo-fences based on the selection criteria, upon detecting the geo-fence exit event; and

creating a new boundary geo-fence based on a new location of the computing device after the geo-fence exit event is detected, the new boundary geo-fence including the new subset of geo-fences.

12. The method according to claim 9 , further comprising:

tracking geo-fence state for the subset of available geo-fences within the boundary geo-fence.

13. The method according to claim 12 , further comprising:

upon detecting a geo-fence even associated with a selected one of the subset of geo-fences, updating the boundary geo-fence based on a new location of the computing device after the geo-fence event is detected.

14. A computing device, comprising:

secondary storage configured to store a plurality of available geo-fences;

primary storage; and

at least one processor, the at least one processor configured to:

select a subset of the available geo-fences based on a selection criteria;

load the subset of geo-fences from the secondary storage to the primary storage for tracking by the computing device;

create a boundary geo-fence with a radius corresponding to a distance between a current location of the computing device and an edge of a geo-fence in the subset of geo-fences that is furthest from the current location of the computing device;

upon detecting a geo-fence event associated with a new location of the computing device in relation to the boundary geo-fence:

re-load a new subset of geo-fences; and

create a new boundary geo-fence based on the new location of the computing device; and

track geo-fence state for one or more of the new subset of geo-fences within the new boundary geo-fence.

15. The device according to claim 14 , wherein the at least one processor is further configured to:

detect at least one geo-fence from the plurality of available geo-fences is a transitioning geo-fence based on geo-fence state information for the at least one geo-fence, wherein the geo-fence state information indicates a transition for the at least one geo-fence has not completed.

16. The device according to claim 15 , wherein the at least one processor is further configured to:

loading the transitioning geo-fence into primary storage for tracking by the computing device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 28, 2015
From: SAHA, SANJIB; GONZALEZ, FERNANDO; HEDRICK, SHAUN; SINGH, PARMJEET; GADRE, ASHISH; GORGENYI, FRANK; INDERHEES, MARK; SCHNEIDER, JANET; HARPER, STUART
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 037366/0240 →
Continuity (2)
Division 14086810 · Nov 21, 2013
Related Publication 20160135005A1 · May 12, 2016