METHODS, DEVICES, AND SYSTEMS FOR SCHEDULED SENSING
Disclosed is an apparatus and method for synchronization of sensing operations performed by a plurality of devices. The method may include collecting sensing capabilities of one or more connected devices that are communicably coupled with a central device. Each connected device may include one or more sensors, and the sensing capabilities may include at least sensor type and sensing interval for each sensor. The method may also include coordinating sensing operations performed by the central device and the one or more connected devices.
- 1. -30. (canceled)
- 31. A method for scheduled sensing, the method comprising:
transmitting, by a device, sensor information to a central device; receiving, by the device, a sensing schedule from the central device; and performing, by the device, a plurality of sensing operations according to the received sensing schedule, wherein the transmitted sensor information includes, for each of a plurality of sensors of the device, a type of the sensor and a sensing interval of the sensor, and wherein the plurality of sensors includes a first sensor and a second sensor, and wherein the sensing schedule indicates; a first interval between consecutive sensing times for the first sensor, and a second interval, which is different from the first interval, between consecutive sensing times for the second sensor.
- View Dependent Claims (32, 33, 34, 35, 36, 37, 38, 39, 40)
- 41. A device configured to perform scheduled sensing, the device comprising:
a plurality of sensors, the plurality of sensors including a first sensor and a second sensor; a memory configured to store sensor information; and a processor configured to; cause the device to transmit the sensor information to a central device; cause the device to receive a sensing schedule from the central device; and cause the device to perform a plurality of sensing operations according to the received sensing schedule, wherein the sensor information includes, for each of the plurality of sensors, a type of the sensor and a sensing interval of the sensor, and a first interval between consecutive sensing times for the first sensor, and
- View Dependent Claims (42, 43, 44, 45, 46, 47, 48, 49, 50)
- 51. A non-transitory computer readable storage medium including instructions that, when executed by a processor, cause the processor to perform a method for scheduled sensing, the method comprising:
causing a device to transmit sensor information to a central device; causing the device to receive a sensing schedule from the central device; and causing the device to perform a plurality of sensing operations according to the received sensing schedule, wherein the plurality of sensors includes a first sensor and a second sensor, and a first interval between consecutive sensing times for the first sensor, and
This application is a continuation of U.S. application Ser. No. 15/635,830, filed Jun. 28, 2017, titled “Method and System for Synchronization of Sensing Operations Performed by a Plurality of Devices,” which is incorporated by reference herein in its entirety for all purposes.
The subject matter disclosed herein relates generally to mobile device positioning systems and methods.
Mobile positioning technologies enable a mobile device to approximate its real world location. A mobile device, such as a mobile telephone, can utilizes one or more positioning techniques, such as global navigation satellite system (GNSS) positioning, wireless network based positioning (e.g., positioning based on wireless network access points (APs), based on cellular network transmitters, etc.), as well as other positioning techniques. Mobile devices are becoming more sophisticated by including multiple different types of sensors (e.g., GNSS sensors, Bluetooth sensors, barometers, light sensors, imaging sensors, etc.). Some positioning techniques enable the mobile device to use additional sensor readings collected by the device to enhance and/or replace the positioning techniques noted above.
Furthermore, the internet of things (IOT) continues to expand enabling a user to communicatively connect one or more devices to a central device. For example, a central device may establish a personal area network with a plurality of different devices including, for example, a smart watch, a fitness tracker, smart glasses, etc. Each of these devices may include their own sensor(s) for performing operations at the connected devices. For example, a fitness tracker may utilize an accelerometer to count steps, smart glasses may use an image sensor to capture images, a smart watch may capture access point signals to perform navigation, etc. Typically, the central device and the connected devices operate independently of each other when performing their respective tasks.
Methods and systems for a central device to manage synchronization of sensing of a plurality of connected devices are described. In one embodiment, the central device is mobile device, such as a mobile telephone, tablet computer, laptop computer, etc. Furthermore, the connected devices are also mobile devices periodically or continuously communicably coupled with the central device that can include one or more fitness trackers, smart watches, smart glasses, smart garments, medical devices, gaming devices, other wearable devices, etc. In embodiments, the central device may also be one of the connected devices with sufficient computing, memory, battery, and network resources to perform the processes discussed herein.
In one embodiment, central device 104 establishes a network connection, such as a Bluetooth, near field communication, ZigBee, wireless local area network, other network connection, or a combination of network connections, with each connected device 106. In one embodiment, when the wireless network connection with a connected device (e.g., connected device 106-1) is established by central device 104, central device 104 can query each device for its sensing capabilities as part of the network connection handshaking process. In another embodiment, each connected device supplies the central device 104 with its respective capabilities automatically upon the establishment of the network connection or in response to a request of the central device 104. As discussed herein, sensing capabilities can include, for example, the sensors available at each connected device (e.g., accelerometer, barometer, GNSS, image, etc.), a frequency of sensing for each sensor (e.g., 1 second, 10 seconds, 1 minute, etc.), a range of feasible sensing frequencies (e.g., periodic sensing between 5-100 seconds, periodic sensing between 12-20 seconds, etc.), configuration capabilities of each sensor (e.g., an indication as to whether a sensor can be deactivated, sensing frequency altered, etc.), as well as other sensor capabilities. As discussed in greater detail below, central device 104 collects each connected device'"'"'s sensor capabilities in order to enforce scheduled and coordinated sensing between each connected device 106 and the central device 104.
In one embodiment, central device 104 is capable of performing one or more positioning processes, such as a Global Navigation Satellite System (GNSS), Access Point (AP), peer-to-peer, and/or other positioning process, to determine a real-world location of central device 104. Furthermore, in additional to GNSS, AP signals, peer signals, or other signals, central device 104 may collect additional sensor data (e.g., imaging, barometric pressure, light sensors, Bluetooth signals, etc.) captured by the connected devices 106 in order to perform a hybrid positioning process that utilizes the additional sensor data to refine and/or otherwise enhance positioning determinations.
In one embodiment, central device 104 utilizes the collected sensing capabilities of the connected devices to generate a coordinated sensing schedule. In one embodiment, the coordinated sensing schedule is a combined and/or individual sensing schedule of the sensing operations to be performed by the various sensors of central device 104 and the sensors of the connected devices 106 so that a time at which sensor readings from the various sensors are obtained are coordinated. For example, if the central device 104 measures sensor readings for a sensor at a first interval 302, a connected device measures two different sensor readings at a second interval 304, and another connected device measures a sensor reading at an offset of the second interval 306, the sensing intervals and thus the sensor measurements are likely to be temporally misaligned as illustrated in the
In one embodiment, the central device 104 having collected the sensor capabilities (e.g., sensor types, measurement frequencies, etc.) performs a scheduling operation to align sensing operations that will be performed by the central device 104 and the one or more connected devices 106. In one embodiment, the alignment includes establishing a start time and interval of the sensing operations performed by each connected device 106. For example, central device 104 can perform scheduling that temporally aligns start times of the sensor measurements collected by each connected device 106 and sensor measurements collected by the central device 104, changes the interval for overlapping sensor reading types (e.g., to avoid duplicate measurements), turns off certain sensors from taking measurements based on one or more device conditions (e.g., battery low), adjusts intervals and/or connected device scanning duties based on devices being added or removed from the connected devices, as well as other adaptive sensor scheduling operations. One embodiment of a revised (e.g., aligned and redundancy removed) sensing schedule as imparted by central device 104 at each individual connected devices 106 is illustrated in
In embodiments, the sensing operations performed by the sensors at each device (e.g., the connected devices 106 and the central device 104) can be more closely time aligned to ensure the relevancy of each sensor when performing the positioning process. That is, even when a user of the central device 104 and the connected devices 106 is moving (e.g., user is walking, running, driving, etc.), the temporal alignment of when sensor measurements are taken ensures that the various measurements are taken at the same physical location. Furthermore, in embodiments, measurements taken by duplicate sensor types (e.g., duplicate measurement types in 304 and 306) can be eliminated by central device 104 to turn off, stagger, or otherwise reduce the redundant sensing (e.g., 314 and 316) to save power and/or computational resources at one or more of the connected devices 106.
In one embodiment, redundant sensor types can also be used to increase a resolution (or scanning frequency) of that sensor type without increasing overall power consumption of the central device 104 and connected devices 106. That is, a higher scanning rate can be achieved by staggering sensor operations performed by the same type of sensor without requiring either connected device to perform additional sensing operations (e.g., connected devices scan at lower rates to minimize power consumption, while the global scanning result is the faster rate attributable to the temporally staggered scanning of sensors of the same type). For example, otherwise redundant readings (e.g., as illustrated by sensor measurements 304 and 306) can be staggered by central device 104 when scheduling the sensing operations (temporally aligned, temporally staggered, and without removing redundancies) at the connected devices 106 to increase sensing rate to meet a positioning or other requirement as illustrated in
In embodiments, other scheduling operations may also be performed by central device 104. For example, if a desired sensing interval is 10 seconds, a first connected device 106-1 can perform periodic sensing operations within the range of 5-100 seconds, and a second connected device 106-2 can perform periodic sensing operations within the range of 1-20 seconds, then central device can distribute a schedule to the connected devices that causes periodic sensing at the desired interval. However, if a desired sensing interval is 10 seconds, a first connected device 106-1 can perform periodic sensing operations within the range of 5-100 seconds, and a second connected device 106-2 can perform periodic sensing operations within the range of 12-20 seconds, then central device can distribute a schedule to the connected devices that causes periodic sensing according to a schedule closest to the desired schedule, such as periodic scanning every 12 seconds.
In the embodiments discussed above, the scheduling provided by central device 104 and utilized by connected devices 106 when performing their respective sensing results in a near-zero latency between sensor measurements collected by different devices. Thus, the time aligned and coordinated sensor measurements minimize position error when central device 104 performs positioning using these measurements, and as discussed below, when a crowdsourcing server 108 utilizes the collected sensor measurements.
In one embodiment, the coordinated sensor readings collected by central device 104 are provided, by central device 104, to crowdsourcing server 108. In one embodiment, central device 104 and crowdsourcing server 108 are communicably coupled via network 104 (e.g., the Internet, a WAN, a LAN, or a combination of different networks) and utilize any of the standard protocols for exchanging communications. In one embodiment, crowdsourcing server 108 utilizes the sensor measurements collected by central device 104 to generate positioning assistance data based on the sensor readings and the central device'"'"'s 104 location when the readings were obtained. Because the various sensor readings are temporally aligned, and thus physical position of the sensors is the same, the sensor readings are much more valuable to crowdsourcing server 108 in terms of accuracy and reliability. For example, AP signal measurements collected by one or more connected devices 106 can be corroborated by GNSS measurements and/or positioning determinations made by central device 104. As another example, an AP based positioning determination made by central device 104 can be associated with barometric pressure measurements made by connected devices to refine an altitude associated with the corresponding AP signal measurements.
In embodiments, sensor readings may be collected by central device 104 and connected devices 106 for the purpose of performing crowdsourcing of sensor measurements. In embodiments, the combined sensor data may be explicitly turned on by the user to imitate data collection. In other embodiments, the combined sensor data may periodically be collected by central device 104 and transmitted to crowdsourcing server 108 in response to a user request made to central device 104. In either embodiment, the combined sensor measurements are collected and communicated to crowdsourcing server 108. When sensor readings are automatically collected for crowdsourcing purposes (e.g., periodically as specified by a user), lower power sensors (e.g., barometric, light, image, etc.) of the connected devices 106 may be rescheduled to align to the high powered sensing (e.g., GNSS) performed by central device 104. Similarly, for on-demand crowdsource sensor measurement collection at central device 104, high powered sensing (e.g., GNSS) can be scheduled to align with the lower power sensors of the connected devices 106.
In one embodiment, central device 210 is a system such as a mobile telephone, tablet computer, wearable device, controller in a motor vehicle, smart home controller, access point (e.g., a portable or stationary access point), or other type of computing device that would typically be proximately located or collocated with the connected device, and capable of performing the operations discussed herein. In embodiments, the central device 210 may include one or more processors 212, a memory 205, a display 220, an input/output controller 225, a network interface 204, and one or more sensor(s) 245 (e.g., GNSS, AP, barometric, temperature, light, imaging, etc. sensors). Central device 210 may also include a number of processing modules, which may be implemented as hardware, software, firmware, or a combination, such as the sensing scheduling manager 230 including adaptive scheduler 232, device profiler 234, scheduling interface 236, sensor data collector 238 and crowdsourcing manager 240. It should be appreciated that central device 210 may also include, although not illustrated, a user interface (e.g., keyboard, touch-screen, or similar devices), a power device (e.g., a battery), as well as other components typically associated with electronic devices. Network interface 204 may also be coupled to a number of wireless subsystems 215 (e.g., Bluetooth, WLAN, WiFi, Cellular, or other networks) to transmit and receive data streams through a wireless link. In one embodiment, wireless subsystem 215 communicatively couples central device 210 to a crowdsourcing server (e.g. crowdsourcing server 108 of
In one embodiment, connected device 250 is also a system, which may include one or more processor(s) 252, a memory 254, one or more sensor(s) 264 (e.g., barometric sensors, AP signal sensors, GNSS signal sensors, light sensors, temperature sensors, imaging sensors, accelerometers, gyroscopes, etc.), and a wireless subsystem, such as central device interface 260. Connected device 250 may also include a number of processing modules, which may be implemented as hardware, software, firmware, or a combination, such as sensor scheduler 262. It should be appreciated that connected device 250 may also include, although not illustrated, a user interface (e.g., keyboard, touch-screen, or similar devices), a power device (e.g., a battery), a display screen (e.g., an LCD display), as well as other components typically associated different types of connected devices (e.g., wearable devices, fitness trackers, gaming systems, health monitoring devices, etc.). Central device interface 260 (e.g., a Bluetooth, WiFi, WLAN, Cellular, or other communication interface) of connected device 250 utilizes a transceiver of wireless subsystem 270 to transmit and receive data, such as sensor measurement data, through a wireless link to/from central device 210.
In one embodiment, one or both of memory 205 and memory 254 may be coupled to a processor to store instructions for execution by the processors, such as processor(s) 212 and processor(s) 252. In some embodiments, memory 205 and memory 254 are non-transitory. Memory 205 and memory 254 may store one or more modules processing modules to implement embodiments described herein. It should be appreciated that the embodiments as will be hereinafter described may be implemented through the execution of instructions, for example as stored in memory or other element, by processor(s) 212 of central device 210, and/or other circuitry of central device 210, by processor(s) 252 of connected device 250, and/or other devices. Particularly, circuitry of central device 210 and connected device 250, including but not limited to processor(s) 212 and processor(s) 252, may operate under the control of a program, routine, or the execution of instructions to execute methods or processes in accordance with the aspects and features described herein. For example, such a program may be implemented in firmware or software (e.g. stored in memory 205 and/or memory 254) and may be implemented by processors, such as processor(s) 212 and/or processor(s) 252, and/or other circuitry. Further, it should be appreciated that the terms processor, microprocessor, circuitry, controller, etc., may refer to any type of logic or circuitry capable of executing logic, commands, instructions, software, firmware, functionality and the like.
In one embodiment, communication subsystems of central device 210 and connected device 250 establish a communication link (e.g., a wireless personal area network connection, a wireless local area network connection, a combination of networks, etc.) with one another. In one embodiment, during the establishment of the communications link, scheduling interface 236 of sensing scheduling manager 230 requests sensing capabilities from central device interface 260 as part of the networking handshaking and authentication process. In another embodiment, the sensing capabilities may also be gathered by scheduling interface 236 at any time, such as after the communication link is established between central device 210 and connected device 250. In either embodiment, sensor scheduler 262 of connected device 250 responds to the request with data indicative of the types of sensor(s) 264 that are available at connected device, a sensor measurement schedule for each of sensor(s) 264, what sensing parameters are configurable (e.g., whether sensor scheduling start times, frequency, usage, etc. can be adjusted), as well as other sensing capabilities. Device profiler 234 then stores a device specific sensing profile based on the sensing capabilities of connected device 250 in memory 205.
In one embodiment, adaptive scheduler 232 accesses the device specific sensing profile to generate a sensing schedule for connected device 250. As discussed herein, central device 210 may be communicably coupled with a plurality of different connected devices having a plurality of different and overlapping sensor types. Thus, adaptive scheduler 232 accesses all of the profiles of the connected devices, including the sensing profile of connected device 250 and central device 210, to determine what sensors are available, what are the sensing start times for each sensor, what are the sensing intervals for each sensor, as well as other sensing capabilities.
Adaptive schedule 232 utilizes this collected sensing capabilities data (e.g. the combined sensing capabilities of central device 210 and connected devices) to generate a schedule that coordinates the sensing performed by the connected devices and the central device. As discussed herein, the coordinated sensing schedule temporally aligns the start time of sensing operations performed by different sensors (e.g.,
The schedule is then distributed to the sensor schedulers of each connected device, including sensor scheduler 262 of connected device 250. In embodiments, the schedule is a global schedule generated by central device 210 to coordinate the sensing across each connected device when implemented by their respective sensor schedulers. In one embodiment, the same global schedule is distributed to each device. In another embodiment, adaptive scheduler 232 maintains a global schedule, but generates an individual schedule corresponding to each connected device, which when executed by the sensor schedulers of each connected device, achieves the global schedule generated by adaptive scheduler. In embodiments, global schedules may be periodically generated by adaptive scheduler 232 to revise an existing global schedule, or generate a new global schedule, to adapt to various conditions among the central device and one or more connected devices. For example, adaptive scheduler 232 can adapt a global sensor responsive to the addition of one or more new connected device(s), the removal of one or more existing connected device(s), device conditions that effect sensing capabilities (e.g., battery life, hardware failure, etc.), as well as other factors that impact global sensing. The periodically updated and/or generated schedules can be distributed to the connected devices, as discussed herein.
In one embodiment, sensor data collector 238 then collects data generated by the sensing performed by the sensors of the connected devices, including the sensor measurements generated by sensor(s) 264 of connected device. The collected sensor measurements, which are at least temporally aligned, are then stored in memory 205 as a collected group of sensor measurements. In one embodiment, central device 210 may use the collected/temporally aligned sensor measurements when performing a hybrid positioning process (e.g., a positioning process that utilizes the sensor readings to improve startup time of the process, improve accuracy of positing result obtained by the process, improve speed by which the process is performed, etc.).
In one embodiment, sensor data collector 238 and adaptive scheduler 232 may further adjust sensing scheduling for crowdsourcing sensor data collection. In one embodiment, sensor readings can be collected for crowdsourcing purposes on-demand (e.g., in response to a user request) or periodically (e.g., as configured and by permission of a user). In either embodiment, collected sensor measurements are provided by central device 210 to a crowdsourcing server (not shown) along with a location determination associated the collected sensor measurements. In one embodiment, the collected sensor measurements may be those collected according to the global schedule distributed by adaptive scheduler, and associated with an a crowdsourcing interval (e.g., sensor measurements are collected at interval i, and crowdsourcing data is provided every n intervals). However, in response to an on-demand request to collect sensor readings for crowdsourcing measurements, adaptive scheduler 232 delays the positioning determination (e.g. a high powered sensor operation) until an opportunistic future sensing interval. In one embodiment, the opportunistic future sensing interval can be an interval in which sensing, including GNSS, AP, or other high powered sensing, is already scheduled to occur. In another embodiment, the opportunistic future sensing interval can be an interval in which sensing is already scheduled to occur, but high powered GNSS, AP, or other sensing is not scheduled to occur, and instead the high powered sensing is triggered on an on-demand basis. In either embodiment, the positioning determination and associated collected and temporally aligned sensor measurements are stored in memory 205.
In one embodiment, crowdsourcing manager 240 accesses the collected/temporally aligned sensor measurements and communicates the measurements to a crowdsourcing server (not shown). The crowdsourcing server could then use the collected/temporally aligned sensor measurements when performing various crowdsourcing processes, such as AP fingerprinting, indoor map generation, WWAN cell localization, indoor visual feature localization, building floor determination, etc. Furthermore, because the collected sensor measurements are temporally aligned, the sensor measurements are much more valuable to the crowdsourcing server due to their increased accuracy. That is, for example, AP signal strength measurements associated and temporally aligned with a GNSS positioning determination and a barometric sensor measurement are more valuable when generating an indoor map by crowdsourcing server. As another example, imaging sensor data associated with positioning data would enable crowdsourcing server to supplement location determination services based on the imaging data (alone).
Processing logic then coordinates sensing operations performed by the central device and the one or more connected devices (processing block 404). In embodiments, the coordination temporally aligns the sensing operations of the central device, one or more connected devices, or a combination thereof. As discussed above, with respect to
Processing logic then distributes the schedule to the one or more connected devices causing the central device and the one or more connected devices to perform coordinated sensing operations according to the schedule (processing block 506). After the sensing is performed, processing logic collects data from the coordinated sensing operations performed by the one or more connected devices and the central device (processing block 508). In one embodiment, processing logic utilizes the collected sensor measurements to perform a positioning process (processing block 510), such as a hybrid positioning process using data collected from different sensing operations. For example, processing logic may utilize barometric pressure measurements when performing AP based positioning, use GNSS positioning with AP signal measurements to increase speed of a positioning determination, utilize WiFi signals during pedestrian dead reckoning to refine a position or increase time to position fix, utilizing WiFi, Bluetooth, or a combination of wireless signals during vision based positioning, while performing simultaneous localization and mapping using another positioning method (e.g., Wifi based, BlueTooth based, PDR based, etc.), as well as other positioning processes that utilize data collected from different types of sensors.
Processing logic generates a schedule where sensing start times of one or more of the sensors of one or more connected devices overlap with one or more sensing intervals of the central device (processing block 554). Furthermore, processing logic adjusts the schedule to remove and/or stagger redundant sensing operations performed with two or more sensors of the same type at different connected devices (processing block 556). In one embodiment, the sensing start times of the sensors of the connected devices are temporally aligned with a sensing start time of a sensing interval of central device (e.g.,
Processing logic collects crowdsourcing sensor readings that are temporally aligned according to a sensing schedule generated by the central device (processing block 604). As discussed herein the temporally aligned sensor readings may include the measurements taken by sensors associated with the crowdsourcing operation (e.g., sensors of specific types), and collected from various connected devices that performed the measurements. In one embodiment, the collection is performed on a fixed/configured interval (e.g., as set by a user or crowdsourcing application), or in response to a use command (e.g., an on demand sensor data collection). In one embodiment, for on-demand sensor measurement data collection, processing logic will delay one or more sensor measurements from occurring until a selected future interval of a distributed schedule. For example, a high powered GNSS sensing operation is delayed until a next appropriate sensing interval utilizing the sensor types needed for the crowdsourcing data gathering.
Processing logic then provides the collected and temporally aligned sensor measurements, and location data of the central device when sensor measurements were taken, to a crowdsourcing server (processing block 606). In embodiments discussed herein, the collected and temporally aligned sensor measurements are provided to the crowdsourcing server for the generation of assistance data based, at least in part, on the sensor measurements and the location data. Because the collected sensor measurements are temporally aligned with one another, they are more valuable to the crowdsourcing server since their various measurements can be associated with one another data (e.g., a barometric pressure measurement can be associated with a GNSS based location determination, AP signal strength measurements can be associated with a GNSS based location determination, an AP based location determination can be associated with imaging information, etc.). Furthermore, the various types of temporally associated sensor data enables generation of more accurate and more comprehensive assistance data.
It should be appreciated that when the devices discussed herein include mobile devices (e.g., central device and connected device(s)), that the mobile devices may communicate via one or more wireless communication links through a wireless network that are based on or otherwise support any suitable wireless communication technology. For example, in some aspects the mobile devices may associate with a network including a wireless network. In some aspects the wireless connections discussed herein form networks, which may comprise a body area network, a personal area network (e.g., an ultra-wideband network), a wireless local area network, as well as other types and/or combinations of networks. In some aspects the network may comprise a local area network or a wide area network. A wireless device may support or otherwise use one or more of a variety of wireless communication technologies, protocols, or standards such as, for example, CDMA, GSM, WCDMA, LTE, TD-SCOMA, TOMA, OFDM, OFDMA, WiMAX, and Wi-Fi. Similarly, a wireless device may support or otherwise use one or more of a variety of corresponding modulation or multiplexing schemes. A mobile wireless device may wirelessly communicate with other mobile devices, cell phones, wearable devices, other wired and wireless computers, Internet web-sites, etc.
The teachings herein may be incorporated into (e.g., implemented within or performed by) a variety of apparatuses (e.g., devices). For example, one or more aspects taught herein may be incorporated into a phone (e.g., a cellular phone), a personal data assistant (PDA), a tablet, a mobile computer, a laptop computer, a tablet, an entertainment device (e.g., a music or video device), a fitness device (e.g., a biometric sensor, a pedometer, etc.), a wearable device (e.g., a smartwatch), a smart system (e.g., a smart appliance, a smart automobile, a smart robot, or other smart device), or any other suitable device.
Those of skill in the art would understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
Those of skill would further appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the embodiments described herein.
The various illustrative logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
The steps of a method or algorithm described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a user terminal. In the alternative, the processor and the storage medium may reside as discrete components in a user terminal.
In one or more exemplary embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software as a computer program product, the functions may be stored on or transmitted over as one or more instructions or code on a non-transitory computer-readable medium. Computer-readable media can include both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A storage media may be any available media that can be accessed by a computer. By way of example, and not limitation, such non-transitory computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a web site, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of non-transitory computer-readable media.
The previous description is provided so that any person skilled in the art can make or use the embodiments described herein. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the described embodiments. Thus, the aspects and features described herein are not intended to be limited, but are to be accorded the widest scope consistent with the principles and novel features disclosed herein.