Path independent print queues

In one embodiment, path data is received. The path data is indicative of a plurality of connectivity paths to electronically connect a computer and a printer. A graphic user interface is provided for display to a user, the interface to enable sending of print jobs to a print queue. The queue is to hold the print jobs to be sent to the printer, and is without limitation to a specific path among the plurality of paths. A command for the computer to send a first print job to the printer is received via the interface. The plurality of paths is monitored to identify an available path among the plurality of paths. The first print job is caused to be sent from the queue to the printer via the available path.

BACKGROUND

A user of a notebook computer, smartphone, or other computing device may send a print job to a printer for printing. The print job may include a document, image, or other content that is identified for printing via user interaction with an operating system, or a web browser or other application executing at the computer. Upon receipt of a user's instruction to print the content, the operating system or application typically provides a printer selection graphic user interface for display to the user.

The same part numbers designate the same or similar parts throughout the figures.

DETAILED DESCRIPTION OF EMBODIMENTS

A printer selection graphic user interface (also sometimes referred to herein as a “printer selection GUI”) presented to a user at a host computing device typically offers the user the opportunity to send a print job to a set of printers known to the host computing device. The printer selection GUI may be in the form of a print dialog window or a printer selection screen. In a common example, each printer icon displayed represents a specific printer, and a specific connectivity path to that printer. As each printer icon represents a single printer/path combination, experienced users may find this architecture useful for troubleshooting and other system level purposes.

