My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
DioClient.h
Go to the documentation of this file.
1 #ifndef GCP_RECEIVER_DIOCLIENT_H
2 #define GCP_RECEIVER_DIOCLIENT_H
3 
13 #include "Utilities/DIOClient.h"
14 
15 #include "gcp/util/common/Frequency.h"
16 #include "gcp/util/common/RegDate.h"
17 
18 namespace gcp {
19 
20  namespace util {
21  class BoardDataFrameManager;
22  class RegMapDataFrameManager;
23  class ArrayMapDataFrameManager;
24  }
25 
26  namespace receiver {
27 
28  class DioClient : public MuxReadout::DIOClient_BaseClass {
29  public:
30 
31  // Constructor.
32 
33  DioClient(std::string dioHost, unsigned short dioPort,
34  std::string hwHost, unsigned short hwPort,
35  unsigned int nSamplesPerSecond, bool batch=false);
36 
37  // Destructor.
38 
39  virtual ~DioClient();
40 
41  void initialize();
42 
43  bool connect();
44  bool isConnected();
45  bool dataAreReady();
46 
47  bool bufferNextSample();
48 
50  virtual void releaseReadFrame();
51 
52  virtual gcp::util::BoardDataFrameManager& getFrame() {};
53 
54  // The default cutoff frequency and ntap for the sinc filter
55 
56  static const gcp::util::Frequency defaultSincFilterCutoffFreq_;
57  static const unsigned defaultNTaps_ = 129;
58 
59  // Methods to set the subsampling
60 
61  void setSampling(unsigned sampling);
62  virtual void archiveSubSampling(unsigned sampling);
63 
64  // Methods to set the filtering function
65 
66  void setFilter(gcp::util::Frequency freq, unsigned ntaps);
67  void setFilterFrequency(gcp::util::Frequency freq);
68  void setFilterNtap(unsigned ntaps);
69  void setFilter(unsigned mask, double freqHz, unsigned ntaps);
70 
71  // Called in initialize to set up the filter for this client
72 
73  virtual void setUpFilter() {};
74 
75  // Called to archive filter values
76 
77  virtual void archiveFilterValues(gcp::util::Frequency& freq,
78  unsigned ntaps);
79 
80  // Copy stored values of persistent items into the register
81  // frame
82 
83  virtual void
84  copyPersistentRegs(gcp::util::ArrayMapDataFrameManager* frame) {};
85 
86  protected:
87 
88  gcp::util::Frequency sincCutoffFreq_;
89  unsigned nTaps_;
90 
91  void addBatchChannel(std::string channelSpec);
92 
93  void addChannel(std::string channelSpec);
94 
95  // Overload the base class method to add a data column
96 
97  bool addColumn(MuxReadout::DIOColumnToken column);
98 
99  // Initialize the channels we will acquire
100 
101  virtual void initializeChannels() {};
102 
103  // Overload the base-class method to start
104 
105  bool start(int sampleCount=-1);
106 
107  virtual void bufferData(vector<MuxReadout::DIODatum>& data);
108 
109  virtual void addSampleToBuffer(gcp::util::RegDate& date,
110  std::vector<MuxReadout::DIODatum>& data,
111  bool isValid) {};
112 
113  std::string hwHost_;
114  unsigned short hwPort_;
115 
116  std::string dioHost_;
117  unsigned short dioPort_;
118 
119  unsigned sampleCount_;
120  unsigned nSamplesPerSecond_;
121  unsigned nRecord_;
122 
123  bool firstSample_;
124  bool needFirstValidSample_;
125 
126  gcp::util::RegMapDataFrameManager* frameManager_;
127 
128  bool batch_;
129  bool first_;
130 
131  private:
132 
133  void registerError();
134  void configureFilterFunction();
135  bool incrementSampleCount();
136 
137  bool isConnected_;
138 
139  public:
140 
141  std::vector<std::string> channels_;
142 
143  std::vector<MuxReadout::DIODatum> data_;
144 
145  }; // End class DioClient
146 
147  } // End namespace receiver
148 } // End namespace gcp
149 
150 
151 
152 #endif // End #ifndef GCP_RECEIVER_DIOCLIENT_H
Definition: BoardDataFrameManager.h:31
virtual void bufferData(vector< MuxReadout::DIODatum > &data)
Definition: DioClient.cc:328
virtual void releaseReadFrame()
Definition: DioClient.cc:233
Definition: DioClient.h:28
bool isConnected()
Definition: DioClient.cc:152
bool start(int sampleCount=-1)
Definition: DioClient.cc:127
void addChannel(std::string channelSpec)
Definition: DioClient.cc:85
void setFilter(gcp::util::Frequency freq, unsigned ntaps)
Definition: DioClient.cc:266
Definition: ArrayMapDataFrameManager.h:28
virtual gcp::util::RegMapDataFrameManager * grabReadFrame()
Definition: DioClient.cc:228
bool addColumn(MuxReadout::DIOColumnToken column)
Definition: DioClient.cc:98
Definition: RegDate.h:19
DioClient(std::string dioHost, unsigned short dioPort, std::string hwHost, unsigned short hwPort, unsigned int nSamplesPerSecond, bool batch=false)
Definition: DioClient.cc:19
bool connect()
Definition: DioClient.cc:160
bool dataAreReady()
Definition: DioClient.cc:238
Definition: RegMapDataFrameManager.h:26
virtual ~DioClient()
Definition: DioClient.cc:80
bool bufferNextSample()
Definition: DioClient.cc:195
Definition: Frequency.h:21