1#[derive(Clone, PartialEq, Eq, Debug)]
10pub enum ExpertType {
11 CanOpen,
12 CRio,
13 CRioWithDaqmx,
14 NetworkDiscovery,
15 FlexRIOModularIO,
16 FlexRIOIntegratedIO,
17 Ni488_2,
18 Ni568x,
19 Ni845x,
20 NiController,
21 NiDaqmx,
22 NiDCPower,
23 NiDCPower416x,
24 NiDMM,
25 NiDMM408x,
26 NiFGen,
27 NimmWave,
28 NiOSI,
29 NiPTP,
30 NiPXImc,
31 NiRio,
32 RTSI,
33 NiScope,
34 NiScope5170,
35 NiScope5164,
36 NiScope5110,
37 Serial,
38 SLSC,
39 STS,
40 NiSync,
41 NiVISA,
42 NiVNA,
43 NiVST,
44 NiWSN,
45 NiXNET,
46 PXIPlatformServices,
47 Softmotion,
48 Unknown(String),
50}
51
52impl From<&str> for ExpertType {
53 fn from(text: &str) -> Self {
54 match text {
55 "ni-canopen" => Self::CanOpen,
56 "crio" => Self::CRio,
57 "crioparent" => ExpertType::CRioWithDaqmx,
58 "network" => ExpertType::NetworkDiscovery,
59 "niflexrio" => ExpertType::FlexRIOModularIO,
60 "niflexrio2" => ExpertType::FlexRIOIntegratedIO,
61 "ni-488.2" => ExpertType::Ni488_2,
62 "ni-rfpowermeter" => ExpertType::Ni568x,
63 "845x" => ExpertType::Ni845x,
64 "ni-controller" => ExpertType::NiController,
65 "daqmx" => ExpertType::NiDaqmx,
66 "dcpowerscx" => ExpertType::NiDCPower,
67 "nidcpower416x" => ExpertType::NiDCPower416x,
68 "nidmmscx" => ExpertType::NiDMM,
69 "nidmm408x" => ExpertType::NiDMM408x,
70 "nifgen5433" => ExpertType::NiFGen,
71 "ni-mmwave" => ExpertType::NimmWave,
72 "ni-osi" => ExpertType::NiOSI,
73 "ni-1588" => ExpertType::NiPTP,
74 "ni-pximc" => ExpertType::NiPXImc,
75 "ni-rio" => ExpertType::NiRio,
76 "rtsi" => ExpertType::RTSI,
77 "niscopescx" => ExpertType::NiScope,
78 "niscope5170" => ExpertType::NiScope5170,
79 "niscope5164" => ExpertType::NiScope5164,
80 "niscope5110" => ExpertType::NiScope5110,
81 "serial" => ExpertType::Serial,
82 "slsc" => ExpertType::SLSC,
83 "nistsrcbps" => ExpertType::STS,
84 "ni-sync" => ExpertType::NiSync,
85 "ni-visa" => ExpertType::NiVISA,
86 "nivna" => ExpertType::NiVNA,
87 "ni-vst" => ExpertType::NiVST,
88 "ni-wsn" => ExpertType::NiWSN,
89 "xnet" => ExpertType::NiXNET,
90 "ni-pxi" => ExpertType::PXIPlatformServices,
91 "mcSysApi" => ExpertType::Softmotion,
92 _ => ExpertType::Unknown(text.to_string()),
93 }
94 }
95}
96
97impl ExpertType {
98 pub fn to_programmatic_string(&self) -> String {
100 match self {
101 ExpertType::Unknown(name) => name.clone(),
102 ExpertType::CanOpen => "ni-canopen".to_string(),
103 ExpertType::CRio => "crio".to_string(),
104 ExpertType::CRioWithDaqmx => "crioparent".to_string(),
105 ExpertType::NetworkDiscovery => "network".to_string(),
106 ExpertType::FlexRIOModularIO => "niflexrio".to_string(),
107 ExpertType::FlexRIOIntegratedIO => "niflexrio2".to_string(),
108 ExpertType::Ni488_2 => "ni-488.2".to_string(),
109 ExpertType::Ni568x => "ni-rfpowermeter".to_string(),
110 ExpertType::Ni845x => "845x".to_string(),
111 ExpertType::NiController => "ni-controller".to_string(),
112 ExpertType::NiDaqmx => "daqmx".to_string(),
113 ExpertType::NiDCPower => "dcpowerscx".to_string(),
114 ExpertType::NiDCPower416x => "nidcpower416x".to_string(),
115 ExpertType::NiDMM => "nidmmscx".to_string(),
116 ExpertType::NiDMM408x => "nidmm408x".to_string(),
117 ExpertType::NiFGen => "nifgen5433".to_string(),
118 ExpertType::NimmWave => "ni-mmwave".to_string(),
119 ExpertType::NiOSI => "ni-osi".to_string(),
120 ExpertType::NiPTP => "ni-1588".to_string(),
121 ExpertType::NiPXImc => "ni-pximc".to_string(),
122 ExpertType::NiRio => "ni-rio".to_string(),
123 ExpertType::RTSI => "rtsi".to_string(),
124 ExpertType::NiScope => "niscopescx".to_string(),
125 ExpertType::NiScope5170 => "niscope5170".to_string(),
126 ExpertType::NiScope5164 => "niscope5164".to_string(),
127 ExpertType::NiScope5110 => "niscope5110".to_string(),
128 ExpertType::Serial => "serial".to_string(),
129 ExpertType::SLSC => "slsc".to_string(),
130 ExpertType::STS => "nistsrcbps".to_string(),
131 ExpertType::NiSync => "ni-sync".to_string(),
132 ExpertType::NiVISA => "ni-visa".to_string(),
133 ExpertType::NiVNA => "nivna".to_string(),
134 ExpertType::NiVST => "ni-vst".to_string(),
135 ExpertType::NiWSN => "ni-wsn".to_string(),
136 ExpertType::NiXNET => "xnet".to_string(),
137 ExpertType::PXIPlatformServices => "ni-pxi".to_string(),
138 ExpertType::Softmotion => "mcSysApi".to_string(),
139 }
140 }
141}
142
143pub struct SystemExpert {
144 expert_type: ExpertType,
145 display_name: String,
146 version: String,
147}
148
149#[cfg(test)]
150mod test {
151
152 use super::*;
153
154 fn test_string_conversion(expert_type: ExpertType, programmatic_name: &str) {
155 assert_eq!(
156 expert_type.to_programmatic_string(),
157 programmatic_name.to_string()
158 );
159 assert_eq!(expert_type, programmatic_name.into());
160 }
161
162 #[test]
163 fn type_to_string() {
164 test_string_conversion(ExpertType::Unknown("unknown".to_string()), "unknown");
165 test_string_conversion(ExpertType::CanOpen, "ni-canopen");
166 test_string_conversion(ExpertType::CRio, "crio");
167 test_string_conversion(ExpertType::CRioWithDaqmx, "crioparent");
168 test_string_conversion(ExpertType::NetworkDiscovery, "network");
169 test_string_conversion(ExpertType::FlexRIOModularIO, "niflexrio");
170 test_string_conversion(ExpertType::FlexRIOIntegratedIO, "niflexrio2");
171 test_string_conversion(ExpertType::Ni488_2, "ni-488.2");
172 test_string_conversion(ExpertType::Ni568x, "ni-rfpowermeter");
173 test_string_conversion(ExpertType::Ni845x, "845x");
174 test_string_conversion(ExpertType::NiController, "ni-controller");
175 test_string_conversion(ExpertType::NiDaqmx, "daqmx");
176 test_string_conversion(ExpertType::NiDCPower, "dcpowerscx");
177 test_string_conversion(ExpertType::NiDCPower416x, "nidcpower416x");
178 test_string_conversion(ExpertType::NiDMM, "nidmmscx");
179 test_string_conversion(ExpertType::NiDMM408x, "nidmm408x");
180 test_string_conversion(ExpertType::NiFGen, "nifgen5433");
181 test_string_conversion(ExpertType::NimmWave, "ni-mmwave");
182 test_string_conversion(ExpertType::NiOSI, "ni-osi");
183 test_string_conversion(ExpertType::NiPTP, "ni-1588");
184 test_string_conversion(ExpertType::NiPXImc, "ni-pximc");
185 test_string_conversion(ExpertType::NiRio, "ni-rio");
186 test_string_conversion(ExpertType::RTSI, "rtsi");
187 test_string_conversion(ExpertType::NiScope, "niscopescx");
188 test_string_conversion(ExpertType::NiScope5170, "niscope5170");
189 test_string_conversion(ExpertType::NiScope5164, "niscope5164");
190 test_string_conversion(ExpertType::NiScope5110, "niscope5110");
191 test_string_conversion(ExpertType::Serial, "serial");
192 test_string_conversion(ExpertType::SLSC, "slsc");
193 test_string_conversion(ExpertType::STS, "nistsrcbps");
194 test_string_conversion(ExpertType::NiSync, "ni-sync");
195 test_string_conversion(ExpertType::NiVISA, "ni-visa");
196 test_string_conversion(ExpertType::NiVNA, "nivna");
197 test_string_conversion(ExpertType::NiVST, "ni-vst");
198 test_string_conversion(ExpertType::NiWSN, "ni-wsn");
199 test_string_conversion(ExpertType::NiXNET, "xnet");
200 test_string_conversion(ExpertType::PXIPlatformServices, "ni-pxi");
201 test_string_conversion(ExpertType::Softmotion, "mcSysApi");
202 }
203}