Patent Publication Number: US-2023148353-A1

Title: Battery efficient wireless network connection and registration for a low-power device

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of U.S. patent application Ser. No. 16/278,640, filed Feb. 18, 2019, which claims the benefit of U.S. Provisional Patent Application No. 62/633,017, filed Feb. 20, 2018, which are incorporated herein by reference in their entirety. 
    
    
     TECHNICAL FIELD 
     This disclosure relates to connecting a low-power wireless device to a wireless network and registering the device in a battery-efficient manner. 
     BACKGROUND 
     Wireless access points enable computing devices to communicate with other devices in a network. A computing device can send data to an access point for transmission over the network or receive data from the access point that originated from another device in the network. The access point and computing device may communicate with one another via a plurality of communication channels, each of which represents a logical coupling between the access point and the computing device and specifies a range of frequencies for signals transmitted to or from the devices. The access point and computing device switch between communication channels in response to dynamic conditions, including varying traffic on the channels and changing distances between the access point and device. 
     Current protocols used by computing devices to connect to and communication with wireless access points are power-intensive. For example, when connecting to an access point, a computing device may send one or more probes to the access point over each of multiple channels. Each of these probes consumes power at the computing device. For low-power devices, such as those operating on a battery without a dedicated power line, connecting to an access point by standard methods can consume excessive power and reduce the amount of time each battery charge will last. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG.  1 A  is a representative computer network environment. 
         FIG.  1 B  is a chart listing frequency ranges for channels in a 2.4 GHZ band. 
         FIG.  1 C  is a chart listing center frequencies for channels in a 5 GHz band. 
         FIG.  2    is a block diagram illustrating components of a wireless device, according to some embodiments. 
         FIG.  3    is an interaction diagram illustrating a process for establishing a wireless network connection between a wireless client device and an access point, according to some embodiments. 
         FIG.  4    is a block diagram illustrating an example processing system in which at least some operations described herein can be implemented. 
     
    
    
     DETAILED DESCRIPTION 
     An access point and a wireless client device establish a connection over a radio frequency communication channel in a manner that reduces power usage at the client device. Although the wireless device may be any device capable of communication over a network, various embodiments of a wireless device are described herein with respect to a video camera that is capable of capturing video and transmitting the video over a wireless network to a remote server. The video camera may be used, for example, as a home or office security camera that remains in a substantially static position (e.g., at a front door). When the position of the device does not change frequently, the device may not need to connect to and disconnect from wireless access points as frequently as a more mobile device, and may not need to switch channels as frequently. Furthermore, a specialized client device such as a video camera may communicate with the access point infrequently. For example, a video camera triggered by motion may turn on to capture and transmit video data for only a few minutes each day, while otherwise operating in a standby or low-power state. To reduce an amount of power consumed by the client device, the client device and access point can employ various techniques to establish network connections with reduced power consumption. In some cases, the client device can store an identifier of the channel used during a communication session with the access point before the client device switches to the standby state. When the device transitions into an active state, the device can first attempt to reconnect to the same channel. In other cases, the access point can attempt to restore a connection to a client device. 
     In the following description, numerous specific details are set forth such as examples of specific components, circuits, and processes to provide a thorough understanding of the present disclosure. Also, in the following description and for purposes of explanation, specific nomenclature is set forth to provide a thorough understanding of the present embodiments. However, it will be apparent to one skilled in the art that these specific details may not be required to practice the present embodiments. In other instances, well-known circuits and devices are shown in block diagram form to avoid obscuring the present disclosure. 
     The term “coupled” as used herein means connected directly to or connected through one or more intervening components or circuits. Any of the signals provided over various buses described herein may be time-multiplexed with other signals and provided over one or more common buses. In addition, the interconnection between circuit elements or software blocks may be shown as buses or as single signal lines. Each of the buses may alternatively be a single signal line, and each of the single signal lines may alternatively be buses, and a single line or bus might represent any one or more of a myriad of physical or logical mechanisms for communication (e.g., a network) between components. The present embodiments are not to be construed as limited to specific examples described herein but rather to include within their scope all embodiments defined by the appended claims. 
       FIG.  1 A  is a representative computer network environment  100  within which some embodiments may be implemented. The environment  100  includes an access point  110 , a wireless device  120 , and a remote server  130 . Additional components not shown in  FIG.  1 A  may also be included in the environment  100 . For example, the environment  100  may further include intervening devices (e.g., switches, routers, hubs, etc.) among the access point  110 , the remote server  130 , and the wireless device  120 . Furthermore, the environment  100  may include multiple access points  110 , remote servers  130 , and/or wireless devices  120 . 
     The wireless device  120  is a computing device communicatively coupled to the access point  110  and remote server  130 . In one embodiment, the wireless device  120  is a camera configured to capture and transmit video data. The wireless device  120  can be any suitable network-connected cameras (or “IP cameras”). For example, the wireless device  120  can operate as a security camera in a home or office. In these cases, the wireless device  120  may be relatively static, remaining in approximately the same physical position at most times. It is contemplated that additional examples of the devices  120  equipped with video and audio recording technology can include computing or mobile devices including, for example, smartphones, tablet computers, laptops, personal digital assistants (PDAs), or the like. Additional examples of the devices  120  can include home sensors (e.g., motion detection sensors and temperature sensors) that can connect to the Internet. 
     The wireless device  120  may be configured to operate in an active, higher-power state and a standby, lower-power state. In the active state, the wireless device  120  can generate or capture data, such as video data, and communicate with other devices. In the standby state, the wireless device  120  may reduce power consumption by not communicating with other devices and turning off one or more components such as a camera and a main processor. When in the standby state, the wireless device  120  also does not send channel probes to the access point  110 . 
     The amount of time the wireless device  120  is in the active state may be relatively low compared to the amount of time the wireless device  120  is in the standby state. For example, the wireless device  120  may remain idle until triggered to capture video data by an input, such as a user input or input from a motion detector. The wireless device  120  may also have a predetermined wake interval, at which time the device switches from the standby state to the active state to check network conditions, transmit any stored data to the access point  110 , or perform other tasks. The wake interval can be, for example, eight hours, such that the device  120  becomes active after eight hours if no triggering input has been received in that interval. 
     The access point  110  enables the wireless device  120  to exchange data to and from the remote server  130 . Although not shown for simplicity, the access point  110  may include one or more processors, which may be general-purpose processors or may be application-specific integrated circuitry that provides arithmetic and control functions to implement the techniques disclosed herein on the access point  110 . The processor(s) may include a cache memory (not shown for simplicity) as well as other memories (e.g., a main memory, and/or non-volatile memory such as a hard-disk drive or solid-state drive). In some examples, cache memory is implemented using SRAM, main memory is implemented using DRAM, and non-volatile memory is implemented using Flash memory or one or more magnetic disk drives. According to some embodiments, the memories may include one or more memory chips or modules, and the processor(s) on the access point  110  may execute a plurality of instructions or program codes that are stored in its memory. Some or all of the instructions or program codes executed by the processor can be collectively represented as an application  112 . The application  112 , when executed by the processor, can manage communication channels used by the access point  110  to communicate with the wireless device  120 . 
     The wireless device  120  can electronically couple to and communicate with the access point  110  wirelessly via a plurality of available communications channels  115 . Although only three channels  115  are shown in  FIG.  1 A , the wireless device  120  and access point  110  may be configured to communicate by any number of channels  115 . Each channel  115  represents frequency for signals transmitted between the wireless device  120  and access point  110 . The channels  115  may be allocated within one or more frequency bands defining a range of signal frequencies, such as a 2.4 GHz band (including frequencies from 2.4 GHz to 2.5 GHz) and a 5 GHz band (including frequencies from 5 GHz to 6 GHz).  FIG.  1 B  is a chart listing frequency ranges for each of fourteen channels allocated to the 2.4 GHz band, and  FIG.  1 C  is a chart listing center frequencies for each of 24 channels allocated to the 5 GHz band. Some of the channels shown in  FIGS.  1 B and  1 C  may be available only in some geographic regions, while other geographic regions may use different or additional channels. The channels  115  may include, by way of example, three channels associated with the 2.4 GHz band: one centered at 2412 MHz (channel 1 in  FIG.  1 B ), one centered at 2437 MHz (channel 6), and one centered at 2462 MHz (channel 11). Similarly, the 5 GHz band may include a plurality of channels distributed across the frequency range defined for the band. One or more of the channels  115  may be allocated to radar systems (referred to as a “DFS channel”), and the wireless device  120  may employ dynamic frequency selection (DFS) to use these channels. When operating in a DFS mode, the wireless device  120  monitors channels for radar signals and, if a signal is detected, automatically switches to another channel to reduce interference with the radar signals. 
     The access point  110  communicates with the wireless device  120  on one of the channels  115  by transmitting a signal at the channel frequency via an antenna  116  or receiving signals at the channel frequency via the antenna  116 . The access point  110  can include multiple antennas  116  configured to receive or transmit data on different channels  115 . For example, the access point  110  may have a first antenna  116  configured to communicate on a channel associated with the 2.4 GHz band, while a second antenna  116  is configured to communicate on a channel associated with the 5 GHz band. 
     The access point  110  can select a particular channel to use to communicate with the wireless device  120  and steer the wireless device  120  to the selected channel. To perform the band steering, the access point  110  listens for probes sent by the wireless device  120  on each available channel  115  and responds to the probe on the selected channel. When the wireless device  120  receives the response, the wireless device  120  may transmit future communications over the selected channel. 
     Communications between the wireless device  120  and access point  110  can use, for example, the IEEE 802.11 family of standards (e.g., Wireless LAN) and/or other suitable types of area network technologies, such as competing or alternative standards to the IEEE 802.11 family of standards (e.g., WiMAX), and can include any suitable intervening wireless network devices including, for example, base stations, routers, gateways, hubs, or the like. Depending on the embodiments, the network technology connecting between the wireless devices  120  and the access point  110  can include other suitable wireless standards such as the well-known Bluetooth communication protocols or near field communication (NFC) protocols. In some embodiments, the network technology between the devices  120  and access point  110  can include a customized version of WLAN, Bluetooth, or customized versions of other suitable wireless technologies. 
     The remote server  130  includes one or more computing devices remote from the wireless device  120  and capable of communicating over a network. The wireless device  120  may transmit data to the remote server  130  for storage or use of the data or to enable a user to access the data. For example, the remote server  130  may be a computing device used by a user to view video data captured by the wireless device  120  or to store and analyze data captured or generated by the wireless device  120 . As another example, the remote server  130  can include one or more storage devices associated with a cloud storage service and configured to store the data received from the wireless device  120 . 
     In some embodiments, the access point  110  and the remote server  130  may be coupled wirelessly (e.g., which may include employing an IEEE 802.11 wireless network, or a data traffic network based on wireless telephony services such as 3G, 3.5G, 4G Long-Term Evolution (LTE) and the like). The technologies supporting the communications between the access point  110  and the remote server  130  may include Ethernet (e.g., as described in IEEE 802.3 family of standards) and/or other suitable types of area network technologies, such as competing or alternative standards to the IEEE 802.11 family of standards (e.g., WiMAX). Examples of different wireless protocols in the IEEE 802.11 family of standards can include IEEE 802.11a, IEEE 802.11b, IEEE 802.11n, IEEE 802.11ac, IEEE 802.11af, IEEE 802.11ah, and IEEE 802.11ad. 
       FIG.  2    is a block diagram illustrating components of the wireless device  120 , according to one embodiment. As shown in  FIG.  2   , the wireless device  120  can include a processing unit  210  and an input/output interface  220 . The example wireless device  120  shown in  FIG.  2    includes components related to image capture. However, the wireless device  120  can include different or additional components that enable the device to perform functions other than capturing images or video. 
     The processing unit  210  includes various components for processing data collected by the wireless device  120  and managing communicating between the wireless device  120  and other devices. For example, the processing unit  210  can include wireless communications interfaces such as a WiFi interface  212  and a Bluetooth interface  214 . The processing unit  210  can also include a microprocessor  218  and an input/output block  216  that enables communications between the processing unit  210  and the I/O interface  220 . 
     The wireless communications interfaces  212 ,  214  enable communications between the device  120  and external devices such as the access point  110 . In some embodiments, a wireless communications interface (such as the WiFi interface  212 ) includes a low-power processor that consumes less power than the microprocessor  218  and can perform some functions related to establishing a network connection without powering on the microprocessor  218 . For example, the low-power processor can listen for probes or pings from the access point  110 . 
     The microprocessor  218  can be powered on during the active state of the wireless device  120  and powered off during the standby state. The microprocessor  218  can cause data to be transmitted to the access point  110 , for example receiving video data from the I/O interface  220  and sending the video data to the access point  110  over the WiFi interface  212 . The microprocessor  218  can also establish network connections with the access point  110 , transmitting data, probes, or other communications to the access point  110  and receiving communications from the access point  110  to establish a connection. 
     The microprocessor  218  can measure properties of the communications channels  115  between the wireless device  120  and the access point  110 . The measured properties may include channel interference, a signal strength on the channel, capacity of the channel, or a number of dropped packets on the channel. The channel properties can, in some embodiments, be measured by other components of the wireless device  120 , such as the low-power processor of the WiFi interface  212 . 
     The I/O interface  220  receives inputs into the wireless device  120  and outputs data from the device  120 . As shown in  FIG.  2   , the I/O interface  220  can include a camera interface  222 , an image processing unit  224 , a storage interface  226 , and a memory interface  228 . 
     The camera interface  222  can receive image or video data from an image sensor  230 . The camera interface  222  can control parameters of the image or video data captured by the image sensor  230 , such as a frame rate, a resolution, or a duration of video capture. In some cases, the camera interface  222  can trigger the image sensor  230  to capture video data in response to an input to the wireless device  120  such as a user input or a motion input detected by a motion sensor. For example, if the camera interface  222  receives a signal from the motion sensor indicating that motion was detected within a field of view of the image sensor  230 , the camera interface  222  turns on the image sensor  230  to capture video data. Alternatively, the camera interface  222  causes the image processing unit  224  to store video or image data in response to motion detection. The camera interface  222  may cause the image sensor  230  to capture video data for a specified length of time, such as ten seconds, in response to each motion incident. Similarly, if video capture is initiated in response to a user input, the camera interface  222  may capture video data for a specified period of time, or may capture video data until a second user input to end video capture is received. 
     The camera interface  222  can send the image or video data captured by the image sensor  230  to the image processing unit  224  for processing and storage. The image processing unit  224  may encode or compress the video data for storage or transmission using any of a variety of codecs, such as H.264 or H.265. 
     The memory controller  228  interface with a memory  250  of the wireless device  120 , for example to pass image or video data from the image processing unit  224  for storage in the memory  250 . The memory  250  is a machine-readable medium including volatile or non-volatile memory devices. The memory  250  can store instructions for execution by the microprocessor  218 , the camera interface  222 , the image processing unit  224 , or other components of the wireless device  120 , as well as video data or other data generated by the wireless device  120 . 
     The storage interface  226  interfaces with a storage device  240 , which can be internal or external to the wireless device  120 . For example, the storage device  240  can include a secure digital (SD) card. In some cases, if the storage device  240  is present, video data captured by the wireless device  120  can be sent to the storage device  240  for storage. If the storage device  240  is not present, the video data can be sent to the memory  250  for temporary storage before transmitting the video data to an external device such as the remote server  130 . 
       FIG.  3    is an interaction diagram illustrating a process for establishing a wireless network connection between the wireless device  120  and access point  110 . The process shown in  FIG.  3    comprises communications between the wireless device  120  and an access point  110 . Arrows indicate a direction of initial communication for each step of the process, but each step may comprise communications in both directions (i.e., from the wireless device  120  to the access point  110  as well as from the access point  110  to the device  120 ). Furthermore, the process may include communications with more than one access point  110 . 
     As shown in  FIG.  3   , the wireless device  120  stores  302  an identifier of a previously-used communications channel, as well as an identifier of the access point  110  with which the device  120  communicated. For example, after the device  120  has established a network connection with an access point  110 , the device  120  stores information about the channel and access point used for the connection. When the device  120  returns to a standby state, the identifiers of the channel and/or access point can be retained for attempting to re-establish the same connection. 
     After the initial network connection has ended (for example because the device  120  switched to a standby state), the wireless device  120  may later need to re-establish a network connection. For example, when motion data triggers the device  120  to wake up and begin capturing data, the device  120  initiates a process to connect to a network. Rather than scanning multiple channels to locate an access point, the device  120  first attempts  304  to reconnect to the access point over the channel previously used. Because the relative positions of the device  120  and access point  110  may remain substantially constant, there may be a high likelihood that the device  120  will connect to the same access point  110  each time it re-establishes a network connection. By attempting to reconnect to the same channel previously used to communicate with the access point  110 , the device  120  may reduce the amount of power used to establish a network connection. For example, rather than transmitting a probe on multiple channels, which can be a power-intensive process, the device  120  can begin by transmitting a probe only on the previously-used channel. The wireless device  120  can also store settings configured for the previously-used channel, such as a data rate used on the channel, interference settings, or the like. 
     If the attempt  304  to re-establish the association on the previously-used channel fails, the wireless device  120  can scan  306  for other available channels. In one embodiment, the wireless device  120  passively scans  306  for other channels by listening for a probe from the access point  110  on each of a plurality of channels. If the device  120  receives a probe from the access point  110  on one of the channels, the device  120  can continue the association process on that channel. If the device  120  does not receive any probes from the access point  110 , the device  120  can actively scan  306  for other channels by transmitting probes on a plurality of channels. The device  120  can alternatively perform an active scan instead of a passive scan, or may determine whether to perform an active or passive scan based on the type of data to be transmitted to the access point  110 . For example, if the device  120  is capturing data to be live-streamed over a network, the device  120  may perform an active scan instead of a passive scan to more quickly establish the network connection. 
     If the wireless device  120  performs an active scan, properties of the scan may vary depending on network conditions such as signal strength or interference. In some cases, the wireless device  120  can adjust a number of probes transmitted on each channel based on the network conditions. For example, if the device  120  transmits a probe on a first channel and does not receive a response from the access point, the device  120  can measure a signal strength or interference on the channel. If the device  120  measures that a particular channel has an RSSI above a specified threshold or interference below a corresponding threshold, the device  120  can transmit one or more additional probes on the first channel. On the other hand, if the RSSI is low or the interference is high, the device  120  may wait a predetermined amount of time before transmitting another probe on the first channel. Alternatively, the device may continue to transmit probes for a period of time (such as five seconds) and, if no response is received from the access point  110 , wait a predetermined amount of time (such as ten seconds) before resuming the attempt to create a network connection. 
     Once the access point  110  responds to a probe from the wireless device  120  or the device  120  responds to a probe from the access point  110 , the device  120  authenticates  308  a connection to the access point over the channel. The device  120  can authenticate to the access point by, for example, WiFi Protected Access (WPA). If authentication fails, the wireless device  120  may retry authenticating the connection. The device  120  dynamically selects a number of retries based on network conditions. In one embodiment, if the device  120  measures an RSSI on the channel that is greater than a specified threshold, the device  120  may retry the authentication for a longer period of time than if the RSSI is below the threshold. For example, the device  120  may retry authenticating for ten seconds if the RSSI is above the threshold but may only retry for five seconds if the RSSI is below the threshold. The device  120  may also balance a number of retries and a duration of each attempt based on the network conditions. For example, if there is high interference on a channel, ten retries back to back may fail. If the device  120  waits a brief period of time between each retry, such as one second, the interference may decrease enough before the next retry to enable authentication. The number of retries under given network conditions can be selected by the wireless device  120 . For example, in some interference environments, higher data rates with more retries may be more successful than using a lower data rate. As another example, a low modulation (e.g., using binary phase shift keying (BPSK)) with more retries may be more successful in a long-range environment. 
     In some embodiments, the wireless device  120  can store data related to the authentication process as the device  120  authenticates the connection to the access point. If the authentication fails, the wireless device  120  can restart or recover the process from the point where it failed or at a step before the point where it failed, rather than entirely restarting the authentication procedure. 
     After successfully authenticating  308 , the wireless device  120  can lease  310  an IP address, for example using the Dynamic Host Configuration Protocol (DHCP). Standard clients typically transmit data packets associated with a DHCP request using the physical layer rate (PHY rate) associated with a wireless link between the client and the access point. However, this rate can be too high for some applications, resulting in packet loss. Retransmitting lost packets causes delay and extra energy usage by the client device. Accordingly, to reduce power usage, the wireless device  120  may use a data rate that is lower than the physical layer rate. For example, the wireless device  120  can use a lowest data rate or a data rate associated with a layer higher than the physical layer (e.g., an application layer data rate). In some cases, the wireless device  120  drops to a data rate that is lower than the PHY rate each time the device leases an IP address. In other cases, the wireless device  120  uses a data rate that is equivalent to the data rate used the last time an IP address was leased. If a first attempt to lease an IP address fails, the wireless device  120  can retry the leasing process for a specified amount of time (or a specified number of attempts). In some cases, the number or duration of retries can be selected based on network conditions such as signal strength or interference. For example, if interference on the channel is below a specified threshold, the wireless device  120  can use a higher number of retries than if the interference is above the threshold. Furthermore, in some cases, the wireless device  120  can select a number or duration of retries based on priority of the data that is being communicated. When transmitting higher priority control packets, for example, the wireless device  120  can retry a greater number of times than if the device  120  is transmitting lower-priority data packets. 
     The first time the wireless device  120  is turned on and connected to the access point  110 , the device  120  may be registered to a cloud server such as the remote server  130 . Registration can authenticate the device  120  to the cloud server, allowing the device to, for example, transmit data to the cloud server, receive data from the server, or communicate with other devices a user has registered. The access point  110  can register  312  the device  120  to the server, or the device  120  can register to the server without passing data through the access point  110 . In some embodiments, the wireless device  120  transmits data during the registration process at a higher data rate than is used for other steps of the process shown in  FIG.  3   . For example, the data rate can be higher than the data rate used to lease an IP address. Furthermore, in some embodiments, the wireless device  120  can apply a power setting not used in other steps. For example, the wireless device  120  may remain in an active state until the registration is complete, even if the registration fails one or more times after a first attempt. 
     If the network connection between the device  120  and access point  110  is lost, the access point  110  may initiate a process to recover  314  the connection. In some cases, the access point  110  may attempt to recover  314  the connection by probing the wireless device  120  by low-layer hardware, for example over a data link layer. 
     If the low-layer probe fails, the access point  110  may attempt to recover  314  the connection by pinging the device  120  in the Internet layer. If the device  120  does not respond to the ping, the access point  110  may transmit a WiFi data probe to the device  120 . The WiFi data probe can include, for example, one or more small data packets (e.g., null data packets) or a management frame. If the device  120  responds to either the ping or the probe, the access point  110  and wireless device  120  can reestablish a communication session. 
     In some cases, the access point  110  can attempt to recover  314  the connection by sending a basic service set transition management (BTM) frame to the wireless device  120 . The BTM frame, as defined for example by the 802.11v standard, may typically be used either to instruct a client device to transition to a specific access point, or to provide the client device with a list of preferred access points. For example, a first access point may send a client device a BTM request frame with instructions to transition to a second access point in order to better balance a network load. When the client device receives the BTM request frame, it may disassociate from the first access point and attempt to connect to the second access point. In some embodiments, by sending the wireless device  120  a BTM frame, the access point  110  can cause the device  120  to reinitiate a network connection to the access point  110 . 
     If the network connection has still not been recovered, the access point  110  may blacklist the device  120 . Because the device  120  operating in the standby mode may attempt to communicate with the access point  110  over low-layer communications without switching to the active mode, blacklisting the device  120  can force the device  120  into active mode. When the device  120  becomes active, it may perform its usual steps to identify and connect to the access point  110 , thereby reinitiating a network connection with the access point. 
     If blacklisting fails, the access point  110  can attempt to recover  314  the connection by pausing beacon transmission for a specified period of time. Under normal operation, the access point  110  may broadcast a beacon at periodic intervals, such as once every  100 ms. If the wireless device  120  does not receive the beacon within a predetermined number of these broadcast intervals, the device  120  is configured to turn on and actively or passively scan for the access point  110 . As a result, if the access point  110  stops sending a beacon for five beacon intervals, for example, the wireless device  120  detects that the beacon has not been received and begins scanning for the access point  110 . The access point  110  can then respond to the probe from the wireless device  120  and reauthenticate the connection. 
     Finally, if the connection has still not been restored, the access point  110  can restart a WiFi signal. Restarting the signal can force the wireless device  120  to reconnect to the access point  110 . 
       FIG.  4    is a block diagram illustrating an example of a processing system  400  in which at least some operations described herein can be implemented. The processing system  400  may include one or more central processing units (“processors”)  402 , main memory  406 , non-volatile memory  410 , network adapter  412  (e.g., network interfaces), video display  418 , input/output devices  420 , control device  422  (e.g., keyboard and pointing devices), drive unit  424  including a storage medium  426 , and signal generation device  430  that are communicatively connected to a bus  416 . The bus  416  is illustrated as an abstraction that represents any one or more separate physical buses, point to point connections, or both connected by appropriate bridges, adapters, or controllers. The bus  416 , therefore, can include, for example, a system bus, a Peripheral Component Interconnect (PCI) bus or PCI-Express bus, a HyperTransport or industry standard architecture (ISA) bus, a small computer system interface (SCSI) bus, a universal serial bus (USB), IIC (I2C) bus, or an Institute of Electrical and Electronics Engineers (IEEE) standard 494 bus, also called “Firewire.” 
     In various embodiments, the processing system  400  operates as part of a user device, although the processing system  400  may also be connected (e.g., wired or wirelessly) to the user device. In a networked deployment, the processing system  400  may operate in the capacity of a server or a client machine in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. 
     The processing system  400  may be a server computer, a client computer, a personal computer, a tablet, a laptop computer, a personal digital assistant (PDA), a cellular phone, a processor, a web appliance, a network router, switch or bridge, a console, a hand-held console, a gaming device, a music player, network-connected (“smart”) televisions, television-connected devices, or any portable device or machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by the processing system  400 . 
     While the main memory  406 , non-volatile memory  410 , and storage medium  426  (also called a “machine-readable medium) are shown to be a single medium, the term “machine-readable medium” and “storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store one or more sets of instructions  428 . The term “machine-readable medium” and “storage medium” shall also be taken to include any medium that is capable of storing, encoding, or carrying a set of instructions for execution by the computing system and that cause the computing system to perform any one or more of the methodologies of the presently disclosed embodiments. 
     In general, the routines executed to implement the embodiments of the disclosure, may be implemented as part of an operating system or a specific application, component, program, object, module or sequence of instructions referred to as “computer programs.” The computer programs typically comprise one or more instructions (e.g., instructions  404 ,  408 ,  428 ) set at various times in various memory and storage devices in a computer, and that, when read and executed by one or more processing units or processors  402 , cause the processing system  400  to perform operations to execute elements involving the various aspects of the disclosure. 
     Moreover, while embodiments have been described in the context of fully functioning computers and computer systems, those skilled in the art will appreciate that the various embodiments are capable of being distributed as a program product in a variety of forms, and that the disclosure applies equally regardless of the particular type of machine or computer-readable media used to actually effect the distribution. For example, the technology described herein could be implemented using virtual machines or cloud computing services. 
     Further examples of machine-readable storage media, machine-readable media, or computer-readable (storage) media include, but are not limited to, recordable type media such as volatile and non-volatile memory devices  410 , floppy and other removable disks, hard disk drives, optical disks (e.g., Compact Disk Read-Only Memory (CD ROMS), Digital Versatile Disks (DVDs)), and transmission type media, such as digital and analog communication links. 
     The network adapter  412  enables the processing system  400  to mediate data in a network  414  with an entity that is external to the processing system  400  through any known and/or convenient communications protocol supported by the processing system  400  and the external entity. The network adapter  412  can include one or more of a network adaptor card, a wireless network interface card, a router, an access point, a wireless router, a switch, a multilayer switch, a protocol converter, a gateway, a bridge, bridge router, a hub, a digital media receiver, and/or a repeater. 
     The network adapter  412  can include a firewall which can, in some embodiments, govern and/or manage permission to access/proxy data in a computer network, and track varying levels of trust between different machines and/or applications. The firewall can be any number of modules having any combination of hardware and/or software components able to enforce a predetermined set of access rights between a particular set of machines and applications, machines and machines, and/or applications and applications, for example, to regulate the flow of traffic and resource sharing between these varying entities. The firewall may additionally manage and/or have access to an access control list which details permissions including for example, the access and operation rights of an object by an individual, a machine, and/or an application, and the circumstances under which the permission rights stand. 
     As indicated above, the techniques introduced here implemented by, for example, programmable circuitry (e.g., one or more microprocessors), programmed with software and/or firmware, entirely in special-purpose hardwired (i.e., non-programmable) circuitry, or in a combination or such forms. Special-purpose circuitry can be in the form of, for example, one or more application-specific integrated circuits (ASICs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), etc. 
     In the foregoing specification, the present embodiments have been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader scope of the disclosure as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense. 
     It should also be understood that all block diagrams in the figures are for illustration purpose only, and should not preclude the scope of this invention to include any logic equivalents or combinations thereof, including removing, substituting, or adding other logic gates that achieves the same or similar functions consistent with the features of the present invention. Further, it should be noted that the various circuits disclosed herein may be described using computer aided design tools and expressed (or represented), as data and/or instructions embodied in various computer-readable media, in terms of their behavioral, register transfer, logic component, transistor, layout geometries, and/or other characteristics. Formats of files and other objects in which such circuit expressions may be implemented include, but are not limited to, formats supporting behavioral languages such as C, Verilog, and VHDL, formats supporting register level description languages like RTL, and formats supporting geometry description languages such as GDSII, GDSIII, GDSIV, CIF, MEBES and any other suitable formats and languages. Computer-readable media in which such formatted data and/or instructions may be embodied include, but are not limited to, non-volatile storage media in various forms (e.g., optical, magnetic or semiconductor storage media).