Abstract:
A computing device incorporates a user sensor to signal when a user is moving or within a specified proximity of the computing device. If the user is not present, the computing device will go into a low-power mode. A real-time clock is programmed to interrupt at user indicted event times and dates. If a queued event occurs, the computing device samples the user sensor and begins notification procedures if the user is present. If a queued event time occurs while the user is not present, then the computing device enters or stays in the low-power mode. If the user sensor indicates that the user is present, the computing device notifies the user of the pending event and any missed events. The computing device may require a user code before normal operation is activated following a transition to an indication that the user is present.

Description:
TECHNICAL FIELD 
   The present invention relates in general to methods and apparatus for signaling a computing device when to automatically activate and de-activate power saving operations. 
   BACKGROUND INFORMATION 
   The class of computers known as personal digital assistants (PDAS) and laptops are well known in the industry. These types of computer systems are portable, battery operated and may include date-book application programs used to remind their user about meetings, events, appointments, errands, etc. An example of a portable computing device to which the present invention applies is a Palm Pilot, manufactured by Palm, Inc. of Santa Clara, Calif. 
   Many standard personal computers (PCs) and battery operated computing devices typically go into a low-power consumption sleep mode when there is no user activity. Throughout this disclosure, these computers will be referred to as computing devices whether they are line powered PCs, battery operated laptops, palmtops or a PDA. Power saving strategies may be different in battery operated devices as opposed to line operated computing devices, but both have the goal of reducing energy consumption. 
   If date-book programs are in use in a computing device, it may be awakened from the low-power state at times programmed into its hardware clock circuit at which time notification procedures may be initiated to remind the user of a pending current date-book event. To remind the user of a pending date-book event, the computing device may display messages on an LCD screen, create sounds using audio circuits within the computing device, cause vibration by activating a motor with an off-center weight attached, or a combination of these techniques may be used. If the user responds to the notification procedure (alarm) (for example, by clearing a message from the display screen), then the computing device may queue the time of the next event into the clock circuit and return to the low-power state. However, if the user is not near the computing device when the alarm goes off, the appointment may be missed. 
   Computing devices such as PDAs typically program a notification alarm (alarm) to repetitively re-activate after a predetermined time interval (e.g., in another five minutes) and then go into the low power state. After some number of repetitions of activating the alarm (for example, after five attempts to remind the user), the computing device may stop presenting the alarm (in the interest of preserving batteries) until another program event, other than the missed event, becomes current. 
   The sub-systems required and actions taken during these notification procedures may require considerable energy for a battery operated device. Operating the back-light of an LCD display, running a motor and playing audio through a speaker are some of the most power consuming operations that a computing device performs. Therefore, in cases where the user may be away from the computing device for an extended period of time, the computing device will waste electrical energy by repeatedly attempting to remind the user of a pending event. In addition, the user may not see the reminder until the next time he activates the computing device for some unrelated purpose or until it is time for the next sequential event, both of which may be days later. 
   There is, therefore, a need for a method and apparatus which enables a computing device to conserve energy with event notification procedures when no user is present to receive the notification. 
   SUMMARY OF INVENTION 
   The present invention utilizes a user sensor which generates a position signal when a user is within a specified proximity of a computing device or is actually handling the computing device. If a user leaves the proximity of the computing device or if there is a prolonged period of user inactivity, the computing device goes into a low-power operation mode using standard methods or in response to the position signal indicating the user not present. If the user has stored the times and dates of events for which the user would like notification, these event times and dates are queued in a memory storage device. The queued events are compared to a real-time and date clock (real-time clock) to determine when a queued event time has arrived. A user that is present will be notified that the event time has occurred by audio, vibration or other notification procedures. However, if the user is not present and a queued event time arrives, these notification procedures are not activated. Optionally, the notification procedures may be activated one time in hopes that the user is within a hearing range and not repeated if the first notification is not acknowledged. The next queued event time is then compared against the real-time clock. If the user returns and is again indicated present, then the computing device will notify the user of the pending event and any missed events. The computing device may require the user to enter a user code before complete normal operation is activated following a cycle of the user sensor (user indicated present and then not present). The present invention improves upon previous proximity sensor operated power saving devices by controlling when and how a computing device returns to normal operation following a low-power mode. The procedures which the clock circuitry of the computing device uses to try to notify a user of a pending queued event are improved by embodiments of the present invention. The high-power consumption modes of notification are suspended or invoked less frequently unless there is a user within a positional signal indicated proximity to observe the notification procedures. 
   The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention. 

   
     BRIEF DESCRIPTION OF DRAWINGS 
     For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which: 
       FIG. 1  is a block diagram of system components of a computing device using a proximity or motion sensor according to embodiments of the present invention; and 
       FIG. 2  is a flow diagram of method steps used in embodiments of the present invention. 
   

   DETAILED DESCRIPTION 
   In the following description, numerous specific details are set forth to provide a thorough understanding of the present invention. However, it will be obvious to those skilled in the art that the present invention may be practiced without such specific details. In other instances, well-known circuits have been shown in block diagram form in order not to obscure the present invention in unnecessary detail. For the most part, details concerning timing considerations and the like have been omitted in as much as such details are not necessary to obtain a complete understanding of the present invention and are within the skills of persons of ordinary skill in the relevant art. 
   Refer now to the drawings wherein depicted elements are not necessarily shown to scale and wherein like or similar elements are designated by the same reference numeral through the several views. 
     FIG. 1  illustrates the major functional blocks of a computing device (in this case a PDA) wherein a motion sensor  108  is incorporated. Motion sensor  108  may comprise a simple set of electrical contacts that “make contact” whenever the computing device is moved in any direction. Other, more sophisticated implementations of motion sensor  108  may use proximity devices which provide an output signal in the presence of a user. In  FIG. 1 , a Central Processing Unit (CPU)  101  is connected over a system bus  110  to a number of subsystems, among them are memory  102 , I/O  103 , interrupt controller  104  and a real-time and date clock (real-time clock)  112 . Memory  102  includes the non-volatile memory that functions to hold both programs that are executed by the computing device and data (such as date-book entries) entered by the user. The I/O subsystem  103  provides a means for connecting various input and output components such as a display screen  105 , touch pad or keyboard  106 , application specific pushbuttons  107  and a motion or proximity sensor  108 . 
   In normal use, the CPU  101  receives input from the user via the touch pad or keyboard  106  regarding the dates and times of the events for which the user wishes a reminder. The information regarding these events is stored in memory  102 . A stored event program in memory  102  sorts through the list of events and queues the event for the first compare. The event program compares the current date and time from real-time clock  112  to the times of queued event times. When the time of the first queued event arrives, the CPU may display messages on display screen  105 , activate audio circuits and/or vibration components (not shown). 
   If the first queued event is sufficiently far in the future, it may warrant the program controlling the computing device to reduce power consumption. In preparation, the CPU  101  programs a register in the real-time clock  112  to send an interrupt signal  111  to interrupt controller  104  when the time of the future event arrives. The CPU may then reduce power consumption using a number of techniques, such as reducing clock speed or executing a halt instruction to normally operating system programs. 
   When the time of the first queued event arrives, the real-time clock  112  sends the interrupt signal  111  to the interrupt controller  104  which causes the CPU  101  to resume normal execution. However, embodiments of the present invention sample the motion or proximity sensor  108  to determine if the user is present before notifying the user by visual, audible or tactile means. If the user does not respond, then the CPU  101  may determine that the device should go into low power again. This time, the CPU  101  programs registers in the I/O interface  103  to send an I/O interrupt  109  to interrupt controller  104  whenever the motion sensor  108  detects movement of the device. If the user is not present, the CPU  101  may program the real-time clock  112  with a new interrupt time for the near future and the computing device may re-enter the low-power state. Alternatively, the computing device may invoke the visual, audible or tactile notification procedures for only the first occurrence of an interrupt for a given event. CPU  101  may then set a flag in memory that prevents future interrupts for the same event from invoking the notification procedures. 
   Once CPU  101  re-enters the low-power state, the computing device may be awakened either by the presence of the user, as indicated by motion sensor  108 , or by a real-time clock interrupt  111 . If the computing device is awakened by the real-time clock interrupt  111 , it first determines if the user is present before invoking notification procedures. In either of the cases, if the user is present, the computing device presents the first missed event and then may present subsequent queued events in order of their occurrences. 
   The same action is taken if motion sensor  108  senses actual motion of the computing device or motion indicating a user is in proximity of the computing device and no response to a reminder was obtained from the user. Alternatively, when a proximity sensor is used, the CPU  101  may program the real-time clock to repetitively interrupt at programmed short time intervals (e.g., every five minutes) and the computing device will re-enter the low-power consumption state. When the short interval has passed, the CPU  101  may be returned to the normal operational power mode when it samples the output of the proximity sensor  108  through the I/O subsystem  103  to determine if the computing device appears to be in the presence of the user. If it is determined that the user is not present, another short interval wait is programmed into the real-time clock and the computing devices return to the low-power consumption state without having activated high-power consuming devices. On the other hand, if the proximity sensor indicates that the user is present, the computing device attempts to remind the user of the events as is currently done. If the user is present but does not respond, the computing device may go back to the low-power state. 
   Electrical devices capable of sensing motion, acceleration or proximity are well known within the industry. In its simplest form, a motion sensor  108  may be a mercury switch (wherein a pool of liquid mercury shorts across two electrical contacts when the switches moved to a certain angle, likewise, any making or breaking of contacts would be indicative of a motion). Because of health hazards associated with liquid mercury, this type of device is rarely used. However, other types of sensors exist that provide an electrical output based upon the inertial effects, sensing a change in IR light reaching the computing device, changes in capacitance around a computing device and so on. 
     FIG. 2  is a flow chart of method steps according to embodiments of the present invention. In step  201 , the CPU  101  of a computing device  100  receives user updated event times and dates for which a user desires notification and queues the earliest future event for setting an interrupt from real-time clock  112 . In step  202 , a test is done to determine if the motion sensor  108  indicates that the user is present. If the result of the test in step  202  is YES, then normal operation is continued in step  203  where a test is done to determine if there has been a predetermined period of user inactivity. If the result of the test in step  203  is NO, then a return is taken to step  201  waiting for motion sensor  108  to indicate that the user is not present. If the result of the test in step  202  is NO, then in step  204  the earliest queued event time and date are programmed to generate a real-time clock  112  interrupt. In step  205 , the computing device  100  goes into or stays in the low-power mode. In step  206 , a test is done to determine if a queued event time has arrived. If the result of the test in step  206  is NO, then in step  207  a test is done to determine if a motion sensor based interrupt has been received. This would indicate that the user has returned prior to the particular queued event time. If the result of the test in step  207  is NO, then a branch is taken back to step  205 . If the result of the test in step  207  is YES, then a branch is taken to step  211  where the user may be notified of any missed events. If the result of the test in step  206  is YES, then in step  208  a test done to determine if motion sensor  108  indicates that the user is present. If the result of the test in step  208  is NO, then in step  209  the real-time clock  112  is programmed to interrupt at the next pending event time or at a next reminder time. A return is then taken to step  205  where the computing device  100  either enters or stays in the low-power state. If the result of the test in step  208  is YES, then in step  210  the user notification procedures are activated for the current arrived event time. The user is also notified of any missed event(s) in step  211 . In step  212 , a test is done to determine if the user acknowledged the event notifications. If the result of the test in step  212  is NO, then step  209  is executed. If the result of the test in step  212  is YES, then in step  213  the pending event list is updated by removing the acknowledged events from the event list and a return is taken back to step  201 . 
   Although the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the present invention as defined by the appended claims.