damaris-backends/drivers/Datel-PCI416/Datel-PCI416.h
2014-06-26 11:10:51 +00:00

98 lines
2.0 KiB
C++

/* **************************************************************************
Author: Achim Gaedke
Created: June 2004
****************************************************************************/
#ifndef DATELPCI416
#define DATELPCI416
#include "drivers/ADC.h"
#include "core/states.h"
#include <cstdlib>
#include <windows.h>
#include "416inc/pcilib32.h"
#include "416inc/pci416df.h"
/**
\defgroup datelpci416 Datel PCI416 adc card
\ingroup drivers
\brief supports Datel PCI416 pci cards with dma data transfer
@{
*/
class DatelPCI416: public ADC {
HINSTANCE PCI_DLL;
// make definitions private
# include "416inc/41632DLL.H"
/** the board this driver works on */
long unsigned int board;
/** number of available boards */
long unsigned int brdcount;
/**
\brief the capabilities of the PCI slot used by this card
the members of this structure are:
0 sizeFIFO;
1 bufsizeDMA;
2 indexADM;
3 acqmode;
*/
DWORD caps[4];
/**
the sample count per trigger pulse and per channel
*/
size_t sample_count;
/**
the count of expected triggers
*/
size_t trigger_count;
/**
sampling frequency of initialised card
*/
double sample_frequency;
/**
when initialised, this handle gives access to data
*/
DWORD dma_buffer_handle;
/**
the ttl signal for pulse programmer
*/
ttlout trigger_line;
public:
DatelPCI416(const ttlout& t_line);
~DatelPCI416();
/**
start sampling after trigger and return field of int
*/
virtual void sample_after_external_trigger(const double rate, const size_t samples, double sensitivity=5.0, size_t resolution=12);
/**
here the data aquisition unit is configured and adds the necessary pusle components to the program
\exception ADC_exception if data aquisition can not be done by this driver, reason is given
*/
virtual void set_daq(state& exp);
/**
read the sample data
*/
virtual adc_result* get_samples(double timeout=0.0);
};
/**
@}
*/
#endif