diff options
author | Lutz Mueller <lutz@users.sourceforge.net> | 2001-10-09 09:16:43 +0000 |
---|---|---|
committer | Lutz Mueller <lutz@users.sourceforge.net> | 2001-10-09 09:16:43 +0000 |
commit | 212c97715bda06b322baf3b92d6e2b205e99f9f3 (patch) | |
tree | 19862e47e37f1a18a4d0f557929e539426e58238 /camlibs | |
parent | 063ac2418bfc9ea96886c91cfe06cebab39aecf8 (diff) | |
download | libgphoto2-212c97715bda06b322baf3b92d6e2b205e99f9f3.tar.gz |
2001-10-09 Lutz M�ller <urc8@rz.uni-karlsruhe.de>
* camlibs/jd3503/library.c: Fix compile warnings by declaring some
functions static.
* camlibs/jd350e.c: Here, too. #include <stdlib.h>. Use camera->port
and camera->fs. First in order to avoid problems with port locking
and second for caching.
* camlibs/jd350e.h: No filesystem here. Use camera->fs.
git-svn-id: https://svn.code.sf.net/p/gphoto/code/trunk/libgphoto2@2456 67ed7778-7388-44ab-90cf-0a291f65f57c
Diffstat (limited to 'camlibs')
-rw-r--r-- | camlibs/jd350e/jd350e.c | 109 | ||||
-rw-r--r-- | camlibs/jd350e/jd350e.h | 1 | ||||
-rw-r--r-- | camlibs/jd350e/library.c | 10 |
3 files changed, 54 insertions, 66 deletions
diff --git a/camlibs/jd350e/jd350e.c b/camlibs/jd350e/jd350e.c index 5dcdaa3ca..3ad7931b4 100644 --- a/camlibs/jd350e/jd350e.c +++ b/camlibs/jd350e/jd350e.c @@ -16,7 +16,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + #include <string.h> +#include <stdlib.h> + #include <gphoto2.h> #include <gphoto2-port.h> @@ -64,63 +67,45 @@ int camera_abilities (CameraAbilitiesList *list) return (GP_OK); } -int camera_exit (Camera *camera) { +static int camera_exit (Camera *camera) { struct jd350e_s *device = camera->camlib_data; - /* close serial port */ - gp_port_close(device->gpiod); - - /* free camera filesystem */ - gp_filesystem_free(device->fs); - - return (GP_OK); -} - -int camera_folder_list_folders (Camera *camera, const char *folder, - CameraList *list) -{ - /* jd350e_s has no folder support */ + if (device) { + free (device); + camera->camlib_data = NULL; + } return (GP_OK); } -int camera_folder_list_files (Camera *camera, const char *folder, - CameraList *list) +static int file_list_func (CameraFilesystem *fs, const char *folder, + CameraList *list, void *data) { + Camera *camera = data; struct jd350e_s *device = camera->camlib_data; - int i, count, result; - const char *name; + int count, result; result = jd350e_file_count(device, &count); if (result != GP_OK) return result; - gp_filesystem_populate(device->fs, "/", "image%02i.pnm", count); - - for(i = 0; i < gp_filesystem_count(device->fs, folder); ++i) { - gp_filesystem_name(device->fs, folder, i, &name); - gp_list_append(list, name, NULL); - } + gp_list_populate(list, "image%02i.pnm", count); return (GP_OK); } -int camera_file_get (Camera *camera, const char *folder, const char *filename, - CameraFileType type, CameraFile *file ) +static int get_file_func (CameraFilesystem *fs, const char *folder, + const char *filename, CameraFileType type, + CameraFile *file, void *user_data) { + Camera *camera = user_data; struct jd350e_s *device = camera->camlib_data; - int image_no, count, result; + int image_no, result; char *data; long int size; - result = jd350e_file_count(device, &count); - if (result != GP_OK) - return result; - - gp_filesystem_populate(device->fs, "/", "image%02i.pnm", count); - - image_no = gp_filesystem_number(device->fs, folder, filename); + image_no = gp_filesystem_number(fs, folder, filename); if(image_no < 0) return image_no; @@ -146,27 +131,28 @@ int camera_file_get (Camera *camera, const char *folder, const char *filename, return result; gp_file_set_name (file, filename); - gp_file_set_mime_type (file, "image/pnm"); + gp_file_set_mime_type (file, "image/pnm"); gp_file_set_data_and_size (file, data, size); return (GP_OK); } -int camera_capture (Camera *camera, int capture_type, CameraFilePath *path) +static int camera_capture (Camera *camera, int capture_type, + CameraFilePath *path) { /* XXX implement */ return (GP_ERROR_NOT_SUPPORTED); } -int camera_summary (Camera *camera, CameraText *summary) +static int camera_summary (Camera *camera, CameraText *summary) { strcpy(summary->text, _("No summary available.")); return (GP_OK); } -int camera_manual (Camera *camera, CameraText *manual) +static int camera_manual (Camera *camera, CameraText *manual) { strcpy(manual->text, _("The JD350e camera uses a proprietary compression method. This driver is\n" @@ -186,7 +172,7 @@ int camera_manual (Camera *camera, CameraText *manual) return (GP_OK); } -int camera_about (Camera *camera, CameraText *about) +static int camera_about (Camera *camera, CameraText *about) { strcpy (about->text, _("JD350e\n" @@ -197,7 +183,7 @@ int camera_about (Camera *camera, CameraText *about) return (GP_OK); } -const char* camera_result_as_string (Camera *camera, int result) +static const char* camera_result_as_string (Camera *camera, int result) { if (result >= 0) return ("This is not an error..."); if (-result < 100) return gp_result_as_string (result); @@ -206,45 +192,48 @@ const char* camera_result_as_string (Camera *camera, int result) int camera_init (Camera *camera) { - gp_port_settings gpiod_settings; - int ret; + gp_port_settings settings; struct jd350e_s *device; + int ret; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; - camera->functions->folder_list_folders = camera_folder_list_folders; - camera->functions->folder_list_files = camera_folder_list_files; - camera->functions->file_get = camera_file_get; camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; + camera->functions->capture = camera_capture; camera->functions->result_as_string = camera_result_as_string; if((device = malloc(sizeof(struct jd350e_s))) == NULL) { return GP_ERROR_NO_MEMORY; } + device->gpiod = camera->port; camera->camlib_data = device; - /* open and configure serial port */ - if ((ret = gp_port_new(&(device->gpiod), GP_PORT_SERIAL)) < 0) - return (ret); - - gp_port_timeout_set(device->gpiod, 1000); + /* Configure port */ + gp_port_timeout_set(camera->port, 1000); - strcpy(gpiod_settings.serial.port, camera->port_info->path); - gpiod_settings.serial.speed = camera->port_info->speed; - gpiod_settings.serial.bits = 8; - gpiod_settings.serial.parity = 0; - gpiod_settings.serial.stopbits = 1; + strcpy(settings.serial.port, camera->port_info->path); + settings.serial.speed = camera->port_info->speed; + settings.serial.bits = 8; + settings.serial.parity = 0; + settings.serial.stopbits = 1; - gp_port_settings_set(device->gpiod, gpiod_settings); - gp_port_open(device->gpiod); + gp_port_settings_set(camera->port, settings); - /* create camera filesystem */ - gp_filesystem_new(&device->fs); + /* Set up the filesystem */ + gp_filesystem_set_list_funcs (camera->fs, file_list_func, NULL, + camera); + gp_filesystem_set_file_func (camera->fs, get_file_func, camera); /* test camera */ - return jd350e_ping(device); + ret = jd350e_ping(device); + if (ret < 0) { + free (device); + camera->camlib_data = NULL; + } + + return (ret); } diff --git a/camlibs/jd350e/jd350e.h b/camlibs/jd350e/jd350e.h index b402dbbbc..8ce938de1 100644 --- a/camlibs/jd350e/jd350e.h +++ b/camlibs/jd350e/jd350e.h @@ -22,7 +22,6 @@ struct jd350e_s { gp_port *gpiod; - CameraFilesystem *fs; }; #endif diff --git a/camlibs/jd350e/library.c b/camlibs/jd350e/library.c index fdbe68e27..5893d5ede 100644 --- a/camlibs/jd350e/library.c +++ b/camlibs/jd350e/library.c @@ -49,7 +49,7 @@ #define CMD_IO_TIMEOUT 0x02 #define CMD_BAD_RESPONSE 0x03 -int jd350e_remap_gp_port_error(int error) +static int jd350e_remap_gp_port_error(int error) { switch(error) { case GP_ERROR_TIMEOUT: @@ -63,7 +63,7 @@ int jd350e_remap_gp_port_error(int error) } } -unsigned char jd350e_checksum(const unsigned char *data, int start, int end) +static unsigned char jd350e_checksum(const unsigned char *data, int start, int end) { unsigned char sum = 0; int i; @@ -78,7 +78,7 @@ unsigned char jd350e_checksum(const unsigned char *data, int start, int end) return sum; } -int jd350e_cmd(struct jd350e_s *device, unsigned char cmd, +static int jd350e_cmd(struct jd350e_s *device, unsigned char cmd, unsigned char cmd_len, unsigned char data1, unsigned char data2, unsigned char data3, unsigned char data4, @@ -128,7 +128,7 @@ int jd350e_cmd(struct jd350e_s *device, unsigned char cmd, return CMD_OK; } -int jd350e_try_cmd(struct jd350e_s *device, unsigned char cmd, unsigned char cmd_len, +static int jd350e_try_cmd(struct jd350e_s *device, unsigned char cmd, unsigned char cmd_len, unsigned char data1, unsigned char data2, unsigned char data3, unsigned char data4, unsigned char *response, unsigned response_len, @@ -203,7 +203,7 @@ int jd350e_file_count(struct jd350e_s *device, int *count) } } -int jd350e_get_image(struct jd350e_s *device, int image_no, int subcmd, +static int jd350e_get_image(struct jd350e_s *device, int image_no, int subcmd, char **data, int *size, int w, int h, int interpolate) { unsigned char set_image_no_response[CMD_SET_IMAGE_NUMBER_RLEN], |