1 /* library.h
2  *
3  * Copyright (C) 2001,2002 Hubert Figuiere <hfiguiere@teaser.fr>
4  * Copyright (C) 2000,2001,2002 Scott Fritzinger
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the
18  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  * Boston, MA  02110-1301  USA
20  */
21 
22 /*
23   Kodak DC 240/280/3400/5000 driver.
24  */
25 
26 #ifndef __DC240_LIBRARY_H__
27 #define __DC240_LIBRARY_H__
28 
29 #define DC240_ACTION_PREVIEW    (uint8_t)0x93
30 #define DC240_ACTION_IMAGE      (uint8_t)0x9A
31 #define DC240_ACTION_DELETE     (uint8_t)0x9D
32 
33 #include "gphoto2-endian.h"
34 
35 
36 const char *dc240_convert_type_to_camera (uint16_t type);
37 const char *dc240_get_battery_status_str (uint8_t status);
38 const char *dc240_get_ac_status_str (uint8_t status);
39 const char *dc240_get_memcard_status_str(uint8_t status);
40 
41 /* Define the status table for DC240 and DC280. */
42 typedef struct {
43     uint8_t cameraType; /* 1 */
44     uint8_t fwVersInt; /* 2 */
45     uint8_t fwVersDec; /* 3 */
46     uint8_t romVers32Int; /* 4 */
47     uint8_t romVers32Dec; /* 5 */
48     uint8_t romVers8Int; /* 6 */
49     uint8_t romVers8Dec; /* 7 */
50     uint8_t battStatus; /* 8 */
51     uint8_t acAdapter; /* 9 */
52     uint8_t strobeStatus; /* 10 */
53     uint8_t memCardStatus; /* 11 */
54     uint8_t videoFormat; /* 12 */
55     uint8_t quickViewMode; /* 13 DC280 */
56     uint16_t numPict; /* 14-15 BigEndian */
57     char volumeID[11]; /* 16-26 */
58     uint8_t powerSave; /* 27 DC280 */
59     char cameraID[32]; /* 28-59 */
60     uint16_t remPictLow; /* 60-61 BE */
61     uint16_t remPictMed; /* 62-63 BE */
62     uint16_t remPictHigh; /* 64-65 BE */
63     uint16_t totalPictTaken; /* 66-67 BE */
64     uint16_t totalStrobeFired; /* 68-69 BE */
65     uint8_t langType; /* 70 DC280 */
66     uint8_t beep; /* 71 */
67 
68     uint8_t fileType; /* 78 */
69     uint8_t pictSize; /* 79 */
70     uint8_t imgQuality; /* 80 */
71     uint8_t ipChainDisable; /* 81 */ /* ????? what does that mean reserved on DC280 */
72     uint8_t imageIncomplete; /* 82 */
73     uint8_t timerMode; /* 83 */
74 
75     uint16_t year; /* 88-89 BE */
76     uint8_t month; /* 90 */
77     uint8_t day; /* 91 */
78     uint8_t hour; /* 92 */
79     uint8_t minute; /* 93 */
80     uint8_t second; /* 94 */
81     uint8_t tenmSec; /* 95 */
82 
83     uint8_t strobeMode; /* 97 */
84     uint16_t exposureComp; /* 98-99 BE see note */
85     uint8_t aeMode; /* 100 */
86     uint8_t focusMode; /* 101 */
87     uint8_t afMode; /* 102 */
88     uint8_t awbMode; /* 103 */
89     uint32_t zoomMag; /* 104-107 BE see doc */
90 
91     uint8_t exposureMode; /* 129 */
92 
93     uint8_t sharpControl; /* 131 */
94     uint32_t expTime; /* 132-135 BE */
95     uint16_t fValue; /* 136-137 BE */
96     uint8_t imageEffect; /* 138 */
97     uint8_t dateTimeStamp; /* 139 */
98     char borderFileName [11]; /* 140-151 */
99     uint8_t exposureLock; /* 152 */
100     uint8_t isoMode; /* 153 DC280 */
101 } DC240StatusTable;
102 
103 
104 int   dc240_open         (Camera *camera);
105 int   dc240_close        (Camera *camera, GPContext *context);
106 
107 int   dc240_set_speed    (Camera *camera, int speed);
108 
109 int   dc240_get_status (Camera *camera, DC240StatusTable *table,
110 			GPContext *context);
111 
112 int   dc240_get_directory_list (Camera *camera, CameraList *list, const char *folder,
113      unsigned char attrib, GPContext *context);
114 
115 
116 int   dc240_file_action	 (Camera *camera, int action, CameraFile *file,
117                           const char *folder, const char *filename,
118 			  GPContext *context);
119 
120 int   dc240_capture	 (Camera *camera, CameraFilePath *path,
121 			  GPContext *context);
122 int   dc240_packet_set_size (Camera *camera, short int size);
123 
124 #endif /*__DC240_LIBRARY_H__*/
125