6200ch.c.patch

admin, 09/03/2009 12:23 pm

Download (8.4 kB)

 
contrib/channel_changers/6200ch.c 2009-09-03 06:57:54.199977816 +0000
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];