diff options
author | Dominik Kuhlen <kinimod@users.sourceforge.net> | 2003-02-16 00:41:23 +0000 |
---|---|---|
committer | Dominik Kuhlen <kinimod@users.sourceforge.net> | 2003-02-16 00:41:23 +0000 |
commit | 641784147647c8aa3cc4b1b30a496c360208d8a4 (patch) | |
tree | 7779ddb058c6e8431d60b8e727d5fabba58a9a78 /camlibs/sx330z | |
parent | fe9ef82debe5d71784e0b0ce467584b9dd0a575a (diff) | |
download | libgphoto2-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/ChangeLog | 9 | ||||
-rw-r--r-- | camlibs/sx330z/library.c | 39 | ||||
-rw-r--r-- | camlibs/sx330z/sx330z.c | 14 | ||||
-rw-r--r-- | camlibs/sx330z/sx330z.h | 10 |
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 { |