%PDF- %PDF-
Direktori : /usr/share/hplip/base/ |
Current File : //usr/share/hplip/base/maint.py |
# -*- coding: utf-8 -*- # # (c) Copyright 2003-2015 HP Development Company, L.P. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Author: Don Welch, Naga Samrat Chowdary Narla, # # NOTE: Not used by Qt4 code. Use maint_*.py modules instead. # Local from .g import * from .codes import * from . import status, pml from prnt import pcl, ldl, colorcal import time from .sixext import to_bytes_utf8, StringIO # ************************* LEDM Clean**************************************** # CleanXML = """<?xml version=\"1.0\" encoding=\"UTF-8\"?> <!-- THIS DATA SUBJECT TO DISCLAIMER(S)INCLUDED WITH THE PRODUCT OF ORIGIN. --> <ipcap:InternalPrintCap xmlns:ipcap=\"http://www.hp.com/schemas/imaging/con/ledm/internalprintcap/2008/03/21\" xmlns:ipdyn=\"http://www.hp.com/schemas/imaging/con/ledm/internalprintdyn/2008/03/21\" xmlns:dd=\"http://www.hp.com/schemas/imaging/con/dictionaries/1.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.hp.com/schemas/imaging/con/ledm/internalprintcap/2008/03/21 ../schemas/InternalPrintCap.xsd http://www.hp.com/schemas/imaging/con/ledm/internalprintdyn/2008/03/21 ../schemas/InternalPrintDyn.xsd http://www.hp.com/schemas/imaging/con/dictionaries/1.0/ ../schemas/dd/DataDictionaryMasterLEDM.xsd\"> <ipdyn:JobType>%s</ipdyn:JobType> </ipcap:InternalPrintCap>\" """ status_xml = '/DevMgmt/InternalPrintDyn.xml' LEDM_CLEAN_CAP_XML = '/DevMgmt/InternalPrintCap.xml' LEDM_CLEAN_VERIFY_PAGE_JOB="<ipdyn:JobType>cleaningVerificationPage</ipdyn:JobType>" # **************************************************************************** # # ********************** Align ********************** def AlignType1(dev, loadpaper_ui): # Auto VIP (using embedded PML) ok = loadpaper_ui() if ok: dev.writeEmbeddedPML(pml.OID_AUTO_ALIGNMENT, pml.AUTO_ALIGNMENT, style=0, direct=True) dev.closePrint() return ok def AlignType1PML(dev, loadpaper_ui): # Auto VIP (using PML) ok = loadpaper_ui() if ok: dev.setPML(pml.OID_AUTO_ALIGNMENT, pml.AUTO_ALIGNMENT) dev.closePML() return ok def AlignType2(dev, loadpaper_ui, align_ui, bothpens_ui): # 8xx state, a, b, c, d = 0, 6, 6, 3, 3 ok = False while state != -1: if state == 0: state = 1 pens = dev.getStatusFromDeviceID()['agents'] pen_types = [pens[x] for x in range(len(pens))] if AGENT_TYPE_NONE in pen_types: log.error("Cannot perform alignment with 0 or 1 pen installed.") state = 100 elif state == 1: state = -1 ok = loadpaper_ui() if ok: state = 2 elif state == 2: state = -1 alignType2Phase1(dev) ok, a = align_ui('A', 'h', 'kc', 2, 11) if ok: state = 3 elif state == 3: state = -1 ok, b = align_ui('B', 'v', 'kc', 2, 11) if ok: state = 4 elif state == 4: state = -1 ok, c = align_ui('C', 'v', 'kc', 2, 5) if ok: state = 5 elif state == 5: state = -1 ok, d = align_ui('D', 'v', 'c', 2, 5) if ok: state = 6 elif state == 6: ok = loadpaper_ui() if ok: alignType2Phase2(dev, a, b, c, d) state = -1 elif state == 100: ok = False bothpens_ui() state = -1 return ok def AlignType3(dev, loadpaper_ui, align_ui, paperedge_ui, align_type): # 9xx state, a, b, c, d, zca = 0, 6, 6, 3, 3, 6 ok = False while state != -1: if state == 0: state = -1 ok = loadpaper_ui() if ok: alignType3Phase1(dev) state = 1 elif state == 1: state = -1 ok, a = align_ui('A', 'h', 'kc', 2, 11) if ok: state = 2 elif state == 2: state = -1 ok, b = align_ui('B', 'v', 'kc', 2, 11) if ok: state = 3 elif state == 3: state = -1 ok, c = align_ui('C', 'v', 'k', 2, 11) if ok: state = 4 elif state == 4: state = -1 ok, d = align_ui('D', 'v', 'kc', 2, 11) if ok: state = 5 elif state == 5: state = -1 alignType3Phase2(dev, a, b, c, d) if align_type == 9: state = 7 else: ok = loadpaper_ui() if ok: state = 6 elif state == 6: state = -1 alignType3Phase3(dev) ok, zca = paperedge_ui(13) if ok: state = 7 elif state == 7: ok = loadpaper_ui() if ok: alignType3Phase4(dev, zca) state = -1 return ok def AlignxBow(dev, align_type, loadpaper_ui, align_ui, paperedge_ui, invalidpen_ui, coloradj_ui): # Types 4, 5, and 7 state, statepos = 0, 0 user_cancel_states = [1000, -1] a, b, c, d, e, f, g = 0, 0, 0, 0, 0, 0, 0 error_states = [-1] ok = False dev.pen_config = status.getPenConfiguration(dev.getStatusFromDeviceID()) if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID): state, states = 100, [-1] elif dev.pen_config == AGENT_CONFIG_BLACK_ONLY: state, states = 0, [2, 200, 3, -1] elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY: state, states = 0, [2, 200, 3, -1] elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY: state, states = 0, [2, 300, 3, -1] elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK: state, states = 0, [2, 400, 500, 600, 700, 3, 4, -1] elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO: state, states = 0, [2, 400, 500, 600, 700, 800, 900, 3, 4, -1] while state != -1: if state == 0: ok = loadpaper_ui() if ok: if align_type == 4: alignType4Phase1(dev) elif align_type == 5: alignType5Phase1(dev) elif align_type == 7: alignType7Phase1(dev) else: statepos, states = 0, error_states else: statepos, states = 0, user_cancel_states elif state == 2: ok, a = paperedge_ui(13) if not ok: statepos, states = 0, user_cancel_states elif state == 3: if align_type == 4: alignType4Phase2(dev, a, b, c, d, e) elif align_type == 5: alignType5Phase2(dev, a, b, c, d, e, f, g) else: alignType7Phase2(dev, a, b, c, d, e, f, g) elif state == 4: ok = loadpaper_ui() if ok: if align_type == 4: alignType4Phase3(dev) elif align_type == 5: alignType5Phase3(dev) else: alignType7Phase3(dev) else: statepos, states = 0, user_cancel_states elif state == 100: invalidpen_ui() state = -1 elif state == 200: # B Line - Black only or photo only ok, b = align_ui('B', 'v', 'k', 2, 11) if not ok: statepos, states = 0, user_cancel_states elif state == 300: # B Line - Color only ok, b = align_ui('B', 'v', 'kc', 2, 11) if not ok: statepos, states = 0, user_cancel_states elif state == 400: # B Line - 2 pen ok, b = align_ui('B', 'h', 'kc', 2, 17) if not ok: statepos, states = 0, user_cancel_states elif state == 500: # C Line ok, c = align_ui('C', 'v', 'kc', 2, 17) if not ok: statepos, states = 0, user_cancel_states elif state == 600 : # D Line ok, d = align_ui('D', 'v', 'k', 2, 11) if not ok: statepos, states = 0, user_cancel_states elif state == 700: # E Line ok, e = align_ui('E', 'v', 'kc', 2, 11) if not ok: statepos, states = 0, user_cancel_states elif state == 800: # F Line ok, f = coloradj_ui('F', 21) if not ok: statepos, states = 0, user_cancel_states elif state == 900: # G Line ok, f = coloradj_ui('G', 21) if not ok: statepos, states = 0, user_cancel_states elif state == 1000: # User cancel ok = False log.warning("Alignment canceled at user request.") state = states[statepos] statepos += 1 return ok def AlignType6(dev, ui1, ui2, loadpaper_ui): state = 0 ok = False while state != -1: if state == 0: state = 2 accept = ui1() if not accept: # Need to printout alignment page state = 1 elif state == 1: # Load and print state = -1 ok = loadpaper_ui() if ok: alignType6Phase1(dev) state = 2 elif state == 2: # Finish ui2() state = -1 return ok def AlignType8(dev, loadpaper_ui, align_ui): # 450 state, a, b, c, d = 0, 5, 5, 5, 5 ok = False while state != -1: if state == 0: state = -1 ok = loadpaper_ui() if ok: num_inks = alignType8Phase1(dev) state = 1 elif state == 1: state = -1 ok, a = align_ui('A', 'v', 'k', 3, 9) if ok: state = 2 elif state == 2: state = -1 ok, b = align_ui('B', 'v', 'c', 3, 9) if ok: state = 3 elif state == 3: state = -1 ok, c = align_ui('C', 'v', 'kc', 3, 9) if ok: state = 4 elif state == 4: state = -1 ok, d = align_ui('D', 'h', 'kc', 3, 9) if ok: state = 5 elif state == 5: alignType8Phase2(dev, num_inks, a, b, c, d) state = -1 return ok def AlignType10(dev, loadpaper_ui, align_ui): pattern = alignType10SetPattern(dev) state = 0 while state != -1: if state == 0: state = -1 ok = loadpaper_ui() if ok: alignType10Phase1(dev) state = 1 elif state == 1: values = align_ui(pattern, ALIGN_TYPE_LBOW) log.debug(values) alignType10Phase2(dev, values, pattern) state = 2 elif state == 2: state = -1 ok = loadpaper_ui() if ok: alignType10Phase3(dev) def alignType10SetPattern(dev): pattern = None pen_config = status.getPenConfiguration(dev.getStatusFromDeviceID()) log.debug("Pen config=%d" % pen_config) if pen_config == AGENT_CONFIG_BLACK_ONLY: pattern = 1 elif pen_config == AGENT_CONFIG_COLOR_AND_BLACK: pattern = 2 elif pen_config in (AGENT_CONFIG_COLOR_AND_PHOTO, AGENT_CONFIG_COLOR_AND_GREY): pattern = 3 log.debug("Pattern=%d" % pattern) return pattern def alignType10Phase1(dev): dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_ALIGNMENT_PAGE) dev.closePrint() def alignType10Phase2(dev, values, pattern): i, p = 0, ''.join([pcl.UEL, '\n']) for x in values: i += 1 if not x: break p = ''.join([p, pcl.ESC, '*o5W\x1a', chr(i), '\x00', chr(pattern), chr(x), '\n']) p = ''.join([p, pcl.UEL]) dev.printData(p) dev.closePrint() def alignType10Phase3(dev): dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_ALIGNMENT_PAGE_VERIFICATION) dev.closePrint() def align10and11and14Controls(pattern, align_type): if align_type == ALIGN_TYPE_LIDIL_0_5_4: if pattern == 1: controls = { 'A' : (True, 23), 'B' : (True, 9), 'C' : (True, 9), 'D' : (False, 0), 'E' : (False, 0), 'F' : (False, 0), 'G' : (False, 0), 'H' : (False, 0),} elif pattern == 2: # K + color (ii) controls = { 'A' : (True, 17), 'B' : (True, 23), 'C' : (True, 23), 'D' : (True, 23), 'E' : (True, 9), 'F' : (True, 9), 'G' : (True, 9), 'H' : (True, 9),} elif pattern == 3: # color + photo (iii) controls = { 'A' : (True, 9), 'B' : (True, 23), 'C' : (True, 23), 'D' : (True, 23), 'E' : (True, 9), 'F' : (True, 9), 'G' : (True, 9), 'H' : (True, 9),} elif align_type == ALIGN_TYPE_LIDIL_DJ_D1600: if pattern == 1: controls = { 'A' : (True, 23), 'B' : (True, 9),} elif pattern == 2: # K + color (ii) controls = { 'A' : (True, 23), 'B' : (True, 11), 'C' : (True, 23), 'D' : (True, 23), 'E' : (True, 11), 'F' : (True, 11), 'G' : (True, 11), 'H' : (True, 9), 'I' : (True, 9),} elif pattern == 3: # color + photo (iii) controls = { 'A' : (True, 9), 'B' : (True, 23), 'C' : (True, 23), 'D' : (True, 23), 'E' : (True, 9), 'F' : (True, 9), 'G' : (True, 9), 'H' : (True, 9), 'I' : (True, 9),} else: if pattern == 1: controls = {'A' : (True, 23), 'B' : (True, 9), 'C' : (True, 9), 'D' : (False, 0), 'E' : (False, 0), 'F' : (False, 0), 'G' : (False, 0), 'H' : (False, 0),} elif pattern == 2: controls = {'A' : (True, 23), 'B' : (True, 17), 'C' : (True, 23), 'D' : (True, 23), 'E' : (True, 9), 'F' : (True, 9), 'G' : (True, 9), 'H' : (True, 9),} elif pattern == 3: controls = {'A' : (True, 23), 'B' : (True, 9), 'C' : (True, 23), 'D' : (True, 23), 'E' : (True, 9), 'F' : (True, 9), 'G' : (True, 9), 'H' : (True, 9),} return controls def AlignType11(dev, loadpaper_ui, align_ui, invalidpen_ui): pattern = alignType11SetPattern(dev) if pattern is None: invalidpen_ui() return state = 0 while state != -1: if state == 0: state = -1 ok = loadpaper_ui() if ok: alignType11Phase1(dev) state = 1 elif state == 1: values = align_ui(pattern, ALIGN_TYPE_LIDIL_0_5_4) log.debug(values) alignType11Phase2(dev, values, pattern, dev.pen_config) state = 2 elif state == 2: state = -1 ok = loadpaper_ui() if ok: alignType11Phase3(dev) def alignType11SetPattern(dev): pattern = None dev.pen_config = status.getPenConfiguration(dev.getStatusFromDeviceID()) log.debug("Pen config=%d" % dev.pen_config) if dev.pen_config in (AGENT_CONFIG_BLACK_ONLY, AGENT_CONFIG_COLOR_ONLY): # (i) pattern = 1 if dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK: # (ii) pattern = 2 elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO: # (iii) pattern = 3 elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY: return None log.debug("Pattern=%d" % pattern) return pattern def alignType11Phase1(dev): dev.printData(ldl.buildResetPacket()) dev.printData(ldl.buildReportPagePacket(ldl.COMMAND_REPORT_PAGE_PEN_CALIBRATION)) dev.closePrint() def alignType11Phase2(dev, values, pattern, pen_config): active_colors = 0 if pen_config == AGENT_CONFIG_BLACK_ONLY: active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_K values = values[:3] elif pen_config == AGENT_CONFIG_COLOR_ONLY: active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_COLOR values = values[:3] elif pen_config == AGENT_CONFIG_COLOR_AND_BLACK: active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_K | ldl.COMMAND_SET_PEN_ALIGNMENT_3_COLOR elif pen_config == AGENT_CONFIG_COLOR_AND_PHOTO: active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_COLOR | ldl.COMMAND_SET_PEN_ALIGNMENT_3_PHOTO log.debug("Active colors=0x%x Values=%s" % (active_colors, values)) dev.printData(ldl.buildSetPenAlignment3Packet(active_colors, values)) dev.closePrint() def alignType11Phase3(dev): dev.printData(ldl.buildResetPacket()) dev.printData(ldl.buildReportPagePacket(ldl.COMMAND_REPORT_PAGE_PEN_CALIBRATION_VERIFY)) dev.closePrint() def AlignType13(dev, loadpaper_ui, scanner_align_load_ui): # Auto AiO (Yellowtail) ok = loadpaper_ui() if ok: alignType13Phase1(dev) ok = scanner_align_load_ui() return ok def alignType13Phase1(dev): dev.setPML(pml.OID_AUTO_ALIGNMENT, pml.AUTO_ALIGNMENT) dev.closePML() calibrationSession = 1 def dataModelHelper(dev, func, ui2): data = status.StatusType10FetchUrl(func, "/Calibration/State") if not data: data = status.StatusType10FetchUrl(func, "/Calibration/State") if not data: log.debug("Unable to retrieve calibration state") dev.close() return 0 if to_bytes_utf8("ParmsRequested") in data: log.error("Restart device and start alignment") dev.close() return 1 if to_bytes_utf8("404 Not Found") in data: log.error("Device may not support Alignment") dev.close() return 1 if to_bytes_utf8("Printing<") in data: log.warn("Previous alignment job not completed") dev.close() return 1 data = status.StatusType10FetchUrl(func, "/DevMgmt/ConsumableConfigDyn.xml") if to_bytes_utf8("AlignmentMode") not in data: log.error("Device may not support Alignment") dev.close() return 1 if to_bytes_utf8("automatic") in data: log.debug("Device supports automatic calibration") status.StatusType10FetchUrl(func, "/Calibration/Session", "<cal:CalibrationState xmlns:cal=\\\"http://www.hp.com/schemas/imaging/con/cnx/markingagentcalibration/2009/04/08\\\" xmlns:dd=\\\"http://www.hp.com/schemas/imaging/con/dictionaries/1.0/\\\">Printing</cal:CalibrationState>") dev.close() return 0 if to_bytes_utf8("semiAutomatic") in data: log.debug("Device supports semiAutomatic calibration") status.StatusType10FetchUrl(func, "/Calibration/Session", "<cal:CalibrationState xmlns:cal=\\\"http://www.hp.com/schemas/imaging/con/cnx/markingagentcalibration/2009/04/08\\\" xmlns:dd=\\\"http://www.hp.com/schemas/imaging/con/dictionaries/1.0/\\\">Printing</cal:CalibrationState>") dev.close() return ui2() if to_bytes_utf8("manual") in data: log.debug("Device supports manual calibration") data = status.StatusType10FetchUrl(func, "/Calibration/Session", "<cal:CalibrationState xmlns:cal=\\\"http://www.hp.com/schemas/imaging/con/cnx/markingagentcalibration/2009/04/08\\\" xmlns:dd=\\\"http://www.hp.com/schemas/imaging/con/dictionaries/1.0/\\\">Printing</cal:CalibrationState>") import string data = string.split(data, "/Jobs")[1] data = string.split(data, "\r\n")[0] data = "/Jobs" + data data = status.StatusType10FetchUrl(func, data) data = string.split(data, "Session/")[1] data = string.split(data, "<")[0] data = "/Calibration/Session/" + data + "/ManualSelectedPatterns.xml" global calibrationSession calibrationSession = data dev.close() return 0 def AlignType16Manual(dev, a, b, c, d, e, f, g, h, i, j): log.debug("a=%s b=%s c=%s d=%s e=%s f=%s g=%s h=%s i=%s j=%s" % (a, b, c, d, e, f, g, h, i, j )) func = dev.getEWSUrl_LEDM data = status.StatusType10FetchUrl(func, "/Calibration/State") if not data: return 0 while "ParmsRequested" not in data: if "CalibrationValid" in data: return data = status.StatusType10FetchUrl(func, "/Calibration/State") data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- THIS DATA SUBJECT TO DISCLAIMER(S) INCLUDED WITH THE PRODUCT OF ORIGIN. -->\n<ManualSelectedPatterns xmlns=\"http://www.hp.com/schemas/imaging/con/cnx/markingagentcalibration/2009/04/08\" xmlns:locid=\"http://www.hp.com/schemas/imaging/con/ledm/localizationids/2007/10/31/\" xmlns:psdyn=\"http://www.hp.com/schemas/imaging/con/ledm/productstatdyn/2007/10/31\"><SelectedPattern><Identifier><Id>1</Id></Identifier><Choice><Identifier><Id>%s</Id></Identifier></Choice></SelectedPattern><SelectedPattern><Identifier><Id>2</Id></Identifier><Choice><Identifier><Id>%s</Id></Identifier></Choice></SelectedPattern><SelectedPattern><Identifier><Id>3</Id></Identifier><Choice><Identifier><Id>%s</Id></Identifier></Choice></SelectedPattern><SelectedPattern><Identifier><Id>4</Id></Identifier><Choice><Identifier><Id>%s</Id></Identifier></Choice></SelectedPattern><SelectedPattern><Identifier><Id>5</Id></Identifier><Choice><Identifier><Id>%s</Id></Identifier></Choice></SelectedPattern><SelectedPattern><Identifier><Id>6</Id></Identifier><Choice><Identifier><Id>%s</Id></Identifier></Choice></SelectedPattern><SelectedPattern><Identifier><Id>7</Id></Identifier><Choice><Identifier><Id>%s</Id></Identifier></Choice></SelectedPattern><SelectedPattern><Identifier><Id>8</Id></Identifier><Choice><Identifier><Id>%s</Id></Identifier></Choice></SelectedPattern><SelectedPattern><Identifier><Id>9</Id></Identifier><Choice><Identifier><Id>%s</Id></Identifier></Choice></SelectedPattern></SelectedPattern><SelectedPattern><Identifier><Id>10</Id></Identifier><Choice><Identifier><Id>%s</Id></Identifier></Choice></SelectedPattern></ManualSelectedPattern>" % ( a, b, c, d, e, f, g, h, i, j ) data = "PUT %s HTTP/1.1\r\nHost: localhost\r\nUser-Agent: hp\r\nAccept: text/plain\r\nAccept-Language: en-us,en\r\nAccept-Charset:utf-8\r\nContent-Type: text/xml\r\nContent-Length: %s\r\n\r\n" % ( calibrationSession, len(data)) + data data = status.StatusType10FetchUrl(func, calibrationSession, data) def AlignType15(dev, loadpaper_ui, ui2): if not loadpaper_ui(): return return dataModelHelper(dev, dev.getEWSUrl_LEDM, ui2) def AlignType15Phase1(dev, ui2): return dataModelHelper(dev, dev.getEWSUrl_LEDM, ui2) #AlignType 17 is LEDM via FF/CC/0 USB channel def AlignType17(dev, loadpaper_ui, ui2): if not loadpaper_ui(): return return dataModelHelper(dev, dev.getUrl_LEDM, ui2) def AlignType17Phase1(dev, ui2): return dataModelHelper(dev, dev.getUrl_LEDM, ui2) def AlignType16(dev, loadpaper_ui, align_ui): if not loadpaper_ui(): return dataModelHelper(dev, dev.getEWSUrl_LEDM, align_ui) state, a, b, c, d, e, f, g, h, i, j = 0, 6, 6, 3, 3, 6, 6, 6, 6, 6, 6 ok = False while state != -1: if state == 0: state = -1 ok, a = align_ui('A', 'v', 'kc', 3, 23) if ok: state = 1 elif state == 1: state = -1 ok, b = align_ui('B', 'h', 'kc', 3, 17) if ok: state = 2 elif state == 2: state = -1 ok, c = align_ui('C', 'v', 'k', 3, 23) if ok: state = 3 elif state == 3: state = -1 ok, d = align_ui('D', 'v', 'c', 3, 23) if ok: state = 4 elif state == 4: state = -1 ok, e = align_ui('E', 'h', 'k', 3, 11) if ok: state = 5 elif state == 5: state = -1 ok, f = align_ui('F', 'h', 'k', 3, 11) if ok: state = 6 elif state == 6: state = -1 ok, g = align_ui('G', 'h', 'k', 3, 11) if ok: state = 7 elif state == 7: state = -1 ok, h = align_ui('H', 'h', 'k', 3, 11) if ok: state = 8 elif state == 8: state = -1 ok, i = align_ui('I', 'v', 'k', 3, 19) if ok: state = 9 elif state == 9: state = -1 ok, j = align_ui('J', 'v', 'k', 3, 19) if ok: state = 10 elif state == 10: state = -1 AlignType16Manual(dev, a, b, c, d, e, f, g, h, i, j) return ok def AlignType16Phase1(dev, a, b, c, d, e, f, g, h, i, j): AlignType16Manual(dev, a, b, c, d, e, f, g, h, i, j) def AlignType14(dev, loadpaper_ui, align_ui, invalidpen_ui): pattern = alignType14SetPattern(dev) if pattern is None: invalidpen_ui() return state = 0 while state != -1: if state == 0: state = -1 ok = loadpaper_ui() if ok: alignType14Phase1(dev) state = 1 elif state == 1: values = align_ui(pattern, ALIGN_TYPE_LIDIL_DJ_D1600) log.debug(values) alignType14Phase2(dev, values, pattern, dev.pen_config) state = 2 elif state == 2: state = -1 ok = loadpaper_ui() if ok: alignType14Phase3(dev) def alignType14SetPattern(dev): pattern = None dev.pen_config = status.getPenConfiguration(dev.getStatusFromDeviceID()) log.debug("Pen config=%d" % dev.pen_config) if dev.pen_config in (AGENT_CONFIG_BLACK_ONLY, AGENT_CONFIG_COLOR_ONLY): # (i) pattern = 1 if dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK: # (ii) pattern = 2 elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO: # (iii) pattern = 3 elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY: return None log.debug("Pattern=%d" % pattern) return pattern def alignType14Phase1(dev): dev.printData(ldl.buildResetPacket()) dev.printData(ldl.buildReportPagePacket(ldl.COMMAND_REPORT_PAGE_PEN_CALIBRATION)) dev.closePrint() def alignType14Phase2(dev, values, pattern, pen_config): active_colors = 0 if pen_config == AGENT_CONFIG_BLACK_ONLY: active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_K values = values[:2] elif pen_config == AGENT_CONFIG_COLOR_ONLY: active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_COLOR values = values[:2] elif pen_config == AGENT_CONFIG_COLOR_AND_BLACK: active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_K | ldl.COMMAND_SET_PEN_ALIGNMENT_3_COLOR elif pen_config == AGENT_CONFIG_COLOR_AND_PHOTO: active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_COLOR | ldl.COMMAND_SET_PEN_ALIGNMENT_3_PHOTO log.debug("Active colors=0x%x Values=%s" % (active_colors, values)) dev.printData(ldl.buildSetPenAlignment3Packet(active_colors, values)) dev.closePrint() def alignType14Phase3(dev): dev.printData(ldl.buildResetPacket()) dev.printData(ldl.buildReportPagePacket(ldl.COMMAND_REPORT_PAGE_PEN_CALIBRATION_VERIFY)) dev.closePrint() def alignType2Phase1(dev): # Type 2 (8xx) dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, 0) dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, 0) dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, 0) dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, 0) dev.closePrint() dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align1_8xx.pcl.gz')) def alignType2Phase2(dev, a, b, c, d): # (8xx) dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, (a - 6) * 12) dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, (b - 6) * 12) dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, (c - 3) * 12) dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, (d - 3) * 12) dev.writeEmbeddedPML(pml.OID_MARKING_AGENTS_INITIALIZED, 3) dev.closePrint() dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align2_8xx.pcl.gz')) def alignType3Phase1(dev): # Type 3 (9xx) dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, 0) dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, 0) dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, 0) dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, 0) dev.closePrint() dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align1_9xx.pcl.gz')) def alignType3Phase2(dev, a, b, c, d): # Type 3 (9xx) dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, (a - 6) * 12) dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, (6 - b) * 12) dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, (6 - c) * 12) dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, (6 - d) * 6) dev.closePrint() def alignType3Phase3(dev): # Type 3 (9xx) dev.closePrint() dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align3_9xx.pcl.gz')) def alignType3Phase4(dev, zca): # Type 3 (9xx) dev.writeEmbeddedPML(pml.OID_MARKING_AGENTS_INITIALIZED, 3) dev.closePrint() dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align2_9xx.pcl.gz')) def alignType4Phase1(dev): # Type 4 (xBow/LIDIL 0.3.8) dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_RESUME_NORMAL_OPERATION)) if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID): return elif dev.pen_config == AGENT_CONFIG_BLACK_ONLY: ldl_file = 'cbbcal.ldl.gz' elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY: ldl_file = 'cbccal.ldl.gz' elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK: ldl_file = 'cb2pcal.ldl.gz' dev.printData(ldl.buildSetPrinterAlignmentPacket(0, 0, 0, 0)) dev.closePrint() dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', ldl_file)) def alignType4Phase2(dev, a, b, c, d, e): # Type 4 (LIDIL 0.3.8) log.debug("A=%d, B=%d, C=%d, D=%d, E=%d" % (a, b, c, d, e)) if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID): return # ZCA zca = (7 - a) * -48 dev.printData(ldl.buildZCAPacket(zca)) if dev.pen_config == AGENT_CONFIG_BLACK_ONLY: k_bidi = (6 - b) * 2 dev.printData(ldl.buildSetPrinterAlignmentPacket(k_bidi, 0, 0, 0)) elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY: cmy_bidi = (6 - b) * 2 dev.printData(ldl.buildSetPrinterAlignmentPacket(0, 0, 0, cmy_bidi)) elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK: vert = (9 - b) * 2 hort = (9 - c) * -2 k_bidi = (6 - d) * 2 cmy_bidi = (6 - e) * 2 dev.printData(ldl.buildSetPrinterAlignmentPacket(k_bidi, hort, vert, cmy_bidi)) # Set alignment dev.printData(ldl.buildSetPensAlignedPacket()) dev.closePrint() def alignType4Phase3(dev): # Type 4 (LIDIL 0.3.8) if dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK: dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', 'cb2pcal_done.ldl.gz')) def alignType5Phase1(dev): # Type 5 (xBow+/LIDIL 0.4.3) dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_RESUME_NORMAL_OPERATION)) if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID): return elif dev.pen_config == AGENT_CONFIG_BLACK_ONLY: ldl_file = 'cbbcal.ldl.gz' elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY: ldl_file = 'cbpcal.ldl.gz' elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY: ldl_file = 'cbccal.ldl.gz' elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK: ldl_file = 'cb2pcal.ldl.gz' elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO: ldl_file = 'cbcpcal.ldl.gz' dev.printData(ldl.buildZCAPacket(0)) dev.printData(ldl.buildColorHortPacket(0)) dev.printData(ldl.buildColorVertPacket(0)) dev.printData(ldl.buildBlackVertPacket(0)) dev.printData(ldl.buildBlackHortPacket(0)) dev.printData(ldl.buildBlackBidiPacket(0)) dev.printData(ldl.buildColorBidiPacket(0)) dev.printData(ldl.buildPhotoHuePacket(0)) dev.printData(ldl.buildColorHuePacket(0)) dev.closePrint() dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', ldl_file)) def alignType5Phase2(dev, a, b, c, d, e, f, g): # Type 5 (xBow+/LIDIL 0.4.3) log.debug("A=%d, B=%d, C=%d, D=%d, E=%d, F=%d, G=%d" % (a, b, c, d, e, f, g)) if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID): return # ZCA zca = (7 - a) * -48 dev.printData(ldl.buildZCAPacket(zca)) if dev.pen_config == AGENT_CONFIG_BLACK_ONLY: k_bidi = (6 - b) * 2 dev.printData(ldl.buildBlackBidiPacket(k_bidi)) elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY: kcm_bidi = (6 - b) * 2 dev.printData(ldl.buildPhotoBidiPacket(kcm_bidi)) elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY: cmy_bidi = (6 - b) * 2 dev.printData(ldl.buildColorBidiPacket(cmy_bidi)) elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK: vert = (9 - b) * 2 hort = (9 - c) * -2 k_bidi = (6 - d) * 2 cmy_bidi = (6 - e) * 2 dev.printData(ldl.buildColorHortPacket(0)) dev.printData(ldl.buildColorVertPacket(0)) dev.printData(ldl.buildBlackVertPacket(vert)) dev.printData(ldl.buildBlackHortPacket(hort)) dev.printData(ldl.buildBlackBidiPacket(k_bidi)) dev.printData(ldl.buildColorBidiPacket(cmy_bidi)) elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO: vert = (9 - b) * 2 hort = (9 - c) * -2 cmy_bidi = (6 - d) * 2 kcm_bidi = (6 - e) * 2 photo_adj = colorcal.PHOTO_ALIGN_TABLE[f][g] color_adj = colorcal.COLOR_ALIGN_TABLE[f][g] dev.printData(ldl.buildPhotoHortPacket(hort)) dev.printData(ldl.buildPhotoVertPacket(vert)) dev.printData(ldl.buildColorHortPacket(0)) dev.printData(ldl.buildColorVertPacket(0)) dev.printData(ldl.buildPhotoBidiPacket(kcm_bidi)) dev.printData(ldl.buildColorBidiPacket(cmy_bidi)) dev.printData(ldl.buildPhotoHuePacket(photo_adj)) dev.printData(ldl.buildColorHuePacket(color_adj)) # Set alignment dev.printData(ldl.buildSetPensAlignedPacket()) dev.closePrint() def alignType5Phase3(dev): # Type 5 (xBow+/LIDIL 0.4.3) dev.closePrint() if dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK: dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', "cb2pcal_done.ldl.gz")) elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO: dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', "cbccal_done.ldl.gz")) def alignType6Phase1(dev): # Type 6 (xBow AiO) dev.printData(ldl.buildPrintInternalPagePacket()) dev.closePrint() def alignType7Phase1(dev): # Type 7 (xBow VIP) # Zero out all alignment values dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, 0) dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, 0) dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, 0) dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, 0) dev.writeEmbeddedPML(pml.OID_AGENT3_VERTICAL_ALIGNMENT, 0) dev.writeEmbeddedPML(pml.OID_AGENT3_HORIZONTAL_ALIGNMENT, 0) dev.writeEmbeddedPML(pml.OID_AGENT3_BIDIR_ADJUSTMENT, 0) dev.writeEmbeddedPML(pml.OID_ZCA, 0) if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID): return elif dev.pen_config == AGENT_CONFIG_BLACK_ONLY: pcl_file = 'crbcal.pcl.gz' elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY: pcl_file = 'crpcal.pcl.gz' elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY: pcl_file = 'crccal.pcl.gz' elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK: pcl_file = 'crcbcal.pcl.gz' elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO: pcl_file = 'crcpcal.pcl.gz' dev.closePrint() dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', pcl_file)) def alignType7Phase2(dev, a, b, c, d, e, f, g): # Type 7 (xBow VIP) log.debug("A=%d, B=%d, C=%d, D=%d, E=%d, F=%d, G=%d" % (a, b, c, d, e, f, g)) # ZCA zca = (7 - a) * -12 dev.writeEmbeddedPML(pml.OID_ZCA, zca) if dev.pen_config == AGENT_CONFIG_BLACK_ONLY: k_bidi = (6 - b) * 6 dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, k_bidi) elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY: kcm_bidi = (6 - b) * 6 dev.writeEmbeddedPML(pml.OID_AGENT3_BIDIR_ADJUSTMENT, kcm_bidi) elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY: cmy_bidi = (6 - b) * 6 dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, cmy_bidi) elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK: vert = (9 - b) * 6 hort = (9 - c) * -6 k_bidi = (6 - d) * 6 cmy_bidi = (6 - e) * 6 dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, k_bidi) dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, cmy_bidi) dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, hort) dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, vert) elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO: vert = (9 - b) * 6 hort = (9 - c) * -6 cmy_bidi = (6 - d) * 6 kcm_bidi = (6 - e) * 6 photo_adj = colorcal.PHOTO_ALIGN_TABLE[f][g] color_adj = colorcal.COLOR_ALIGN_TABLE[f][g] x = (color_adj << 8) + photo_adj dev.writeEmbeddedPML(pml.OID_COLOR_CALIBRATION_SELECTION, x) dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, cmy_bidi) dev.writeEmbeddedPML(pml.OID_AGENT3_BIDIR_ADJUSTMENT, kcm_bidi) dev.writeEmbeddedPML(pml.OID_AGENT3_HORIZONTAL_ALIGNMENT, hort) dev.writeEmbeddedPML(pml.OID_AGENT3_VERTICAL_ALIGNMENT, vert) dev.closePrint() def alignType7Phase3(dev): # Type 7 (xBow VIP) dev.closePrint() dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', "crcaldone.pcl.gz")) def alignType8Phase1(dev): # 450 pens = dev.getStatusFromDeviceID()['agents'] pen_types = [pens[x]['type'] for x in range(len(pens))] if AGENT_TYPE_KCM in pen_types: f, num_inks = 'align6_450.pcl.gz', 6 else: f, num_inks = 'align4_450.pcl.gz', 4 dev.closePrint() dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', f)) return num_inks def alignType8Phase2(dev, num_inks, a, b, c, d): # 450 align_values1 = {1 : '\x00\x00\x18', 2 : '\x00\x00\x12', 3 : '\x00\x00\x0c', 4 : '\x00\x00\x06', 5 : '\x00\x00\x00', 6 : '\x01\x00\x06', 7 : '\x01\x00\x0c', 8 : '\x01\x00\x12', 9 : '\x01\x00\x18', } align_values2 = {1 : '\x00\x00\x12', 2 : '\x00\x00\x0c', 3 : '\x00\x00\x06', 4 : '\x00\x00\x00', 5 : '\x01\x00\x06', 6 : '\x01\x00\x0c', 7 : '\x01\x00\x12', 8 : '\x01\x00\x18', 9 : '\x01\x00\x1e', } align_values3 = {1 : '\x00\x00\x24', 2 : '\x00\x00\x18', 3 : '\x00\x00\x12', 4 : '\x00\x00\x06', 5 : '\x00\x00\x00', 6 : '\x01\x00\x06', 7 : '\x01\x00\x12', 8 : '\x01\x00\x18', 9 : '\x01\x00\x24', } if num_inks == 4: s = ''.join([pcl.UEL, '@PJL ENTER LANGUAGE=PCL3GUI\n', pcl.RESET, pcl.ESC, '*o5W\x1a\x01', align_values1[a], pcl.ESC, '*o5W\x1a\x02', align_values2[a], pcl.ESC, '*o5W\x1a\x03', align_values1[b], pcl.ESC, '*o5W\x1a\x04', align_values1[b], pcl.ESC, '*o5W\x1a\x08', align_values1[c], pcl.ESC, '*o5W\x1a\x07', align_values1[d], pcl.RESET, pcl.UEL]) else: # 6 s = ''.join([pcl.UEL, '@PJL ENTER LANGUAGE=PCL3GUI\n', pcl.RESET, pcl.ESC, '*o5W\x1a\x05', align_values1[a], pcl.ESC, '*o5W\x1a\x06', align_values3[a], pcl.ESC, '*o5W\x1a\x03', align_values1[b], pcl.ESC, '*o5W\x1a\x04', align_values1[b], pcl.ESC, '*o5W\x1a\x0a', align_values1[c], pcl.ESC, '*o5W\x1a\x09', align_values1[d], pcl.RESET, pcl.UEL]) dev.printData(s) dev.closePrint() def AlignType12(dev, loadpaper_ui): if loadpaper_ui(): dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_ALIGNMENT_PAGE) dev.closePML() # ********************** Clean ********************** def cleanVerifyPage(dev): # By default Clean verification page is Enabled return True def cleaning(dev, clean_type, level1, level2, level3, loadpaper_ui, dlg1, dlg2, dlg3, wait_ui, verify_page = cleanVerifyPage): state = 0 level = 0 print_verify_page = verify_page(dev) while state != -1: if state == 0: # Initial level1 print state = 1 if clean_type == CLEAN_TYPE_PCL_WITH_PRINTOUT: ok = loadpaper_ui() if not ok: state = -1 elif clean_type == CLEAN_TYPE_LEDM and print_verify_page == False: ok = loadpaper_ui("Clean functinality conformation...", "Clean Conformation") if not ok: state = -1 elif state == 1: # Do level 1 level1(dev) if clean_type == CLEAN_TYPE_LEDM and print_verify_page == False : state = 3 else: state = 2 elif state == 2: # Load plain paper state = -1 ok = loadpaper_ui() if ok: state = 3 elif state == 3: # Print test page state = 4 if clean_type == CLEAN_TYPE_LEDM: cleanTypeVerify(dev,1, print_verify_page) else: print_clean_test_page(dev) elif state == 4: # Need level 2? state = -1 if print_verify_page == False : ok = dlg1("Clean Level 1 is Completed.") else: ok = dlg1() if ok: state = 5 elif state == 5: # Do level 2 level2(dev) if clean_type == CLEAN_TYPE_LEDM and print_verify_page == False : state = 7 else: state = 6 elif state == 6: # Load plain paper state = -1 ok = loadpaper_ui() if ok: state = 7 elif state == 7: # Print test page state = 8 if clean_type == CLEAN_TYPE_LEDM: cleanTypeVerify(dev,2,print_verify_page) else: print_clean_test_page(dev) elif state == 8: # Need level 3? state = -1 if print_verify_page == False : ok = dlg2("Clean Level 2 is Completed.") else: ok = dlg2() if ok: state = 9 elif state == 9: # Do level 3 level3(dev) state = 10 if clean_type == CLEAN_TYPE_LEDM and print_verify_page == False : state = 11 else: state = 10 elif state == 10: # Load plain paper state = -1 ok = loadpaper_ui() if ok: state = 11 elif state == 11: # Print test page state = 12 if clean_type == CLEAN_TYPE_LEDM: cleanTypeVerify(dev,3,print_verify_page) else: print_clean_test_page(dev) elif state == 12: state = -1 if print_verify_page == False : dlg3("Level 3 cleaning complete. Check this page to see if the problem was fixed. replace the print cartridge(s)") else: dlg3() return ok def print_clean_test_page(dev): dev.closePrint() dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ps', 'clean_page.pdf.gz'), raw=False) def cleanType1(dev): # PCL, Level 1 dev.writeEmbeddedPML(pml.OID_CLEAN, pml.CLEAN_CLEAN) dev.closePrint() def primeType1(dev): # PCL, Level 2 dev.writeEmbeddedPML(pml.OID_CLEAN, pml.CLEAN_PRIME) dev.closePrint() def wipeAndSpitType1(dev): # PCL, Level 3 dev.writeEmbeddedPML(pml.OID_CLEAN, pml.CLEAN_WIPE_AND_SPIT) dev.closePrint() def cleanType2(dev): # LIDIL, Level 1 dev.printData(ldl.buildResetPacket()) dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_COMMAND, ldl.COMMAND_HANDLE_PEN, ldl.COMMAND_HANDLE_PEN_CLEAN_LEVEL1)) dev.closePrint() def primeType2(dev): # LIDIL, Level 2 dev.printData(ldl.buildResetPacket()) dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_COMMAND, ldl.COMMAND_HANDLE_PEN, ldl.COMMAND_HANDLE_PEN_CLEAN_LEVEL2)) dev.closePrint() def wipeAndSpitType2(dev): # LIDIL, Level 3 dev.printData(ldl.buildResetPacket()) dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_COMMAND, ldl.COMMAND_HANDLE_PEN, ldl.COMMAND_HANDLE_PEN_CLEAN_LEVEL3)) dev.closePrint() def setCleanType(name): try: xml = CleanXML %(name) except(UnicodeEncodeError, UnicodeDecodeError): log.error("Unicode Error") return xml def getCleanLedmCapacity(dev): data_fp = StringIO() status_type = dev.mq.get('status-type', STATUS_TYPE_NONE) if status_type == STATUS_TYPE_LEDM: func = dev.getEWSUrl_LEDM elif status_type == STATUS_TYPE_LEDM_FF_CC_0: func = dev.getUrl_LEDM else: log.error("Not an LEDM status-type: %d" % status_type) return "" data = func(LEDM_CLEAN_CAP_XML, data_fp) if data: data = data.split(b'\r\n\r\n', 1)[1] if data: data = status.ExtractXMLData(data) return data def isCleanTypeLedmWithPrint(dev): IPCap_data = getCleanLedmCapacity(dev) if LEDM_CLEAN_VERIFY_PAGE_JOB in IPCap_data: return True else: return False def cleanTypeLedm(dev): #LEDM, level 1 xml = setCleanType('cleaningPage') dev.post(status_xml, xml) dev.closePrint() def cleanTypeLedm1(dev): #LEDM, level 2 xml = setCleanType('cleaningPageLevel1') dev.post(status_xml, xml) dev.closePrint() def cleanTypeLedm2(dev): #LEDM, level 3 xml = setCleanType('cleaningPageLevel2') dev.post(status_xml, xml) dev.closePrint() def cleanTypeVerify(dev,level, print_verification_page = True): #LEDM Test Page state = 0 timeout = 0 status_type = dev.mq.get('status-type', STATUS_TYPE_NONE) xml = setCleanType('cleaningVerificationPage') if status_type == STATUS_TYPE_LEDM: func = dev.getEWSUrl_LEDM elif status_type == STATUS_TYPE_LEDM_FF_CC_0: func = dev.getUrl_LEDM else: log.error("Not an LEDM status-type: %d" % status_type) print("Performing level %d cleaning...." % level) while state != -1: status_block = status.StatusType10Status(func) if status_block['status-code'] == STATUS_PRINTER_IDLE: # Printer Ready state = -1 if print_verification_page: dev.post(status_xml, xml) else: time.sleep(8) timeout += 1 if timeout > 20: log.error("Timeout waiting for Clean to finish.") sys.exit(0) # ********************** Color Cal ********************** def colorCalType1(dev, loadpaper_ui, colorcal_ui, photopenreq_ui): # 450 value, state = 4, 0 ok = False while state != -1: if state == 0: if colorCalType1PenCheck(dev): state = 1 else: state = 100 elif state == 1: state = -1 ok = loadpaper_ui() if ok: colorCalType1Phase1(dev) state = 2 elif state == 2: state = -1 ok, value = colorcal_ui() if ok: state = 3 elif state == 3: colorCalType1Phase2(dev, value) state = -1 elif state == 100: ok = False photopenreq_ui() state = -1 return ok def colorCalType1PenCheck(dev): # 450 pens = dev.getStatusFromDeviceID()['agents'] pen_types = [pens[x]['type'] for x in range(len(pens))] if AGENT_TYPE_KCM in pen_types: return True else: log.error("Cannot perform color calibration with no photo pen installed.") return False def colorCalType1Phase1(dev): # 450 dev.closePrint() dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'colorcal1_450.pcl.gz')) def colorCalType1Phase2(dev, value): # 450 color_cal = {1 : ('\x0f\x3c', '\x17\x0c'), 2 : ('\x10\xcc', '\x15\x7c'), 3 : ('\x12\x5c', '\x13\xec'), 4 : ('\x13\xec', '\x12\x5c'), 5 : ('\x15\x7c', '\x10\xcc'), 6 : ('\x17\x0c', '\x0f\x3c'), 7 : ('\x18\x9c', '\x0d\xac'), } s = ''.join([pcl.UEL, '@PJL ENTER LANGUAGE=PCL3GUI\n', pcl.RESET, pcl.ESC, '*o5W\x1a\x0c\x00', color_cal[value][0], pcl.ESC, '*o5W\x1a\x0b\x00', color_cal[value][1], pcl.RESET, pcl.UEL]) dev.printData(s) dev.closePrint() # # COLOR CAL TYPE 2 # def colorCalType2(dev, loadpaper_ui, colorcal_ui, photopenreq_ui): value, state = 4, 0 ok = True while state != -1: if state == 0: if colorCalType2PenCheck(dev): state = 1 else: state = 100 elif state == 1: state = -1 ok = loadpaper_ui() if ok: colorCalType2Phase1(dev) state = 2 elif state == 2: state = -1 ok, value = colorcal_ui() if ok: state = 3 elif state == 3: colorCalType2Phase2(dev, value) state = -1 elif state == 100: photopenreq_ui() ok = False state = -1 return ok def colorCalType2PenCheck(dev): pens = dev.getStatusFromDeviceID()['agents'] pen_types = [pens[x]['type'] for x in range(len(pens))] if not AGENT_TYPE_NONE in pen_types: return True else: log.error("Cannot perform color calibration with pens missing.") return False def colorCalType2Phase1(dev): dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_COLOR_CAL) dev.closePrint() def colorCalType2Phase2(dev, value): c = colorcal.COLOR_CAL_TABLE p = ''.join(['\x1b&b19WPML \x04\x00\x06\x01\x04\x01\x05\x01\t\x08\x04', chr(c[value*4]+100), chr(c[value*4+1]+100), chr(c[value*4+2]+100), chr(c[value*4+3]+100), '\x1b%-12345X']) dev.printData(p) dev.closePrint() # # COLOR CAL TYPE 3 # def colorCalType3(dev, loadpaper_ui, colorcal_ui, photopenreq_ui): value, state = 4, 0 ok = True while state != -1: if state == 0: if colorCalType3PenCheck(dev): state = 1 else: state = 100 elif state == 1: state = -1 ok = loadpaper_ui() if ok: colorCalType3Phase1(dev) state = 2 elif state == 2: state = -1 ok, valueA = colorcal_ui('A', 21) if ok: state = 3 elif state == 3: state = -1 ok, valueB = colorcal_ui('B', 21) if ok: state = 4 elif state == 4: colorCalType3Phase2(dev, valueA, valueB) state = -1 elif state == 100: photopenreq_ui() ok = False state = -1 return ok def colorCalType3PenCheck(dev): pens = dev.getStatusFromDeviceID()['agents'] pen_types = [pens[x]['type'] for x in range(len(pens))] if AGENT_TYPE_KCM in pen_types or \ AGENT_TYPE_BLUE in pen_types: return True else: log.error("Cannot perform color calibration with no photo (or photo blue) pen installed.") return False def colorCalType3Phase1(dev): dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_COLOR_CAL) dev.closePrint() def colorCalType3Phase2(dev, A, B): photo_adj = colorcal.PHOTO_ALIGN_TABLE[A-1][B-1] color_adj = colorcal.COLOR_ALIGN_TABLE[A-1][B-1] adj_value = (color_adj << 8) + photo_adj dev.writeEmbeddedPML(pml.OID_COLOR_CALIBRATION_SELECTION, adj_value) dev.closePrint() def colorCalType4(dev, loadpaper_ui, colorcal_ui, wait_ui): state = 0 ok = True while state != -1: if state == 0: state = -1 ok = loadpaper_ui() if ok: colorCalType4Phase1(dev) state = 2 elif state == 2: state = -1 #wait_ui(90) ok, values = colorcal_ui() if ok: state = 3 elif state == 3: colorCalType4Phase2(dev, values) #wait_ui(5) state = 4 elif state == 4: state = -1 ok = loadpaper_ui() if ok: colorCalType4Phase3(dev) state = -1 return ok def colorCalType4Phase1(dev): dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_COLOR_CAL) dev.closePML() def colorCalType4AdjValue(value): if value >= 100: return 200 return value+100 def colorCalType4Phase2(dev, values): if -1 in values: Cadj, Madj, Yadj, cadj, madj, kadj = 244, 244, 244, 244, 244, 244 else: sel1, sel2, sel3, sel4 = values tmp1 = colorcal.TYPE_4_C_TABLE[sel1][sel2] tmp2 = colorcal.TYPE_4_LC_TABLE[sel3][sel4] Cadj = colorCalType4AdjValue(tmp1) cadj = colorCalType4AdjValue(tmp1+tmp2) tmp1 = colorcal.TYPE_4_M_TABLE[sel1][sel2] tmp2 = colorcal.TYPE_4_LM_TABLE[sel3][sel4] Madj = colorCalType4AdjValue(tmp1) madj = colorCalType4AdjValue(tmp1+tmp2) Yadj = colorCalType4AdjValue(colorcal.TYPE_4_Y_TABLE[sel1][sel2]) kadj = colorCalType4AdjValue(0) log.debug("C=%d, M=%d, Y=%d, c=%d, m=%d, k=%d\n" % (Cadj, Madj, Yadj, cadj, madj, kadj)) dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_1, kadj) dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_2, Cadj) dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_3, Madj) dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_4, Yadj) dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_5, cadj) dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_6, madj) dev.closePML() def colorCalType4Phase3(dev): dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_COLOR_PALETTE_CMYK_PAGE) dev.closePML() def colorCalType5(dev, loadpaper_ui): if loadpaper_ui(): dev.printData("""\x1b%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n\x1bE\x1b%Puifp.multi_button_push 20;\nudw.quit;\x1b*rC\x1bE\x1b%-12345X""") dev.closePrint() def colorCalType6(dev, loadpaper_ui): if loadpaper_ui(): dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_COLOR_CAL) dev.closePML() def colorCalType7(dev, loadpaper_ui): if loadpaper_ui(): dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_AUTOMATIC_COLOR_CALIBRATION) dev.closePML() # ********************** LF Cal ********************** def linefeedCalType1(dev, loadpaper_ui): if loadpaper_ui(): dev.printData("""\x1b%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n\x1bE\x1b%Puifp.multi_button_push 3;\nudw.quit;\x1b*rC\x1bE\x1b%-12345X""") dev.closePrint() def linefeedCalType2(dev, loadpaper_ui): if loadpaper_ui(): dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_LINEFEED_CALIBRATION) dev.closePML() # ********************** PQ Diag ********************** def printQualityDiagType1(dev, loadpaper_ui): if loadpaper_ui(): dev.printData("""\x1b%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n\x1bE\x1b%Puifp.multi_button_push 14;\nudw.quit;\x1b*rC\x1bE\x1b%-12345X""") dev.closePrint() def printQualityDiagType2(dev, loadpaper_ui): if loadpaper_ui(): dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_PRINT_QUALITY_DIAGNOSTIC) dev.closePML()