1 /* fuji.h
2  *
3  * Copyright 2002 Lutz Mueller <lutz@users.sourceforge.net>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the
17  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  * Boston, MA  02110-1301  USA
19  */
20 
21 #ifndef __FUJI_H__
22 #define __FUJI_H__
23 
24 #include <gphoto2/gphoto2-context.h>
25 #include <gphoto2/gphoto2-camera.h>
26 
27 enum _FujiCmd {
28 	FUJI_CMD_PIC_GET	= 0x02,
29 	FUJI_CMD_PIC_GET_THUMB  = 0x00,
30 	FUJI_CMD_SPEED		= 0x07,
31         FUJI_CMD_VERSION        = 0x09,
32 	FUJI_CMD_PIC_NAME	= 0x0a,
33 	FUJI_CMD_PIC_COUNT	= 0x0b,
34 
35 	FUJI_CMD_UNKNOWN1	= 0x0c, /* Figure this out! */
36 
37 	FUJI_CMD_UPLOAD		= 0x0e,
38 	FUJI_CMD_UPLOAD_INIT	= 0x0f,
39 
40 	FUJI_CMD_UNKNOWN4	= 0x11, /* Figure this out! */
41 	FUJI_CMD_UNKNOWN5	= 0x13, /* Figure this out! */
42 
43         FUJI_CMD_PIC_SIZE       = 0x17,
44         FUJI_CMD_PIC_DEL        = 0x19,
45 	FUJI_CMD_AVAIL_MEM	= 0x1b,
46 
47 	FUJI_CMD_UNKNOWN10	= 0x20, /* Figure this out! */
48 	FUJI_CMD_UNKNOWN11	= 0x22, /* Figure this out! */
49 
50 	FUJI_CMD_TAKE           = 0x27,
51 	FUJI_CMD_MODEL		= 0x29,
52 
53 	FUJI_CMD_UNKNOWN13      = 0x2a, /* Figure this out! */
54 	FUJI_CMD_UNKNOWN14	= 0x2b, /* Figure this out! */
55 	FUJI_CMD_UNKNOWN15	= 0x2e, /* Figure this out! */
56 
57 	/* Flash related commands */
58 	FUJI_CMD_FLASH_GET	= 0x30,
59 	FUJI_CMD_FLASH_SET	= 0x32,
60         FUJI_CMD_FLASH_CHARGE   = 0x34,
61 
62         FUJI_CMD_CMDS_VALID     = 0x4c,
63 
64 	FUJI_CMD_UNKNOWN16	= 0x51, /* Figure this out! */
65 
66         FUJI_CMD_PREVIEW        = 0x64,
67 
68 	/* Configurable settings */
69 	FUJI_CMD_ID_GET		= 0x80,
70 	FUJI_CMD_ID_SET		= 0x82,
71 	FUJI_CMD_DATE_GET	= 0x84,
72 	FUJI_CMD_DATE_SET	= 0x86,
73 
74 	FUJI_CMD_UNKNOWN8	= 0xc0  /* Figure this out! */
75 };
76 typedef enum _FujiCmd FujiCmd;
77 
78 int fuji_get_cmds  (Camera *camera, unsigned char *cmds, GPContext *context);
79 
80 int fuji_ping        (Camera *, GPContext *context);
81 int fuji_pic_count   (Camera *, unsigned int *n, GPContext *);
82 int fuji_version     (Camera *, const char **version, GPContext *);
83 int fuji_model       (Camera *, const char **model, GPContext *);
84 int fuji_avail_mem   (Camera *, unsigned int *avail_mem, GPContext *);
85 
86 int fuji_upload_init (Camera *, const char *name, GPContext *);
87 int fuji_upload      (Camera *, const unsigned char *data,
88 		      unsigned int size, GPContext *context);
89 
90 int fuji_id_get      (Camera *camera, const char **id, GPContext *context);
91 int fuji_id_set      (Camera *camera, const char  *id, GPContext *context);
92 
93 typedef struct _FujiDate FujiDate;
94 struct _FujiDate {
95 	unsigned int year;
96 	unsigned int month;
97 	unsigned int day;
98 	unsigned int hour;
99 	unsigned int min;
100 	unsigned int sec;
101 };
102 
103 int fuji_date_get  (Camera *camera, FujiDate *date, GPContext *context);
104 int fuji_date_set  (Camera *camera, FujiDate  date, GPContext *context);
105 
106 /* Operations on pictures */
107 int fuji_pic_name      (Camera *camera, unsigned int i, const char **name,
108 		        GPContext *context);
109 int fuji_pic_size      (Camera *camera, unsigned int i, unsigned int *size,
110 		        GPContext *context);
111 int fuji_pic_del       (Camera *camera, unsigned int i, GPContext *context);
112 int fuji_pic_get       (Camera *camera, unsigned int i, unsigned char **data,
113 		        unsigned int *size, GPContext *context);
114 int fuji_pic_get_thumb (Camera *camera, unsigned int i, unsigned char **data,
115 			unsigned int *size, GPContext *context);
116 
117 enum _FujiSpeed {
118 	FUJI_SPEED_9600		= 0,
119 	FUJI_SPEED_19200	= 5,
120 	FUJI_SPEED_38400	= 6,
121 	FUJI_SPEED_57600	= 7,
122 	FUJI_SPEED_115200	= 8
123 };
124 typedef enum _FujiSpeed FujiSpeed;
125 
126 int fuji_set_speed (Camera *camera, FujiSpeed speed, GPContext *context);
127 
128 #endif /* __FUJI_H__ */
129