1 /*****************************************************************************\ 2 3 hpiom.h - HP I/O message handler 4 5 (c) 2003-2004 Copyright HP Development Company, LP 6 7 Redistribution and use in source and binary forms, with or without 8 modification, are permitted provided that the following conditions 9 are met: 10 1. Redistributions of source code must retain the above copyright 11 notice, this list of conditions and the following disclaimer. 12 2. Redistributions in binary form must reproduce the above copyright 13 notice, this list of conditions and the following disclaimer in the 14 documentation and/or other materials provided with the distribution. 15 3. Neither the name of HP nor the names of its 16 contributors may be used to endorse or promote products derived 17 from this software without specific prior written permission. 18 19 THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED 20 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 22 NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 24 TO, PATENT INFRINGEMENT; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 25 OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 26 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 30 \*****************************************************************************/ 31 32 #ifndef hpiom_INCLUDED 33 #define hpiom_INCLUDED 34 35 /* 36 * LIDIL Definitions. 37 */ 38 39 enum ePACKETTYPE{ eCommand 40 , eDisablePacing 41 , eEnablePacing 42 , eResumeNormalOperation 43 , eDiableResponses 44 , eEnableResponses 45 , eResetLidil 46 , eSynch 47 , eSynchComplete 48 , eResponseCommandExecuted = 16 49 , eResponseCommandDiscarded 50 , eResponseCommandNotSupported 51 , eResponseUnitNumberNotSupported 52 , eResponseCommandLengthNotSupported 53 , eResponseDataLengthNotSupported 54 , eResponseCommandError 55 , eResponseProtocalError 56 , eResponseAuto 57 , eOperationComplete 58 , eAbsoluteCredit = 32 59 , eCredit 60 , ePacketUnknown 61 }; 62 63 enum eCOMMANDNUMBER{ eJobControl 64 , eLoadPage 65 , eEjectPage 66 , ePrintSweep 67 , eLoadSweepData 68 , eQuery 69 , eComment = 7 70 , eHandlePen 71 , eUnderware = 11 72 , eDeviceControlCommand 73 , eCommandUnknown 74 }; 75 76 typedef struct 77 { 78 unsigned char start_frame; 79 unsigned short cmd_length; 80 unsigned char unit_num; 81 unsigned char packet_type; 82 unsigned char cmd_num; 83 unsigned short ref_num; 84 unsigned short data_length; 85 unsigned char response_cmp; 86 unsigned char pad[4]; 87 unsigned char end_frame; 88 } __attribute__((packed)) LDLResponseHeader; 89 90 typedef struct 91 { 92 LDLResponseHeader h; 93 unsigned short colors; 94 char k[3]; /* 0=vertical 1=horizontal 2=bi */ 95 char c[3]; /* c=m=y */ 96 char m[3]; 97 char y[3]; 98 } __attribute__((packed)) LDLResponseAlign038; 99 100 typedef struct 101 { 102 char color; /* 0=black 1=color 2=photo */ 103 char vert; /* vertical alignment offset */ 104 char horz; /* horizontal alignment offset */ 105 char bi; /* bi-directional offset */ 106 } __attribute__((packed)) LDLPen; 107 108 typedef struct 109 { 110 unsigned char nPens; /* number of pens */ 111 LDLPen pen[3]; 112 } __attribute__((packed)) LDLGenAlign; 113 114 typedef struct 115 { 116 LDLResponseHeader h; 117 LDLGenAlign g; 118 } __attribute__((packed)) LDLResponseAlign043; 119 120 typedef struct 121 { 122 LDLResponseHeader h; 123 uint32_t ldlversion; 124 char firmversion[8]; 125 } __attribute__((packed)) LDLResponseVersion; 126 127 #ifdef __cplusplus 128 extern "C" { 129 #endif 130 131 extern int ReadHPVertAlign(int hd); 132 133 #ifdef __cplusplus 134 } 135 #endif 136 137 #endif /* hpiom_INCLUDED */ 138 139 140