Source: http://patents.com/us-9998969.html
Timestamp: 2018-08-16 01:15:13
Document Index: 451536972

Matched Legal Cases: ['Application No. 2014235396', 'Application No. 2014235382', 'Application No. 2016', 'Application No. 2014800285502', 'Application No. 14768102', 'Application No. 2014800285502', 'Application No. 14768939', 'Application No. 14768721', 'Application No. 2014800285235', 'Application No. 201480028445', 'Application No. 61']

US Patent # 9,998,969. Portable platform for networked computing - Patents.com
United States Patent 9,998,969
Maguire , et al. June 12, 2018
Maguire; Yael G. (Boston, MA), Coglitore; Giovanni (Saratoga, CA)
Family ID: 1000003349667
13/914,563
US 20140269614 A1 Sep 18, 2014
61801526 Mar 15, 2013
Current CPC Class: H04W 4/21 (20180201); H04L 51/32 (20130101); H04L 65/80 (20130101); H04L 67/125 (20130101); H04W 36/14 (20130101); H04W 88/04 (20130101); H04W 4/80 (20180201); H04W 76/14 (20180201); H04W 36/18 (20130101); H04W 76/10 (20180201); G06Q 50/01 (20130101); H04L 67/306 (20130101); H04W 8/005 (20130101); H04W 12/06 (20130101); H04W 48/18 (20130101); H04W 88/10 (20130101)
Current International Class: H04W 36/18 (20090101); H04W 36/14 (20090101); H04W 4/20 (20180101); H04W 4/00 (20180101); H04L 29/06 (20060101); H04W 88/04 (20090101); H04L 29/08 (20060101); H04L 12/58 (20060101); H04W 48/18 (20090101); G06Q 50/00 (20120101); H04W 88/10 (20090101); H04W 8/00 (20090101); H04W 12/06 (20090101)
Field of Search: ;370/328,329,331,310,332 ;455/442
5887063 March 1999 Varadharajan
7683754 March 2010 Autret
7698556 April 2010 Zhang
7907564 March 2011 Laux et al.
8010131 August 2011 Rothschild
8224246 July 2012 Suumaki
8250632 August 2012 Staddon
8676844 March 2014 Sityon
8897152 November 2014 Caceres
9083670 July 2015 Boncha
9148787 September 2015 Salkintzis
9204345 December 2015 Roskind
2004/0253923 December 2004 Braley
2006/0133414 June 2006 Luoma et al.
2006/0149967 July 2006 Lee et al.
2008/0117922 May 2008 Cockrell et al.
2008/0137572 June 2008 Park
2008/0222294 September 2008 Liang
2008/0227488 September 2008 Zhu
2010/0180032 July 2010 Lunt
2011/0002466 January 2011 Kwak
2011/0003590 January 2011 Yoon
2011/0106279 May 2011 Cho
2011/0149799 June 2011 Wu et al.
2011/0194532 August 2011 Kakkad
2011/0258042 October 2011 Purvy
2011/0275316 November 2011 Suumaaki
2012/0047129 February 2012 Redstone
2012/0069838 March 2012 Sarkar et al.
2012/0182938 July 2012 Mujtaba
2012/0192258 July 2012 Spencer
2012/0254987 October 2012 Ge et al.
2012/0307875 December 2012 Maguire
2012/0309453 December 2012 Maguire
2012/0310386 December 2012 To
2012/0322502 December 2012 Song
2012/0324543 December 2012 Tam et al.
2013/0022022 January 2013 Schmitt
2013/0185131 July 2013 Sinha
2014/0013000 January 2014 Vainer
2014/0095606 April 2014 Matus
2014/0149507 May 2014 Redfern
2014/0185469 July 2014 Marmolejo-Meillon et al.
2016/0044720 February 2016 Boucher
1836409 Sep 2006 CN
102668592 Sep 2012 CN
102754038 Oct 2012 CN
1928 134 Jun 2008 EP
2876856 May 2015 EP
2008129860 Jun 2008 JP
2014032501 Feb 2014 JP
2016514308 May 2016 JP
10-2004-0094563 Nov 2004 KR
WO 2011/098465 Aug 2011 WO
WO 2011/153507 Dec 2011 WO
2012/109696 Aug 2012 WO
WO 2012-150907 Nov 2012 WO
WO-2012/164328 Dec 2012 WO
US. Appl. No. 13/914,570, filed Jun. 10, 2013, Yael G. Maguire. cited by applicant .
U.S. Appl. No. 13/914,576, filed Jun. 10, 2013, Yael G. Maguire. cited by applicant .
U.S. Appl. No. 13/843,155, filed Mar. 15, 2013, Yael Maguire. cited by applicant .
International Search Report and Written Opinion for International Application PCT/US2014/024843, dated Sep. 9, 2014. cited by applicant .
International Search Report and Written Opinion from International Application No. PCT/US2014/024793, 10 pgs, dated Jul. 29, 2014. cited by applicant .
International Search Report and Written Opinion from International Application No. PCT/US2014/024822, 9 pgs, dated Jul. 21, 2014. cited by applicant .
Non-Final Office Action for U.S. Appl. No. 13/914,570, dated Nov. 20, 2014. cited by applicant .
Notice of Acceptance, Australian Government, Patent Application No. 2014235396, dated May 13, 2016. cited by applicant .
Australian Office Action received from IP Australia for Australian Patent Application No. 2014235382, dated Mar. 10, 2017. cited by applicant .
Notification of Reasons for Rejection received from the JPO, for Japanese Patent Application No. 2016-501656, dated Feb. 1, 2017. cited by applicant .
Chinese Office Action received from the State Intellectual Property Office of the People's Republic of China for Chinese Patent Application No. 2014800285502, dated Apr. 22, 2016. cited by applicant .
Non-Final Office Action for U.S. Appl. No. 13/914,576, dated Jun. 16, 2016. cited by applicant .
Final Office Action for U.S. Appl. No. 13/914,576, dated Mar. 25, 2016. cited by applicant .
Non-Final Office Action for U.S Appl. No. 13/914,576, dated Jun. 4, 2015. cited by applicant .
EP Search Report received from the EPO for European Patent Application No. 14768102.7 1854 / 2974498, dated Sep. 26, 2016. cited by applicant .
Chinese Office Action received from the State Intellectual Property Office of the People's Republic of China for Chinese Patent Application No. 2014800285502, dated Oct. 26, 2016. cited by applicant .
Extended European Search Report received from the European Patent Office, for European Patent Application No. 14768939.2-1854 /2974132, dated Sep. 21, 2016. cited by applicant .
Extended European Search Report received from the EPO for European Patent Application No. 14768721.4-1854 / 2974145, dated Sep. 26, 2016. cited by applicant .
Chinese Office Action and Search Report received from the Chinese Patent Office, for Chinese Patent Application No. 2014800285235, dated Feb. 7, 2018. cited by applicant .
Chinese Office Action and Search Report received from the Chinese Patent Office, for Chinese Patent Application No. 201480028445.9, dated Feb. 1, 2018. cited by applicant.
This application claims the benefit, under 35 U.S.C. .sctn. 119(e), of U.S. Provisional Patent Application No. 61/801,526, filed 15 Mar. 2013, which is incorporated herein by reference.
1. A portable computing device comprising: a processor; a plurality of radios; and a memory coupled to the processor comprising instructions executable by the processor, the processor being operable when executing the instructions to: pair, by at least one of the radios, the portable computing device with one or more devices associated with a first user of the portable computing device; monitor, by one or more of the radios, a signal for a connection established with a first communication network, wherein the portable computing device has previously connected to the first communication network, and wherein the first communication network was selected based at least in part on social-graph information representing a social-networking relationship between the first user of the portable computing device and a second user associated with the first communication network; determine that the signal for the first communication network has dropped below a threshold level of quality; and based on the determination, enable an access point mode to provide connectivity using a second communication network for at least one of the paired devices through the portable computing device, wherein in the access point mode, the portable computing device provides network connectivity for the paired devices to the second communication network, wherein the instructions to enable the access point mode comprise instructions to facilitate a soft handoff for the at least one of the paired devices from one communication network to another communication network.
2. The device of claim 1, wherein the processor is further operable when executing the instructions to: turn on one of the radios to establish a connection with the second communication network.
3. The device of claim 2, wherein the processor is further operable when executing the instructions to: detect, by the radios, signals of sufficient quality for a plurality of communication networks; assess an optimal communication network from the plurality of communication networks, wherein the assessment is based on one or more factors, wherein the factors comprise technical factors, economic factors, security factors, or user preference factors; and select the second communication network as the optimal communication network.
4. The device of claim 1, wherein the social-graph information comprises an edge of a social-graph connecting a node corresponding to the second user associated with the first communication network to a node corresponding to the first user of the portable computing device.
5. The device of claim 1, wherein the processor is further operable when executing the instructions to: detect, by one of the radios, the signal for the first communication network; determine that the signal for the first communication network satisfies the threshold level of quality; and disable the access point mode for at least one of the paired devices.
6. The device of claim 5, wherein the instructions to disable the access point mode comprise instructions to turn off the radio providing the connection with the second communication network.
7. The device of claim 1, wherein the threshold level of quality is based on one or more attributes of the signal, the one or more attributes comprising: signal strength, signal-to-noise ratio, average data throughput, or average data latency.
8. The device of claim 1, wherein the social-graph information comprises a social-graph with a node corresponding to the second user associated with the first communication network being within a threshold degree of separation from a node corresponding to the first user of the portable computing device.
9. The device of claim 1, wherein the instructions to enable the access point mode for the at least one of the paired devices comprise instructions to initiate a communication channel using the Wi-Fi Direct protocol.
10. The device of claim 1, wherein the paired devices are within a threshold proximity of the portable computing device.
11. A method comprising: pairing, by one or more processors of a portable computing device comprising a plurality of radios, the portable computing device with one or more devices associated with a first user of the portable computing device; monitoring, by one or more of the radios, a signal for a connection established with a first communication network, wherein the portable computing device has previously connected to the first communication network, and the first communication network was selected based at least in part on social-graph information representing a social-networking relationship between the first user of the portable computing device and a second user associated with the first communication network; determining, by the one or more processors, that the signal for the first communication network has dropped below a threshold level of quality; and based on the determination, enabling, by the one or more processors, an access point mode to provide connectivity using a second communication network for at least one of the paired devices through the portable computing device, wherein in the access point mode, the portable computing device provides network connectivity for the paired devices to the second communication network, wherein enabling the access point mode comprises facilitating a soft handoff for the at least one of the paired devices from one communication network to another communication network.
12. The method of claim 11, further comprising: turning on one of the radios to establish a connection with the second communication network.
13. The method of claim 12, further comprising: detecting, by the radios, signals of sufficient quality for a plurality of communication networks; assessing an optimal communication network from the plurality of communication networks, wherein the assessment is based on one or more factors, wherein the factors comprise technical factors, economic factors, security factors, or user preference factors; and selecting the second communication network as the optimal communication network.
14. The method of claim 11, wherein the social-graph information comprises an edge of a social-graph connecting a node corresponding to the second user associated with the first communication network to a node corresponding to the first user of the portable computing device.
15. The method of claim 11, further comprising: detecting, by one of the radios, the signal for the first communication network; determining that the signal for the first communication network satisfies the threshold level of quality; and disabling the access point mode for at least one of the paired devices.
16. One or more computer-readable non-transitory storage media embodying software that is operable when executed to: pair, by a portable computing device comprising a plurality of radios, the portable computing device with one or more devices associated with a first user of the portable computing device; monitor, by one or more of the radios, a signal for a connection established with a first communication network, wherein the portable computing device has previously connected to the first communication network, and the first communication network was selected based at least in part on social-graph information representing a relationship between the first user of the portable computing device and a second user associated with the first communication network; determine that the signal for the first communication network has dropped below a threshold level of quality; and based on the determination, enable an access point mode to provide connectivity using a second communication network for at least one of the paired devices through the portable computing device, wherein in the access point mode, the portable computing device provides network connectivity for the paired devices to the second communication network, wherein to enable the access point mode, the software is further operable when executed to facilitate a soft handoff for the at least one of the paired devices from one communication network to another communication network.
17. The media of claim 16, wherein the software is further operable when executed to: turn on one of the radios to establish a connection with the second communication network.
18. The media of claim 17, wherein the software is further operable when executed to: detect, by the radios, signals of sufficient quality for a plurality of communication networks; assess an optimal communication network from the plurality of communication networks, wherein the assessment is based on one or more factors, wherein the factors comprise technical factors, economic factors, security factors, or user preference factors; and select the second communication network as the optimal communication network.
19. The media of claim 16, wherein the second communication network is assessed to be less optimal than the first communication network.
20. The media of claim 16, wherein the software is further operable when executed to: detect, by one of the radios, the signal for the first communication network; determine that the signal for the first communication network satisfies the threshold level of quality; and disable the access point mode for at least one of the paired devices.
A mobile computing device--such as a smartphone, tablet computer, or laptop computer--may include functionality for determining its location, direction, or orientation, such as a GPS receiver, compass, altimeter, accelerometer, or gyroscope. Such a device may also include functionality for wireless communication over any conventional technology, such as, by way of example and not limitation, BLUETOOTH, near-field communication (NFC), radio frequency (e.g., RFID), infrared (IR), Wi-Fi, pager, or cellular (e.g., 2G, 3G, 4G). Such a device may also include one or more cameras, scanners, touchscreens, microphones, or speakers. Mobile computing devices may also execute software applications, such as games, web browsers, or social-networking applications. With social-networking applications, users may connect, communicate, and share information with other users in their social networks.
In particular embodiments, a portable, networked computing device ("PND") provides seamless and portable network connectivity for a user's devices in a device cloud. In particular embodiments, the PND may be a stand-alone small (e.g., key-fob-sized) device; in other embodiments, the PND may be integrated into one of the user's devices (e.g., a smartphone or tablet computing device). The PND may be designed to take advantage of any available network connection in order to act as a network access point for devices that may not include all of the same capabilities. A PND may be paired with one or more devices, with which it may communicate directly, in a peer-to-peer fashion, by low-power radio when it is within a threshold proximity with the PND-paired device(s). The PND itself may monitor network availability and/or link quality and turn on one or more of its own additional radios on an as-needed basis (conserves power and may reduce cost). For example, when the PND detects that WiFi signals are becoming weak, it may activate its cellular radio to seamlessly provide network connectivity to paired devices within proximity of the PND.
A brand-new device being introduced into the user's device cloud may take advantage of proximity to devices already registered as being associated with the user to jump-start customization of the user's experience with the device using social-networking information. In addition, when a guest enters a PND user's home, the guest's PND will attempt to establish a peer-to-peer connection with one of the user's devices in the device cloud. The guest may be authenticated in accordance with social graph information and other social-networking information (e.g., first-degree friends may automatically be authenticated to access and use the user's devices). Such access may be granted/restricted according to any property or attribute associated with an element of the user's social graph (e.g., only allowing access to other social-network users in a designated "Close Friends" group to be automatically authenticated upon entering the user's home).
A portable, networked, computing device ("PND") that can act as a universal control and network access point for one or more devices with which the PND is paired. In particular embodiments, a PND may comprise a portable device (e.g., key-fob-sized device) including network components to enable the PND to pair with and communicate with PND-paired devices. In particular embodiments, a PND pairs with devices using a radio (e.g., a low-power radio using the Bluetooth low energy (BLE) standard or a conventional radio using the soft access point functionality of the WI-FI DIRECT standard) that requires that any such paired devices be within a threshold proximity to the PND.
In particular embodiments, one of more of the PND-paired devices may operate as "dumb terminal" devices that become personalized computing devices upon pairing with a user's PND. A "dumb terminal" device may include any computing device that does not persistently store user-specific information and can be temporarily converted into a personalized computing device for a user (e.g., public or shared-use). PND 110 may be able to pair with and utilize a dumb terminal device for any and all suitable purposes. In some embodiments, PND 110 may wirelessly pair with a device; in some embodiments, PND 110 may be able to physically plug into the device.
In another example, user 101 may be able to get into car 170 (an autonomous, robot-driven "taxicab") which, upon pairing with PND 110, authenticates user 101, provides personalized destination suggestions for user 101 (e.g., the user's home, workplace, school, or a destination specified in the user's calendar), authorizes payment for user 101 (based on the user's selected destination), and transports user 101 to their selected destination in accordance with their personal preferences (e.g., as fast as possible, or controlled and leisurely), while providing videoconferencing facilities for user 101 during the ride.
In particular embodiments, PND 110 may calculate the threshold and/or make this determination to go into access point mode based off of other factors or conditions besides simply detecting a real-time drop in RSSI, such as, for example, historical data logging RSSI data at particular locations (e.g., the PND 110 is being carried by the user and headed in the direction of a "dead spot" where RSSI has historically dropped below some threshold), designations of low-RSSI locations (e.g., inside of a secure military complex that blocks all wireless signals except those on a particular bandwidth), or designations of estimated RSSI at particular locations (e.g., network coverage maps calculated based on signal type and base station location information). In particular embodiments, such factors may be determined based on information shared across a network of users, such as, for example, a network of registered PND users, a network of users associated with an organization (e.g., a company's employees or a group of customers paying for network service), or a social network of users connected within a social graph.
At step 230, the PND may monitor available networks and detect a familiar network (e.g., a home Wi-Fi network). As long as the detected signal for the network is of sufficient quality, the PND may itself utilize the familiar network for network connectivity and expect that any PND-paired devices will do the same. In particular embodiments, the PND may automatically determine that a detected network is a "familiar" network because it is provided by another user that is known to user 101 (e.g., a social-networking connection of user 101). The PND may identify the provider of a network by detecting the other user's PND and identifying and/or authenticating that PND. In particular embodiments, the PND belonging to user 101 may utilize particular security measures based on attributes of the detected network (e.g., whether it is an open or secured network, or whether the other user is a trusted friend of user 101 or simply a friend of a friend). In particular embodiments, the PND belonging to user 101 may limit or throttle back certain types of network communications by paired devices based on attributes of the detected network (e.g., if the detected network require payment based on bandwidth usage or quantity of data downloaded, or if the detected network imposes bandwidth limits).
At step 260, the PND may detect that the signal for the familiar network is of sufficient quality again (or that another familiar network is now within range) and disable its access point mode (in step 270). In particular embodiments, if the PND detects that there are any paired devices that are communicating via the PND, the PND may perform operations in order to smoothly hand off the network connection for any such devices so that they are instead connected to the familiar network. For example, if user 101 has arrived at work and PND 110 detects the user's work Wi-Fi network, or if user 101 has arrived at an often-frequented cafe with a TVWS network, the PND may connect to the newly-detected network, initiate/facilitate a soft handoff for any devices that are currently utilizing the PND for network connectivity (e.g., telephone 120 and tablet 180), and then disable its access mode. In particular embodiments, PND 110 may detect that a paired device is utilizing the PND 110 for a high-demand activity (e.g., making a telephone call, or streaming high-bandwidth content) and postpone disabling access point mode until the activity has ended.
Once a PND-paired device (e.g., telephone 120) comes into range of a network associated with a particular phone number for the user (e.g., "home" network or "work" network), the PND-paired device may ring in response to callers calling the particular phone number. For example, when the user is at home (within range of their "home" network), the PND-paired device may detect an incoming call to the home phone number and cause the device to ring. PND 110 may also be able to provide an IP-based telephone feature that works transparently across international boundaries and across disparate networks (which may operate based on disparate technologies); in particular embodiments, a "phone number" may be associated with a user's social-networking user identity, and a first user of a social network may be able to call a second user of the social network simply by "dialing" the second user using their social-networking identifier (e.g., login username).
In step 460, the new device uses the user information to provide a customized user experience for user 101. For example, the tablet may use the user's social-networking user identifier to establish a connection to the social network, and begin downloading some information of various types in order to present an out-of-the-box social-network-based user experience (e.g., by displaying a cover photo on the locked screen, by being allowed to access the user's home Wi-Fi network, by setting basic device settings and/or metadata in accordance with the user's preferences, such as time zone, preferred language, etc.). In some embodiments, full access to the device and to the user's social-networking information (as presented on the device) may not be granted until the user enters their social-networking system credentials into the device. In particular embodiments, a brand-new device may be encoded with the user's social-networking user identifier on an integrated chip (e.g., an RFID/NFC tag) at a factory, warehouse, or some other point in a distribution chain so that the device can begin downloading some information of various types in order to present an out-of-the-box social-network-based user experience--in this case, the user may not be required to enter their social-networking password as long as the new device is placed within a threshold proximity to another device already registered as being associated with the user.
Once user 101 has set up one or more PND-paired devices, the user may wish to securely provide a guest 301 with access to devices in the user's device cloud (e.g., refrigerator 140, TV 160, and automobile 170). Guest 301 may be authenticated in accordance with social graph information and other social-networking information (e.g., first-degree friends may automatically be authenticated to access and use the user's devices). Such access may be granted/restricted according to any property or attribute associated with an element of the user's social graph (e.g., only allowing access to other social-network users in a designated "Close Friends" group to be automatically authenticated upon entering the user's home).
In particular embodiments, a PND may be authenticated using a token-based peer-to-peer technique as described in U.S. patent application Ser. No. 13/843,155, filed 15 Mar. 2013 and titled "Wireless Data Privacy Maintained Through a Social Network." In particular embodiments, authentication may be performed
Although PND 110 has been described as being associated with a single user, in particular embodiments, PND 110 may be used by a group of users (e.g., a family or group of friends) to provide connectivity to devices associated with any user in the group and/or to allow any user in the group to connect to a dumb terminal device. In particular embodiments, such a PND 110 may be associated with a group profile, including any suitable type of information described herein (e.g., group-level authorization and security settings, payment credentials for a group bank account, shared group content). In particular embodiments, PND 110 may be used in association with a social-networking system to automatically detect and permit access to "friends" of a user of PND 110--such access may be restricted by degree of separation within the user's social graph.
As discussed above, by pairing a device with PND 110, the user may be able to activate, control, and otherwise use devices in the device cloud. By connecting with the PND, one or more devices in the device cloud may be used to communicate with and control (actively or automatically) one or more other devices in the device cloud. A control interface may be provided on one device ("the control device") to control other devices in the device cloud. In particular embodiments, the control device may only provide controls for particular "controllable" devices in the device cloud, e.g., those that are sensed within a threshold proximity, those that include a remote interaction interface by which the device can receive and process commands for remote control, those for which the user of PND 110 has been granted authorization to control the device, or those that are available (e.g., powered on, connected to a network, operational, and/or enabled for remote control).
When smartphone 120 comes within a threshold proximity of various devices in device cloud 100, an icon for each device may appear on the screen of smartphone 120. For example, in FIG. 5A, when user 101 carries smartphone 120 into the living room, UI 500 displays icons for four devices within threshold proximity: "Main Television" (the TV in the living room), "Curtains," "Living Room Lights," and "Downstairs Thermostat." The standard for being within threshold proximity may differ from one PND-paired device to another, based on factors such as: the range of radio(s) used to establish a connection with the PND-paired device (e.g., a big-screen TV with a Wi-Fi receiver may have a larger range than a watch with a Bluetooth receiver), the usage profile of the PND-paired device (e.g., the normal distance for usage and operation of a big-screen TV--viewing distance--may be farther than the normal distance for usage and operation of a touchscreen tablet--a comfortable arm's-length distance), etc. If user 101 selects the icon for a particular device, an interface may be displayed that enables smartphone 120 to act as a remote control for the selected device. As shown in FIG. 5B, when user 101 selects the "Living Room Lights" icon, an interface is displayed to enable user 101 to control two arrays of dimmer-controlled overhead recessed lighting in the living room while watching television. As shown in FIG. 5C, when user 101 selects the "Downstairs Thermostat" icon, user 101 can also control the air conditioning and subfloor heating in the living room.
In another example scenario, as the user walks through the house before going to bed, different interfaces may pop up on the screen of the smartphone as the user walks down a hallway and passes different rooms, where each interface displays a UI to control aspects of the associated room (e.g., to turn off lights, lock doors, turn off TVs, silence phone ringers, draw curtains, etc.). As shown in FIG. 5D, after user 101 is done watching television and goes upstairs to go to bed, smartphone 120 senses devices in the master bedroom and displays icons to control those devices: "Master Bedroom Television," "Security System," "Bedroom Lights," "Upstairs Thermostat."
In particular embodiments, automatic and active controls may be triggered simultaneously--for example, if there is one person in a large home with many rooms, as the person walks through different rooms in the house to cook dinner, watch TV, use the restroom, and go to sleep, each room may automatically adjust the temperature and lighting as the user enters and leaves the room, and an interface to may briefly pop up on the user's smartphone for the first 20 seconds after the user enters a new room to allow the user to actively control the temperature and lighting as well.
FIG. 6 illustrates an example method 600 for providing seamless and portable network connectivity for a user's devices. The method may begin at step 610, where a particular device in device cloud 100 designated as a control device (e.g., smartphone 120) senses one or more other devices in device cloud 100 within a threshold proximity. The threshold proximity may be assessed with respect to the location of the control device, or with respect to the location of the PND. In particular embodiments, only a device associated with a specific user may be used as a control device. In step 620, the control device determines which of the devices within a threshold proximity are controllable. This determination may be made by retrieving such information from the PND, or by the control device itself. In step 630, the control device presents a UI that enables a user to view and select each device--in some embodiments, only those devices within a threshold proximity for which the user has authorization to access and/or control the device. In step 640, upon receiving user input selecting a particular device presented in the UI that the user wishes to access or control, the control device presents a UI to control the selected device. In step 650, the control device sends commands to access or control the selected device, based on user input received by way of the UI. In particular embodiments, the user input may indicate that the user wishes to monitor progress of the selected device with respect to a particular operation (e.g., turn on the oven light and watch the progress of a chocolate souffle), or receive a notification when a particular event occurs (e.g., temperature of the oven reaches 425.degree. Fahrenheit). The commands may be sent directly from the control device to the selected device, or by way of the PND. In step 660, the control device receives feedback from the selected device (e.g., confirmation that the command was successfully executed, or sensor data indicating a current state of the device. Like the commands, feedback may be sent directly to the control device from the selected device, or by way of the PND. In step 670, the control device may update the UI as the user (and thereby, the control device) moves through physical space, thereby moving towards or away from devices in device cloud 100, and then return to step 620 (in order to determine whether the user has authorization to access and/or control any newly-sensed devices).
In particular embodiments, social-networking system 760 may store one or more social graphs in one or more data stores 764. In particular embodiments, a social graph may include multiple nodes--which may include multiple user nodes (each corresponding to a particular user) or multiple concept nodes (each corresponding to a particular concept)--and multiple edges connecting the nodes. Social-networking system 760 may provide users of the online social network the ability to communicate and interact with other users. In particular embodiments, users may join the online social network via social-networking system 760 and then add connections (e.g., relationships) to a number of other users of social-networking system 760 whom they want to be connected to. Herein, the term "friend" may refer to any other user of social-networking system 760 with whom a user has formed a connection, association, or relationship via social-networking system 760.
In particular embodiments, social-networking system 760 also includes user-generated content objects, which may enhance a user's interactions with social-networking system 760. User-generated content may include anything a user can add, upload, send, or "post" to social-networking system 760. As an example and not by way of limitation, a user communicates posts to social-networking system 760 from a client system 730. Posts may include data such as status updates or other textual data, location information, photos, videos, links, music or other similar data or media. Content may also be added to social-networking system 760 by a third-party through a "communication channel," such as a newsfeed or stream.
In particular embodiments, social-networking system 760 may include a variety of servers, sub-systems, programs, modules, logs, and data stores. In particular embodiments, social-networking system 760 may include one or more of the following: a web server, action logger, API-request server, relevance-and-ranking engine, content-object classifier, notification controller, action log, third-party-content-object-exposure log, inference module, authorization/privacy server, search module, advertisement-targeting module, user-interface module, user-profile store, connection store, third-party content store, or location store. Social-networking system 760 may also include suitable components such as network interfaces, security mechanisms, load balancers, failover servers, management-and-network-operations consoles, other suitable components, or any suitable combination thereof. In particular embodiments, social-networking system 760 may include one or more user-profile stores for storing user profiles. A user profile may include, for example, biographic information, demographic information, behavioral information, social information, or other types of descriptive information, such as work experience, educational history, hobbies or preferences, interests, affinities, or location. Interest information may include interests related to one or more categories. Categories may be general or specific. As an example and not by way of limitation, if a user "likes" an article about a brand of shoes the category may be the brand, or the general category of "shoes" or "clothing." A connection store may be used for storing connection information about users. The connection information may indicate users who have similar or common work experience, group memberships, hobbies, educational history, or are in any way related or share common attributes. The connection information may also include user-defined connections between different users and content (both internal and external). A web server may be used for linking social-networking system 760 to one or more client systems 730 or one or more third-party system 770 via network 710. The web server may include a mail server or other messaging functionality for receiving and routing messages between social-networking system 760 and one or more client systems 730. An API-request server may allow a third-party system 770 to access information from social-networking system 760 by calling one or more APIs. An action logger may be used to receive communications from a web server about a user's actions on or off social-networking system 760. In conjunction with the action log, a third-party-content-object log may be maintained of user exposures to third-party-content objects. A notification controller may provide information regarding content objects to a client system 730. Information may be pushed to a client system 730 as notifications, or information may be pulled from client system 730 responsive to a request received from client system 730. Authorization servers may be used to enforce one or more privacy settings of the users of social-networking system 760. A privacy setting of a user determines how particular information associated with a user can be shared. The authorization server may allow users to opt in to or opt out of having their actions logged by social-networking system 760 or shared with other systems (e.g., third-party system 770), such as, for example, by setting appropriate privacy settings. Third-party-content-object stores may be used to store content objects received from third parties, such as a third-party system 770. Location stores may be used for storing location information received from client systems 730 associated with users. Advertisement-pricing modules may combine social information, the current time, location information, or other suitable information to provide relevant advertisements, in the form of notifications, to a user.
FIG. 8 illustrates example social graph 800. In particular embodiments, social-networking system 760 may store one or more social graphs 800 in one or more data stores. In particular embodiments, social graph 800 may include multiple nodes--which may include multiple user nodes 802 or multiple concept nodes 804--and multiple edges 806 connecting the nodes. Example social graph 800 illustrated in FIG. 8 is shown, for didactic purposes, in a two-dimensional visual map representation. In particular embodiments, a social-networking system 760, client system 730, or third-party system 770 may access social graph 800 and related social-graph information for suitable applications. The nodes and edges of social graph 800 may be stored as data objects, for example, in a data store (such as a social-graph database). Such a data store may include one or more searchable or queryable indexes of nodes or edges of social graph 800.
In particular embodiments, a node in social graph 800 may represent or be represented by a webpage (which may be referred to as a "profile page"). Profile pages may be hosted by or accessible to social-networking system 760. Profile pages may also be hosted on third-party websites associated with a third-party server 770. As an example and not by way of limitation, a profile page corresponding to a particular external webpage may be the particular external webpage and the profile page may correspond to a particular concept node 804. Profile pages may be viewable by all or a selected subset of other users. As an example and not by way of limitation, a user node 802 may have a corresponding user-profile page in which the corresponding user may add content, make declarations, or otherwise express himself or herself. As another example and not by way of limitation, a concept node 804 may have a corresponding concept-profile page in which one or more users may add content, make declarations, or express themselves, particularly in relation to the concept corresponding to concept node 804.
In particular embodiments, a concept node 804 may represent a third-party webpage or resource hosted by a third-party system 770. The third-party webpage or resource may include, among other elements, content, a selectable or other icon, or other inter-actable object (which may be implemented, for example, in JavaScript, AJAX, or PHP codes) representing an action or activity. As an example and not by way of limitation, a third-party webpage may include a selectable icon such as "like," "check in," "eat," "recommend," or another suitable action or activity. A user viewing the third-party webpage may perform an action by selecting one of the icons (e.g., "eat"), causing a client system 730 to send to social-networking system 760 a message indicating the user's action. In response to the message, social-networking system 760 may create an edge (e.g., an "eat" edge) between a user node 802 corresponding to the user and a concept node 804 corresponding to the third-party webpage or resource and store edge 806 in one or more data stores.
In particular embodiments, a pair of nodes in social graph 800 may be connected to each other by one or more edges 806. An edge 806 connecting a pair of nodes may represent a relationship between the pair of nodes. In particular embodiments, an edge 806 may include or represent one or more data objects or attributes corresponding to the relationship between a pair of nodes. As an example and not by way of limitation, a first user may indicate that a second user is a "friend" of the first user. In response to this indication, social-networking system 760 may send a "friend request" to the second user. If the second user confirms the "friend request," social-networking system 760 may create an edge 806 connecting the first user's user node 802 to the second user's user node 802 in social graph 800 and store edge 806 as social-graph information in one or more of data stores 764. In the example of FIG. 8, social graph 800 includes an edge 806 indicating a friend relation between user nodes 802 of user "A" and user "B" and an edge indicating a friend relation between user nodes 802 of user "C" and user "B." Although this disclosure describes or illustrates particular edges 806 with particular attributes connecting particular user nodes 802, this disclosure contemplates any suitable edges 806 with any suitable attributes connecting user nodes 802. As an example and not by way of limitation, an edge 806 may represent a friendship, family relationship, business or employment relationship, fan relationship, follower relationship, visitor relationship, subscriber relationship, superior/subordinate relationship, reciprocal relationship, non-reciprocal relationship, another suitable type of relationship, or two or more such relationships. Moreover, although this disclosure generally describes nodes as being connected, this disclosure also describes users or concepts as being connected. Herein, references to users or concepts being connected may, where appropriate, refer to the nodes corresponding to those users or concepts being connected in social graph 800 by one or more edges 806.
In particular embodiments, an edge 806 between a user node 802 and a concept node 804 may represent a particular action or activity performed by a user associated with user node 802 toward a concept associated with a concept node 804. As an example and not by way of limitation, as illustrated in FIG. 8, a user may "like," "attended," "played," "listened," "cooked," "worked at," or "watched" a concept, each of which may correspond to an edge type or subtype. A concept-profile page corresponding to a concept node 804 may include, for example, a selectable "check in" icon (such as, for example, a clickable "check in" icon) or a selectable "add to favorites" icon. Similarly, after a user clicks these icons, social-networking system 760 may create a "favorite" edge or a "check in" edge in response to a user's action corresponding to a respective action. As another example and not by way of limitation, a user (user "C") may listen to a particular song ("Ramble On") using a particular application (SPOTIFY, which is an online music application). In this case, social-networking system 760 may create a "listened" edge 806 and a "used" edge (as illustrated in FIG. 8) between user nodes 802 corresponding to the user and concept nodes 804 corresponding to the song and application to indicate that the user listened to the song and used the application. Moreover, social-networking system 760 may create a "played" edge 806 (as illustrated in FIG. 8) between concept nodes 804 corresponding to the song and the application to indicate that the particular song was played by the particular application. In this case, "played" edge 806 corresponds to an action performed by an external application (SPOTIFY) on an external audio file (the song "Imagine"). Although this disclosure describes particular edges 806 with particular attributes connecting user nodes 802 and concept nodes 804, this disclosure contemplates any suitable edges 806 with any suitable attributes connecting user nodes 802 and concept nodes 804. Moreover, although this disclosure describes edges between a user node 802 and a concept node 804 representing a single relationship, this disclosure contemplates edges between a user node 802 and a concept node 804 representing one or more relationships. As an example and not by way of limitation, an edge 806 may represent both that a user likes and has used at a particular concept. Alternatively, another edge 806 may represent each type of relationship (or multiples of a single relationship) between a user node 802 and a concept node 804 (as illustrated in FIG. 8 between user node 802 for user "E" and concept node 804 for "SPOTIFY").
In particular embodiments, social-networking system 760 may create an edge 806 between a user node 802 and a concept node 804 in social graph 800. As an example and not by way of limitation, a user viewing a concept-profile page (such as, for example, by using a web browser or a special-purpose application hosted by the user's client system 730) may indicate that he or she likes the concept represented by the concept node 804 by clicking or selecting a "Like" icon, which may cause the user's client system 730 to send to social-networking system 760 a message indicating the user's liking of the concept associated with the concept-profile page. In response to the message, social-networking system 760 may create an edge 806 between user node 802 associated with the user and concept node 804, as illustrated by "like" edge 806 between the user and concept node 804. In particular embodiments, social-networking system 760 may store an edge 806 in one or more data stores. In particular embodiments, an edge 806 may be automatically formed by social-networking system 760 in response to a particular user action. As an example and not by way of limitation, if a first user uploads a picture, watches a movie, or listens to a song, an edge 806 may be formed between user node 802 corresponding to the first user and concept nodes 804 corresponding to those concepts. Although this disclosure describes forming particular edges 806 in particular manners, this disclosure contemplates forming any suitable edges 806 in any suitable manner.
Previous Patent US 9,998,968 | Next Patent US 9,998,970