summaryrefslogtreecommitdiff
path: root/camlibs/sx330z
diff options
context:
space:
mode:
authorDominik Kuhlen <kinimod@users.sourceforge.net>2003-02-16 00:41:23 +0000
committerDominik Kuhlen <kinimod@users.sourceforge.net>2003-02-16 00:41:23 +0000
commit641784147647c8aa3cc4b1b30a496c360208d8a4 (patch)
tree7779ddb058c6e8431d60b8e727d5fabba58a9a78 /camlibs/sx330z
parentfe9ef82debe5d71784e0b0ce467584b9dd0a575a (diff)
downloadlibgphoto2-641784147647c8aa3cc4b1b30a496c360208d8a4.tar.gz
fixed thumbnail handling for MD6000 and MD9700
git-svn-id: https://svn.code.sf.net/p/gphoto/code/trunk/libgphoto2@6206 67ed7778-7388-44ab-90cf-0a291f65f57c
Diffstat (limited to 'camlibs/sx330z')
-rw-r--r--camlibs/sx330z/ChangeLog9
-rw-r--r--camlibs/sx330z/library.c39
-rw-r--r--camlibs/sx330z/sx330z.c14
-rw-r--r--camlibs/sx330z/sx330z.h10
4 files changed, 48 insertions, 24 deletions
diff --git a/camlibs/sx330z/ChangeLog b/camlibs/sx330z/ChangeLog
index e6b07a974..d566b976e 100644
--- a/camlibs/sx330z/ChangeLog
+++ b/camlibs/sx330z/ChangeLog
@@ -1,9 +1,14 @@
-2002-01-15 Marcus Meissner <marcus@jet.franken.de>
+2003-02-09 Dominik Kuhlen <kinimod@users.sourceforge.net>
+
+ * Thumbnailhandling for MD6000 (and MD9700) fixed
+ * Changelog: Date fixed :-) (2002-01-15 -> 2003-01-15)
+
+2003-01-15 Marcus Meissner <marcus@jet.franken.de>
* Added Medion MD 6000 (same as JD 4100z3) and Jenoptik JD 4100z3
(verified usb ids by downloading driver).
-2002-01-10 Marcus Meissner <meissner@suse.de>
+2003-01-10 Marcus Meissner <meissner@suse.de>
* Added Concord EyeQ 4330 (has same id as Traveller 410z), reported by
Christian Boltz <christian.boltz@nexgo.de>.
diff --git a/camlibs/sx330z/library.c b/camlibs/sx330z/library.c
index 374a39191..e369f1230 100644
--- a/camlibs/sx330z/library.c
+++ b/camlibs/sx330z/library.c
@@ -76,7 +76,7 @@ static struct
{"Traveler:SX330z",USB_VENDOR_TRAVELER,USB_PRODUCT_SX330Z},
{"Maginon:SX330z",USB_VENDOR_TRAVELER,USB_PRODUCT_SX330Z},
{"Skanhex:SX-330z",USB_VENDOR_TRAVELER,USB_PRODUCT_SX330Z},
- {"Medion:MD 9700",USB_VENDOR_TRAVELER,USB_PRODUCT_MEDION},
+ {"Medion:MD 9700",USB_VENDOR_TRAVELER,USB_PRODUCT_MD9700},
{"Jenoptik:JD-3300z3",USB_VENDOR_TRAVELER,USB_PRODUCT_SX330Z},
{"Traveler:SX410z",USB_VENDOR_TRAVELER,USB_PRODUCT_SX410Z},
@@ -133,7 +133,6 @@ file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list,
/* get number of TOC pages */
CR (sx330z_get_toc_num_pages (camera, context, &tpages));
-
/* Read the TOC pages */
id = gp_context_progress_start (context, tpages, _("Getting "
"information on %i files..."), tpages);
@@ -239,11 +238,7 @@ camera_id(CameraText *id)
static int
camera_summary(Camera *camera,CameraText *summary,GPContext *context)
{
- strcpy(summary->text,_("0.1 Traveler SX330z ALDI-cam\n"
- "(many other vendors, like Jenoptik, Skanhex, Maginon should work too.\n"
- "Even the 4100 Cameras could work.\n"
- "Not tested, please report if this driver works with them!)\n"));
- return(GP_OK);
+ return(GP_ERROR_NOT_SUPPORTED);
} /* camera summary */
@@ -253,11 +248,27 @@ camera_summary(Camera *camera,CameraText *summary,GPContext *context)
static int
camera_about(Camera *camera,CameraText *about,GPContext *context)
{
- strcpy(about->text,_("(Traveler) SX330z Library\nSee summary for more information\nDominik Kuhlen <dkuhlen@fhm.edu>\n"));
+ strcpy(about->text,_("(Traveler) SX330z Library (And other Aldi-cams).\n"
+ "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n"
+ "Please send bugreports and comments.\n"
+ "Dominik Kuhlen <kinimod@users.sourceforge.net>\n"));
return(GP_OK);
} /* camera about */
+/*
+ * camera_exit
+ * release allocated memory
+ */
+int
+camera_exit(Camera *camera, GPContext *context)
+{
+ if (camera->pl)
+ free(camera->pl);
+ return(GP_OK);
+}
+
+
/*
* OK, lets get serious !
@@ -266,11 +277,13 @@ int
camera_init(Camera *camera,GPContext *context)
{
GPPortSettings settings;
+ CameraAbilities abilities;
/* try to contact the camera ...*/
/*CR(gp_port_get_settings(camera->port,&settings));*/
camera->functions->about=camera_about;
camera->functions->summary=camera_summary;
+ camera->functions->exit=camera_exit;
gp_port_get_settings(camera->port,&settings);
if (camera->port->type!=GP_PORT_USB)
{
@@ -285,11 +298,15 @@ camera_init(Camera *camera,GPContext *context)
/* CR(gp_filesystem_set_info_funcs(camera->fs,get_info_func,NULL,camera));*/
CR(gp_filesystem_set_list_funcs(camera->fs,file_list_func,NULL,camera));
CR(gp_filesystem_set_file_funcs(camera->fs,get_file_func,del_file_func,camera));
+
+ camera->pl=malloc(sizeof(CameraPrivateLibrary));
+ if (!camera->pl)
+ return(GP_ERROR_NO_MEMORY);
-/* GP_DEBUG("sx330z Camera_init : sx init"); */
+ CR(gp_camera_get_abilities(camera, &abilities));
+ camera->pl->usb_product=abilities.usb_product; /* some models differ in Thumbnail size */
+/* GP_DEBUG("sx330z Camera_init : sx init %04x",camera->pl->usb_product); */
return(sx330z_init(camera,context));
} /* camera init */
-
-
diff --git a/camlibs/sx330z/sx330z.c b/camlibs/sx330z/sx330z.c
index c5a773fa7..a3b7003f5 100644
--- a/camlibs/sx330z/sx330z.c
+++ b/camlibs/sx330z/sx330z.c
@@ -92,8 +92,6 @@ sx330z_init(Camera *camera,GPContext *context)
} /* sx330z_init */
-
-
/*
* Read block described by req
*/
@@ -102,8 +100,6 @@ sx330z_read_block(Camera *camera,GPContext *context,struct traveler_req *req,cha
{
int ret;
uint8_t trxbuf[0x20];
-/* struct traveler_ack ack;*/
-
/* 1. send request */
sx330z_fill_req(trxbuf,req);
ret=gp_port_usb_msg_write(camera->port,
@@ -120,7 +116,6 @@ sx330z_read_block(Camera *camera,GPContext *context,struct traveler_req *req,cha
} /* read block */
-
/*
* Get TOC size
*/
@@ -199,9 +194,12 @@ sx330z_get_data(Camera *camera,GPContext *context, const char *filename,
if (thumbnail==SX_THUMBNAIL)
{
- pages=5; /* first 20k only */
+ if (camera->pl->usb_product == USB_PRODUCT_MD9700)
+ pages=7; /* first 28k only*/
+ else
+ pages=5; /* first 20k only */
req.filename[0]='T'; /* 'T'humbnail indicator ?*/
- id=gp_context_progress_start(context,0x1000*5,"Thumbnail %.4s _",&filename[4]);
+ id=gp_context_progress_start(context,0x1000*pages,"Thumbnail %.4s _",&filename[4]);
} else
{
/* I don't like this solution ... */
@@ -284,5 +282,3 @@ sx330z_delete_file(Camera *camera,GPContext *context,const char *filename)
} /* sx330z delete file */
-
-
diff --git a/camlibs/sx330z/sx330z.h b/camlibs/sx330z/sx330z.h
index 2c3ca4cee..e4793c019 100644
--- a/camlibs/sx330z/sx330z.h
+++ b/camlibs/sx330z/sx330z.h
@@ -40,7 +40,8 @@
* Please report if this works
*/
#define USB_PRODUCT_SX410Z 0x4100
-#define USB_PRODUCT_MEDION 0x4102
+/* same as MD6000 */
+#define USB_PRODUCT_MD9700 0x4102
/* different requests (are there more ?) */
#define SX330Z_REQUEST_INIT 0x0001 /* not sure */
@@ -53,7 +54,6 @@
#define SX_IMAGE 0
-
/* 0x14 Bytes TOC entry */
struct traveler_toc_entry
{
@@ -72,6 +72,12 @@ struct traveler_toc_page
struct traveler_toc_entry entries[25]; /* entries */
};
+struct _CameraPrivateLibrary
+{
+ int usb_product; /* different Thumbnail size */
+};
+
+
/* 0x20 Bytes Request */
struct traveler_req
{