1 /*
2  * 1394-Based Digital Camera Control Library
3  *
4  * Low-level register access functions
5  *
6  * Written by Damien Douxchamps <ddouxchamps@users.sf.net>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  */
22 
23 #ifndef __DC1394_REGISTER_H__
24 #define __DC1394_REGISTER_H__
25 
26 /*! \file dc1394/register.h
27     \brief Functions to directly access camera registers.
28     \author Damien Douxchamps: coding
29     \author Peter Antoniac: documentation maintainer
30 
31     More details soon
32 */
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 /**
39  * No Docs
40  */
41 dc1394error_t dc1394_get_registers (dc1394camera_t *camera,
42         uint64_t offset, uint32_t *value, uint32_t num_regs);
43 
44 /**
45  * No Docs
46  */
dc1394_get_register(dc1394camera_t * camera,uint64_t offset,uint32_t * value)47 static inline dc1394error_t dc1394_get_register (dc1394camera_t *camera,
48         uint64_t offset, uint32_t *value)
49 {
50     return dc1394_get_registers (camera, offset, value, 1);
51 }
52 
53 /**
54  * No Docs
55  */
56 dc1394error_t dc1394_set_registers (dc1394camera_t *camera,
57         uint64_t offset, const uint32_t *value, uint32_t num_regs);
58 
59 /**
60  * No Docs
61  */
dc1394_set_register(dc1394camera_t * camera,uint64_t offset,uint32_t value)62 static inline dc1394error_t dc1394_set_register (dc1394camera_t *camera,
63                                                  uint64_t offset, uint32_t value)
64 {
65     return dc1394_set_registers (camera, offset, &value, 1);
66 }
67 
68 
69 /********************************************************************************/
70 /* Get/Set Command Registers                                                    */
71 /********************************************************************************/
72 
73 /**
74  * No Docs
75  */
76 dc1394error_t dc1394_get_control_registers (dc1394camera_t *camera,
77     uint64_t offset, uint32_t *value, uint32_t num_regs);
78 
79 /**
80  * No Docs
81  */
dc1394_get_control_register(dc1394camera_t * camera,uint64_t offset,uint32_t * value)82 static inline dc1394error_t dc1394_get_control_register (dc1394camera_t *camera,
83     uint64_t offset, uint32_t *value)
84 {
85     return dc1394_get_control_registers (camera, offset, value, 1);
86 }
87 
88 /**
89  * No Docs
90  */
91 dc1394error_t dc1394_set_control_registers (dc1394camera_t *camera,
92         uint64_t offset, const uint32_t *value, uint32_t num_regs);
93 
94 /**
95  * No Docs
96  */
dc1394_set_control_register(dc1394camera_t * camera,uint64_t offset,uint32_t value)97 static inline dc1394error_t dc1394_set_control_register (dc1394camera_t *camera,
98     uint64_t offset, uint32_t value)
99 {
100     return dc1394_set_control_registers (camera, offset, &value, 1);
101 }
102 
103 
104 /********************************************************************************/
105 /* Get/Set Advanced Features Registers                                          */
106 /********************************************************************************/
107 
108 /**
109  * No Docs
110  */
111 dc1394error_t
112 dc1394_get_adv_control_registers(dc1394camera_t *camera, uint64_t offset, uint32_t *value, uint32_t num_regs);
113 
114 /**
115  * No Docs
116  */
117 static inline dc1394error_t
dc1394_get_adv_control_register(dc1394camera_t * camera,uint64_t offset,uint32_t * value)118 dc1394_get_adv_control_register(dc1394camera_t *camera, uint64_t offset, uint32_t *value)
119 {
120     return dc1394_get_adv_control_registers(camera, offset, value, 1);
121 }
122 
123 /**
124  * No Docs
125  */
126 dc1394error_t
127 dc1394_set_adv_control_registers(dc1394camera_t *camera, uint64_t offset,
128         const uint32_t *value, uint32_t num_regs);
129 
130 /**
131  * No Docs
132  */
133 static inline dc1394error_t
dc1394_set_adv_control_register(dc1394camera_t * camera,uint64_t offset,uint32_t value)134 dc1394_set_adv_control_register(dc1394camera_t *camera, uint64_t offset, uint32_t value)
135 {
136     return dc1394_set_adv_control_registers(camera, offset, &value, 1);
137 }
138 
139 
140 /********************************************************************************/
141 /* Get/Set Format_7 Registers                                                   */
142 /********************************************************************************/
143 
144 /**
145  * No Docs
146  */
147 dc1394error_t
148 dc1394_get_format7_register(dc1394camera_t *camera, unsigned int mode, uint64_t offset, uint32_t *value);
149 
150 /**
151  * No Docs
152  */
153 dc1394error_t
154 dc1394_set_format7_register(dc1394camera_t *camera, unsigned int mode, uint64_t offset, uint32_t value);
155 
156 
157 /********************************************************************************/
158 /* Get/Set Absolute Control Registers                                           */
159 /********************************************************************************/
160 
161 /**
162  * No Docs
163  */
164 dc1394error_t
165 dc1394_get_absolute_register(dc1394camera_t *camera, unsigned int feature, uint64_t offset, uint32_t *value);
166 
167 /**
168  * No Docs
169  */
170 dc1394error_t
171 dc1394_set_absolute_register(dc1394camera_t *camera, unsigned int feature, uint64_t offset, uint32_t value);
172 
173 
174 /********************************************************************************/
175 /* Get/Set PIO Feature Registers                                                */
176 /********************************************************************************/
177 
178 /**
179  * No Docs
180  */
181 dc1394error_t
182 dc1394_get_PIO_register(dc1394camera_t *camera, uint64_t offset, uint32_t *value);
183 
184 /**
185  * No Docs
186  */
187 dc1394error_t
188 dc1394_set_PIO_register(dc1394camera_t *camera, uint64_t offset, uint32_t value);
189 
190 
191 /********************************************************************************/
192 /* Get/Set SIO Feature Registers                                                */
193 /********************************************************************************/
194 
195 /**
196  * No Docs
197  */
198 dc1394error_t
199 dc1394_get_SIO_register(dc1394camera_t *camera, uint64_t offset, uint32_t *value);
200 
201 /**
202  * No Docs
203  */
204 dc1394error_t
205 dc1394_set_SIO_register(dc1394camera_t *camera, uint64_t offset, uint32_t value);
206 
207 
208 /********************************************************************************/
209 /* Get/Set Strobe Feature Registers                                             */
210 /********************************************************************************/
211 
212 /**
213  * No Docs
214  */
215 dc1394error_t
216 dc1394_get_strobe_register(dc1394camera_t *camera, uint64_t offset, uint32_t *value);
217 
218 /**
219  * No Docs
220  */
221 dc1394error_t
222 dc1394_set_strobe_register(dc1394camera_t *camera, uint64_t offset, uint32_t value);
223 
224 
225 #ifdef __cplusplus
226 }
227 #endif
228 
229 #endif /* __DC1394_REGISTER_H__ */
230