1use crate::record::create_record_type;
4use crate::types::{Fields, Type};
5use lazy_static::lazy_static;
6
7static SCALAR_FIELDS: [(&str, Type); 47] = [
8 ("radar.revision.major", Type::Char),
9 ("radar.revision.minor", Type::Char),
10 ("origin.code", Type::Char),
11 ("origin.time", Type::String),
12 ("origin.command", Type::String),
13 ("cp", Type::Short),
14 ("stid", Type::Short),
15 ("time.yr", Type::Short),
16 ("time.mo", Type::Short),
17 ("time.dy", Type::Short),
18 ("time.hr", Type::Short),
19 ("time.mt", Type::Short),
20 ("time.sc", Type::Short),
21 ("time.us", Type::Int),
22 ("txpow", Type::Short),
23 ("nave", Type::Short),
24 ("atten", Type::Short),
25 ("lagfr", Type::Short),
26 ("smsep", Type::Short),
27 ("ercod", Type::Short),
28 ("stat.agc", Type::Short),
29 ("stat.lopwr", Type::Short),
30 ("noise.search", Type::Float),
31 ("noise.mean", Type::Float),
32 ("channel", Type::Short),
33 ("bmnum", Type::Short),
34 ("bmazm", Type::Float),
35 ("scan", Type::Short),
36 ("offset", Type::Short),
37 ("rxrise", Type::Short),
38 ("intt.sc", Type::Short),
39 ("intt.us", Type::Int),
40 ("txpl", Type::Short),
41 ("mpinc", Type::Short),
42 ("mppul", Type::Short),
43 ("mplgs", Type::Short),
44 ("nrang", Type::Short),
45 ("frang", Type::Short),
46 ("rsep", Type::Short),
47 ("xcf", Type::Short),
48 ("tfreq", Type::Short),
49 ("mxpwr", Type::Int),
50 ("lvmax", Type::Int),
51 ("rawacf.revision.major", Type::Int),
52 ("rawacf.revision.minor", Type::Int),
53 ("combf", Type::String),
54 ("thr", Type::Float),
55];
56
57static SCALAR_FIELDS_OPT: [(&str, Type); 2] = [("mplgexs", Type::Short), ("ifmode", Type::Short)];
58
59static VECTOR_FIELDS: [(&str, Type); 5] = [
60 ("ptab", Type::Short),
61 ("ltab", Type::Short),
62 ("pwr0", Type::Float),
63 ("slist", Type::Short),
64 ("acfd", Type::Float),
65];
66
67static VECTOR_FIELDS_OPT: [(&str, Type); 1] = [("xcfd", Type::Float)];
68
69static DATA_FIELDS: [&str; 4] = ["pwr0", "slist", "acfd", "xcfd"];
70
71lazy_static! {
72 static ref RAWACF_FIELDS: Fields<'static> = Fields {
73 all_fields: {
74 let mut fields: Vec<&str> = vec![];
75 fields.extend(SCALAR_FIELDS.clone().into_iter().map(|x| x.0));
76 fields.extend(SCALAR_FIELDS_OPT.clone().into_iter().map(|x| x.0));
77 fields.extend(VECTOR_FIELDS.clone().into_iter().map(|x| x.0));
78 fields.extend(VECTOR_FIELDS_OPT.clone().into_iter().map(|x| x.0));
79 fields
80 },
81 scalars_required: SCALAR_FIELDS.to_vec(),
82 scalars_optional: SCALAR_FIELDS_OPT.to_vec(),
83 vectors_required: VECTOR_FIELDS.to_vec(),
84 vectors_optional: VECTOR_FIELDS_OPT.to_vec(),
85 vector_dim_groups: vec![],
86 data_fields: DATA_FIELDS.to_vec(),
87 };
88}
89
90create_record_type!(rawacf, RAWACF_FIELDS);