SnapScan backend 1.4.12: Fix option handling

DEVEL_2_0_BRANCH-1
Oliver Schwartz 2002-04-27 15:35:19 +00:00
rodzic d094d55867
commit 964bc60e60
5 zmienionych plików z 108 dodań i 249 usunięć

Wyświetl plik

@ -221,7 +221,7 @@ static void init_options (SnapScan_Scanner * ps)
po[OPT_MODE].type = SANE_TYPE_STRING;
po[OPT_MODE].unit = SANE_UNIT_NONE;
po[OPT_MODE].size = 32;
po[OPT_MODE].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
po[OPT_MODE].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_AUTOMATIC;
po[OPT_MODE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
switch (ps->pdev->model)
{
@ -244,7 +244,10 @@ static void init_options (SnapScan_Scanner * ps)
po[OPT_PREVIEW_MODE].type = SANE_TYPE_STRING;
po[OPT_PREVIEW_MODE].unit = SANE_UNIT_NONE;
po[OPT_PREVIEW_MODE].size = 32;
po[OPT_PREVIEW_MODE].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED;
po[OPT_PREVIEW_MODE].cap = SANE_CAP_SOFT_SELECT
| SANE_CAP_SOFT_DETECT
| SANE_CAP_ADVANCED
| SANE_CAP_AUTOMATIC;
po[OPT_PREVIEW_MODE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
switch (ps->pdev->model)
{
@ -264,7 +267,10 @@ static void init_options (SnapScan_Scanner * ps)
po[OPT_SOURCE].title = SANE_TITLE_SCAN_SOURCE;
po[OPT_SOURCE].desc = SANE_DESC_SCAN_SOURCE;
po[OPT_SOURCE].type = SANE_TYPE_STRING;
po[OPT_SOURCE].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_INACTIVE;
po[OPT_SOURCE].cap = SANE_CAP_SOFT_SELECT
| SANE_CAP_SOFT_DETECT
| SANE_CAP_INACTIVE
| SANE_CAP_AUTOMATIC;
po[OPT_SOURCE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
{
static SANE_String_Const source_list[3];
@ -295,7 +301,7 @@ static void init_options (SnapScan_Scanner * ps)
po[OPT_TLX].type = SANE_TYPE_FIXED;
po[OPT_TLX].unit = SANE_UNIT_MM;
po[OPT_TLX].size = sizeof (SANE_Word);
po[OPT_TLX].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
po[OPT_TLX].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_AUTOMATIC;
po[OPT_TLX].constraint_type = SANE_CONSTRAINT_RANGE;
po[OPT_TLX].constraint.range = &(ps->pdev->x_range);
ps->tlx = ps->pdev->x_range.min;
@ -306,7 +312,7 @@ static void init_options (SnapScan_Scanner * ps)
po[OPT_TLY].type = SANE_TYPE_FIXED;
po[OPT_TLY].unit = SANE_UNIT_MM;
po[OPT_TLY].size = sizeof (SANE_Word);
po[OPT_TLY].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
po[OPT_TLY].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_AUTOMATIC;
po[OPT_TLY].constraint_type = SANE_CONSTRAINT_RANGE;
po[OPT_TLY].constraint.range = &(ps->pdev->y_range);
ps->tly = ps->pdev->y_range.min;
@ -317,7 +323,7 @@ static void init_options (SnapScan_Scanner * ps)
po[OPT_BRX].type = SANE_TYPE_FIXED;
po[OPT_BRX].unit = SANE_UNIT_MM;
po[OPT_BRX].size = sizeof (SANE_Word);
po[OPT_BRX].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
po[OPT_BRX].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_AUTOMATIC;
po[OPT_BRX].constraint_type = SANE_CONSTRAINT_RANGE;
po[OPT_BRX].constraint.range = &(ps->pdev->x_range);
ps->brx = ps->pdev->x_range.max;
@ -328,7 +334,7 @@ static void init_options (SnapScan_Scanner * ps)
po[OPT_BRY].type = SANE_TYPE_FIXED;
po[OPT_BRY].unit = SANE_UNIT_MM;
po[OPT_BRY].size = sizeof (SANE_Word);
po[OPT_BRY].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
po[OPT_BRY].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_AUTOMATIC;
po[OPT_BRY].constraint_type = SANE_CONSTRAINT_RANGE;
po[OPT_BRY].constraint.range = &(ps->pdev->y_range);
ps->bry = ps->pdev->y_range.max;
@ -555,7 +561,7 @@ static void init_options (SnapScan_Scanner * ps)
po[OPT_NEGATIVE].unit = SANE_UNIT_NONE;
po[OPT_NEGATIVE].size = sizeof (SANE_Bool);
po[OPT_NEGATIVE].cap =
SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_INACTIVE;
SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_INACTIVE | SANE_CAP_AUTOMATIC;
po[OPT_NEGATIVE].constraint_type = SANE_CONSTRAINT_NONE;
ps->negative = DEFAULT_NEGATIVE;
@ -584,7 +590,7 @@ static void init_options (SnapScan_Scanner * ps)
po[OPT_RGB_LPR].unit = SANE_UNIT_NONE;
po[OPT_RGB_LPR].size = sizeof (SANE_Word);
po[OPT_RGB_LPR].cap =
SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED | SANE_CAP_AUTOMATIC;
po[OPT_RGB_LPR].constraint_type = SANE_CONSTRAINT_RANGE;
po[OPT_RGB_LPR].constraint.range = &lpr_range;
ps->rgb_lpr = def_rgb_lpr;
@ -598,50 +604,11 @@ static void init_options (SnapScan_Scanner * ps)
po[OPT_GS_LPR].cap = SANE_CAP_SOFT_SELECT
| SANE_CAP_SOFT_DETECT
| SANE_CAP_ADVANCED
| SANE_CAP_INACTIVE;
| SANE_CAP_INACTIVE
| SANE_CAP_AUTOMATIC;
po[OPT_GS_LPR].constraint_type = SANE_CONSTRAINT_RANGE;
po[OPT_GS_LPR].constraint.range = &lpr_range;
ps->gs_lpr = def_gs_lpr;
po[OPT_SCSI_CMDS].title = SANE_I18N("SCSI commands (for debugging)");
po[OPT_SCSI_CMDS].desc = "";
po[OPT_SCSI_CMDS].type = SANE_TYPE_GROUP;
po[OPT_SCSI_CMDS].cap = SANE_CAP_ADVANCED;
po[OPT_INQUIRY].name = "do-inquiry";
po[OPT_INQUIRY].title = SANE_I18N("Inquiry");
po[OPT_INQUIRY].desc = SANE_I18N(
"Send an Inquiry command to the scanner and dump out some of "
"the current settings.");
po[OPT_INQUIRY].type = SANE_TYPE_BUTTON;
po[OPT_INQUIRY].cap = SANE_CAP_ADVANCED | SANE_CAP_SOFT_SELECT;
po[OPT_INQUIRY].constraint_type = SANE_CONSTRAINT_NONE;
po[OPT_SELF_TEST].name = "do-self-test";
po[OPT_SELF_TEST].title = SANE_I18N("Self test");
po[OPT_SELF_TEST].desc = SANE_I18N(
"Send a Self Test command to the scanner and report the result.");
po[OPT_SELF_TEST].type = SANE_TYPE_BUTTON;
po[OPT_SELF_TEST].cap = SANE_CAP_ADVANCED | SANE_CAP_SOFT_SELECT;
po[OPT_SELF_TEST].constraint_type = SANE_CONSTRAINT_NONE;
po[OPT_REQ_SENSE].name = "do-req-sense";
po[OPT_REQ_SENSE].title = SANE_I18N("Request sense");
po[OPT_REQ_SENSE].desc = SANE_I18N(
"Send a Request Sense command to the scanner, and print out the sense "
"report.");
po[OPT_REQ_SENSE].type = SANE_TYPE_BUTTON;
po[OPT_REQ_SENSE].cap = SANE_CAP_ADVANCED | SANE_CAP_SOFT_SELECT;
po[OPT_REQ_SENSE].constraint_type = SANE_CONSTRAINT_NONE;
po[OPT_REL_UNIT].name = "do-rel-unit";
po[OPT_REL_UNIT].title = SANE_I18N("Release unit (cancel)");
po[OPT_REL_UNIT].desc = SANE_I18N(
"Send a Release Unit command to the scanner. This is the same as "
"a cancel command.");
po[OPT_REL_UNIT].type = SANE_TYPE_BUTTON;
po[OPT_REL_UNIT].cap = SANE_CAP_ADVANCED | SANE_CAP_SOFT_SELECT;
po[OPT_REL_UNIT].constraint_type = SANE_CONSTRAINT_NONE;
}
const SANE_Option_Descriptor *sane_get_option_descriptor (SANE_Handle h,
@ -748,11 +715,6 @@ SANE_Status sane_control_option (SANE_Handle h,
v,
(void *) i);
status = open_scanner (pss);
CHECK_STATUS (status, me, "open_scanner");
/* possible authorization required */
switch (a)
{
case SANE_ACTION_GET_VALUE:
@ -879,6 +841,14 @@ SANE_Status sane_control_option (SANE_Handle h,
(!SANE_OPTION_IS_ACTIVE(pss->options[n].cap))) {
return SANE_STATUS_INVAL;
}
/* prevent setting of options during a scan */
if (pss->state!=ST_IDLE) {
DBG(DL_INFO,
"set value for option %s ignored: scanner is still scanning\n",
pss->options[n].name
);
return SANE_STATUS_DEVICE_BUSY;
}
status = sanei_constrain_value(&pss->options[n], v, i);
if (status != SANE_STATUS_GOOD) {
return status;
@ -890,12 +860,12 @@ SANE_Status sane_control_option (SANE_Handle h,
case OPT_SCANRES:
pss->res = *(SANE_Int *) v;
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
*i |= SANE_INFO_RELOAD_PARAMS;
break;
case OPT_PREVIEW:
pss->preview = *(SANE_Bool *) v;
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
*i |= SANE_INFO_RELOAD_PARAMS;
break;
case OPT_MODE:
{
@ -986,7 +956,7 @@ SANE_Status sane_control_option (SANE_Handle h,
}
control_options (pss);
if (i)
*i = SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
*i |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
break;
case OPT_PREVIEW_MODE:
{
@ -1024,8 +994,6 @@ SANE_Status sane_control_option (SANE_Handle h,
me,
s);
}
if (i)
*i = 0;
break;
}
case OPT_SOURCE:
@ -1059,7 +1027,7 @@ SANE_Status sane_control_option (SANE_Handle h,
free (pss->source_s);
pss->source_s = (SANE_Char *) strdup(v);
if (i)
*i = SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
*i |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
break;
case OPT_TLX:
pss->tlx = *(SANE_Fixed *) v;
@ -1071,7 +1039,7 @@ SANE_Status sane_control_option (SANE_Handle h,
pss->brx = pss->tlx;
}
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
*i |= SANE_INFO_RELOAD_PARAMS;
break;
case OPT_TLY:
pss->tly = *(SANE_Fixed *) v;
@ -1083,7 +1051,7 @@ SANE_Status sane_control_option (SANE_Handle h,
pss->bry = pss->tly;
}
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
*i |= SANE_INFO_RELOAD_PARAMS;
break;
case OPT_BRX:
pss->brx = *(SANE_Fixed *) v;
@ -1095,7 +1063,7 @@ SANE_Status sane_control_option (SANE_Handle h,
pss->tlx = pss->brx;
}
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
*i |= SANE_INFO_RELOAD_PARAMS;
break;
case OPT_BRY:
pss->bry = *(SANE_Fixed *) v;
@ -1107,17 +1075,13 @@ SANE_Status sane_control_option (SANE_Handle h,
pss->tly = pss->bry;
}
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
*i |= SANE_INFO_RELOAD_PARAMS;
break;
case OPT_BRIGHTNESS:
pss->bright = *(SANE_Int *) v >> SANE_FIXED_SCALE_SHIFT;
if (i)
*i = 0;
break;
case OPT_CONTRAST:
pss->contrast = *(SANE_Int *) v >> SANE_FIXED_SCALE_SHIFT;
if (i)
*i = 0;
break;
case OPT_PREDEF_WINDOW:
{
@ -1161,32 +1125,22 @@ SANE_Status sane_control_option (SANE_Handle h,
}
}
if (i)
*i = SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
*i |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
break;
case OPT_GAMMA_GS:
pss->gamma_gs = *(SANE_Fixed *) v;
if (i)
*i = 0;
break;
case OPT_GAMMA_R:
pss->gamma_r = *(SANE_Fixed *) v;
if (i)
*i = 0;
break;
case OPT_GAMMA_G:
pss->gamma_g = *(SANE_Fixed *) v;
if (i)
*i = 0;
break;
case OPT_GAMMA_B:
pss->gamma_b = *(SANE_Fixed *) v;
if (i)
*i = 0;
break;
case OPT_QUALITY_CAL:
pss->val[n].b = *(SANE_Bool *)v;
if (i)
*i = 0;
break;
case OPT_CUSTOM_GAMMA:
@ -1208,8 +1162,6 @@ SANE_Status sane_control_option (SANE_Handle h,
case OPT_GAMMA_VECTOR_G:
case OPT_GAMMA_VECTOR_B:
memcpy(pss->val[n].wa, v, pss->options[n].size);
if (i)
*i = 0;
break;
case OPT_HALFTONE:
pss->halftone = *(SANE_Bool *) v;
@ -1257,93 +1209,18 @@ SANE_Status sane_control_option (SANE_Handle h,
s);
}
}
if (i)
*i = 0;
break;
case OPT_NEGATIVE:
pss->negative = *(SANE_Bool *) v;
if (i)
*i = 0;
break;
case OPT_THRESHOLD:
pss->threshold = *(SANE_Int *) v >> SANE_FIXED_SCALE_SHIFT;
if (i)
*i = 0;
break;
case OPT_INQUIRY:
status = inquiry (pss);
CHECK_STATUS (status, me, "inquiry");
DBG (0,
"\nInquiry results:\n"
"\tScanner: %s\n"
"\thardware config: 0x%x\n"
"\tA/D converter: %s\n"
"\tAuto-document feeder: %s\n"
"\tTransparency option: %s\n"
"\tRing buffer: %s\n"
"\t16x16 halftone matrix support: %s\n"
"\t8x8 halftone matrix support: %s\n"
"\tCalibration allowed: %s\n"
"\toptical resolution: %lu\n"
"\tscan resolution: %lu\n"
"\tnumber of lines: %lu\n"
"\tbytes per line: %lu\n"
"\tpixels per line: %lu\n"
"\tms per line: %f\n"
"\texposure time: %c.%c ms\n"
"\tred offset: %ld\n"
"\tgreen offset: %ld\n"
"\tblue offset: %ld\n"
"\tfirmware: %s\n\n",
pss->buf + INQUIRY_VENDOR,
pss->hconfig,
(pss->hconfig & HCFG_ADC) ? "10-bit" : "8-bit",
(pss->hconfig & HCFG_ADF) ? "Yes" : "No",
(pss->hconfig & HCFG_TPO) ? "Yes" : "No",
(pss->hconfig & HCFG_RB) ? "Yes" : "No",
(pss->hconfig & HCFG_HT16) ? "Yes" : "No",
(pss->hconfig & HCFG_HT8) ? "Yes" : "No",
(pss->hconfig & HCFG_CAL_ALLOWED) ? "Yes" : "No",
(u_long) pss->actual_res,
(u_long) pss->res,
(u_long) pss->lines,
(u_long) pss->bytes_per_line,
(u_long) pss->pixels_per_line,
(double) pss->ms_per_line,
pss->buf[INQUIRY_EXPTIME1] + '0',
pss->buf[INQUIRY_EXPTIME2] + '0',
(long) pss->chroma_offset[R_CHAN],
(long) pss->chroma_offset[G_CHAN],
(long) pss->chroma_offset[B_CHAN],
pss->buf + INQUIRY_FIRMWARE);
break;
case OPT_SELF_TEST:
status = send_diagnostic (pss);
if (status == SANE_STATUS_GOOD)
DBG (0, "Passes self-test.\n");
CHECK_STATUS (status, me, "self_test");
break;
case OPT_REQ_SENSE:
status = request_sense (pss);
CHECK_STATUS (status, me, "request_sense");
if (pss->sense_str)
DBG (0, "Scanner sense: %s\n", pss->sense_str);
if (pss->as_str)
DBG (0, "Scanner ASC/ASCQ: %s\n", pss->as_str);
break;
case OPT_REL_UNIT:
release_unit (pss);
DBG (0, "Release unit sent.\n");
break;
case OPT_RGB_LPR:
pss->rgb_lpr = *(SANE_Int *) v;
if (i)
*i = 0;
break;
case OPT_GS_LPR:
pss->gs_lpr = *(SANE_Int *) v;
if (i)
*i = 0;
break;
default:
DBG (DL_MAJOR_ERROR,
@ -1352,7 +1229,7 @@ SANE_Status sane_control_option (SANE_Handle h,
(long) n);
return SANE_STATUS_UNSUPPORTED;
}
DBG (DL_VERBOSE, "%s: option %s set to value ",
DBG (DL_DATA_TRACE, "%s: option %s set to value ",
me, pss->options[n].name);
switch (pss->options[n].type)
{
@ -1362,28 +1239,28 @@ SANE_Status sane_control_option (SANE_Handle h,
case SANE_TYPE_BOOL:
{
char *valstr = (*(SANE_Bool *) v == SANE_TRUE) ? "TRUE" : "FALSE";
DBG (DL_VERBOSE, "%s\n", valstr);
DBG (DL_DATA_TRACE, "%s\n", valstr);
}
break;
default:
DBG (DL_VERBOSE, "other than an integer or boolean.\n");
DBG (DL_DATA_TRACE, "other than an integer or boolean.\n");
break;
}
break;
case SANE_ACTION_SET_AUTO:
if (i)
*i = 0;
switch (n)
{
case OPT_COUNT:
break;
case OPT_SCANRES:
pss->res = 300;
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
*i |= SANE_INFO_RELOAD_PARAMS;
break;
case OPT_PREVIEW:
pss->preview = SANE_FALSE;
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
*i |= SANE_INFO_RELOAD_PARAMS;
break;
case OPT_MODE:
pss->mode_s = md_colour;
@ -1401,92 +1278,46 @@ SANE_Status sane_control_option (SANE_Handle h,
case OPT_PREVIEW_MODE:
pss->preview_mode_s = md_greyscale;
pss->preview_mode = MD_GREYSCALE;
break;
case OPT_SOURCE:
pss->source = SRC_FLATBED;
pss->pdev->x_range.max = x_range_fb.max;
pss->pdev->y_range.max = y_range_fb.max;
pss->predef_window = pdw_none;
if (pss->source_s)
free (pss->source_s);
pss->source_s = (SANE_Char *) strdup(src_flatbed);
if (i)
*i = 0;
*i |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
break;
case OPT_TLX:
pss->tlx = pss->pdev->x_range.min;
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
*i |= SANE_INFO_RELOAD_PARAMS;
break;
case OPT_TLY:
pss->tly = pss->pdev->y_range.min;
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
*i |= SANE_INFO_RELOAD_PARAMS;
break;
case OPT_BRX:
pss->brx = pss->pdev->x_range.max;
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
*i |= SANE_INFO_RELOAD_PARAMS;
break;
case OPT_BRY:
pss->bry = pss->pdev->y_range.max;
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
break;
case OPT_PREDEF_WINDOW:
pss->predef_window = pdw_none;
if (i)
*i = SANE_INFO_RELOAD_PARAMS;
break;
case OPT_GAMMA_GS:
pss->gamma_gs = DEFAULT_GAMMA;
if (i)
*i = 0;
break;
case OPT_GAMMA_R:
pss->gamma_r = DEFAULT_GAMMA;
if (i)
*i = 0;
break;
case OPT_GAMMA_G:
pss->gamma_g = DEFAULT_GAMMA;
if (i)
*i = 0;
break;
case OPT_GAMMA_B:
pss->gamma_b = DEFAULT_GAMMA;
if (i)
*i = 0;
break;
case OPT_HALFTONE:
pss->halftone = DEFAULT_HALFTONE;
if (pss->halftone)
{
pss->options[OPT_HALFTONE_PATTERN].cap &= ~SANE_CAP_INACTIVE;
}
else
{
pss->options[OPT_HALFTONE_PATTERN].cap |= SANE_CAP_INACTIVE;
}
control_options (pss);
if (i)
*i = SANE_INFO_RELOAD_OPTIONS;
break;
case OPT_HALFTONE_PATTERN:
pss->dither_matrix = dm_dd8x8;
if (i)
*i = 0;
*i |= SANE_INFO_RELOAD_PARAMS;
break;
case OPT_NEGATIVE:
pss->negative = DEFAULT_NEGATIVE;
if (i)
*i = 0;
break;
case OPT_THRESHOLD:
pss->threshold = DEFAULT_THRESHOLD;
if (i)
*i = 0;
break;
case OPT_RGB_LPR:
pss->rgb_lpr = def_rgb_lpr;
if (i)
*i = 0;
break;
case OPT_GS_LPR:
pss->gs_lpr = def_gs_lpr;
if (i)
*i = 0;
break;
default:
DBG (DL_MAJOR_ERROR,
@ -1500,14 +1331,20 @@ SANE_Status sane_control_option (SANE_Handle h,
DBG (DL_MAJOR_ERROR, "%s: invalid action code %ld\n", me, (long) a);
return SANE_STATUS_UNSUPPORTED;
}
close_scanner (pss);
return SANE_STATUS_GOOD;
}
/*
* $Log$
* Revision 1.2 2002/04/23 22:37:51 oliverschwartz
* SnapScan backend version 1.4.11
* Revision 1.3 2002/04/27 15:35:16 oliverschwartz
* SnapScan backend 1.4.12: Fix option handling
*
* Revision 1.3 2002/04/27 14:43:59 oliverschwartz
* - Remove SCSI debug options
* - Fix option handling (errors detected by tstbackend)
*
* Revision 1.2 2002/04/23 22:50:24 oliverschwartz
* Improve handling of scan area options
*
* Revision 1.1 2002/03/24 12:07:15 oliverschwartz
* Moved option functions from snapscan.c to snapscan-options.c

Wyświetl plik

@ -239,7 +239,9 @@ static SANE_Status open_scanner (SnapScan_Scanner *pss)
static void close_scanner (SnapScan_Scanner *pss)
{
DBG (DL_CALL_TRACE, "close_scanner\n");
static char me[] = "close_scanner";
DBG (DL_CALL_TRACE, "%s\n", me);
if (pss->opens)
{
pss->opens--;
@ -253,6 +255,8 @@ static void close_scanner (SnapScan_Scanner *pss)
{
snapscani_usb_close (pss->fd);
}
} else {
DBG(DL_INFO, "%s: handles left: %d\n,",me, pss->opens);
}
}
}
@ -913,6 +917,7 @@ static SANE_Status scsi_read (SnapScan_Scanner *pss, u_char read_type)
return status;
}
/*
static SANE_Status request_sense (SnapScan_Scanner *pss)
{
static const char *me = "request_sense";
@ -937,6 +942,7 @@ static SANE_Status request_sense (SnapScan_Scanner *pss)
}
return status;
}
*/
static SANE_Status send_diagnostic (SnapScan_Scanner *pss)
{
@ -967,7 +973,10 @@ static SANE_Status wait_scanner_ready (SnapScan_Scanner *pss)
DBG (DL_CALL_TRACE, "%s\n", me);
for (retries = 5; retries; retries--)
/* if the tray is returning to the start position
no time to wait is returned by the scanner. We'll
try several times and sleep 1 second between each try. */
for (retries = 20; retries; retries--)
{
status = test_unit_ready (pss);
switch (status)
@ -1169,8 +1178,11 @@ static SANE_Status download_firmware(SnapScan_Scanner * pss)
/*
* $Log$
* Revision 1.15 2002/04/23 22:37:52 oliverschwartz
* SnapScan backend version 1.4.11
* Revision 1.16 2002/04/27 15:35:17 oliverschwartz
* SnapScan backend 1.4.12: Fix option handling
*
* Revision 1.30 2002/04/27 14:41:22 oliverschwartz
* Print number of open handles in close_scanner()
*
* Revision 1.29 2002/04/10 21:46:48 oliverschwartz
* Removed illegal character

Wyświetl plik

@ -148,7 +148,7 @@ static SANE_Status snapscani_usb_open(const char *dev, int *fdp,
DBG (DL_CALL_TRACE, "%s(%s)\n", me, dev);
if((sem_id = semget( ftok(dev,0x1234), 1, IPC_CREAT | 0660 )) == -1) {
if((sem_id = semget( ftok(dev,0x12), 1, IPC_CREAT | 0660 )) == -1) {
DBG (DL_MAJOR_ERROR, "%s: Can't get semaphore\n", me);
return SANE_STATUS_INVAL;
}
@ -452,8 +452,11 @@ static SANE_Status usb_request_sense(SnapScan_Scanner *pss) {
/*
* $Log$
* Revision 1.9 2002/04/10 21:27:31 oliverschwartz
* make bqelements static, don't send diagnostic cmd to Snapscan1236
* Revision 1.10 2002/04/27 15:35:17 oliverschwartz
* SnapScan backend 1.4.12: Fix option handling
*
* Revision 1.20 2002/04/27 14:36:25 oliverschwartz
* Pass a char as 'proj' argument for ftok()
*
* Revision 1.19 2002/04/10 21:00:33 oliverschwartz
* Make bqelements static

Wyświetl plik

@ -78,7 +78,7 @@
#define EXPECTED_MAJOR 1
#define MINOR_VERSION 4
#define BUILD 11
#define BUILD 12
#include "snapscan.h"
@ -757,13 +757,13 @@ SANE_Status sane_init (SANE_Int *version_code,
else if (strncmp(dev_name, "usb", 3) == 0) {
sanei_usb_attach_matching_devices (dev_name, add_usb_device);
}
}
else if (strncmp(dev_name, "scsi", 4) == 0) {
sanei_config_attach_matching_devices (dev_name, add_scsi_device);
}
}
else if (strstr (dev_name, "usb")) {
add_usb_device(dev_name);
}
}
else {
add_scsi_device(dev_name);
}
@ -1148,11 +1148,11 @@ static void reader (SnapScan_Scanner *pss)
}
{
SANE_Byte *buf = wbuf;
DBG (1, "READ %d BYTES\n", ndata);
DBG (DL_DATA_TRACE, "READ %d BYTES\n", ndata);
while (ndata > 0)
{
int written = write (STDOUT_FILENO, buf, ndata);
DBG (1, "WROTE %d BYTES\n", written);
DBG (DL_DATA_TRACE, "WROTE %d BYTES\n", written);
if (written == -1)
{
DBG (DL_MAJOR_ERROR,
@ -1757,8 +1757,14 @@ SANE_Status sane_get_select_fd (SANE_Handle h, SANE_Int * fd)
/*
* $Log$
* Revision 1.21 2002/04/23 22:37:53 oliverschwartz
* SnapScan backend version 1.4.11
* Revision 1.22 2002/04/27 15:35:18 oliverschwartz
* SnapScan backend 1.4.12: Fix option handling
*
* Revision 1.44 2002/04/27 14:42:30 oliverschwartz
* Cleanup of debug logging
*
* Revision 1.43 2002/04/23 22:40:33 oliverschwartz
* Improve config file reading
*
* Revision 1.42 2002/04/10 21:00:09 oliverschwartz
* Check for NULL pointer before deleting device list

Wyświetl plik

@ -236,11 +236,6 @@ typedef enum
OPT_ADVANCED_GROUP, /* advanced group */
OPT_RGB_LPR, /* lines per scsi read (RGB) */
OPT_GS_LPR, /* lines per scsi read (GS) */
OPT_SCSI_CMDS, /* a group */
OPT_INQUIRY, /* inquiry command (button) */
OPT_SELF_TEST, /* self test command (button) */
OPT_REQ_SENSE, /* request sense command (button) */
OPT_REL_UNIT, /* release unit command (button) */
NUM_OPTS /* dummy (gives number of options) */
} SnapScan_Options;
@ -367,8 +362,14 @@ struct snapscan_scanner
/*
* $Log$
* Revision 1.14 2002/04/23 22:37:54 oliverschwartz
* SnapScan backend version 1.4.11
* Revision 1.15 2002/04/27 15:35:19 oliverschwartz
* SnapScan backend 1.4.12: Fix option handling
*
* Revision 1.31 2002/04/27 14:44:27 oliverschwartz
* - Remove SCSI debug options
*
* Revision 1.30 2002/04/23 22:51:00 oliverschwartz
* Cleanup, support for ADF
*
* Revision 1.29 2002/03/24 12:14:34 oliverschwartz
* Add Snapcan_Driver_desc