epsonds: send scanning parameter all at once

merge-requests/1/head
Alessandro Zummo 2015-04-04 01:20:11 +02:00
rodzic c3545da14d
commit 225e00ceae
1 zmienionych plików z 13 dodań i 24 usunięć

Wyświetl plik

@ -1172,6 +1172,8 @@ sane_start(SANE_Handle handle)
/* set scanning parameters */ /* set scanning parameters */
char cmd[100]; /* take care not to overflow */
/* document source */ /* document source */
if (strcmp(source_list[s->val[OPT_SOURCE].w], ADF_STR) == 0) { if (strcmp(source_list[s->val[OPT_SOURCE].w], ADF_STR) == 0) {
@ -1179,44 +1181,31 @@ sane_start(SANE_Handle handle)
s->val[OPT_ADF_MODE].w ? "DPLX" : "", s->val[OPT_ADF_MODE].w ? "DPLX" : "",
s->val[OPT_ADF_SKEW].w ? "SKEW" : ""); s->val[OPT_ADF_SKEW].w ? "SKEW" : "");
status = esci2_para(s, buf);
if (status != SANE_STATUS_GOOD) {
goto end;
}
} else if (strcmp(source_list[s->val[OPT_SOURCE].w], FBF_STR) == 0) { } else if (strcmp(source_list[s->val[OPT_SOURCE].w], FBF_STR) == 0) {
status = esci2_para(s, "#FB "); strcpy(buf, "#FB ");
if (status != SANE_STATUS_GOOD) {
goto end;
}
} else { } else {
/* XXX */ /* XXX */
} }
strcpy(cmd, buf);
if (s->params.format == SANE_FRAME_GRAY) { if (s->params.format == SANE_FRAME_GRAY) {
sprintf(buf, "#COLM%03d", s->params.depth); sprintf(buf, "#COLM%03d", s->params.depth);
} else if (s->params.format == SANE_FRAME_RGB) { } else if (s->params.format == SANE_FRAME_RGB) {
sprintf(buf, "#COLC%03d", s->params.depth * 3); sprintf(buf, "#COLC%03d", s->params.depth * 3);
} }
status = esci2_para(s, buf); strcat(cmd, buf);
if (status != SANE_STATUS_GOOD) {
goto end;
}
/* image transfer format */ /* image transfer format */
if (!s->mode_jpeg) { if (!s->mode_jpeg) {
if (s->params.depth > 1 || s->hw->has_raw) { if (s->params.depth > 1 || s->hw->has_raw) {
status = esci2_para(s, "#FMTRAW "); strcat(cmd, "#FMTRAW ");
} }
} else { } else {
status = esci2_para(s, "#FMTJPG #JPGd090"); strcat(cmd, "#FMTJPG #JPGd090");
}
if (status != SANE_STATUS_GOOD) {
goto end;
} }
/* resolution (RSMi not always supported) */ /* resolution (RSMi not always supported) */
@ -1227,15 +1216,15 @@ sane_start(SANE_Handle handle)
sprintf(buf, "#RSMd%03d", s->val[OPT_RESOLUTION].w); sprintf(buf, "#RSMd%03d", s->val[OPT_RESOLUTION].w);
} }
status = esci2_para(s, buf); strcat(cmd, buf);
if (status != SANE_STATUS_GOOD) {
goto end;
}
/* scanning area */ /* scanning area */
sprintf(buf, "#ACQi%07di%07di%07di%07d", sprintf(buf, "#ACQi%07di%07di%07di%07d",
s->left, s->top, s->params.pixels_per_line, s->params.lines); s->left, s->top, s->params.pixels_per_line, s->params.lines);
status = esci2_para(s, buf);
strcat(cmd, buf);
status = esci2_para(s, cmd);
if (status != SANE_STATUS_GOOD) { if (status != SANE_STATUS_GOOD) {
goto end; goto end;
} }