irioCoreCpp Library Module  2.1.0
platforms.h
1 #pragma once
2 
3 #include <stddef.h>
4 #include <stdint.h>
5 #include <cstdint>
6 
7 namespace irio {
8 
12 enum class PLATFORM_ID: std::uint8_t{
13  FlexRIO = 0,
14  cRIO = 1,
15  RSeries = 2
16 };
17 
23 class Platform {
24  public:
38  Platform(const size_t ai, const size_t auxAI, const size_t ao,
39  const size_t auxAO, const size_t digital, const size_t auxDigital,
40  const size_t dma, const size_t sg, const size_t modules,
41  const PLATFORM_ID id) :
42  maxAI(ai), maxAuxAI(auxAI), maxAO(ao), maxAuxAO(auxAO), maxDigital(
43  digital), maxAuxDigital(auxDigital), maxDMA(dma), maxSG(sg),
44  maxModules(modules), platformID(id) {
45  }
46 
48  const size_t maxAI;
50  const size_t maxAuxAI;
52  const size_t maxAO;
54  const size_t maxAuxAO;
56  const size_t maxDigital;
58  const size_t maxAuxDigital;
60  const size_t maxDMA;
62  const size_t maxSG;
64  const size_t maxModules;
65 
67  const PLATFORM_ID platformID;
68 };
69 
74 class PlatformFlexRIO: public Platform {
75  private:
77  static const size_t MAX_AI = 4;
79  static const size_t MAX_AUX_AI = 16;
81  static const size_t MAX_AO = 2;
83  static const size_t MAX_AUX_AO = 16;
85  static const size_t MAX_DIGITAL = 90;
87  static const size_t MAX_AUX_DIGITAL = 16;
89  static const size_t MAX_DMA = 16;
91  static const size_t MAX_SG = 2;
93  static const size_t MAX_MODULES = 1;
94 
95  public:
102  PLATFORM_ID::FlexRIO) {
103  }
104 };
105 
110 class PlatformCRIO: public Platform {
111  private:
113  static const size_t MAX_AI = 256;
115  static const size_t MAX_AUX_AI = 256;
117  static const size_t MAX_AO = 256;
119  static const size_t MAX_AUX_AO = 256;
121  static const size_t MAX_DIGITAL = 256;
123  static const size_t MAX_AUX_DIGITAL = 256;
125  static const size_t MAX_DMA = 3;
127  static const size_t MAX_SG = 256;
129  static const size_t MAX_MODULES = 16;
130 
131  public:
138  PLATFORM_ID::cRIO) {
139  }
140 };
141 
146 class PlatformRSeries: public Platform {
147  private:
149  static const size_t MAX_AI = 8;
151  static const size_t MAX_AUX_AI = 16;
153  static const size_t MAX_AO = 8;
155  static const size_t MAX_AUX_AO = 16;
157  static const size_t MAX_DIGITAL = 128;
159  static const size_t MAX_AUX_DIGITAL = 16;
161  static const size_t MAX_DMA = 3;
163  static const size_t MAX_SG = 2;
165  static const size_t MAX_MODULES = 1;
166 
167  public:
174  PLATFORM_ID::RSeries) {
175  }
176 };
177 
178 } // namespace irio
Specific implementation for the cRIO platform.
Definition: platforms.h:110
static const size_t MAX_SG
Max number of Signal Generators for this platform.
Definition: platforms.h:127
static const size_t MAX_AI
Max number of Analog Input terminals for this platform.
Definition: platforms.h:113
static const size_t MAX_MODULES
Max number of modules supported by this platform.
Definition: platforms.h:129
static const size_t MAX_AO
Max number of Analog Output terminals for this platform.
Definition: platforms.h:117
static const size_t MAX_DIGITAL
Max number of Digital terminals for this platform.
Definition: platforms.h:121
static const size_t MAX_DMA
Max number of DMAs for this platform.
Definition: platforms.h:125
static const size_t MAX_AUX_DIGITAL
Max number of Aux Digital terminals for this platform.
Definition: platforms.h:123
PlatformCRIO()
Specific implementation for the cRIO platform.
Definition: platforms.h:135
static const size_t MAX_AUX_AO
Max number of Aux Analog Output terminals for this platform.
Definition: platforms.h:119
static const size_t MAX_AUX_AI
Max number of Aux Analog Input terminals for this platform.
Definition: platforms.h:115
Specific implementation for the FlexRIO platform.
Definition: platforms.h:74
static const size_t MAX_AO
Max number of Analog Output terminals for this platform.
Definition: platforms.h:81
static const size_t MAX_SG
Max number of Signal Generators for this platform.
Definition: platforms.h:91
static const size_t MAX_AUX_AO
Max number of Aux Analog Output terminals for this platform.
Definition: platforms.h:83
static const size_t MAX_DIGITAL
Max number of Digital terminals for this platform.
Definition: platforms.h:85
static const size_t MAX_AUX_AI
Max number of Aux Analog Input terminals for this platform.
Definition: platforms.h:79
static const size_t MAX_MODULES
Max number of modules supported by this platform.
Definition: platforms.h:93
static const size_t MAX_AI
Max number of Analog Input terminals for this platform.
Definition: platforms.h:77
static const size_t MAX_DMA
Max number of DMAs for this platform.
Definition: platforms.h:89
static const size_t MAX_AUX_DIGITAL
Max number of Aux Digital terminals for this platform.
Definition: platforms.h:87
PlatformFlexRIO()
Specific implementation for the FlexRIO platform.
Definition: platforms.h:99
Specific implementation for the R Series platform.
Definition: platforms.h:146
static const size_t MAX_AUX_DIGITAL
Max number of Aux Digital terminals for this platform.
Definition: platforms.h:159
static const size_t MAX_AUX_AI
Max number of Aux Analog Input terminals for this platform.
Definition: platforms.h:151
static const size_t MAX_DIGITAL
Max number of Digital terminals for this platform.
Definition: platforms.h:157
static const size_t MAX_SG
Max number of Signal Generators for this platform.
Definition: platforms.h:163
static const size_t MAX_AO
Max number of Analog Output terminals for this platform.
Definition: platforms.h:153
static const size_t MAX_AUX_AO
Max number of Aux Analog Output terminals for this platform.
Definition: platforms.h:155
static const size_t MAX_AI
Max number of Analog Input terminals for this platform.
Definition: platforms.h:149
static const size_t MAX_MODULES
Max number of modules supported by this platform.
Definition: platforms.h:165
static const size_t MAX_DMA
Max number of DMAs for this platform.
Definition: platforms.h:161
PlatformRSeries()
Specific implementation for the RSeries platform.
Definition: platforms.h:171
Generic Platform class.
Definition: platforms.h:23
const size_t maxAO
Max number of Analog Output terminals.
Definition: platforms.h:52
const size_t maxDMA
Max number of DMAs.
Definition: platforms.h:60
const size_t maxAuxAO
Max number of Aux Analog Output terminals.
Definition: platforms.h:54
const size_t maxAI
Max number of Analog Input terminals.
Definition: platforms.h:48
const size_t maxModules
Max number of modules.
Definition: platforms.h:64
const size_t maxAuxDigital
Max number of Aux Digital terminals.
Definition: platforms.h:58
const size_t maxSG
Max number of Signal Generators.
Definition: platforms.h:62
Platform(const size_t ai, const size_t auxAI, const size_t ao, const size_t auxAO, const size_t digital, const size_t auxDigital, const size_t dma, const size_t sg, const size_t modules, const PLATFORM_ID id)
Stores maximum number of resources.
Definition: platforms.h:38
const size_t maxDigital
Max number of Digital terminals.
Definition: platforms.h:56
const PLATFORM_ID platformID
Platform identifier.
Definition: platforms.h:67
const size_t maxAuxAI
Max number of Aux Analog Input terminals.
Definition: platforms.h:50