88 |
88 |
#define QIP7100_MODEL_ID1 0x00008100
|
89 |
89 |
#define QIP7100_MODEL_ID2 0x00000001
|
90 |
90 |
|
|
91 |
#define QIP6200_VENDOR_ID1 0x0000211e
|
|
92 |
#define QIP6200_MODEL_ID1 0x00007100
|
|
93 |
|
91 |
94 |
#define MOT_UNKNOWN_VENDOR_ID1 0x04db
|
92 |
95 |
#define MOT_UNKNOWN_VENDOR_ID2 0x0406
|
93 |
96 |
#define MOT_UNKNOWN_VENDOR_ID3 0x0ce5
|
... | ... | |
99 |
102 |
#define MOT_UNKNOWN_VENDOR_ID9 0x1ade
|
100 |
103 |
#define MOT_UNKNOWN_VENDOR_ID10 0x1cfb
|
101 |
104 |
#define MOT_UNKNOWN_VENDOR_ID11 0x2040
|
102 |
|
#define MOT_UNKNOWN_VENDOR_ID12 0x211e
|
103 |
|
#define MOT_UNKNOWN_VENDOR_ID13 0x2180
|
104 |
|
#define MOT_UNKNOWN_VENDOR_ID14 0x2210
|
105 |
|
#define MOT_UNKNOWN_VENDOR_ID15 0x230b
|
106 |
|
#define MOT_UNKNOWN_VENDOR_ID16 0x2375
|
107 |
|
#define MOT_UNKNOWN_VENDOR_ID17 0x2395
|
108 |
|
#define MOT_UNKNOWN_VENDOR_ID18 0x23a2
|
109 |
|
#define MOT_UNKNOWN_VENDOR_ID19 0x23ed
|
110 |
|
#define MOT_UNKNOWN_VENDOR_ID20 0x23ee
|
111 |
|
#define MOT_UNKNOWN_VENDOR_ID21 0x23a0
|
112 |
|
#define MOT_UNKNOWN_VENDOR_ID22 0x23a1
|
|
105 |
#define MOT_UNKNOWN_VENDOR_ID12 0x2180
|
|
106 |
#define MOT_UNKNOWN_VENDOR_ID13 0x2210
|
|
107 |
#define MOT_UNKNOWN_VENDOR_ID14 0x230b
|
|
108 |
#define MOT_UNKNOWN_VENDOR_ID15 0x2375
|
|
109 |
#define MOT_UNKNOWN_VENDOR_ID16 0x2395
|
|
110 |
#define MOT_UNKNOWN_VENDOR_ID17 0x23a2
|
|
111 |
#define MOT_UNKNOWN_VENDOR_ID18 0x23ed
|
|
112 |
#define MOT_UNKNOWN_VENDOR_ID19 0x23ee
|
|
113 |
#define MOT_UNKNOWN_VENDOR_ID20 0x23a0
|
|
114 |
#define MOT_UNKNOWN_VENDOR_ID21 0x23a1
|
113 |
115 |
|
114 |
116 |
#define PACE_VENDOR_ID1 0x00005094 /* 550 & 779 */
|
115 |
117 |
#define PACE_VENDOR_ID2 0x00005094 /* unknown */
|
... | ... | |
128 |
130 |
#define RETRY_COUNT_FAST 0
|
129 |
131 |
|
130 |
132 |
void set_chan_slow(raw1394handle_t handle, int device, int verbose, int chn);
|
|
133 |
void set_chan_slow_four_digit(raw1394handle_t handle, int device, int verbose, int chn);
|
131 |
134 |
void set_chan_fast(raw1394handle_t handle, int device, int verbose, int chn);
|
132 |
135 |
void set_power_fast(raw1394handle_t handle, int device, int verbose);
|
133 |
136 |
|
... | ... | |
143 |
146 |
fprintf(stderr, "-p PORT port/adapter to use (default:%i)\n",
|
144 |
147 |
STARTING_PORT);
|
145 |
148 |
fprintf(stderr, "-g GUID GUID to use, -n switch, if present, will be ignored.\n");
|
|
149 |
fprintf(stderr, "-4 Enable 4 digit channel number support.\n");
|
146 |
150 |
exit(1);
|
147 |
151 |
}
|
148 |
152 |
|
... | ... | |
153 |
157 |
int i;
|
154 |
158 |
int verbose = 0;
|
155 |
159 |
int single_packet = 0;
|
|
160 |
int use_four_digit = 0;
|
156 |
161 |
int toggle_power = 0;
|
157 |
162 |
int bGUID=0;
|
158 |
163 |
octlet_t cli_GUID=0LL;
|
... | ... | |
191 |
196 |
case 'p':
|
192 |
197 |
starting_port = atoi(optarg);
|
193 |
198 |
break;
|
|
199 |
case '4':
|
|
200 |
use_four_digit = 1;
|
|
201 |
break;
|
194 |
202 |
default:
|
195 |
203 |
fprintf(stderr, "incorrect command line arguments\n");
|
196 |
204 |
usage();
|
... | ... | |
203 |
211 |
/* the last argument is the channel number */
|
204 |
212 |
chn = atoi(argv[optind]);
|
205 |
213 |
}
|
|
214 |
if (single_packet && use_four_digit) {
|
|
215 |
fprintf(stderr, "Can't use both -s and -4 together.\n");
|
|
216 |
usage();
|
|
217 |
}
|
206 |
218 |
else if (!toggle_power)
|
207 |
219 |
{
|
208 |
220 |
usage();
|
... | ... | |
292 |
304 |
(dir.vendor_id == DCT6416_VENDOR_ID1) ||
|
293 |
305 |
(dir.vendor_id == DCT6416_VENDOR_ID2) ||
|
294 |
306 |
(dir.vendor_id == QIP7100_VENDOR_ID1) ||
|
|
307 |
(dir.vendor_id == QIP6200_VENDOR_ID1) ||
|
295 |
308 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID1) ||
|
296 |
309 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID2) ||
|
297 |
310 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID3) ||
|
... | ... | |
313 |
326 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID19) ||
|
314 |
327 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID20) ||
|
315 |
328 |
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID21) ||
|
316 |
|
(dir.vendor_id == MOT_UNKNOWN_VENDOR_ID22) ||
|
317 |
329 |
(dir.vendor_id == PACE_VENDOR_ID1) ||
|
318 |
330 |
(dir.vendor_id == PACE_VENDOR_ID2)) &&
|
319 |
331 |
((dir.model_id == DCH3200_MODEL_ID1) ||
|
... | ... | |
356 |
368 |
if (single_packet)
|
357 |
369 |
set_chan_fast(handle, device, verbose, chn);
|
358 |
370 |
else
|
|
371 |
if (use_four_digit)
|
|
372 |
set_chan_slow_four_digit(handle, device, verbose, chn);
|
|
373 |
else
|
359 |
374 |
set_chan_slow(handle, device, verbose, chn);
|
360 |
375 |
}
|
361 |
376 |
|
... | ... | |
387 |
402 |
}
|
388 |
403 |
}
|
389 |
404 |
|
|
405 |
// Same as set_chan_slow(), but sends 4 digits instead of 3 (for quicker channel changes on QIP6200-2 / QIP7100-1)
|
|
406 |
void set_chan_slow_four_digit(raw1394handle_t handle, int device, int verbose, int chn)
|
|
407 |
{
|
|
408 |
int i;
|
|
409 |
int dig[4];
|
|
410 |
quadlet_t cmd[2];
|
|
411 |
|
|
412 |
if (verbose)
|
|
413 |
printf("chn: %d\n", chn);
|
|
414 |
|
|
415 |
dig[3] = (chn % 10);
|
|
416 |
dig[2] = (chn % 100) / 10;
|
|
417 |
dig[1] = (chn % 1000) / 100;
|
|
418 |
dig[0] = (chn % 10000) / 1000;
|
|
419 |
|
|
420 |
if (verbose)
|
|
421 |
printf("AV/C Command: %d%d%d = Op1=0x%08X Op2=0x%08X Op3=0x%08X Op4=0x%08X\n",
|
|
422 |
dig[0], dig[1], dig[2], dig[3],
|
|
423 |
CTL_CMD0 | dig[0], CTL_CMD0 | dig[1], CTL_CMD0 | dig[2]);
|
|
424 |
|
|
425 |
for (i=0; i<4; i++) {
|
|
426 |
if (verbose)
|
|
427 |
printf("Sending digit %d\n", dig[i]);
|
|
428 |
cmd[0] = CTL_CMD0 | dig[i];
|
|
429 |
cmd[1] = 0x0;
|
|
430 |
|
|
431 |
avc1394_transaction_block(handle, device, cmd, 2, RETRY_COUNT_SLOW);
|
|
432 |
usleep(500000); // small delay for button to register
|
|
433 |
}
|
|
434 |
}
|
|
435 |
|
390 |
436 |
void set_chan_fast(raw1394handle_t handle, int device, int verbose, int chn)
|
391 |
437 |
{
|
392 |
438 |
quadlet_t cmd[3];
|