| 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];
|