diff --git a/documentation/FirewireWinDoc.html b/documentation/FirewireWinDoc.html index 19b5f9f..c683727 100755 --- a/documentation/FirewireWinDoc.html +++ b/documentation/FirewireWinDoc.html @@ -10,7 +10,7 @@

Firewire IIDC (CDAM) Windows driver

- March 28, 2009

+ August 17, 2009

Mark Rivers

@@ -20,13 +20,10 @@ Table of Contents

Introduction

@@ -35,14 +32,17 @@ IIDC/DCAM specification. This industry standard allows a single driver to control cameras from any manufacturer, using any of the supported video formats and features. It inherits from ADDriver and implements many of the parameters in - ADStdDriverParams.h. It also implements a number of parameters that are specific - to the Firewire cameras.

+ asynNDArrayDriver.h and ADDriver.h. It also implements a number of parameters that + are specific to the Firewire cameras.

- This driver runs only on Windows. It uses the + This driver runs only on Windows. It uses the Carnegie Mellon 1394 camera driver and library. There is also an areaDetector Firewire driver for Linux available from the Diamond Light Source.

+

+ This driver inherits from ADDriver. The + firewireWinDCAM class documentation describes this class in detail.

The IIDC/DCAM specification defines standard ways that manufacturers must implement features like shutter time, white balance, frame sizes, frame rates, etc. There @@ -552,6 +552,8 @@ +

+ Firewire specific parameters

The firewireWinDCAM driver implements the following parameters in addition to those in ADStdDriverParams.h. Note that to reduce the width of this table the enum names @@ -1100,421 +1102,59 @@ -

- The following table describes how the Firewire driver implements some of the standard - driver parameters. -

-

- It is useful to use NDPluginROI to define an ROI containing the entire mar345 detector. - The MaxValue_RBV PV in this ROI can be monitored to make sure that the 16-bit limit - of 65,535 is not being approached in any pixel. -

-

