Patent Publication Number: US-7904739-B2

Title: Managing a power state for a peripheral

Description:
BACKGROUND 
     Many electronic devices such as computers and printers can automatically enter “sleep” modes when idle. Devices such as laptop computers can quickly be placed in a “sleep” mode. With a touch of a mouse or keyboard, they also wake up quickly. Other devices, such as laser printers, have thermal characteristics that require some time to return to a ready state. User frustration can be high if a printer cannot wake up quickly and return to service to handle a print job. Therefore, such devices are typically designed or configured to be less aggressive in attempts to conserve power. To ensure readiness, such devices are often set in a light sleep mode or full ready mode during normal use hours without regard to actual use. 
    
    
     
       DRAWINGS 
         FIG. 1  illustrates an exemplary environment in which various embodiments may be implemented. 
         FIGS. 2-5  are exemplary block diagrams illustrating physical and logical components of various embodiments. 
         FIG. 6  is a block diagram of an exemplary activity packet. 
         FIG. 7  illustrates an example of activity data presented in a status table. 
         FIGS. 8 and 9  illustrate exemplary power management settings. 
         FIGS. 10-12  are exemplary flow diagrams of steps for implementing various embodiments. 
     
    
    
     DETAILED DESCRIPTION 
     INTRODUCTION: Electronic device users and manufacturers face various pressures to reduce power consumption. These pressures may be economic or regulatory in nature. In addition to reduced power bills, designing devices with energy conscious features can enable the device to comply with regulations controlling whether or not the device can even be sold in a certain market. 
     Embodiments described below operate to maintain electronic devices such as computer peripherals in a ready state when such devices are likely to be used and power-down or placed in a sleep mode when that likelihood does not exist or is reduced. For example, a device such as a printer is kept in a ready state when there are computers on the network which are actively being used and have that specific printer selected as the output device. By keeping the printer apprised of the status of computers which might print to it, the printer can both be ready more often when a user needs it and be powered down more often when no one is currently in a position to print to it. 
     ENVIRONMENT:  FIG. 1  is an exemplary view of a printing environment  100  that includes clients  102 - 106 , printers  108 - 120 , and print server  122 . While  FIG. 1  illustrates a particular number of clients, printers, and print servers, it is noted that printing environment can include any number of such devices and configurations. Clients  102 - 106  each represent generally any combination of hardware and programming capable of generating and communicating a print job to be printed by one of printers  108 - 120 . Printers  108 - 120  each represent a device capable of producing a printed document from a print job received from one of clients  102 - 106 . In particular, printers  108 - 114  are network enabled meaning that they can receive print jobs directly communicated from clients  102 - 106  over a network. 
     In the example of  FIG. 1 , printers  116 ,  118 , and  120  are not network enabled. Printers  116  and  118  rely on print server  122  to receive print jobs communicated from clients  102 - 106 . Print server  122  represents generally any combination of hardware and programming configured to represent printers  116  and  118  on a network. In other words, print server  122  is responsible for receiving and queuing print jobs communicated from clients  102 - 106  and directed to printers  116  and  118 . As printer  116  or  118  becomes available, print server  122  releases a print job from that printer&#39;s queue. Printer  120  is a shared printer and relies on client  106  to receive print jobs communicated from clients  102  and  104 . Client  106  can communicate print jobs directly to printer  120 . It is noted that in other implementations, printers  116  and  118  may be network enabled having their own presences on the network while still being represented by print server  122 . 
     Link  124  interconnects clients  102 - 106 , printers  108 - 114 , and print server  122 . Link  124  represents generally a cable, wireless, or remote connection via a telecommunication link, an infrared link, a radio frequency link, or any other connector or system of connectors that provides electronic communication between clients  102 - 106 , printers  108 - 114 , and print server  122 . It is noted that printers  116  and  118  are shown having a direct cable or wireless connection to print server  122 . Printer  120  is shown to have a direct cable or wireless connection to client  106 . These direct cable connections allow printer server  122  and client  106  to communicate print jobs to printers  116 - 120 . 
     COMPONENTS:  FIGS. 2-5  are blocks diagrams illustrating exemplary physical and logical components of clients  102 - 106 , printers  108 - 114 , and print server  122 .  FIG. 2  is a block diagram of a client, in this case  102 . However,  FIG. 2  could also be a block diagram of client  104 . A block diagram of client configured to share a printer such as client  106  is shown in  FIG. 5  and discussed below. Continuing with  FIG. 2 , client  102  is shown to include memory  126  and processor  128 . While shown as a single block, memory  126  may include one or more disparate memory types. For example, memory  126  may include any combination of random access memory, read only memory, hard disk drives, flash memory, and the like. Processor  128  represents generally any processor capable of executing program instructions stored in memory  126 . 
     Memory  126  is shown to include OS (Operating System)  130 , application  132 , drivers  134  and local monitors  136 . OS  130  represents a software platform on top of which other programs, called applications, can run. OS  130  is also responsible for performing basic tasks, such as recognizing input from a keyboard and mouse, sending output to a display screen, keeping track of files and directories in memory  126 , and controlling peripheral devices such as printers. Examples of OS  130  include Microsoft&#39;s Windows operating systems, Linux, and various operating systems offered by Apple. 
     Application  132  represents generally any programming or combination of programming compatible with OS  130  that when executed can be used to print a document. For example, application  132  may be a word processor or web browser. Drivers  134  represent one or more programs that control printers  108 - 120 . One or more of drivers  134  may be part of OS  130 . Others may be stand alone programs. In either case, drivers  134  cooperate with OS  130  to enable application  132  to print a document. As an example, a given driver  134 , working with OS  130 , may be configured to receive a print instruction from application  132  for a particular electronic document. That driver  134  converts the electronic document into a print job formatted for a particular one of printers  108 - 120 . In short, drivers  134  act as translators between application  132  and printers  108 - 120 . 
     Local monitor  136  represents generally any programming or combination of programming that when executed generates and communicates data representative of a likelihood that client  102  will send a print job to a printer. This data is communicated in an activity packet and may be directed to a particular printer installed on client  102 , a select group of printers installed on client  102 , or all printers installed on client  102 . It can be said that printer is installed on client  102  when client  102  includes a driver for that printer. As long as client  102  is active, that is turned on and not placed in a sleep mode, local monitor  136  repeatedly communicates such activity packets at specified intervals. 
     In one example, an activity packet is a collection of data categorized according to various states of client  102  that are at least indirectly related to printing. The activity categories may include data indicating whether or not client  102  is active, whether or not a particular printer is set as a default printer for client  102 , whether or not an application that might print is running, and whether or not a print dialog for a particular printer has been opened. 
     To generate an activity packet, local monitor  136  observes activity on client  102 . As examples, local monitor  136  can determine that client  102  is active by communicating with OS  130  to determine if an input device such as a mouse or keyboard have been or are being used or if client  102  is being accessed remotely. Local monitor  136  can also query OS  130  to determine which printer is set as a default printer, to determine if an application capable of printing is currently running, and to determine if a print dialog is open and a particular printer is selected. As an example, local monitor  136  may query a registry for OS  130  to identify which printer is selected as a default printer and to identify which printer is a currently selected printer. Note a currently selected printer may or may not be the default printer. In another example, the driver for a printer could be configured to communicate with local monitor  136 . OS  130  provides a standard print dialog. When that dialog is opened, OS  130  identifies the currently selected printer or default printer and communicates that information to that printer&#39;s driver. In such a case, the printer driver could then communicate this activity to local monitor  136 . In other examples, local monitor  136  observes or queries OS  130  to identify open windows as well as active open windows to determine if an application that might use a printer is open. Local monitor  136  generates an activity packet containing data indicative of these determinations. Examples of such activity packets are discussed below with respect to  FIGS. 6 and 7 . 
     Client  102  is also shown to include interface  138 . Interface  138  represents generally any combination of hardware and programming capable of functioning as a port through which client  102  can communicate activity packets to one or more printers. Examples include wired and wireless interfaces such as wired Ethernet, USB, and firewire ports and wireless Ethernet, infrared, and Bluetooth ports. 
       FIG. 3  is a block diagram of a printer, in this case printer  108 . However,  FIG. 3  could also be a block diagram of printers  110 - 114 . Printer  108  is shown to include print engine  140 , memory  142 , and processor  144 . Print engine represents generally any combination of hardware and programming capable of producing printed output on a physical medium such as a sheet of paper. While shown as a single block, memory  142  may include one or more disparate memory types. For example, memory  142  may include any combination of random access memory, read only memory, hard disk drives, flash memory, and the like. Processor  144  represents generally any processor capable of executing program instructions stored in memory  142 . 
     Memory  142  is shown to include print manager  146 , settings  148 , activity data  150 , activity monitor  152 , activity analyzer  154 , power manager  156 , distributor  158 , and monitor store  160 . Print manager  146  represents generally any programming or combination of programming that when executed is capable of directing print engine  140  to produce a physical printed representation of a print job. Settings  148  represent a collection of data used to select a power state for printer  108 . Settings  148  may be factory assigned settings, default settings, or user defined settings. An example of settings  148  is discussed below with respect to  FIG. 8 . Activity data  150  represents activity packets received by printer  108 . An example of activity data  150  is discussed below with respect to  FIG. 7   
     Activity monitor  152  represents generally any programming or combination of programming that when executed is capable of listening for and recording activity packets communicated from one or more clients that are configured to use printer  108 . In this example, activity monitor  152  records the activity packets in activity data  150 . Activity analyzer  154  represents generally any programming or combination of programming that when executed is capable of accessing activity data  150  to examine activity packets received from two or more clients during a selected period. Power manager  156  represents generally any programming or combination of programming that when executed is capable of selecting a power state according to the examination of the activity packets received during the selected period and of causing printer  108  to enter the selected power state. 
     To elaborate, using information from settings  148 , activity analyzer  154  can examine activity data to identify one or more possible power states corresponding to activity data  150 . Power manager  156  selects the most active of those power states. For example, printer  108  may be capable of being placed in a ready state, a light sleep state, and a hibernation state. The ready state would be the most active state. The hibernation state would be the least active taking the most time from which to recover to the ready state. In short the most active of a set of power states is the state from which recovery to an active state takes the least amount of time. More specific examples of the operation of activity monitor  152 , activity analyzer  154 , and power manager  156  are discussed below in more detail with respect to  FIGS. 6-10 . 
     Distributor  158  represents generally any programming or combination of programming that when executed is capable of distributing a local monitor to a client. Monitor store  160  represents a collection of local monitors compatible with various operating systems. For example, distributor  158  may be a web server and corresponding web page or web service configured to access monitor store  160  and distribute an appropriate local monitor to a requesting client. 
     Printer  108  is also shown to include interface  162 . Interface  162  represents generally any combination of hardware and programming capable of functioning as a port through which printer  108  can listen for and receive activity packets and print jobs. Examples include wired and wireless interfaces such as wired Ethernet, USB, and firewire ports and wireless Ethernet, infrared, and Bluetooth ports. 
       FIG. 4  is a block diagram of a print server, in this case print server  122 . Print server  122  is shown to include memory  164  and processor  166 . While shown as a single block, memory  164  may include one or more disparate memory types. For example, memory  164  may include any combination of random access memory, read only memory, hard disk drives, flash memory, and the like. Processor  166  represents generally any processor capable of executing program instructions stored in memory  164 . 
     Memory  164  is shown to include queue  168 , queue manager  170 , settings  172 , activity data  174 , activity monitor  176 , activity analyzer  178 , power manager  180 , distributor  182 , and monitor store  184 . Queue  168  represents a print queue for one or more printers represented by print server  122 . Queue manager  170  represents generally any programming or combination of programming that when executed is capable of directing print jobs from queue  168  to an appropriate printer represented by print server  122 . 
     Settings  172  represent a collection of data used to select a power state for a printer represented by print server  122 . Settings  172  may be factory assigned settings, default settings, or user defined settings. An example of settings  172  is discussed below with respect to  FIG. 8 . Activity data  174  represents activity packets received by print server  122 . An example of activity data  174  is discussed below with respect to  FIG. 7   
     Activity monitor  176  represents generally any programming or combination of programming that when executed is capable of listening for and recording activity packets communicated from one or more clients that are configured to use a printer represented by print server  122 . In this example, activity monitor  176  records the activity packets in activity data  174 . Activity analyzer  178  represents generally any programming or combination of programming that when executed is capable of accessing activity data  174  to examine activity packets received from two or more clients during a selected period. Power manager  180  represents generally any programming or combination of programming that when executed is capable of selecting a power state according to the examination of the activity packets received during the selected period and of causing a printer represented by print server  122  to enter the selected power state. More specific examples of the operation of activity monitor  176 , activity analyzer  178 , and power manager  180  are discussed below in more detail with respect to  FIGS. 6-10 . 
     Distributor  182  represents generally any programming or combination of programming that when executed is capable of distributing a local monitor to a client. Monitor store  184  represents a collection of local monitors compatible with various operating systems. For example, distributor  182  may be a web server and corresponding web page or web service configured to access monitor store  184  and distribute an appropriate local monitor to a requesting client. 
     Print server  122  is also shown to include interface  186 . Interface  186  represents generally any combination of hardware and programming capable of functioning as a port through which print server  122  can listen for and receive activity packets and print jobs and a port through which print server  122  can communicate with a represented printer. Examples include wired and wireless interfaces such as wired Ethernet, USB, and firewire ports and wireless Ethernet, infrared, and Bluetooth ports. 
       FIG. 5  is a block diagram of a client configured to share a printer, in this case client  106 . Client  106  is shown to include memory  188  and processor  190 . While shown as a single block, memory  188  may include one or more disparate memory types. For example, memory  188  may include any combination of random access memory, read only memory, hard disk drives, flash memory, and the like. Processor  190  represents generally any processor capable of executing program instructions stored in memory  188 . 
     Memory  188  is shown to include OS (Operating System)  192 , application  194 , drivers  196 , local monitor  198 , queue  200 , and queue manager  202 . OS  192  represents a software platform on top of which other programs, called applications, can run. OS  192  is also responsible for performing basic tasks, such as recognizing input from a keyboard and mouse, sending output to a display screen, keeping track of files and directories in memory  188 , and controlling peripheral devices such as printers. Examples of OS  192  include Microsoft&#39;s Windows operating systems, Linux, and various operating systems offered by Apple. 
     Application  194  represents generally any programming or combination of programming compatible with OS  192  that when executed can be used to print a document. For example, application  194  may be a word processor or web browser. Drivers  196  represent one or more programs that control printers  108 - 118  and at least one that controls printer  120 . One or more of drivers  196  may be part of OS  192 . Others may be stand alone programs. In either case, drivers  196  cooperate with OS  192  to enable application  194  to print a document. As an example, a given driver  196 , working with OS  192 , may be configured to receive a print instruction from application  194  for a particular electronic document. That driver  196  converts the electronic document into a print job formatted for a particular one of printers  108 - 120 . In short, drivers  196  act as translators between application  194  and printers  108 - 120 . 
     Local monitor  198  represents generally any programming or combination of programming that when executed generates and communicates data representative of a likelihood that client  106  will send a print job to a printer. This data is communicated in an activity packet and may be directed to a particular printer installed on client  106 , a select group of printers installed on client  106 , or all printers installed on client  106 . A printer is installed on client  106  when client  106  includes a driver for that printer. As long as client  106  is active, that is turned on and not placed in a sleep mode, local monitor  198  repeatedly communicates such activity packets at specified intervals. 
     In this example OS  192  is configured to share printer  120  for use by other clients, in this case clients  102  and  104 . Queue  200  represents a print queue for printer  106 . Queue manager  202  represents generally any programming or combination of programming that when executed is capable of directing print jobs from queue  200  to printer  120 . Such print jobs may be generated by client  106  and by clients  102  and  104 . 
     Memory  188  is also shown to include settings  204 , activity data  206 , activity monitor  208 , activity analyzer  210 , power manager  212 , distributor  214 , and monitor store  216 . Settings  204  represent a collection of data used to select a power state for a printer shared by client  106 , in this case printer  120 . Settings  204  may be factory assigned settings, default settings, or user defined settings. An example of settings  204  is discussed below with respect to  FIG. 8 . Activity data  206  represents activity packets received by client  106 . An example of activity data  206  is discussed below with respect to  FIG. 7   
     Activity monitor  208  represents generally any programming or combination of programming that when executed is capable of listening for and recording activity packets communicated from one or more clients that are configured to use a printer shared by client  106 . In this example, activity monitor  208  records the activity packets in activity data  206 . Activity analyzer  210  represents generally any programming or combination of programming that when executed is capable of accessing activity data  206  to examine activity packets received from two or more clients during a selected period. Power manager  212  represents generally any programming or combination of programming that when executed is capable of selecting a power state according to the examination of the activity packets received during the selected period and of causing a printer shared by client  106  to enter the selected power state. More specific examples of the operation of activity monitor  208 , activity analyzer  210 , and power manager  212  are discussed below in more detail with respect to  FIGS. 6-10 . 
     Distributor  214  represents generally any programming or combination of programming that when executed is capable of distributing a local monitor to a client. Monitor store  216  represents a collection of local monitors compatible with various operating systems. For example, distributor  214  may be a web server and corresponding web page or web service configured to access monitor store  216  and distribute an appropriate local monitor to a requesting client. 
     Client  106  is also shown to include interface  218 . Interface  218  represents generally any combination of hardware and programming capable of functioning as a port through which printer client  106  can listen for and receive activity packets and print jobs and a port through which client  106  can communicate with a shared printer such as printer  120 . Examples include wired and wireless interfaces such as wired Ethernet, USB, and firewire ports and wireless Ethernet, infrared, and Bluetooth ports. 
       FIG. 6  illustrates and exemplary activity packet  220 . In this example activity packet  220  is a collection of data portions and includes an ID portion  222  and a plurality of category portions  224 ,  226 , and  228 . ID portion  222  represents data identifying the client that generated the activity packet and may also represent data identifying a particular printer to which activity packet  220  is addressed. With this configuration, a client can broadcast an activity packet to all printers installed on that client. The printer to which the packet is addressed will receive and analyze the packet. Other printers can ignore the packet. 
     Each category portion  224 - 228  represents data indicative of client activity in a particular activity category. Activity packet  220  can include any number of category portions  224 - 228 . Each category portion contains data representative of a state of a client that generated activity packet  220 . The state represented by data in a category portion  224 ,  226 , and  228  is at least indirectly related to a likelihood that the client will utilize a printer to which activity packet  220  is directed. It is noted that while activity packet  220  is shown to include a plurality of category portions  224 ,  226 , and  228 , different activity packets can contain differing activity portions. For example, a given client may identify activity in one category. A resulting activity packet may include only one activity portion for that particular activity category. In another implementation, an activity packet may include activity portions for each of a plurality of categories even though the value reported in a given activity portion is null representing no activity with respect to a given category. 
     Data in activity portions  224 ,  226 , and  228  may include data in activity categories that indicate whether or not a client is active, whether or not a particular printer is set as a default printer for that client, whether or not an application that might print is running, and whether or not a print dialog for a particular printer has been opened on that client. This is simply an exemplary list of possible types of activity categories. Other categories of activity that correspond at least indirectly to a likelihood that a client will utilize a peripheral such as a printer are, of course, contemplated. 
     Data in an activity portion  224 ,  226 , or  228  may be formatted as a flag or other representation of a client&#39;s state. For example, data in an activity portion  224 ,  226 , or  228  may be a zero or a one—zero indicting non activity and a one indicating activity in the relevant category. Data in category portion  228  may be a one indicating that a print dialog is open on a particular client. Instead, the data may be a zero indicating that no print dialog is open. It is noted that flags may be zeros and ones or any other symbols indicative of on and off or yes and no. 
     Flags may also be capable of conveying state levels. For example a zero may represent an off or inactive state for a given activity category while a five, ten, or other number can indicate a most active state while numbers in between represent various intermediary active states. Data in category portion  226  may be a zero indicating that no printing application is open, a one indicating that one printing application is open, or a higher number indicating the number of printing applications that are open on a particular client. 
       FIG. 7  illustrates status table  230 . Status table  230  is an exemplary implementation of activity data such as activity data  150 ,  174 , or  206  shown in  FIGS. 3 ,  4 , and  5  respectfully. Status table  230  includes a number of entries  232  each corresponding to a received activity packet. Each entry  232  includes data in a time field  234 , a client ID field  236  and in a number of activity category fields  238 - 246 . Data in activity category fields  238 - 246  correspond to a likelihood that a particular client will use a particular printer. In this example, those activity category fields are labeled as awake field  238 , default field  240 , selected field  242 , application field  244 , and dialog field  246 . As an activity packet is received, an entry  232  is created for that packet. Data in time field  234  indicates a time that the activity packet was received or generated. Using this information, activity packets received or generated in a selected period such as within the last set number of seconds, minutes, or other duration, can be identified and analyzed. 
     Data in client ID field  236  identifies a client that generated the activity packet. Data in awake field  238  indicates whether or not the identified client is active or otherwise awake. Data in default field indicates whether or not the particular printer is set as a default printer for the identified client. Data in selected field  242  indicates whether or not that printer is a selected printer for an application running on the identified client. Data in application field  244  indicates whether or not a printing application is running on the identified client. Data in dialog field  246  indicates whether or not the client has opened a print dialog for the particular printer. While activity category fields  238 - 246  are shown with particular labels, status table may have entries with different labels that correspond to other activity categories of received activity packets. 
       FIG. 8  illustrates look up tables  248  which include threshold table  250  and override table  252 . Look up tables  248  represent data found in settings  148 ,  172 , or  204  shown in  FIGS. 3 ,  4 , and  5  respectfully. Threshold table  250  represents a collection of data used to select a power state based on an analysis of activity packets received during a selected time period. Override table  252  represents data used to select a power state according to an activity packet received from a priority client. A priority client is a client for which a power state can be selected based only on an activity packet received from that client. If more active, a power state identified using override table  252  can override a power state selected using threshold table  250 . Priority clients are discussed below in more detail. 
     Threshold table  250  includes entries  254 . Each entry  254  corresponds to a power state  256  that may be selected for a printer. These power states vary from least to most active. It is noted that threshold table  250  can include any number of entries  254 . For example, one entry  254  labeled X( 1 ) may correspond to a ready state in which the printer is ready to print. Another entry  254  labeled X( 2 ) may correspond to a sleep state in which some certain functions of the printer are powered down. Another entry  254  labeled X(z) may correspond to a hibernate state in which more if not most of the printers features are powered down. In this example, power state X( 1 ) would be the most active and power state X(z) would be the least active. 
     Each entry  254  in threshold table  250  contains a series of activity threshold fields  258 - 266 . Each activity threshold field includes a threshold value corresponding to a particular activity category of an activity packet. A threshold value is a value that when met or exceeded provides an indication that a corresponding power state may be identified. When more than one threshold value of threshold table is met, then a plurality of different corresponding power states may be identified. The most active of those identified power states is then selected. 
     In the example of  FIG. 8 , each entry  254  contains a threshold value in awake field  258 , default field  260 , selected field  262 , application field  264 , and dialog field  266 . Awake field  258  is related to a state in which a client is active. Default field  260  is related to a state in which a client has selected a particular printer as a default printer. Selected field  262  is related to a state in which a client is running an application that has selected the particular printer. Application field  264  is related to a state in which a client is running a printing application, and dialog field  266  is related to a state in which a client has opened a dialog for the particular printer. The threshold value for each field  258 - 266  for each entry  254  may be factory set, default values, or user selected values. 
     Referring to  FIGS. 7 and 8 , before using threshold table  250 , an activity analyzer accesses status table  230  and analyzes activity packets received during a specified period. Status table  230  may contain any number of activity packets received during that period from any number of clients. As explained above, values in fields  238 - 246  of status table entries  232  may be a flag having particular numerical value—a zero representing inactivity and one or other positive number representing some level of activity. The activity analyzer can sum the values found in common fields of entries  232  for those activity packets received during the specified period. Each particular sum represents an activity level for a particular activity category. For example, the value of a given sum can correspond to the number of clients that are active, the number of active clients that have the particular printer set as a default printer, the number of clients that are running an application that has the particular printer selected, the number of clients that are running printing applications, or the number of applications that have open dialog boxes for the selected printer. 
     Viewing  FIG. 8 , each sum corresponds to an activity field  258 - 266  of entries  254  in threshold table  250 . The activity analyzer compares each particular sum to the threshold values found in a corresponding activity field  258 - 266  of each entry  254 . As noted above, each entry  254  corresponds to a particular power state identified in that entry&#39;s power state field  256 . By identifying the entry that contains the field with the largest threshold value met or exceeded by a particular sum, the activity analyzer also identifies a power state that corresponds to the activity level represented by that sum. 
     For example, threshold values for awake fields  258  of entries  254  may be ten, six, and zero respectively. The activity analyzer may examine status table  230  of  FIG. 7  and determine that seven clients reported being active during the specified period. The activity analyzer would then determine that the particular sum of seven exceeds the threshold values of zero and six but not ten. For that particular sum, the activity monitor would then identify the particular power state, X( 2 ), corresponding to the entry  254  that contains the threshold value of six in awake field  258 . The activity analyzer would then identify power states for the remaining activity categories represented by fields  260 - 266 . A power manager would then select the most active of those identified power states. 
     Continuing the example, threshold values for dialog field  266  of entries  254  may be two, one, and zero, respectively. The activity analyzer may examiner status table  230  of  FIG. 7  and determine that two clients reported as having open print dialogs for the particular printer during the specified period. The activity analyzer would then determine that the particular sum of two meets or exceeds the threshold values of zero, one, and two. For that particular sum, the activity monitor would then identify the particular power state, X( 1 ), corresponding to the entry  254  that contains the threshold value of two in dialog field  266 . Assuming that power state X( 1 ) is more active than the power state X( 2 ), the power manager would select power state X( 1 ). 
     Still referring to  FIG. 8 , override table  252  includes entries  268 . Each entry  268  corresponds to a priority client and contains data in fields  270 - 280 . Client ID field  270  represents data identifying a particular client while fields  272 - 280  correspond to various activity categories discussed above. The data in an activity category field  272 - 280  for a given entry identifies a particular power state if the identified client reports activity in an activity packet received during a specified period. The power states for various activity category entries  272 - 280  for a given entry  268  can vary. As such, when an activity packet received from a priority client specifies activity in two or more activity categories, entry  268  for that priority client would then indentify multiple power states. In such a case, the most active of those power states would be selected so long as that power state is more active that the most active power state identified using threshold table  250 . 
     In use, an activity analyzer accesses status table  230  and analyzes activity packets received during a specified period. Status table  230  may contain any number of activity packets received during that period from any number of clients. The activity analyzer would then identify any of those packets that were received from a priority client. To do so the activity analyzer may compare data in client ID field  236  of each relevant entry  232  of status table  230  with data in client ID field  270  of each entry  268  in override table  252 . A match would indicate that an activity packet has been received from a priority client. For each entry  232  in status table  230 , activity analyzer determines in which activity categories the priority clients have been active. For each entry  232  corresponding to an activity packet received from a priority client, the activity analyzer compares the priority clients reported activity with that priority client&#39;s entry  268  in override table  252 . As noted above, a priority client&#39;s activity may indicate differing power states. If so the most active power state is identified. Similarly, activity of two or more priority clients may indicate differing power states. Again, the most active power state is identified. 
     Combining the discussion of threshold table  250  and override table  252 , a first power state may be identified as most active using threshold table  250  and a second power state identified as most active using override table  252 . In such a case a power manager would select the most active of the two identified power states. 
     In this manner, activity reported from a single priority client can override a power state that would otherwise be selected. As an example, it may be important in a given printing environment that a particular printer be ready whenever a particular priority client is active. In this example, that client&#39;s entry  268  in override table  252  would include data in awake field  272  identifying a ready power state. Threshold table  250  may indicate that at least ten clients are to be active to justify a ready power state. In this example, the receipt of a single activity packet reporting activity by the priority client would result in the printer being placed in a ready power state overriding any power state identified using threshold table  250 . However, if a power state identified using threshold table  250  were the more active, then that power state would be selected. In other words, a power state selected using override table will not always be selected. 
     As noted above with reference to threshold table  250 , the threshold value for each field  258 - 266  for each entry  254  may be factory set, default values, or user selected values. In another implementation, the threshold value for each field  258 - 266  may be calculated or otherwise determined based on the day of the week and time of day. For example, Look up tables  248  of  FIG. 8  may include a plurality of threshold tables  250  each corresponding to different time periods for each day of the week. Thus, the particular threshold table  250  used would change based on the time of day and day of the week. As such the particular threshold values can also change from time to time and day to day. 
     The threshold values in a threshold table  250  can also be updated based on observed use. For example, it may be observed that a printer is typically in use or otherwise held in an awake or ready state during certain time periods of certain days of the week. The threshold table  250  for those time periods would include threshold values selected so that the peripheral will be more likely to be kept in an awake or ready state. As use patterns change, the threshold values would also change. 
     Furthermore, a threshold value for one activity category may be dependent upon an activity level measured for another activity category. Referring to the exemplary discussion of  FIG. 7  above, the activity level for a particular activity category can be measured by summing corresponding flag values located in status table  230 . As an example, the threshold value for one activity category might decrease as the measured activity level for another activity category increases. Likewise, the threshold value for that activity category might increase as the measured activity level for the other activity category decreases. 
     In the previous examples, a different power state is identified for each activity category by comparing a measured activity level for that category with various threshold values. The most active of those identified power states is selected. In a slightly different fashion, the activity level measured for each activity category can be algorithmically weighted. The weighted activity levels could then be summed or otherwise combined resulting in a value representative of a probability that printing is going to happen. That combined weighted activity value can then be compared to threshold values set for the possible power states. The most active power state whose corresponding threshold value is met or exceeded is then selected. 
       FIG. 9  illustrates an example of a combined threshold table  282  that may replace or be used in addition to threshold table  250 . Combined threshold table  282  is shown to include entries  284 . Each entry  284  corresponds to a power state  286  that may be selected for a printer. These power states vary from least to most active. It is noted that threshold table  282  can include any number of entries  284 . For example, one entry  284  labeled X( 1 ) may correspond to a ready state in which the printer is ready to print. Another entry  284  labeled X( 2 ) may correspond to a sleep state in which some certain functions of the printer are powered down. Another entry  284  labeled X(z) may correspond to a hibernate state in which more if not most of the printers features are powered down. In this example, power state X( 1 ) would be the most active and power state X(z) would be the least active. 
     As discussed above the activity level measured for each activity category can be algorithmically weighted, and the weighted activity levels could then be summed resulting in a value representative of a probability that printing is going to happen. The following is an example equation for calculating a combined weighted activity value.
 
