1use crate::lowlevel;
9use crate::highlevel;
10use crate::serde::DeserializeErrorCause;
11use crate::translate_util::*;
12use num_traits::FromPrimitive;
13
14pub fn raise_command(lowlevel: &lowlevel::Command) -> Result<highlevel::Command, DeserializeErrorCause> {
15 match lowlevel {
16 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
17 name == "TESTEX"
18 && delimiter == &None
19 => {
20 Ok(highlevel::Command::Testex {
21 })
22 },
23 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
24 name == "TESTEXEXT"
25 && delimiter == &None
26 => {
27 Ok(highlevel::Command::Testexext {
28 })
29 },
30 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
31 name == "TESTNEX"
32 && delimiter == &None
33 => {
34 Ok(highlevel::Command::TestCommand {
35 })
36 },
37 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
38 name == "TESTEXEXTFI"
39 && delimiter == &Some(String::from("="))
40 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
41 => {
42 let arg_vec = extract_vec_from_args(&arguments)?;
43 let field_option = arg_vec.get(0);
44 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
45 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
46 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
47 Ok(highlevel::Command::Testexextfi {
48 field,
49 })
50 },
51 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
52 name == "TESTEXEXTFIC"
53 && delimiter == &Some(String::from("="))
54 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
55 => {
56 let arg_vec = extract_vec_from_args(&arguments)?;
57 let field_option = arg_vec.get(0);
58 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
59 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
60 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
61 Ok(highlevel::Command::Testexextfic {
62 field,
63 })
64 },
65 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
66 name == "TESTNSD"
67 && delimiter == &Some(String::from(">"))
68 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
69 => {
70 let arg_vec = extract_vec_from_args(&arguments)?;
71 let field_option = arg_vec.get(0);
72 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
73 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
74 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
75 Ok(highlevel::Command::Testnsd {
76 field,
77 })
78 },
79 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
80 name == "TESTNST"
81 && delimiter == &Some(String::from("="))
82 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
83 => {
84 let arg_vec = extract_vec_from_args(&arguments)?;
85 let field_option = arg_vec.get(0);
86 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
87 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
88 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
89 Ok(highlevel::Command::Testnst {
90 field,
91 })
92 },
93 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
94 name == "TESTNSDNST"
95 && delimiter == &Some(String::from(">"))
96 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
97 => {
98 let arg_vec = extract_vec_from_args(&arguments)?;
99 let field_option = arg_vec.get(0);
100 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
101 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
102 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
103 Ok(highlevel::Command::Testnsdnst {
104 field,
105 })
106 },
107 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
108 name == "TESTNOD"
109 && delimiter == &None
110 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
111 => {
112 let arg_vec = extract_vec_from_args(&arguments)?;
113 let field_option = arg_vec.get(0);
114 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
115 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
116 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
117 Ok(highlevel::Command::Testnod {
118 field,
119 })
120 },
121 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
122 name == "TESTEXEXTFS"
123 && delimiter == &Some(String::from("="))
124 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
125 => {
126 let arg_vec = extract_vec_from_args(&arguments)?;
127 let field_option = arg_vec.get(0);
128 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
129 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
130 let field = field_option_unwrapped_primitive.clone();
131 Ok(highlevel::Command::Testexextfs {
132 field,
133 })
134 },
135 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
136 name == "TESTEXEXTFSI"
137 && delimiter == &Some(String::from("="))
138 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
139 => {
140 let arg_vec = extract_vec_from_args(&arguments)?;
141 let field1_option = arg_vec.get(0);
142 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
143 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
144 let field1 = field1_option_unwrapped_primitive.clone();
145 let field2_option = arg_vec.get(1);
146 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
147 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
148 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
149 Ok(highlevel::Command::Testexextfsi {
150 field1,
151 field2,
152 })
153 },
154 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
155 name == "TESTEXEXTFSIC"
156 && delimiter == &Some(String::from("="))
157 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
158 => {
159 let arg_vec = extract_vec_from_args(&arguments)?;
160 let field1_option = arg_vec.get(0);
161 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
162 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
163 let field1 = field1_option_unwrapped_primitive.clone();
164 let field2_option = arg_vec.get(1);
165 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
166 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
167 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
168 Ok(highlevel::Command::Testexextfsic {
169 field1,
170 field2,
171 })
172 },
173 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
174 name == "TESTIO"
175 && delimiter == &Some(String::from("="))
176 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
177 => {
178 let arg_vec = extract_vec_from_args(&arguments)?;
179 let field1_option = arg_vec.get(0);
180 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
181 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
182 let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
183 let field2_option = arg_vec.get(1);
184 let field2 = match field2_option {
185 Some(field2_option_unwrapped) if !field2_option_unwrapped.is_empty() => {
186 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
187 let field2_unwrapped = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
188 Some(field2_unwrapped)
189 }
190 _ => None,
191 };
192 Ok(highlevel::Command::Testio {
193 field1,
194 field2,
195 })
196 },
197 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
198 name == "TESTL"
199 && delimiter == &Some(String::from("="))
200 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
201 => {
202 let arg_vec = extract_vec_from_args(&arguments)?;
203 let mut field = Vec::new();
204 for field_element_raw in arg_vec[0..].into_iter() {
205 let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
206 let field_element_option_unwrapped = field_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
207 let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
208 let field_element = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
209 field.push(field_element);
210 }
211 Ok(highlevel::Command::Testl {
212 field,
213 })
214 },
215 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
216 name == "TESTOL"
217 && delimiter == &Some(String::from("="))
218 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
219 => {
220 let arg_vec = extract_vec_from_args(&arguments)?;
221 let mut field = Vec::new();
222 for field_element_raw in arg_vec[0..].into_iter() {
223 let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
224 let field_element = match field_element_option {
225 Some(field_element_option_unwrapped) if !field_element_option_unwrapped.is_empty() => {
226 let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
227 let field_element_unwrapped = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
228 Some(field_element_unwrapped)
229 }
230 _ => None,
231 };
232 field.push(field_element);
233 }
234 Ok(highlevel::Command::Testol {
235 field,
236 })
237 },
238 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
239 name == "TESTM"
240 && delimiter == &Some(String::from("="))
241 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
242 => {
243 let arg_vec = extract_vec_from_args(&arguments)?;
244 let mut field = std::collections::HashMap::new();
245 for field_element in arg_vec[0..].into_iter() {
246 let field_element_primitive = extract_key_from_field(field_element, &arguments)?;
247 let field_key = extract_int_from_primitive(field_element_primitive, &arguments)?;
248 let field_element_primitive = extract_value_from_field(field_element, &arguments)?;
249 let field_value = field_element_primitive.clone();
250 let _ = field.insert(field_key, field_value);
251 }
252 Ok(highlevel::Command::Testm {
253 field,
254 })
255 },
256 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
257 name == "TESTP"
258 && delimiter == &Some(String::from("="))
259 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
260 => {
261 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
262 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
263 let field_option = arg_vec.get(0);
264 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
265 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
266 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
267 Ok(highlevel::Command::Testp {
268 field,
269 })
270 },
271 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
272 name == "TESTPP"
273 && delimiter == &Some(String::from("="))
274 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
275 => {
276 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
277 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
278 let field1_option = arg_vec.get(0);
279 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
280 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
281 let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
282 let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
283 let field2_option = arg_vec.get(0);
284 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
285 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
286 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
287 let field3_option = arg_vec.get(1);
288 let field3_option_unwrapped = field3_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
289 let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
290 let field3 = field3_option_unwrapped_primitive.clone();
291 Ok(highlevel::Command::Testpp {
292 field1,
293 field2,
294 field3,
295 })
296 },
297 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
298 name == "TESTPMPIL"
299 && delimiter == &Some(String::from("="))
300 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
301 => {
302 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
303 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
304 let mut field1 = std::collections::HashMap::new();
305 for field1_element in arg_vec[0..].into_iter() {
306 let field1_element_primitive = extract_key_from_field(field1_element, &arguments)?;
307 let field1_key = extract_int_from_primitive(field1_element_primitive, &arguments)?;
308 let field1_element_primitive = extract_value_from_field(field1_element, &arguments)?;
309 let field1_value = field1_element_primitive.clone();
310 let _ = field1.insert(field1_key, field1_value);
311 }
312 let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
313 let field2_option = arg_vec.get(0);
314 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
315 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
316 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
317 let mut field3 = Vec::new();
318 for field3_element_raw in arg_vec[1..].into_iter() {
319 let field3_element_option = if field3_element_raw.is_empty() { None } else { Some(field3_element_raw) };
320 let field3_element_option_unwrapped = field3_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
321 let field3_element_option_unwrapped_primitive = extract_primitive_from_field(field3_element_option_unwrapped, &arguments)?;
322 let field3_element = extract_int_from_primitive(field3_element_option_unwrapped_primitive, &arguments)?;
323 field3.push(field3_element);
324 }
325 Ok(highlevel::Command::Testpmpil {
326 field1,
327 field2,
328 field3,
329 })
330 },
331 lowlevel::Command::Read { name, is_extension: false, ..} if
332 name == "TESTR"
333 => {
334 Ok(highlevel::Command::TestrRead {})
335 },
336 lowlevel::Command::Read { name, is_extension: true, ..} if
337 name == "TESTREX"
338 => {
339 Ok(highlevel::Command::TestrexRead {})
340 },
341 lowlevel::Command::Test { name, is_extension: false, ..} if
342 name == "TESTT"
343 => {
344 Ok(highlevel::Command::TesttTest {})
345 },
346 lowlevel::Command::Test { name, is_extension: true, ..} if
347 name == "TESTTEX"
348 => {
349 Ok(highlevel::Command::TesttexTest {})
350 },
351 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
352 name == "TESTENUM"
353 && delimiter == &Some(String::from("="))
354 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
355 => {
356 let arg_vec = extract_vec_from_args(&arguments)?;
357 let field_option = arg_vec.get(0);
358 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
359 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
360 let field_option_unwrapped_int = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
361 let field = super::types::TestOneVariantComma::from_i64(field_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
362 Ok(highlevel::Command::Testenum {
363 field,
364 })
365 },
366 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
367 name == "TESTBOOL"
368 && delimiter == &Some(String::from("="))
369 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
370 => {
371 let arg_vec = extract_vec_from_args(&arguments)?;
372 let field_option = arg_vec.get(0);
373 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
374 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
375 let field_option_unwrapped_int = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
376 let field = field_option_unwrapped_int != 0;
377 Ok(highlevel::Command::Testbool {
378 field,
379 })
380 },
381 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
382 name == "TESTOTHERFILE"
383 && delimiter == &None
384 => {
385 Ok(highlevel::Command::Testotherfile {
386 })
387 },
388 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
389 name == "BRSF"
390 && delimiter == &Some(String::from("="))
391 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
392 => {
393 let arg_vec = extract_vec_from_args(&arguments)?;
394 let features_option = arg_vec.get(0);
395 let features_option_unwrapped = features_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
396 let features_option_unwrapped_primitive = extract_primitive_from_field(features_option_unwrapped, &arguments)?;
397 let features = extract_int_from_primitive(features_option_unwrapped_primitive, &arguments)?;
398 Ok(highlevel::Command::Brsf {
399 features,
400 })
401 },
402 lowlevel::Command::Test { name, is_extension: true, ..} if
403 name == "CIND"
404 => {
405 Ok(highlevel::Command::CindTest {})
406 },
407 lowlevel::Command::Read { name, is_extension: true, ..} if
408 name == "CIND"
409 => {
410 Ok(highlevel::Command::CindRead {})
411 },
412 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
413 name == "CLCC"
414 && delimiter == &None
415 => {
416 Ok(highlevel::Command::Clcc {
417 })
418 },
419 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
420 name == "BCC"
421 && delimiter == &None
422 => {
423 Ok(highlevel::Command::Bcc {
424 })
425 },
426 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
427 name == "BCS"
428 && delimiter == &Some(String::from("="))
429 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
430 => {
431 let arg_vec = extract_vec_from_args(&arguments)?;
432 let codec_option = arg_vec.get(0);
433 let codec_option_unwrapped = codec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
434 let codec_option_unwrapped_primitive = extract_primitive_from_field(codec_option_unwrapped, &arguments)?;
435 let codec = extract_int_from_primitive(codec_option_unwrapped_primitive, &arguments)?;
436 Ok(highlevel::Command::Bcs {
437 codec,
438 })
439 },
440 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
441 name == "BAC"
442 && delimiter == &Some(String::from("="))
443 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
444 => {
445 let arg_vec = extract_vec_from_args(&arguments)?;
446 let mut codecs = Vec::new();
447 for codecs_element_raw in arg_vec[0..].into_iter() {
448 let codecs_element_option = if codecs_element_raw.is_empty() { None } else { Some(codecs_element_raw) };
449 let codecs_element_option_unwrapped = codecs_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
450 let codecs_element_option_unwrapped_primitive = extract_primitive_from_field(codecs_element_option_unwrapped, &arguments)?;
451 let codecs_element = extract_int_from_primitive(codecs_element_option_unwrapped_primitive, &arguments)?;
452 codecs.push(codecs_element);
453 }
454 Ok(highlevel::Command::Bac {
455 codecs,
456 })
457 },
458 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
459 name == "BIND"
460 && delimiter == &Some(String::from("="))
461 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
462 => {
463 let arg_vec = extract_vec_from_args(&arguments)?;
464 let mut indicators = Vec::new();
465 for indicators_element_raw in arg_vec[0..].into_iter() {
466 let indicators_element_option = if indicators_element_raw.is_empty() { None } else { Some(indicators_element_raw) };
467 let indicators_element_option_unwrapped = indicators_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
468 let indicators_element_option_unwrapped_primitive = extract_primitive_from_field(indicators_element_option_unwrapped, &arguments)?;
469 let indicators_element = extract_int_from_primitive(indicators_element_option_unwrapped_primitive, &arguments)?;
470 indicators.push(indicators_element);
471 }
472 Ok(highlevel::Command::Bind {
473 indicators,
474 })
475 },
476 lowlevel::Command::Test { name, is_extension: true, ..} if
477 name == "BIND"
478 => {
479 Ok(highlevel::Command::BindTest {})
480 },
481 lowlevel::Command::Read { name, is_extension: true, ..} if
482 name == "BIND"
483 => {
484 Ok(highlevel::Command::BindRead {})
485 },
486 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
487 name == "BIEV"
488 && delimiter == &Some(String::from("="))
489 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
490 => {
491 let arg_vec = extract_vec_from_args(&arguments)?;
492 let anum_option = arg_vec.get(0);
493 let anum_option_unwrapped = anum_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
494 let anum_option_unwrapped_primitive = extract_primitive_from_field(anum_option_unwrapped, &arguments)?;
495 let anum_option_unwrapped_int = extract_int_from_primitive(anum_option_unwrapped_primitive, &arguments)?;
496 let anum = super::types::BluetoothHFIndicator::from_i64(anum_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
497 let value_option = arg_vec.get(1);
498 let value_option_unwrapped = value_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
499 let value_option_unwrapped_primitive = extract_primitive_from_field(value_option_unwrapped, &arguments)?;
500 let value = extract_int_from_primitive(value_option_unwrapped_primitive, &arguments)?;
501 Ok(highlevel::Command::Biev {
502 anum,
503 value,
504 })
505 },
506 lowlevel::Command::Test { name, is_extension: true, ..} if
507 name == "CHLD"
508 => {
509 Ok(highlevel::Command::ChldTest {})
510 },
511 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
512 name == "CMER"
513 && delimiter == &Some(String::from("="))
514 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
515 => {
516 let arg_vec = extract_vec_from_args(&arguments)?;
517 let mode_option = arg_vec.get(0);
518 let mode_option_unwrapped = mode_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
519 let mode_option_unwrapped_primitive = extract_primitive_from_field(mode_option_unwrapped, &arguments)?;
520 let mode = extract_int_from_primitive(mode_option_unwrapped_primitive, &arguments)?;
521 let keyp_option = arg_vec.get(1);
522 let keyp_option_unwrapped = keyp_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
523 let keyp_option_unwrapped_primitive = extract_primitive_from_field(keyp_option_unwrapped, &arguments)?;
524 let keyp = extract_int_from_primitive(keyp_option_unwrapped_primitive, &arguments)?;
525 let disp_option = arg_vec.get(2);
526 let disp_option_unwrapped = disp_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
527 let disp_option_unwrapped_primitive = extract_primitive_from_field(disp_option_unwrapped, &arguments)?;
528 let disp = extract_int_from_primitive(disp_option_unwrapped_primitive, &arguments)?;
529 let ind_option = arg_vec.get(3);
530 let ind_option_unwrapped = ind_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
531 let ind_option_unwrapped_primitive = extract_primitive_from_field(ind_option_unwrapped, &arguments)?;
532 let ind = extract_int_from_primitive(ind_option_unwrapped_primitive, &arguments)?;
533 Ok(highlevel::Command::Cmer {
534 mode,
535 keyp,
536 disp,
537 ind,
538 })
539 },
540 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
541 name == "NREC"
542 && delimiter == &Some(String::from("="))
543 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
544 => {
545 let arg_vec = extract_vec_from_args(&arguments)?;
546 let nrec_option = arg_vec.get(0);
547 let nrec_option_unwrapped = nrec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
548 let nrec_option_unwrapped_primitive = extract_primitive_from_field(nrec_option_unwrapped, &arguments)?;
549 let nrec_option_unwrapped_int = extract_int_from_primitive(nrec_option_unwrapped_primitive, &arguments)?;
550 let nrec = nrec_option_unwrapped_int != 0;
551 Ok(highlevel::Command::Nrec {
552 nrec,
553 })
554 },
555 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
556 name == "COPS"
557 && delimiter == &Some(String::from("="))
558 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
559 => {
560 let arg_vec = extract_vec_from_args(&arguments)?;
561 let three_option = arg_vec.get(0);
562 let three_option_unwrapped = three_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
563 let three_option_unwrapped_primitive = extract_primitive_from_field(three_option_unwrapped, &arguments)?;
564 let three = extract_int_from_primitive(three_option_unwrapped_primitive, &arguments)?;
565 let format_option = arg_vec.get(1);
566 let format_option_unwrapped = format_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
567 let format_option_unwrapped_primitive = extract_primitive_from_field(format_option_unwrapped, &arguments)?;
568 let format_option_unwrapped_int = extract_int_from_primitive(format_option_unwrapped_primitive, &arguments)?;
569 let format = super::types::NetworkOperatorNameFormat::from_i64(format_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
570 Ok(highlevel::Command::Cops {
571 three,
572 format,
573 })
574 },
575 lowlevel::Command::Read { name, is_extension: true, ..} if
576 name == "COPS"
577 => {
578 Ok(highlevel::Command::CopsRead {})
579 },
580 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
581 name == "CMEE"
582 && delimiter == &Some(String::from("="))
583 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
584 => {
585 let arg_vec = extract_vec_from_args(&arguments)?;
586 let enable_option = arg_vec.get(0);
587 let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
588 let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
589 let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
590 let enable = enable_option_unwrapped_int != 0;
591 Ok(highlevel::Command::Cmee {
592 enable,
593 })
594 },
595 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
596 name == "CCWA"
597 && delimiter == &Some(String::from("="))
598 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
599 => {
600 let arg_vec = extract_vec_from_args(&arguments)?;
601 let enable_option = arg_vec.get(0);
602 let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
603 let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
604 let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
605 let enable = enable_option_unwrapped_int != 0;
606 Ok(highlevel::Command::Ccwa {
607 enable,
608 })
609 },
610 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
611 name == "CLIP"
612 && delimiter == &Some(String::from("="))
613 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
614 => {
615 let arg_vec = extract_vec_from_args(&arguments)?;
616 let enable_option = arg_vec.get(0);
617 let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
618 let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
619 let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
620 let enable = enable_option_unwrapped_int != 0;
621 Ok(highlevel::Command::Clip {
622 enable,
623 })
624 },
625 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
626 name == "CNUM"
627 && delimiter == &None
628 => {
629 Ok(highlevel::Command::Cnum {
630 })
631 },
632 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
633 name == "VTS"
634 && delimiter == &Some(String::from("="))
635 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
636 => {
637 let arg_vec = extract_vec_from_args(&arguments)?;
638 let code_option = arg_vec.get(0);
639 let code_option_unwrapped = code_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
640 let code_option_unwrapped_primitive = extract_primitive_from_field(code_option_unwrapped, &arguments)?;
641 let code = code_option_unwrapped_primitive.clone();
642 Ok(highlevel::Command::Vts {
643 code,
644 })
645 },
646 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
647 name == "VGS"
648 && delimiter == &Some(String::from("="))
649 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
650 => {
651 let arg_vec = extract_vec_from_args(&arguments)?;
652 let level_option = arg_vec.get(0);
653 let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
654 let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
655 let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
656 Ok(highlevel::Command::Vgs {
657 level,
658 })
659 },
660 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
661 name == "VGM"
662 && delimiter == &Some(String::from("="))
663 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
664 => {
665 let arg_vec = extract_vec_from_args(&arguments)?;
666 let level_option = arg_vec.get(0);
667 let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
668 let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
669 let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
670 Ok(highlevel::Command::Vgm {
671 level,
672 })
673 },
674 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
675 name == "BIA"
676 && delimiter == &Some(String::from("="))
677 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
678 => {
679 let arg_vec = extract_vec_from_args(&arguments)?;
680 let mut indrep = Vec::new();
681 for indrep_element_raw in arg_vec[0..].into_iter() {
682 let indrep_element_option = if indrep_element_raw.is_empty() { None } else { Some(indrep_element_raw) };
683 let indrep_element = match indrep_element_option {
684 Some(indrep_element_option_unwrapped) if !indrep_element_option_unwrapped.is_empty() => {
685 let indrep_element_option_unwrapped_primitive = extract_primitive_from_field(indrep_element_option_unwrapped, &arguments)?;
686 let indrep_element_option_unwrapped_int = extract_int_from_primitive(indrep_element_option_unwrapped_primitive, &arguments)?;
687 let indrep_element_unwrapped = indrep_element_option_unwrapped_int != 0;
688 Some(indrep_element_unwrapped)
689 }
690 _ => None,
691 };
692 indrep.push(indrep_element);
693 }
694 Ok(highlevel::Command::Bia {
695 indrep,
696 })
697 },
698 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
699 name == "A"
700 && delimiter == &None
701 => {
702 Ok(highlevel::Command::Answer {
703 })
704 },
705 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
706 name == "CHUP"
707 && delimiter == &None
708 => {
709 Ok(highlevel::Command::Chup {
710 })
711 },
712 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
713 name == "CHLD"
714 && delimiter == &Some(String::from("="))
715 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
716 => {
717 let arg_vec = extract_vec_from_args(&arguments)?;
718 let command_option = arg_vec.get(0);
719 let command_option_unwrapped = command_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
720 let command_option_unwrapped_primitive = extract_primitive_from_field(command_option_unwrapped, &arguments)?;
721 let command = command_option_unwrapped_primitive.clone();
722 Ok(highlevel::Command::Chld {
723 command,
724 })
725 },
726 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
727 name == "D"
728 && delimiter == &None
729 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
730 => {
731 let arg_vec = extract_vec_from_args(&arguments)?;
732 let number_option = arg_vec.get(0);
733 let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
734 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
735 let number = number_option_unwrapped_primitive.clone();
736 Ok(highlevel::Command::AtdNumber {
737 number,
738 })
739 },
740 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
741 name == "D"
742 && delimiter == &Some(String::from(">"))
743 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
744 => {
745 let arg_vec = extract_vec_from_args(&arguments)?;
746 let location_option = arg_vec.get(0);
747 let location_option_unwrapped = location_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
748 let location_option_unwrapped_primitive = extract_primitive_from_field(location_option_unwrapped, &arguments)?;
749 let location = location_option_unwrapped_primitive.clone();
750 Ok(highlevel::Command::AtdMemory {
751 location,
752 })
753 },
754 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
755 name == "BLDN"
756 && delimiter == &None
757 => {
758 Ok(highlevel::Command::Bldn {
759 })
760 },
761 _ => Err(DeserializeErrorCause::UnknownCommand(lowlevel.clone())),
762 }
763}
764
765pub fn raise_success(lowlevel: &lowlevel::Response) -> Result<highlevel::Success, DeserializeErrorCause> {
767 match lowlevel {
768 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
769 name == "TEST"
770 && delimiter == &Some(String::from(":"))
771 => {
772 Ok(highlevel::Success::Test {
773 })
774 },
775 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
776 name == "TESTNOD"
777 && delimiter == &None
778 => {
779 Ok(highlevel::Success::Testnod {
780 })
781 },
782 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
783 name == "TESTN"
784 && delimiter == &Some(String::from(":"))
785 => {
786 Ok(highlevel::Success::TestResponse {
787 })
788 },
789 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
790 name == "TESTEXT"
791 && delimiter == &Some(String::from(":"))
792 => {
793 Ok(highlevel::Success::Testext {
794 })
795 },
796 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
797 name == "TESTEXTNOD"
798 && delimiter == &None
799 => {
800 Ok(highlevel::Success::Testextnod {
801 })
802 },
803 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
804 name == "TESTI"
805 && delimiter == &Some(String::from(":"))
806 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
807 => {
808 let arg_vec = extract_vec_from_args(&arguments)?;
809 let field_option = arg_vec.get(0);
810 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
811 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
812 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
813 Ok(highlevel::Success::Testi {
814 field,
815 })
816 },
817 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
818 name == "TESTINOD"
819 && delimiter == &None
820 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
821 => {
822 let arg_vec = extract_vec_from_args(&arguments)?;
823 let field_option = arg_vec.get(0);
824 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
825 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
826 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
827 Ok(highlevel::Success::Testinod {
828 field,
829 })
830 },
831 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
832 name == "TESTIC"
833 && delimiter == &Some(String::from(":"))
834 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
835 => {
836 let arg_vec = extract_vec_from_args(&arguments)?;
837 let field_option = arg_vec.get(0);
838 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
839 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
840 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
841 Ok(highlevel::Success::Testic {
842 field,
843 })
844 },
845 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
846 name == "TESTS"
847 && delimiter == &Some(String::from(":"))
848 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
849 => {
850 let arg_vec = extract_vec_from_args(&arguments)?;
851 let field_option = arg_vec.get(0);
852 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
853 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
854 let field = field_option_unwrapped_primitive.clone();
855 Ok(highlevel::Success::Tests {
856 field,
857 })
858 },
859 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
860 name == "TESTSI"
861 && delimiter == &Some(String::from(":"))
862 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
863 => {
864 let arg_vec = extract_vec_from_args(&arguments)?;
865 let field1_option = arg_vec.get(0);
866 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
867 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
868 let field1 = field1_option_unwrapped_primitive.clone();
869 let field2_option = arg_vec.get(1);
870 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
871 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
872 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
873 Ok(highlevel::Success::Testsi {
874 field1,
875 field2,
876 })
877 },
878 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
879 name == "TESTSIC"
880 && delimiter == &Some(String::from(":"))
881 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
882 => {
883 let arg_vec = extract_vec_from_args(&arguments)?;
884 let field1_option = arg_vec.get(0);
885 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
886 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
887 let field1 = field1_option_unwrapped_primitive.clone();
888 let field2_option = arg_vec.get(1);
889 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
890 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
891 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
892 Ok(highlevel::Success::Testsic {
893 field1,
894 field2,
895 })
896 },
897 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
898 name == "TESTIO"
899 && delimiter == &Some(String::from(":"))
900 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
901 => {
902 let arg_vec = extract_vec_from_args(&arguments)?;
903 let field1_option = arg_vec.get(0);
904 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
905 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
906 let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
907 let field2_option = arg_vec.get(1);
908 let field2 = match field2_option {
909 Some(field2_option_unwrapped) if !field2_option_unwrapped.is_empty() => {
910 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
911 let field2_unwrapped = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
912 Some(field2_unwrapped)
913 }
914 _ => None,
915 };
916 Ok(highlevel::Success::Testio {
917 field1,
918 field2,
919 })
920 },
921 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
922 name == "TESTL"
923 && delimiter == &Some(String::from(":"))
924 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
925 => {
926 let arg_vec = extract_vec_from_args(&arguments)?;
927 let mut field = Vec::new();
928 for field_element_raw in arg_vec[0..].into_iter() {
929 let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
930 let field_element_option_unwrapped = field_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
931 let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
932 let field_element = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
933 field.push(field_element);
934 }
935 Ok(highlevel::Success::Testl {
936 field,
937 })
938 },
939 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
940 name == "TESTOL"
941 && delimiter == &Some(String::from(":"))
942 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
943 => {
944 let arg_vec = extract_vec_from_args(&arguments)?;
945 let mut field = Vec::new();
946 for field_element_raw in arg_vec[0..].into_iter() {
947 let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
948 let field_element = match field_element_option {
949 Some(field_element_option_unwrapped) if !field_element_option_unwrapped.is_empty() => {
950 let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
951 let field_element_unwrapped = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
952 Some(field_element_unwrapped)
953 }
954 _ => None,
955 };
956 field.push(field_element);
957 }
958 Ok(highlevel::Success::Testol {
959 field,
960 })
961 },
962 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
963 name == "TESTM"
964 && delimiter == &Some(String::from(":"))
965 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
966 => {
967 let arg_vec = extract_vec_from_args(&arguments)?;
968 let mut field = std::collections::HashMap::new();
969 for field_element in arg_vec[0..].into_iter() {
970 let field_element_primitive = extract_key_from_field(field_element, &arguments)?;
971 let field_key = extract_int_from_primitive(field_element_primitive, &arguments)?;
972 let field_element_primitive = extract_value_from_field(field_element, &arguments)?;
973 let field_value = field_element_primitive.clone();
974 let _ = field.insert(field_key, field_value);
975 }
976 Ok(highlevel::Success::Testm {
977 field,
978 })
979 },
980 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
981 name == "TESTP"
982 && delimiter == &Some(String::from(":"))
983 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
984 => {
985 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
986 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
987 let field_option = arg_vec.get(0);
988 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
989 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
990 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
991 Ok(highlevel::Success::Testp {
992 field,
993 })
994 },
995 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
996 name == "TESTPP"
997 && delimiter == &Some(String::from(":"))
998 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
999 => {
1000 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1001 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1002 let field1_option = arg_vec.get(0);
1003 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1004 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
1005 let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
1006 let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1007 let field2_option = arg_vec.get(0);
1008 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1009 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
1010 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
1011 let field3_option = arg_vec.get(1);
1012 let field3_option_unwrapped = field3_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1013 let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
1014 let field3 = field3_option_unwrapped_primitive.clone();
1015 Ok(highlevel::Success::Testpp {
1016 field1,
1017 field2,
1018 field3,
1019 })
1020 },
1021 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1022 name == "TESTPMPIL"
1023 && delimiter == &Some(String::from(":"))
1024 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1025 => {
1026 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1027 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1028 let mut field1 = std::collections::HashMap::new();
1029 for field1_element in arg_vec[0..].into_iter() {
1030 let field1_element_primitive = extract_key_from_field(field1_element, &arguments)?;
1031 let field1_key = extract_int_from_primitive(field1_element_primitive, &arguments)?;
1032 let field1_element_primitive = extract_value_from_field(field1_element, &arguments)?;
1033 let field1_value = field1_element_primitive.clone();
1034 let _ = field1.insert(field1_key, field1_value);
1035 }
1036 let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1037 let field2_option = arg_vec.get(0);
1038 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1039 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
1040 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
1041 let mut field3 = Vec::new();
1042 for field3_element_raw in arg_vec[1..].into_iter() {
1043 let field3_element_option = if field3_element_raw.is_empty() { None } else { Some(field3_element_raw) };
1044 let field3_element_option_unwrapped = field3_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1045 let field3_element_option_unwrapped_primitive = extract_primitive_from_field(field3_element_option_unwrapped, &arguments)?;
1046 let field3_element = extract_int_from_primitive(field3_element_option_unwrapped_primitive, &arguments)?;
1047 field3.push(field3_element);
1048 }
1049 Ok(highlevel::Success::Testpmpil {
1050 field1,
1051 field2,
1052 field3,
1053 })
1054 },
1055 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1056 name == "SAME"
1057 && delimiter == &Some(String::from(":"))
1058 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1059 => {
1060 let arg_vec = extract_vec_from_args(&arguments)?;
1061 let field_option = arg_vec.get(0);
1062 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1063 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
1064 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
1065 Ok(highlevel::Success::SameOne {
1066 field,
1067 })
1068 },
1069 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1070 name == "SAME"
1071 && delimiter == &Some(String::from(":"))
1072 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1073 => {
1074 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1075 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1076 let field_option = arg_vec.get(0);
1077 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1078 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
1079 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
1080 Ok(highlevel::Success::SameTwo {
1081 field,
1082 })
1083 },
1084 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1085 name == "BRSF"
1086 && delimiter == &Some(String::from(":"))
1087 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1088 => {
1089 let arg_vec = extract_vec_from_args(&arguments)?;
1090 let features_option = arg_vec.get(0);
1091 let features_option_unwrapped = features_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1092 let features_option_unwrapped_primitive = extract_primitive_from_field(features_option_unwrapped, &arguments)?;
1093 let features = extract_int_from_primitive(features_option_unwrapped_primitive, &arguments)?;
1094 Ok(highlevel::Success::Brsf {
1095 features,
1096 })
1097 },
1098 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1099 name == "CIND"
1100 && delimiter == &Some(String::from(":"))
1101 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1102 => {
1103 let arg_vec = extract_vec_from_args(&arguments)?;
1104 let service_option = arg_vec.get(0);
1105 let service_option_unwrapped = service_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1106 let service_option_unwrapped_primitive = extract_primitive_from_field(service_option_unwrapped, &arguments)?;
1107 let service_option_unwrapped_int = extract_int_from_primitive(service_option_unwrapped_primitive, &arguments)?;
1108 let service = service_option_unwrapped_int != 0;
1109 let call_option = arg_vec.get(1);
1110 let call_option_unwrapped = call_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1111 let call_option_unwrapped_primitive = extract_primitive_from_field(call_option_unwrapped, &arguments)?;
1112 let call_option_unwrapped_int = extract_int_from_primitive(call_option_unwrapped_primitive, &arguments)?;
1113 let call = call_option_unwrapped_int != 0;
1114 let callsetup_option = arg_vec.get(2);
1115 let callsetup_option_unwrapped = callsetup_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1116 let callsetup_option_unwrapped_primitive = extract_primitive_from_field(callsetup_option_unwrapped, &arguments)?;
1117 let callsetup = extract_int_from_primitive(callsetup_option_unwrapped_primitive, &arguments)?;
1118 let callheld_option = arg_vec.get(3);
1119 let callheld_option_unwrapped = callheld_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1120 let callheld_option_unwrapped_primitive = extract_primitive_from_field(callheld_option_unwrapped, &arguments)?;
1121 let callheld = extract_int_from_primitive(callheld_option_unwrapped_primitive, &arguments)?;
1122 let signal_option = arg_vec.get(4);
1123 let signal_option_unwrapped = signal_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1124 let signal_option_unwrapped_primitive = extract_primitive_from_field(signal_option_unwrapped, &arguments)?;
1125 let signal = extract_int_from_primitive(signal_option_unwrapped_primitive, &arguments)?;
1126 let roam_option = arg_vec.get(5);
1127 let roam_option_unwrapped = roam_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1128 let roam_option_unwrapped_primitive = extract_primitive_from_field(roam_option_unwrapped, &arguments)?;
1129 let roam_option_unwrapped_int = extract_int_from_primitive(roam_option_unwrapped_primitive, &arguments)?;
1130 let roam = roam_option_unwrapped_int != 0;
1131 let battchg_option = arg_vec.get(6);
1132 let battchg_option_unwrapped = battchg_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1133 let battchg_option_unwrapped_primitive = extract_primitive_from_field(battchg_option_unwrapped, &arguments)?;
1134 let battchg = extract_int_from_primitive(battchg_option_unwrapped_primitive, &arguments)?;
1135 Ok(highlevel::Success::Cind {
1136 service,
1137 call,
1138 callsetup,
1139 callheld,
1140 signal,
1141 roam,
1142 battchg,
1143 })
1144 },
1145 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1146 name == "CLCC"
1147 && delimiter == &Some(String::from(":"))
1148 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1149 => {
1150 let arg_vec = extract_vec_from_args(&arguments)?;
1151 let index_option = arg_vec.get(0);
1152 let index_option_unwrapped = index_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1153 let index_option_unwrapped_primitive = extract_primitive_from_field(index_option_unwrapped, &arguments)?;
1154 let index = extract_int_from_primitive(index_option_unwrapped_primitive, &arguments)?;
1155 let dir_option = arg_vec.get(1);
1156 let dir_option_unwrapped = dir_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1157 let dir_option_unwrapped_primitive = extract_primitive_from_field(dir_option_unwrapped, &arguments)?;
1158 let dir = extract_int_from_primitive(dir_option_unwrapped_primitive, &arguments)?;
1159 let status_option = arg_vec.get(2);
1160 let status_option_unwrapped = status_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1161 let status_option_unwrapped_primitive = extract_primitive_from_field(status_option_unwrapped, &arguments)?;
1162 let status = extract_int_from_primitive(status_option_unwrapped_primitive, &arguments)?;
1163 let mode_option = arg_vec.get(3);
1164 let mode_option_unwrapped = mode_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1165 let mode_option_unwrapped_primitive = extract_primitive_from_field(mode_option_unwrapped, &arguments)?;
1166 let mode = extract_int_from_primitive(mode_option_unwrapped_primitive, &arguments)?;
1167 let mpty_option = arg_vec.get(4);
1168 let mpty_option_unwrapped = mpty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1169 let mpty_option_unwrapped_primitive = extract_primitive_from_field(mpty_option_unwrapped, &arguments)?;
1170 let mpty = extract_int_from_primitive(mpty_option_unwrapped_primitive, &arguments)?;
1171 let number_option = arg_vec.get(5);
1172 let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1173 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1174 let number = number_option_unwrapped_primitive.clone();
1175 let ty_option = arg_vec.get(6);
1176 let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1177 let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1178 let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1179 Ok(highlevel::Success::Clcc {
1180 index,
1181 dir,
1182 status,
1183 mode,
1184 mpty,
1185 number,
1186 ty,
1187 })
1188 },
1189 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1190 name == "BCS"
1191 && delimiter == &Some(String::from(":"))
1192 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1193 => {
1194 let arg_vec = extract_vec_from_args(&arguments)?;
1195 let codec_option = arg_vec.get(0);
1196 let codec_option_unwrapped = codec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1197 let codec_option_unwrapped_primitive = extract_primitive_from_field(codec_option_unwrapped, &arguments)?;
1198 let codec = extract_int_from_primitive(codec_option_unwrapped_primitive, &arguments)?;
1199 Ok(highlevel::Success::Bcs {
1200 codec,
1201 })
1202 },
1203 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1204 name == "BIND"
1205 && delimiter == &Some(String::from(":"))
1206 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1207 => {
1208 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1209 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1210 let mut indicators = Vec::new();
1211 for indicators_element_raw in arg_vec[0..].into_iter() {
1212 let indicators_element_option = if indicators_element_raw.is_empty() { None } else { Some(indicators_element_raw) };
1213 let indicators_element_option_unwrapped = indicators_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1214 let indicators_element_option_unwrapped_primitive = extract_primitive_from_field(indicators_element_option_unwrapped, &arguments)?;
1215 let indicators_element_option_unwrapped_int = extract_int_from_primitive(indicators_element_option_unwrapped_primitive, &arguments)?;
1216 let indicators_element = super::types::BluetoothHFIndicator::from_i64(indicators_element_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1217 indicators.push(indicators_element);
1218 }
1219 Ok(highlevel::Success::BindList {
1220 indicators,
1221 })
1222 },
1223 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1224 name == "BIND"
1225 && delimiter == &Some(String::from(":"))
1226 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1227 => {
1228 let arg_vec = extract_vec_from_args(&arguments)?;
1229 let anum_option = arg_vec.get(0);
1230 let anum_option_unwrapped = anum_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1231 let anum_option_unwrapped_primitive = extract_primitive_from_field(anum_option_unwrapped, &arguments)?;
1232 let anum_option_unwrapped_int = extract_int_from_primitive(anum_option_unwrapped_primitive, &arguments)?;
1233 let anum = super::types::BluetoothHFIndicator::from_i64(anum_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1234 let state_option = arg_vec.get(1);
1235 let state_option_unwrapped = state_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1236 let state_option_unwrapped_primitive = extract_primitive_from_field(state_option_unwrapped, &arguments)?;
1237 let state_option_unwrapped_int = extract_int_from_primitive(state_option_unwrapped_primitive, &arguments)?;
1238 let state = state_option_unwrapped_int != 0;
1239 Ok(highlevel::Success::BindStatus {
1240 anum,
1241 state,
1242 })
1243 },
1244 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1245 name == "CHLD"
1246 && delimiter == &Some(String::from(":"))
1247 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1248 => {
1249 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1250 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1251 let mut commands = Vec::new();
1252 for commands_element_raw in arg_vec[0..].into_iter() {
1253 let commands_element_option = if commands_element_raw.is_empty() { None } else { Some(commands_element_raw) };
1254 let commands_element_option_unwrapped = commands_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1255 let commands_element_option_unwrapped_primitive = extract_primitive_from_field(commands_element_option_unwrapped, &arguments)?;
1256 let commands_element = commands_element_option_unwrapped_primitive.clone();
1257 commands.push(commands_element);
1258 }
1259 Ok(highlevel::Success::Chld {
1260 commands,
1261 })
1262 },
1263 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1264 name == "COPS"
1265 && delimiter == &Some(String::from(":"))
1266 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1267 => {
1268 let arg_vec = extract_vec_from_args(&arguments)?;
1269 let format_option = arg_vec.get(0);
1270 let format_option_unwrapped = format_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1271 let format_option_unwrapped_primitive = extract_primitive_from_field(format_option_unwrapped, &arguments)?;
1272 let format_option_unwrapped_int = extract_int_from_primitive(format_option_unwrapped_primitive, &arguments)?;
1273 let format = super::types::NetworkOperatorNameFormat::from_i64(format_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1274 let zero_option = arg_vec.get(1);
1275 let zero_option_unwrapped = zero_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1276 let zero_option_unwrapped_primitive = extract_primitive_from_field(zero_option_unwrapped, &arguments)?;
1277 let zero = extract_int_from_primitive(zero_option_unwrapped_primitive, &arguments)?;
1278 let operator_option = arg_vec.get(2);
1279 let operator_option_unwrapped = operator_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1280 let operator_option_unwrapped_primitive = extract_primitive_from_field(operator_option_unwrapped, &arguments)?;
1281 let operator = operator_option_unwrapped_primitive.clone();
1282 Ok(highlevel::Success::Cops {
1283 format,
1284 zero,
1285 operator,
1286 })
1287 },
1288 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1289 name == "CLIP"
1290 && delimiter == &Some(String::from(":"))
1291 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1292 => {
1293 let arg_vec = extract_vec_from_args(&arguments)?;
1294 let number_option = arg_vec.get(0);
1295 let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1296 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1297 let number = number_option_unwrapped_primitive.clone();
1298 let ty_option = arg_vec.get(1);
1299 let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1300 let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1301 let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1302 Ok(highlevel::Success::Clip {
1303 number,
1304 ty,
1305 })
1306 },
1307 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1308 name == "CNUM"
1309 && delimiter == &Some(String::from(":"))
1310 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1311 => {
1312 let arg_vec = extract_vec_from_args(&arguments)?;
1313 let alpha_option = arg_vec.get(0);
1314 let alpha_option_unwrapped = alpha_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1315 let alpha_option_unwrapped_primitive = extract_primitive_from_field(alpha_option_unwrapped, &arguments)?;
1316 let alpha = alpha_option_unwrapped_primitive.clone();
1317 let number_option = arg_vec.get(1);
1318 let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1319 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1320 let number = number_option_unwrapped_primitive.clone();
1321 let ty_option = arg_vec.get(2);
1322 let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1323 let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1324 let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1325 let speed_option = arg_vec.get(3);
1326 let speed_option_unwrapped = speed_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1327 let speed_option_unwrapped_primitive = extract_primitive_from_field(speed_option_unwrapped, &arguments)?;
1328 let speed = speed_option_unwrapped_primitive.clone();
1329 let service_option = arg_vec.get(4);
1330 let service_option_unwrapped = service_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1331 let service_option_unwrapped_primitive = extract_primitive_from_field(service_option_unwrapped, &arguments)?;
1332 let service = extract_int_from_primitive(service_option_unwrapped_primitive, &arguments)?;
1333 Ok(highlevel::Success::Cnum {
1334 alpha,
1335 number,
1336 ty,
1337 speed,
1338 service,
1339 })
1340 },
1341 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1342 name == "VGS"
1343 && delimiter == &Some(String::from(":"))
1344 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1345 => {
1346 let arg_vec = extract_vec_from_args(&arguments)?;
1347 let level_option = arg_vec.get(0);
1348 let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1349 let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
1350 let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
1351 Ok(highlevel::Success::Vgs {
1352 level,
1353 })
1354 },
1355 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1356 name == "VGM"
1357 && delimiter == &Some(String::from(":"))
1358 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1359 => {
1360 let arg_vec = extract_vec_from_args(&arguments)?;
1361 let level_option = arg_vec.get(0);
1362 let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1363 let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
1364 let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
1365 Ok(highlevel::Success::Vgm {
1366 level,
1367 })
1368 },
1369 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1370 name == "CIEV"
1371 && delimiter == &Some(String::from(":"))
1372 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1373 => {
1374 let arg_vec = extract_vec_from_args(&arguments)?;
1375 let ind_option = arg_vec.get(0);
1376 let ind_option_unwrapped = ind_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1377 let ind_option_unwrapped_primitive = extract_primitive_from_field(ind_option_unwrapped, &arguments)?;
1378 let ind = extract_int_from_primitive(ind_option_unwrapped_primitive, &arguments)?;
1379 let value_option = arg_vec.get(1);
1380 let value_option_unwrapped = value_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1381 let value_option_unwrapped_primitive = extract_primitive_from_field(value_option_unwrapped, &arguments)?;
1382 let value = extract_int_from_primitive(value_option_unwrapped_primitive, &arguments)?;
1383 Ok(highlevel::Success::Ciev {
1384 ind,
1385 value,
1386 })
1387 },
1388 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1389 name == "CCWA"
1390 && delimiter == &Some(String::from(":"))
1391 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1392 => {
1393 let arg_vec = extract_vec_from_args(&arguments)?;
1394 let number_option = arg_vec.get(0);
1395 let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1396 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1397 let number = number_option_unwrapped_primitive.clone();
1398 let ty_option = arg_vec.get(1);
1399 let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1400 let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1401 let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1402 Ok(highlevel::Success::Ccwa {
1403 number,
1404 ty,
1405 })
1406 },
1407 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
1408 name == "RING"
1409 && delimiter == &None
1410 => {
1411 Ok(highlevel::Success::Ring {
1412 })
1413 },
1414 _ => Err(DeserializeErrorCause::UnknownResponse(lowlevel.clone())),
1415 }
1416}
1417
1418pub fn lower_command(highlevel: &highlevel::Command) -> lowlevel::Command {
1419 match highlevel {
1420 highlevel::Command::Testex { } => {
1421 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1422 lowlevel::Command::Execute { name: String::from("TESTEX"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1423 },
1424 highlevel::Command::Testexext { } => {
1425 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1426 lowlevel::Command::Execute { name: String::from("TESTEXEXT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1427 },
1428 highlevel::Command::TestCommand { } => {
1429 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1430 lowlevel::Command::Execute { name: String::from("TESTNEX"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1431 },
1432 highlevel::Command::Testexextfi {
1433 field,
1434 } => {
1435 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1436 let field_string = i64::to_string(&field);
1437 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1438 raw_arguments.push(field_primitive);
1439 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1440 lowlevel::Command::Execute { name: String::from("TESTEXEXTFI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1441 },
1442 highlevel::Command::Testexextfic {
1443 field,
1444 } => {
1445 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1446 let field_string = i64::to_string(&field);
1447 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1448 raw_arguments.push(field_primitive);
1449 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1450 lowlevel::Command::Execute { name: String::from("TESTEXEXTFIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1451 },
1452 highlevel::Command::Testnsd {
1453 field,
1454 } => {
1455 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1456 let field_string = i64::to_string(&field);
1457 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1458 raw_arguments.push(field_primitive);
1459 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1460 lowlevel::Command::Execute { name: String::from("TESTNSD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: None } }
1461 },
1462 highlevel::Command::Testnst {
1463 field,
1464 } => {
1465 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1466 let field_string = i64::to_string(&field);
1467 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1468 raw_arguments.push(field_primitive);
1469 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1470 lowlevel::Command::Execute { name: String::from("TESTNST"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: Some(String::from(";")) } }
1471 },
1472 highlevel::Command::Testnsdnst {
1473 field,
1474 } => {
1475 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1476 let field_string = i64::to_string(&field);
1477 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1478 raw_arguments.push(field_primitive);
1479 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1480 lowlevel::Command::Execute { name: String::from("TESTNSDNST"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: Some(String::from(";")) } }
1481 },
1482 highlevel::Command::Testnod {
1483 field,
1484 } => {
1485 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1486 let field_string = i64::to_string(&field);
1487 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1488 raw_arguments.push(field_primitive);
1489 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1490 lowlevel::Command::Execute { name: String::from("TESTNOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1491 },
1492 highlevel::Command::Testexextfs {
1493 field,
1494 } => {
1495 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1496 let field_string = field.clone();
1497 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1498 raw_arguments.push(field_primitive);
1499 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1500 lowlevel::Command::Execute { name: String::from("TESTEXEXTFS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1501 },
1502 highlevel::Command::Testexextfsi {
1503 field1,
1504 field2,
1505 } => {
1506 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1507 let field1_string = field1.clone();
1508 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1509 raw_arguments.push(field1_primitive);
1510 let field2_string = i64::to_string(&field2);
1511 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1512 raw_arguments.push(field2_primitive);
1513 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1514 lowlevel::Command::Execute { name: String::from("TESTEXEXTFSI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1515 },
1516 highlevel::Command::Testexextfsic {
1517 field1,
1518 field2,
1519 } => {
1520 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1521 let field1_string = field1.clone();
1522 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1523 raw_arguments.push(field1_primitive);
1524 let field2_string = i64::to_string(&field2);
1525 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1526 raw_arguments.push(field2_primitive);
1527 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1528 lowlevel::Command::Execute { name: String::from("TESTEXEXTFSIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1529 },
1530 highlevel::Command::Testio {
1531 field1,
1532 field2,
1533 } => {
1534 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1535 let field1_string = i64::to_string(&field1);
1536 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1537 raw_arguments.push(field1_primitive);
1538 match field2 {
1539 None => {
1540 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1541 }
1542 Some(field2_unwrapped) => {
1543 let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
1544 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
1545 raw_arguments.push(field2_primitive);
1546 }
1547 }
1548 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1549 lowlevel::Command::Execute { name: String::from("TESTIO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1550 },
1551 highlevel::Command::Testl {
1552 field,
1553 } => {
1554 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1555 for field_element in field.into_iter() {
1556 let field_element_string = i64::to_string(&field_element);
1557 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_string);
1558 raw_arguments.push(field_element_primitive);
1559 }
1560 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1561 lowlevel::Command::Execute { name: String::from("TESTL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1562 },
1563 highlevel::Command::Testol {
1564 field,
1565 } => {
1566 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1567 for field_element in field.into_iter() {
1568 match field_element {
1569 None => {
1570 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1571 }
1572 Some(field_element_unwrapped) => {
1573 let field_element_unwrapped_string = i64::to_string(&field_element_unwrapped);
1574 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_unwrapped_string);
1575 raw_arguments.push(field_element_primitive);
1576 }
1577 }
1578 }
1579 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1580 lowlevel::Command::Execute { name: String::from("TESTOL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1581 },
1582 highlevel::Command::Testm {
1583 field,
1584 } => {
1585 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1586 for (field_typed_key, field_typed_value) in field {
1587 let field_primitive_key = i64::to_string(&field_typed_key);
1588 let field_primitive_value = field_typed_value.clone();
1589 let field_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field_primitive_key, value: field_primitive_value };
1590 raw_arguments.push(field_untyped_pair);
1591 }
1592 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1593 lowlevel::Command::Execute { name: String::from("TESTM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1594 },
1595 highlevel::Command::Testp {
1596 field,
1597 } => {
1598 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1599 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1600 let field_string = i64::to_string(&field);
1601 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1602 raw_arguments_inner.push(field_primitive);
1603 raw_arguments_outer.push(raw_arguments_inner);
1604 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1605 lowlevel::Command::Execute { name: String::from("TESTP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1606 },
1607 highlevel::Command::Testpp {
1608 field1,
1609 field2,
1610 field3,
1611 } => {
1612 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1613 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1614 let field1_string = i64::to_string(&field1);
1615 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1616 raw_arguments_inner.push(field1_primitive);
1617 raw_arguments_outer.push(raw_arguments_inner);
1618 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1619 let field2_string = i64::to_string(&field2);
1620 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1621 raw_arguments_inner.push(field2_primitive);
1622 let field3_string = field3.clone();
1623 let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_string);
1624 raw_arguments_inner.push(field3_primitive);
1625 raw_arguments_outer.push(raw_arguments_inner);
1626 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1627 lowlevel::Command::Execute { name: String::from("TESTPP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1628 },
1629 highlevel::Command::Testpmpil {
1630 field1,
1631 field2,
1632 field3,
1633 } => {
1634 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1635 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1636 for (field1_typed_key, field1_typed_value) in field1 {
1637 let field1_primitive_key = i64::to_string(&field1_typed_key);
1638 let field1_primitive_value = field1_typed_value.clone();
1639 let field1_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field1_primitive_key, value: field1_primitive_value };
1640 raw_arguments_inner.push(field1_untyped_pair);
1641 }
1642 raw_arguments_outer.push(raw_arguments_inner);
1643 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1644 let field2_string = i64::to_string(&field2);
1645 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1646 raw_arguments_inner.push(field2_primitive);
1647 for field3_element in field3.into_iter() {
1648 let field3_element_string = i64::to_string(&field3_element);
1649 let field3_element_primitive = lowlevel::Argument::PrimitiveArgument(field3_element_string);
1650 raw_arguments_inner.push(field3_element_primitive);
1651 }
1652 raw_arguments_outer.push(raw_arguments_inner);
1653 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1654 lowlevel::Command::Execute { name: String::from("TESTPMPIL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1655 },
1656 highlevel::Command::TestrRead {} => {
1657 lowlevel::Command::Read { name: String::from("TESTR"), is_extension: false }
1658 },
1659 highlevel::Command::TestrexRead {} => {
1660 lowlevel::Command::Read { name: String::from("TESTREX"), is_extension: true }
1661 },
1662 highlevel::Command::TesttTest {} => {
1663 lowlevel::Command::Test { name: String::from("TESTT"), is_extension: false }
1664 },
1665 highlevel::Command::TesttexTest {} => {
1666 lowlevel::Command::Test { name: String::from("TESTTEX"), is_extension: true }
1667 },
1668 highlevel::Command::Testenum {
1669 field,
1670 } => {
1671 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1672 let field_string_int = *field as i64;
1673 let field_string = i64::to_string(&field_string_int);
1674 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1675 raw_arguments.push(field_primitive);
1676 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1677 lowlevel::Command::Execute { name: String::from("TESTENUM"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1678 },
1679 highlevel::Command::Testbool {
1680 field,
1681 } => {
1682 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1683 let field_string_int = if *field { 1 } else { 0 };
1684 let field_string = i64::to_string(&field_string_int);
1685 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1686 raw_arguments.push(field_primitive);
1687 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1688 lowlevel::Command::Execute { name: String::from("TESTBOOL"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1689 },
1690 highlevel::Command::Testotherfile { } => {
1691 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1692 lowlevel::Command::Execute { name: String::from("TESTOTHERFILE"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1693 },
1694 highlevel::Command::Brsf {
1695 features,
1696 } => {
1697 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1698 let features_string = i64::to_string(&features);
1699 let features_primitive = lowlevel::Argument::PrimitiveArgument(features_string);
1700 raw_arguments.push(features_primitive);
1701 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1702 lowlevel::Command::Execute { name: String::from("BRSF"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1703 },
1704 highlevel::Command::CindTest {} => {
1705 lowlevel::Command::Test { name: String::from("CIND"), is_extension: true }
1706 },
1707 highlevel::Command::CindRead {} => {
1708 lowlevel::Command::Read { name: String::from("CIND"), is_extension: true }
1709 },
1710 highlevel::Command::Clcc { } => {
1711 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1712 lowlevel::Command::Execute { name: String::from("CLCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1713 },
1714 highlevel::Command::Bcc { } => {
1715 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1716 lowlevel::Command::Execute { name: String::from("BCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1717 },
1718 highlevel::Command::Bcs {
1719 codec,
1720 } => {
1721 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1722 let codec_string = i64::to_string(&codec);
1723 let codec_primitive = lowlevel::Argument::PrimitiveArgument(codec_string);
1724 raw_arguments.push(codec_primitive);
1725 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1726 lowlevel::Command::Execute { name: String::from("BCS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1727 },
1728 highlevel::Command::Bac {
1729 codecs,
1730 } => {
1731 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1732 for codecs_element in codecs.into_iter() {
1733 let codecs_element_string = i64::to_string(&codecs_element);
1734 let codecs_element_primitive = lowlevel::Argument::PrimitiveArgument(codecs_element_string);
1735 raw_arguments.push(codecs_element_primitive);
1736 }
1737 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1738 lowlevel::Command::Execute { name: String::from("BAC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1739 },
1740 highlevel::Command::Bind {
1741 indicators,
1742 } => {
1743 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1744 for indicators_element in indicators.into_iter() {
1745 let indicators_element_string = i64::to_string(&indicators_element);
1746 let indicators_element_primitive = lowlevel::Argument::PrimitiveArgument(indicators_element_string);
1747 raw_arguments.push(indicators_element_primitive);
1748 }
1749 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1750 lowlevel::Command::Execute { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1751 },
1752 highlevel::Command::BindTest {} => {
1753 lowlevel::Command::Test { name: String::from("BIND"), is_extension: true }
1754 },
1755 highlevel::Command::BindRead {} => {
1756 lowlevel::Command::Read { name: String::from("BIND"), is_extension: true }
1757 },
1758 highlevel::Command::Biev {
1759 anum,
1760 value,
1761 } => {
1762 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1763 let anum_string_int = *anum as i64;
1764 let anum_string = i64::to_string(&anum_string_int);
1765 let anum_primitive = lowlevel::Argument::PrimitiveArgument(anum_string);
1766 raw_arguments.push(anum_primitive);
1767 let value_string = i64::to_string(&value);
1768 let value_primitive = lowlevel::Argument::PrimitiveArgument(value_string);
1769 raw_arguments.push(value_primitive);
1770 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1771 lowlevel::Command::Execute { name: String::from("BIEV"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1772 },
1773 highlevel::Command::ChldTest {} => {
1774 lowlevel::Command::Test { name: String::from("CHLD"), is_extension: true }
1775 },
1776 highlevel::Command::Cmer {
1777 mode,
1778 keyp,
1779 disp,
1780 ind,
1781 } => {
1782 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1783 let mode_string = i64::to_string(&mode);
1784 let mode_primitive = lowlevel::Argument::PrimitiveArgument(mode_string);
1785 raw_arguments.push(mode_primitive);
1786 let keyp_string = i64::to_string(&keyp);
1787 let keyp_primitive = lowlevel::Argument::PrimitiveArgument(keyp_string);
1788 raw_arguments.push(keyp_primitive);
1789 let disp_string = i64::to_string(&disp);
1790 let disp_primitive = lowlevel::Argument::PrimitiveArgument(disp_string);
1791 raw_arguments.push(disp_primitive);
1792 let ind_string = i64::to_string(&ind);
1793 let ind_primitive = lowlevel::Argument::PrimitiveArgument(ind_string);
1794 raw_arguments.push(ind_primitive);
1795 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1796 lowlevel::Command::Execute { name: String::from("CMER"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1797 },
1798 highlevel::Command::Nrec {
1799 nrec,
1800 } => {
1801 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1802 let nrec_string_int = if *nrec { 1 } else { 0 };
1803 let nrec_string = i64::to_string(&nrec_string_int);
1804 let nrec_primitive = lowlevel::Argument::PrimitiveArgument(nrec_string);
1805 raw_arguments.push(nrec_primitive);
1806 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1807 lowlevel::Command::Execute { name: String::from("NREC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1808 },
1809 highlevel::Command::Cops {
1810 three,
1811 format,
1812 } => {
1813 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1814 let three_string = i64::to_string(&three);
1815 let three_primitive = lowlevel::Argument::PrimitiveArgument(three_string);
1816 raw_arguments.push(three_primitive);
1817 let format_string_int = *format as i64;
1818 let format_string = i64::to_string(&format_string_int);
1819 let format_primitive = lowlevel::Argument::PrimitiveArgument(format_string);
1820 raw_arguments.push(format_primitive);
1821 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1822 lowlevel::Command::Execute { name: String::from("COPS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1823 },
1824 highlevel::Command::CopsRead {} => {
1825 lowlevel::Command::Read { name: String::from("COPS"), is_extension: true }
1826 },
1827 highlevel::Command::Cmee {
1828 enable,
1829 } => {
1830 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1831 let enable_string_int = if *enable { 1 } else { 0 };
1832 let enable_string = i64::to_string(&enable_string_int);
1833 let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
1834 raw_arguments.push(enable_primitive);
1835 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1836 lowlevel::Command::Execute { name: String::from("CMEE"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1837 },
1838 highlevel::Command::Ccwa {
1839 enable,
1840 } => {
1841 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1842 let enable_string_int = if *enable { 1 } else { 0 };
1843 let enable_string = i64::to_string(&enable_string_int);
1844 let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
1845 raw_arguments.push(enable_primitive);
1846 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1847 lowlevel::Command::Execute { name: String::from("CCWA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1848 },
1849 highlevel::Command::Clip {
1850 enable,
1851 } => {
1852 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1853 let enable_string_int = if *enable { 1 } else { 0 };
1854 let enable_string = i64::to_string(&enable_string_int);
1855 let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
1856 raw_arguments.push(enable_primitive);
1857 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1858 lowlevel::Command::Execute { name: String::from("CLIP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1859 },
1860 highlevel::Command::Cnum { } => {
1861 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1862 lowlevel::Command::Execute { name: String::from("CNUM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1863 },
1864 highlevel::Command::Vts {
1865 code,
1866 } => {
1867 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1868 let code_string = code.clone();
1869 let code_primitive = lowlevel::Argument::PrimitiveArgument(code_string);
1870 raw_arguments.push(code_primitive);
1871 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1872 lowlevel::Command::Execute { name: String::from("VTS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1873 },
1874 highlevel::Command::Vgs {
1875 level,
1876 } => {
1877 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1878 let level_string = i64::to_string(&level);
1879 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
1880 raw_arguments.push(level_primitive);
1881 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1882 lowlevel::Command::Execute { name: String::from("VGS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1883 },
1884 highlevel::Command::Vgm {
1885 level,
1886 } => {
1887 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1888 let level_string = i64::to_string(&level);
1889 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
1890 raw_arguments.push(level_primitive);
1891 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1892 lowlevel::Command::Execute { name: String::from("VGM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1893 },
1894 highlevel::Command::Bia {
1895 indrep,
1896 } => {
1897 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1898 for indrep_element in indrep.into_iter() {
1899 match indrep_element {
1900 None => {
1901 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1902 }
1903 Some(indrep_element_unwrapped) => {
1904 let indrep_element_unwrapped_string_int = if *indrep_element_unwrapped { 1 } else { 0 };
1905 let indrep_element_unwrapped_string = i64::to_string(&indrep_element_unwrapped_string_int);
1906 let indrep_element_primitive = lowlevel::Argument::PrimitiveArgument(indrep_element_unwrapped_string);
1907 raw_arguments.push(indrep_element_primitive);
1908 }
1909 }
1910 }
1911 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1912 lowlevel::Command::Execute { name: String::from("BIA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1913 },
1914 highlevel::Command::Answer { } => {
1915 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1916 lowlevel::Command::Execute { name: String::from("A"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1917 },
1918 highlevel::Command::Chup { } => {
1919 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1920 lowlevel::Command::Execute { name: String::from("CHUP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1921 },
1922 highlevel::Command::Chld {
1923 command,
1924 } => {
1925 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1926 let command_string = command.clone();
1927 let command_primitive = lowlevel::Argument::PrimitiveArgument(command_string);
1928 raw_arguments.push(command_primitive);
1929 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1930 lowlevel::Command::Execute { name: String::from("CHLD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1931 },
1932 highlevel::Command::AtdNumber {
1933 number,
1934 } => {
1935 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1936 let number_string = number.clone();
1937 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
1938 raw_arguments.push(number_primitive);
1939 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1940 lowlevel::Command::Execute { name: String::from("D"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: Some(String::from(";")) } }
1941 },
1942 highlevel::Command::AtdMemory {
1943 location,
1944 } => {
1945 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1946 let location_string = location.clone();
1947 let location_primitive = lowlevel::Argument::PrimitiveArgument(location_string);
1948 raw_arguments.push(location_primitive);
1949 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1950 lowlevel::Command::Execute { name: String::from("D"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: Some(String::from(";")) } }
1951 },
1952 highlevel::Command::Bldn { } => {
1953 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1954 lowlevel::Command::Execute { name: String::from("BLDN"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1955 },
1956 }
1957}
1958
1959pub fn lower_success(highlevel: &highlevel::Success) -> lowlevel::Response {
1960 match highlevel {
1961 highlevel::Success::Test { } => {
1962 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1963 lowlevel::Response::Success { name: String::from("TEST"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
1964 },
1965 highlevel::Success::Testnod { } => {
1966 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1967 lowlevel::Response::Success { name: String::from("TESTNOD"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1968 },
1969 highlevel::Success::TestResponse { } => {
1970 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1971 lowlevel::Response::Success { name: String::from("TESTN"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
1972 },
1973 highlevel::Success::Testext { } => {
1974 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1975 lowlevel::Response::Success { name: String::from("TESTEXT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
1976 },
1977 highlevel::Success::Testextnod { } => {
1978 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1979 lowlevel::Response::Success { name: String::from("TESTEXTNOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1980 },
1981 highlevel::Success::Testi {
1982 field,
1983 } => {
1984 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1985 let field_string = i64::to_string(&field);
1986 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1987 raw_arguments.push(field_primitive);
1988 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1989 lowlevel::Response::Success { name: String::from("TESTI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
1990 },
1991 highlevel::Success::Testinod {
1992 field,
1993 } => {
1994 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1995 let field_string = i64::to_string(&field);
1996 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1997 raw_arguments.push(field_primitive);
1998 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1999 lowlevel::Response::Success { name: String::from("TESTINOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2000 },
2001 highlevel::Success::Testic {
2002 field,
2003 } => {
2004 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2005 let field_string = i64::to_string(&field);
2006 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2007 raw_arguments.push(field_primitive);
2008 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2009 lowlevel::Response::Success { name: String::from("TESTIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2010 },
2011 highlevel::Success::Tests {
2012 field,
2013 } => {
2014 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2015 let field_string = field.clone();
2016 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2017 raw_arguments.push(field_primitive);
2018 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2019 lowlevel::Response::Success { name: String::from("TESTS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2020 },
2021 highlevel::Success::Testsi {
2022 field1,
2023 field2,
2024 } => {
2025 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2026 let field1_string = field1.clone();
2027 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2028 raw_arguments.push(field1_primitive);
2029 let field2_string = i64::to_string(&field2);
2030 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2031 raw_arguments.push(field2_primitive);
2032 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2033 lowlevel::Response::Success { name: String::from("TESTSI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2034 },
2035 highlevel::Success::Testsic {
2036 field1,
2037 field2,
2038 } => {
2039 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2040 let field1_string = field1.clone();
2041 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2042 raw_arguments.push(field1_primitive);
2043 let field2_string = i64::to_string(&field2);
2044 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2045 raw_arguments.push(field2_primitive);
2046 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2047 lowlevel::Response::Success { name: String::from("TESTSIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2048 },
2049 highlevel::Success::Testio {
2050 field1,
2051 field2,
2052 } => {
2053 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2054 let field1_string = i64::to_string(&field1);
2055 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2056 raw_arguments.push(field1_primitive);
2057 match field2 {
2058 None => {
2059 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2060 }
2061 Some(field2_unwrapped) => {
2062 let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
2063 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
2064 raw_arguments.push(field2_primitive);
2065 }
2066 }
2067 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2068 lowlevel::Response::Success { name: String::from("TESTIO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2069 },
2070 highlevel::Success::Testl {
2071 field,
2072 } => {
2073 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2074 for field_element in field.into_iter() {
2075 let field_element_string = i64::to_string(&field_element);
2076 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_string);
2077 raw_arguments.push(field_element_primitive);
2078 }
2079 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2080 lowlevel::Response::Success { name: String::from("TESTL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2081 },
2082 highlevel::Success::Testol {
2083 field,
2084 } => {
2085 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2086 for field_element in field.into_iter() {
2087 match field_element {
2088 None => {
2089 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2090 }
2091 Some(field_element_unwrapped) => {
2092 let field_element_unwrapped_string = i64::to_string(&field_element_unwrapped);
2093 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_unwrapped_string);
2094 raw_arguments.push(field_element_primitive);
2095 }
2096 }
2097 }
2098 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2099 lowlevel::Response::Success { name: String::from("TESTOL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2100 },
2101 highlevel::Success::Testm {
2102 field,
2103 } => {
2104 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2105 for (field_typed_key, field_typed_value) in field {
2106 let field_primitive_key = i64::to_string(&field_typed_key);
2107 let field_primitive_value = field_typed_value.clone();
2108 let field_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field_primitive_key, value: field_primitive_value };
2109 raw_arguments.push(field_untyped_pair);
2110 }
2111 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2112 lowlevel::Response::Success { name: String::from("TESTM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2113 },
2114 highlevel::Success::Testp {
2115 field,
2116 } => {
2117 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2118 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2119 let field_string = i64::to_string(&field);
2120 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2121 raw_arguments_inner.push(field_primitive);
2122 raw_arguments_outer.push(raw_arguments_inner);
2123 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2124 lowlevel::Response::Success { name: String::from("TESTP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2125 },
2126 highlevel::Success::Testpp {
2127 field1,
2128 field2,
2129 field3,
2130 } => {
2131 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2132 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2133 let field1_string = i64::to_string(&field1);
2134 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2135 raw_arguments_inner.push(field1_primitive);
2136 raw_arguments_outer.push(raw_arguments_inner);
2137 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2138 let field2_string = i64::to_string(&field2);
2139 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2140 raw_arguments_inner.push(field2_primitive);
2141 let field3_string = field3.clone();
2142 let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_string);
2143 raw_arguments_inner.push(field3_primitive);
2144 raw_arguments_outer.push(raw_arguments_inner);
2145 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2146 lowlevel::Response::Success { name: String::from("TESTPP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2147 },
2148 highlevel::Success::Testpmpil {
2149 field1,
2150 field2,
2151 field3,
2152 } => {
2153 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2154 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2155 for (field1_typed_key, field1_typed_value) in field1 {
2156 let field1_primitive_key = i64::to_string(&field1_typed_key);
2157 let field1_primitive_value = field1_typed_value.clone();
2158 let field1_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field1_primitive_key, value: field1_primitive_value };
2159 raw_arguments_inner.push(field1_untyped_pair);
2160 }
2161 raw_arguments_outer.push(raw_arguments_inner);
2162 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2163 let field2_string = i64::to_string(&field2);
2164 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2165 raw_arguments_inner.push(field2_primitive);
2166 for field3_element in field3.into_iter() {
2167 let field3_element_string = i64::to_string(&field3_element);
2168 let field3_element_primitive = lowlevel::Argument::PrimitiveArgument(field3_element_string);
2169 raw_arguments_inner.push(field3_element_primitive);
2170 }
2171 raw_arguments_outer.push(raw_arguments_inner);
2172 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2173 lowlevel::Response::Success { name: String::from("TESTPMPIL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2174 },
2175 highlevel::Success::SameOne {
2176 field,
2177 } => {
2178 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2179 let field_string = i64::to_string(&field);
2180 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2181 raw_arguments.push(field_primitive);
2182 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2183 lowlevel::Response::Success { name: String::from("SAME"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2184 },
2185 highlevel::Success::SameTwo {
2186 field,
2187 } => {
2188 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2189 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2190 let field_string = i64::to_string(&field);
2191 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2192 raw_arguments_inner.push(field_primitive);
2193 raw_arguments_outer.push(raw_arguments_inner);
2194 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2195 lowlevel::Response::Success { name: String::from("SAME"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2196 },
2197 highlevel::Success::Brsf {
2198 features,
2199 } => {
2200 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2201 let features_string = i64::to_string(&features);
2202 let features_primitive = lowlevel::Argument::PrimitiveArgument(features_string);
2203 raw_arguments.push(features_primitive);
2204 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2205 lowlevel::Response::Success { name: String::from("BRSF"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2206 },
2207 highlevel::Success::Cind {
2208 service,
2209 call,
2210 callsetup,
2211 callheld,
2212 signal,
2213 roam,
2214 battchg,
2215 } => {
2216 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2217 let service_string_int = if *service { 1 } else { 0 };
2218 let service_string = i64::to_string(&service_string_int);
2219 let service_primitive = lowlevel::Argument::PrimitiveArgument(service_string);
2220 raw_arguments.push(service_primitive);
2221 let call_string_int = if *call { 1 } else { 0 };
2222 let call_string = i64::to_string(&call_string_int);
2223 let call_primitive = lowlevel::Argument::PrimitiveArgument(call_string);
2224 raw_arguments.push(call_primitive);
2225 let callsetup_string = i64::to_string(&callsetup);
2226 let callsetup_primitive = lowlevel::Argument::PrimitiveArgument(callsetup_string);
2227 raw_arguments.push(callsetup_primitive);
2228 let callheld_string = i64::to_string(&callheld);
2229 let callheld_primitive = lowlevel::Argument::PrimitiveArgument(callheld_string);
2230 raw_arguments.push(callheld_primitive);
2231 let signal_string = i64::to_string(&signal);
2232 let signal_primitive = lowlevel::Argument::PrimitiveArgument(signal_string);
2233 raw_arguments.push(signal_primitive);
2234 let roam_string_int = if *roam { 1 } else { 0 };
2235 let roam_string = i64::to_string(&roam_string_int);
2236 let roam_primitive = lowlevel::Argument::PrimitiveArgument(roam_string);
2237 raw_arguments.push(roam_primitive);
2238 let battchg_string = i64::to_string(&battchg);
2239 let battchg_primitive = lowlevel::Argument::PrimitiveArgument(battchg_string);
2240 raw_arguments.push(battchg_primitive);
2241 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2242 lowlevel::Response::Success { name: String::from("CIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2243 },
2244 highlevel::Success::Clcc {
2245 index,
2246 dir,
2247 status,
2248 mode,
2249 mpty,
2250 number,
2251 ty,
2252 } => {
2253 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2254 let index_string = i64::to_string(&index);
2255 let index_primitive = lowlevel::Argument::PrimitiveArgument(index_string);
2256 raw_arguments.push(index_primitive);
2257 let dir_string = i64::to_string(&dir);
2258 let dir_primitive = lowlevel::Argument::PrimitiveArgument(dir_string);
2259 raw_arguments.push(dir_primitive);
2260 let status_string = i64::to_string(&status);
2261 let status_primitive = lowlevel::Argument::PrimitiveArgument(status_string);
2262 raw_arguments.push(status_primitive);
2263 let mode_string = i64::to_string(&mode);
2264 let mode_primitive = lowlevel::Argument::PrimitiveArgument(mode_string);
2265 raw_arguments.push(mode_primitive);
2266 let mpty_string = i64::to_string(&mpty);
2267 let mpty_primitive = lowlevel::Argument::PrimitiveArgument(mpty_string);
2268 raw_arguments.push(mpty_primitive);
2269 let number_string = number.clone();
2270 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2271 raw_arguments.push(number_primitive);
2272 let ty_string = i64::to_string(&ty);
2273 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2274 raw_arguments.push(ty_primitive);
2275 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2276 lowlevel::Response::Success { name: String::from("CLCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2277 },
2278 highlevel::Success::Bcs {
2279 codec,
2280 } => {
2281 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2282 let codec_string = i64::to_string(&codec);
2283 let codec_primitive = lowlevel::Argument::PrimitiveArgument(codec_string);
2284 raw_arguments.push(codec_primitive);
2285 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2286 lowlevel::Response::Success { name: String::from("BCS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2287 },
2288 highlevel::Success::BindList {
2289 indicators,
2290 } => {
2291 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2292 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2293 for indicators_element in indicators.into_iter() {
2294 let indicators_element_string_int = *indicators_element as i64;
2295 let indicators_element_string = i64::to_string(&indicators_element_string_int);
2296 let indicators_element_primitive = lowlevel::Argument::PrimitiveArgument(indicators_element_string);
2297 raw_arguments_inner.push(indicators_element_primitive);
2298 }
2299 raw_arguments_outer.push(raw_arguments_inner);
2300 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2301 lowlevel::Response::Success { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2302 },
2303 highlevel::Success::BindStatus {
2304 anum,
2305 state,
2306 } => {
2307 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2308 let anum_string_int = *anum as i64;
2309 let anum_string = i64::to_string(&anum_string_int);
2310 let anum_primitive = lowlevel::Argument::PrimitiveArgument(anum_string);
2311 raw_arguments.push(anum_primitive);
2312 let state_string_int = if *state { 1 } else { 0 };
2313 let state_string = i64::to_string(&state_string_int);
2314 let state_primitive = lowlevel::Argument::PrimitiveArgument(state_string);
2315 raw_arguments.push(state_primitive);
2316 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2317 lowlevel::Response::Success { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2318 },
2319 highlevel::Success::Chld {
2320 commands,
2321 } => {
2322 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2323 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2324 for commands_element in commands.into_iter() {
2325 let commands_element_string = commands_element.clone();
2326 let commands_element_primitive = lowlevel::Argument::PrimitiveArgument(commands_element_string);
2327 raw_arguments_inner.push(commands_element_primitive);
2328 }
2329 raw_arguments_outer.push(raw_arguments_inner);
2330 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2331 lowlevel::Response::Success { name: String::from("CHLD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2332 },
2333 highlevel::Success::Cops {
2334 format,
2335 zero,
2336 operator,
2337 } => {
2338 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2339 let format_string_int = *format as i64;
2340 let format_string = i64::to_string(&format_string_int);
2341 let format_primitive = lowlevel::Argument::PrimitiveArgument(format_string);
2342 raw_arguments.push(format_primitive);
2343 let zero_string = i64::to_string(&zero);
2344 let zero_primitive = lowlevel::Argument::PrimitiveArgument(zero_string);
2345 raw_arguments.push(zero_primitive);
2346 let operator_string = operator.clone();
2347 let operator_primitive = lowlevel::Argument::PrimitiveArgument(operator_string);
2348 raw_arguments.push(operator_primitive);
2349 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2350 lowlevel::Response::Success { name: String::from("COPS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2351 },
2352 highlevel::Success::Clip {
2353 number,
2354 ty,
2355 } => {
2356 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2357 let number_string = number.clone();
2358 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2359 raw_arguments.push(number_primitive);
2360 let ty_string = i64::to_string(&ty);
2361 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2362 raw_arguments.push(ty_primitive);
2363 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2364 lowlevel::Response::Success { name: String::from("CLIP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2365 },
2366 highlevel::Success::Cnum {
2367 alpha,
2368 number,
2369 ty,
2370 speed,
2371 service,
2372 } => {
2373 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2374 let alpha_string = alpha.clone();
2375 let alpha_primitive = lowlevel::Argument::PrimitiveArgument(alpha_string);
2376 raw_arguments.push(alpha_primitive);
2377 let number_string = number.clone();
2378 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2379 raw_arguments.push(number_primitive);
2380 let ty_string = i64::to_string(&ty);
2381 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2382 raw_arguments.push(ty_primitive);
2383 let speed_string = speed.clone();
2384 let speed_primitive = lowlevel::Argument::PrimitiveArgument(speed_string);
2385 raw_arguments.push(speed_primitive);
2386 let service_string = i64::to_string(&service);
2387 let service_primitive = lowlevel::Argument::PrimitiveArgument(service_string);
2388 raw_arguments.push(service_primitive);
2389 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2390 lowlevel::Response::Success { name: String::from("CNUM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2391 },
2392 highlevel::Success::Vgs {
2393 level,
2394 } => {
2395 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2396 let level_string = i64::to_string(&level);
2397 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2398 raw_arguments.push(level_primitive);
2399 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2400 lowlevel::Response::Success { name: String::from("VGS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2401 },
2402 highlevel::Success::Vgm {
2403 level,
2404 } => {
2405 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2406 let level_string = i64::to_string(&level);
2407 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2408 raw_arguments.push(level_primitive);
2409 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2410 lowlevel::Response::Success { name: String::from("VGM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2411 },
2412 highlevel::Success::Ciev {
2413 ind,
2414 value,
2415 } => {
2416 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2417 let ind_string = i64::to_string(&ind);
2418 let ind_primitive = lowlevel::Argument::PrimitiveArgument(ind_string);
2419 raw_arguments.push(ind_primitive);
2420 let value_string = i64::to_string(&value);
2421 let value_primitive = lowlevel::Argument::PrimitiveArgument(value_string);
2422 raw_arguments.push(value_primitive);
2423 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2424 lowlevel::Response::Success { name: String::from("CIEV"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2425 },
2426 highlevel::Success::Ccwa {
2427 number,
2428 ty,
2429 } => {
2430 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2431 let number_string = number.clone();
2432 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2433 raw_arguments.push(number_primitive);
2434 let ty_string = i64::to_string(&ty);
2435 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2436 raw_arguments.push(ty_primitive);
2437 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2438 lowlevel::Response::Success { name: String::from("CCWA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2439 },
2440 highlevel::Success::Ring { } => {
2441 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2442 lowlevel::Response::Success { name: String::from("RING"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2443 },
2444 }
2445}
2446