The present application is related to data collection, and more specifically to methods and systems that collect data from distributed sensors.
Many simple and complex devices can be connected to the Internet, such as supercomputers, personal computers, tablets, mobile phones, thermostats, sensors, etc. The Internet connection is crucial because it allows remote communication with and remote control of the Internet connected devices. For example, we can turn on the thermostat in our houses while driving back home from work. However, if the Internet connection fails, or the device is not connected to the Internet, the remote communication and control cease to work.
Presented here are system and methods for collecting information from devices, such as sensors, that are not necessarily connected to the Internet. In one embodiment, multiple sensors are distributed in a geographic area such as a city. The sensors are cheap and may not have the capability to connect to the Internet. The sensors can power up every 10 minutes to gather data about the environment, such as the ambient temperature, and then power down to save energy. The sensors can collect a maximum of 50 data points, at which point, the sensors delete the data in memory, and start recording measurements again.
A collecting device, i.e., a device attached to a moving object such as a bus, traverses the geographic area containing the sensors, and continuously sends out wake-up signals into the environment. When a sensor is within, for example, 10 m of the collecting device, and receives the wake-up signal, the sensor uploads the gathered data to the collecting device. Subsequently, when the collecting device establishes an Internet connection, the collecting device uploads the gathered data to a central database. As a result, the sensor consumes little energy, and can operate with a small battery, because the sensor spends most of the time power down, and only uses energy to record a measurement, and to upload the data to the collecting device.
These and other objects, features and characteristics of the present embodiments will become more apparent to those skilled in the art from a study of the following detailed description in conjunction with the appended claims and drawings, all of which form a part of this specification. While the accompanying drawings include illustrations of various embodiments, the drawings are not intended to limit the claimed subject matter.
Brief definitions of terms, abbreviations, and phrases used throughout this application are given below.
Reference in this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the disclosure. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment, nor are separate or alternative embodiments mutually exclusive of other embodiments. Moreover, various features are described that may be exhibited by some embodiments and not by others. Similarly, various requirements are described that may be requirements for some embodiments but not others.
Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense, as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to.” As used herein, the terms “connected,” “coupled,” or any variant thereof, means any connection or coupling, either direct or indirect, between two or more elements. The coupling or connection between the elements can be physical, logical, or a combination thereof. For example, two devices may be coupled directly, or via one or more intermediary channels or devices. As another example, devices may be coupled in such a way that information can be passed there between, while not sharing any physical connection with one another. Additionally, the words “herein,” “above,” “below,” and words of similar import, when used in this application, shall refer to this application as a whole and not to any particular portions of this application. Where the context permits, words in the Detailed Description using the singular or plural number may also include the plural or singular number respectively. The word “or,” in reference to a list of two or more items, covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, and any combination of the items in the list.
If the specification states a component or feature “may,” “can,” “could,” or “might” be included or have a characteristic, that particular component or feature is not required to be included or have the characteristic.
The term “module” refers broadly to software, hardware, or firmware components (or any combination thereof). Modules are typically functional components that can generate useful data or another output using specified input(s). A module may or may not be self-contained. An application program (also called an “application”) may include one or more modules, or a module may include one or more application programs.
The terminology used in the Detailed Description is intended to be interpreted in its broadest reasonable manner, even though it is being used in conjunction with certain examples. The terms used in this specification generally have their ordinary meanings in the art, within the context of the disclosure, and in the specific context where each term is used. For convenience, certain terms may be highlighted, for example using capitalization, italics, and/or quotation marks. The use of highlighting has no influence on the scope and meaning of a term; the scope and meaning of a term is the same, in the same context, whether or not it is highlighted. It will be appreciated that the same element can be described in more than one way.
Consequently, alternative language and synonyms may be used for any one or more of the terms discussed herein, but special significance is not to be placed upon whether or not a term is elaborated or discussed herein. A recital of one or more synonyms does not exclude the use of other synonyms. The use of examples anywhere in this specification, including examples of any terms discussed herein, is illustrative only and is not intended to further limit the scope and meaning of the disclosure or of any exemplified term. Likewise, the disclosure is not limited to various embodiments given in this specification.
Presented here are system and methods for collecting information from devices, such as sensors, that are not necessarily connected to the Internet. In one embodiment, multiple sensors are distributed in a geographic area such as a city. The sensors are cheap and may not have the capability to connect to the Internet. The sensors power up every 10 minutes to gather data about the environment, such as the ambient temperature, and then power down to save energy. The sensors can collect a maximum of 50 data points, at which point, the sensors delete the data in memory, and start recording measurements again.
A collecting device, i.e., a device attached to a moving object such as a bus, traverses the geographic area containing the sensors, and continuously sends out wake-up signals into the environment. When a sensor is within 20 feet of the collecting device, and receives the wake-up signal, the sensor uploads the gathered data to the collecting device. Subsequently, when the collecting device establishes an Internet connection, the collecting device uploads the gathered data to a central database. As a result, the sensor consumes little energy, and can operate with a small battery, because the sensor spends most of the time power down, and only uses energy to record a measurement, and to upload the data to the collecting device.
The collecting device 130 is a device that can move across different geographic locations. The collecting device 130 can be attached to a pedestrian, a vehicle such as a bus, a car, a self-driving car, a drone, a bike, etc. The collecting device 130 utilizes more energy than the sensors 100, 110, 120 because the collecting device 130 is powered up most of the time. The collecting device 130 can be a software application running on a mobile device. As the collecting device 130 traverses a geographic area, the collecting device wakes up sensors 100, 110, 120 that it encounters and downloads the data from the sensors 100, 110, 120. For example, the collecting device 130 continuously sends out a wake-up signal that has a range of approximately 20 feet. If the sensor 100, 110, 120 is within 20 feet of the collecting device, the sensor 100, 110, 120 wakes upon receiving the wake-up signal, and sends the data collected to the collecting device 130. The maximum communication distance between the sensor and the collecting device can vary, and can be a short distance, for example a range similar to the Bluetooth protocol's 10 m, or can extend up to 100 m.
For example, the sensors 100, 110, 120 can power up every 10 minutes, record a measurement, such as a strength of a radio signal, strength of Wi-Fi connections, etc. and can store up to a predetermined number of measurements, such as 50 measurements. If the collecting device 130 establishes contact with the sensor 100, 110, 120 every 500 minutes, the collecting device 130 receives all of the data and can store the data in memory 232. However, if the collecting device 130 does not reach the sensor within 500 minutes, the sensor 100, 110, 120 can delete all of the data contained on the sensor, or overwrite old data.
The collecting device 130 can wake up the sensors 100, 110, 120 by continually emitting a wake-up signal 240, 250, 260 using near field communication, such as Bluetooth. Alternatively, or in addition, the collecting device 130 can emit the wake-up signal 240, 250, 260 when the collecting device detects the presence of a network such as Wi-Fi, cellular network, mesh network, local area network, metropolitan area network, etc.
To avoid waking up sensors that are part of a different network, or waking up sensors that do not need to be woken up, the wake-up signal 240, 250, 260 sent to the sensors 100, 110, 120 can contain a password 242, 252, 262 shared between the collecting device 130 and the sensor 100, 110, 120, respectively. The passwords 242, 252, 262 can be the same, can all be different, or some can be the same and some can be different. If the sensor 100, 110, 120 recognizes the received password, the sensor 100, 110, 120 sends the data 270, 280, 290 to the collecting device 130. The password can be constructed to guard against replay attacks, etc. Upon receiving the data 270, 280, 290, the collecting device 130 stores the data in memory 232, and in addition records the time and position when the data was received.
The data 270, 280, 290 sent to the collecting device can contain an identification (ID) of the sensor 100, 110, 120, ID for data field number 1, the value for data field number 1, ID for data field number 2, value for data field number 2, etc. The sensor ID can be pre-programmed and unique to the device. The sensor ID can be a media access control (MAC) address, an International Mobile Equipment Identity (IMEI) number, and/or a randomly generated globally unique ID recorded into an EPROM, etc.
Once the collecting device 130 receives the data 270, 280, 290, the collecting device can integrate the data into a database by mapping the sensor ID, and data field ID into a project in the database. The mapping can be done by retrieving a table which associates the sensor ID with a database project, and the data field ID to a response in the database project. Alternatively, the collecting device can transmit the data to a central database 200, which then can map the sensor ID and the data field ID into the project and a response in the central database 200.
Perimeter 340 limits the region within which the sensors are placed. The collecting device 130 can follow the path 300 through the sensors 100, 110, 120 (only three labeled for brevity). The region 310, 320, 330 (only three labeled for brevity) shows a distance within which the collecting device 130 needs to approach the sensor 100, 110, 120 to be able to collect sensor data. The distance can usually be about 20 feet. The collecting device 130 can take on various paths, such as visit each of the sensors 100, 110, 120 once such as sensor 120, visit at least one sensor at least twice such as sensor 100, skip visiting the sensor altogether such as sensor 110, etc.
A first mode of the dual-mode device 400 includes a high-energy mode to record and transmit data, and a second mode of the dual-mode device includes a low-energy mode to determine whether to transition to the first mode. The dual-mode device 400 spends most of the time in the low-energy mode to minimize energy consumption. The dual-mode device 400 can transition from the low-energy mode to the high-energy mode in at least two ways. For example, the dual-mode device 400 can be woken up by a collecting device 130 in
The energy source 430 can provide energy to the dual-mode device 400. The energy source 430 can include a battery providing electrical current to the dual-mode device 400, a solar cell, and/or a converter to convert energy from the environment into energy consumed by the dual-mode device 400. The solar cell can be flexible and detachable, and can be moved between various dual-mode devices 400. The converter can also be detachable, and can, for example, convert vibrations from the environment, such as wind and/or surface vibrations, into electrical energy used by the dual-mode device 400.
The energy consumption is higher in the high-energy mode than in the low-energy mode. When depleted, the energy source 430 can be recharged, replaced, or the whole dual-mode device 400 can be discarded due to a low cost of the dual-mode device 400. The dual-mode device 400 can be made out of biodegradable conductive materials such as polypyrrole (PPy) nanoparticles and poly(d,l-lactide) (PDLLA), or PPy-coated polyester fabric. The content of PPy in the biodegradable conductive material can vary between 1-20%. The dual-mode device 400 can disintegrate into the environment once the energy source 430 is drained.
The timer 410 can measure the passage of time when the dual-mode device 400 is operating in the low-energy mode. When a predetermined amount of time has passed since the last measurement, such as 15 minutes, the timer 410 can send a message to the controller 420, via the bus 480, to transition the device 400 into the high-energy mode.
The receiver 440 can receive a message sent out by the collecting device 130 when the dual-mode device 400 is operating in the low-energy mode. The message sent out by the collecting device 130 can contain a wake-up signal 240, 250, 260 in
The controller 420 can also transition the dual-mode device 400 into the high-energy mode once the message is received, or the controller 420 can authenticate the received message before transitioning the dual-mode device 400 into the high-energy mode. To authenticate the received message, the controller 420 can compare the received message to a password 490 stored in the memory 470 of the dual-mode device 400. The controller 420 can authenticate the received message when the password 490 and the received message are the same.
The transmitter 450 can transmit messages wirelessly over short distances equal to or less than 100 m. Communication over short distances minimizes energy usage. As a result the lifetime of the energy source 430 can be extended. The transmitter 450 and the receiver 440 can be combined into a single transceiver 460 performing the functions of both the transmitter 450 and the receiver 440.
The dual-mode device 400 can guard against various security attacks. For example, the controller can guard against a replay attack. A replay attack is a form of network attack in which a valid data transmission is maliciously or fraudulently repeated or delayed. To guard against the replay attack, the dual-mode device 400 receives a message containing a password encoded with a time at which the password was sent to the dual-mode device 400. The controller 420 obtains a receiving time when the message was received, and constructs a time window surrounding the receiving time. For example, the time window can be two minutes before and two minutes after the receiving time. The controller 420 combines the password 490 with a time within the time window to obtain multiple codes, in the same way as the collecting device encoded the time with the password. When at least one code among the multiple codes is the same as the received message, the controller 420 authenticates the received message, and transitions the dual-mode device 400 to the high-energy mode.
The memory 470 can store a dual-mode device identification (ID) 405, a project ID 415, an ID 425 of a field in the project and a value 435 associated with the field ID. The various IDs 405, 415, 425 can be occasionally updated by the collecting device 130. Alternatively, the various IDs 405, 415, 425 can be stored in a read-only memory of the dual-mode device 400. For example, the dual-mode device ID 405 can be a media access control (MAC) address, an International Mobile Equipment Identity (IMEI) number, and/or a randomly generated globally unique ID recorded into an EPROM of the dual-mode device 400. The project ID 415 can be the project ID in the central database 200 in
For example, the wake-up condition can be receiving from a collecting device a wake-up message. The wake-up message can include a password to the dual-mode device. Once the processor confirms that the wake-up message contains the password to the dual-mode device, the processor can transition the dual-mode device to the high-energy mode and can transmit data stored on the dual-mode device to the collecting device. The transmitted data can include environment measurements such as humidity, air quality, availability of Wi-Fi networks, strength of cell phone signal, etc. The transmitted data can be secured by encrypting the recorded data prior to transmission to the collecting device. Once the data has been transmitted, the dual-mode device can delete the transmitted data still remaining in memory.
In another example, the wake-up condition can be passage of time. While the dual-mode device is in a low-energy mode, a timer associated with the dual-mode device measures the passage of time. The timer can measure the passage of time since the last measurement was made by the dual-mode device. After a predetermined amount of time has passed, such as two hours, the dual-mode device transitions into the high-energy mode and makes another measurement, such as one or more measurements. Upon making the measurement, the timer resets, and continues measuring the time from the latest measurement. The dual-mode device can also record the time at which the measurement was made, and store it along with the measurement in the dual device memory. Once the dual-mode device memory has been filled up, the dual-mode device can delete the recorded measurements and/or the recorded times regardless of whether the environment property stored in the memory has been transmitted to the collecting device. In another example, instead of deleting the recording measurements, the dual-mode device can start replacing the oldest recorded measurement with the newest measurement.
In addition to storing measured data, the dual-mode device memory can store a dual-mode device identification (ID), an ID associated with the recorded data and a value associated with the ID. The various IDs can be periodically updated by the collecting device, as described in this application. The dual-mode device can transmit the dual-mode device ID, the ID associated with the recorded data, and the value associated with the ID to the collecting device.
In step 510, to minimize the energy consumption of the dual-mode device, the dual-mode device can transition to the low-energy mode upon completing the task. For example, the dual-mode device can transition to the low-energy mode upon transmitting the data to the collecting device, or upon making the measurement. Once the energy source has been drained, the dual-mode device can disintegrate into the environment because the dual-mode device can be made from biodegradable conductive materials, as described in this application.
The dual-mode device can implement various security measures to guard against attacks. For example, the dual-mode device can encrypt the transmitted data using public key cryptography. The system can also guard against replay attacks. A replay attack is a form of network attack in which a valid data transmission is maliciously or fraudulently repeated or delayed. To guard against the replay attack, the dual-mode device receives from the collecting device a wake-up message and a receiving time when the message was received. The dual-mode device computes a time window around the receiving time. The time window can include five minutes before and after the receiving time. The dual-mode device starts with the initial time equaling to receiving time-5 minutes, and adds small increments, such as 0.5 second increments to the initial time, until time+5 minutes is reached. For each time so obtained, the dual-mode device combines the password stored in a memory of the dual-mode device with each time to obtain a code, and compares the code to the received message. When the code and the received message are the same, the dual-mode device authenticates the received message. This method guards against the replay attacks because it creates a time window within which the received code is valid.
The collecting device 600 can be autonomously mobile or can be attached to a vehicle or a person traversing a geographic area containing multiple dual-mode devices from which the collecting device 600 gathers data. The collecting device 600 can be an autonomous drone, a self-driving vehicle, or can be attached to a car, a bike, a person, etc. The collecting device 600 can be detachable from the car, the bike, the person, etc., or the collecting device 600 can be permanently attached. As the collecting device 600 traverses the geographic area, the collecting device transitions multiple dual-mode devices into a high-energy mode, and receives and stores data transmitted by the dual-mode devices.
The geographically distributed dual-mode devices can operate in two modes, as described in this application. A first mode is a high-energy mode consuming a higher amount of energy than a second mode, which is a low-energy mode. The dual-mode devices can be completely disconnected from the Internet, or can be connected to the Internet. A dual-mode device can be a sensor to measure an environment property comprising temperature, light, noise, humidity, wind, air quality, available wireless networks, quality of cell phone reception, etc.
In one example, the collecting device 600 always operates in the high-energy mode. In another example, the collecting device 600 can operate in the high-energy mode, or in the low-energy mode depending on the location of the collecting device 600. If the collecting device 600 is located in an area where there are no dual-mode devices, the collecting device can power down to preserve energy. To determine whether the collecting device 600 is in an area where there are no dual-mode devices, the collecting device 600 can determine its location using the locator 660, and retrieve from memory 650 a map 652 indicating where the dual-mode devices are located. The collecting device 600 can determine how long it would take for the collecting device 600 to reach one or more neighboring dual-mode devices, based on the velocity of the collecting device 600 and the location of the neighboring dual-mode devices. If the length of time to reach one or more of neighboring dual-mode devices exceeds a predetermined amount of time, such as 5 minutes, the collecting device 600 can power down for 5 minutes, until it reaches a dual-mode device.
The transmitter 610 can intermittently emit into the environment a message including a wake-up signal to the dual-mode device. The message transitions the dual-mode device to the high-energy mode. The transmitter 610 can transmit the message at regular intervals such as every minute, and/or the transmitter 610 can transmit messages when the collecting device 600 is within communication distance from the dual-mode device. To determine whether the collecting device 600 is within the communication distance from the dual-mode device, the locator 660 of the collecting device 600 can determine the geographic location of the collecting device 600. The collecting device 600 can retrieve from memory 650 a map 652 containing the location of the dual-mode devices. When the distance between the collecting device 600 and the closest dual-mode device is a predetermined factor of the maximum communication distance, the collecting device 600 can emit the message containing the wake-up signal. For example, if the maximum communication distance between the collecting device 600 and the dual-mode device is 100 m, then, the collecting device can start emitting the message when the distance between the collecting device 600 and the closest dual-mode device is 150 m. In this case, the predetermined factor is 1.5.
The processor 620 of the collecting device 600 can communicate with the locator 660 over bus 680 to obtain the geographic location of the collecting device 600. Further, the processor 620 can retrieve from memory 650 a table 654 associating one or more passwords with the geographic location. The table contains information regarding which passwords are used by the dual-mode devices surrounding the geographic location. Geographically varying the passwords to the dual-mode devices increases security of the whole system by preventing access to the whole network of dual-mode devices if only one password has been compromised. The processor 620 can create the message to send to the dual-mode device based on the password associated with the geographic location. Further, the processor 620 can guard against replay attacks by encoding a current time and a password to create the message, as described in this application.
The receiver 630 of the collecting device 600 receives the recorded data from the dual-mode device. The received data can be encrypted for security reasons. The transmitter 610 and the receiver 630 can be individual components, or can be parts of a single transceiver 640.
A transmitter, such as a network card 670 upon detecting an Internet connectivity transmits the recorded data from the collecting device 600 to a database 200 in
For example, the receiver 630 of the collecting device 600 can receive the recorded data from the dual-mode device including a dual-mode device ID 405 in
In step 710, the collecting device transitions multiple off-line dual-mode devices from the low-energy mode to the high-energy mode by sending a message to the plurality of off-line dual-mode devices. Generally, the sent message can reach a dual-mode device within 100 meter radius surrounding the collecting device.
The message can be intermittently transmitted to the dual-mode devices for example at a regular interval, or when the collecting device determines that there are dual-mode devices within a 200 meter radius surrounding the collecting device, as described in this application. The message can include a wake-up signal to the dual-mode to transition the dual-mode device to the high-energy mode. The message can include a password particular to the dual-mode device, so that the dual-mode device does not transition to the high-energy mode unless the password included in the message matches the password stored on the dual-mode device. By avoiding unnecessary transitioning to the high-energy mode, the dual-mode device preserves energy. Further, the security of the dual-mode device is enhanced because the dual-mode device does not share passwords with other dual-mode devices.
After the dual-mode device transitions to the high-energy mode, the collecting device receives data stored on the dual-mode device. Once the collecting device detects an Internet connectivity, the collecting device transmits the received data to a central database. In addition, the collecting device can record a time at which the data stored on the dual-mode device was received, and send the recorded time to the database. Based on the recorded time, and the knowledge of how frequently the dual-mode device records measurements, the computer hosting the database can calculate a time at which each measurement was made. For example, if the dual-mode device makes measurements every 5 minutes, there are 100 measurements, and the recorded time at which the collecting device received the data is T, the computer hosting the database can calculate that the last measurement was made within 4 min 59 sec of time T, the second to last measurement was made within 4 min 59 sec of time T−5 min, etc.
The data received by the collecting device can include a dual-mode device ID, an ID associated with the recorded data, and a value associated with the ID. The ID associated with the recorded data can include a project ID in the database, and the field ID in the database. The field ID in the database can be unique for each measurement, or can be the same for each measurement. The collecting device, using the table lookup, can map the received IDs into a project associated with a database, and an entry associated with the database. The collecting device can transmit the received data, the project and the entry from the collecting device to a database upon detecting an Internet connectivity.
The collecting device can guard against a replay attack by encoding a current time and a password associated with the dual-mode device to create the message. Replaying the message encoding the current time and the password at a time sufficiently removed from the current time (such as two minutes after the current time) does not to grant access to the dual-mode device.
The system disclosed here can further guard against a security risk by geographically varying a password. The collecting device can determine its geographic location, and retrieve from memory a table of passwords proximate to collecting device's geographic location, for example passwords within 200 meter of the collecting device. The passwords to the multiple dual-mode devices can vary geographically. Consequently, the collecting device creates a message using the table of relevant passwords. In addition, the collecting device can encode the password along with the current time, as described in this application.
In the example of
The computer system 800 can be the sensor 100, 110, 120 in
This disclosure contemplates the computer system 800 taking any suitable physical form. As example and not by way of limitation, computer system 800 may be an embedded computer system, a system-on-chip (SOC), a single-board computer system (SBC) (such as, for example, a computer-on-module (COM) or system-on-module (SOM)), a desktop computer system, a laptop or notebook computer system, an interactive kiosk, a mainframe, a mesh of computer systems, a mobile telephone, a personal digital assistant (PDA), a server, or a combination of two or more of these. Where appropriate, computer system 800 may include one or more computer systems 800; be unitary or distributed; span multiple locations; span multiple machines; or reside in a cloud, which may include one or more cloud components in one or more networks. Where appropriate, one or more computer systems 800 may perform without substantial spatial or temporal limitation one or more steps of one or more methods described or illustrated herein. As an example and not by way of limitation, one or more computer systems 800 may perform in real time or in batch mode one or more steps of one or more methods described or illustrated herein. One or more computer systems 800 may perform at different times or at different locations one or more steps of one or more methods described or illustrated herein, where appropriate.
The processor may be, for example, a conventional microprocessor such as an Intel Pentium microprocessor or Motorola power PC microprocessor. One of skill in the relevant art will recognize that the terms “machine-readable (storage) medium” or “computer-readable (storage) medium” include any type of device that is accessible by the processor.
The memory is coupled to the processor by, for example, a bus. The memory can include, by way of example but not limitation, random access memory (RAM), such as dynamic RAM (DRAM) and static RAM (SRAM). The memory can be local, remote, or distributed.
The bus also couples the processor to the non-volatile memory and drive unit. The non-volatile memory is often a magnetic floppy or hard disk, a magnetic-optical disk, an optical disk, a read-only memory (ROM), such as a CD-ROM, EPROM, or EEPROM, a magnetic or optical card, or another form of storage for large amounts of data. Some of this data is often written, by a direct memory access process, into memory during execution of software in the computer 800. The non-volatile storage can be local, remote, or distributed. The non-volatile memory is optional because systems can be created with all applicable data available in memory. A typical computer system will usually include at least a processor, memory, and a device (e.g., a bus) coupling the memory to the processor.
Software is typically stored in the non-volatile memory and/or the drive unit. Indeed, storing and entire large program in memory may not even be possible. Nevertheless, it should be understood that for software to run, if necessary, it is moved to a computer readable location appropriate for processing, and for illustrative purposes, that location is referred to as the memory in this paper. Even when software is moved to the memory for execution, the processor will typically make use of hardware registers to store values associated with the software, and local cache that, ideally, serves to speed up execution. As used herein, a software program is assumed to be stored at any known or convenient location (from non-volatile storage to hardware registers) when the software program is referred to as “implemented in a computer-readable medium.” A processor is considered to be “configured to execute a program” when at least one value associated with the program is stored in a register readable by the processor.
The bus also couples the processor to the network interface device. The interface can include one or more of a modem or network interface. It will be appreciated that a modem or network interface can be considered to be part of the computer system 800. The interface can include an analog modem, ISDN modem, cable modem, token ring interface, satellite transmission interface (e.g., “direct PC”), or other interfaces for coupling a computer system to other computer systems. The interface can include one or more input and/or output devices. The I/O devices can include, by way of example but not limitation, a keyboard, a mouse or other pointing device, disk drives, printers, a scanner, and other input and/or output devices, including a display device. The display device can include, by way of example but not limitation, a cathode ray tube (CRT), liquid crystal display (LCD), or some other applicable known or convenient display device. For simplicity, it is assumed that controllers of any devices not depicted in the example of
In operation, the computer system 800 can be controlled by operating system software that includes a file management system, such as a disk operating system. One example of operating system software with associated file management system software is the family of operating systems known as Windows® from Microsoft Corporation of Redmond, Wash., and their associated file management systems. Another example of operating system software with its associated file management system software is the Linux™ operating system and its associated file management system. The file management system is typically stored in the non-volatile memory and/or drive unit and causes the processor to execute the various acts required by the operating system to input and output data and to store data in the memory, including storing files on the non-volatile memory and/or drive unit.
Some portions of the detailed description may be presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or “generating” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the methods of some embodiments. The required structure for a variety of these systems will appear from the description below. In addition, the techniques are not described with reference to any particular programming language, and various embodiments may thus be implemented using a variety of programming languages.
In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine 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 machine may be a server computer, a client computer, a personal computer (PC), a tablet PC, a laptop computer, a set-top box (STB), a personal digital assistant (PDA), a cellular telephone, an iPhone, a Blackberry, a processor, a telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
While the machine-readable medium or machine-readable storage medium is shown in an exemplary embodiment to be a single medium, the term “machine-readable medium” and “machine-readable 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 the one or more sets of instructions. The term “machine-readable medium” and “machine-readable 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 machine and that cause the machine to perform any one or more of the methodologies or modules of the presently disclosed technique and innovation.
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 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 in a computer, cause the computer 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.
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, floppy and other removable disks, hard disk drives, optical disks (e.g., Compact Disk Read-Only Memory (CD ROMS), Digital Versatile Disks, (DVDs), etc.), among others, and transmission type media such as digital and analog communication links.
In some circumstances, operation of a memory device, such as a change in state from a binary one to a binary zero or vice-versa, for example, may comprise a transformation, such as a physical transformation. With particular types of memory devices, such a physical transformation may comprise a physical transformation of an article to a different state or thing. For example, but without limitation, for some types of memory devices, a change in state may involve an accumulation and storage of charge or a release of stored charge. Likewise, in other memory devices, a change of state may comprise a physical change or transformation in magnetic orientation or a physical change or transformation in molecular structure, such as from crystalline to amorphous or vice versa. The foregoing is not intended to be an exhaustive list in which a change in state for a binary one to a binary zero or vice-versa in a memory device may comprise a transformation, such as a physical transformation. Rather, the foregoing is intended as illustrative examples.
A storage medium typically may be non-transitory or comprise a non-transitory device. In this context, a non-transitory storage medium may include a device that is tangible, meaning that the device has a concrete physical form, although the device may change its physical state. Thus, for example, non-transitory refers to a device remaining tangible despite this change in state.
The foregoing description of various embodiments of the claimed subject matter has been provided for the purposes of illustration and description. It is not intended to be exhaustive or to limit the claimed subject matter to the precise forms disclosed. Many modifications and variations will be apparent to one skilled in the art. Embodiments were chosen and described in order to best describe the principles of the invention and its practical applications, thereby enabling others skilled in the relevant art to understand the claimed subject matter, the various embodiments, and the various modifications that are suited to the particular uses contemplated.
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.
Although the above Detailed Description describes certain embodiments and the best mode contemplated, no matter how detailed the above appears in text, the embodiments can be practiced in many ways. Details of the systems and methods may vary considerably in their implementation details, while still being encompassed by the specification. As noted above, particular terminology used when describing certain features or aspects of various embodiments should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects of the invention with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the specification, unless those terms are explicitly defined herein. Accordingly, the actual scope of the invention encompasses not only the disclosed embodiments, but also all equivalent ways of practicing or implementing the embodiments under the claims.
The language used in the specification has been principally selected for readability and instructional purposes, and it may not have been selected to delineate or circumscribe the inventive subject matter. It is therefore intended that the scope of the invention be limited not by this Detailed Description, but rather by any claims that issue on an application based hereon. Accordingly, the disclosure of various embodiments is intended to be illustrative, but not limiting, of the scope of the embodiments, which is set forth in the following claims.
This application claims priority to the U.S. provisional patent application Ser. No. 62/565,928 filed Sep. 29, 2017 which is incorporated herein by this reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62565928 | Sep 2017 | US |