libm2k
m2khardwaretrigger.hpp
1 /*
2  * Copyright (c) 2019 Analog Devices Inc.
3  *
4  * This file is part of libm2k
5  * (see http://www.github.com/analogdevicesinc/libm2k).
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU Lesser General Public License as published by
9  * the Free Software Foundation, either version 2.1 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef M2KHARDWARETRIGGER_HPP
23 #define M2KHARDWARETRIGGER_HPP
24 
25 #include <libm2k/enums.hpp>
26 #include <libm2k/digital/enums.hpp>
27 #include <libm2k/m2kglobal.hpp>
28 #include <libm2k/m2k.hpp>
29 #include <vector>
30 #include <memory>
31 
32 namespace libm2k {
33 
41 class LIBM2K_API M2kHardwareTrigger
42 {
43 public:
47  virtual ~M2kHardwareTrigger() {}
48 
49 
53  virtual void reset() = 0;
54 
60  virtual int getAnalogLevelRaw(unsigned int chnIdx) = 0;
61 
62 
68  virtual void setAnalogLevelRaw(unsigned int chnIdx, int level) = 0;
69 
70 
76  virtual void setAnalogLevel(unsigned int chnIdx, double v_level) = 0;
77 
78 
84  virtual double getAnalogLevel(unsigned int chnIdx) = 0;
85 
86 
92  virtual double getAnalogHysteresis(unsigned int chnIdx) = 0;
93 
94 
100  virtual void setAnalogHysteresis(unsigned int chnIdx, double hysteresis) = 0;
101 
102 
108  virtual M2K_TRIGGER_CONDITION_ANALOG getAnalogCondition(unsigned int chnIdx) = 0;
109 
110 
116  virtual void setAnalogCondition(unsigned int chnIdx, M2K_TRIGGER_CONDITION_ANALOG cond) = 0;
117 
118 
124  virtual M2K_TRIGGER_CONDITION_DIGITAL getDigitalCondition(unsigned int chnIdx) = 0;
125 
126 
132  virtual void setDigitalCondition(unsigned int chnIdx, M2K_TRIGGER_CONDITION_DIGITAL cond) = 0;
133 
134 
135 
141  virtual M2K_TRIGGER_MODE getAnalogMode(unsigned int chnIdx) = 0;
142 
143 
149  virtual void setAnalogMode(unsigned int chnIdx, M2K_TRIGGER_MODE mode) = 0;
150 
151 
156  virtual libm2k::digital::DIO_TRIGGER_MODE getDigitalMode() = 0;
157 
158 
163  virtual void setDigitalMode(libm2k::digital::DIO_TRIGGER_MODE mode) = 0;
164 
165 
170  virtual M2K_TRIGGER_SOURCE_ANALOG getAnalogSource() = 0;
171 
172 
177  virtual void setAnalogSource(M2K_TRIGGER_SOURCE_ANALOG src) = 0;
178 
179 
184  virtual int getAnalogSourceChannel() = 0;
185 
186 
191  virtual void setAnalogSourceChannel(unsigned int chnIdx) = 0;
192 
193 
208  virtual int getAnalogDelay() const = 0;
209 
210 
225  virtual void setAnalogDelay(int delay) = 0;
226 
227 
242  virtual int getDigitalDelay() const = 0;
243 
244 
259  virtual void setDigitalDelay(int delay) = 0;
260 
261 
265  virtual struct SETTINGS *getCurrentHwSettings() = 0;
266 
267 
271  virtual void setHwTriggerSettings(struct SETTINGS *settings) = 0;
272 
273 
278  virtual void setAnalogStreamingFlag(bool enable) = 0;
279 
280 
285  virtual bool getAnalogStreamingFlag() = 0;
286 
287 
297  virtual void setDigitalStreamingFlag(bool enable) = 0;
298 
299 
304  virtual bool getDigitalStreamingFlag() = 0;
305 
306 
310  virtual void setCalibParameters(unsigned int chnIdx, double scaling, double vert_offset) = 0;
311 
312 
318  virtual M2K_TRIGGER_CONDITION_DIGITAL getAnalogExternalCondition(unsigned int chnIdx) = 0;
319 
320 
326  virtual void setAnalogExternalCondition(unsigned int chnIdx, M2K_TRIGGER_CONDITION_DIGITAL cond) = 0;
327 
328 
333  virtual M2K_TRIGGER_CONDITION_DIGITAL getDigitalExternalCondition() const = 0;
334 
335 
340  virtual void setDigitalExternalCondition(M2K_TRIGGER_CONDITION_DIGITAL cond) = 0;
341 
342 
354  virtual void setAnalogExternalOutSelect(M2K_TRIGGER_OUT_SELECT output_select);
355 
356 
366  virtual M2K_TRIGGER_OUT_SELECT getAnalogExternalOutSelect();
367 
368 
372  virtual bool hasExternalTriggerIn() const = 0;
373 
374 
378  virtual bool hasExternalTriggerOut() const = 0;
379 
380 
384  virtual bool hasCrossInstrumentTrigger() const = 0;
385 
386 
395  virtual void setDigitalSource(M2K_TRIGGER_SOURCE_DIGITAL external_src);
396 
397 
406  virtual M2K_TRIGGER_SOURCE_DIGITAL getDigitalSource() const;
407 };
408 }
409 
410 #endif //M2KHARDWARETRIGGER_HPP
M2K_TRIGGER_SOURCE_DIGITAL
Select the source for the digital trigger.
Definition: enums.hpp:158
M2K_TRIGGER_CONDITION_DIGITAL
Condition of triggering.
Definition: enums.hpp:109
Digital enumerations.
M2K_TRIGGER_CONDITION_ANALOG
Condition of triggering.
Definition: enums.hpp:96
M2K_TRIGGER_MODE
Select the mode for the analog trigger.
Definition: enums.hpp:123
M2K_TRIGGER_OUT_SELECT
Select which trigger event will be forwarded on TO pin (trigger out)
Definition: enums.hpp:170
Triggering system.
Definition: enums.hpp:184
DIO_TRIGGER_MODE
Triggering mode for digital channels.
Definition: enums.hpp:105
Controls the hardware trigger for ADALM2000.
Definition: m2khardwaretrigger.hpp:41
M2K_TRIGGER_SOURCE_ANALOG
Select the source for the analog trigger.
Definition: enums.hpp:140
Generic M2K enumerations.