Abstract:
A printer that contains printer devices that use different versions of a protocol is configured with a translation layer in printer firmware that receives one version of a protocol command from a sending device, translates the protocol command to another version of the protocol command, and sends the translated command to a receiving device or devices. The translation layer includes a table of modified commands that identifies each command used in the versions of the protocol used by the printer devices. The table of modified commands is used to generate a translation table for each device. The translation table is used to find a command that is compatible with a receiving device when the receiving device uses a different version of the command than the sending device. If the command has not changed in the protocol versions used by the sending and receiving devices, then the translation facility is not invoked and print processing proceeds normally.

Description:
TECHNICAL FIELD 
     The invention relates to printers having multiple devices that utilize more than one version of a protocol. More particularly, the invention relates to systems and methods for utilizing a translation table for protocol command translation between printer devices. 
     BACKGROUND 
     Most printers incorporate several printer devices, such as input trays, stackers, staplers, sorters, etc., to provide users with a comprehensive printing system. These devices are controlled by a paper handler controller (sometimes referred to simply as a controller) that is integrated into hardware and firmware that is resident within printer memory. The paper handler controller (PHC) coordinates the functions of the devices according to user instructions. 
     For example, say that a user wants to print several copies of a multi-page document on both sides of letter-size paper and collate and staple the printed documents. The paper handler controller receives instructions from the user and commands appropriate printer devices to function to print the documents appropriately. 
     In the present example, the paper handler controller must transmit commands that direct an input tray to load paper from a letter-size paper tray, a duplexer to guide each sheet of paper so that both sides are utilized; a sorter to sort the output pages, and a stapler to staple the final collated documents. 
     The PHC communicates with the devices using commands that conform to a certain protocol, the protocol being compatible with the PHC and the devices. A protocol is a set of rules or standards designed to enable devices conforming to the protocol to exchange information with each other. Some protocols also support peer-to-peer communications wherein the devices communicate directly with each other by transmitting and receiving commands sent directly to and from devices. In addition, some protocols support a broadcast mode. In broadcast mode, a command or set of commands is transmitted to more than one device from the PHC or a device. 
     A problem can arise if the PHC or one or more of the devices is upgraded to a newer version of the protocol. A new version of the protocol necessarily means that some commands have changed since the original version and/or some commands have been added that were not included in the original version. When this happens, the PHC may no longer be able to communicate effectively with all the devices, and/or any upgraded device may not be able to communicate effectively with the PHC and the other devices. The problem may be compounded as additional versions of the protocol are released and the PHC/devices are upgraded. 
     When a new version of a protocol is released for use in a PHC, the new version of the protocol supports—or is compatible with—not only the new version, but any previous versions as well. This type of compatibility is referred to as backward compatibility, i.e., more advanced versions of the protocol can still communicate with less advanced, or older, versions of the protocol. This may be done by including complete command sets for each version of the protocol, or by including the complete command set for one version of the protocol with commands from other versions of the protocol that are not included in the full command set. 
     If a device is upgraded to a new version of a protocol, the PHC should also be upgraded. Otherwise, the PHC may not be able to communicate fully with the device and the device would not function properly. Therefore, a printer&#39;s PHC should always include the newest version of the protocol used by the printer, as compared to the printer devices. In this way, the PHC is always compatible with the printer devices. 
     Another problem arises in printers that support peer-to-peer or broadcast communications when a device is upgraded to a newer version of a protocol than is used by other devices. The device supporting the newer version of the protocol can receive communications from the other devices (assuming the newer version of the protocol is backward compatible with the older version(s) of the protocol), but the devices supporting the older protocol may not understand new or changed commands from the device that supports the newer version of the protocol. Therefore, if one device is upgraded in such a printer, all devices should be upgraded. 
     SUMMARY 
     Described herein are systems and methods for translating protocol commands between devices that use different versions of a protocol. The implementations of the invention described below contemplate utilizing a translation table for each device, each translation table being configured to identify the other devices, the version of the protocol used by each of the other devices, and the commands from each version of the protocol that are compatible with the other devices. 
     For purposes of the present discussion, references made to a “device” mean any printer device that communicates with another printer device including, but not limited to those listed above. Furthermore, the term “device” may also used to refer to the paper handler controller (PHC) when discussing communications from one device to another. 
     The translation tables of the PHC and the devices translates commands between different versions of a protocol. The translation tables are used between printer devices that use different versions of the protocol for peer-to-peer and broadcast communications. Translation tables are also utilized for PHC to device communications. If basic operation information is not obtained in the translation process, then a device is identified as being “incompatible” with a certain version of a protocol command. An appropriate message may be sent to a user upon such a determination. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings. The same numbers are used throughout the figures to reference like components and/or features. 
         FIG. 1  is a block diagram of a printer that utilizes translation tables to communicate between devices that use different versions of a protocol. 
         FIG. 2  illustrates a table of modified commands as used in the described implementations. 
         FIGS. 3   a - 3   c  illustrate translation tables used in the described implementations. 
         FIG. 4  is a flow diagram of a method to generate translation tables. 
         FIG. 5  is a flow diagram illustrating a procedure for utilizing translation tables to translate protocol commands from one version to another. 
     
    
    
     DETAILED DESCRIPTION 
     The described implementations of the invention allows a printer to operate with devices that use different versions of a protocol to communicate with the printer and with each other. This means that certain devices can be upgraded without having to upgrade every device in the system to the same version of the protocol. In addition, when a PHC that is upgraded to a newer version is installed in a printer, the size of the PHC can be reduced by not including entire versions of the protocol with the PHC; only the newest version of the protocol supported by the PHC together with commands from the older versions of the protocol supported by the PHC must be included. “Printer” refers generally to any image forming device such as printers and copiers. 
       FIG. 1  is a block diagram of a printer  100  that utilizes translation tables to communicate between devices that use different versions of a protocol. The printer  100  includes memory  102  and a paper handler controller (PHC)  104  stored in the memory  102 . In addition to the PHC  104 , the printer  100  includes several printer devices, designated as Device A  106 , Device B  108 , Device C  110 , and Device D  112 . These printer devices may be input trays, stackers, staplers, sorters, and the like. 
     Device A  106  includes memory  114  that stores translation table A  116  and a first version of a protocol  118 . Device B  108  includes memory  120  that stores translation table B  122  and the first version of the protocol  118 ′. Device C  110  includes memory  124  that stores translation table C  126  and a second version of the protocol  128 . Device D  112  includes memory  130  that stores translation table D  132  and a third version of the protocol  134 . 
     It is noted that, while the printer  100  is shown as having four printer devices, virtually any number of printer devices may be included in the printer  100 . It is also noted that, although a protocol having three versions is shown, it should be understood that a protocol used in the printer  100  may have from two to any number of versions. A printer using only one version of the protocol will have no need to use the translation facility described herein. 
     The PHC  104  includes commands from the first version of the protocol  136  that have changed in the second and/or third versions of the protocol. Also included are commands from the second version of the protocol  138  that were added since the first version of the protocol or that have changed in the third version of the protocol. The PCH  104  also includes the third version of the protocol  134 ′, which is the latest version of the protocol used in the printer  100 . 
     The PHC  104  stores a table of modified commands  140  that specifies one or more commands that differ between the versions of the protocol used in the printer. The table of modified commands  140  also identifies which commands are compatible with each version of the protocol. The table of modified commands  140  may be pre-installed in the PHC  104 , but in a preferred implementation, the PHC  104  uses a table generator  142  to generate the table of modified commands  140  if a protocol identifier  144  determines that different versions of the protocol are used in the printer devices. The table of modified commands  140  will be discussed in greater detail, below, with reference to FIG.  2 . 
     The table generator  142  uses the table of modified commands  140  to generate translation table A  116 , translation table B  122 , translation table C  126  and translation table D  132 . Copies of translation table A  116 ′, translation table B  122 ′, translation table C  126 ′ and translation table D  132 ′ are stored in the PHC  104 . 
     The PHC  104  includes a transmitter  146  that transmits protocol commands between the PHC  104  and the other devices  106 ,  108 ,  110 ,  112 . The transmitter  146  is also utilized to transmit the translation tables  116 ,  122 ,  126 ,  132  to the devices  106 ,  108 ,  110 ,  112 . A receiver  148  is included in the PHC  104  to receive protocol commands from the other devices  106 ,  108 ,  110 ,  112 . Continuing reference will be made to the numbered elements contained in  FIG. 1  as the implementations are further described with reference to the other figures. 
       FIG. 2  illustrates the table of modified commands  140  used in accordance with the described implementations of the invention. The table of modified commands  140  includes a command column  202  that lists the commands included in each version of the protocol. The table of modified commands  140  also includes a column for each version of the protocol used in the printer  100 . For the printer  100  shown, the table of modified commands  140  includes a column for version one  204  of the protocol, a column for version two  206  of the protocol, and a column for version three  208  of the protocol. 
     As shown, command ONE  210 , command TWO  212 , command THREE  214  and command FOUR  216  have not changed from version one  204  of the protocol to version three  208  of the protocol. Command FIVE  218  remained the same in version two  206  of the protocol but changed in version three  208  of the protocol. Command SIX  220  was modified in version two  206  of the protocol but remained the same in version three  208  of the protocol. Command SEVEN  222  was introduced in version two  206  of the protocol and was modified in version three  208  of the protocol. 
     Using the table of modified commands  140 , the table generator  142  produces translation table A  116 , translation table B  122 , translation table C  126 , and translation table D  132 . The translation tables  116 ,  122 ,  126 ,  132  are then sent to and stored in Device A  106 , Device B  108 , Device C  110  and Device D  112 , respectively. 
       FIG. 3   a  illustrates translation table A  116  and translation table B  122 . In this example, translation table A  116  and translation table B  122  are identical because they utilize the same version of the protocol (protocol version one  118 ,  118 ′). For convenience purposes, continued reference to this translation table will be made simply to translation table A  116 . 
     Translation table A  116  includes a command column  302  that identifies commands that have been modified or added since the version of the protocol used in Device A  106  and Device B  108  (protocol version one  118 ,  118 ′). Translation table A  116  also includes a column for each device that uses a different version of the protocol, namely, a Device C column  304  and a Device D column  306 . In the present example, a row for Command FIVE  308  is included because Command FIVE  308  changed in the versions of the protocol used by Device C  110  and Device D  112 . A row for Command SIX  310  is included because Command SIX  310  changed in the version of the protocol used by Device C  110  and Device D  112 . 
     Translation table A  116  shows that Device C  110  uses the version of Command FIVE that is included in protocol version two  128 ; and that Device D  112  uses the version of Command FIVE that is included in protocol version three  134 . Translation table A  116  also shows that Device C  110  and Device D  112  use the version of Command SIX that is included in protocol version two  128 . 
     It is noted that translation table A  116  does not include a row for Command SEVEN, since Device A  106  cannot send any version of Command SEVEN. 
       FIG. 3   b  illustrates translation table C  126  from Device C  110 . Translation table C  126  includes a command column  312  that identifies commands that have been modified since the first version of the protocol or added in the third version of the protocol  134 . Translation table C  126  also includes a column for each device that uses a different version of the protocol, namely, a Device A column  314 , a Device B column  316 , and a Device D column  318 . In the present example, a row for Command FIVE  320  is included because Command FIVE  320  changed in the version of the protocol used by Device D  112  (protocol version three  134 ). A row for Command SIX  322  is included because Command SIX  322  changed since the first version of the protocol  118  (used in Device A  106  and Device B  108 ). A row for Command SEVEN  324  is also included because Command SEVEN  324  changed in protocol version three  134 . 
     The row for Command FIVE  320  shows that Device A  106  and Device B  108  use the same version of Command FIVE used in Device C  110 ; and that Device D  112  uses the version of Command FIVE included in protocol version three  134 . The row for Command SIX  322  shows that Device A  106  and Device B  108  use the version of Command SIX included in protocol version one  118 ; and that Device D  112  uses the same version of Command SIX used in Device C  110 . The row for Command SEVEN shows that Device A  106  and Device B  108  are incompatible with Command SEVEN; and that Device D  112  uses the version of Command SEVEN included in protocol version three  134 . 
       FIG. 3   c  illustrates translation table D  132  from Device D  112 . Translation table D  132  includes a command column  326  that identifies commands that have been modified or added since the first version  118  of the protocol or the second version  128  of the protocol. Translation table D  132  also includes a column for each device that uses a different version of the protocol, namely, a Device A column  328 , a Device B column  330 , and a Device D column  332 . In the present example, a row for Command FIVE  334  is included because Command FIVE changed from the version of the protocol used by Device D  112  to the version of the protocol used by Device A  106 , Device B  108  and Device C  110  (protocol version one  118 ). A row for Command SIX  336  is also included because Command SIX changed since the first version of the protocol  118 . A row for Command SEVEN  338  is also included because Command SEVEN changed in protocol version two  128  and protocol version three  134 . 
     The row for Command FIVE  334  shows that Device A  106 , Device B  108 , and Device C  110  use the version of Command FIVE included in protocol version one  118 . The row for Command SIX  336  shows that Device A  106  and Device B  108  use the version of Command SIX included in protocol version one  118 ; and that Device C  110  uses the same version of Command SIX used by Device D  112 . The row for Command SEVEN shows that Device A  106  and Device B  108  are incompatible with Command SEVEN; and that Device C  110  uses the version of Command SEVEN included in protocol version two  128 . 
       FIG. 4  is a flow diagram depicting the procedure that occurs when the printer  100  is booted. At step  400 , the protocol identifier  144  determines which version of the protocol is used by Device A  106 , Device B  108 , Device C  110  and Device D  112 . If the PHC  104  and the devices  106 ,  108 ,  110 ,  112  use the same version of the protocol, then no translation layer (i.e., no translation tables  116 ,  122 ,  126 ,  132  and no table of modified commands  140 ) is generated and processing proceeds normally (“No” branch, step  402 ). If, however, the protocol identifier  144  determines that more than one version of the protocol is used in the printer  100  (“Yes” branch, step  402 ), the table generator  142  is directed to create the table of modified commands  140  at step  404 . To do this, the PHC  104  must, at a minimum, include a complete command set from one version of the protocol, together with any new or modified commands from other versions of the protocol used in the printer  100 . 
     At step  406 , the table generator  142  uses the table of modified commands  140  to generate a translation table  116 ,  122 ,  126 ,  132  for each device  106 ,  108 ,  110 ,  112 , respectively. The translation tables  116 ,  122 ,  126 ,  132  are stored in the memory  104  of the printer  100  at step  408  before being transmitted to their respective devices at step  410 , where they are stored. 
       FIG. 5  is a flow diagram that depicts a process for translating commands from one version of a protocol to another. For purposes of discussion, an example is used of a first device sending a command to two other devices. The first device is Device A  106  of  FIG. 1 , and the other devices are Device B  108  and Device C  110 . It is assumed that the procedure outlined in  FIG. 4  has already occurred, meaning that the first device (Device A  106 ) has a translation table (translation table A  116 ) stored in memory  114 . 
     It is noted that reference made herein to device-to-device communication does not necessarily mean that a sending device transmits commands directly to a receiving device. More typically, a sending device transmits commands to the PHC and the PHC forwards the commands to the appropriate receiving device(s). For discussion purposes, assume that the transmitted command is Command SIX, as described in  FIGS. 2 ,  3   a ,  3   b  and  3   c.    
     At step  500 , Device A  106  prepares to send a command (Command SIX) to Device B  108 . Before sending the command, Device A  106  refers to translation table A  116  stored in memory  114  of Device A  106  at step  502 . If the command is not listed in translation table A  116  (“No” branch, step  502 ), Device A  106  transmits the command to Device B  108  at step  503 , and the translation process terminates. 
     Since command SIX is listed in translation table A  116  (“Yes” branch, step  502 ), so the process continues at step  506 . At step  506 , a determination is made as to whether the command has been modified in the version of the protocol used by the destination device. Since both Device A  106  and Device B  108  use the same version of the protocol (protocol version one  118 ,  118 ′), translation table A  116  indicates that Command SIX has not been modified from the version of the protocol used in the sending device (Device A  106 ) to the version of the protocol used in Device B  108 , the receiving device (“No” branch, step  506 ). Therefore, at step  504 , Command SIX is transmitted to the PHC  104  for further transmission to Device B  108 . 
     If more devices are to receive the command (“broadcast mode”), the process is repeated (“Yes” branch, step  514 ). In the present example, Command SIX is also to be transmitted to Device C  110 , so Device A  106  prepares to send Command SIX to Device C  110  at step  500 . Device A  106  refers to translation table A  116  at step  502  to see if Command SIX is listed in translation table A  116 . Command SIX is listed, so Device A determines if a different version of Command SIX is listed in translation table A  116  for Device C  110  (step  506 ). Translation table A  116  indicates that Device C  110  uses a different version of Command SIX (“Yes” branch, step  506 ) so Device A  106  determines whether there is a modified Command SIX available at step  508 . If there is not a modified command available (“No” branch, step  508 ), an “incompatible” message is transmitted at step  510 . This message is transmitted to the PHC, which handles the message to indicate an error to the user. 
     In the present example, translation table A  116  indicates that a modified Command SIX is available that is compatible with Device C  110  (“Yes” branch, step  508 ), so Device A  106  encapsulates Command SIX within a translate frame, and transmits the translate frame to the PHC  104 , where a modified Command SIX is forwarded to Device C  110  (step  512 ). 
     At step  514 , there are no other devices that are to receive the command from Device A  106 , so the process terminates (“No” branch, step  514 ). 
     CONCLUSION 
     The described implementations advantageously provide for an effective way to provide backward compatibility to PHCs and printer devices while allowing a printer to utilize printer devices that use different versions of a protocol. 
     Although the invention has been described in language specific to structural features and/or methodological steps, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or steps described. Rather, the specific features and steps are disclosed as preferred forms of implementing the claimed invention.