SCANIMAGE FILES WITH AOD-RELATED CODE

  • makeMirrorDataOutput()  -- The idds/ConfigChirp() and/or idds/ConfigImage() functions are called here to load the appropriate serial commands to IDDS sequences. The D/A buffers are loaded for clock/trigger commands.
  • makeAndPutDataPark() -- Called at startup, this puts the output values on the D/A channels at their default levels, which is 0V in AOD mode (in contrast to GALVO mode).
  • stopGrab/Focus() --Called by endAcquisition()/endFocus() at end of each mode. These stop the D/A channels in both AOD/GALVO modes. In AOD mode, additionally, a serial command is sent to mask the DDS devices to external triggers/clocks, preparing for next acquisition.
  • startGrab/Focus() -- The appropriate one of idds/startChirp(), idds/startImage(), or idds/startHybrid() are called to send the correct sequence of static clock/trigger samples prior to starting D/A output buffer.
  • scanimage()-- Calls the newly created iddsConfig() function. 
  • setAcquisitionParameters() -- (SUMMARIZE STRATEGY HERE)
  • updatepixelsPerLineVariables() -- Changed to call setAcquisitionParameters() when in AOD mode, as this function now depends on state.acq.pixelsPerLine.
  • makeStripe()/makeFrameByStripes() --  Implement A/D data demultiplexing via dispatch to processAODStripe(), which analyzes data batched into "stripes" (groups of lines)
  • checkConfigSettings() -- Simply ignore these cusp/line delay checks when in AOD mode.

New ScanImage Files

  • iddsConfig() -- Creates an @idds object, which opens the serial ports attached to each DDS device. Also creates @daqmanager named D/A channels for the clock and trigger output signals to be used by the @idds object. These named channels are used strictly for static (i.e. one-at-a-time) updates on this channel.
  • computeTimeMasks() -- Used to compute the "on" (valid data) and "off" (data is invalid--due to AOD delay) periods of the fast scan dimension characterized by a particular scan configuration. For step scans, these are specified per pixel. For ramp scans, these are specified per line. The fill fraction can be  computed from these values directly.
  •  processAODStripe() -- Demultiplexes acquired A/D data batched into "stripes" (groups of lines)

New Library Files

  • lcm_gen() -- A generalized version of the built-in lcm() function that can handle vectorized and non-integer inputs.

State Variables (of interest in AOD Mode)

  • state.init.mirrorOutputBoardIndex -- This specifies the board with the 2 D/A channels used for either AOD or galvo operation, despite the name
  • state.init.X/YMirrorChannelIndex -- In AOD mode, these specify the fast and slow channel assignments, where "X" corresponds to the fast channel and "Y" corresponds to the slow channel.
  • state.init.fastScanningX/Y -- This variable (and the corresponding GUI setting) presently has no effect in AOD mode. (To implement this would require both the output signals and the COM signal commands to be swapped--I think this is feasible).
  • state.acq.msPerLineGUI -- An enumerated value (0,1,2,3) indicating which msPerLine value is selected in the basic configuration GUI (1,2,4,8ms)
  • state.acq.msPerLine -- Should be the true value of msPerLine, which is computed in  setAcquisitionParameters(). Note that the value is specified in seconds, despite the name.
  • state.acq.linesPerFrame -- Reflects the GUI value of lines per frame. When in "hybrid" raster scan mode (the slow dimension is "stepped"), the actual # of valid lines is (state.acq.linesPerFrame-1). The last line is kept as a "dummy" line.
  • state.acq.pixelsPerLine -- Reflects the GUI value of pixels per line. When in "stepped" raster scan mode (i.e., both dimensions are "stepped"), the actual # of valid pixels per line is (state.acq.pixelsPerLine-1) -- the last pixel is blank.
  • state.acq.fillFraction -- Should reflect the true fill fraction per line or per pixel in AOD raster scanning, without accounting for the extra line in "hybrid" mode, or the extra pixel per line in "stepped" raster scan mode. This is computed in setAcquisitionParameters().
  • state.acq.samplesAcquiredPerLine -- Reflects the valid samples collected during each line during a raster scan. This value does not count the samples that are discarded per line or per pixel in ramp and step modes, respectively.
  • No labels