A key design consideration of mobile devices is battery life. Mobile devices employ various optimizations and features to extend battery life. Some such optimizations and features are enabled for low charge states of a battery to extend the amount of time the remaining charge can be used to power the mobile device. However, various hardware or software modules of the mobile devices are power hungry and drain unnecessary power irrespective of the battery charge state.
Actuating a hardware input/output interface on a mobile device (e.g., by pressing a button or touch screen icon) causes an interrupt service routine/hardware to generate an interrupt that causes a mobile device processor to execute a function associated with the hardware input/output interface (the “hardware function”). For example, the volume buttons on a smartphone—pressing an up-volume button generates an interrupt causing the processor to jump to an address (stored in a register) of an interrupt service routine that the processor executes to prompt execution of the hardware function to increase a volume setting. If the volume setting is already at a maximum, further presses of the button interrupt the processor to perform the volume-up hardware function but the processor cannot change the setting. Even though no action is taken, the button press has nevertheless interrupted the processor. The processor also likely implements ancillary functions related to the hardware function, such as turning on a display. Generating and processing the interrupts and implementing the hardware function and ancillary functions requires processor cycles and power for components, such as the display, which results in power consumption from a battery of the mobile device. When settings are at a limit, responding to the interrupt causes needless cycling of the processor and battery drain.
Various aspects may include computing devices and methods for implementing smart handling of input/output interrupts on the computing device, such as a mobile computing device. Various aspects may include determining whether an adjusted feature setting level of a feature setting equals a first feature setting level limit, and storing a null or no operation instruction at a first location of a hardware input/output register corresponding with an interrupt service routine associated with hardware input/output interrupt in response to determining that the adjusted feature setting level equals the first feature setting level limit. Some aspects may further include changing data stored at the first location of the hardware input/output register to the interrupt service routine address in response to determining that the adjusted feature setting level no longer equals the first feature setting level limit.
In some aspects, changing data stored at the first location of the hardware input/output register to the interrupt service routine address in response to determining that the adjusted feature setting level no longer equals the first feature setting level limit may include determining whether the adjusted feature setting level moved away from a complement feature setting limit that is on an opposite end of a permissible range of the feature setting level from the first feature setting level limit, and storing an address for a complement interrupt service routine corresponding to the feature setting in a second location of the hardware input/output register corresponding to interrupts for the complement interrupt service routine in response to determining that the adjusted feature setting level moved away from the complement feature setting limit.
Some aspects may further include retrieving data stored at the first location of the hardware input/output register, performing no operation if a null or no operation instruction is stored in the first location of the hardware input/output register, retrieving the interrupt service routine from memory using an interrupt service routine address if stored in the first location of the hardware input/output register, and executing the interrupt service routine to adjust a setting to the adjusted feature setting level. Such aspects may further include executing an ancillary function in conjunction with executing the interrupt service routine.
Various aspects may further include a computing device, such as a mobile computing device, having a processor with a hardware input/output register in which the processor is configured to perform operations of any of the methods summarized above. Various aspects may further include a computing device, such as a mobile computing device, having means for performing functions of any of the methods summarized above. Various aspects may further include a non-transitory processor-readable medium on which are stored processor-executable instructions configured to cause a processor of a computing device, such as a mobile computing device, to perform operations of any of the methods summarized above.
The accompanying drawings, which are incorporated herein and constitute part of this specification, illustrate example aspects of various aspects, and together with the general description given above and the detailed description given below, serve to explain the features of the claims.
The various aspects will be described in detail with reference to the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. References made to particular examples and implementations are for illustrative purposes, and are not intended to limit the scope of the claims.
Various aspects may include methods and computing devices implementing such methods for smart handling of input/output (I/O) interrupts for mobile computing device settings after reaching a limit. Various aspects may include modifying address registers for calling an interrupt service routine for changing a computing device setting when the setting is at the limit in order to reduce interrupts when further setting adjustments are not possible due to the limit. Various aspects may include modifying an address register for calling an interrupt service routine for changing the mobile computing device settings when the setting is at the limit to reinitiate interrupts for changing settings to levels within the limits. Limiting interrupts when settings are at a limit may conserve power in computing devices by enabling processors to remain in a low-power state in situations in which activating a processor to process an interrupt service routine would result in no change in settings.
The terms “computing device” and “mobile computing device” are used interchangeably herein to refer to any one or all of cellular telephones, smartphones, personal or mobile multi-media players, personal data assistants (PDA's), laptop computers, tablet computers, convertible laptops/tablets (2-in-1 computers), smartbooks, ultrabooks, netbooks, palm-top computers, wireless electronic mail receivers, multimedia Internet enabled cellular telephones, mobile gaming consoles, wireless gaming controllers, and similar personal electronic devices that include a memory, and a programmable processor. The term “computing device” may further refer to stationary computing devices including personal computers, desktop computers, all-in-one computers, workstations, super computers, mainframe computers, embedded computers, servers, home theater computers, and game consoles. Various aspects are applicable to any computing device including a hardware input/output interface, but may be of particular usefulness in mobile computing devices in which power conservation is a key design consideration due to the power storage limitations of batteries. Therefore, various aspects are described with reference to mobile computing devices. However, such references are not intended to be limiting.
A mobile computing device may have a hardware input/output interface (such as a button or a touch screen) that a user may touch or press to implement an associated function of the mobile computing device (referred to herein as a “hardware function”). A hardware function may be designated or assignable to a hardware input/output interface. A hardware function may include changing a setting level of a feature of the mobile computing device, such as a volume level, a vibration level, a brightness level, etc. In addition to implementing the hardware function associated with an actuated hardware input/output interface, a hardware function may include and/or trigger an ancillary function, typically configured to indicate to the user that the hardware function is implemented. An ancillary function may include a visual indicator via activation of a display or notification light (e.g., a light emitting diode), an audible indicator via activation of a speaker, and/or a haptic indicator via activation of a vibration motor.
To implement a hardware function and an associated ancillary function, an actuated hardware input/output interface may generate and transmit a hardware input/output interrupt signal to a dedicated hardware input/output processor (e.g., a dedicated processor or a processor executing a hardware input/output software routine) or a hardware input/output circuit. In response to receiving the hardware input/output interrupt signal, the processor or circuit may retrieve an address from a hardware input/output register for an interrupt service routine associated with actuating the hardware input/output interface. The interrupt service routine address may be used by a processor to retrieve and execute the interrupt service routine, which may generate an interrupt (hereinafter “hardware function interrupt”) to send to a processor to signal for implementation of the hardware function.
Generating and processing the interrupts and implementing the functions requires resources of the mobile computing device, such as processor cycles and power. In situations in which the processor is in a low power state, the processing of such interrupts and executing the interrupt service routine involves transitioning the processor to an active or high-power state to complete routine, thus increasing power consumption. Thus, generating and processing a hardware function interrupt and implementing an ancillary function may occur regardless of whether the hardware function affects implementation of a mobile computing device feature. Execution of the interrupt service routine and hardware function in response to actuation of hardware input/output interface may not change a mobile computing device setting or feature if that setting or feature is already at a maximum or minimum setting level. The actions of generating and processing the interrupts and implementing the functions that result in no effect to the implementation of a mobile computing device feature may be considered a waste of the resources of the mobile computing device.
An interrupt service routine may be configured to determine a current feature setting level of a mobile computing device feature. The current feature setting level may be set in response to a previous actuation of the hardware input/output interface, a previous actuation of another hardware input/output interface, or a state of the mobile computing device. In various aspects, the interrupt service routine may be configured to compare the current feature setting level to a feature setting level limit to determine whether the current feature setting level is at the feature setting level limit. This comparison may be performed after or during an adjustment to the feature setting level, or periodically such as part of an overhead routine. In response to determining that the current feature setting level is at the level limit (e.g., upon adjusting the feature setting level to the limit), the interrupt service routine may set the hardware input/output register normally storing the address of the interrupt service routine to a value that prevents execution of the interrupt service routine, such as a null value or an address to a no operation (NoOP) instruction. With the input/output register normally storing a null value or NoOP instruction, the next press of the same hardware input will not result in the interrupt service routine being called. In response to determining that the current feature setting level is not at the level limit, the address of the interrupt service routine may be stored in the hardware input/output register so that the interrupt service routine functions in a conventional manner, responding to a hardware input by generating and sending a hardware input/output interrupt that causes a hardware function to adjust the feature setting level of the mobile computing device to an adjusted feature setting level. For example, in a mobile computing device implementing various aspects, a user pressing a volume up button may result in increasing the volume on the mobile computing device until the volume reaches the maximum level or limit, after which further presses of the volume up button do not trigger the interrupt service routine for increasing volume, resulting in no change in volume and no activation of an ancillary function, such as turning on the display. If a volume down button is then pressed, the volume down interrupt service routine will reduce the volume setting level below the maximum, and may restore the address of the up-volume interrupt service routine in the up-volume input register so that volume will be increased the next time the up-volume button is pressed.
The term “system-on-chip” (SoC) is used herein to refer to a set of interconnected electronic circuits typically, but not exclusively, including a processing device, a memory, and a communication interface. A processing device may include a variety of different types of processors 14 and processor cores, such as a general purpose processor, a central processing unit (CPU), a digital signal processor (DSP), a graphics processing unit (GPU), an accelerated processing unit (APU), a subsystem processor of specific components of the computing device, such as an image processor for a camera subsystem or a display processor for a display, an auxiliary processor, a single-core processor, and a multicore processor. A processing device may further embody other hardware and hardware combinations, such as a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), other programmable logic device, discrete gate logic, transistor logic, performance monitoring hardware, watchdog hardware, and time references. Integrated circuits may be configured such that the components of the integrated circuit reside on a single piece of semiconductor material, such as silicon.
An SoC 12 may include one or more processors 14. The computing device 10 may include more than one SoC 12, thereby increasing the number of processors 14 and processor cores. The computing device 10 may also include processors 14 that are not associated with an SoC 12. Individual processors 14 may be multicore processors as described below with reference to
The memory 16 of the SoC 12 may be a volatile or non-volatile memory configured for storing data and processor-executable code for access by the processor 14. The computing device 10 and/or SoC 12 may include one or more memories 16 configured for various purposes. One or more memories 16 may include volatile memories such as random access memory (RAM) or main memory, or cache memory. These memories 16 may be configured to temporarily hold a limited amount of data received from a data sensor or subsystem, data and/or processor-executable code instructions that are requested from non-volatile memory, loaded to the memories 16 from non-volatile memory in anticipation of future access based on a variety of factors, and/or intermediary processing data and/or processor-executable code instructions produced by the processor 14 and temporarily stored for future quick access without being stored in non-volatile memory.
Some or all of the components of the computing device 10 may be arranged differently and/or combined while still serving the functions of the various aspects. The computing device 10 may not be limited to one of each of the components, and multiple instances of each component may be included in various configurations of the computing device 10.
The multicore processor may have a plurality of homogeneous or heterogeneous processor cores 200, 201, 202, 203. A homogeneous multicore processor may include a plurality of homogeneous processor cores. The processor cores 200, 201, 202, 203 may be homogeneous in that, the processor cores 200, 201, 202, 203 of the multicore processor 14 may be configured for the same purpose and have the same or similar performance characteristics. For example, the multicore processor 14 may be a general purpose processor, and the processor cores 200, 201, 202, 203 may be homogeneous general purpose processor cores. The multicore processor 14 may be a GPU or a DSP, and the processor cores 200, 201, 202, 203 may be homogeneous graphics processor cores or digital signal processor cores, respectively. The multicore processor 14 may be a custom hardware accelerator with homogeneous processor cores 200, 201, 202, 203.
A heterogeneous multicore processor may include a plurality of heterogeneous processor cores. The processor cores 200, 201, 202, 203 may be heterogeneous in that the processor cores 200, 201, 202, 203 of the multicore processor 14 may be configured for different purposes and/or have different performance characteristics. The heterogeneity of such heterogeneous processor cores may include different instruction set architecture, pipelines, operating frequencies, etc. An example of such heterogeneous processor cores may include what are known as “big.LITTLE” architectures in which slower, low-power processor cores may be coupled with more powerful and power-hungry processor cores. In similar aspects, an SoC (for example, SoC 12 of
Each of the processor cores 200, 201, 202, 203 of a multicore processor 14 may be designated a private cache 210, 212, 214, 216 that may be dedicated for read and/or write access by a designated processor core 200, 201, 202, 203. The private cache 210, 212, 214, 216 may store data and/or instructions, and make the stored data and/or instructions available to the processor cores 200, 201, 202, 203, to which the private cache 210, 212, 214, 216 is dedicated, for use in execution by the processor cores 200, 201, 202, 203. The private cache 210, 212, 214, 216 may include volatile memory as described herein with reference to memory 16 of
The multicore processor 14 may further include a shared cache 230 that may be configured to read and/or write access by the processor cores 200, 201, 202, 203. The private cache 210, 212, 214, 216 may store data and/or instructions, and make the stored data and/or instructions available to the processor cores 200, 201, 202, 203, for use in execution by the processor cores 200, 201, 202, 203. The shared cache 230 may also function as a buffer for data and/or instructions input to and/or output from the multicore processor 14. The shared cache 230 may include volatile memory as described herein with reference to memory 16 of
In the example illustrated in
A hardware input/output interface 302, 304 may be a component of a mobile computing device 300 with which a user may interact. The hardware input/output interface 302, 304 may include a button 302, a touch screen 304, a device connector (not shown), an audio sensor (e.g., a microphone), a gesture sensor (e.g., a light sensor) (not shown), a motion sensor (e.g., accelerometer or gyroscope) (not shown), a wireless signal receiver (e.g., an antenna 26 in
The hardware input/output interface 302, 304 may be configured to generate a hardware input/output interrupt signal in response to the user interaction with the hardware input/output interface 302, 304. For example, a physical user interaction with the hardware input/output interface 302, 304 may cause a circuit to generate an electrical signal as the hardware input/output interrupt signal. As another example, physical user interaction with the hardware input/output interface 302, 304 may cause a bit in a status register to be set or reset. The hardware input/output interface 302, 304 may be configured to generate a hardware input/output interrupt signal having various qualities that may indicate qualities of the user interaction. Such qualities of the hardware input/output interrupt signal may include qualities of an electrical signal and or data relating to the qualities of the user interaction, including current, voltage, duration, pressure, location, direction, speed, frequency, touch patterns, voice commands, gestures, movements of the mobile computing device 300, connections of peripheral devices, etc. The hardware input/output interface 302, 304 may be electrically connected to a hardware input/output processor 310, 312, and may be configured to transmit the hardware input/output interrupt signal to the hardware input/output processor 310, 312.
The hardware input/output processor 310, 312 (e.g., HW I/O processor 1310, and HW I/O processor N 312) (e.g., the processor 14 in
In various aspects, a hardware input/output processor 310, 312 may be configured to interpret and respond to any number and/or quality of hardware input/output interrupt signals. The hardware input/output processor 310, 312 may interpret a hardware input/output interrupt signal to correspond to an interrupt service routine that implements an associated hardware function and respond to the hardware input/output interrupt signal based on the corresponding interrupt service routine. A hardware function may include increasing and/or decreasing a feature setting level, and/or setting a feature setting level to a designated level. Examples of feature setting levels may include a volume level, a vibration level, a brightness level, a camera zoom setting, etc.
In various aspects, different hardware input/output interrupt signals and qualities of hardware input/output interrupt signals may correspond to different interrupt service routines for different hardware functions. For example, pressing a button 302 for no longer than a first duration may correspond to a first interrupt service routine for a first designated increase in a feature setting level, but pressing the button 302 for longer than first duration (e.g., for at least a second duration longer than the first duration) may correspond to a second interrupt service routine for a second designated increase in the feature setting level greater than the first designated increase.
In various aspects, different combinations of hardware input/output interrupt signals and qualities of hardware input/output interrupt signals may correspond to different interrupt service routines for different hardware functions. In other words, different hardware input/output interrupt signals and qualities of hardware input/output interrupt signals combinations (e.g., current, voltage, duration, pressure, location, direction, speed, frequency, touch patterns, voice commands, gestures, movements of the mobile computing device 300, connections of peripheral devices, etc.) may correspond to different interrupt service routines for different hardware functions. For example, a single press of a button 302 during a designated period may correspond to the first interrupt service routine for the first designated increase, and multiple presses of the button 302 during the designated period may correspond to the second interrupt service routine for the second designated increase. As a further example, connecting a peripheral audio device (e.g., wired and/or wireless headphones) to the mobile device 300 via the hardware input/output interface 302, 304 may generate input/output interrupt signals with qualities that may identify the peripheral audio device. The input/output interrupt signals with such qualities may correspond to an interrupt service routine for setting the feature setting level to a designated level.
The hardware input/output processor 310, 312 may be configured to retrieve an address for an interrupt service routine corresponding to the hardware function associated with hardware input/output interrupt signal or combination of hardware input/output interrupt signals. The hardware input/output processor 310, 312 may be coupled to a hardware input/output register 314, 316 from which the address for the interrupt service routine may be retrieved. The interrupt service routine address may be for a location in the memory 318 and/or for a location in a local memory (e.g., the private cache 210, 212, 214, 216, the shared cache 230 in
In various aspects, the hardware input/output processor 310, 312 may be programmed to correlate a specific hardware input/output interrupt signal or combination of hardware input/output interrupt signals with an interrupt service routine for a hardware function. From a user perspective, the programming may correlate a hardware input/output interface 302, 304 with a hardware function for a mobile computing device feature. For example, an area of a touch screen 304 may be configured to display a variable adjuster 306 (e.g., a slider, a track bar, a dial, etc.) and/or soft buttons 308a, 308b. The touch screen 304 may be configured to generate the hardware input/output interrupt signal including the area of the touch screen 304 at which the user interaction occurred. In response to the hardware input/output interrupt signal, the hardware input/output processor 310, 312 may interpret that the hardware input/output interrupt signal indicates that the user interaction occurred at the area of the touch screen 304 corresponding to a displayed item. The hardware input/output processor 310, 312 may be programmed to correlate the hardware input/output interrupt signal indicating that the user interaction occurred at the area of the touch screen 304 corresponding to a displayed item with a specific interrupt service routine for a hardware function. Based on the programming, the hardware input/output processor 310, 312 may respond to the hardware input/output interrupt signal by retrieving and implementing the interrupt service routine associated with the area of the touch screen 304 corresponding to the displayed item.
For example, a user interaction moving a current position of the variable adjuster 306 to the right or touching a soft button 308a may result in a hardware input/output interrupt signal correspond to an interrupt service routine for implementing a hardware function for increasing a mobile computing device feature (e.g., volume) setting level. A user interaction moving a current position of the variable adjuster 306 to the left or touching soft button 308b may result in a hardware input/output interrupt signal correspond with an interrupt service routine for implementing a hardware function for reducing the feature setting level. The hardware input/output processor 310, 312 may be configured to retrieve an address for the interrupt service routine corresponding to the hardware input/output interrupt signal indicated in the area of the touch screen 304 corresponding to the displayed item.
The hardware input/output register 314, 316 (e.g., an HW I/O register 1314 and/or an HW I/O register N 316) (e.g., the private cache 210, 212, 214, 216, the shared cache 230 in
A designated location of the hardware input/output register 314, 316 may correspond to a specific interrupt service routine. The hardware input/output register 314, 316 may be electrically connected to any number of hardware input/output processors 310, 312. For example, the hardware input/output register 314 may be electrically connected to a single hardware input/output processor 310. The hardware input/output register 314 may be configured to store addresses for the interrupt service routines corresponding to the hardware functions and/or the associated hardware input/output interrupt signals or combination of hardware input/output interrupt signals received by the hardware input/output processor 310. The hardware input/output register 316 may be electrically connected to multiple hardware input/output processors 310, 312. The hardware input/output register 316 may be configured to store addresses for the interrupt service routines corresponding to the hardware functions and/or the associated hardware input/output interrupt signals or combination of hardware input/output interrupt signals received by the hardware input/output processors 310, 312.
In various aspects, the hardware input/output register 314, 316 may be programmable, and the hardware input/output processor 310, 312 may be configured to change the stored addresses for the interrupt service routines in the hardware input/output register 314, 316. The hardware input/output processor 310, 312 may change a stored address for an interrupt service routine to a Null value and/or to an address corresponding to a no operation instruction. Replacing the stored address for the interrupt service routine with the Null value and/or to the address corresponding to a no operation instruction may prevent execution of the interrupt service routine. The hardware input/output processor 310, 312 may also reload the address for the interrupt service routine in the hardware input/output register 314, 316 when the feature setting is changed such that the setting is no longer equal to the limit. Reloading the address for the interrupt service routine into the hardware input/output register 314, 316 enables execution of the interrupt service routine the next time the hardware input is touched or otherwise activated by a user.
In various aspects, the hardware input/output processor 310, 312 may track a current feature setting level. The current feature setting level may be set in response to a previous actuation of the hardware input/output interface, a previous actuation of another hardware input/output interface, or a state of the mobile computing device. For example, a current feature setting level for volume may be set by a previous actuation of a volume up or down button, or by connection of headphones resulting in setting the volume to a designated level, such as a volume determined to be safe for listening. In another example, a current feature setting level for screen brightness may be set in response to a low power state of the mobile computing device 300 resulting in setting the screen brightness to a designated level, such as a brightness determined to reduce power draw from a battery of the mobile computing device 300. In various aspects, the hardware input/output processor 310, 312 may also track an adjusted feature setting level. The adjusted feature setting level may be the current feature setting level updated in response to an actuation of the hardware input/output interface, an actuation of another hardware input/output interface, or a state of the mobile computing device.
In various aspects, the hardware input/output processor 310, 312 may compare the current feature setting level and a feature setting level limit or threshold, which may be a feature maximum or minimum for the mobile computing device feature. The outcome of the comparison of the current feature setting level and the feature setting level limit or threshold may affect the implementation of smart handling of hardware input/output interrupts as described further herein.
In various aspects, the hardware input/output processor 310, 312 may compare the adjusted feature setting level and a feature setting level limit or threshold. The hardware input/output processor 310, 312 may be configured to change the stored address for an interrupt service routine to a Null value and/or to an address corresponding to a no operation instruction in response to the adjusted feature setting level equaling a feature setting level limit or threshold.
In various aspects, the hardware input/output processor 310, 312 may compare the current feature setting level and to a complement feature setting level limit or threshold, which may be a feature setting level that is on an opposite end of a permissible range of the feature setting level from the first feature setting level limit at or beyond which the feature setting level has no effect on the mobile computing device feature. In various aspects, the feature setting level limit or threshold and the complement feature setting level limit or threshold may be at opposite ends of a permissible range of feature setting levels and beyond which further hardware inputs will not affect the mobile computing device feature setting level. The hardware input/output processor 310, 312 may be configured to change a Null value and/or an address corresponding to a no operation instruction to the address for the complement interrupt service routine in response to the current feature setting level not equaling a complement feature setting level limit or threshold.
In the various aspects described herein, various implementations of comparisons between a current feature setting level and a feature setting level limit or threshold, between an adjusted feature setting level and a feature setting level limit or threshold are considered, and between a current feature setting level and a complement feature setting level limit or threshold. Such, implementations may include comparisons for which the current and/or adjusted feature setting levels equal the feature setting level limit or threshold and/or the complement feature setting level limit or threshold. For the sake of brevity and ease of explanation, the terms “limit” and “threshold” are also used interchangeably herein.
The hardware input/output processor 310, 312 may be further configured to retrieve the interrupt service routine from the location in the memory 318 and/or the location in the local memory of the hardware input/output processor 310, 312 specified by the retrieved address for an interrupt service routine. The hardware input/output processor 310, 312 may be electrically connected to the memory 318 and/or the location in the local memory, and may access the memory 318 and/or the location in the local memory to retrieve the interrupt service routine.
The hardware input/output processor 310, 312 may execute the retrieved interrupt service routine and generate a hardware function interrupt configured to prompt the processor 14 to implement the hardware function corresponding to the interrupt service routine. In various aspects, the interrupt service routine may correspond to the hardware function and to ancillary functions that may be executed by the processor 14 in connection with executing the hardware functions. In various aspects, an ancillary function may include a visual indicator via activation of a display or notification light (e.g., a light emitting diode), an audible indicator via activation of a speaker, and/or a haptic indicator via activation of a vibration motor. The hardware input/output processor 310, 312 may be electrically connected to the processor 14, and may transmit the hardware function interrupt to the processor 14.
The processor 14 may be configured to receive the hardware function interrupt, and, in response to the hardware function interrupt, pause execution of a current process being executed by the processor 14 to implement the hardware function correlated with the hardware function interrupt. In various aspects, like the hardware input/output processor 310, 312 and the hardware input/output interrupts, the processor 14 may be configured to interpret the hardware function interrupt to determine which hardware function is correlated with the hardware function interrupt and/or from where to retrieve the hardware function. In various aspects, the processor 14 may also be configured to interpret the hardware function interrupt to determine which ancillary functions are correlated with the hardware function interrupt and/or from where to retrieve the ancillary functions. In various aspects, the ancillary functions may be included in code for the hardware function and/or triggered by code for the hardware function. The processor 14 may be electrically connected to the memory 318 and/or a local memory (e.g., the private cache 210, 212, 214, 216, the shared cache 230 in
The memory 318 (e.g., the memory 16, 24 in
The various aspects described herein with reference to
In response to receiving one or a combination of hardware input/output interrupt signals, a hardware input/output processors may determine from the hardware input/output interrupt signal(s) a corresponding register location 402, 404, 406, 408 in the hardware input/output register 400. The processing device may access the corresponding register location 402, 404, 406, 408 and retrieve the data stored at the corresponding register location 402, 404, 406, 408. In various aspects, the corresponding register location 402, 404, 406, 408 may store an address to an interrupt service routine corresponding to the actuation of the hardware input/output interface and the hardware input/output interrupt signal(s). The hardware input/output processors may use the address to the interrupt service routine to retrieve and implement the interrupt service routine. When adjusted according to various aspects, the corresponding register location 402, 404, 406, 408 may store a Null value. The hardware input/output processors may handle the Null value by moving to a next instruction. When adjusted according to various aspects, the corresponding register location 402, 404, 406, 408 may store an address to a no operation instruction. The hardware input/output processors may use the address to the operation instruction to retrieve and implement the operation instruction. Storing a Null value and/or an address to a no operation instruction at a register location 402, 404, 406, 408 may prevent implementation of an interrupt service routine corresponding to the register location 402, 404, 406, 408.
Whether a register location 402, 404, 406, 408 stores an address to a corresponding interrupt service routine, a Null value, and/or an address to a no operation instruction may depend on a current feature setting level and/or an adjusted feature setting level of a feature setting for the mobile computing device feature associated with a hardware function, which is associated with the interrupt service routine corresponding to the register location 402, 404, 406, 408. A hardware input/output processor may track and compare current and/or adjusted feature setting levels with a feature setting level limit and/or a complement feature setting level limit. As described, based on the comparisons, the hardware input/output processor may change the address of an interrupt service routine stored in the register location 402, 404, 406, 408 to a Null value and/or to an address to a no operation instruction when the current or adjusted feature setting level equals the feature setting level threshold. For example, the data stored in the register locations 404, 406, shown in
A user may actuate the hardware input/output interface 500, and in response to the actuation, the hardware input/output interface 500 may generate and transmit 506 a hardware input/output interrupt signal to the hardware input/output processor 502. In various aspects, the hardware input/output interrupt signal may be configured to indicate actuation of the hardware input/output interface 500. In various aspects, the hardware input/output interrupt signal may not include any information identifying the hardware input/output interface 500, and the hardware input/output processor 502 may be configured to identify the hardware input/output interface 500 as the source of the hardware input/output interrupt signal. For example, the hardware input/output processor 502 may identify the source of the hardware input/output interrupt signal by receiving the hardware input/output interrupt signal at a pin associated with the hardware input/output interface 500. The hardware input/output processor 502 may also identify an interrupt service routine corresponding to the hardware input/output interrupt signal in a similar manner. In various aspects, the hardware input/output interrupt signal may include qualities and/or information that may be used by the hardware input/output processor 502 to identify the hardware input/output interface 500 as the source of the hardware input/output interrupt signal and/or to identify an interrupt service routine corresponding to the hardware input/output interrupt signal. As described herein, such qualities and/or information may include current, voltage, duration, pressure, location, direction, speed, frequency, touch patterns, voice commands, gestures, movements of the mobile computing device (e.g., mobile computing device 10, 300 in
The hardware input/output processor 502 may analyze 508 the hardware input/output interrupt signal. In various aspects, analyzing 508 the hardware input/output interrupt signal may include interpreting the hardware input/output interrupt signal to identify the source hardware input/output interface 500, identify the interrupt service routine corresponding to the hardware input/output interrupt signal and the location in the hardware input/output register 504 corresponding to the interrupt service routine. Analyzing 508 the hardware input/output interrupt signal may include comparing the current feature setting level to the feature setting level limit and/or the complement feature setting level limit. Analyzing 508 the hardware input/output interrupt signal may include updating the current and/or adjusted feature setting levels to reflect the actuation of the hardware input/output interface 500 and/or implementation of a hardware function. In various aspects, the hardware input/output processor 502 may track and update the adjusted and/or current feature setting levels on its own or without using and/or waiting for an actual mobile device setting level tracked and/or set by the processor 14. In various aspects, the current feature setting level may be modified to provide the adjusted feature setting level, and the adjusted feature setting level may be used to update the current feature setting level. Analyzing 508 the hardware input/output interrupt signal may include comparing the adjusted feature setting level to the feature setting level limit.
When the comparison of the current feature setting level to the complement feature setting level limit indicates that the current feature setting level is not at the complement feature setting level limit, no changes may be made to the data stored at the location in the hardware input/output register 504 associated with a complement interrupt service routine.
When the comparison of the current feature setting level to the feature setting level limit indicates that the current feature setting level does not equal the feature setting level limit, the hardware input/output processor 502 to retrieve 510 data stored at a location in the hardware input/output register 504 associated with an interrupt service routine. In various aspects, the hardware input/output processor 502 may retrieve 512 the address for the interrupt service routine, a Null value, and/or an address for a no operation instruction.
In the example illustrated in
In response to receiving the hardware function interrupt, the processor 14 may interrupt or pause any process currently executing on the processor 14 and retrieve 518 a hardware function (i.e., code and/or data for executing the hardware function) associated with the interrupt service routine from the memory 318. The processor 14 may execute 520 the retrieved hardware function. In various aspects, the processor 14 may also retrieve an ancillary function (i.e., code and/or data for executing the ancillary function) associated with the interrupt service routine or with the hardware function, from the memory 318. The processor 14 may execute the retrieved ancillary function. Executing 520 the hardware function may result in changing a feature setting level so the mobile device feature is implemented differently than before the change to the mobile device feature setting level. In various aspects, the actual mobile device setting level may be used to update the adjusted and/or current feature setting levels.
The example illustrated in
A user may actuate the hardware input/output interface 500, and in response to the actuation, the hardware input/output interface 500 may generate and transmit 506 a hardware input/output interrupt signal to the hardware input/output processor 502. The hardware input/output processor 502 may analyze 508 the hardware input/output interrupt signal.
In some aspects, when the comparison of the current feature setting level to the feature setting level limit indicates that the current feature setting level does not equal the feature setting level limit, the hardware input/output processor 502 may retrieve 510 data stored at a location in the hardware input/output register 504 associated with an interrupt service routine.
The hardware input/output processor 502 may retrieve 510 the address for the interrupt service routine, and may use the address for the interrupt service routine to retrieve 512 the interrupt service routine (i.e., code and/or data for executing the interrupt service routine) from the memory 318. The hardware input/output processor 502 may execute 514 the interrupt service routine, generating a hardware function interrupt configured to prompt the processor 14 to implement the hardware function associated with the interrupt service routine. The hardware input/output processor 502 may transmit 516 the hardware function interrupt to the processor 14.
When a comparison of the current feature setting level to the complement feature setting level limit indicates that the current feature setting level does not equal the complement feature setting level limit, no changes may be made to data stored at a location in the hardware input/output register 504 associated with a complement interrupt service routine. When a comparison of the current feature setting level to the complement feature setting level limit indicates that the current feature setting level equals the complement feature setting level limit, the hardware input/output processor 502 may modify 522 the data stored at the location in the hardware input/output register 504 associated with the complement interrupt service routine. In various aspects, modifying 522 the data stored at the location in the hardware input/output register 504 may include changing a Null value and/or an address for a no operation instruction to an address for a complement interrupt service routine.
In the example illustrated in
In response to receiving the hardware function interrupt, the processor 14 may interrupt or pause any process currently being executed by the processor 14 and retrieve 518 a hardware function (i.e., code and/or data for executing the hardware function) associated with the interrupt service routine from the memory 318. The processor 14 may execute 520 the retrieved hardware function. In various aspects, the processor 14 may also retrieve an ancillary function (i.e., code and/or data for executing the ancillary function), associated with the interrupt service routine or with the hardware function, from the memory 318. The processor 14 may execute the retrieved ancillary function.
The example illustrated in
A user may actuate the hardware input/output interface 500, and in response to the actuation, the hardware input/output interface 500 may generate and transmit 506 a hardware input/output interrupt signal to the hardware input/output processor 502. The hardware input/output processor 502 may analyze 508 the hardware input/output interrupt signal.
In the example illustrated in
Updating the adjusted feature setting level may be accomplished in any manner so that the adjusted feature setting level does not equal the feature setting level limit. In various aspects, updating the adjusted feature setting level may be accomplished by incrementing or decrementing the current feature setting level by an incremental amount or value within the feature setting level limit. In various aspects, updating the adjusted feature setting level may be accomplished by setting the adjusted feature setting level to a value that does not equal the feature setting level limit.
When a comparison of the adjusted feature setting level to the feature setting level limit indicates that the adjusted feature setting level does not equal the feature setting level limit, the hardware input/output processor 502 to modify 524 the data stored at the location in the hardware input/output register 504 associated with an interrupt service routine. In various aspects, modifying 524 the data stored at the location in the hardware input/output register 504 may include changing a Null value and/or an address for a no operation instruction to an address for the interrupt service routine.
The hardware input/output processor 502 may retrieve 510 the address for the interrupt service routine, and may use the address for the interrupt service routine to retrieve 512 the interrupt service routine (i.e., code and/or data for executing the interrupt service routine) from the memory 318. The hardware input/output processor 502 may execute 514 the interrupt service routine, generating a hardware function interrupt configured to prompt the processor 14 to implement the hardware function associated with the interrupt service routine. The hardware input/output processor 502 may transmit 516 the hardware function interrupt to the processor 14.
When a comparison of the current feature setting level to the complement feature setting level limit indicates that the current feature setting level does not equal the complement feature setting level limit, no changes may be made to data stored at a location in the hardware input/output register 504 associated with a complement interrupt service routine. When a comparison of the current feature setting level to the complement feature setting level limit indicates that the current feature setting level equals the complement feature setting level limit, the hardware input/output processor 502 to modify 522 the data stored at the location in the hardware input/output register 504 associated with the complement interrupt service routine. In various aspects, modifying 522 the data stored at the location in the hardware input/output register 504 may include changing a Null value and/or an address for a no operation instruction to an address for a complement interrupt service routine.
In response to receiving the hardware function interrupt, the processor 14 may interrupt or pause any process currently being executed by the processor 14 and retrieve 518 a hardware function (i.e., code and/or data for executing the hardware function) associated with the interrupt service routine from the memory 318. The processor 14 may execute 520 the retrieved hardware function. In various aspects, the processor 14 may also retrieve an ancillary function (i.e., code and/or data for executing the ancillary function), associated with the interrupt service routine or with the hardware function, from the memory 318. The processor 14 may execute the retrieved ancillary function.
A user may actuate the hardware input/output interface 500, and in response to the actuation, the hardware input/output interface 500 may generate and transmit 506 a hardware input/output interrupt signal to the hardware input/output processor 502. The hardware input/output processor 502 may analyze 508 the hardware input/output interrupt signal.
In the example illustrated in
Updating the adjusted feature setting level may be accomplished in any manner so that the adjusted feature setting level equals the feature setting level limit. In various aspects, updating the adjusted feature setting level may be accomplished by incrementing or decrementing the current feature setting level so that it equals the feature setting level limit. In various aspects, updating the adjusted feature setting level may be accomplished by setting the adjusted feature setting level to a value that equals the feature setting level limit.
When a comparison of the adjusted feature setting level to the feature setting level limit indicates that the adjusted feature setting level equals the feature setting level limit, the hardware input/output processor 502 to modify 524 the data stored at the location in the hardware input/output register 504 associated with an interrupt service routine. In various aspects, modifying 524 the data stored at the location in the hardware input/output register 504 may include changing a Null value and/or an address for a no operation instruction to a Null value and/or an address for a no operation instruction. In various aspects, this result may forego making any changes the data stored at the location in the hardware input/output register 504 associated with an interrupt service routine.
In various aspects, the hardware input/output processor 502 may be configured to recognize whether the hardware function corresponding to the hardware input/output interrupt signal is configured to change the actual feature setting level in a direction that would result in the adjusted feature setting level not equaling the feature setting level limit. In such aspects, the hardware input/output processor 502 may forego updating the adjusted feature setting level.
The hardware input/output processor 502 may retrieve 510 the Null value and/or the address for the no operation, and may use the Null value and/or the address for the no operation instruction to retrieve 512 the no operation instruction (i.e., code and/or data for executing the no operation instruction) from the memory 318. The hardware input/output processor 502 may handle the Null value and/or execute 514 the no operation instruction.
In block 602, the processing device may sense a hard input/output interface actuation. For example, a user may interact with a hardware input/output interface (e.g., the hardware input/output interface 302, 304, 500 in
In block 604, the processing device may generate a hardware input/output interrupt signal. In various aspects, the hardware input/output interrupt signal may be a generic signal that may be interpreted by another processing device, such as a hardware input/output processor (e.g., the hardware input/output processor 310, 312, 502 in
Various aspects may be implemented in a number of different software and/or hardware routines. An example of one method 610 of implementing smart handling of input interrupts is illustrated in
In block 612, the processing device receiving an input interrupt may wake up or pause other work in order to perform operations corresponding to the received input.
In block 614, the processing device may obtain data stored in a register location corresponding to the received input interrupt. The data stored may be an address for the interrupt service routine corresponding to the received interrupt, but in some circumstances, may be a no value or a no operation instruction. In this operation, the processing device may access the register location that is associated with the particular input interrupt that was received. In some implementations, the received interrupt may identify the register location that the processor access.
In block 616, the processing device may use the address obtained from the register location to obtain the corresponding interrupt service routine from memory, and then execute the interrupt service routine to adjust a feature setting level corresponding to the received input interrupt. For example, if a user pressed a button associated with increasing volume on the mobile computing device (an “up-volume” button), the register location corresponding to the received input interrupt (i.e., the interrupt generated from the button press) may store the address for a service routine that causes the processor to increase the volume level.
If the data obtained from the register location included a null value or a no operation (NoOP) instruction, the processor may terminate processing of the interrupt in block 616. Thus, no operations associated with adjusting feature setting levels or executing associated services (e.g., turning on the display) will be performed in this situation in block 616.
In determination block 618, the processing device may determine whether the adjusted feature setting level is equal to a limit corresponding to the feature. For example, if the user pressed the up-volume button and in response the processing device increase the volume one increment, the processing device may determine whether the adjusted volume is equal to the maximum volume level.
In response to determining that the adjusted feature setting level is equal to the limit corresponding to the feature (i.e., determination block 618=“Yes”), the processing device may store a null value or a no operation instruction to the register corresponding to the received input interrupt in block 620. As described, doing so will cause the processing device take no action the next time the same input interrupt is received as described for block 616.
Additionally, or in response to determining that the adjusted feature setting level is not equal to the limit corresponding to the feature (i.e., determination block 618=“No”), the processing device may determine whether adjusting the feature setting level changed or moved the level away from a complement feature setting limit in determination block 622. As described, a complement feature setting limit may be a limiting value on the feature setting level that is at an opposite end of a range of permissible settings for the corresponding feature. For example, if the received input interrupt was associated with an up-volume input, then the complement feature setting limit would be the minimum volume setting level. Similarly, the complement feature setting limit for the minimum volume setting level would be the maximum volume setting level. Thus, if the user pressed a button associated with increasing volume on the mobile computing device and in response the processing device increased the volume, the processing device may determine that the adjusted volume is now greater than the minimum volume level. This is because the up-volume interrupt service routine will move the volume level away from the minimum volume level if the volume level was previously at the minimum. Conversely, if the user pressed a button associated with decreasing volume on the mobile computing device and in response the processing device decreased the volume, the processing device may determine that the adjusted volume is now less than the maximum volume level.
In response to determining that adjusting the feature setting level changed the level away from the complement limit (i.e., determination block 622=“Yes”), the processing device may restore the address for the complement interrupt service routine in the register location corresponding to the complement interrupt (i.e., the complement of the received interrupt) in block 624. For example, if the processing device increased the volume level and the previous volume setting level was at the minimum (i.e., the complement limit of the up-volume limit), the processing device may store the address for the down-volume service routine in the register address associated with down-volume interrupts. This restores the down-volume service routine to operation for the next down-volume button press because increasing the volume setting level ensured that volume can later be decreased (i.e., the volume setting is greater than the minimum value).
Having restored the complement interrupt service routine to the register or in response to determining that the adjusted feature setting level did not change the level away from the complement limit (i.e., determination block 622=“No”), the processing device may end the processing of the received input interrupt.
The operations in blocks 618 through 624 may be included as part of interrupt service routines or may be implemented as part of normal routines for processing input interrupts.
In block 702, the processing device may receive the hardware input/output interrupt signal. In determination block 704, the processing device may determine whether the current feature setting level equals a feature setting level limit. As discussed herein, the feature setting level limit may be a value for which implementing a hardware function to set the feature setting level to a value beyond the feature setting level limit may not affect implementation of the mobile computing device feature.
In response to determining that the current feature setting level equals a feature setting level limit (i.e., determination block 704=“Yes”), the processing device may determine whether the adjusted feature setting level equals the feature setting level limit in optional block 706. In various aspects, it may not be necessary to determine whether the adjusted feature setting level equals the feature setting level limit in block 706 for aspects in which the processing device may identify how the hardware function may change the feature setting level. For example, a hardware function may not change the feature setting level that is already equaling the feature setting level limit, or may change the feature setting level to further equal the feature setting level limit. In such aspects, it may be unnecessary to determine whether the adjusted feature setting level equals the feature setting level limit in block 706 because there is no question that the adjusted feature setting level will also equal the feature setting level limit. In various aspects, determine whether the adjusted feature setting level equals the feature setting level limit in optional block 706 may be implemented as described further herein with reference to the method 900 illustrated in
In block 708, the processing device may retrieve data from a location of the interrupt service routine address in a hardware input/output register (e.g., hardware input/output register 314, 316, 400, 504 in
In optional block 710, the processing device may retrieve the no operation instruction (i.e., code and/or data for the no operation instruction) from the memory. In various aspects, the processing device may not retrieve the no operation instruction when the processing device retrieves the Null value from the location in the hardware input/output register.
In block 712, the processing device may handle the Null value and/or the no operation instruction. In various aspects, the processing device may handle the Null value by proceeding to a next instruction in an instruction queue. In various aspects, the processing device may execute the no operation instruction.
In optional block 714, the processing device may update the current feature setting level. In various aspects, the current feature setting level may be updated to reflect a change in feature setting level associated with actuating the hardware input/output interface. In various aspects, it may not be necessary to update the current feature setting level because the hardware function is not implemented to change the feature setting level.
In response to determining that the current feature setting level does not equal a feature setting level limit (i.e., determination block 704=“No”), the processing device may retrieve the interrupt service routine address from a location in the hardware input/output register for an interrupt service routine associated with the hardware input/output interrupt signal in block 716. The processing device may retrieve the interrupt service routine address in block 716 in a similar manner to retrieving data from a location of the interrupt service routine address in the hardware input/output register for the interrupt service routine associated with the hardware input/output interrupt signal in block 708.
In block 718, the processing device may retrieve the interrupt service routine (i.e., code and/or data for the interrupt service routine) from the interrupt service routine address in the memory.
In block 720, the processing device may execute the interrupt service routine retrieved from the interrupt service routine address in the memory.
In block 722, the processing device may generate a hardware function interrupt from the execution of the interrupt service routine. In various aspects, the hardware function interrupt may be configured to prompt another processing device (e.g., the processor 14 in
In block 724, the processing device may determine whether the adjusted feature setting level equals the feature setting level limit. In various aspects, determine whether the adjusted feature setting level equals the feature setting level limit, in block 724, may be implemented as described further herein with reference to the method 900 in
In determination block 802, the processing device may determine whether the current feature setting level equals a complement feature setting level limit. As discussed herein, the complement feature setting level limit may be a feature setting level at or beyond which the feature setting level has no effect on the mobile computing device feature. The complement feature setting level may be at an opposite end of a spectrum of feature setting levels as the feature setting level limit.
In response to determining that the current feature setting level equals a complement feature setting level limit (i.e., determination block 802=“Yes”), the processing device may set a location in the hardware input/output register (e.g., hardware input/output register 314, 316, 400, 504 in
In response to determining that the current feature setting level does not equal a complement feature setting level limit (i.e., determination block 802=“No”), the processing device may implement any of blocks 704, 716-724, or 902 depending on which of these blocks has not yet been implemented. In such an instance, the current feature setting level not equaling the complement feature setting level limit may indicate that the feature setting level was set to within the limit prior to the actuation of the hardware input/output interface. The location in the hardware input/output register may already be set the complement interrupt service routine address, and no change to the location in the hardware input/output register may be needed in response to actuation of the hardware input/output interface.
In block 902, the processing device may update an adjusted feature setting level. In various aspects, updating the adjusted feature setting level may be accomplished by incrementing or decrementing the current feature setting level so that it equals the feature setting level limit. In various aspects, such as implementing the method 900 as part of block 724 in
In determination block 904, the processing device may determine whether the adjusted feature setting level equals a feature setting level limit.
In response to determining that the adjusted feature setting level equals a feature setting level limit (i.e., determination block 904=“Yes”), the processing device may set a location in the hardware input/output register (e.g., hardware input/output register 314, 316, 400, 504 in
In response to determining that the adjusted feature setting level does not equal a feature setting level limit (i.e., determination block 904=“No”), the processing device may implement block 708 in
In block 1002, the processing device may receive a hardware function interrupt. As described herein, the hardware function interrupt may be configured to prompt the processing device to retrieve and implement a hardware function. In various aspects, the hardware function interrupt may be a generic interrupt that may be interpreted by the processing device on a basis of an assignment of a pin of the processing device to process hardware function interrupts from a designated other processor, such as a hardware input/output processor (e.g., hardware input/output processor 310, 312, 502 in
In block 1004, the processing device may interrupt a process currently being executed buy the processing device. In various aspects, the processing device may effectively pause execution of the current process until completion of the hardware function corresponding to the hardware function interrupt. The processing device may store a state of execution of the current process and/or data for executing the current process for later continuation of execution of the current process, such as, upon completion of the hardware function.
In block 1006, the processing device may retrieve the hardware function. As discussed herein, the processing device may identify the hardware function and/or an address in the memory for the hardware function from the hardware function interrupt. In various aspects, the hardware function interrupt may contain data for identifying the hardware function, and/or the address for the hardware function in the memory. In various aspects, the processing device may use the data for identifying the hardware function to identify the hardware function, and use the identification of the hardware function to obtain the address of the hardware function from a record associating the hardware function and the address of the hardware function in the memory. The processing device may use the address for the hardware function in memory to retrieve the hardware function (i.e., code and/or data for executing the hardware function). In various aspects, the hardware function interrupt may similarly identify and/or be used to identify an ancillary function, and may retrieve the ancillary function (i.e., code and/or data for executing the ancillary function).
In block 1008, the processing device may execute the hardware function and any ancillary function. In various aspects, the processing device may execute the hardware function and any ancillary function using the code and/or data for each of the hardware function and any ancillary function retrieved from the memory. In various aspects, executing the hardware function may result in calling and executing the ancillary functions.
The various aspects (including, but not limited to, aspects described above with reference to
The mobile computing device 1100 may have one or more radio signal transceivers 1108 (e.g., Peanut, Bluetooth, ZigBee, Wi-Fi, RF radio) and antennae 1110, for sending and receiving communications, coupled to each other and/or to the processor 1102. The transceivers 1108 and antennae 1110 may be used with the above-mentioned circuitry to implement the various wireless transmission protocol stacks and interfaces. The mobile computing device 1100 may include a cellular network wireless modem chip 1116 that enables communication via a cellular network and is coupled to the processor.
The mobile computing device 1100 may include a peripheral device connection interface 1118 coupled to the processor 1102. The peripheral device connection interface 1118 may be singularly configured to accept one type of connection, or may be configured to accept various types of physical and communication connections, common or proprietary, such as Universal Serial Bus (USB), FireWire, Thunderbolt, or PCIe. The peripheral device connection interface 1118 may also be coupled to a similarly configured peripheral device connection port (not shown).
The mobile computing device 1100 may also include speakers 1114 for providing audio outputs. The mobile computing device 1100 may also include a housing 1120, constructed of a plastic, metal, or a combination of materials, for containing all or some of the components described herein. The mobile computing device 1100 may include a power source 1122 coupled to the processor 1102, such as a disposable or rechargeable battery. The rechargeable battery may also be coupled to the peripheral device connection port to receive a charging current from a source external to the mobile computing device 1100. The mobile computing device 1100 may also include a physical button 1124 for receiving user inputs. The mobile computing device 1100 may also include a power button 1126 for turning the mobile computing device 1100 on and off.
The various aspects (including, but not limited to, aspects described above with reference to
Computer program code or “program code” for execution on a programmable processor for carrying out operations of the various aspects may be written in a high level programming language such as C, C++, C#, Smalltalk, Java, JavaScript, Visual Basic, a Structured Query Language (e.g., Transact-SQL), Perl, or in various other programming languages. Program code or programs stored on a computer readable storage medium as used in this application may refer to machine language code (such as object code) whose format is understandable by a processor.
The foregoing method descriptions and the process flow diagrams are provided merely as illustrative examples and are not intended to require or imply that the operations of the various aspects must be performed in the order presented. As will be appreciated by one of skill in the art the order of operations in the foregoing aspects may be performed in any order. Words such as “thereafter,” “then,” “next,” etc. are not intended to limit the order of the operations; these words are simply used to guide the reader through the description of the methods. Further, any reference to claim elements in the singular, for example, using the articles “a,” “an” or “the” is not to be construed as limiting the element to the singular.
The various illustrative logical blocks, modules, circuits, and algorithm operations described in connection with the various aspects 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 operations 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 claims.
The hardware used to implement the various illustrative logics, logical blocks, modules, and circuits described in connection with the aspects 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. Alternatively, some operations or methods may be performed by circuitry that is specific to a given function.
In one or more aspects, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or code on a non-transitory computer-readable medium or a non-transitory processor-readable medium. The operations of a method or algorithm disclosed herein may be embodied in a processor-executable software module that may reside on a non-transitory computer-readable or processor-readable storage medium. Non-transitory computer-readable or processor-readable storage media may be any storage media that may be accessed by a computer or a processor. By way of example but not limitation, such non-transitory computer-readable or processor-readable media may include RAM, ROM, EEPROM, FLASH memory, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessed by a computer. 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 are also included within the scope of non-transitory computer-readable and processor-readable media. Additionally, the operations of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a non-transitory processor-readable medium and/or computer-readable medium, which may be incorporated into a computer program product.
The preceding description of the disclosed aspects is provided to enable any person skilled in the art to make or use the claims. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects and implementations without departing from the scope of the claims. Thus, the present disclosure is not intended to be limited to the aspects and implementations described herein, but is to be accorded the widest scope consistent with the following claims and the principles and novel features disclosed herein.
Number | Name | Date | Kind |
---|---|---|---|
5825674 | Jackson | Oct 1998 | A |
20110113164 | Venkatsuresh et al. | May 2011 | A1 |
20120262592 | Rabii | Oct 2012 | A1 |
20130019117 | Michalak et al. | Jan 2013 | A1 |
20130254563 | Culbert et al. | Sep 2013 | A1 |
20150220464 | Heisswolf et al. | Aug 2015 | A1 |
20170262392 | Tamura | Sep 2017 | A1 |