Lines Matching refs:side
299 - replace s->img_count with s->side
345 - add endorser side option
393 - detect front-side endorser
394 - disable endorser-side controls if only one side installed
397 - front-side endorser uses data ID 0x80
403 - improved front-side endorser vpd detection
404 - send scanner_control_ric during sane_read of each side
418 - get_pixelsize() sets back window ID for back side scans
439 - add side option to show which duplex image is being transferred
466 - track per-side ILI and global EOM flags
467 - set per-side EOF flag if ILI and EOM are set
3950 opt->desc = SANE_I18N ("Collect a few mm of background on top side of scan, before paper enters ADF, and increase maximum scan area beyond paper size, to allow collection on remaining sides. May conflict with bgcolor option");
4057 opt->desc = SANE_I18N ("Limit driver memory usage for use in embedded systems. Causes some duplex transfers to alternate sides on each call to sane_read. Value of option 'side' can be used to determine correct image. This option should only be used with custom front-end software.");
4071 opt->name = "side";
4072 opt->title = SANE_I18N ("Duplex side");
4073 opt->desc = SANE_I18N ("Tells which side (0=front, 1=back) of a duplex scan the next call to sane_read will return.");
4353 opt->name = "endorser-side";
4354 opt->title = SANE_I18N ("Endorser side");
4355 opt->desc = SANE_I18N ("Endorser printing side, requires hardware support to change");
5125 *val_p = s->side;
6109 /*fi-5900 front side uses 0x80, assume all others*/
6953 DBG (15, "started=%d, side=%d, source=%d\n", s->started, s->side, s->source);
6961 /* not finished with current side, error */
6962 if (s->started && !s->eof_tx[s->side]) {
6968 /* low mem mode messes up the side marker, reset it */
6972 s->side = SIDE_BACK;
6978 /* load side marker */
6980 s->side = SIDE_BACK;
6983 s->side = SIDE_FRONT;
7100 s->side = !s->side;
7107 /* don't call object pos or scan on back side of duplex scan */
7108 if(s->side == SIDE_FRONT || s->source == SOURCE_ADF_BACK || s->source == SOURCE_CARD_BACK){
7213 DBG (15, "started=%d, side=%d, source=%d\n", s->started, s->side, s->source);
7223 while(!s->eof_rx[s->side] && !ret){
7245 buffer_deskew(s,s->side);
7248 buffer_crop(s,s->side);
7251 buffer_despeck(s,s->side);
7258 if(buffer_isblank(s,s->side)){
7259 s->bytes_tx[s->side] = s->bytes_rx[s->side];
7260 s->eof_tx[s->side] = 1;
7313 /*fi-5900 front side uses 0x80, assume all others*/
7413 scanner_control_ric (struct fujitsu *s, int bytes, int side)
7429 if (side == SIDE_BACK) {
7438 DBG (15, "scanner_control_ric: %d %d\n",bytes,side);
7485 int side;
7489 for(side=0;side<2;side++){
7492 if (s->buffers[side]) {
7493 DBG (15, "setup_buffers: free buffer %d.\n",side);
7494 free(s->buffers[side]);
7495 s->buffers[side] = NULL;
7498 if(s->buff_tot[side]){
7499 s->buffers[side] = calloc (1,s->buff_tot[side]);
7501 if (!s->buffers[side]) {
7502 DBG (5, "setup_buffers: Error, no buffer %d.\n",side);
7811 if(s->side == SIDE_BACK){
8057 if(s->eof_rx[s->side] && s->bytes_tx[s->side] == s->bytes_rx[s->side]){
8059 s->eof_tx[s->side] = 1;
8062 * and there is data waiting on the other side */
8065 && (s->bytes_rx[!s->side] > s->bytes_tx[!s->side]
8066 || (s->eof_rx[!s->side] && !s->eof_tx[!s->side])
8069 s->side = !s->side;
8111 /* buffer front side */
8118 /* buffer back side, but don't get too far ahead of the front! */
8130 ret = read_from_scanner(s, s->side);
8132 DBG(5,"sane_read: side %d returning %d\n",s->side,ret);
8139 ret = downsample_from_buffer(s,buf,max_len,len,s->side);
8144 ret = read_from_buffer(s,buf,max_len,len,s->side);
8148 if(s->buff_tx[s->side] == s->buff_rx[s->side]
8149 && s->buff_tot[s->side] < s->bytes_tot[s->side]
8152 s->buff_rx[s->side] = 0;
8153 s->buff_tx[s->side] = 0;
8160 * and there is data waiting on the other side */
8163 && (s->bytes_rx[!s->side] > s->bytes_tx[!s->side]
8164 || (s->eof_rx[!s->side] && !s->eof_tx[!s->side])
8167 s->side = !s->side;
8179 inject_jfif_header(struct fujitsu *s, int side)
8190 DBG (10, "inject_jfif_header: start %d\n", side);
8195 memcpy(s->buffers[side]+s->buff_rx[side], out, outLen);
8196 s->buff_rx[side] += outLen;
8197 s->bytes_rx[side] += outLen;
8240 /* leave space for JFIF header in the small front side buffer,
8360 /* skip first RST for back side*/
8431 /* put the high-order width byte into front side, shifted down */
8435 /* put the high-order width byte into back side, shifted down */
8520 int side = SIDE_FRONT;
8613 side=SIDE_FRONT;
8618 side=SIDE_BACK;
8623 side=SIDE_BACK;
8628 side=SIDE_FRONT;
8632 copy_3091 (s, in + i*s->s_params.bytes_per_line, s->s_params.bytes_per_line, side);
8635 copy_buffer (s, in + i*s->s_params.bytes_per_line, s->s_params.bytes_per_line, side);
8654 read_from_scanner(struct fujitsu *s, int side)
8665 int avail = s->buff_tot[side] - s->buff_rx[side];
8666 int remain = s->bytes_tot[side] - s->bytes_rx[side];
8668 DBG (10, "read_from_scanner: start %d\n", side);
8670 if(s->eof_rx[side]){
8690 if(s->s_params.format == SANE_FRAME_JPEG && s->bytes_rx[side] < 2)
8694 side, remain, s->buffer_size, bytes, avail);
8697 s->bytes_tot[side], s->bytes_rx[side], s->bytes_tx[side],
8698 s->lines_rx[side]);
8701 s->buff_tot[side], s->buff_rx[side], s->buff_tx[side]);
8710 if(!s->bytes_rx[side] && s->connection == CONNECTION_USB){
8712 ret = scanner_control_ric(s,bytes,side);
8730 if (side == SIDE_BACK) {
8764 copy_3091 (s, in, inLen, side);
8767 copy_JPEG (s, in, inLen, side);
8770 copy_buffer (s, in, inLen, side);
8777 s->ili_rx[side] = s->rs_ili;
8778 if(s->ili_rx[side]){
8789 * but only if that side had a short read last time */
8794 DBG(15, "read_from_scanner: finishing side %d\n",i);
8806 copy_3091(struct fujitsu *s, unsigned char * buf, int len, int side)
8830 dest = s->lines_rx[side] * s->s_params.bytes_per_line;
8832 if(dest >= 0 && dest < s->bytes_tot[side]){
8834 s->buffers[side][dest+j*3] = buf[i+j];
8839 dest = (s->lines_rx[side] - goff) * s->s_params.bytes_per_line;
8841 if(dest >= 0 && dest < s->bytes_tot[side]){
8843 s->buffers[side][dest+j*3+1] = buf[i+s->s_params.pixels_per_line+j];
8848 dest = (s->lines_rx[side] - boff) * s->s_params.bytes_per_line;
8850 if(dest >= 0 && dest < s->bytes_tot[side]){
8852 s->buffers[side][dest+j*3+2] = buf[i+2*s->s_params.pixels_per_line+j];
8856 s->lines_rx[side]++;
8861 i = (s->lines_rx[side]-goff) * s->s_params.bytes_per_line;
8865 s->bytes_rx[side] = i;
8866 s->buff_rx[side] = i;
8868 if(s->bytes_rx[side] == s->bytes_tot[side]){
8869 s->eof_rx[side] = 1;
8873 side, s->bytes_rx[side], s->buff_rx[side], s->lines_rx[side],
8874 s->eof_rx[side]);
8882 copy_JPEG(struct fujitsu *s, unsigned char * buf, int len, int side)
8894 if(!s->bytes_rx[side] && len >= 4
8900 s->buffers[side][s->buff_rx[side]++] = buf[i];
8901 s->bytes_rx[side]++;
8906 inject_jfif_header(s,side);
8909 memcpy(s->buffers[side]+s->buff_rx[side],buf+seen,len-seen);
8910 s->buff_rx[side] += len-seen;
8911 s->bytes_rx[side] += len-seen;
8914 if(s->bytes_rx[side] == s->bytes_tot[side]){
8915 s->eof_rx[side] = 1;
8924 copy_buffer(struct fujitsu *s, unsigned char * buf, int len, int side)
8950 s->buffers[side][s->buff_rx[side]++] = buf[i+j*3+2];
8951 s->buffers[side][s->buff_rx[side]++] = buf[i+j*3+1];
8952 s->buffers[side][s->buff_rx[side]++] = buf[i+j*3];
8961 s->buffers[side][s->buff_rx[side]++] = buf[i+j];
8962 s->buffers[side][s->buff_rx[side]++] = buf[i+pwidth+j];
8963 s->buffers[side][s->buff_rx[side]++] = buf[i+2*pwidth+j];
8969 memcpy(s->buffers[side]+s->buff_rx[side],buf,len);
8970 s->buff_rx[side] += len;
8977 memcpy(s->buffers[side]+s->buff_rx[side],buf,len);
8978 s->buff_rx[side] += len;
8981 s->bytes_rx[side] += len;
8982 s->lines_rx[side] += len/s->s_params.bytes_per_line;
8984 if(s->bytes_rx[side] == s->bytes_tot[side]){
8985 s->eof_rx[side] = 1;
8995 SANE_Int max_len, SANE_Int * len, int side)
8999 int remain = s->buff_rx[side] - s->buff_tx[side];
9011 side, remain, max_len, bytes);
9014 s->bytes_tot[side], s->bytes_rx[side], s->bytes_tx[side]);
9017 s->buff_tot[side], s->buff_rx[side], s->buff_tx[side]);
9025 memcpy(buf,s->buffers[side]+s->buff_tx[side],bytes);
9026 s->buff_tx[side] += bytes;
9027 s->bytes_tx[side] += bytes;
9039 SANE_Int max_len, SANE_Int * len, int side)
9043 DBG (10, "downsample_from_buffer: start %d %d %d %d\n", s->bytes_rx[side], s->bytes_tx[side], s->buff_rx[side], s->buff_tx[side]);
9047 while(*len < max_len && s->buff_rx[side] - s->buff_tx[side] >= 3){
9053 gray = *(s->buffers[side]+s->buff_tx[side]) * 3;
9056 gray = *(s->buffers[side]+s->buff_tx[side]+1) * 3;
9059 gray = *(s->buffers[side]+s->buff_tx[side]+2) * 3;
9062 gray = *(s->buffers[side]+s->buff_tx[side])
9063 + *(s->buffers[side]+s->buff_tx[side]+1)
9064 + *(s->buffers[side]+s->buff_tx[side]+2);
9069 s->buff_tx[side] += 3;
9070 s->bytes_tx[side] += 3;
9084 while(*len < max_len && s->buff_rx[side] - s->buff_tx[side] >= 24){
9095 gray = *(s->buffers[side]+s->buff_tx[side]) * 3;
9098 gray = *(s->buffers[side]+s->buff_tx[side]+1) * 3;
9101 gray = *(s->buffers[side]+s->buff_tx[side]+2) * 3;
9104 gray = *(s->buffers[side]+s->buff_tx[side])
9105 + *(s->buffers[side]+s->buff_tx[side]+1)
9106 + *(s->buffers[side]+s->buff_tx[side]+2);
9116 s->buff_tx[side] += 3;
9117 s->bytes_tx[side] += 3;
9131 DBG (10, "downsample_from_buffer: finish %d %d %d %d\n", s->bytes_rx[side], s->bytes_tx[side], s->buff_rx[side], s->buff_tx[side]);
10169 buffer_deskew(struct fujitsu *s, int side)
10178 if(s->side == SIDE_FRONT
10183 &s->s_params,s->buffers[side],s->resolution_x,s->resolution_y,
10207 ret = sanei_magic_rotate(&s->s_params,s->buffers[side],
10225 buffer_crop(struct fujitsu *s, int side)
10232 &s->s_params,s->buffers[side],s->resolution_x,s->resolution_y,
10245 * is a multiple of 8 pixels, by adjusting the right side */
10251 ret = sanei_magic_crop(&s->s_params,s->buffers[side],
10264 s->bytes_rx[side] = s->s_params.lines * s->s_params.bytes_per_line;
10265 s->buff_rx[side] = s->bytes_rx[side];
10276 buffer_despeck(struct fujitsu *s, int side)
10282 ret = sanei_magic_despeck(&s->s_params,s->buffers[side],s->swdespeck);
10296 buffer_isblank(struct fujitsu *s, int side)
10303 ret = sanei_magic_isBlank2(&s->s_params, s->buffers[side],