34 |
34 |
// WARNING: Please update firewiredevice.cpp when adding to this list.
|
35 |
35 |
|
36 |
36 |
#define DCH3200_VENDOR_ID1 0x00001c11
|
|
37 |
#define DCH3200_VENDOR_ID2 0x00001cfb
|
|
38 |
#define DCH3200_VENDOR_ID3 0x00001fc4
|
|
39 |
#define DCH3200_VENDOR_ID4 0x000023a3
|
37 |
40 |
#define DCH3200_MODEL_ID1 0x0000d330
|
38 |
41 |
|
|
42 |
#define DCH3416_VENDOR_ID1 0x00001e46
|
|
43 |
#define DCH3416_MODEL_ID1 0x0000b630
|
|
44 |
|
39 |
45 |
#define DCT3412_VENDOR_ID1 0x0000159a
|
40 |
46 |
#define DCT3412_MODEL_ID1 0x000034cb
|
41 |
47 |
|
... | ... | |
62 |
68 |
#define DCT6200_VENDOR_ID13 0x00001aad
|
63 |
69 |
#define DCT6200_VENDOR_ID14 0x00000b06
|
64 |
70 |
#define DCT6200_VENDOR_ID15 0x0000195e
|
|
71 |
#define DCT6200_VENDOR_ID16 0x000010dc
|
65 |
72 |
#define DCT6200_SPEC_ID 0x00005068
|
66 |
73 |
#define DCT6200_SW_VERSION 0x00010101
|
67 |
74 |
#define DCT6200_MODEL_ID1 0x0000620a
|
... | ... | |
76 |
83 |
#define DCT6416_VENDOR_ID2 0x00001a66
|
77 |
84 |
#define DCT6416_MODEL_ID1 0x0000646b
|
78 |
85 |
|
|
86 |
#define QIP7100_VENDOR_ID1 0x00002374
|
|
87 |
#define QIP7100_MODEL_ID1 0x00008100
|
|
88 |
#define QIP7100_MODEL_ID2 0x00000001
|
|
89 |
|
|
90 |
#define QIP6200_VENDOR_ID1 0x0000211e
|
|
91 |
#define QIP6200_MODEL_ID1 0x00007100
|
|
92 |
|
|
93 |
#define MOT_UNKNOWN_VENDOR_ID1 0x04db
|
|
94 |
#define MOT_UNKNOWN_VENDOR_ID2 0x0406
|
|
95 |
#define MOT_UNKNOWN_VENDOR_ID3 0x0ce5
|
|
96 |
#define MOT_UNKNOWN_VENDOR_ID4 0x111a
|
|
97 |
#define MOT_UNKNOWN_VENDOR_ID5 0x1225
|
|
98 |
#define MOT_UNKNOWN_VENDOR_ID6 0x1404
|
|
99 |
#define MOT_UNKNOWN_VENDOR_ID7 0x1626
|
|
100 |
#define MOT_UNKNOWN_VENDOR_ID8 0x18c0
|
|
101 |
#define MOT_UNKNOWN_VENDOR_ID9 0x1ade
|
|
102 |
#define MOT_UNKNOWN_VENDOR_ID10 0x1cfb
|
|
103 |
#define MOT_UNKNOWN_VENDOR_ID11 0x2040
|
|
104 |
#define MOT_UNKNOWN_VENDOR_ID12 0x2180
|
|
105 |
#define MOT_UNKNOWN_VENDOR_ID13 0x2210
|
|
106 |
#define MOT_UNKNOWN_VENDOR_ID14 0x230b
|
|
107 |
#define MOT_UNKNOWN_VENDOR_ID15 0x2375
|
|
108 |
#define MOT_UNKNOWN_VENDOR_ID16 0x2395
|
|
109 |
#define MOT_UNKNOWN_VENDOR_ID17 0x23a2
|
|
110 |
#define MOT_UNKNOWN_VENDOR_ID18 0x23ed
|
|
111 |
#define MOT_UNKNOWN_VENDOR_ID19 0x23ee
|
|
112 |
#define MOT_UNKNOWN_VENDOR_ID20 0x23a0
|
|
113 |
#define MOT_UNKNOWN_VENDOR_ID21 0x23a1
|
|
114 |
|
79 |
115 |
#define PACE_VENDOR_ID1 0x00005094 /* 550 & 779 */
|
|
116 |
#define PACE_VENDOR_ID2 0x00005094 /* unknown */
|
80 |
117 |
#define PACE550_MODEL_ID1 0x00010551
|
81 |
118 |
#define PACE779_MODEL_ID1 0x00010755
|
82 |
119 |
|
... | ... | |
92 |
129 |
#define RETRY_COUNT_FAST 0
|
93 |
130 |
|
94 |
131 |
void set_chan_slow(raw1394handle_t handle, int device, int verbose, int chn);
|
|
132 |
void set_chan_slow_four_digit(raw1394handle_t handle, int device, int verbose, int chn);
|
95 |
133 |
void set_chan_fast(raw1394handle_t handle, int device, int verbose, int chn);
|
96 |
134 |
|
97 |
135 |
void usage()
|
... | ... | |
120 |
158 |
octlet_t node_GUID=0LL;
|
121 |
159 |
quadlet_t cmd[2];
|
122 |
160 |
int chn = 550;
|
|
161 |
int use_four_channel = 0;
|
123 |
162 |
|
124 |
163 |
/* some people experience crashes when starting on node 1 */
|
125 |
164 |
int starting_node = STARTING_NODE;
|
... | ... | |
151 |
190 |
case 'p':
|
152 |
191 |
starting_port = atoi(optarg);
|
153 |
192 |
break;
|
|
193 |
case '4':
|
|
194 |
use_four_channel = 1;
|
|
195 |
break;
|
154 |
196 |
default:
|
155 |
197 |
fprintf(stderr, "incorrect command line arguments\n");
|
156 |
198 |
usage();
|
... | ... | |
161 |
203 |
if (optind != argc-1) {
|
162 |
204 |
usage();
|
163 |
205 |
}
|
|
206 |
|
|
207 |
if (single_packet && use_four_channel) {
|
|
208 |
fprintf(stderr, "Can't use both -s and -4 together.\n");
|
|
209 |
usage();
|
|
210 |
}
|
|
211 |
|
164 |
212 |
/* the last argument is the channel number */
|
165 |
213 |
chn = atoi(argv[optind]);
|
166 |
214 |
|
... | ... | |
172 |
220 |
|
173 |
221 |
if (!handle) {
|
174 |
222 |
if (!errno) {
|
175 |
|
fprintf(stderr, "Not Compatable!\n");
|
|
223 |
fprintf(stderr, "Not Compatible!\n");
|
176 |
224 |
} else {
|
177 |
225 |
perror("Couldn't get 1394 handle");
|
178 |
226 |
fprintf(stderr, "Is ieee1394, driver, and raw1394 loaded?\n");
|
... | ... | |
219 |
267 |
|
220 |
268 |
// WARNING: Please update firewiredevice.cpp when adding to this list.
|
221 |
269 |
if ( ((dir.vendor_id == DCH3200_VENDOR_ID1) ||
|
222 |
|
(dir.vendor_id == DCT3412_VENDOR_ID1) ||
|
223 |
|
(dir.vendor_id == DCT3416_VENDOR_ID1) ||
|
224 |
|
(dir.vendor_id == DCT3416_VENDOR_ID2) ||
|
|
270 |
(dir.vendor_id == DCH3200_VENDOR_ID2) ||
|
|
271 |
(dir.vendor_id == DCH3200_VENDOR_ID3) ||
|
|
272 |
(dir.vendor_id == DCH3200_VENDOR_ID4) ||
|
|
273 |
(dir.vendor_id == DCH3416_VENDOR_ID1) ||
|
|
274 |
(dir.vendor_id == DCT3412_VENDOR_ID1) ||
|
|
275 |
(dir.vendor_id == DCT3416_VENDOR_ID1) ||
|
|
276 |
(dir.vendor_id == DCT3416_VENDOR_ID2) ||
|
225 |
277 |
(dir.vendor_id == DCT5100_VENDOR_ID1) ||
|
226 |
278 |
(dir.vendor_id == DCT6200_VENDOR_ID1) ||
|
227 |
279 |
(dir.vendor_id == DCT6200_VENDOR_ID2) ||
|
... | ... | |
238 |
290 |
(dir.vendor_id == DCT6200_VENDOR_ID13) ||
|
239 |
291 |
(dir.vendor_id == DCT6200_VENDOR_ID14) ||
|
240 |
292 |
(dir.vendor_id == DCT6200_VENDOR_ID15) ||
|
|
293 |
(dir.vendor_id == DCT6200_VENDOR_ID16) ||
|
241 |
294 |
(dir.vendor_id == DCT6412_VENDOR_ID1) ||
|
242 |
295 |
(dir.vendor_id == DCT6412_VENDOR_ID2) ||
|
243 |
|
(dir.vendor_id == DCT6416_VENDOR_ID1) ||
|
|
296 |
(dir.vendor_id == DCT6416_VENDOR_ID1) ||
|
244 |
297 |
(dir.vendor_id == DCT6416_VENDOR_ID2) ||
|
245 |
|
(dir.vendor_id == PACE_VENDOR_ID1)) &&
|
|
298 |
(dir.vendor_id == QIP7100_VENDOR_ID1) ||
|
|
299 |
(dir.vendor_id == QIP6200_VENDOR_ID1) ||
|
|
300 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID1) ||
|
|
301 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID2) ||
|
|
302 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID3) ||
|
|
303 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID4) ||
|
|
304 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID5) ||
|
|
305 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID6) ||
|
|
306 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID7) ||
|
|
307 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID8) ||
|
|
308 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID9) ||
|
|
309 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID10) ||
|
|
310 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID11) ||
|
|
311 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID12) ||
|
|
312 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID13) ||
|
|
313 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID14) ||
|
|
314 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID15) ||
|
|
315 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID16) ||
|
|
316 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID17) ||
|
|
317 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID18) ||
|
|
318 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID19) ||
|
|
319 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID20) ||
|
|
320 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID21) ||
|
|
321 |
(dir.vendor_id == PACE_VENDOR_ID1) ||
|
|
322 |
(dir.vendor_id == PACE_VENDOR_ID2)) &&
|
246 |
323 |
((dir.model_id == DCH3200_MODEL_ID1) ||
|
|
324 |
(dir.model_id == DCH3416_MODEL_ID1) ||
|
247 |
325 |
(dir.model_id == DCT3412_MODEL_ID1) ||
|
248 |
326 |
(dir.model_id == DCT3416_MODEL_ID1) ||
|
249 |
327 |
(dir.model_id == DCT3416_MODEL_ID2) ||
|
... | ... | |
253 |
331 |
(dir.model_id == DCT6412_MODEL_ID1) ||
|
254 |
332 |
(dir.model_id == DCT6412_MODEL_ID2) ||
|
255 |
333 |
(dir.model_id == DCT6416_MODEL_ID1) ||
|
|
334 |
(dir.model_id == QIP7100_MODEL_ID1) ||
|
|
335 |
(dir.model_id == QIP7100_MODEL_ID2) ||
|
|
336 |
(dir.model_id == QIP6200_MODEL_ID1) ||
|
256 |
337 |
(dir.model_id == PACE550_MODEL_ID1) ||
|
257 |
338 |
(dir.model_id == PACE779_MODEL_ID1)) )
|
258 |
339 |
{
|
... | ... | |
274 |
355 |
if (single_packet)
|
275 |
356 |
set_chan_fast(handle, device, verbose, chn);
|
276 |
357 |
else
|
|
358 |
if (use_four_channel)
|
|
359 |
set_chan_slow_four_digit(handle, device, verbose, chn);
|
|
360 |
else
|
277 |
361 |
set_chan_slow(handle, device, verbose, chn);
|
278 |
362 |
|
279 |
363 |
raw1394_destroy_handle(handle);
|
... | ... | |
304 |
388 |
}
|
305 |
389 |
}
|
306 |
390 |
|
|
391 |
// Same as set_chan_slow(), but sends 4 digits instead of 3 (for quicker channel changes on QIP6200-2/QIP7100-1)
|
|
392 |
void set_chan_slow_four_digit(raw1394handle_t handle, int device, int verbose, int chn)
|
|
393 |
{
|
|
394 |
int i;
|
|
395 |
int dig[4];
|
|
396 |
quadlet_t cmd[2];
|
|
397 |
|
|
398 |
if (verbose)
|
|
399 |
printf("chn: %d\n", chn);
|
|
400 |
|
|
401 |
dig[3] = (chn % 10);
|
|
402 |
dig[2] = (chn % 100) / 10;
|
|
403 |
dig[1] = (chn % 1000) / 100;
|
|
404 |
dig[0] = (chn % 10000) / 1000;
|
|
405 |
|
|
406 |
if (verbose)
|
|
407 |
printf("AV/C Command: %d%d%d = Op1=0x%08X Op2=0x%08X Op3=0x%08X Op4=0x%08X\n",
|
|
408 |
dig[0], dig[1], dig[2], dig[3],
|
|
409 |
CTL_CMD0 | dig[0], CTL_CMD0 | dig[1], CTL_CMD0 | dig[2]);
|
|
410 |
|
|
411 |
for (i=0; i<4; i++) {
|
|
412 |
if (verbose)
|
|
413 |
printf("Sending digit %d\n", dig[i]);
|
|
414 |
cmd[0] = CTL_CMD0 | dig[i];
|
|
415 |
cmd[1] = 0x0;
|
|
416 |
|
|
417 |
avc1394_transaction_block(handle, device, cmd, 2, RETRY_COUNT_SLOW);
|
|
418 |
usleep(500000); // small delay for button to register
|
|
419 |
}
|
|
420 |
}
|
|
421 |
|
307 |
422 |
void set_chan_fast(raw1394handle_t handle, int device, int verbose, int chn)
|
308 |
423 |
{
|
309 |
424 |
quadlet_t cmd[3];
|