Lines Matching defs:dev
3 Copyright (C) 2009-12 Stéphane Voltz <stef.dev@free.fr>
410 session->dev = device;
611 status = sheetfed_calibration (s->dev);
616 cleanup_calibration (s->dev);
655 status = test_document (s->dev->fd);
664 *(SANE_Bool *) val = !s->dev->calibrated;
821 P5_Device *dev = session->dev;
833 if (dev->initialized == SANE_FALSE)
840 status = test_document (dev->fd);
852 if (dev->ystart > 0)
854 status = move (dev);
863 status = start_scan (dev, dev->mode, dev->ydpi, dev->xstart, dev->pixels);
871 if (dev->buffer != NULL)
873 free (dev->buffer);
876 dev->position = 0;
877 dev->top = 0;
879 dev->bottom = dev->bytes_per_line * 2 * dev->lds;
881 dev->size = dev->pixels * 3 * 66 + dev->bottom;
882 dev->buffer = (uint8_t *) malloc (dev->size);
883 if (dev->buffer == NULL)
885 DBG (DBG_error, "sane_start: failed to allocate %lu bytes\n", (unsigned long)dev->size);
895 DBG (DBG_io, "sane_start: size=%lu\n", (unsigned long)dev->size);
896 DBG (DBG_io, "sane_start: top=%lu\n", (unsigned long)dev->top);
897 DBG (DBG_io, "sane_start: bottom=%lu\n", (unsigned long)dev->bottom);
898 DBG (DBG_io, "sane_start: position=%lu\n", (unsigned long)dev->position);
914 P5_Device *dev = session->dev;
937 dev->mode = MODE_GRAY;
938 dev->lds = 0;
943 dev->mode = MODE_LINEART;
944 dev->lds = 0;
950 dev->mode = MODE_COLOR;
951 dev->lds = (dev->model->lds * dpi) / dev->model->max_ydpi;
984 dev->lines = session->params.lines;
985 dev->pixels = session->params.pixels_per_line;
988 dev->xdpi = dpi;
989 dev->ydpi = dpi;
992 if (dev->ydpi > dev->model->max_ydpi)
994 dev->ydpi = dev->model->max_ydpi;
995 dev->lines = (dev->lines * dev->model->max_ydpi) / dpi;
996 if (dev->lines == 0)
997 dev->lines = 1;
1001 (session->params.lines / dev->lines) * dev->lines;
1005 if (dev->ydpi < dev->model->min_ydpi)
1007 dev->ydpi = dev->model->min_ydpi;
1008 dev->lines = (dev->lines * dev->model->min_ydpi) / dpi;
1012 dev->xstart =
1013 ((SANE_UNFIX (dev->model->x_offset) + tl_x) * dpi) / MM_PER_INCH;
1014 dev->ystart =
1015 ((SANE_UNFIX (dev->model->y_offset) + tl_y) * dev->ydpi) / MM_PER_INCH;
1018 if (dev->ystart > 2 * dev->lds)
1019 dev->ystart -= 2 * dev->lds;
1024 dev->bytes_per_line = dev->pixels;
1027 dev->bytes_per_line *= 3;
1039 session->params.bytes_per_line = dev->bytes_per_line;
1041 session->params.bytes_per_line = dev->bytes_per_line;
1052 DBG (DBG_data, "compute_parameters: xstart =%d\n", dev->xstart);
1053 DBG (DBG_data, "compute_parameters: ystart =%d\n", dev->ystart);
1054 DBG (DBG_data, "compute_parameters: dev lines =%d\n", dev->lines);
1055 DBG (DBG_data, "compute_parameters: dev bytes per line=%d\n",
1056 dev->bytes_per_line);
1057 DBG (DBG_data, "compute_parameters: dev pixels =%d\n", dev->pixels);
1058 DBG (DBG_data, "compute_parameters: lds =%d\n", dev->lds);
1121 struct P5_Device *dev = session->dev;
1169 if (dev->top <= dev->bottom)
1176 count = available_bytes (dev->fd);
1178 if (count < dev->bytes_per_line && session->non_blocking == SANE_TRUE)
1186 while (count < dev->bytes_per_line)
1189 status = test_document (dev->fd);
1198 count = available_bytes (dev->fd);
1205 size = dev->size - dev->position;
1214 if (dev->ydpi > dev->model->max_xdpi)
1222 lines = read_line (dev,
1223 dev->buffer + dev->position,
1224 dev->bytes_per_line,
1225 size / dev->bytes_per_line,
1226 SANE_TRUE, x2, dev->mode, dev->calibrated);
1237 dev->position += lines * dev->bytes_per_line;
1238 dev->top = dev->position;
1239 if (dev->position > dev->bottom)
1241 dev->position = dev->bottom;
1243 DBG (DBG_io, "sane_read: size =%lu\n", (unsigned long)dev->size);
1244 DBG (DBG_io, "sane_read: bottom =%lu\n", (unsigned long)dev->bottom);
1245 DBG (DBG_io, "sane_read: position=%lu\n", (unsigned long)dev->position);
1246 DBG (DBG_io, "sane_read: top =%lu\n", (unsigned long)dev->top);
1251 if (dev->position < dev->top && dev->position >= dev->bottom)
1256 size = dev->top - dev->position;
1264 *len = dev->top - dev->position;
1268 if (dev->lds == 0)
1270 memcpy (buf, dev->buffer + dev->position, *len);
1275 count = dev->lds * dev->bytes_per_line;
1280 switch ((dev->position + i) % 3)
1284 buf[i] = dev->buffer[dev->position + i - 2 * count];
1288 buf[i] = dev->buffer[dev->position + i - count];
1292 buf[i] = dev->buffer[dev->position + i];
1297 dev->position += *len;
1307 if (dev->position >= dev->top && dev->position >= dev->bottom)
1310 if (dev->position > dev->bottom && dev->lds > 0)
1312 memcpy (dev->buffer,
1313 dev->buffer + dev->position - dev->bottom, dev->bottom);
1317 dev->position = dev->bottom;
1318 dev->top = 0;
1321 DBG (DBG_io, "sane_read: size =%lu\n", (unsigned long)dev->size);
1322 DBG (DBG_io, "sane_read: bottom =%lu\n", (unsigned long)dev->bottom);
1323 DBG (DBG_io, "sane_read: position=%lu\n", (unsigned long)dev->position);
1324 DBG (DBG_io, "sane_read: top =%lu\n", (unsigned long)dev->top);
1374 eject (session->dev->fd);
1426 if (session->dev->initialized == SANE_TRUE)
1428 if (session->dev->calibrated == SANE_TRUE)
1430 save_calibration (session->dev);
1432 disconnect (session->dev->fd);
1433 close_pp (session->dev->fd);
1434 session->dev->fd = -1;
1435 session->dev->initialized = SANE_FALSE;
1438 if (session->dev->buffer != NULL)
1440 free (session->dev->buffer);
1442 if (session->dev->buffer != NULL)
1444 free (session->dev->gain);
1445 free (session->dev->offset);
1447 if (session->dev->calibrated == SANE_TRUE)
1449 cleanup_calibration (session->dev);
1481 struct P5_Device *dev, *nextdev;
1505 for (dev = devices; dev; dev = nextdev)
1507 nextdev = dev->next;
1508 free (dev->name);
1509 free (dev);
1707 P5_Model *model = session->dev->model;