@@ -55,14 +55,16 @@ int freenect_set_flag(freenect_device *dev, freenect_flag flag, freenect_flag_va
55
55
return write_register (dev , reg , value );
56
56
}
57
57
58
- uint16_t reg = read_cmos_register (dev , 0x0106 );
59
- if (reg == UINT16_MAX )
58
+ uint16_t cmos_value = read_cmos_register (dev , 0x0106 );
59
+ if (cmos_value == UINT16_MAX )
60
+ {
60
61
return -1 ;
62
+ }
61
63
if (value == FREENECT_ON )
62
- reg |= flag ;
64
+ cmos_value |= flag ;
63
65
else
64
- reg &= ~flag ;
65
- return write_cmos_register (dev , 0x0106 , reg );
66
+ cmos_value &= ~flag ;
67
+ return write_cmos_register (dev , 0x0106 , cmos_value );
66
68
}
67
69
68
70
typedef struct {
@@ -145,11 +147,10 @@ FN_INTERNAL int send_cmd(freenect_device *dev, uint16_t cmd, void *cmdbuf, unsig
145
147
FN_INTERNAL uint16_t read_register (freenect_device * dev , uint16_t reg )
146
148
{
147
149
freenect_context * ctx = dev -> parent ;
148
-
150
+
149
151
uint16_t reply [2 ];
150
152
uint16_t cmd = fn_le16 (reg );
151
-
152
- FN_DEBUG ("read_register: 0x%04x =>\n" , reg );
153
+
153
154
int res = send_cmd (dev , 0x02 , & cmd , 2 , reply , 4 );
154
155
if (res < 0 )
155
156
{
@@ -159,6 +160,7 @@ FN_INTERNAL uint16_t read_register(freenect_device *dev, uint16_t reg)
159
160
if (res != 4 )
160
161
FN_WARNING ("read_register: send_cmd() returned %d [%04x %04x], 0000 expected\n" , res , reply [0 ], reply [1 ]);
161
162
163
+ FN_DEBUG ("read_register: 0x%04x => 0x%04x\n" , reg , reply [1 ]);
162
164
return reply [1 ];
163
165
}
164
166
@@ -180,7 +182,7 @@ FN_INTERNAL int write_register(freenect_device *dev, uint16_t reg, uint16_t data
180
182
}
181
183
if (res != 2 )
182
184
FN_WARNING ("write_register: send_cmd() returned %d [%04x %04x], 0000 expected\n" , res , reply [0 ], reply [1 ]);
183
-
185
+
184
186
return 0 ;
185
187
}
186
188
@@ -190,18 +192,19 @@ FN_INTERNAL uint16_t read_cmos_register(freenect_device *dev, uint16_t reg)
190
192
freenect_context * ctx = dev -> parent ;
191
193
uint16_t replybuf [0x200 ];
192
194
uint16_t cmdbuf [3 ];
193
-
195
+
194
196
cmdbuf [0 ] = 1 ;
195
197
cmdbuf [1 ] = reg & 0x7fff ;
196
198
cmdbuf [2 ] = 0 ;
197
-
198
- FN_DEBUG ("read_cmos_register: 0x%04x =>\n" , reg );
199
+
199
200
int res = send_cmd (dev , 0x95 , cmdbuf , 6 , replybuf , 6 );
200
201
if (res < 0 )
201
202
{
202
203
FN_ERROR ("read_cmos_register: send_cmd() returned %d\n" , res );
203
204
return UINT16_MAX ;
204
205
}
206
+
207
+ FN_DEBUG ("read_cmos_register: 0x%04x => 0x%04x\n" , reg , replybuf [2 ]);
205
208
return replybuf [2 ];
206
209
}
207
210
@@ -210,11 +213,11 @@ FN_INTERNAL int write_cmos_register(freenect_device *dev, uint16_t reg, uint16_t
210
213
freenect_context * ctx = dev -> parent ;
211
214
uint16_t replybuf [0x200 ];
212
215
uint16_t cmdbuf [3 ];
213
-
216
+
214
217
cmdbuf [0 ] = 1 ;
215
218
cmdbuf [1 ] = reg | 0x8000 ;
216
219
cmdbuf [2 ] = value ;
217
-
220
+
218
221
FN_DEBUG ("write_cmos_register: 0x%04x <= 0x%02x\n" , reg , value );
219
222
int res = send_cmd (dev , 0x95 , cmdbuf , 6 , replybuf , 6 );
220
223
if (res < 0 )
0 commit comments