summaryrefslogtreecommitdiff
path: root/backend/hp-scl.h
diff options
context:
space:
mode:
Diffstat (limited to 'backend/hp-scl.h')
-rw-r--r--backend/hp-scl.h166
1 files changed, 166 insertions, 0 deletions
diff --git a/backend/hp-scl.h b/backend/hp-scl.h
new file mode 100644
index 0000000..7954492
--- /dev/null
+++ b/backend/hp-scl.h
@@ -0,0 +1,166 @@
+/* sane - Scanner Access Now Easy.
+ Copyright (C) 1997 Geoffrey T. Dairiki
+ This file is part of the SANE package.
+
+ 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.
+
+ As a special exception, the authors of SANE give permission for
+ additional uses of the libraries contained in this release of SANE.
+
+ The exception is that, if you link a SANE library with other files
+ to produce an executable, this does not by itself cause the
+ resulting executable to be covered by the GNU General Public
+ License. Your use of that executable is in no way restricted on
+ account of linking the SANE library code into it.
+
+ This exception does not, however, invalidate any other reasons why
+ the executable file might be covered by the GNU General Public
+ License.
+
+ If you submit changes to SANE to the maintainers to be included in
+ a subsequent release, you agree by submitting the changes that
+ those changes may be distributed with this exception intact.
+
+ If you write modifications of your own for SANE, it is your choice
+ whether to permit this exception to apply to your modifications.
+ If you do not wish that, delete this exception notice.
+
+ This file is part of a SANE backend for HP Scanners supporting
+ HP Scanner Control Language (SCL).
+*/
+
+#ifndef HP_SCL_INCLUDED
+#define HP_SCL_INCLUDED
+
+#define HP_SCL_PACK(id, group, char) \
+ ((SANE_Word)(id) << 16 | ((group) & 0xFF) << 8 | ((char) & 0xFF))
+#define SCL_INQ_ID(code) ((code) >> 16)
+#define SCL_GROUP_CHAR(code) ((char)(((code) >> 8) & 0xFF))
+#define SCL_PARAM_CHAR(code) ((char)((code) & 0xFF))
+
+#define HP_SCL_CONTROL(id,g,c) HP_SCL_PACK(id,g,c)
+#define HP_SCL_COMMAND(g,c) HP_SCL_PACK(0,g,c)
+#define HP_SCL_PARAMETER(id) HP_SCL_PACK(id, 0, 0)
+#define HP_SCL_DATA_TYPE(id) HP_SCL_PACK(id, 1, 0)
+
+#define IS_SCL_CONTROL(scl) (SCL_INQ_ID(scl) && SCL_PARAM_CHAR(scl))
+#define IS_SCL_COMMAND(scl) (!SCL_INQ_ID(scl) && SCL_PARAM_CHAR(scl))
+#define IS_SCL_PARAMETER(scl) (SCL_INQ_ID(scl) && !SCL_PARAM_CHAR(scl))
+#define IS_SCL_DATA_TYPE(scl) (SCL_GROUP_CHAR(scl) == '\001')
+
+#define SCL_AUTO_BKGRND HP_SCL_CONTROL(10307, 'a', 'B')
+#define SCL_COMPRESSION HP_SCL_CONTROL(10308, 'a', 'C')
+#define SCL_DOWNLOAD_TYPE HP_SCL_CONTROL(10309, 'a', 'D')
+#define SCL_X_SCALE HP_SCL_CONTROL(10310, 'a', 'E')
+#define SCL_Y_SCALE HP_SCL_CONTROL(10311, 'a', 'F')
+#define SCL_DATA_WIDTH HP_SCL_CONTROL(10312, 'a', 'G')
+#define SCL_INVERSE_IMAGE HP_SCL_CONTROL(10314, 'a', 'I')
+#define SCL_BW_DITHER HP_SCL_CONTROL(10315, 'a', 'J')
+#define SCL_CONTRAST HP_SCL_CONTROL(10316, 'a', 'K')
+#define SCL_BRIGHTNESS HP_SCL_CONTROL(10317, 'a', 'L')
+#define SCL_MIRROR_IMAGE HP_SCL_CONTROL(10318, 'a', 'M')
+#define SCL_SHARPENING HP_SCL_CONTROL(10319, 'a', 'N')
+#define SCL_RESERVED1 HP_SCL_CONTROL(10320, 'a', 'O')
+#define SCL_X_RESOLUTION HP_SCL_CONTROL(10323, 'a', 'R')
+#define SCL_Y_RESOLUTION HP_SCL_CONTROL(10324, 'a', 'S')
+#define SCL_OUTPUT_DATA_TYPE HP_SCL_CONTROL(10325, 'a', 'T')
+#define SCL_DOWNLOAD_LENGTH HP_SCL_CONTROL(10328, 'a', 'W')
+#define SCL_PRELOAD_ADF HP_SCL_CONTROL(10468, 'f', 'C')
+#define SCL_MEDIA HP_SCL_CONTROL(10469, 'f', 'D')
+#define SCL_10470 HP_SCL_CONTROL(10470, 'f', 'E')
+#define SCL_LAMPTEST HP_SCL_CONTROL(10477, 'f', 'L')
+#define SCL_X_EXTENT HP_SCL_CONTROL(10481, 'f', 'P')
+#define SCL_Y_EXTENT HP_SCL_CONTROL(10482, 'f', 'Q')
+#define SCL_START_SCAN HP_SCL_COMMAND('f', 'S')
+#define SCL_10485 HP_SCL_CONTROL(10485, 'f', 'T')
+#define SCL_10488 HP_SCL_CONTROL(10488, 'f', 'W')
+#define SCL_X_POS HP_SCL_CONTROL(10489, 'f', 'X')
+#define SCL_Y_POS HP_SCL_CONTROL(10490, 'f', 'Y')
+#define SCL_XPA_SCAN HP_SCL_COMMAND('u', 'D')
+#define SCL_SPEED HP_SCL_CONTROL(10950, 'u', 'E')
+#define SCL_FILTER HP_SCL_CONTROL(10951, 'u', 'F')
+#define SCL_10952 HP_SCL_CONTROL(10952, 'u', 'G')
+#define SCL_XPA_DISABLE HP_SCL_CONTROL(10953, 'u', 'H')
+#define SCL_TONE_MAP HP_SCL_CONTROL(10956, 'u', 'K')
+#define SCL_CALIBRATE HP_SCL_COMMAND('u', 'R')
+#define SCL_ADF_SCAN HP_SCL_COMMAND('u', 'S')
+#define SCL_MATRIX HP_SCL_CONTROL(10965, 'u', 'T')
+#define SCL_UNLOAD HP_SCL_CONTROL(10966, 'u', 'U')
+#define SCL_10967 HP_SCL_CONTROL(10967, 'u', 'V')
+#define SCL_CHANGE_DOC HP_SCL_CONTROL(10969, 'u', 'X')
+#define SCL_ADF_BFEED HP_SCL_CONTROL(10970, 'u', 'Y')
+/* Clear Errors does not follow command syntax Esc*o0E, it is only Esc*oE */
+/* #define SCL_CLEAR_ERRORS HP_SCL_COMMAND('o', 'E') */
+
+#define SCL_INQUIRE_PRESENT_VALUE HP_SCL_COMMAND('s', 'R')
+#define SCL_INQUIRE_MINIMUM_VALUE HP_SCL_COMMAND('s', 'L')
+#define SCL_INQUIRE_MAXIMUM_VALUE HP_SCL_COMMAND('s', 'H')
+#define SCL_INQUIRE_DEVICE_PARAMETER HP_SCL_COMMAND('s', 'E')
+#define SCL_UPLOAD_BINARY_DATA HP_SCL_COMMAND('s', 'U')
+
+#define SCL_HP_MODEL_1 HP_SCL_PARAMETER(3)
+#define SCL_HP_MODEL_2 HP_SCL_PARAMETER(10)
+#define SCL_HP_MODEL_3 HP_SCL_PARAMETER(9)
+#define SCL_HP_MODEL_4 HP_SCL_PARAMETER(11)
+#define SCL_HP_MODEL_5 HP_SCL_PARAMETER(12)
+#define SCL_HP_MODEL_6 HP_SCL_PARAMETER(14)
+#define SCL_HP_MODEL_8 HP_SCL_PARAMETER(15)
+#define SCL_HP_MODEL_9 HP_SCL_PARAMETER(16)
+#define SCL_HP_MODEL_10 HP_SCL_PARAMETER(17)
+#define SCL_HP_MODEL_11 HP_SCL_PARAMETER(18)
+#define SCL_HP_MODEL_12 HP_SCL_PARAMETER(19)
+#define SCL_HP_MODEL_14 HP_SCL_PARAMETER(21)
+#define SCL_HP_MODEL_16 HP_SCL_PARAMETER(31)
+#define SCL_HP_MODEL_17 HP_SCL_PARAMETER(32)
+
+#define SCL_ADF_CAPABILITY HP_SCL_PARAMETER(24)
+#define SCL_ADF_BIN HP_SCL_PARAMETER(25)
+#define SCL_ADF_RDY_UNLOAD HP_SCL_PARAMETER(27)
+
+#define SCL_CURRENT_ERROR_STACK HP_SCL_PARAMETER(257)
+#define SCL_CURRENT_ERROR HP_SCL_PARAMETER(259)
+#define SCL_OLDEST_ERROR HP_SCL_PARAMETER(261)
+#define SCL_PIXELS_PER_LINE HP_SCL_PARAMETER(1024)
+#define SCL_BYTES_PER_LINE HP_SCL_PARAMETER(1025)
+#define SCL_NUMBER_OF_LINES HP_SCL_PARAMETER(1026)
+#define SCL_ADF_READY HP_SCL_PARAMETER(1027)
+
+#define SCL_DEVPIX_RESOLUTION HP_SCL_PARAMETER(1028)
+
+#define SCL_AUTO_SPEED HP_SCL_PARAMETER(1040)
+
+#define SCL_FRONT_BUTTON HP_SCL_PARAMETER(1044)
+
+#define SCL_PRELOADED HP_SCL_PARAMETER(1045)
+
+/* The following is not documented */
+#define SCL_SECONDARY_SCANDIR HP_SCL_PARAMETER(1047)
+
+#define SCL_BW8x8DITHER HP_SCL_DATA_TYPE(0)
+#define SCL_8x8TONE_MAP HP_SCL_DATA_TYPE(1)
+#define SCL_8x9MATRIX_COEFF HP_SCL_DATA_TYPE(2)
+#define SCL_8x8DITHER HP_SCL_DATA_TYPE(3)
+#define SCL_CAL_STRIP HP_SCL_DATA_TYPE(4)
+#define SCL_BW16x16DITHER HP_SCL_DATA_TYPE(5)
+#define SCL_10x8TONE_MAP HP_SCL_DATA_TYPE(6)
+#define SCL_10x3MATRIX_COEFF HP_SCL_DATA_TYPE(8)
+#define SCL_10x9MATRIX_COEFF HP_SCL_DATA_TYPE(9)
+#define SCL_7x12TONE_MAP HP_SCL_DATA_TYPE(10)
+#define SCL_BW7x12TONE_MAP HP_SCL_DATA_TYPE(11)
+#define SCL_RGB_GAINS HP_SCL_DATA_TYPE(11)
+#define SCL_CALIB_MAP HP_SCL_DATA_TYPE(14)
+
+#endif /* HP_SCL_INCLUDED */