title: Strobe signal output on Pointgrey Firefly MV using libdc1394
body: <p>I am using a Pointgrey Firefly MV (FFMV-03M2M/C to be precise) and want to trigger some external device with every shutter start. According to <a href="http://www.ptgrey.com/products/fireflymv/fireflymv.pdf" rel="nofollow">the datasheet</a>, the camera supports IIDC 1.31 and also provides four GPIOs usable as a trigger and/or strobe signal outputs. As described in section 4.11.3 of the <a href="http://damien.douxchamps.net/ieee1394/libdc1394/iidc/IIDC_1.31.pdf" rel="nofollow">IIDC standard</a> it should be possible to configure those strobe signal outputs using IIDC. </p>
  
  <p>My application is implemented in C++ and uses <a href="http://damien.douxchamps.net/ieee1394/libdc1394/" rel="nofollow">libdc1394</a> to access and control the camera. So far, everything works quite nicely, but I cannot manage to configure the strobe signal outputs. As far as I understand libdc and IIDC it should be possible to enable the first output as follows (<code>camera</code> is a pointer to a valid <code>dc1394camera_t</code>):</p>
  
  <pre><code>dc1394error_t err;
  uint64_t strobe_offset = 0x200;
  uint32_t strobe_settings = 0;
  
  err = dc1394_get_strobe_register(camera, strobe_offset, &amp;strobe_settings);
  if (err == DC1394_SUCCESS) {
      /* Set bits 6 (strobe on) and 7 (active-high level)
         IIDC uses msb 0, so we need to shift by 25/24 instead of 6/7 */
      strobe_settings = strobe_settings | (1 &lt;&lt; 25) | (1 &lt;&lt; 24);
  
      err = dc1394_set_strobe_register(camera, strobe_offset, strobe_settings);
  
  }
  
  if (err != DC1394_SUCCESS) {
      log(LOG_ERROR, "Failed to set strobe.");
  }
  </code></pre>
  
  <p>This does not generate any errors, but it also does not turn on the strobe signal output (even though the camera is capturing frames). I also tried all the other outputs by using a different offset (0x204, 0x208 and 0x20C) but to no avail. Then I checked all the availability inquiry fields at <code>Strobe_CTRL_Inq</code> and <code>Strobe_[0123]_Inq</code> but they all report that the strobe signal outputs are present. But interestingly, the <code>On/Off_Inq</code> field in <code>Strobe_[0123]_Inq</code> tells me that it is not possible to switch the output on or off while the <code>Polarity_Inq</code> tells me that I could change the polarity setting (which I actually can't because you can only change settings when the strobe signal output is switched on). I tried configuring the outputs using the windows based driver utility provided by Pointgrey and there it works without any problems.</p>
  
  <p>Any ideas what I might be doing wrong? Or is this camera not IIDC compatible in this regard?</p>
  
  <p>Update: Ok, I tried three ways to enable the strobe output: Using my orignal code, using the absolute offset 0x1300 as suggested in the answer and using the offset 0x1110/0x1114 as written in the PointGrey register reference manual. I also tried setting delays, durations and/or directions (even though PIOs are not to be confused with the strobe outputs). No combination of registers and flags works so far. Maybe it is a bug in libdc1394 or PointGrey does some other magic in their proprietary driver. For now I give up and will try to find a different solution for triggering an external device.</p>