The present invention relates to printers and print drivers.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Currently, there is no unified solution for users to print electronic documents at remotely located printing devices. For example, a user who wishes to print an electronic document as a spiral-bound book has to search for a print services provider that provides a printing device capable of printing spiral-bound books, locate the print services provider, and deliver the electronic document, along with any print settings customizations, to the print services provider. In order to perform these steps, the user will likely access several different software applications to search for and locate the print services provider, utilize the telephone network or the public network to communicate with the print services provider to inquire about the device capabilities of the printing devices at the print services provider, and physically deliver the electronic document to the print services provider, along with instructions containing print setting customizations. This is a tedious, multi-step process that requires much time and effort from users.
Also, there is no unified solution for users to print remotely located electronic documents at remotely located printing devices. For example, a user arrives at an airport and realizes that he forgot to print an electronic document for a meeting at the destination. The user wishes to print the electronic document at a printing device located near the destination, but does not have the electronic document on his laptop. However, the electronic document is located on a remote document server. Currently, there is no convenient way for the user to print the electronic document to a printing device located near the destination.
In another example, a user arrives at an airport and wishes to print a copy of his travel itinerary to a printing device located at the airport. The user does not have a laptop with him, but the travel itinerary is located on a remote server. Currently, however, there is no unified solution that allows the user to access and print the travel itinerary to the printing device located at the airport.
Printing devices register with a server and provide information to the server regarding the printing devices' physical location, IP address, and device capabilities. A user sends a request, through printer driver software installed on the user's client device (hereinafter, “printer driver”), to the server for information regarding available printing devices at or around a particular geographic location. In response, the server provides the requested information to printer driver, which includes identification of the available printing devices and the physical locations and device capabilities of the available printing devices. Based on the information provided by the server, the printer driver can access a map service to present map data to the user that indicates where the available printing devices are located. The printer driver can also display the available printing devices' device capabilities to the user as customizable print settings. The user selects a particular printing device from the available printing devices, customizes the print settings for the particular printing device, and indicates to the print driver that a particular electronic document is to be printed to the particular printing device using the customized print settings. In response, the print driver generates a print job for the particular electronic document, based on the customized print settings, and submits the print job to the particular printing device for printing.
According to one embodiment, users store electronic documents on document servers that are also registered with the server. The printer driver can communicate with the server to identify registered document servers. A user who wishes to print an electronic document that is stored on a document server provides authentication data (e.g., user name and password) to the printer driver, which then sends the authentication data to the document server. The document server, in response to receiving the authentication data, communicates to the printer driver which electronic documents on the document server are available to and can be printed by the user. The printer driver displays the identity of the available electronic documents to the user, who then selects a particular electronic document for printing. The printer driver downloads the particular electronic document from the document server. The user selects a printing device and customizes print settings as just described above. The printer driver generates a print job for the downloaded electronic document, based on the customized print settings, and submits the print job to the particular printing device for printing.
According to another embodiment where users store electronic documents on document servers that are registered with the server, a printing device provides a user interface through which a user may provide authentication data. The printing device communicates with the server to identify registered document servers. The printing device sends authentication data to a registered document server, and in response receives information regarding which electronic documents on the registered document server are available to the user for printing. The available documents are displayed to the user, and the user selects an electronic document for printing through the user interface. The selected electronic document is printed by the printing device.
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
I. OVERVIEW
II. LOCATING AND PRINTING TO REMOTE PRINTING DEVICES
III. PRINTING REMOTE DOCUMENTS TO REMOTE PRINTING DEVICES
IV. PRINTING DIRECTLY AT A PRINTING DEVICE
V. IMPLEMENTATION MECHANISMS
Printing devices register with a server and provide information to the server regarding the printing devices' physical location, IP address, and device capabilities. A user sends a request, through printer driver software installed on the user's client device (hereinafter, “printer driver”), to the server for information regarding available printing devices at or around a particular geographic location. In response, the server provides the requested information to printer driver, which includes identification of the available printing devices and the physical locations and device capabilities of the available printing devices. Based on the information provided by the server, the printer driver can access a map service to present map data to the user that indicates where the available printing devices are located. The printer driver can also display the available printing devices' device capabilities to the user as customizable print settings. The user selects a particular printing device from the available printing devices, customizes the print settings for the particular printing device, and indicates to the print driver that a particular electronic document is to be printed to the particular printing device using the customized print settings. In response, the print driver generates a print job for the particular electronic document, based on the customized print settings, and submits the print job to the particular printing device for printing.
According to one embodiment, users store electronic documents on document servers that are also registered with the server. The printer driver can communicate with the server to identify registered document servers. A user who wishes to print an electronic document that is stored on a document server provides authentication data (e.g., user name and password) to the printer driver, which then sends the authentication data to the document server. The document server, in response to receiving the authentication data, communicates to the printer driver which electronic documents on the document server are available to and can be printed by the user. The printer driver displays the identity of the available electronic documents to the user, who then selects a particular electronic document for printing. The printer driver downloads the particular electronic document from the document server. The user selects a printing device and customizes print settings as just described above. The printer driver generates a print job for the downloaded electronic document, based on the customized print settings, and submits the print job to the particular printing device for printing.
According to another embodiment where users store electronic documents on document servers that are registered with the server, a printing device provides a user interface through which a user may provide authentication data. The printing device communicates with the server to identify registered document servers. The printing device sends authentication data to a registered document server, and in response receives information regarding which electronic documents on the registered document server are available to the user for printing. The available documents are displayed to the user, and the user selects an electronic document for printing through the user interface. The selected electronic document is printed by the printing device.
In the example depicted in
Server 108 communicates with print server 104 to enable print server 104 to register printing devices (i.e., printing devices 106) with server 108. In an alternative embodiment, individual printing devices directly register with server 108. When a printing device is registered with server 108, information about the registering printing device is provided to the server 108. This information may include, for example, the printing device's IP address, device capabilities (e.g., duplex, stapler, color/black&white, hole punch, etc.), and physical location. In one embodiment, during registration, a printing device provides server 108 with information specifically requested by server 108. For example, server 108 may specifically request for the registering printing device's device capabilities.
Map server 112 is a repository of map data and provides map data to various elements (e.g., server 108 and client 110) upon request. Map server 112 may be owned or controlled by a map services provider, also referred to herein as “map service”, such as Google maps or MapQuest.
Client device 110 may be any type of client device, including, without limitation, a desktop computer, a laptop computer, a personal digital assistant (PDA), a mobile device and a telephony device. Client device 110 includes printer driver software (not depicted in
According to one embodiment of the invention, the printer driver on a client device (e.g., client device 110) is configured to generate a graphical user interface that allows users to locate, access and print to printing devices (e.g., printing devices 106) that are registered with a server (e.g., server 108). The user interface may be implemented by any mechanism(s) and/or process(es) that allow for the exchange of information between the client device and users. Examples of user interface include, without limitation, a display, such as a cathode ray tube (CRT) or liquid crystal display (LCD), and an input device, such as a keypad, touchpad, touch screen, keyboard or mouse, or any combination of displays and input devices.
In this example, the user wishes to print the particular photo to a printer that has the capability to print photos on photographic paper, and knows that the printers 204 do not have this capability. The user selects “Hotspot Printer Driver” 206 to search for printing devices that do have this capability. In this example, the selection of “Hotspot Printer Driver” 206 is an indication that the user wishes to print to remotely located printing devices that are registered with a server. A user's desire to print to remotely located printing devices that are registered with a server may be indicated through a variety of different ways in other embodiments with different user interfaces. Remotely located printing devices are printing devices that are not already directly known and accessible by the client device, but which are registered with the server. As such, remotely located printing devices may also include printing devices that are on the same local network as the client device, but which are not already known by the client device and which have registered with the server.
In this example, when the user selects “Hotspot Printer Driver” 206, the printer driver generates a printing device selection screen 300 as depicted in
In response to the request sent by the printer driver, the server sends information to the client device about “hotspot printers” that are physically located within the user-specified range of the user-specified physical location. This information is referred to as “printing device identification data” and may include: the printing devices' description, physical location, IP address, and device capabilities. A printing device's device capabilities may be described in an XML file.
The printing device identification data is processed by the printer driver, which displays the printing device identification data to the user as a list of available printers in interface 300. As depicted in
In addition, the printer driver may be configured to request, receive, and display map data for the printing devices. For example, in response to user expansion of printer 310, as depicted in
Similarly, the printer driver may be configured to request, receive, and display directions data for the printing devices. In
The user may successively select different remote printing devices from the list of “hotspot printers” 308 to view an expanded display of the selected printing device and to view a map and directions for the selected printing device. In addition, the print settings for a selected printing device may be modified by the user, within the limits set by the selected printing device's device capabilities. When the user decides that he or she would like to select a particular printing device for printing, the particular printing device's print settings, as modified by the user, are used by the printer driver to generate the print job.
The printer driver generates a print job that reflects the electronic document to be printed and the print settings modified by the user for the selected printing device. The electronic document to be printed may be selected by the user, and may be stored locally on the client device or remotely on a document server. Further description of the scenario where the electronic document to be printed is stored on a remote document server is provided below.
According to one embodiment, the printing devices are Web service-enabled printing devices. The World Wide Web Consortium (“W3C”) is an international consortium that develops standards for the World Wide Web. The W3C defines a “web service” as a software system that is designed to support interoperable machine-to-machine interaction over a network. This definition encompasses many different systems, but in common usage, the term refers to those services that use Simple Object Access Protocol (SOAP)-formatted Extensible Markup Language (“XML”) envelopes and that have their interfaces described using Web Services Description Language (“WSDL”). Web services allow devices and applications to communicate with each other over one or more networks without the intervention of any human being, while using the same suite of protocols (e.g., Hypertext Transfer Protocol (“HTTP”)) that a human being would use to communicate with such devices and applications over one or more networks.
Web service-enable printing devices provide a WSD (“Web Service Device”) print service. As part of providing a WSD print service, Web service-enabled printing devices perform functions such as: provide device capabilities upon request, provide default printer configuration, default status of the printer, location information such as the physical address of the device, and in some cases a user interface to allow users to interact with the devices. Print jobs submitted to Web service-enabled printing device comprise a print ticket and print data. The print ticket is in XML format and contains metadata that indicates formatting and print settings. The print data portion of the print job contains data that reflect the data in the electronic document to be printed.
According to another embodiment, the remote printing devices are not Web service-enabled printing devices. In this embodiment, the printer driver generates print jobs that may be interpreted and printed by the printing device selected for printing. For example, it is common for a non-Web-service-enabled printing device to accept print jobs that contain only print data, where the format and print settings for the print job are embedded in the print data itself. For such a printing device, the printer driver generates a print job that conforms contains only print data, with print settings embedded in the print data. Print jobs, or print data, for non-Web-Service-enabled printers are often written in common printer languages such as Printer Command Language (PCL) and Postscript (PS). Hence, the printer driver is configured to generate print jobs and print data in the PCL and PS printer languages.
In step 404, the printer driver on a client device sends a request to the server for identification of registered printing devices near a specified location. As discussed above, the specified location may be a location specified by a user of a client device (such as client device 110) through a user interface (such as user interface 300) generated by the printer driver. In response to the request, the server determines which of the registered printing devices and print servers are located near the specified location. The printer driver may also include, in its request a specified range, in which case the server determines which of the registered printing devices and print servers are located within the specific range of the specified location. In order to make this determination, the server communicates with a map service (step 406). The map service may be provided through a map server such as map server 112 in
Once the server has determined which printing devices and print servers satisfy the location criteria specified by the printer driver software, the server sends printing device identification data to the printer driver software that includes information for the printing devices and print servers that satisfy the location criteria specified by the printer driver software (step 408). The printer driver may then also communicate with the map service to request and receive map data used to display maps and directions for a printing device to the user (step 410). Finally, once the user has selected a particular printing device, the printer driver software generates a print job for printing to the particular remote printing device, and submits the print job to the selected printing device (step 412).
According to one embodiment, the electronic document that is printed to a remote printing device is stored on a document server, not locally on a client device. The following description discusses this embodiment in detail.
Print services provider 502 includes print server 504 and printing devices 506A, 506B, 506C, and 506D (collectively, the printing devices 506). The print server 504 accepts print jobs on behalf of the printing devices 506 and distributes the accepted print jobs to the printing devices 506. Printing devices 506 may be any type of device that is capable of processing print jobs and generating a printed version of an electronic document reflected in the print job. Examples of printing devices 506 include, without limitation, printers, network-enabled copy machines and multi-function peripherals (MFPs), and the approaches described herein are not limited to any particular type of printing devices 506. Embodiments of the invention are described herein in the context of the four printing devices depicted in
Server 508 communicates with print server 504 to enable print server 504 to register printing devices (i.e., printing devices 506) with server 508. In an alternative embodiment, individual printing devices directly register with server 508. When a printing device is registered with server 508, information about the registering printing device is provided to the server 508. This information may include the printing device's IP address, device capabilities (e.g., duplex, stapler, color, etc.), and physical location. In one embodiment, during registration, a printing device provides server 508 with information specifically requested by server 508. For example, server 508 may specifically request for the registering printing device's device capabilities.
Document server 514 is a repository of electronic documents. Users may establish accounts that allow users to deposit and retrieve documents from document server 514. Such user accounts may be established as a result of users subscribing to a document storage subscription service. In establishing an account, a user usually establishes a user name and password, with which the user uses to login to his account and to access documents stored under the account on the document server. The user name and password for a user account is also referred to herein as “authentication data”. Document server 514 is depicted as a single server in
Server 508 communicates with document server 514 to enable document server 514 to register with the server 508. When a document server is registered with server 508, information about the document server is provided to server 508, such as the document server's IP address.
Map server 512 is a repository of map data and provides map data to various elements (e.g., server 508 and client 510) upon request. Map server 512 may be owned or controlled by a map services provider, also referred to herein as “map service”, such as Google maps.
Client device 510 may be any type of client device, including, without limitation, a desktop computer, a laptop computer, a personal digital assistant (PDA), a mobile device and a telephony device. Client device 510 includes printer driver software (not depicted in
When the printer driver on client device 510 generates a print job, the print job reflects a particular electronic document that may be stored remotely at the document server 514 instead of locally on client device 510. In one embodiment, the server 508 communicates the IP address of document server 514 to the printer driver on client device 510. A user who wishes to print an electronic document that is stored on document server 514 provides authentication data (e.g., user name and password) to the printer driver on client device 510, which then sends the authentication data to the document server 514 to login to the user's account. In response, the document server 514 authenticates the user using the authentication data, and provides document identification data to the client device 510. The document identification data identifies the available electronic documents on document server 514 that may be accessed and printed by the user.
The printer driver software on client device 510 displays the available electronic documents to the user, and the user selects a particular electronic document for printing. This selection is communicated from the client device 510 to the document server 514, and the electronic document is downloaded from document server 514 to client device 510. At client device 510, after receipt of the electronic document that is to be printed, the printer driver generates a print job based on the electronic document. This print job is submitted to a selected printing device for printing.
In another embodiment, the user-provided authentication data is not communicated to the document server 514, but to server 508, which then communicates the authentication data to document server 514. Similarly, document identification data from document server 514 may be sent to the client device 510 via server 508, document selection from client device 510 may be sent to document server 514 via server 508, and the selected electronic document may be downloaded from document server 514 to client device 510 via server 508. Hence, in this embodiment, there are no direct communications between the client device 510 and the document server 514, and the server 508 acts as an intermediary node between client device 510 and document server 514.
In one embodiment, there may be multiple document servers from which a user may access electronic documents for printing. In such a case, each document server registers with the server. If there are direct communications between a client device and the multiple document servers, then the IP addresses of the documents servers may be communicated from the server to the client device and the client device may directly authenticate and communicate with each document server. Alternatively, the server may act as an intermediary between the client device and the document servers. In the case where the server acts as an intermediary, the user of a client device may provide a single set of authentication data to the server to be used as authentication data to all the document servers or multiple sets of authentication data for each of the multiple document servers.
According to one embodiment of the invention, the printer driver on a client device (e.g., client device 510) is configured to generate a graphical user interface that allows users to retrieve electronic documents from a document server (e.g., document server 514) and to access and print the electronic documents to printing devices (e.g., printing devices 506) that are registered with a server (e.g., server 508). The user interface may be implemented by any mechanism(s) and/or process(es) that allow for the exchange of information between the client device and users. Examples of user interface include, without limitation, a display, such as a cathode ray tube (CRT) or liquid crystal display (LCD), and an input device, such as a keypad, touchpad, touch screen, keyboard or mouse, or any combination of displays and input devices.
An example of a printer selection screen is printer selection screen 300 in
Once a printer selection screen is launched, the user may interact with the printer selection screen to specify a location and location range, retrieve a list of printers, modify printer settings, etc., as discussed above with respect to
In addition, the user may launch a document selection screen, such as the document selection screen 700 in
As depicted in
Information about the available electronic documents, also referred to herein as “document identification data”, is displayed by the printer driver to the user. For example, in
In step 804, document servers register with the server. Document server 514 in
In step 806, the printer driver on a client device sends a request to the server for identification of printing devices near a specified location. As already discussed above, the specified location may be a location specified by a user of the client device through a user interface generated by the printer driver software. In response to the request from the client device, the server determines which of the remote printing devices and print servers that are registered with the server are located near the specified location. The printer driver software may also have specified a specific range, in which case the server determines which of the remote printing devices and print servers that are registered with the server are located with the specific range of the specified location. In order to make this determination, the server communicates with a map service (step 808).
Once the server has determined which remote printing devices and print servers satisfy the location criteria specified by the printer driver, the server sends printing device identification data to the printer driver software that includes information for the remote printing devices and print servers satisfy the location criteria specified by the printer driver (step 810). The printer driver may then also communicate with the map service to request and receive map data that is used to display maps and directions for a remote printing device to the user (step 812).
The user may indicate that he or she wishes to print an electronic document that is located on a document server. In such a case, the printer driver software requests and receives from the printer server the IP address of the remote document server that has been registered with the server (step 814). Although in the example illustrated by
In step 816 (
Finally, once the user has selected a particular printing device, the printer driver software generates a print job for printing the selected document to the selected printing device, and submits the print job to the selected printing device (step 824).
According to one embodiment, techniques are provided where a user prints an electronic document located on a remote document server to a printing device without use of a client device. These techniques are discussed in detail below.
Printing device 902 may be any type of device that is capable of processing print jobs and generating a printed version of an electronic document reflected in the print job. Examples of printing devices include, without limitation, printers, network-enabled copy achiness and multi-function peripherals (MFPs), and the approaches described herein are not limited to any particular type of printing devices.
Printing device 902 communicates with server 904 and registers with server 904. When a printing device is registered with server 904, information such as the printing device's IP address, printing capabilities (e.g., duplex, stapler, color, etc.), and physical location may be communicated to server 904. Document server 906 also communicates and registers with server 904.
Printing device 902 includes a user interface such as user interface panel 1000 in
In another embodiment, the printing device 902 requests the document from document server 906 in the form of a print job. In this embodiment, the document server 906 generates a print job for printing the selected document to printing device 902, and sends this print job to the printing device 902 for printing.
In step 1106, the printing device requests and receives a document server's IP address from the server. This step may be performed in response to a user indicating that he or she wishes to print a document stored on the document server. For example, the user may have used a user interface like user interface panel 1000 in
In step 1108, the printing device sends the user-entered authentication data to the document server. In response, the document server sends document identification data to the remote printing device that indicates which documents are available for printing (step 1110). At this point, the document identification data may be displayed to the user. If the user selects a particular document for printing, then the printing device requests the particular document from the document server (step 1112). The document is received from the document server (step 1112), and the remote printing device may then proceed to generate a print job for the document.
According to one embodiment of the invention, the techniques described herein are implemented by one or more special-purpose computing devices. The special-purpose computing devices may be hard-wired to perform the techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, or FPGAs with custom programming to accomplish the techniques. The special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, networking devices or any other device that incorporates hard-wired and/or program logic to implement the techniques.
Computer system 1200 may be coupled via bus 1202 to a display 1212, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 1214, including alphanumeric and other keys, is coupled to bus 1202 for communicating information and command selections to processor 1204. Another type of user input device is cursor control 1216, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 1204 and for controlling cursor movement on display 1212. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
Computer system 1200 may implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic or computer software which, in combination with the computer system, causes or programs computer system 1200 to be a special-purpose machine. According to one embodiment of the invention, those techniques are performed by computer system 1200 in response to processor 1204 executing one or more sequences of one or more instructions contained in main memory 1206. Such instructions may be read into main memory 1206 from another computer-readable medium, such as storage device 1210. Execution of the sequences of instructions contained in main memory 1206 causes processor 1204 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
The term “computer-readable medium” as used herein refers to any medium that participates in providing data that causes a computer to operation in a specific manner. In an embodiment implemented using computer system 1200, various computer-readable media are involved, for example, in providing instructions to processor 1204 for execution. Such a medium may take many forms, including but not limited to, non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 1210. Volatile media includes dynamic memory, such as main memory 1206. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or memory cartridge, or any other medium from which a computer can read.
Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to processor 1204 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 1200 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 1202. Bus 1202 carries the data to main memory 1206, from which processor 1204 retrieves and executes the instructions. The instructions received by main memory 1206 may optionally be stored on storage device 1210 either before or after execution by processor 1204.
Computer system 1200 also includes a communication interface 1218 coupled to bus 1202. Communication interface 1218 provides a two-way data communication coupling to a network link 1220 that is connected to a local network 1222. For example, communication interface 1218 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 1218 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 1218 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
Network link 1220 typically provides data communication through one or more networks to other data devices. For example, network link 1220 may provide a connection through local network 1222 to a host computer 1224 or to data equipment operated by an Internet Service Provider (ISP) 1226. ISP 1226 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 1228. Local network 1222 and Internet 1228 both use electrical, electromagnetic or optical signals that carry digital data streams.
Computer system 1200 can send messages and receive data, including program code, through the network(s), network link 1220 and communication interface 1218. In the Internet example, a server 1230 might transmit a requested code for an application program through Internet 1228, ISP 1226, local network 1222 and communication interface 1218. The received code may be executed by processor 1204 as it is received, and/or stored in storage device 1210, or other non-volatile storage for later execution.
In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is, and is intended by the applicants to be, the invention is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.