//file vcard.h
#if !defined VCARD_H
# define VCARD_H
#include "vmod.h"
#pragma warn -csu
#pragma warn -pch
#include <vector>
using namespace std;
class VCard //abstract class for generic card
{
protected:
int ncounter, nAI, nAO, nclock; //number of counters, inputs,
//outputs, clocks
int multiCounter; //number of multicounters
//(syncronous counters)
int nOSC; //number of independent
//oscillators
char* card_ID;
bool ison; //false off, true on
vector<VAO*> AnalogOutput; //STL vectors
vector<VAI*> AnalogInput;
vector<VCNT*> Counter;
vector<VMCNT*> MultiCounter;
vector<VCLK*> Clock;
vector<VOSC*> Oscillator;
public:
VCard();
virtual ~VCard(); //virtual because of polymorphic destruction
char* IdCard(){return card_ID;}; //return the card type
int RetCNTNumber() {return ncounter;}; //return ncounter and
//so on...
int RetCLKNumber() {return nclock;};
int RetAINumber() {return nAI;};
int RetAONumber() {return nAO;};
int RetMCNTNumber(){return multiCounter;};
int RetOSCNumber() {return nOSC;};
int IsOn(){return ison;}; //the card is on
VAO* RetVAOPt(int i) { return AnalogOutput[i];};
VAI* RetVAIPt(int i) { return AnalogInput[i];};
VCNT* RetVCNTPt(int i) {return Counter[i];};
VMCNT* RetVMCNTPt(int i){return MultiCounter[i];};
VCLK* RetVCLKPt(int i) {return Clock[i];};
VOSC* RetVOSCPt(int i) {return Oscillator[i];};
virtual void CreateConfig()=0;
virtual void ReadConfig()=0;
virtual long ReadCounter(int i)=0;
virtual void ReadMultiCounter(int i,unsigned long& data)=0;
virtual float ReadAI(int i)=0;
virtual void WriteAO(int i, float f)=0;
virtual void
Wait(int clock,int counter,long timems)=0; //time in
//milliseconds
virtual void
StartCounter(int i,int mode, long preload, bool reset)=0;
virtual void StopCounter(int i)=0;
virtual void
StartMultiCounter(int i, int mode, long preload, bool reset)=0;
virtual void StopMultiCounter(int i)=0;
virtual void
StartClock(int i, int mant, short esp)=0; //mant and esp
//indicate the
//frequency of
//the clock
virtual void StopClock(int i)=0;
virtual void //type is the waveform of the output
StartOsc(int i, int type, float freq, float phase, float amp)=0;
virtual void StopOsc(int i)=0;
};
#endif
//end file vcard.h
/* End of File */