Abstract:
A method of controlling usage of printer macros stored in a printer includes detecting a request for use of a first one of the printer macros by a print job. Printer identification information contained in the first printer macro is compared to a printer identifier stored in the printer. Usage of the first printer macro by the printer is controlled based on the comparison.

Description:
THE FIELD OF THE INVENTION 
   The present invention generally relates to printers, and more particularly to controlling printer macro usage based on printer identification information. 
   BACKGROUND OF THE INVENTION 
   Printer macros (also referred to as electronic forms or eforms) are typically stored in a file system or working memory (RAM) of a printer, and can be executed by the printer to perform a variety of functions. For example, one common use of a printer macro is to place a company logo on each page of a printed document. Macros are typically invoked by a printer in response to a request in a print job that specifies an identifier for the desired printer macro. By storing information for commonly used functions in the printer in the form of a macro, the information need not be transmitted to the printer for each print job. 
   A problem exists of users illegally copying printer macros from one printer file system to another printer file system. Printer macros are typically stored on a disk or dual in-line memory modules (DIMM&#39;s) within a printer. As printers adopt removable storage media, such as Compact Flash®, for storing printer resources, such as macros or eforms, it becomes increasingly important to protect these resources from unauthorized distribution and use. In general, most printer architectures dictate that data stored on Compact Flash® is to be stored on a proprietary file system, such as the LynxOS® file system, in order to be usable by printer firmware. As such, printer resources that were once provided with some level of protection by virtue of being stored in a proprietary data format on a storage medium whose low-level data organization was also proprietary, become as unprotected on a removable storage medium as files stored on client computer file systems. 
   SUMMARY OF THE INVENTION 
   One form of the present invention provides a method of controlling usage of printer macros stored in a printer. The method includes detecting a request for use of a first one of the printer macros by a print job. Printer identification information contained in the first printer macro is compared to a printer identifier stored in the printer. Usage of the first printer macro by the printer is controlled based on the comparison. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1  is a block diagram illustrating major components of a printer configured to provide printer macro security according to one embodiment of the present invention. 
       FIG. 2  is a diagram illustrating a set of PCL5® printer macro commands. 
       FIG. 3  is a diagram illustrating an example PCL5® printer macro. 
       FIG. 4  is a diagram illustrating an example set of PCL5® commands in a print job for invoking the example printer macro shown in  FIG. 3 . 
       FIG. 5  is a diagram illustrating an enhanced set of PCL5® printer macro commands, including a macro security command according to one embodiment of the present invention. 
       FIG. 6  is a diagram illustrating an example PCL5® printer macro, including a macro security command according to one embodiment of the present invention. 
       FIG. 7  is a diagram illustrating a macro security data field according to one embodiment of the present invention. 
       FIG. 8  is a flow diagram illustrating a printer macro security method performed by the printer shown in  FIG. 1  according to one embodiment of the present invention. 
       FIG. 9  is a diagram illustrating a macro security data field according to another embodiment of the present invention. 
       FIG. 10  is a flow diagram illustrating a printer macro security method performed by the printer shown in  FIG. 1  according to another embodiment of the present invention. 
   

   DESCRIPTION OF THE PREFERRED EMBODIMENTS 
   In the following detailed description of the preferred embodiments, reference is made to the accompanying drawings, which form a part hereof, and in which is shown by way of illustration specific embodiments in which the invention may be practiced. It is to be understood that other embodiments may be utilized and structural or logical changes may be made without departing from the scope of the present invention. The following detailed description, therefore, is not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims. 
     FIG. 1  is a block diagram illustrating major components of a print apparatus or printer  100  configured to provide printer macro security according to one embodiment of the present invention. Printer  100  includes input/output (I/O) interface  102 , processor  106 , print engine  108 , and memory  110 , which are communicatively coupled together via bus  104 . Printer  100  is configured to be coupled to one or more computers (not shown) via I/O interface  102 . In one embodiment, I/O interface  102  is a serial interface, such as a universal serial bus (USB) interface. In another embodiment, I/O interface  102  is a network interface. In other embodiments, other types of interfaces may be used, including those for wireless communications. 
   In one embodiment, print engine  108  is a laser print engine, and includes conventional laser printer elements (not shown) for forming an image on media, such as a laser, a rotating polygonal-mirror to deflect the laser beam, a photoconductive drum, toner dispensers, media handlers, as well as other conventional elements known to those of ordinary skill in the art. It is to be understood that other types of printers and their associated elements can be utilized by the present invention. 
   In one embodiment, memory  110  includes multiple types of memory, including both volatile and non-volatile memory, such as random access memory (RAM), read-only memory (ROM), and flash memory. In one form of the invention, memory  110  stores a file system  112 , a printer identifier (e.g., printer serial number)  116 , and firmware  118 . A plurality of printer macros  114 A- 114 C (collectively referred to as printer macros  114 ) are stored in file system  112 , and are available for use by a print application in a computer (not shown) coupled to the printer  100 . Macros  114  are also referred to as electronic forms or “eforms.” Each of the printer macros  114  includes a unique identifier and a set of printer commands. A print job may request that one or more of the macros  114  be used in the job by specifying the unique identifiers of the desired macros  114  in the request. In one embodiment, macros  114  are stored on a removable storage medium, such as Compact Flash®, which may be removed from printer  100  and placed in another printer or other device. 
   Firmware  118  includes a plurality of firmware modules  120 - 132 , which include instructions that are executed by processor  106 . In one embodiment, the firmware modules include user interface  120 , device state tracker  122 , job manager  124 , engine manager  126 , file system manager  128 , macro license manager  130 , and encryption manager  132 . 
   User interface  120  handles receipt and processing of user input information that is input on a front panel (not shown) of printer  100 , and handles the display of information to the user. Device state tracker  122  retrieves status information from various hardware components (e.g., sensors) in printer  100  in response to received status inquiries (e.g., how much toner is left in the toner cartridge), and forwards status information to the requesting component. Job manager  124  parses and processes data streams that printer  100  receives from various input/output connections (e.g., I/O interface  102 ), and invokes other software components as appropriate to complete print jobs. Engine manager  126  controls and provides an interface to print engine  108 . File system manager  128  controls and provides an interface to file system  112 . File system manager  128  receives file system requests from other software components, converts the requests into an appropriate language to manipulate the file system  112 , and returns appropriate data to the requesting component. Macro license manager  130  performs various printer macro security functions, as described in further detail below. Encryption manager  132  performs encryption and decryption functions, as described in further detail below. 
   In one embodiment, printer  100  provides security for those printer macros  114  that are stored on the local file system  112  by checking for a printer serial number in a requested printer macro  114 . In one form of the invention, when a print job requests that one of the printer macros  114  be used, the requested printer macro  114  is validated for use by the presence of a printer serial number in the printer macro  114 . In one embodiment, if the printer macro data  114  does not contain a serial number that matches the serial number  116  of printer  100 , the print job is rejected. 
   In one form of the invention, if a printer macro  114  does not include a printer serial number, printer  100  writes its serial number  116  to the printer macro  114 . In one embodiment, printer macros  114  are configured to include multiple printer serial numbers based on the licensing agreement established between the customer and the printer macro provider. In one form of the invention, each printer macro  114  includes a field that specifies the maximum number of printer serial numbers that can be stored in the printer macro  114 . In one embodiment, printer  100  does not attempt to add its printer serial number  116  to a printer macro  114  when the maximum number of serial numbers has already been attained. 
   Printer macro security functions are described in further detail below with reference to  FIGS. 5-10 . But first, various “PCL5®” commands and an example printer macro are described with reference to  FIGS. 2-4 . “PCL5®” is a printer command language created by Hewlett-Packard that comprises a series of escape sequence codes, which are used to control printer features. Although one embodiment of the present invention is described in the context of PCL5®, it will be understood by persons of ordinary skill in the art that printer macros or eforms may be defined in a variety of printer languages, and that other embodiments of the invention may use other printer languages. 
     FIG. 2  is a diagram illustrating a set of PCL5® printer macro commands  200 . The commands  200  are shown in a table that includes two columns  202 A and  202 B, and eleven rows  204 A- 204 K (collectively referred to as rows  204 ). Each row  204  includes a printer macro command in column  202 A, and a corresponding description of that command in column  202 B. Each of the printer macro commands is in the form “Esc&amp;f#X,” where the value for the “#” character varies from command to command. Printer macro commands  200  are described in further detail below with reference to  FIGS. 3 and 4 . 
     FIG. 3  is a diagram illustrating an example PCL5® printer macro  300 . The example printer macro  300  is used by printer  100  to place a company logo on each page of a printed document. It will be understood by persons of ordinary skill in the art that macro  300  is shown in human-readable form in  FIG. 3 , and that a file containing an actual macro definition would not represent the printer commands in the same manner. 
   Printer macro  300  is shown in a table that includes two columns  302 A and  302 B, and twenty-two rows  304 A- 304 V (collectively referred to as rows  304 ). Each row  304  includes a PCL5® command, or text, in column  302 A, and a corresponding description in column  302 B. The PCL5® commands in macro  300  include some of the printer macro commands  200  shown in  FIG. 2  (e.g., in rows  304 B and  304 V), as well as other PCL5® commands. The first row  304 A includes the command “Esc&amp;f1Y,” which specifies that the Macro ID of macro  300  is “1”. A print job can request that macro  300  be used in the job by specifying the Macro ID of “1” in the request. 
   Row  304 B of macro  300  includes the command “ESC&amp;f0X,” which identifies the start of the macro definition. Row  304 V includes the command “ESC&amp;f1X,” which identifies the end of the macro definition. Rows  304 C- 304 U include commands and text for causing the printer  100  to print a company logo (i.e., ABC Corp.&#39;s logo) on a printed page. The illustrated command sequence to perform this function of printing a logo will be understood by persons of ordinary skill in the art. The specific commands used to print a logo are not relevant to the provision of macro security according to one embodiment, and are, therefore, not described in further detail herein. 
     FIG. 4  is a diagram illustrating an example set of PCL5® commands  400  in a print job for invoking the example printer macro  300  shown in  FIG. 3 . In one embodiment, the commands  400  would be sent in a print job from a client device (e.g., computer) to printer  100 . Commands  400  are shown in a table that includes two columns  402 A and  402 B, and eight rows  404 A- 404 H (collectively referred to as rows  404 ). Each row  404  includes a PCL5® command in column  402 A, and a corresponding description of that command in column  402 B. Rows  404 A- 404 E include various commands for configuring and preparing printer  100  to use macro  300  (e.g., selecting a paper type, selecting a symbol set, selecting a font, etc.). Row  404 F includes the command “Esc&amp;f1Y,” which sets the current Macro ID to “1”. Row  404 G includes the command “Esc&amp;f3X,” which issues a call for a macro having an ID that matches the currently specified Macro ID (i.e., Macro ID=1). Since the printer macro  300  shown in  FIG. 3  has a Macro ID of “1”, the call in row  404 G requests that printer  100  invoke macro  300 . Row  404 H includes the command “EscE,” which causes printer  100  to be reset after the macro  300  has been executed. 
     FIG. 5  is a diagram illustrating an enhanced set of PCL5® printer macro commands  500 , including a macro security command according to one embodiment of the present invention. The commands  500  are shown in a table that includes two columns  502 A and  502 B, and twelve rows  504 A- 504 L (collectively referred to as rows  504 ). Each row  504  includes a printer macro command in column  502 A, and a corresponding description of that command in column  502 B. The printer macro commands in rows  504 A- 504 K are the same as the printer macro commands shown in  FIG. 2 . As shown in row  504 L of  FIG. 5 , a macro security command (Esc&amp;f11X) has been added to the set for macro security functionality. The macro security command is described in further detail below with reference to  FIGS. 6-10 . 
     FIG. 6  is a diagram illustrating an example PCL5® printer macro  600 , including a macro security command according to one embodiment of the present invention. Printer macro  600  is shown in a table that includes two columns  602 A and  602 B, and twenty-three rows  604 A- 604 W (collectively referred to as rows  604 ). Each row  604  includes a PCL5® command, or text, in column  602 A, and a corresponding description in column  602 B. Printer macro  600  is the same as printer macro  300  (shown in  FIG. 3 ), with the exception that a macro security command (Esc&amp;f11X)  606 A and a macro security data field  606 B have been added (in row  604 B) for macro security functionality. In one form of the invention, the macro security data field  606 B is used to store printer identification information (e.g., printer serial number(s)). 
   In one embodiment, each of the printer macros  114  in the printer file system  112  (shown in  FIG. 1 ) includes a macro security command  606 A and a macro security data field  606 B. As will be understood by persons of ordinary skill in the art, the provision of a macro security command  606 A and a macro security data field  606 B in a printer macro  114  may vary depending upon the type of macro and the printer language used. One embodiment of a macro security data field  606 B is shown in  FIG. 7 , and is identified by reference number  606 B- 1 . Another embodiment of a macro security data field  606 B is shown in  FIG. 9 , and is identified by reference number  606 B- 2 . These embodiments of macro security data field  606 B are described below with reference to  FIGS. 7-10 . 
     FIG. 7  is a diagram illustrating a macro security data field  606 B- 1  according to one embodiment of the present invention. Macro security data field  606 B- 1  is represented by a table that includes two columns  702 A and  702 B, and a printer serial number (PtrSerialNum) field  704 . The printer serial number field  704  includes two 8-bit bytes, which are a least significant byte (LSB—bits  0 - 7 ) and a most significant byte (MSB—bits  8 - 15 ). Column  702 A corresponds to the most significant byte, and column  702 B corresponds to the least significant byte. In one form of the invention, the printer serial number field  704  is used to store printer identification information (e.g., printer serial number(s)). 
     FIG. 8  is a flow diagram illustrating a printer macro security method  800  performed by printer  100  ( FIG. 1 ) according to one embodiment of the present invention. In step  802 , job manager  124  detects that a print job has requested one of the printer macros  114  in file system  112 . In step  804 , job manager  124  invokes macro license manager  130 , which checks the requested printer macro  114  for the presence of a serial number in the macro security data field  606 B- 1  ( FIG. 7 ). If a serial number is present, in step  806 , macro license manager  130  issues a query for the serial number  116  of printer  100 , and the serial number  116  is provided to macro license manager  130  by device state tracker  122  in response to the query. 
   In step  812 , macro license manager  130  compares the printer serial number  116  to the serial number in the macro security data field  606 B- 1  of the requested printer macro  114 , and determines if the values match. If the values match, in step  810 , macro license manager  130  informs Job manager  124  that the requested printer macro  114  can be used in the print job. If the values do not match, in step  816 , macro license manager  130  informs job manager  124  that the requested printer macro  114  cannot be used in the print job. In one embodiment, if the job manager  124  receives an indication that a requested printer macro  114  cannot be used in a print job, the job manager  124  rejects the print job and invokes user interface  120  to inform the user that the print job cannot be completed. 
   If it is determined in step  804  that the requested printer macro  114  does not include a printer serial number in the macro security data field  606 B- 1 , the method moves to step  808 . In step  808 , macro license manager  130  issues a query for the serial number  116  of printer  100 , and the serial number  116  is provided to macro license manager  130  by device state tracker  122  in response to the query. In step  814 , macro license manager  130  writes the printer serial number  116  to the macro security data field  606 B- 1  of the requested printer macro  114 , and saves the modified printer macro  114  back to the file system  112 . In step  818 , macro license manager  130  informs job manager  124  that the requested printer macro  114  can be used in the print job. 
   Sophisticated users may attempt to copy a printer macro  114  from one printer to another, and modify the serial number  116  in the macro security data field  606 B- 1  of the printer macro  114 . In one embodiment, the serial number data in the macro security data field  606 B- 1  is encrypted with a unique key by encryption manager  132  to protect the printer macro  114  from serial number manipulation attempts. Encryption manager  132  is invoked by macro license manager  130  to decrypt the serial number data in the macro security data field  606 B- 1  prior to making the serial number comparison in step  812  of method  800 . 
     FIG. 9  is a diagram illustrating a macro security data field  606 B- 2  according to another embodiment of the present invention. Macro security data field  606 B- 2  is represented by a table that includes three columns  902 A- 902 C, and five sub-fields  904 A- 904 E (collectively referred to as sub-fields  904 ). The first column  902 A identifies byte offset information for each sub-field  904 . The byte offset information identifies the position of the first byte of a given sub-field  904  relative to the first byte of the macro security data field  606 B- 2  (i.e., byte  0 ). As shown in  FIG. 9 , each sub-field  904  starts on an even byte offset and consumes two 8-bit bytes, including a least significant byte (LSB—bits  0 - 7 ) and a most significant byte (MSB—bits  8 - 15 ). Column  902 B corresponds to the most significant byte, and column  902 C corresponds to the least significant byte. 
   In one form of the invention, sub-field  904 A is a maximum printer count (MaxPtrCount) sub-field, which begins at byte offset zero, and consumes two bytes. In one embodiment, sub-fields  904 B- 904 E are printer serial number (PtrSerialNum) sub-fields that each begin at an even byte offset and consume two bytes. In one form of the invention, the printer serial number sub-fields  904 B- 904 E are used to store printer identification information (e.g., printer serial number(s)). In one embodiment, the maximum printer count sub-field  904 A includes a value that indicates the maximum number of printer serial numbers that can be written to sub-fields  904 B- 904 E. The number of printer serial number sub-fields  904 B- 904 E may vary from macro to macro, depending upon the number of licenses purchased for each macro. 
     FIG. 10  is a flow diagram illustrating a printer macro security method  1000  performed by printer  100  ( FIG. 1 ) according to another embodiment of the present invention. In step  1002 , job manager  124  detects that a print job has requested one of the printer macros  114  in file system  112 . In step  1004 , job manager  124  invokes macro license manager  130 , which checks the requested printer macro  114  for the presence of a serial number in the macro security data field  606 B- 2  ( FIG. 9 ). 
   If it is determined in step  1004  that the requested printer macro  114  does not include a printer serial number in the macro security data field  606 B- 2 , the method moves to step  1008 . In step  1008 , macro license manager  130  issues a query for the serial number  116  of printer  100 , and the serial number  116  is provided to macro license manager  130  by device state tracker  122  in response to the query. In step  1014 , macro license manager  130  writes the printer serial number  116  to the macro security data field  606 B- 2  in the requested printer macro  114 , and saves the modified printer macro  114  back to the file system  112 . In step  1020 , macro license manager  130  informs job manager  124  that the requested printer macro  114  can be used in the print job. 
   If it is determined in step  1004  that a serial number is present in the requested printer macro  114 , in step  1006 , macro license manager  130  issues a query for the serial number  116  of printer  100 , and the serial number  116  is provided to macro license manager  130  by device state tracker  122  in response to the query. In step  1012 , macro license manager  130  compares the printer serial number  116  to the serial number(s) in the macro security data field  606 B- 2  of the requested printer macro  114 , and determines if there is a match. If there is a match, in step  1010 , macro license manager  130  informs job manager  124  that the requested printer macro  114  can be used in the print job. If there is not a match, in step  1018 , macro license manager  130  determines whether the number of printer serial numbers in the macro security data field  606 B- 2  is less than the value specified in the maximum printer count sub-field  904 A. If the number of printer serial numbers in the macro security data field  606 B- 2  is not less than the value specified in sub-field  904 A, in step  1016 , macro license manager  130  informs job manager  124  that the requested printer macro  114  cannot be used in the print job. In one embodiment, if the job manager  124  receives an indication that a requested printer macro  114  cannot be used in a print job, the job manager  124  rejects the print job and invokes user interface  120  to inform the user that the print job cannot be completed. 
   If it is determined in step  1018  that the number of printer serial numbers in macro security data field  606 B- 2  is less than the value specified in sub-field  904 A, the method moves to step  1022 . In step  1022 , macro license manager  130  writes the printer serial number  116  to the macro security data field  606 B- 2  in the requested printer macro  114 , and saves the modified printer macro  114  back to the file system  112 . In step  1024 , macro license manager  130  informs job manager  124  that the requested printer macro  114  can be used in the print job. 
   In one embodiment, the serial number data in macro security data field  606 B- 2  and the maximum number of printers data in sub-field  904 A are both encrypted with a unique key by encryption manager  132  to protect the printer macro  114  from manipulation attempts. Encryption manager  132  is then invoked by macro license manager  130  to decrypt the data prior to making the comparisons in step  1012  and  1018  of method  1000 . 
   It will be understood by a person of ordinary skill in the art that functions performed by printer  100  may be implemented in hardware, software, firmware, or any combination thereof. The implementation may be via a microprocessor, programmable logic device, or state machine. Components of the present invention may reside in software on one or more computer-readable mediums. The term computer-readable medium as used herein is defined to include any kind of memory, volatile or non-volatile, such as floppy disks, hard disks, CD-ROMs, flash memory, read-only memory (ROM), and random access memory. 
   One form of the present invention provides a security mechanism to deter printer macro licensing violations, which involves incorporating a serial number of a printer into a printer macro&#39;s data structure. One form of the invention provides printer macro security by making a change to conventional printer firmware, and to conventional printer macro data structures. One embodiment of the present invention provides a printer macro security mechanism that is contained within a printer device. In one embodiment, printer macro entities are modified to allow for the storage of a printer serial number(s). One embodiment of the invention helps to prevent use of illegal copies of printer macros by “serializing” a printer macro to the first printer that used the printer macro, thereby configuring the printer macro to be used only on that one printer. In another embodiment, printer macros are “serialized” to a plurality of printers, so that the printer macros are useable on that plurality of printers, but not on other printers. 
   Although specific embodiments have been illustrated and described herein for purposes of description of the preferred embodiment, it will be appreciated by those of ordinary skill in the art that a wide variety of alternate and/or equivalent implementations may be substituted for the specific embodiments shown and described without departing from the scope of the present invention. Those with skill in the mechanical, electro-mechanical, electrical, and computer arts will readily appreciate that the present invention may be implemented in a very wide variety of embodiments. This application is intended to cover any adaptations or variations of the preferred embodiments discussed herein. Therefore, it is manifestly intended that this invention be limited only by the claims and the equivalents thereof.