- Implementation of standard driver parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - -
- Implementation of Parameters in ADStdDriverParams.h and EPICS Record Definitions - in ADBase.template and NDFile.template
- Enum name - EPICS record name - Description
- ADNumImages - $(P$(R)NumImages - Controls the number of images to acquire when ADImageMode is ADImageMultiple.
- ADAcquirePeriod - $(P$(R)AcquirePeriod - Controls the period between images when ADImageMode is ADImageMultiple or ADImageContinuous. - If this is greater than the acquisition time plus readout overhead then the driver - will wait until the period has elapsed before starting the next acquisition.
- ADGain - $(P)$(R)Gain - Maps onto the gain features. If camera supports absolute ... -
-

- Unsupported standard driver parameters

-

- The mar345 driver does not support the following standard driver parameters because - they are not supported in the mar345dtb program:

- -

+

Configuration

- The mar345 driver is created with the following command, either from C/C++ or from - the EPICS IOC shell. -

-
   
-mar345Config(const char *portName, const char *mar345Port, 
-             int maxBuffers, size_t maxMemory);
+    The firewireWinDCAM driver is created with the WinFDC_Config command, either from
+    C/C++ or from the EPICS IOC shell.

+
WinFDC_Config(const char *portName, const char* camid, 
+              int maxBuffers, size_t maxMemory, 
+              int priority, int stackSize)
   
- - - - - - - - - - - - - - - - - - - - - - - -
- Argument - Description
- portName - The name of the asyn port for this detector. -
- mar345Port - The name of the asyn TCP/IP port to communicate with mar345dtb. This must have been - previously created with drvAsynIPPortConfig(), -
- maxBuffers - Maximum number of buffers to be created for plugin callbacks. Passed to the constructor - for the ADDriver base class.
- maxMemory - Maximum number of bytes of memory to be allocated for plugin callbacks. Passed to - the constructor for the ADDriver base class.

- The following is an example st.cmd startup script: + For details on the meaning of the parameters to this function refer to the detailed + documentation on the WinFDC_Config function in the + firewireWinDCAM.cpp documentation and in the documentation for the constructor + for the FirewireWinDCAM + class. +

+

+ There an example IOC boot directory and startup script (iocBoot/iocFirewire/st.cmd) + provided with areaDetector.

-
< < envPaths
-errlogInit(20000)
-
-dbLoadDatabase("$(AREA_DETECTOR)/dbd/mar345App.dbd")
-mar345App_registerRecordDeviceDriver(pdbbase) 
-
-###
-# Create the asyn port to talk to the MAR on port 5001
-drvAsynIPPortConfigure("marServer","gse-marip2.cars.aps.anl.gov:5001")
-# Set the input and output terminators.
-asynOctetSetInputEos("marServer", 0, "\n")
-asynOctetSetOutputEos("marServer", 0, "\n")
-asynSetTraceIOMask("marServer",0,2)
-#asynSetTraceMask("marServer",0,255)
-
-mar345Config("MAR", "marServer", 20, 200000000)
-asynSetTraceIOMask("MAR",0,2)
-#asynSetTraceMask("MAR",0,255)
-dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/ADBase.template",  "P=13MAR345_1:,R=cam1:,PORT=MAR,ADDR=0,TIMEOUT=1")
-dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDFile.template","P=13MAR345_1:,R=cam1:,PORT=MAR,ADDR=0,TIMEOUT=1")
-dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/mar345.template","P=13MAR345_1:,R=cam1:,PORT=MAR,ADDR=0,TIMEOUT=1,MARSERVER_PORT=marServer")
-
-# Create a standard arrays plugin
-drvNDStdArraysConfigure("MARImage", 5, 0, "MAR", 0, -1)
-dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDPluginBase.template","P=13MAR345_1:,R=image1:,PORT=MARImage,ADDR=0,TIMEOUT=1,NDARRAY_PORT=MAR,NDARRAY_ADDR=0")
-dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDStdArrays.template", "P=13MAR345_1:,R=image1:,PORT=MARImage,ADDR=0,TIMEOUT=1,SIZE=16,FTVL=SHORT,NELEMENTS=12000000")
-
-# Create an ROI plugin
-drvNDROIConfigure("MARROI", 5, 0, "MAR", 0, 4, 20, -1)
-dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDPluginBase.template","P=13MAR345_1:,R=ROI1:,  PORT=MARROI,ADDR=0,TIMEOUT=1,NDARRAY_PORT=MAR,NDARRAY_ADDR=0")
-dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDROI.template",       "P=13MAR345_1:,R=ROI1:,  PORT=MARROI,ADDR=0,TIMEOUT=1")
-dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDROIN.template",      "P=13MAR345_1:,R=ROI1:0:,PORT=MARROI,ADDR=0,TIMEOUT=1,HIST_SIZE=256")
-dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDROIN.template",      "P=13MAR345_1:,R=ROI1:1:,PORT=MARROI,ADDR=1,TIMEOUT=1,HIST_SIZE=256")
-dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDROIN.template",      "P=13MAR345_1:,R=ROI1:2:,PORT=MARROI,ADDR=2,TIMEOUT=1,HIST_SIZE=256")
-dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDROIN.template",      "P=13MAR345_1:,R=ROI1:3:,PORT=MARROI,ADDR=3,TIMEOUT=1,HIST_SIZE=256")
-
-#asynSetTraceMask("MARROI",0,3)
-#asynSetTraceIOMask("MARROI",0,4)
-
-# Load scan records
-dbLoadRecords("$(SSCAN)/sscanApp/Db/scan.db", "P=13MAR345_1:,MAXPTS1=2000,MAXPTS2=200,MAXPTS3=20,MAXPTS4=10,MAXPTSH=10")
-
-set_requestfile_path("./")
-set_savefile_path("./autosave")
-set_requestfile_path("$(AREA_DETECTOR)/ADApp/Db")
-set_requestfile_path("$(SSCAN)/sscanApp/Db")
-set_pass0_restoreFile("auto_settings.sav")
-set_pass1_restoreFile("auto_settings.sav")
-save_restoreSet_status_prefix("13MAR345_1:")
-dbLoadRecords("$(AUTOSAVE)/asApp/Db/save_restoreStatus.db", "P=13MAR345_1:")
-
-iocInit()
-
-# save things every thirty seconds
-create_monitor_set("auto_settings.req", 30,"P=13MAR345_1:,D=cam1:")
-
-

MEDM screens

The following show the MEDM screens that are used to control the Firewire detectors. - Note that the general purpose screen ADBase.adl can be used, but it exposes some - controls that are not applicable to Firewire cameras, and lacks many fields that - are important for such cameras.

+ Note that the general purpose screen ADBase.adl must be used to control many features, + but it exposes some controls that are not applicable to Firewire cameras, and lacks + many fields that are important for such cameras. A new Firewire-specific top-level + control screen will be added in a future release.

- FirewireFeatures.adl is the screen used to control the features of + firewireFeatures.adl is the screen used to control the features of Firewire cameras.

- FirewireFeatures.adl

+ firewireFeatures.adl firewireFeatures.png

- FirewireVideoFormats.adl is the screen used to control the video formats + firewireVideoFormats.adl is the screen used to control the video formats and modes of Firewire cameras. This is a screen shot when the camera is not in Format 7.

- FirewireFeatures.adl

+ firewireVideoFormats.adl firewireVideoFormats.png

- FirewireVideoFormats.adl is the screen used to control the video formats + firewireVideoFormats.adl is the screen used to control the video formats and modes of Firewire cameras. This is a screen shot when the camera is in Format 7, in which case the video rate menu is not displayed.

- FirewireFeatures.adl

- firewireVideoFormatsFormat7.png
-

- Performance measurements

-

- The mar345 is definitely not a fast detector! The following measurements show the - time to perform various erase and scan operations. Note that because the mar345 - file format is compressed the file sizes are typically much less than the image - sizes listed.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Scan diameter - Pixel size - Image dimensions - Image size (MB) - Time to scan - Time to erase
- 180 mm - - 0.15 mm - - 1200x1200 - - 2.7 - - 38.6 - - 37.8 -
- 240 mm - - 0.15 mm - - 1600x1600 - - 4.9 - - 50.4 - - 50.8 -
- 300 mm - - 0.15 mm - - 2000x2000 - - 7.6 - - 74.7 - - 66.9 -
- 345 mm - - 0.15 mm - - 2300x2300 - - 10.1 - - 88.6 - - 82.7 -
- 180 mm - - 0.10 mm - - 1800x1800 - - 6.2 - - 46.4 - - 45.9 -
- 240 mm - - 0.10 mm - - 2400x2400 - - 11.0 - - 71.9 - - 63.8 -
- 300 mm - - 0.10 mm - - 3000x3000 - - 17.2 - - 89.1 - - 87.0 -
- 345 mm - - 0.10 mm - - 3450x3450 - - 22.7 - - 107.5 - - 107.1 -
-

- Restrictions

-

- The following are some current restrictions of the mar345 driver:

- + firewireVideoFormats.adl + firewireVideoFormatsFormat7.png