1# -*- coding: utf-8 -*-
2#
3# (c) Copyright 2003-2015 HP Development Company, L.P.
4#
5# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation; either version 2 of the License, or
8# (at your option) any later version.
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program; if not, write to the Free Software
17# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
18#
19# Author: Don Welch, Naga Samrat Chowdary Narla,
20#
21
22# NOTE: Not used by Qt4 code. Use maint_*.py modules instead.
23
24# Local
25from .g import *
26from .codes import *
27from . import status, pml
28from prnt import pcl, ldl, colorcal
29import time
30from .sixext import to_bytes_utf8, StringIO
31
32# ************************* LEDM Clean**************************************** #
33CleanXML = """<?xml version=\"1.0\" encoding=\"UTF-8\"?>
34<!--  THIS DATA SUBJECT TO DISCLAIMER(S)INCLUDED WITH THE PRODUCT OF ORIGIN. -->
35<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\">
36                                <ipdyn:JobType>%s</ipdyn:JobType>
37</ipcap:InternalPrintCap>\"
38
39        """
40
41status_xml = '/DevMgmt/InternalPrintDyn.xml'
42LEDM_CLEAN_CAP_XML = '/DevMgmt/InternalPrintCap.xml'
43LEDM_CLEAN_VERIFY_PAGE_JOB="<ipdyn:JobType>cleaningVerificationPage</ipdyn:JobType>"
44# **************************************************************************** #
45
46# ********************** Align **********************
47
48def AlignType1(dev, loadpaper_ui): # Auto VIP (using embedded PML)
49    ok = loadpaper_ui()
50    if ok:
51        dev.writeEmbeddedPML(pml.OID_AUTO_ALIGNMENT,
52                             pml.AUTO_ALIGNMENT, style=0,
53                             direct=True)
54        dev.closePrint()
55
56    return ok
57
58def AlignType1PML(dev, loadpaper_ui): # Auto VIP (using PML)
59    ok = loadpaper_ui()
60    if ok:
61        dev.setPML(pml.OID_AUTO_ALIGNMENT, pml.AUTO_ALIGNMENT)
62        dev.closePML()
63
64    return ok
65
66
67
68def AlignType2(dev, loadpaper_ui, align_ui, bothpens_ui): # 8xx
69    state, a, b, c, d = 0, 6, 6, 3, 3
70    ok = False
71    while state != -1:
72        if state == 0:
73            state = 1
74            pens = dev.getStatusFromDeviceID()['agents']
75            pen_types = [pens[x] for x in range(len(pens))]
76            if AGENT_TYPE_NONE in pen_types:
77                log.error("Cannot perform alignment with 0 or 1 pen installed.")
78                state = 100
79
80        elif state == 1:
81            state = -1
82            ok = loadpaper_ui()
83            if ok:
84                state = 2
85
86        elif state == 2:
87            state = -1
88            alignType2Phase1(dev)
89            ok, a = align_ui('A', 'h', 'kc', 2, 11)
90            if ok:
91                state = 3
92
93        elif state == 3:
94            state = -1
95            ok, b = align_ui('B', 'v', 'kc', 2, 11)
96            if ok:
97                state = 4
98
99        elif state == 4:
100            state = -1
101            ok, c = align_ui('C', 'v', 'kc', 2, 5)
102            if ok:
103                state = 5
104
105        elif state == 5:
106            state = -1
107            ok, d = align_ui('D', 'v', 'c', 2, 5)
108            if ok:
109                state = 6
110
111        elif state == 6:
112            ok = loadpaper_ui()
113            if ok:
114                alignType2Phase2(dev, a, b, c, d)
115            state = -1
116
117        elif state == 100:
118            ok = False
119            bothpens_ui()
120            state = -1
121
122    return ok
123
124
125
126def AlignType3(dev, loadpaper_ui, align_ui, paperedge_ui, align_type): # 9xx
127    state, a, b, c, d, zca = 0, 6, 6, 3, 3, 6
128    ok = False
129    while state != -1:
130        if state == 0:
131            state = -1
132            ok = loadpaper_ui()
133            if ok:
134                alignType3Phase1(dev)
135                state = 1
136
137        elif state == 1:
138            state = -1
139            ok, a = align_ui('A', 'h', 'kc', 2, 11)
140            if ok:
141                state = 2
142
143        elif state == 2:
144            state = -1
145            ok, b = align_ui('B', 'v', 'kc', 2, 11)
146            if ok:
147                state = 3
148
149        elif state == 3:
150            state = -1
151            ok, c = align_ui('C', 'v', 'k', 2, 11)
152            if ok:
153                state = 4
154
155        elif state == 4:
156            state = -1
157            ok, d = align_ui('D', 'v', 'kc', 2, 11)
158            if ok:
159                state = 5
160
161        elif state == 5:
162            state = -1
163            alignType3Phase2(dev, a, b, c, d)
164            if align_type == 9:
165                state = 7
166            else:
167                ok = loadpaper_ui()
168                if ok:
169                    state = 6
170
171        elif state == 6:
172            state = -1
173            alignType3Phase3(dev)
174            ok, zca = paperedge_ui(13)
175            if ok:
176                state = 7
177
178        elif state == 7:
179            ok = loadpaper_ui()
180            if ok:
181                alignType3Phase4(dev, zca)
182            state = -1
183
184    return ok
185
186
187def AlignxBow(dev, align_type, loadpaper_ui, align_ui, paperedge_ui,
188               invalidpen_ui, coloradj_ui): # Types 4, 5, and 7
189
190    state, statepos = 0, 0
191    user_cancel_states = [1000, -1]
192    a, b, c, d, e, f, g = 0, 0, 0, 0, 0, 0, 0
193    error_states = [-1]
194    ok = False
195
196    dev.pen_config = status.getPenConfiguration(dev.getStatusFromDeviceID())
197
198    if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
199        state, states = 100, [-1]
200
201    elif dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
202        state, states = 0, [2, 200, 3, -1]
203
204    elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
205        state, states = 0, [2, 200, 3, -1]
206
207    elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
208        state, states = 0, [2, 300, 3, -1]
209
210    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
211        state, states = 0, [2, 400, 500, 600, 700, 3, 4, -1]
212
213    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
214        state, states = 0, [2, 400, 500, 600, 700, 800, 900, 3, 4, -1]
215
216    while state != -1:
217
218        if state == 0:
219            ok = loadpaper_ui()
220            if ok:
221                if align_type == 4:
222                    alignType4Phase1(dev)
223                elif align_type == 5:
224                    alignType5Phase1(dev)
225                elif align_type == 7:
226                    alignType7Phase1(dev)
227                else:
228                    statepos, states = 0, error_states
229            else:
230                statepos, states = 0, user_cancel_states
231
232
233        elif state == 2:
234            ok, a = paperedge_ui(13)
235            if not ok:
236                statepos, states = 0, user_cancel_states
237
238        elif state == 3:
239            if align_type == 4:
240                alignType4Phase2(dev, a, b, c, d, e)
241            elif align_type == 5:
242                alignType5Phase2(dev, a, b, c, d, e, f, g)
243            else:
244                alignType7Phase2(dev, a, b, c, d, e, f, g)
245
246        elif state == 4:
247            ok = loadpaper_ui()
248            if ok:
249                if align_type == 4:
250                    alignType4Phase3(dev)
251                elif align_type == 5:
252                    alignType5Phase3(dev)
253                else:
254                    alignType7Phase3(dev)
255            else:
256                statepos, states = 0, user_cancel_states
257
258        elif state == 100:
259            invalidpen_ui()
260            state = -1
261
262        elif state == 200: # B Line - Black only or photo only
263            ok, b = align_ui('B', 'v', 'k', 2, 11)
264            if not ok:
265                statepos, states = 0, user_cancel_states
266
267        elif state == 300: # B Line - Color only
268            ok, b = align_ui('B', 'v', 'kc', 2, 11)
269            if not ok:
270                statepos, states = 0, user_cancel_states
271
272        elif state == 400: # B Line - 2 pen
273            ok, b = align_ui('B', 'h', 'kc', 2, 17)
274            if not ok:
275                statepos, states = 0, user_cancel_states
276
277        elif state == 500: # C Line
278            ok, c = align_ui('C', 'v', 'kc', 2, 17)
279            if not ok:
280                statepos, states = 0, user_cancel_states
281
282        elif state == 600 : # D Line
283            ok, d = align_ui('D', 'v', 'k', 2, 11)
284            if not ok:
285                statepos, states = 0, user_cancel_states
286
287        elif state == 700: # E Line
288            ok, e = align_ui('E', 'v', 'kc', 2, 11)
289            if not ok:
290                statepos, states = 0, user_cancel_states
291
292        elif state == 800: # F Line
293            ok, f = coloradj_ui('F', 21)
294            if not ok:
295                statepos, states = 0, user_cancel_states
296
297        elif state == 900: # G Line
298            ok, f = coloradj_ui('G', 21)
299            if not ok:
300                statepos, states = 0, user_cancel_states
301
302        elif state == 1000: # User cancel
303            ok = False
304            log.warning("Alignment canceled at user request.")
305
306        state = states[statepos]
307        statepos += 1
308
309    return ok
310
311
312def AlignType6(dev, ui1, ui2, loadpaper_ui):
313    state = 0
314    ok = False
315
316    while state != -1:
317        if state == 0:
318            state = 2
319            accept = ui1()
320            if not accept:
321                # Need to printout alignment page
322                state = 1
323
324        elif state == 1: # Load and print
325            state = -1
326            ok = loadpaper_ui()
327            if ok:
328                alignType6Phase1(dev)
329                state = 2
330
331        elif state == 2: # Finish
332            ui2()
333            state = -1
334
335
336    return ok
337
338def AlignType8(dev, loadpaper_ui, align_ui): # 450
339    state, a, b, c, d = 0, 5, 5, 5, 5
340    ok = False
341
342    while state != -1:
343
344        if state == 0:
345            state = -1
346            ok = loadpaper_ui()
347            if ok:
348                num_inks = alignType8Phase1(dev)
349                state = 1
350
351        elif state == 1:
352            state = -1
353            ok, a = align_ui('A', 'v', 'k', 3, 9)
354            if ok:
355                state = 2
356
357        elif state == 2:
358            state = -1
359            ok, b = align_ui('B', 'v', 'c', 3, 9)
360            if ok:
361                state = 3
362
363        elif state == 3:
364            state = -1
365            ok, c = align_ui('C', 'v', 'kc', 3, 9)
366            if ok:
367                state = 4
368
369        elif state == 4:
370            state = -1
371            ok, d = align_ui('D', 'h', 'kc', 3, 9)
372            if ok:
373                state = 5
374
375        elif state == 5:
376            alignType8Phase2(dev, num_inks, a, b, c, d)
377            state = -1
378
379    return ok
380
381
382def AlignType10(dev, loadpaper_ui, align_ui):
383    pattern = alignType10SetPattern(dev)
384    state = 0
385
386    while state != -1:
387        if state == 0:
388            state = -1
389            ok = loadpaper_ui()
390            if ok:
391                alignType10Phase1(dev)
392                state = 1
393
394        elif state == 1:
395            values = align_ui(pattern, ALIGN_TYPE_LBOW)
396            log.debug(values)
397            alignType10Phase2(dev, values, pattern)
398            state = 2
399
400        elif state == 2:
401            state = -1
402            ok = loadpaper_ui()
403            if ok:
404                alignType10Phase3(dev)
405
406
407def alignType10SetPattern(dev):
408    pattern = None
409    pen_config = status.getPenConfiguration(dev.getStatusFromDeviceID())
410    log.debug("Pen config=%d" % pen_config)
411
412    if pen_config == AGENT_CONFIG_BLACK_ONLY:
413        pattern = 1
414
415    elif pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
416        pattern = 2
417
418    elif pen_config in (AGENT_CONFIG_COLOR_AND_PHOTO, AGENT_CONFIG_COLOR_AND_GREY):
419        pattern = 3
420
421    log.debug("Pattern=%d" % pattern)
422    return pattern
423
424
425def alignType10Phase1(dev):
426    dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE,
427                         pml.PRINT_INTERNAL_PAGE_ALIGNMENT_PAGE)
428
429    dev.closePrint()
430
431
432def alignType10Phase2(dev, values, pattern):
433    i, p = 0, ''.join([pcl.UEL, '\n'])
434
435    for x in values:
436        i += 1
437        if not x:
438            break
439        p = ''.join([p, pcl.ESC, '*o5W\x1a', chr(i), '\x00', chr(pattern), chr(x), '\n'])
440
441    p = ''.join([p, pcl.UEL])
442
443    dev.printData(p)
444    dev.closePrint()
445
446
447def alignType10Phase3(dev):
448    dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE,
449                         pml.PRINT_INTERNAL_PAGE_ALIGNMENT_PAGE_VERIFICATION)
450
451    dev.closePrint()
452
453
454def align10and11and14Controls(pattern, align_type):
455    if align_type == ALIGN_TYPE_LIDIL_0_5_4:
456        if pattern == 1:
457            controls = { 'A' : (True, 23),
458                         'B' : (True, 9),
459                         'C' : (True, 9),
460                         'D' : (False, 0),
461                         'E' : (False, 0),
462                         'F' : (False, 0),
463                         'G' : (False, 0),
464                         'H' : (False, 0),}
465        elif pattern == 2: # K + color (ii)
466            controls = { 'A' : (True, 17),
467                         'B' : (True, 23),
468                         'C' : (True, 23),
469                         'D' : (True, 23),
470                         'E' : (True, 9),
471                         'F' : (True, 9),
472                         'G' : (True, 9),
473                         'H' : (True, 9),}
474
475        elif pattern == 3: # color + photo (iii)
476            controls = { 'A' : (True, 9),
477                         'B' : (True, 23),
478                         'C' : (True, 23),
479                         'D' : (True, 23),
480                         'E' : (True, 9),
481                         'F' : (True, 9),
482                         'G' : (True, 9),
483                         'H' : (True, 9),}
484
485    elif align_type == ALIGN_TYPE_LIDIL_DJ_D1600:
486        if pattern == 1:
487            controls = { 'A' : (True, 23),
488                         'B' : (True, 9),}
489        elif pattern == 2: # K + color (ii)
490            controls = { 'A' : (True, 23),
491                         'B' : (True, 11),
492                         'C' : (True, 23),
493                         'D' : (True, 23),
494                         'E' : (True, 11),
495                         'F' : (True, 11),
496                         'G' : (True, 11),
497                         'H' : (True, 9),
498                         'I' : (True, 9),}
499
500        elif pattern == 3: # color + photo (iii)
501            controls = { 'A' : (True, 9),
502                         'B' : (True, 23),
503                         'C' : (True, 23),
504                         'D' : (True, 23),
505                         'E' : (True, 9),
506                         'F' : (True, 9),
507                         'G' : (True, 9),
508                         'H' : (True, 9),
509                         'I' : (True, 9),}
510
511    else:
512        if pattern == 1:
513            controls = {'A' : (True, 23),
514                         'B' : (True, 9),
515                         'C' : (True, 9),
516                         'D' : (False, 0),
517                         'E' : (False, 0),
518                         'F' : (False, 0),
519                         'G' : (False, 0),
520                         'H' : (False, 0),}
521        elif pattern == 2:
522            controls = {'A' : (True, 23),
523                        'B' : (True, 17),
524                         'C' : (True, 23),
525                         'D' : (True, 23),
526                         'E' : (True, 9),
527                         'F' : (True, 9),
528                         'G' : (True, 9),
529                         'H' : (True, 9),}
530
531        elif pattern == 3:
532            controls = {'A' : (True, 23),
533                         'B' : (True, 9),
534                         'C' : (True, 23),
535                         'D' : (True, 23),
536                         'E' : (True, 9),
537                         'F' : (True, 9),
538                         'G' : (True, 9),
539                         'H' : (True, 9),}
540
541    return controls
542
543
544def AlignType11(dev, loadpaper_ui, align_ui, invalidpen_ui):
545    pattern = alignType11SetPattern(dev)
546    if pattern is None:
547        invalidpen_ui()
548        return
549
550    state = 0
551    while state != -1:
552        if state == 0:
553            state = -1
554            ok = loadpaper_ui()
555            if ok:
556                alignType11Phase1(dev)
557                state = 1
558
559        elif state == 1:
560            values = align_ui(pattern, ALIGN_TYPE_LIDIL_0_5_4)
561            log.debug(values)
562            alignType11Phase2(dev, values, pattern, dev.pen_config)
563            state = 2
564
565        elif state == 2:
566            state = -1
567            ok = loadpaper_ui()
568            if ok:
569                alignType11Phase3(dev)
570
571
572def alignType11SetPattern(dev):
573    pattern = None
574    dev.pen_config = status.getPenConfiguration(dev.getStatusFromDeviceID())
575    log.debug("Pen config=%d" % dev.pen_config)
576
577    if dev.pen_config in (AGENT_CONFIG_BLACK_ONLY, AGENT_CONFIG_COLOR_ONLY): # (i)
578        pattern = 1
579
580    if dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK: # (ii)
581        pattern = 2
582
583    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO: # (iii)
584        pattern = 3
585
586    elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
587        return None
588
589    log.debug("Pattern=%d" % pattern)
590    return pattern
591
592
593def alignType11Phase1(dev):
594    dev.printData(ldl.buildResetPacket())
595    dev.printData(ldl.buildReportPagePacket(ldl.COMMAND_REPORT_PAGE_PEN_CALIBRATION))
596    dev.closePrint()
597
598
599def alignType11Phase2(dev, values, pattern, pen_config):
600    active_colors = 0
601
602    if pen_config == AGENT_CONFIG_BLACK_ONLY:
603        active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_K
604        values = values[:3]
605
606    elif pen_config == AGENT_CONFIG_COLOR_ONLY:
607        active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_COLOR
608        values = values[:3]
609
610    elif pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
611        active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_K | ldl.COMMAND_SET_PEN_ALIGNMENT_3_COLOR
612
613    elif pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
614        active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_COLOR | ldl.COMMAND_SET_PEN_ALIGNMENT_3_PHOTO
615
616    log.debug("Active colors=0x%x Values=%s" % (active_colors, values))
617
618    dev.printData(ldl.buildSetPenAlignment3Packet(active_colors, values))
619    dev.closePrint()
620
621def alignType11Phase3(dev):
622    dev.printData(ldl.buildResetPacket())
623    dev.printData(ldl.buildReportPagePacket(ldl.COMMAND_REPORT_PAGE_PEN_CALIBRATION_VERIFY))
624    dev.closePrint()
625
626
627def AlignType13(dev, loadpaper_ui, scanner_align_load_ui): # Auto AiO (Yellowtail)
628    ok = loadpaper_ui()
629    if ok:
630        alignType13Phase1(dev)
631        ok = scanner_align_load_ui()
632
633    return ok
634
635def alignType13Phase1(dev):
636    dev.setPML(pml.OID_AUTO_ALIGNMENT, pml.AUTO_ALIGNMENT)
637    dev.closePML()
638
639calibrationSession = 1
640
641def dataModelHelper(dev, func, ui2):
642    data = status.StatusType10FetchUrl(func, "/Calibration/State")
643    if not data:
644        data = status.StatusType10FetchUrl(func, "/Calibration/State")
645
646    if not data:
647        log.debug("Unable to retrieve calibration state")
648        dev.close()
649        return 0
650
651    if to_bytes_utf8("ParmsRequested") in data:
652        log.error("Restart device and start alignment")
653        dev.close()
654        return 1
655
656    if to_bytes_utf8("404 Not Found") in data:
657        log.error("Device may not support Alignment")
658        dev.close()
659        return 1
660
661    if to_bytes_utf8("Printing<") in data:
662        log.warn("Previous alignment job not completed")
663        dev.close()
664        return 1
665
666    data = status.StatusType10FetchUrl(func, "/DevMgmt/ConsumableConfigDyn.xml")
667    if to_bytes_utf8("AlignmentMode") not in data:
668        log.error("Device may not support Alignment")
669        dev.close()
670        return 1
671
672    if to_bytes_utf8("automatic") in data:
673        log.debug("Device supports automatic calibration")
674        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>")
675        dev.close()
676        return 0
677
678    if to_bytes_utf8("semiAutomatic") in data:
679        log.debug("Device supports semiAutomatic calibration")
680        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>")
681        dev.close()
682        return ui2()
683
684    if to_bytes_utf8("manual") in data:
685        log.debug("Device supports manual calibration")
686        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>")
687        import string
688        data = string.split(data, "/Jobs")[1]
689        data = string.split(data, "\r\n")[0]
690        data = "/Jobs" + data
691        data = status.StatusType10FetchUrl(func, data)
692        data = string.split(data, "Session/")[1]
693        data = string.split(data, "<")[0]
694        data = "/Calibration/Session/" + data + "/ManualSelectedPatterns.xml"
695        global calibrationSession
696        calibrationSession = data
697        dev.close()
698    return 0
699
700def AlignType16Manual(dev, a, b, c, d, e, f, g, h, i, j):
701    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 ))
702    func = dev.getEWSUrl_LEDM
703    data = status.StatusType10FetchUrl(func, "/Calibration/State")
704
705    if not data:
706        return 0
707
708    while "ParmsRequested" not in data:
709        if "CalibrationValid" in data:
710            return
711        data = status.StatusType10FetchUrl(func, "/Calibration/State")
712    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 )
713    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
714    data = status.StatusType10FetchUrl(func, calibrationSession, data)
715
716def AlignType15(dev, loadpaper_ui, ui2):
717    if not loadpaper_ui():
718        return
719    return dataModelHelper(dev, dev.getEWSUrl_LEDM, ui2)
720
721def AlignType15Phase1(dev, ui2):
722    return dataModelHelper(dev, dev.getEWSUrl_LEDM, ui2)
723
724#AlignType 17 is LEDM via FF/CC/0 USB channel
725def AlignType17(dev, loadpaper_ui, ui2):
726    if not loadpaper_ui():
727        return
728    return dataModelHelper(dev, dev.getUrl_LEDM, ui2)
729
730def AlignType17Phase1(dev, ui2):
731    return dataModelHelper(dev, dev.getUrl_LEDM, ui2)
732
733def AlignType16(dev, loadpaper_ui, align_ui):
734    if not loadpaper_ui():
735        return
736    dataModelHelper(dev, dev.getEWSUrl_LEDM, align_ui)
737    state, a, b, c, d, e, f, g, h, i, j = 0, 6, 6, 3, 3, 6, 6, 6, 6, 6, 6
738    ok = False
739    while state != -1:
740        if state == 0:
741            state = -1
742            ok, a = align_ui('A', 'v', 'kc', 3, 23)
743            if ok:
744                state = 1
745
746        elif state == 1:
747            state = -1
748            ok, b = align_ui('B', 'h', 'kc', 3, 17)
749            if ok:
750                state = 2
751
752        elif state == 2:
753            state = -1
754            ok, c = align_ui('C', 'v', 'k', 3, 23)
755            if ok:
756                state = 3
757
758        elif state == 3:
759            state = -1
760            ok, d = align_ui('D', 'v', 'c', 3, 23)
761            if ok:
762                state = 4
763
764        elif state == 4:
765            state = -1
766            ok, e = align_ui('E', 'h', 'k', 3, 11)
767            if ok:
768                state = 5
769
770        elif state == 5:
771            state = -1
772            ok, f = align_ui('F', 'h', 'k', 3, 11)
773            if ok:
774                state = 6
775
776        elif state == 6:
777            state = -1
778            ok, g = align_ui('G', 'h', 'k', 3, 11)
779            if ok:
780                state = 7
781
782        elif state == 7:
783            state = -1
784            ok, h = align_ui('H', 'h', 'k', 3, 11)
785            if ok:
786                state = 8
787
788        elif state == 8:
789            state = -1
790            ok, i = align_ui('I', 'v', 'k', 3, 19)
791            if ok:
792                state = 9
793
794        elif state == 9:
795            state = -1
796            ok, j = align_ui('J', 'v', 'k', 3, 19)
797            if ok:
798                state = 10
799
800        elif state == 10:
801            state = -1
802
803    AlignType16Manual(dev, a, b, c, d, e, f, g, h, i, j)
804
805    return ok
806
807def AlignType16Phase1(dev, a, b, c, d, e, f, g, h, i, j):
808    AlignType16Manual(dev, a, b, c, d, e, f, g, h, i, j)
809
810def AlignType14(dev, loadpaper_ui, align_ui, invalidpen_ui):
811    pattern = alignType14SetPattern(dev)
812    if pattern is None:
813        invalidpen_ui()
814        return
815
816    state = 0
817    while state != -1:
818        if state == 0:
819            state = -1
820            ok = loadpaper_ui()
821            if ok:
822                alignType14Phase1(dev)
823                state = 1
824
825        elif state == 1:
826            values = align_ui(pattern, ALIGN_TYPE_LIDIL_DJ_D1600)
827            log.debug(values)
828            alignType14Phase2(dev, values, pattern, dev.pen_config)
829            state = 2
830
831        elif state == 2:
832            state = -1
833            ok = loadpaper_ui()
834            if ok:
835                alignType14Phase3(dev)
836
837
838def alignType14SetPattern(dev):
839    pattern = None
840    dev.pen_config = status.getPenConfiguration(dev.getStatusFromDeviceID())
841    log.debug("Pen config=%d" % dev.pen_config)
842
843    if dev.pen_config in (AGENT_CONFIG_BLACK_ONLY, AGENT_CONFIG_COLOR_ONLY): # (i)
844        pattern = 1
845
846    if dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK: # (ii)
847        pattern = 2
848
849    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO: # (iii)
850        pattern = 3
851
852    elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
853        return None
854
855    log.debug("Pattern=%d" % pattern)
856    return pattern
857
858
859def alignType14Phase1(dev):
860    dev.printData(ldl.buildResetPacket())
861    dev.printData(ldl.buildReportPagePacket(ldl.COMMAND_REPORT_PAGE_PEN_CALIBRATION))
862    dev.closePrint()
863
864
865def alignType14Phase2(dev, values, pattern, pen_config):
866    active_colors = 0
867
868    if pen_config == AGENT_CONFIG_BLACK_ONLY:
869        active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_K
870        values = values[:2]
871
872    elif pen_config == AGENT_CONFIG_COLOR_ONLY:
873        active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_COLOR
874        values = values[:2]
875
876    elif pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
877        active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_K | ldl.COMMAND_SET_PEN_ALIGNMENT_3_COLOR
878
879    elif pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
880        active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_COLOR | ldl.COMMAND_SET_PEN_ALIGNMENT_3_PHOTO
881
882    log.debug("Active colors=0x%x Values=%s" % (active_colors, values))
883
884    dev.printData(ldl.buildSetPenAlignment3Packet(active_colors, values))
885    dev.closePrint()
886
887def alignType14Phase3(dev):
888    dev.printData(ldl.buildResetPacket())
889    dev.printData(ldl.buildReportPagePacket(ldl.COMMAND_REPORT_PAGE_PEN_CALIBRATION_VERIFY))
890    dev.closePrint()
891
892
893def alignType2Phase1(dev): # Type 2 (8xx)
894    dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, 0)
895    dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, 0)
896    dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, 0)
897    dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, 0)
898    dev.closePrint()
899    dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align1_8xx.pcl.gz'))
900
901
902def alignType2Phase2(dev, a, b, c, d): # (8xx)
903    dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, (a - 6) * 12)
904    dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, (b - 6) * 12)
905    dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, (c - 3) * 12)
906    dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, (d - 3) * 12)
907    dev.writeEmbeddedPML(pml.OID_MARKING_AGENTS_INITIALIZED, 3)
908    dev.closePrint()
909    dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align2_8xx.pcl.gz'))
910
911
912def alignType3Phase1(dev): # Type 3 (9xx)
913    dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, 0)
914    dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, 0)
915    dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, 0)
916    dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, 0)
917    dev.closePrint()
918    dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align1_9xx.pcl.gz'))
919
920
921def alignType3Phase2(dev, a, b, c, d): # Type 3 (9xx)
922    dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, (a - 6) * 12)
923    dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, (6 - b) * 12)
924    dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, (6 - c) * 12)
925    dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, (6 - d) * 6)
926    dev.closePrint()
927
928def alignType3Phase3(dev): # Type 3 (9xx)
929    dev.closePrint()
930    dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align3_9xx.pcl.gz'))
931
932
933def alignType3Phase4(dev, zca): # Type 3 (9xx)
934    dev.writeEmbeddedPML(pml.OID_MARKING_AGENTS_INITIALIZED, 3)
935    dev.closePrint()
936    dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align2_9xx.pcl.gz'))
937
938
939def alignType4Phase1(dev): # Type 4 (xBow/LIDIL 0.3.8)
940    dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_RESUME_NORMAL_OPERATION))
941
942    if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
943        return
944
945    elif dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
946        ldl_file = 'cbbcal.ldl.gz'
947
948    elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
949        ldl_file = 'cbccal.ldl.gz'
950
951    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
952        ldl_file = 'cb2pcal.ldl.gz'
953
954    dev.printData(ldl.buildSetPrinterAlignmentPacket(0, 0, 0, 0))
955    dev.closePrint()
956    dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', ldl_file))
957
958
959def alignType4Phase2(dev, a, b, c, d, e): # Type 4 (LIDIL 0.3.8)
960    log.debug("A=%d, B=%d, C=%d, D=%d, E=%d" % (a, b, c, d, e))
961
962    if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
963        return
964
965    # ZCA
966    zca = (7 - a) * -48
967    dev.printData(ldl.buildZCAPacket(zca))
968
969    if dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
970        k_bidi = (6 - b) * 2
971        dev.printData(ldl.buildSetPrinterAlignmentPacket(k_bidi, 0, 0, 0))
972
973    elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
974        cmy_bidi = (6 - b) * 2
975        dev.printData(ldl.buildSetPrinterAlignmentPacket(0, 0, 0, cmy_bidi))
976
977    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
978        vert = (9 - b) * 2
979        hort = (9 - c) * -2
980        k_bidi = (6 - d) * 2
981        cmy_bidi = (6 - e) * 2
982
983        dev.printData(ldl.buildSetPrinterAlignmentPacket(k_bidi, hort, vert, cmy_bidi))
984
985    # Set alignment
986    dev.printData(ldl.buildSetPensAlignedPacket())
987    dev.closePrint()
988
989
990def alignType4Phase3(dev): # Type 4 (LIDIL 0.3.8)
991    if dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
992        dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', 'cb2pcal_done.ldl.gz'))
993
994
995def alignType5Phase1(dev): # Type 5 (xBow+/LIDIL 0.4.3)
996    dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_RESUME_NORMAL_OPERATION))
997
998    if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
999        return
1000
1001    elif dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
1002        ldl_file = 'cbbcal.ldl.gz'
1003
1004    elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
1005        ldl_file = 'cbpcal.ldl.gz'
1006
1007    elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
1008        ldl_file = 'cbccal.ldl.gz'
1009
1010    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
1011        ldl_file = 'cb2pcal.ldl.gz'
1012
1013    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
1014        ldl_file = 'cbcpcal.ldl.gz'
1015
1016    dev.printData(ldl.buildZCAPacket(0))
1017    dev.printData(ldl.buildColorHortPacket(0))
1018    dev.printData(ldl.buildColorVertPacket(0))
1019    dev.printData(ldl.buildBlackVertPacket(0))
1020    dev.printData(ldl.buildBlackHortPacket(0))
1021    dev.printData(ldl.buildBlackBidiPacket(0))
1022    dev.printData(ldl.buildColorBidiPacket(0))
1023    dev.printData(ldl.buildPhotoHuePacket(0))
1024    dev.printData(ldl.buildColorHuePacket(0))
1025    dev.closePrint()
1026
1027    dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', ldl_file))
1028
1029
1030def alignType5Phase2(dev, a, b, c, d, e, f, g): # Type 5 (xBow+/LIDIL 0.4.3)
1031    log.debug("A=%d, B=%d, C=%d, D=%d, E=%d, F=%d, G=%d" % (a, b, c, d, e, f, g))
1032
1033    if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
1034        return
1035
1036    # ZCA
1037    zca = (7 - a) * -48
1038    dev.printData(ldl.buildZCAPacket(zca))
1039
1040    if dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
1041        k_bidi = (6 - b) * 2
1042        dev.printData(ldl.buildBlackBidiPacket(k_bidi))
1043
1044    elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
1045        kcm_bidi = (6 - b) * 2
1046        dev.printData(ldl.buildPhotoBidiPacket(kcm_bidi))
1047
1048    elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
1049        cmy_bidi = (6 - b) * 2
1050        dev.printData(ldl.buildColorBidiPacket(cmy_bidi))
1051
1052    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
1053        vert = (9 - b) * 2
1054        hort = (9 - c) * -2
1055        k_bidi = (6 - d) * 2
1056        cmy_bidi = (6 - e) * 2
1057
1058        dev.printData(ldl.buildColorHortPacket(0))
1059        dev.printData(ldl.buildColorVertPacket(0))
1060        dev.printData(ldl.buildBlackVertPacket(vert))
1061        dev.printData(ldl.buildBlackHortPacket(hort))
1062        dev.printData(ldl.buildBlackBidiPacket(k_bidi))
1063        dev.printData(ldl.buildColorBidiPacket(cmy_bidi))
1064
1065    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
1066        vert = (9 - b) * 2
1067        hort = (9 - c) * -2
1068        cmy_bidi = (6 - d) * 2
1069        kcm_bidi = (6 - e) * 2
1070
1071        photo_adj = colorcal.PHOTO_ALIGN_TABLE[f][g]
1072        color_adj = colorcal.COLOR_ALIGN_TABLE[f][g]
1073
1074        dev.printData(ldl.buildPhotoHortPacket(hort))
1075        dev.printData(ldl.buildPhotoVertPacket(vert))
1076        dev.printData(ldl.buildColorHortPacket(0))
1077        dev.printData(ldl.buildColorVertPacket(0))
1078        dev.printData(ldl.buildPhotoBidiPacket(kcm_bidi))
1079        dev.printData(ldl.buildColorBidiPacket(cmy_bidi))
1080        dev.printData(ldl.buildPhotoHuePacket(photo_adj))
1081        dev.printData(ldl.buildColorHuePacket(color_adj))
1082
1083    # Set alignment
1084    dev.printData(ldl.buildSetPensAlignedPacket())
1085    dev.closePrint()
1086
1087
1088def alignType5Phase3(dev): # Type 5 (xBow+/LIDIL 0.4.3)
1089    dev.closePrint()
1090    if dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
1091        dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', "cb2pcal_done.ldl.gz"))
1092
1093    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
1094        dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', "cbccal_done.ldl.gz"))
1095
1096
1097def alignType6Phase1(dev): # Type 6 (xBow AiO)
1098    dev.printData(ldl.buildPrintInternalPagePacket())
1099    dev.closePrint()
1100
1101def alignType7Phase1(dev): # Type 7 (xBow VIP)
1102    # Zero out all alignment values
1103    dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, 0)
1104
1105    dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, 0)
1106    dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, 0)
1107    dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, 0)
1108
1109    dev.writeEmbeddedPML(pml.OID_AGENT3_VERTICAL_ALIGNMENT, 0)
1110    dev.writeEmbeddedPML(pml.OID_AGENT3_HORIZONTAL_ALIGNMENT, 0)
1111    dev.writeEmbeddedPML(pml.OID_AGENT3_BIDIR_ADJUSTMENT, 0)
1112
1113    dev.writeEmbeddedPML(pml.OID_ZCA, 0)
1114
1115    if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
1116        return
1117
1118    elif dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
1119        pcl_file = 'crbcal.pcl.gz'
1120
1121    elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
1122        pcl_file = 'crpcal.pcl.gz'
1123
1124    elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
1125        pcl_file = 'crccal.pcl.gz'
1126
1127    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
1128        pcl_file = 'crcbcal.pcl.gz'
1129
1130    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
1131        pcl_file = 'crcpcal.pcl.gz'
1132
1133    dev.closePrint()
1134    dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', pcl_file))
1135
1136
1137def alignType7Phase2(dev, a, b, c, d, e, f, g): # Type 7 (xBow VIP)
1138    log.debug("A=%d, B=%d, C=%d, D=%d, E=%d, F=%d, G=%d" % (a, b, c, d, e, f, g))
1139
1140    # ZCA
1141    zca = (7 - a) * -12
1142    dev.writeEmbeddedPML(pml.OID_ZCA, zca)
1143
1144    if dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
1145        k_bidi = (6 - b) * 6
1146        dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, k_bidi)
1147
1148    elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
1149        kcm_bidi = (6 - b) * 6
1150        dev.writeEmbeddedPML(pml.OID_AGENT3_BIDIR_ADJUSTMENT, kcm_bidi)
1151
1152    elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
1153        cmy_bidi = (6 - b) * 6
1154        dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, cmy_bidi)
1155
1156    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
1157        vert = (9 - b) * 6
1158        hort = (9 - c) * -6
1159        k_bidi = (6 - d) * 6
1160        cmy_bidi = (6 - e) * 6
1161
1162        dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, k_bidi)
1163        dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, cmy_bidi)
1164        dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, hort)
1165        dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, vert)
1166
1167    elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
1168        vert = (9 - b) * 6
1169        hort = (9 - c) * -6
1170        cmy_bidi = (6 - d) * 6
1171        kcm_bidi = (6 - e) * 6
1172
1173        photo_adj = colorcal.PHOTO_ALIGN_TABLE[f][g]
1174        color_adj = colorcal.COLOR_ALIGN_TABLE[f][g]
1175
1176        x = (color_adj << 8) + photo_adj
1177
1178        dev.writeEmbeddedPML(pml.OID_COLOR_CALIBRATION_SELECTION, x)
1179
1180        dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, cmy_bidi)
1181        dev.writeEmbeddedPML(pml.OID_AGENT3_BIDIR_ADJUSTMENT, kcm_bidi)
1182        dev.writeEmbeddedPML(pml.OID_AGENT3_HORIZONTAL_ALIGNMENT, hort)
1183        dev.writeEmbeddedPML(pml.OID_AGENT3_VERTICAL_ALIGNMENT, vert)
1184
1185    dev.closePrint()
1186
1187def alignType7Phase3(dev): # Type 7 (xBow VIP)
1188    dev.closePrint()
1189    dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', "crcaldone.pcl.gz"))
1190
1191
1192def alignType8Phase1(dev): # 450
1193    pens = dev.getStatusFromDeviceID()['agents']
1194    pen_types = [pens[x]['type'] for x in range(len(pens))]
1195
1196    if AGENT_TYPE_KCM in pen_types:
1197        f, num_inks = 'align6_450.pcl.gz', 6
1198    else:
1199        f, num_inks = 'align4_450.pcl.gz', 4
1200
1201    dev.closePrint()
1202    dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', f))
1203
1204    return num_inks
1205
1206
1207def alignType8Phase2(dev, num_inks, a, b, c, d): # 450
1208    align_values1 = {1 : '\x00\x00\x18',
1209                      2 : '\x00\x00\x12',
1210                      3 : '\x00\x00\x0c',
1211                      4 : '\x00\x00\x06',
1212                      5 : '\x00\x00\x00',
1213                      6 : '\x01\x00\x06',
1214                      7 : '\x01\x00\x0c',
1215                      8 : '\x01\x00\x12',
1216                      9 : '\x01\x00\x18',
1217                    }
1218
1219    align_values2 = {1 : '\x00\x00\x12',
1220                      2 : '\x00\x00\x0c',
1221                      3 : '\x00\x00\x06',
1222                      4 : '\x00\x00\x00',
1223                      5 : '\x01\x00\x06',
1224                      6 : '\x01\x00\x0c',
1225                      7 : '\x01\x00\x12',
1226                      8 : '\x01\x00\x18',
1227                      9 : '\x01\x00\x1e',
1228                    }
1229
1230    align_values3 = {1 : '\x00\x00\x24',
1231                      2 : '\x00\x00\x18',
1232                      3 : '\x00\x00\x12',
1233                      4 : '\x00\x00\x06',
1234                      5 : '\x00\x00\x00',
1235                      6 : '\x01\x00\x06',
1236                      7 : '\x01\x00\x12',
1237                      8 : '\x01\x00\x18',
1238                      9 : '\x01\x00\x24',
1239                    }
1240
1241    if num_inks == 4:
1242        s = ''.join([pcl.UEL,
1243              '@PJL ENTER LANGUAGE=PCL3GUI\n',
1244              pcl.RESET,
1245              pcl.ESC, '*o5W\x1a\x01', align_values1[a],
1246              pcl.ESC, '*o5W\x1a\x02', align_values2[a],
1247              pcl.ESC, '*o5W\x1a\x03', align_values1[b],
1248              pcl.ESC, '*o5W\x1a\x04', align_values1[b],
1249              pcl.ESC, '*o5W\x1a\x08', align_values1[c],
1250              pcl.ESC, '*o5W\x1a\x07', align_values1[d],
1251              pcl.RESET,
1252              pcl.UEL])
1253
1254    else: # 6
1255        s = ''.join([pcl.UEL,
1256              '@PJL ENTER LANGUAGE=PCL3GUI\n',
1257              pcl.RESET,
1258              pcl.ESC, '*o5W\x1a\x05', align_values1[a],
1259              pcl.ESC, '*o5W\x1a\x06', align_values3[a],
1260              pcl.ESC, '*o5W\x1a\x03', align_values1[b],
1261              pcl.ESC, '*o5W\x1a\x04', align_values1[b],
1262              pcl.ESC, '*o5W\x1a\x0a', align_values1[c],
1263              pcl.ESC, '*o5W\x1a\x09', align_values1[d],
1264              pcl.RESET,
1265              pcl.UEL])
1266
1267    dev.printData(s)
1268    dev.closePrint()
1269
1270
1271def AlignType12(dev, loadpaper_ui):
1272    if loadpaper_ui():
1273        dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_ALIGNMENT_PAGE)
1274        dev.closePML()
1275
1276# ********************** Clean **********************
1277def cleanVerifyPage(dev):
1278    # By default Clean verification page is Enabled
1279    return True
1280
1281def cleaning(dev, clean_type, level1, level2, level3,
1282              loadpaper_ui, dlg1, dlg2, dlg3, wait_ui, verify_page = cleanVerifyPage):
1283
1284    state = 0
1285    level = 0
1286    print_verify_page = verify_page(dev)
1287    while state != -1:
1288        if state == 0: # Initial level1 print
1289            state = 1
1290            if clean_type == CLEAN_TYPE_PCL_WITH_PRINTOUT:
1291                ok = loadpaper_ui()
1292                if not ok:
1293                    state = -1
1294            elif clean_type == CLEAN_TYPE_LEDM and print_verify_page == False:
1295                ok = loadpaper_ui("Clean functinality conformation...", "Clean Conformation")
1296                if not ok:
1297                    state = -1
1298
1299        elif state == 1: # Do level 1
1300            level1(dev)
1301            if clean_type == CLEAN_TYPE_LEDM and print_verify_page == False :
1302                state = 3
1303            else:
1304                state = 2
1305
1306        elif state == 2: # Load plain paper
1307            state = -1
1308            ok = loadpaper_ui()
1309            if ok:
1310                state = 3
1311
1312        elif state == 3: # Print test page
1313            state = 4
1314            if clean_type == CLEAN_TYPE_LEDM:
1315                cleanTypeVerify(dev,1, print_verify_page)
1316            else:
1317                print_clean_test_page(dev)
1318
1319        elif state == 4: # Need level 2?
1320            state = -1
1321            if print_verify_page == False :
1322                ok = dlg1("Clean Level 1 is Completed.")
1323            else:
1324                ok = dlg1()
1325
1326            if ok:
1327                state = 5
1328
1329        elif state == 5: # Do level 2
1330            level2(dev)
1331            if clean_type == CLEAN_TYPE_LEDM and print_verify_page == False :
1332                state = 7
1333            else:
1334                state = 6
1335
1336        elif state == 6: # Load plain paper
1337            state = -1
1338            ok = loadpaper_ui()
1339            if ok:
1340                state = 7
1341
1342        elif state == 7: # Print test page
1343            state = 8
1344            if clean_type == CLEAN_TYPE_LEDM:
1345                cleanTypeVerify(dev,2,print_verify_page)
1346            else:
1347                print_clean_test_page(dev)
1348
1349        elif state == 8: # Need level 3?
1350            state = -1
1351            if print_verify_page == False :
1352                ok = dlg2("Clean Level 2 is Completed.")
1353            else:
1354                ok = dlg2()
1355
1356            if ok:
1357                state = 9
1358
1359        elif state == 9: # Do level 3
1360            level3(dev)
1361            state = 10
1362            if clean_type == CLEAN_TYPE_LEDM and print_verify_page == False :
1363                state = 11
1364            else:
1365                state = 10
1366
1367        elif state == 10: # Load plain paper
1368            state = -1
1369            ok = loadpaper_ui()
1370            if ok:
1371                state = 11
1372
1373        elif state == 11: # Print test page
1374            state = 12
1375            if clean_type == CLEAN_TYPE_LEDM:
1376                cleanTypeVerify(dev,3,print_verify_page)
1377            else:
1378                print_clean_test_page(dev)
1379
1380        elif state == 12:
1381            state = -1
1382            if print_verify_page == False :
1383                dlg3("Level 3 cleaning complete. Check this page to see if the problem was fixed. replace the print cartridge(s)")
1384            else:
1385                dlg3()
1386
1387    return ok
1388
1389
1390def print_clean_test_page(dev):
1391    dev.closePrint()
1392    dev.printGzipFile(os.path.join(prop.home_dir, 'data',
1393                      'ps', 'clean_page.pdf.gz'), raw=False)
1394
1395def cleanType1(dev): # PCL, Level 1
1396    dev.writeEmbeddedPML(pml.OID_CLEAN, pml.CLEAN_CLEAN)
1397    dev.closePrint()
1398
1399def primeType1(dev): # PCL, Level 2
1400    dev.writeEmbeddedPML(pml.OID_CLEAN, pml.CLEAN_PRIME)
1401    dev.closePrint()
1402
1403def wipeAndSpitType1(dev): # PCL, Level 3
1404    dev.writeEmbeddedPML(pml.OID_CLEAN, pml.CLEAN_WIPE_AND_SPIT)
1405    dev.closePrint()
1406
1407def cleanType2(dev): # LIDIL, Level 1
1408    dev.printData(ldl.buildResetPacket())
1409    dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_COMMAND,
1410                                       ldl.COMMAND_HANDLE_PEN,
1411                                       ldl.COMMAND_HANDLE_PEN_CLEAN_LEVEL1))
1412    dev.closePrint()
1413
1414def primeType2(dev): # LIDIL, Level 2
1415    dev.printData(ldl.buildResetPacket())
1416    dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_COMMAND,
1417                                       ldl.COMMAND_HANDLE_PEN,
1418                                       ldl.COMMAND_HANDLE_PEN_CLEAN_LEVEL2))
1419    dev.closePrint()
1420
1421def wipeAndSpitType2(dev): # LIDIL, Level 3
1422    dev.printData(ldl.buildResetPacket())
1423    dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_COMMAND,
1424                                       ldl.COMMAND_HANDLE_PEN,
1425                                       ldl.COMMAND_HANDLE_PEN_CLEAN_LEVEL3))
1426    dev.closePrint()
1427
1428def setCleanType(name):
1429    try:
1430      xml = CleanXML %(name)
1431    except(UnicodeEncodeError, UnicodeDecodeError):
1432      log.error("Unicode Error")
1433    return xml
1434
1435
1436def getCleanLedmCapacity(dev):
1437    data_fp = StringIO()
1438    status_type = dev.mq.get('status-type', STATUS_TYPE_NONE)
1439
1440    if status_type == STATUS_TYPE_LEDM:
1441       func = dev.getEWSUrl_LEDM
1442    elif status_type == STATUS_TYPE_LEDM_FF_CC_0:
1443       func = dev.getUrl_LEDM
1444    else:
1445        log.error("Not an LEDM status-type: %d" % status_type)
1446        return ""
1447
1448    data = func(LEDM_CLEAN_CAP_XML, data_fp)
1449    if data:
1450        data = data.split(b'\r\n\r\n', 1)[1]
1451        if data:
1452            data = status.ExtractXMLData(data)
1453    return data
1454
1455
1456def isCleanTypeLedmWithPrint(dev):
1457    IPCap_data = getCleanLedmCapacity(dev)
1458
1459    if LEDM_CLEAN_VERIFY_PAGE_JOB in IPCap_data:
1460        return True
1461    else:
1462        return False
1463
1464
1465def cleanTypeLedm(dev): #LEDM, level 1
1466    xml = setCleanType('cleaningPage')
1467    dev.post(status_xml, xml)
1468    dev.closePrint()
1469
1470def cleanTypeLedm1(dev): #LEDM, level 2
1471    xml = setCleanType('cleaningPageLevel1')
1472    dev.post(status_xml, xml)
1473    dev.closePrint()
1474
1475def cleanTypeLedm2(dev): #LEDM, level 3
1476    xml = setCleanType('cleaningPageLevel2')
1477    dev.post(status_xml, xml)
1478    dev.closePrint()
1479
1480def cleanTypeVerify(dev,level, print_verification_page = True): #LEDM Test Page
1481    state = 0
1482    timeout = 0
1483    status_type = dev.mq.get('status-type', STATUS_TYPE_NONE)
1484    xml = setCleanType('cleaningVerificationPage')
1485
1486    if status_type == STATUS_TYPE_LEDM:
1487       func = dev.getEWSUrl_LEDM
1488
1489    elif status_type == STATUS_TYPE_LEDM_FF_CC_0:
1490       func = dev.getUrl_LEDM
1491
1492    else:
1493        log.error("Not an LEDM status-type: %d" % status_type)
1494
1495    print("Performing level %d cleaning...." % level)
1496
1497    while state != -1:
1498       status_block = status.StatusType10Status(func)
1499
1500       if status_block['status-code'] == STATUS_PRINTER_IDLE: # Printer Ready
1501             state = -1
1502             if print_verification_page:
1503                 dev.post(status_xml, xml)
1504       else:
1505             time.sleep(8)
1506             timeout += 1
1507
1508       if timeout > 20:
1509             log.error("Timeout waiting for Clean to finish.")
1510             sys.exit(0)
1511
1512
1513
1514# ********************** Color Cal **********************
1515
1516
1517def colorCalType1(dev, loadpaper_ui, colorcal_ui, photopenreq_ui): # 450
1518    value, state = 4, 0
1519    ok = False
1520    while state != -1:
1521
1522        if state == 0:
1523            if colorCalType1PenCheck(dev):
1524                state = 1
1525            else:
1526                state = 100
1527
1528        elif state == 1:
1529            state = -1
1530            ok = loadpaper_ui()
1531            if ok:
1532                colorCalType1Phase1(dev)
1533                state = 2
1534
1535        elif state == 2:
1536            state = -1
1537            ok, value = colorcal_ui()
1538            if ok:
1539                state = 3
1540
1541        elif state == 3:
1542            colorCalType1Phase2(dev, value)
1543            state = -1
1544
1545        elif state == 100:
1546            ok = False
1547            photopenreq_ui()
1548            state = -1
1549
1550    return ok
1551
1552
1553def colorCalType1PenCheck(dev): # 450
1554    pens = dev.getStatusFromDeviceID()['agents']
1555    pen_types = [pens[x]['type'] for x in range(len(pens))]
1556
1557    if AGENT_TYPE_KCM in pen_types:
1558        return True
1559
1560    else:
1561        log.error("Cannot perform color calibration with no photo pen installed.")
1562        return False
1563
1564
1565def colorCalType1Phase1(dev): # 450
1566    dev.closePrint()
1567    dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'colorcal1_450.pcl.gz'))
1568
1569
1570def colorCalType1Phase2(dev, value): # 450
1571    color_cal = {1 : ('\x0f\x3c', '\x17\x0c'),
1572                  2 : ('\x10\xcc', '\x15\x7c'),
1573                  3 : ('\x12\x5c', '\x13\xec'),
1574                  4 : ('\x13\xec', '\x12\x5c'),
1575                  5 : ('\x15\x7c', '\x10\xcc'),
1576                  6 : ('\x17\x0c', '\x0f\x3c'),
1577                  7 : ('\x18\x9c', '\x0d\xac'),
1578                }
1579
1580    s = ''.join([pcl.UEL,
1581                  '@PJL ENTER LANGUAGE=PCL3GUI\n',
1582                  pcl.RESET,
1583                  pcl.ESC, '*o5W\x1a\x0c\x00', color_cal[value][0],
1584                  pcl.ESC, '*o5W\x1a\x0b\x00', color_cal[value][1],
1585                  pcl.RESET,
1586                  pcl.UEL])
1587
1588    dev.printData(s)
1589    dev.closePrint()
1590
1591#
1592# COLOR CAL TYPE 2
1593#
1594
1595def colorCalType2(dev, loadpaper_ui, colorcal_ui, photopenreq_ui):
1596    value, state = 4, 0
1597    ok = True
1598    while state != -1:
1599
1600        if state == 0:
1601            if colorCalType2PenCheck(dev):
1602                state = 1
1603            else:
1604                state = 100
1605
1606        elif state == 1:
1607            state = -1
1608            ok = loadpaper_ui()
1609            if ok:
1610                colorCalType2Phase1(dev)
1611                state = 2
1612
1613        elif state == 2:
1614            state = -1
1615            ok, value = colorcal_ui()
1616            if ok:
1617                state = 3
1618
1619        elif state == 3:
1620            colorCalType2Phase2(dev, value)
1621            state = -1
1622
1623        elif state == 100:
1624            photopenreq_ui()
1625            ok = False
1626            state = -1
1627
1628    return ok
1629
1630def colorCalType2PenCheck(dev):
1631    pens = dev.getStatusFromDeviceID()['agents']
1632    pen_types = [pens[x]['type'] for x in range(len(pens))]
1633
1634    if not AGENT_TYPE_NONE in pen_types:
1635        return True
1636
1637    else:
1638        log.error("Cannot perform color calibration with pens missing.")
1639        return False
1640
1641def colorCalType2Phase1(dev):
1642    dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE,
1643                         pml.PRINT_INTERNAL_PAGE_COLOR_CAL)
1644
1645    dev.closePrint()
1646
1647
1648def colorCalType2Phase2(dev, value):
1649    c = colorcal.COLOR_CAL_TABLE
1650    p = ''.join(['\x1b&b19WPML \x04\x00\x06\x01\x04\x01\x05\x01\t\x08\x04',
1651                   chr(c[value*4]+100), chr(c[value*4+1]+100),
1652                   chr(c[value*4+2]+100), chr(c[value*4+3]+100),
1653                   '\x1b%-12345X'])
1654
1655    dev.printData(p)
1656    dev.closePrint()
1657
1658
1659#
1660# COLOR CAL TYPE 3
1661#
1662
1663def colorCalType3(dev, loadpaper_ui, colorcal_ui, photopenreq_ui):
1664    value, state = 4, 0
1665    ok = True
1666    while state != -1:
1667
1668        if state == 0:
1669            if colorCalType3PenCheck(dev):
1670                state = 1
1671            else:
1672                state = 100
1673
1674        elif state == 1:
1675            state = -1
1676            ok = loadpaper_ui()
1677            if ok:
1678                colorCalType3Phase1(dev)
1679                state = 2
1680
1681        elif state == 2:
1682            state = -1
1683            ok, valueA = colorcal_ui('A', 21)
1684            if ok:
1685                state = 3
1686
1687        elif state == 3:
1688            state = -1
1689            ok, valueB = colorcal_ui('B', 21)
1690            if ok:
1691                state = 4
1692
1693        elif state == 4:
1694            colorCalType3Phase2(dev, valueA, valueB)
1695            state = -1
1696
1697        elif state == 100:
1698            photopenreq_ui()
1699            ok = False
1700            state = -1
1701
1702    return ok
1703
1704def colorCalType3PenCheck(dev):
1705    pens = dev.getStatusFromDeviceID()['agents']
1706    pen_types = [pens[x]['type'] for x in range(len(pens))]
1707
1708    if AGENT_TYPE_KCM in pen_types or \
1709      AGENT_TYPE_BLUE in pen_types:
1710        return True
1711
1712    else:
1713        log.error("Cannot perform color calibration with no photo (or photo blue) pen installed.")
1714        return False
1715
1716
1717def colorCalType3Phase1(dev):
1718    dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE,
1719                         pml.PRINT_INTERNAL_PAGE_COLOR_CAL)
1720    dev.closePrint()
1721
1722def colorCalType3Phase2(dev, A, B):
1723    photo_adj = colorcal.PHOTO_ALIGN_TABLE[A-1][B-1]
1724    color_adj = colorcal.COLOR_ALIGN_TABLE[A-1][B-1]
1725    adj_value = (color_adj << 8) + photo_adj
1726
1727    dev.writeEmbeddedPML(pml.OID_COLOR_CALIBRATION_SELECTION, adj_value)
1728    dev.closePrint()
1729
1730def colorCalType4(dev, loadpaper_ui, colorcal_ui, wait_ui):
1731    state = 0
1732    ok = True
1733
1734    while state != -1:
1735        if state == 0:
1736            state = -1
1737            ok = loadpaper_ui()
1738            if ok:
1739                colorCalType4Phase1(dev)
1740                state = 2
1741
1742        elif state == 2:
1743            state = -1
1744            #wait_ui(90)
1745            ok, values = colorcal_ui()
1746            if ok:
1747                state = 3
1748
1749        elif state == 3:
1750            colorCalType4Phase2(dev, values)
1751            #wait_ui(5)
1752            state = 4
1753
1754        elif state == 4:
1755            state = -1
1756            ok = loadpaper_ui()
1757            if ok:
1758                colorCalType4Phase3(dev)
1759                state = -1
1760
1761    return ok
1762
1763
1764def colorCalType4Phase1(dev):
1765    dev.setPML(pml.OID_PRINT_INTERNAL_PAGE,
1766              pml.PRINT_INTERNAL_PAGE_COLOR_CAL)
1767
1768    dev.closePML()
1769
1770
1771def colorCalType4AdjValue(value):
1772    if value >= 100:
1773        return 200
1774    return value+100
1775
1776
1777def colorCalType4Phase2(dev, values):
1778    if -1 in values:
1779        Cadj, Madj, Yadj, cadj, madj, kadj = 244, 244, 244, 244, 244, 244
1780    else:
1781        sel1, sel2, sel3, sel4 = values
1782        tmp1 = colorcal.TYPE_4_C_TABLE[sel1][sel2]
1783        tmp2 = colorcal.TYPE_4_LC_TABLE[sel3][sel4]
1784
1785        Cadj = colorCalType4AdjValue(tmp1)
1786        cadj = colorCalType4AdjValue(tmp1+tmp2)
1787
1788        tmp1 = colorcal.TYPE_4_M_TABLE[sel1][sel2]
1789        tmp2 = colorcal.TYPE_4_LM_TABLE[sel3][sel4]
1790
1791        Madj = colorCalType4AdjValue(tmp1)
1792        madj = colorCalType4AdjValue(tmp1+tmp2)
1793
1794        Yadj = colorCalType4AdjValue(colorcal.TYPE_4_Y_TABLE[sel1][sel2])
1795        kadj = colorCalType4AdjValue(0)
1796
1797    log.debug("C=%d, M=%d, Y=%d, c=%d, m=%d, k=%d\n" % (Cadj, Madj, Yadj, cadj, madj, kadj))
1798
1799    dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_1,
1800                            kadj)
1801
1802    dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_2,
1803                            Cadj)
1804
1805    dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_3,
1806                            Madj)
1807
1808    dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_4,
1809                            Yadj)
1810
1811    dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_5,
1812                            cadj)
1813
1814    dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_6,
1815                            madj)
1816
1817    dev.closePML()
1818
1819
1820def colorCalType4Phase3(dev):
1821    dev.setPML(pml.OID_PRINT_INTERNAL_PAGE,
1822                         pml.PRINT_INTERNAL_PAGE_COLOR_PALETTE_CMYK_PAGE)
1823
1824    dev.closePML()
1825
1826
1827def colorCalType5(dev, loadpaper_ui):
1828    if loadpaper_ui():
1829        dev.printData("""\x1b%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n\x1bE\x1b%Puifp.multi_button_push 20;\nudw.quit;\x1b*rC\x1bE\x1b%-12345X""")
1830        dev.closePrint()
1831
1832
1833def colorCalType6(dev, loadpaper_ui):
1834    if loadpaper_ui():
1835        dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_COLOR_CAL)
1836        dev.closePML()
1837
1838def colorCalType7(dev, loadpaper_ui):
1839    if loadpaper_ui():
1840        dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_AUTOMATIC_COLOR_CALIBRATION)
1841        dev.closePML()
1842
1843# ********************** LF Cal **********************
1844
1845def linefeedCalType1(dev, loadpaper_ui):
1846    if loadpaper_ui():
1847        dev.printData("""\x1b%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n\x1bE\x1b%Puifp.multi_button_push 3;\nudw.quit;\x1b*rC\x1bE\x1b%-12345X""")
1848        dev.closePrint()
1849
1850def linefeedCalType2(dev, loadpaper_ui):
1851    if loadpaper_ui():
1852        dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_LINEFEED_CALIBRATION)
1853        dev.closePML()
1854
1855
1856# ********************** PQ Diag **********************
1857
1858def printQualityDiagType1(dev, loadpaper_ui):
1859    if loadpaper_ui():
1860        dev.printData("""\x1b%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n\x1bE\x1b%Puifp.multi_button_push 14;\nudw.quit;\x1b*rC\x1bE\x1b%-12345X""")
1861        dev.closePrint()
1862
1863def printQualityDiagType2(dev, loadpaper_ui):
1864    if loadpaper_ui():
1865        dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_PRINT_QUALITY_DIAGNOSTIC)
1866        dev.closePML()
1867