However, a drawback associated with this architecture is that if a particular printer is actually accessible via multiple connectivity paths, multiple incidences of the printer are displayed at the printer selection GUI—e.g., one incidence of the printer for each connectivity path. For example if a user desires to send a print job from the host computer to a “ABC Office A1234” printer, the user may encounter a print selection screen displaying printer available for selections and print queues including “ABC Office A1234 ((cay22q5491.pro.abc.com)”, ABC Office A1234 (USB connection), ABC Office A1234 (home wireless), and ABC Office A1234 (office network). In this example, these multiple incidences of the ABC Office A1234 may be listed with a number of other printers, and some of these other printers may themselves be listed multiple times due to their being accessible via multiple paths.

A user, e.g., a user that is new to, or seldom encounters such a printer selection interface, may be confused by the multiple listings of the same printer, and choose a listing representing a path that is not available at that time. Even if the user is experienced, it is possible that what is thought to be an operating path is actually inoperable because of a loose cable connection, a power down at a home or office router, or a loss of internet connectivity, etc. Typically, if a chosen printer/path combination is unavailable at the time of the sending of the print job via the printer selection GUI, or if such printer/path combination becomes unavailable prior sending of the print job to the printer, the job remains in the print queue until the connectivity path is reestablished. This may be unacceptable to users in certain situations, e.g., if the print job is urgently needed or the user has limited familiarity with print queues. Furthermore, if the user prints the job via at an alternative printer, or via the same printer with a different connectivity path, it is common that the user will not take the step of deleting the print job from the initial print queue. There will likely be a supplies cost and user annoyance when the first-selected path becomes available and the print job that remains in the print queue prints for a second time. Such situations can cause user dissatisfaction with the host computer, the printer, or both.

Accordingly, various embodiments described herein were developed to provide for display to a user, a graphic user interface to enable sending of print jobs to a print queue, wherein the print queue is to hold the print jobs to be sent to the printer, without limitation to a specific connectivity path. In an example of the disclosure, a path independent print queue service (“PIPQ service”) that is executed at a computer receives path data. The path data is data indicative of a plurality of connectivity paths to electronically connect the computer and a printer. The PIPQ service provides, for display to a user, a graphic user interface to enable sending of print jobs to a print queue, wherein the print queue is to hold the print jobs to be sent to the printer, and is not limited to a specific path among the plurality of paths. The PIPQ service receives, via the interface, a command for the computer to send a first print job to the printer. The PIPQ service monitors the plurality of paths to identify an available path among the plurality of paths, and then cause sending of the first print job from the print queue to the printer via the identified available path.

As used in this application, a “connectivity path” refers to a route or course that a print job travels from a host computer to a printer. In examples, a connectivity path may include one or more of a cable, wireless, fiber optic, or remote connection via a telecommunication link, an infrared link, a radio frequency link, or some combination of these, or any other connectors or systems that provide electronic communication. In examples, a connectivity path may be a path within a network or across multiple networks. A “host computer” refers to a computing device that sends a print job to a printer by way of a network or other connectivity path. A “printer” or “printing device” refers to any thermal ink transfer printer, piezo ink transfer printer, dry toner-based printer, liquid toner-based printer, or any other electronic device that prints. “Printer” or “printing device” includes any multifunctional electronic device that performs a function such as scanning and/or copying in addition to printing. A “print job” refers to instructions and/car content for printing that can be stored in a programming language and/or numerical form so that it can stored and used in computing devices, servers, printers and other machines capable of performing calculations and manipulating data, A “print queue” refers to a memory location to hold print jobs designated for a printer until the printer receives the print job. “Polling” of available connectivity paths refers to a computer (e.g., a host computer or a printer) performing an inventory of paths that that have been previously used and/or are available to send print jobs from the host computer.

FIG. 1shows a computer102electronically connectable to a printer104via a first connectivity path106, a second connectivity path108, a third connectivity path110, and a fourth connectivity path112. Computer102represents generally any computing device or group of computing devices configured to send and receive network requests, send and receive data, and/or otherwise communicate with, the printer104via the first, second, third, and fourth connectivity paths106108110112. In examples, computer102may be or include a server, desktop computer, notebook computer, mobile device, tablet computer, and/or any other computing device.

Printer104represents generally any computing device or group of computing devices operable to produce a printed print job or printed content, and additionally operable to send and receive internet requests, receive printable content and print jobs, and otherwise communicate with the computer102. Each of connectivity paths106108110and112represents generally hardware components and computers interconnected by communications channels that allow sharing of resources and information. A connectivity path may include, at least in part, an intranet, the internet, or a combination of both. A connectivity path may also include intermediate proxies, routers, switches, load balancers, and the like. The distinct connectivity paths106108110and112as depicted inFIG. 1represent the logical communication paths between these devices, not necessarily the physical paths between the devices. In an example, the distinct connectivity paths between the computer102and the printer104represented by paths106,108,110and112may include a connectivity path via a USB connection, a connectivity path via a wired network, a connectivity path via a wireless network, and a connectivity path via an internet.

Computer102is shown to include PIPQ service114, a print queue116, a processor118, and a memory120. PIPQ service114represents generally any combination of hardware and programming configured to provide, for display to a user, a graphic user interface to enable sending of print jobs to a path-independent print queue. Print queue116represents generally a memory or memories to hold print jobs to be sent to a specified printer, without limitation to a particular or specified connectivity path from the computing device to the printer. Processor114represents generally any instruction execution system, such as a computer/processor based system or an ASIC (Application Specific Integrated Circuit), a computer, or other system that can fetch or obtain instructions or logic stored in memory120and execute the instructions or logic contained therein. Memory120represents generally any memory configured to store program instructions and other data.

In the example ofFIG. 1, the PIPQ service114receives path data122indicative of a plurality of connectivity paths106108110112to electronically connect the computer102and the printer. In an example, the path data122may be data generated via a polling of available paths conducted by a path polling service that is executed at computer122. In another example, the path data122may be data generated via a polling of available paths conducted by the printer, and is received by the PIPQ service114from the printer. In another example, the path data122may be data generated via input by a user126at the computer102, e.g., via an administrator application or system setup application configured to receive administrator user input regarding available connectivity paths between the computer102and the printer104. In another example in which the printer has a interface such as a touchscreen or keypad, a user may submit user input regarding available connectivity paths between the computer102and the printer104at the printer itself104. In another example, a user interacting with an interface at the printer104, e.g., a button, switch, touchscreen or any other interface, causes a web browser page that controls the printer to generate the path data122. In an example, the web browser page is a printer control page served by an embedded web server executing at the printer104. In yet another example, user interaction with an interface at the printer104initiates a printer set up procedure, and the set up procedure includes causing a printer control page executing at the printer104to generate the path data122.

After identification of the plurality of connectivity paths106108110112for connecting the computer102and the printer104, the PIPQ service provides a graphic user interface124for display to a user126. The graphic user interface124is to enable sending of print jobs to a print queue116in connection with receipt of a user directive via the interface124. The print queue116is a queue to hold the print jobs to be sent to the printer104, and is a queue without limitation to a specific path among the plurality of paths. In other words, print queue116is configured to hold any print job set to printer104via any of the plurality of connectivity paths106108110112, and is not specific to an particular path.

In the example ofFIG. 1, the user126sends a print command128via with the graphic user interface124, and the print command128is received by the PIPQ service114. The print command128is a command to the computer102to send a first print job130to the printer104. In an example, the user's126interaction with the graphic user interface124may be via user manipulation of an interface device such as a touchscreen, mouse, keyboard, or voice recognition system at the computer102. In another example, a user's interaction with the graphic user interface124may be via a touchpad, keypad, or other interface device at a second computing device in electronic communication with the computer102(e.g., a smartphone or other mobile device). The PIPQ service114monitors the plurality of paths106108110112to identify an available path110. After receipt of the print command128and identification of an available path126, the PIPQ service114causes the computer102to send the first print job130from the print queue116to the printer104via the available path110.

The functions and operations described with respect to PIPQ service114and computer102may be implemented as a non-transitory computer-readable storage medium containing instructions executed by a processor (e.g., processor118) and stored in a memory (e.g., memory120). In a given implementation, processor118may represent multiple processors, and memory120may represent multiple memories. Processor118represents generally any instruction execution system, such as a computer/processor based system or an ASIC (Application Specific Integrated Circuit), a computer, or other system that can fetch or obtain instructions or logic stored in memory120and execute the instructions or logic contained therein. Memory120represents generally any memory configured to store program instructions and other data.

FIG. 2is a block diagram illustrating a system according to various embodiments.FIG. 2includes particular components, modules, etc. according to various embodiments. However, in different embodiments, more, fewer, and/or other components, modules, arrangements of components/modules, etc. may be used according to the teachings described herein. In addition, various components, modules, etc. described herein may be implemented as one or more software modules, hardware modules, special purpose hardware (e.g., application specific hardware, application specific integrated circuits (ASICs), embedded controllers, hardwired circuitry, etc.), or some combination of these.

FIG. 2shows a computer system202electronically connectable to a printer204via USB connection connectivity path206, a wired network connectivity path208, a wireless network connectivity path210, and an internet connectivity path212. Computer system202represents generally any computing device or group of computing devices configured to send and receive network requests, send and receive data, and/or otherwise communicate with, the printer204via the USB, wired network, wireless network, and internet connectivity paths206208210212. In examples, computer system202may be or include a server, desktop computer, notebook computer, mobile device, tablet computer, and/or any other computing device.

Printer204represents generally any computing device or group of computing devices operable to produce a printed print job or printed content, and additionally operable to send and receive internet requests, receive printable content and print jobs, and otherwise communicate with the computer system202.

Each of connectivity paths206208210and212represents generally hardware components and computers interconnected by communications channels that allow sharing of resources and information. Any of the wired network, wireless network, or internet connectivity paths208210212may include, at least in part, an intranet, the internet, or a combination of both. Any of the wired network, wireless network, or internet connectivity paths208210212may also include intermediate proxies, routers, switches, bad balancers, and the like. The distinct USB, wired network, wireless network, and internet connectivity paths206208210212as depicted inFIG. 2represent the logical communication paths between these devices, not necessarily the physical paths between the devices. In one example of a wired network208, the computer202and the print204each are connected to a wired infrastructure network via LAN networking, including network cables and a hardwired access point. In one example of a wireless network208, the computer202and the print204each are connected to a wireless network via WLAN networking, including a wireless access point that allows wireless devices to connect to a LAN network using Wi-Fi, Bluetooth, infrared, or related standards. In another example of a wireless network208, there is a direct wireless connection or ad hoc network between the computer and the printer.

Computer system202is shown to include a PIPQ service214, a print queue216, a path data generator232, a content source application234, a processor218, and a memory220. PIPQ service214represents generally any combination of hardware and programming configured to provide, for display to a user, a graphic user interface to enable a use to identify a printer and send a print job to the printer via a path-independent print queue. The PIPQ service214includes a landscape module236, a graphic user interface module238, a command module240, an available path module242, and a job sending module244.

Print queue216represents generally a memory or storage location to hold print jobs to be sent to a specified printer, without limitation to a particular or specified connectivity path from the computing device to the printer. Path data generator232represents generally a service or module to generate path data indicative of a plurality of connectivity paths to electronically connect the computer system202and the printer. Content source application234represents generally a web browser, a word processing or imaging application, or any other computer application from which content can be identified and sent for printing as a print job. Processor214represents generally any instruction execution system, such as a computer/processor based system or an ASIC (Application Specific Integrated Circuit), a computer, or other system that can fetch or obtain instructions or logic stored in memory220and execute the instructions or logic contained therein. Memory220represents generally any memory configured to store program instructions and other data.

In the example ofFIG. 2, the path data generator232within the computer system202produces a list or record of connectivity paths to connect the computer system202with the printer204. In an example, the path data generator232at computer system202may create the path data222by conducting an electronic polling of available paths. In an example, polling may include performing an inventory of connectivity paths that that are available at the time of the inventory. In another example, polling may include performing an inventory of connectivity paths that that are available at the time of sending of the print request. In another example, polling may include performing an inventory of connectivity paths that that are expected to be available at a targeted time for printing. In another example, the printer204may include and execute a path data generator, such that the polling of available paths is conducted by the printer.

Continuing with the example ofFIG. 2, after the landscape module236receives the path data222from the path data generator232, the graphic user interface module238provides a graphic user interface224for display to a user226. In this example the graphic user interface224is in the form of a “print dialog window” to enable a user, via interaction with the interface224to send print jobs to the printer204via to print queue216. In another example, the graphic user interface224may indicate the status, health, or other attributes print jobs held in the print queue.

The print queue216is a queue to hold the print jobs to be sent to the printer204and is without limitation to a specific path among the plurality of paths206208210212. In the example ofFIG. 2, the print queue216is a location in memory within the computer system202. In another example, the print queue216may be located in a memory within a third computer separate from the second computer system202and the printer204. For example, in large printing environments, the print queue may be maintained at a centralized print server.

Continuing with the example ofFIG. 2, the user226views the content246made available to the user226by a content source application234executing at computer system202. In an example, the content is displayed to the user226via a monitor, touchscreen, or other display device at computer system202, or at a mobile device or other second computing device electronically connected to the computer system202. In one example, the content source application234is a web browser and the content246is web content. In another example, the content source application234is a word processing application and the content is text and pictorial content.

The user226, via a user interface device such as a mouse, keyboard, or touchpad, identifies certain content within the content source application234for printing at printer204. The user226, by interacting with a “Print” button248included within the graphic user interface224, initiates a print command228that creates a first print job230that includes the content246.

The command module240receives the print command228that is sent via the graphic user interface224and instructs the computer system202to send the first print job230to the printer204. The available path module242monitors the plurality of paths206208210212to identify the wired network connectivity path208an available path. After identification of the wired network208as an available path, the job sending module244causes the computer system202to send the first print job230from the print queue216to the printer204via the available wired network path210. The printer204in turn prints the first print job230to create printed output250.

The functions and operations described with respect to PIPQ service214and computer system202may be implemented as a non-transitory computer-readable storage medium containing instructions executed by a processor (e.g., processor218) and stored in a memory (e.g., memory220). In a given implementation, processor218may represent multiple processors, and memory220may represent multiple memories. Processor218represents generally any instruction execution system, such as a computer/processor based system or an ASIC (Application Specific Integrated Circuit), a computer, or other system that can fetch or obtain instructions or logic stored in memory220and execute the instructions or logic contained therein. Memory220represents generally any memory configured to store program instructions and other data.

FIG. 3is a block diagram illustrating a system according to various embodiments.FIG. 3includes particular components, modules, etc. according to various embodiments. However, in different embodiments, more, fewer, and/or other components, modules, arrangements of components/modules, etc. may be used according to the teachings described herein. In addition, various components, modules, etc. described herein may be implemented as one or more software modules, hardware modules, special purpose hardware (e.g., application specific hardware, application specific integrated circuits (ASICs), embedded controllers, hardwired circuitry, etc.), or some combination of these.

FIG. 3shows a computer system302electronically connectable to a printer304via USB connection connectivity path306, a wired network connectivity path308, a wireless network connectivity path310, and an internet connectivity path312. Computer system302represents generally any computing device or group of computing devices configured to send and receive network requests, send and receive data, and/or otherwise communicate with, the printer304via the USB, wired network, wireless network, and internet connectivity paths306308310312. In examples, computer system302may be or include a server, desktop computer, notebook computer, mobile device, tablet computer, and/or any other computing device.

Printer304represents generally any computing device or group of computing devices operable to produce a printed print job or printed content, and additionally operable to send and receive internet requests, receive printable content and print jobs, and otherwise communicate with the computer system302.

Each of connectivity paths306308310and312represents generally hardware components and computers interconnected by communications channels that allow sharing of resources and information. The USB, wired network, wireless network, and internet connectivity paths306308310312as depicted inFIG. 3represent the logical communication paths between these devices, not necessarily the physical paths between the devices.

Computer system302is shown to include a PIPQ service314, a print queue316, a printer management service354, a path preference database358, a content source application334, a processor318, and a memory320. PIPQ service314represents generally any combination of hardware and programming configured to provide, for display to a user, a graphic user interface to enable a use to identify a printer and send a print job to the printer via a path-independent print queue. The PIPQ service314includes a landscape module336, a graphic user interface module338, a command module340, an available path module342, a preferred path module352, and a job sending module344.

Print queue316represents generally a memory or storage location to hold print jobs to be sent to a specified printer, without limitation to a particular or specified connectivity path from the computing device to the printer. Printer management service354represents generally a service or module to enable a user to provide path data to the PIPQ service314. Path preference database358represents generally a database, registry, lookup table or list that holds preference data that can be utilized to determine or select a preferred available path between the computer system302and the printer304. Content source application334represents generally a web browser, a word processing or imaging application, or any other computer application from which content can be identified and sent for printing as a print job. Processor314represents generally any instruction execution system, such as a computer/processor based system or an ASIC (Application Specific Integrated Circuit), a computer, or other system that can fetch or obtain instructions or logic stored in memory320and execute the instructions or logic contained therein. Memory320represents generally any memory configured to store program instructions and other data.

In the example ofFIG. 3, a printer management service354executing at the computer system302receives from a user, e.g., an administrator user356, path data322including a list or record of connectivity paths to connect the computer system302with the printer304. In another example, the path data322may be received from the administrator user356via user input at a computing device that is separate from, but electronically connected to, the computer system302.

The landscape module336that executes at PIPQ service314at the computing device302receives the user-supplied path data322from the printer management service354. In turn, the graphic user interface module338provides a graphic user interface324for display to a user326. In this example the graphic user interface324is in the form of a “printer selection screen” to enable a user, via interaction with the interface324to send print jobs to the printer304via to print queue316. The print queue316is a queue to hold the print jobs to be sent to the printer304, and is without limitation to a specific path among the plurality of paths306308310312.

Continuing with the example ofFIG. 3, the user326views the content346made available to the user326by a content source application334executing at computer system302. In an example, the content is displayed to the user326via a monitor, touchscreen, or other display device at computer system302, or at a mobile device or other second computing device electronically connected to the computer system302. The user326, via a user interface device such as a mouse, keyboard, or touchpad, identifies particular content provided by the content source application334for printing at printer304. The user326, by interacting with a “Print” button348included within the graphic user interface324, initiates a print command328that creates a first print job330that includes the content346.

The command module340receives the print command328that is sent via the graphic user interface324and instructs the computer system302to send the first print job330to the printer304. The available path module342monitors the plurality of paths306308310312to identify a set of available connectivity path308as available paths. In this example, the available path module342identifies each of the USB connection path306, the wired connection paths308, the wireless connection path310, and the internet path312as members of the set of available connectivity paths.

In the example ofFIG. 3, after the available path module342identifies the set of available paths, the preferred path module352designates, from the set, a preferred available path according to preference data. In the example ofFIG. 3, the USB connection path306is identified as the preferred available path in accordance with “connection history” preference data356stored at a path preference database358at computer system302. The connection history preference data includes a preference instruction, a preference formula, a preference algorithm, or a preference ranking that the preferred path module352utilizes in determining a preferred available path among the set of available paths.

In one example, the preference data356includes a preference instruction, a preference formula, a preference algorithm, or a preference ranking based upon projected times to printing for each of the available paths within the set. In an example, the projected time printing ranking is created at least in part based upon historical data of times to print for the paths within the available set. The preferred available path is designated in consideration of the projected times to printing.

In another example, the preference data356includes a preference instruction, a preference formula, a preference algorithm, or a preference ranking based upon a security ranking for each of the available paths within the set. The preferred available path is designated in consideration of the security rankings. In a particular example in which the preferred available path is designated in consideration of the security rankings, the print job is encrypted prior to being sent from the print queue316to the printer. In another example, the preference data356includes a preference instruction, a preference formula, a preference algorithm, or a preference ranking based upon a reliability ranking for each of the available paths within the set. In an example, the reliability ranking is created at least in part based upon a database or folder describing successful connections and/or unsuccessful connection attempts. The preferred available path is designated in consideration of the reliability rankings.

In yet another example, the preference data356includes a preference instruction, a preference formula, a preference algorithm, or a preference ranking based upon a data transmission cost for each of the available paths within the set. For example, the preference data356may indicate a preference for the USB connection306and the wired network308over the wireless network connectivity path310and the internet connectivity path310due to cellular airtime or other access charges associated with the wireless and the internet connectivity networks310312. Similarly, the USB connection connectivity path306may be deemed preferable over the wired network308connectivity path308due to service charges associated with maintaining the wired network. The preferred path module352designates the preferred available path in consideration of the projected data transmission cost.

In the example ofFIG. 3, after the preferred path module352identifies the USB connection connectivity path306as the preferred available path, the job sending module344causes the computer system302to send the first print job330from the print queue316to the printer304via the preferred available USB connection connectivity path306. The printer304in turn prints the first print job330to create printed output350.

The functions and operations described with respect to PIPQ service314and computer system302may be implemented as a non-transitory computer-readable storage medium containing instructions executed by a processor (e.g., processor318) and stored in a memory (e.g., memory320). In a given implementation, processor318may represent multiple processors, and memory320may represent multiple memories. Processor318represents generally any instruction execution system, such as a computer/processor based system or an ASIC (Application Specific Integrated Circuit), a computer, or other system that can fetch or obtain instructions or logic stored in memory320and execute the instructions or logic contained therein. Memory320represents generally any memory configured to store program instructions and other data.

FIG. 4is a screen shot depicting an example of a printer selection graphic user interface, according to various embodiments. In an example, a PIPQ service, after receipt of path data indicative of a plurality of connectivity paths to electronically connect a host computer to a printer404designated as “Ken's Printer—Office”, provides a graphic user interface402for display to a user. The graphic user interface402is to enable sending of print jobs to a print queue, wherein the queue is to hold the print jobs to be sent to the printer404, and the print queue is without limitation406to a specific path among the plurality of paths.

In this example, upon a user's selection of the “Ken's Printer-Office”404printer and interaction with the “Print” button408included within the display, a print command is sent to the PIPQ service. The command is for the host computer to send the print job to the printer. Responsive to receipt of the print command, the PIPQ service monitors a plurality of connectivity paths to the printer to identify an available path among the plurality of paths. Upon identification of an available path, the PIPQ service causes the first print job to be sent from the print queue to the printer via the available path.

FIG. 5is a flow diagram of operation in a system according to various embodiments. In discussingFIG. 5, reference may be made to the diagrams ofFIGS. 2, 3 and 4to provide contextual examples. Implementation, however, is not limited to those examples. Starting withFIG. 5, path data is received. The path data is indicative of a plurality of connectivity paths to electronically connect a computer and a printer (block502). Referring back toFIGS. 2, 3 and 4, the landscape module236336436may be responsible for implementing block502.

Continuing withFIG. 5, a graphic user interface is provided, the interface for display to a user to enable sending of print jobs to a print queue. The print queue is to hold the print jobs to be sent to the printer, and is without limitation to a specific path among the plurality of paths (block504). Referring back toFIGS. 2, 3 and 4, the graphic use interface module238338438may be responsible for implementing block504.

Continuing withFIG. 5, a command for the computer to send a first print job to the printer is received via the interface (block506). Referring back toFIGS. 2, 3 and 4, the command module240340440may be responsible for implementing block506.

Continuing withFIG. 5, the plurality of paths is monitored to identify an available path among the plurality of paths (block508). Referring back toFIGS. 2, 3 and 4, the available path module242342442may be responsible for implementing block508.

Continuing withFIG. 5, the first print job is caused to be sent from the print queue to the printer via the available path (block510). Referring back toFIGS. 2, 3 and 4, the job sending module244344444may be responsible for implementing block510.

Various modifications may be made to the disclosed embodiments and implementations without departing from their scope. Therefore, the illustrations and examples herein should be construed in an illustrative, and not a restrictive, sense.