@@ -55,14 +55,16 @@ int freenect_set_flag(freenect_device *dev, freenect_flag flag, freenect_flag_va
5555 return write_register (dev , reg , value );
5656 }
5757
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+ {
6061 return -1 ;
62+ }
6163 if (value == FREENECT_ON )
62- reg |= flag ;
64+ cmos_value |= flag ;
6365 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 );
6668}
6769
6870typedef struct {
@@ -145,11 +147,10 @@ FN_INTERNAL int send_cmd(freenect_device *dev, uint16_t cmd, void *cmdbuf, unsig
145147FN_INTERNAL uint16_t read_register (freenect_device * dev , uint16_t reg )
146148{
147149 freenect_context * ctx = dev -> parent ;
148-
150+
149151 uint16_t reply [2 ];
150152 uint16_t cmd = fn_le16 (reg );
151-
152- FN_DEBUG ("read_register: 0x%04x =>\n" , reg );
153+
153154 int res = send_cmd (dev , 0x02 , & cmd , 2 , reply , 4 );
154155 if (res < 0 )
155156 {
@@ -159,6 +160,7 @@ FN_INTERNAL uint16_t read_register(freenect_device *dev, uint16_t reg)
159160 if (res != 4 )
160161 FN_WARNING ("read_register: send_cmd() returned %d [%04x %04x], 0000 expected\n" , res , reply [0 ], reply [1 ]);
161162
163+ FN_DEBUG ("read_register: 0x%04x => 0x%04x\n" , reg , reply [1 ]);
162164 return reply [1 ];
163165}
164166
@@ -180,7 +182,7 @@ FN_INTERNAL int write_register(freenect_device *dev, uint16_t reg, uint16_t data
180182 }
181183 if (res != 2 )
182184 FN_WARNING ("write_register: send_cmd() returned %d [%04x %04x], 0000 expected\n" , res , reply [0 ], reply [1 ]);
183-
185+
184186 return 0 ;
185187}
186188
@@ -190,18 +192,19 @@ FN_INTERNAL uint16_t read_cmos_register(freenect_device *dev, uint16_t reg)
190192 freenect_context * ctx = dev -> parent ;
191193 uint16_t replybuf [0x200 ];
192194 uint16_t cmdbuf [3 ];
193-
195+
194196 cmdbuf [0 ] = 1 ;
195197 cmdbuf [1 ] = reg & 0x7fff ;
196198 cmdbuf [2 ] = 0 ;
197-
198- FN_DEBUG ("read_cmos_register: 0x%04x =>\n" , reg );
199+
199200 int res = send_cmd (dev , 0x95 , cmdbuf , 6 , replybuf , 6 );
200201 if (res < 0 )
201202 {
202203 FN_ERROR ("read_cmos_register: send_cmd() returned %d\n" , res );
203204 return UINT16_MAX ;
204205 }
206+
207+ FN_DEBUG ("read_cmos_register: 0x%04x => 0x%04x\n" , reg , replybuf [2 ]);
205208 return replybuf [2 ];
206209}
207210
@@ -210,11 +213,11 @@ FN_INTERNAL int write_cmos_register(freenect_device *dev, uint16_t reg, uint16_t
210213 freenect_context * ctx = dev -> parent ;
211214 uint16_t replybuf [0x200 ];
212215 uint16_t cmdbuf [3 ];
213-
216+
214217 cmdbuf [0 ] = 1 ;
215218 cmdbuf [1 ] = reg | 0x8000 ;
216219 cmdbuf [2 ] = value ;
217-
220+
218221 FN_DEBUG ("write_cmos_register: 0x%04x <= 0x%02x\n" , reg , value );
219222 int res = send_cmd (dev , 0x95 , cmdbuf , 6 , replybuf , 6 );
220223 if (res < 0 )
0 commit comments