F 1 ×AL 1 +F 2 ×AL 2 + . . . +F n ×AL n  
 
In this example, AL 1  through AL n  represent the measured activity levels for n activity categories. F 1  through F n  represent weighting factors. Activity within certain activity categories can provide a better indication that printing is about to occur. For example, the opening of a print dialog is typically more indicative of printing than simply opening an application. As such, the weighting factor for a given measured activity level may be selected accordingly.
 
     Each entry  284  contains a combined threshold value  288 . The combined threshold value for each entry  284  may be factory set, default values, or user selected values. Using combined threshold table  282 , a combined weighted activity value is compared against each combined threshold value in fields  288  of entries  284 . The most active power state whose corresponding combined threshold value is met or exceeded is then selected. 
     OPERATION:  FIGS. 10-12  are exemplary flow diagrams illustrating steps for implementing various embodiments. Starting with  FIG. 10 , activity packets are listened for (step  290 ). Referring back to  FIGS. 3-5 , step  290  may be accomplished by activity monitor  152 ,  176 , or  208  associated with a particular printer. Received activity packets are recorded (step  292 ). Step  292  may be accomplished once activity monitor  152 ,  176 , or  208  hears and identifies an activity packets directed to its associated printer. 
     Activity packets received during a specified period are analyzed (step  294 ). A power state is then selected according to the examined activity packets (step  296 ) and the printer is caused to enter the selected power state (step  298 ). Step  294 , for example, may be performed by activity analyzer  154 ,  178 , or  210  of  FIGS. 3-5  while steps  296  and  298  may be performed by power manager  156 ,  180 , or  212 . Examples of steps  294  and  296  are discussed in more detail below with respect to  FIG. 10 . 
     Moving on to  FIG. 11 , steps  300 - 306  expand on step  294  of  FIG. 10  while step  308  is an example of step  296 . In step  300 , activity levels for each activity category specified in the activity packets received during the selected period are measured. Referring to the exemplary discussion of  FIG. 7  above, the activity level for a particular activity category can be measured by summing corresponding flag values located in status table  230 . 
     For each activity category, a power state is identified based upon the measured activity level for that activity category (step  302 ). Referring to the exemplary discussion of  FIG. 8  above, the power state for an activity category can be identified by identifying a largest corresponding threshold value in threshold table  250  that is met or exceeded by the measured activity level for that activity category. A corresponding threshold value, in this case, is a threshold value contained in an entry  254  and found in a field  258 ,  260 ,  262 ,  264 , or  266  that corresponds to the particular activity category. The most active of the power states identified in step  302  is identified as a first power state (step  304 ). 
     A second power state is identified (step  306 ). The second power state is the most active of the power states specified for the activity packets received from priority clients during the selected period. Referring to the exemplary discussion of  FIG. 8  above, activity packets can be identified as having been received from a priority client by referring to override table  252 . Power states specified for a given priority client can then be identified by comparing an activity packet received from a priority client with that priority client&#39;s entry  268  in override table  252 . The most active specified power state is identified as the second power state. Finally, the most active of the first and second power states is then selected (step  308 ). 
       FIG. 12  illustrates a variation on  FIG. 11  with steps  310 - 316  expanding on step  294  of  FIG. 10  while step  318  is an example of step  296 . In step  310 , activity levels for each activity category specified in the activity packets received during the selected period are measured. Referring to the exemplary discussion of  FIG. 7  above, the activity level for a particular activity category can be measured by summing corresponding flag values located in status table  230 . 
     Using the measured activity levels, a combined weighted activity value is calculated (step  312 ). A power state that corresponds to the combined weighted activity value is identified as a first power state (step  314 ). Referring to the exemplary discussion of  FIG. 9  above, the power state corresponding to a combined weighted activity value can be identified by identifying a largest combined threshold value in combined threshold table  282  that is met or exceeded by the combined weighted activity value. A corresponding combined threshold value, in this case, is a combined threshold value contained in field  288  of an entry  284 . 
     A second power state is identified (step  316 ). The second power state is the most active of the power states specified for the activity packets received from priority clients during the selected period. Referring to the exemplary discussion of  FIG. 8  above, activity packets can be identified as having been received from a priority client by referring to override table  252 . Power states specified for a given priority client can then be identified by comparing an activity packet received from a priority client with that priority client&#39;s entry  268  in override table  252 . The most active specified power state is identified as the second power state. Finally, the most active of the first and second power states is then selected (step  318 ). 
     CONCLUSION: The printing environment  100  shown in  FIG. 1  is an exemplary environment in which embodiments of the present invention may be implemented. Implementation, however, is not limited to this environment or to a printing environment. While printers are used in the examples of  FIGS. 1-10 , each printer can be substituted with a peripheral of any type whose power state can be adjusted. As such, the following claims use the term peripheral to encompass printers and any other such peripherals whose power states can be adjusted in the manners described above. 
     The diagrams of  FIGS. 2-5  show the architecture, functionality, and operation of various embodiments. Various components illustrated in  FIGS. 2-5  are defined at least in part as programs. Each such component or various combinations thereof may represent in whole or in part a module, segment, or portion of code that comprises one or more executable instructions to implement any specified logical function(s). Each component or various combinations thereof may represent a circuit or a number of interconnected circuits to implement the specified logical function(s). 
     Also, the present invention can be embodied in any computer-readable media for use by or in connection with an instruction execution system such as a computer/processor based system or an ASIC (Application Specific Integrated Circuit) or other system that can fetch or obtain the logic from computer-readable media and execute the instructions contained therein. “Computer-readable media” can be any media that can contain, store, or maintain programs and data for use by or in connection with the instruction execution system. Computer readable media can comprise any one of many physical media such as, for example, electronic, magnetic, optical, electromagnetic, or semiconductor media. More specific examples of suitable computer-readable media include, but are not limited to, a portable magnetic computer diskette such as floppy diskettes or hard drives, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory, or a portable compact disc. 
       FIGS. 6-8  illustrate exemplary data structures for use implementing various embodiments. However, these data structures are just that—exemplary. Although the flow diagrams of  FIGS. 10-12  show specific orders of execution, the orders of execution may differ from that which is depicted. For example, the order of execution of two or more blocks may be scrambled relative to the order shown. Also, two or more blocks shown in succession may be executed concurrently or with partial concurrence. All such variations are within the scope of the present invention. 
     The present invention has been shown and described with reference to the foregoing exemplary embodiments. It is to be understood, however, that other forms, details and embodiments may be made without departing from the spirit and scope of the invention that is defined in the following claims.