home *** CD-ROM | disk | FTP | other *** search
- # -*- coding: utf-8 -*-
- #
- # (c) Copyright 2003-2007 Hewlett-Packard 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
- #
-
-
- # Std Lib
- import struct
- import sys
-
-
- PACKET_FRAME = ord('$')
- PACKET_PAD = 0xff
- CMD_HEADER_FMT = ">BHBBBHH" # 10 bytes
-
- # Packet types
- PACKET_TYPE_COMMAND = 0
- PACKET_TYPE_DISABLE_PACING = 1
- PACKET_TYPE_ENABLE_PACING = 2
- PACKET_TYPE_RESUME_NORMAL_OPERATION = 3
- PACKET_TYPE_DISABLE_RESPONSES = 4
- PACKET_TYPE_ENABLE_RESPONSES = 5
- PACKET_TYPE_RESET_LIDIL = 6
- PACKET_TYPE_SYNC = 7
- PACKET_TYPE_SYNC_COMPLETE = 8
-
- # Commands
-
- # Handle Pen
- COMMAND_HANDLE_PEN = 8
- COMMAND_HANDLE_PEN_ENTER_PEN_CHANGE = 0
- COMMAND_HANDLE_PEN_COMPLETE_PEN_CHANGE = 1
- COMMAND_HANDLE_PEN_CLEAN_LEVEL1 = 2
- COMMAND_HANDLE_PEN_CLEAN_LEVEL2 = 3
- COMMAND_HANDLE_PEN_CLEAN_LEVEL3 = 4
-
- # Set ZCA
- COMMAND_ZCA = 12
- COMMAND_ZCA_OPERATION = 11
-
- # 0.3.8 Set Printer Alignment
- COMMAND_SET_PRINTER_ALIGNMENT = 12
- COMMAND_SET_PRINTER_ALIGNMENT_OPERATION = 6
-
- # 0.4.3 Set Pen Alignment
- COMMAND_SET_PEN_ALIGNMENT = 12
- COMMAND_SET_PEN_ALIGNMENT_OPERATION = 18
- COMMAND_SET_PEN_ALIGNMENT_PEN_BLACK = 0
- COMMAND_SET_PEN_ALIGNMENT_PEN_COLOR = 1
- COMMAND_SET_PEN_ALIGNMENT_PEN_PHOTO = 2
- COMMAND_SET_PEN_ALIGNMENT_ITEM_HORT = 0
- COMMAND_SET_PEN_ALIGNMENT_ITEM_VERT = 1
- COMMAND_SET_PEN_ALIGNMENT_ITEM_BIDI = 2
-
- # Set Pens Aligned
- COMMAND_SET_PENS_ALIGNED = 12
- COMMAND_SET_PENS_ALIGNED_OPERATION = 14
- COMMAND_SET_PENS_ALIGNED_K = 0x01
- COMMAND_SET_PENS_ALIGNED_C = 0x02
- COMMAND_SET_PENS_ALIGNED_M = 0x04
- COMMAND_SET_PENS_ALIGNED_Y = 0x08
- COMMAND_SET_PENS_ALIGNED_c = 0x10
- COMMAND_SET_PENS_ALIGNED_m = 0x20
- COMMAND_SET_PENS_ALIGNED_k = 0x40
-
- # Set Hue Compensation
- COMMAND_SET_HUE_COMPENSATION = 12
- COMMAND_SET_HUE_COMPENSATION_OPERATION = 16
- COMMAND_SET_HUE_COMPENSATION_PEN_COLOR = 0
- COMMAND_SET_HUE_COMPENSATION_PEN_PHOTO = 1
-
- # Print internal page 0.3.8 and 0.4.3
- COMMAND_PRINT_INTERNAL_PAGE = 12
- COMMAND_PRINT_INTERNAL_PAGE_OPERATION = 17
-
- # 0.5.4 Report Page
- COMMAND_REPORT_PAGE = 12
- COMMAND_REPORT_PAGE_OPERATION = 21
- COMMAND_REPORT_PAGE_PEN_CALIBRATION = 81
- COMMAND_REPORT_PAGE_PEN_CALIBRATION_VERIFY = 82
-
- # 0.5.4 Set Pen Alignment 3
- COMMAND_SET_PEN_ALIGNMENT_3 = 12
- COMMAND_SET_PEN_ALIGNMENT_3_OPERATION = 23
- COMMAND_SET_PEN_ALIGNMENT_3_K = 0x01
- COMMAND_SET_PEN_ALIGNMENT_3_C = 0x02
- COMMAND_SET_PEN_ALIGNMENT_3_M = 0x04
- COMMAND_SET_PEN_ALIGNMENT_3_Y = 0x08
- COMMAND_SET_PEN_ALIGNMENT_3_COLOR = 0x0e
- COMMAND_SET_PEN_ALIGNMENT_3_c = 0x10
- COMMAND_SET_PEN_ALIGNMENT_3_m = 0x20
- COMMAND_SET_PEN_ALIGNMENT_3_k = 0x40
- COMMAND_SET_PEN_ALIGNMENT_3_PHOTO = 0x70
-
- # Printer queries
- COMMAND_QUERY = 5
- QUERY_PRINTER_ALIGNMENT = 3 # 0.3.8
- QUERY_PEN_ALIGNMENT = 15 # 0.4.3
-
- # 0.5.4 Dynamic counters
- COMMAND_DYNAMIC_COUNTERS = 12
- COMMAND_DYNAMIC_COUNTERS_OPERATION = 5
-
-
- def buildLIDILPacket(packet_type, command=0, operation=0, other={}):
- p = ''
-
- if packet_type == PACKET_TYPE_DISABLE_PACING:
- p = '$\x00\x10\x00\x01\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff$'
-
- elif packet_type == PACKET_TYPE_ENABLE_PACING:
- p = '$\x00\x10\x00\x02\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff$'
-
- elif packet_type == PACKET_TYPE_RESUME_NORMAL_OPERATION:
- p = '$\x00\x10\x00\x03\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff$'
-
- elif packet_type == PACKET_TYPE_ENABLE_RESPONSES:
- p = '$\x00\x10\x00\x05\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff$'
-
- elif packet_type == PACKET_TYPE_DISABLE_RESPONSES:
- p = '$\x00\x10\x00\x04\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff$'
-
- elif packet_type == PACKET_TYPE_SYNC:
- fmt = ''.join([CMD_HEADER_FMT, 'B'*245, 'B', 'B'*2048])
- p = struct.pack(fmt, PACKET_FRAME, 256, 0, PACKET_TYPE_SYNC, 0, 0, 2048, (0,)*245,
- PACKET_FRAME, (0,)*2048)
-
- elif packet_type == PACKET_TYPE_SYNC_COMPLETE:
- p = '$\x00\x10\x00\x08\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff$'
-
- elif packet_type == PACKET_TYPE_RESET_LIDIL:
- p = '$\x00\x10\x00\x06\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff$'
-
- elif packet_type == PACKET_TYPE_COMMAND:
-
- if command == COMMAND_HANDLE_PEN:
- fmt = CMD_HEADER_FMT + "BBBBBB"
- p = struct.pack(fmt, PACKET_FRAME, struct.calcsize(fmt), 0, PACKET_TYPE_COMMAND, command,
- 0, 0, operation, PACKET_PAD, PACKET_PAD, PACKET_PAD, PACKET_PAD, PACKET_FRAME)
-
- elif command == COMMAND_SET_PRINTER_ALIGNMENT and operation == COMMAND_SET_PRINTER_ALIGNMENT_OPERATION: # 0.3.8
- fmt = CMD_HEADER_FMT + "BHBBBBBBBBBBBBB"
- b = (0, 0, other['k_bidi'], other['c_vert'], other['c_hort'], other['c_bidi'],
- other['c_vert'], other['c_hort'], other['c_bidi'], other['c_vert'],
- other['c_hort'], other['c_bidi'], PACKET_FRAME)
-
- p = struct.pack(fmt, PACKET_FRAME, struct.calcsize(fmt), 0, PACKET_TYPE_COMMAND, command,
- 0, 0, operation, 0x0f, *b)
-
- elif command == COMMAND_SET_PEN_ALIGNMENT and operation == COMMAND_SET_PEN_ALIGNMENT_OPERATION: # 0.4.3
- fmt = CMD_HEADER_FMT + "BBBbBB"
- p = struct.pack(fmt, PACKET_FRAME, struct.calcsize(fmt), 0, PACKET_TYPE_COMMAND, command,
- 0, 0, operation, other['pen'], other['item'], other['value'],
- PACKET_PAD, PACKET_FRAME)
-
- elif command == COMMAND_REPORT_PAGE and operation == COMMAND_REPORT_PAGE_OPERATION: # 0.5.4
- fmt = CMD_HEADER_FMT + "BHBBB"
- p = struct.pack(fmt, PACKET_FRAME, struct.calcsize(fmt), 0, PACKET_TYPE_COMMAND, command,
- 0, 0, operation, other['report'], PACKET_PAD, PACKET_PAD, PACKET_FRAME)
-
- elif command == COMMAND_ZCA and operation == COMMAND_ZCA_OPERATION:
- fmt = CMD_HEADER_FMT + "BBhBB"
- p = struct.pack(fmt, PACKET_FRAME, struct.calcsize(fmt), 0, PACKET_TYPE_COMMAND, command,
- 0, 0, operation, 0, other['zca'], PACKET_PAD, PACKET_FRAME)
-
- elif command == COMMAND_SET_PENS_ALIGNED and operation == COMMAND_SET_PENS_ALIGNED_OPERATION:
- fmt = CMD_HEADER_FMT + "BHBBB"
- p = struct.pack(fmt, PACKET_FRAME, struct.calcsize(fmt), 0, PACKET_TYPE_COMMAND, command,
- 0, 0, operation, other['colors'], PACKET_PAD, PACKET_PAD, PACKET_FRAME)
-
- elif command == COMMAND_SET_HUE_COMPENSATION and operation == COMMAND_SET_HUE_COMPENSATION_OPERATION:
- fmt = CMD_HEADER_FMT + "BBbBBB"
- p = struct.pack(fmt, PACKET_FRAME, struct.calcsize(fmt), 0, PACKET_TYPE_COMMAND, command,
- 0, 0, operation, other['which'], other['value'], PACKET_PAD,
- PACKET_PAD, PACKET_FRAME)
-
- elif command == COMMAND_QUERY:
- fmt = CMD_HEADER_FMT + "BBHBB"
- p = struct.pack(fmt, PACKET_FRAME, struct.calcsize(fmt), 0, PACKET_TYPE_COMMAND, COMMAND_QUERY,
- 0, 0, 0, operation, 0, PACKET_PAD, PACKET_FRAME)
-
- elif command == COMMAND_PRINT_INTERNAL_PAGE and operation == COMMAND_PRINT_INTERNAL_PAGE_OPERATION:
- fmt = CMD_HEADER_FMT + "BBBBBB"
- p = struct.pack(fmt, PACKET_FRAME, struct.calcsize(fmt), 0, PACKET_TYPE_COMMAND, command,
- 0, 0, operation, PACKET_PAD, PACKET_PAD,
- PACKET_PAD, PACKET_PAD, PACKET_FRAME)
-
- elif command == COMMAND_SET_PEN_ALIGNMENT_3 and operation == COMMAND_SET_PEN_ALIGNMENT_3_OPERATION: # 0.5.4
- selections = other['selections']
- num_selections = len(selections)
- selections.append(PACKET_FRAME)
- fmt = CMD_HEADER_FMT + "BIB" + "B"*(num_selections+1)
-
- p = struct.pack(fmt, PACKET_FRAME, struct.calcsize(fmt), 0, PACKET_TYPE_COMMAND, command,
- 0, 0, operation, other['active_colors'],
- num_selections, *selections)
-
- elif command == COMMAND_DYNAMIC_COUNTERS and operation == COMMAND_DYNAMIC_COUNTERS_OPERATION: # 0.5.4
- fmt = CMD_HEADER_FMT + "BIB"
-
- p = struct.pack(fmt, PACKET_FRAME, struct.calcsize(fmt), 0, PACKET_TYPE_COMMAND, command,
- 0, 0, operation, other['counter'], PACKET_FRAME)
-
-
- assert len(p) >= 16
-
- return p
-
-
-
- def buildSyncPacket():
- return buildLIDILPacket(PACKET_TYPE_SYNC)
-
- def buildSyncCompletePacket():
- return buildLIDILPacket(PACKET_TYPE_SYNC_COMPLETE)
-
- def buildResetPacket():
- return buildLIDILPacket(PACKET_TYPE_RESET_LIDIL)
-
- def buildGetAlignmentValues038Packet():
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_QUERY, QUERY_PRINTER_ALIGNMENT)
-
- def buildGetAlignmentValues043Packet():
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_QUERY, QUERY_PEN_ALIGNMENT)
-
- def buildEnableResponsesPacket(enable=True):
- if enable:
- return buildLIDILPacket(PACKET_TYPE_ENABLE_RESPONSES)
- else:
- return buildLIDILPacket(PACKET_TYPE_DISABLE_RESPONSES)
-
- def buildSetPrinterAlignmentPacket(k_bidi,
- c_vert,
- c_hort,
- c_bidi): # 0.3.8
-
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_SET_PRINTER_ALIGNMENT,
- COMMAND_SET_PRINTER_ALIGNMENT_OPERATION,
- other={'c_vert' : c_vert,
- 'c_hort' : c_hort,
- 'c_bidi' : c_bidi,
- 'k_bidi' : k_bidi,
-
- })
-
- def buildPrintInternalPagePacket(): # Type 6
- return buildLIDILPacket(PACKET_TYPE_COMMAND,
- COMMAND_PRINT_INTERNAL_PAGE,
- COMMAND_PRINT_INTERNAL_PAGE_OPERATION)
-
-
- def buildZCAPacket(value):
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_ZCA,
- COMMAND_ZCA_OPERATION,
- other={'zca' : value})
-
- def buildBlackBidiPacket(value): # 0.4.3
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_SET_PEN_ALIGNMENT,
- COMMAND_SET_PEN_ALIGNMENT_OPERATION,
- other={'pen' : COMMAND_SET_PEN_ALIGNMENT_PEN_BLACK,
- 'item' : COMMAND_SET_PEN_ALIGNMENT_ITEM_BIDI,
- 'value' : value})
-
- def buildPhotoBidiPacket(value): # 0.4.3
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_SET_PEN_ALIGNMENT,
- COMMAND_SET_PEN_ALIGNMENT_OPERATION,
- other={'pen' : COMMAND_SET_PEN_ALIGNMENT_PEN_PHOTO,
- 'item' : COMMAND_SET_PEN_ALIGNMENT_ITEM_BIDI,
- 'value' : value})
-
- def buildColorBidiPacket(value): # 0.4.3
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_SET_PEN_ALIGNMENT,
- COMMAND_SET_PEN_ALIGNMENT_OPERATION,
- other={'pen' : COMMAND_SET_PEN_ALIGNMENT_PEN_COLOR,
- 'item' : COMMAND_SET_PEN_ALIGNMENT_ITEM_BIDI,
- 'value' : value})
-
-
- def buildColorHortPacket(value): # 0.4.3
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_SET_PEN_ALIGNMENT,
- COMMAND_SET_PEN_ALIGNMENT_OPERATION,
- other={'pen' : COMMAND_SET_PEN_ALIGNMENT_PEN_COLOR,
- 'item' : COMMAND_SET_PEN_ALIGNMENT_ITEM_HORT,
- 'value' : value})
-
- def buildColorVertPacket(value): # 0.4.3
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_SET_PEN_ALIGNMENT,
- COMMAND_SET_PEN_ALIGNMENT_OPERATION,
- other={'pen' : COMMAND_SET_PEN_ALIGNMENT_PEN_COLOR,
- 'item' : COMMAND_SET_PEN_ALIGNMENT_ITEM_VERT,
- 'value' : value})
-
- def buildBlackVertPacket(value): # 0.4.3
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_SET_PEN_ALIGNMENT,
- COMMAND_SET_PEN_ALIGNMENT_OPERATION,
- other={'pen' : COMMAND_SET_PEN_ALIGNMENT_PEN_BLACK,
- 'item' : COMMAND_SET_PEN_ALIGNMENT_ITEM_VERT,
- 'value' : value})
- def buildBlackHortPacket(value): # 0.4.3
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_SET_PEN_ALIGNMENT,
- COMMAND_SET_PEN_ALIGNMENT_OPERATION,
- other={'pen' : COMMAND_SET_PEN_ALIGNMENT_PEN_BLACK,
- 'item' : COMMAND_SET_PEN_ALIGNMENT_ITEM_HORT,
- 'value' : value})
-
- def buildPhotoHortPacket(value): # 0.4.3
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_SET_PEN_ALIGNMENT,
- COMMAND_SET_PEN_ALIGNMENT_OPERATION,
- other={'pen' : COMMAND_SET_PEN_ALIGNMENT_PEN_PHOTO,
- 'item' : COMMAND_SET_PEN_ALIGNMENT_ITEM_HORT,
- 'value' : value})
- def buildPhotoVertPacket(value): # 0.4.3
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_SET_PEN_ALIGNMENT,
- COMMAND_SET_PEN_ALIGNMENT_OPERATION,
- other={'pen' : COMMAND_SET_PEN_ALIGNMENT_PEN_PHOTO,
- 'item' : COMMAND_SET_PEN_ALIGNMENT_ITEM_VERT,
- 'value' : value})
-
- def buildPhotoHuePacket(value): # 0.4.3
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_SET_HUE_COMPENSATION,
- COMMAND_SET_HUE_COMPENSATION_OPERATION,
- other={'which' : COMMAND_SET_HUE_COMPENSATION_PEN_PHOTO,
- 'value' : value})
-
-
- def buildColorHuePacket(value): # 0.4.3
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_SET_HUE_COMPENSATION,
- COMMAND_SET_HUE_COMPENSATION_OPERATION,
- other={'which' : COMMAND_SET_HUE_COMPENSATION_PEN_COLOR,
- 'value' : value})
-
- def buildSetPensAlignedPacket():
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_SET_PENS_ALIGNED,
- COMMAND_SET_PENS_ALIGNED_OPERATION,
- other={'colors' : COMMAND_SET_PENS_ALIGNED_C |
- COMMAND_SET_PENS_ALIGNED_M |
- COMMAND_SET_PENS_ALIGNED_Y |
- COMMAND_SET_PENS_ALIGNED_c |
- COMMAND_SET_PENS_ALIGNED_m |
- COMMAND_SET_PENS_ALIGNED_k |
- COMMAND_SET_PENS_ALIGNED_K})
-
- def buildReportPagePacket(report): # 0.5.4
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_REPORT_PAGE,
- COMMAND_REPORT_PAGE_OPERATION,
- other={'report': report})
-
- def buildSetPenAlignment3Packet(active_colors, selections): # 0.5.4
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_SET_PEN_ALIGNMENT_3,
- COMMAND_SET_PEN_ALIGNMENT_3_OPERATION,
- other={'active_colors': active_colors,
- 'selections': selections,})
-
- def buildDynamicCountersPacket(counter): # 0.5.4
- return buildLIDILPacket(PACKET_TYPE_COMMAND, COMMAND_DYNAMIC_COUNTERS,
- COMMAND_DYNAMIC_COUNTERS_OPERATION,
- other={'counter': counter,})
-
- if __name__ == "__main__":
-
- pass
-
-
-