Skip to content

Commit 8fd7863

Browse files
committed
Added all catrina detectors
modified: Cargo.lock modified: Cargo.toml modified: src/evb/channel_data.rs modified: src/evb/channel_map.rs modified: src/evb/compass_run.rs modified: src/ui/app.rs
1 parent 01fcb16 commit 8fd7863

File tree

6 files changed

+312
-9
lines changed

6 files changed

+312
-9
lines changed

Cargo.lock

Lines changed: 4 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ serde = { version = "1.0.219", features = ["derive"] }
2424
env_logger = "0.11.8"
2525
strum = "0.27.1"
2626
strum_macros = "0.27.1"
27-
rand = "0.9.0"
27+
rand = "0.9.1"
2828
bitflags = "2.9.0"
2929
nom = "8.0.0"
3030
flate2 = "1.1.1"

src/evb/channel_data.rs

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,18 +111,66 @@ pub enum ChannelDataField {
111111
CATRINA0Energy,
112112
CATRINA1Energy,
113113
CATRINA2Energy,
114+
CATRINA3Energy,
115+
CATRINA4Energy,
116+
CATRINA5Energy,
117+
CATRINA6Energy,
118+
CATRINA7Energy,
119+
CATRINA8Energy,
120+
CATRINA9Energy,
121+
CATRINA10Energy,
122+
CATRINA11Energy,
123+
CATRINA12Energy,
124+
CATRINA13Energy,
125+
CATRINA14Energy,
114126

115127
CATRINA0Short,
116128
CATRINA1Short,
117129
CATRINA2Short,
130+
CATRINA3Short,
131+
CATRINA4Short,
132+
CATRINA5Short,
133+
CATRINA6Short,
134+
CATRINA7Short,
135+
CATRINA8Short,
136+
CATRINA9Short,
137+
CATRINA10Short,
138+
CATRINA11Short,
139+
CATRINA12Short,
140+
CATRINA13Short,
141+
CATRINA14Short,
118142

119143
CATRINA0Time,
120144
CATRINA1Time,
121145
CATRINA2Time,
146+
CATRINA3Time,
147+
CATRINA4Time,
148+
CATRINA5Time,
149+
CATRINA6Time,
150+
CATRINA7Time,
151+
CATRINA8Time,
152+
CATRINA9Time,
153+
CATRINA10Time,
154+
CATRINA11Time,
155+
CATRINA12Time,
156+
CATRINA13Time,
157+
CATRINA14Time,
122158

123159
CATRINA0PSD,
124160
CATRINA1PSD,
125161
CATRINA2PSD,
162+
CATRINA3PSD,
163+
CATRINA4PSD,
164+
CATRINA5PSD,
165+
CATRINA6PSD,
166+
CATRINA7PSD,
167+
CATRINA8PSD,
168+
CATRINA9PSD,
169+
CATRINA10PSD,
170+
CATRINA11PSD,
171+
CATRINA12PSD,
172+
CATRINA13PSD,
173+
CATRINA14PSD,
126174

127175
RF,
128176
}
@@ -346,6 +394,90 @@ impl ChannelDataField {
346394
channel_map.contains_channel_type(ChannelType::CATRINA2)
347395
}
348396

397+
ChannelDataField::CATRINA3Energy
398+
| ChannelDataField::CATRINA3Short
399+
| ChannelDataField::CATRINA3Time
400+
| ChannelDataField::CATRINA3PSD => {
401+
channel_map.contains_channel_type(ChannelType::CATRINA3)
402+
}
403+
404+
ChannelDataField::CATRINA4Energy
405+
| ChannelDataField::CATRINA4Short
406+
| ChannelDataField::CATRINA4Time
407+
| ChannelDataField::CATRINA4PSD => {
408+
channel_map.contains_channel_type(ChannelType::CATRINA4)
409+
}
410+
411+
ChannelDataField::CATRINA5Energy
412+
| ChannelDataField::CATRINA5Short
413+
| ChannelDataField::CATRINA5Time
414+
| ChannelDataField::CATRINA5PSD => {
415+
channel_map.contains_channel_type(ChannelType::CATRINA5)
416+
}
417+
418+
ChannelDataField::CATRINA6Energy
419+
| ChannelDataField::CATRINA6Short
420+
| ChannelDataField::CATRINA6Time
421+
| ChannelDataField::CATRINA6PSD => {
422+
channel_map.contains_channel_type(ChannelType::CATRINA6)
423+
}
424+
425+
ChannelDataField::CATRINA7Energy
426+
| ChannelDataField::CATRINA7Short
427+
| ChannelDataField::CATRINA7Time
428+
| ChannelDataField::CATRINA7PSD => {
429+
channel_map.contains_channel_type(ChannelType::CATRINA7)
430+
}
431+
432+
ChannelDataField::CATRINA8Energy
433+
| ChannelDataField::CATRINA8Short
434+
| ChannelDataField::CATRINA8Time
435+
| ChannelDataField::CATRINA8PSD => {
436+
channel_map.contains_channel_type(ChannelType::CATRINA8)
437+
}
438+
439+
ChannelDataField::CATRINA9Energy
440+
| ChannelDataField::CATRINA9Short
441+
| ChannelDataField::CATRINA9Time
442+
| ChannelDataField::CATRINA9PSD => {
443+
channel_map.contains_channel_type(ChannelType::CATRINA9)
444+
}
445+
446+
ChannelDataField::CATRINA10Energy
447+
| ChannelDataField::CATRINA10Short
448+
| ChannelDataField::CATRINA10Time
449+
| ChannelDataField::CATRINA10PSD => {
450+
channel_map.contains_channel_type(ChannelType::CATRINA10)
451+
}
452+
453+
ChannelDataField::CATRINA11Energy
454+
| ChannelDataField::CATRINA11Short
455+
| ChannelDataField::CATRINA11Time
456+
| ChannelDataField::CATRINA11PSD => {
457+
channel_map.contains_channel_type(ChannelType::CATRINA11)
458+
}
459+
460+
ChannelDataField::CATRINA12Energy
461+
| ChannelDataField::CATRINA12Short
462+
| ChannelDataField::CATRINA12Time
463+
| ChannelDataField::CATRINA12PSD => {
464+
channel_map.contains_channel_type(ChannelType::CATRINA12)
465+
}
466+
467+
ChannelDataField::CATRINA13Energy
468+
| ChannelDataField::CATRINA13Short
469+
| ChannelDataField::CATRINA13Time
470+
| ChannelDataField::CATRINA13PSD => {
471+
channel_map.contains_channel_type(ChannelType::CATRINA13)
472+
}
473+
474+
ChannelDataField::CATRINA14Energy
475+
| ChannelDataField::CATRINA14Short
476+
| ChannelDataField::CATRINA14Time
477+
| ChannelDataField::CATRINA14PSD => {
478+
channel_map.contains_channel_type(ChannelType::CATRINA14)
479+
}
480+
349481
ChannelDataField::RF => {
350482
channel_map.contains_channel_type(ChannelType::RF)
351483
}
@@ -659,6 +791,126 @@ impl ChannelData {
659791
self.set_value(&ChannelDataField::CATRINA2PSD, psd);
660792
}
661793

794+
ChannelType::CATRINA3 => {
795+
self.set_value(&ChannelDataField::CATRINA3Energy, hit.energy);
796+
self.set_value(&ChannelDataField::CATRINA3Short, hit.energy_short);
797+
self.set_value(&ChannelDataField::CATRINA3Time, hit.timestamp);
798+
let long = hit.energy;
799+
let short = hit.energy_short;
800+
let psd = (long - short) / long;
801+
self.set_value(&ChannelDataField::CATRINA3PSD, psd);
802+
}
803+
804+
ChannelType::CATRINA4 => {
805+
self.set_value(&ChannelDataField::CATRINA4Energy, hit.energy);
806+
self.set_value(&ChannelDataField::CATRINA4Short, hit.energy_short);
807+
self.set_value(&ChannelDataField::CATRINA4Time, hit.timestamp);
808+
let long = hit.energy;
809+
let short = hit.energy_short;
810+
let psd = (long - short) / long;
811+
self.set_value(&ChannelDataField::CATRINA4PSD, psd);
812+
}
813+
814+
ChannelType::CATRINA5 => {
815+
self.set_value(&ChannelDataField::CATRINA5Energy, hit.energy);
816+
self.set_value(&ChannelDataField::CATRINA5Short, hit.energy_short);
817+
self.set_value(&ChannelDataField::CATRINA5Time, hit.timestamp);
818+
let long = hit.energy;
819+
let short = hit.energy_short;
820+
let psd = (long - short) / long;
821+
self.set_value(&ChannelDataField::CATRINA5PSD, psd);
822+
}
823+
824+
ChannelType::CATRINA6 => {
825+
self.set_value(&ChannelDataField::CATRINA6Energy, hit.energy);
826+
self.set_value(&ChannelDataField::CATRINA6Short, hit.energy_short);
827+
self.set_value(&ChannelDataField::CATRINA6Time, hit.timestamp);
828+
let long = hit.energy;
829+
let short = hit.energy_short;
830+
let psd = (long - short) / long;
831+
self.set_value(&ChannelDataField::CATRINA6PSD, psd);
832+
}
833+
834+
ChannelType::CATRINA7 => {
835+
self.set_value(&ChannelDataField::CATRINA7Energy, hit.energy);
836+
self.set_value(&ChannelDataField::CATRINA7Short, hit.energy_short);
837+
self.set_value(&ChannelDataField::CATRINA7Time, hit.timestamp);
838+
let long = hit.energy;
839+
let short = hit.energy_short;
840+
let psd = (long - short) / long;
841+
self.set_value(&ChannelDataField::CATRINA7PSD, psd);
842+
}
843+
844+
ChannelType::CATRINA8 => {
845+
self.set_value(&ChannelDataField::CATRINA8Energy, hit.energy);
846+
self.set_value(&ChannelDataField::CATRINA8Short, hit.energy_short);
847+
self.set_value(&ChannelDataField::CATRINA8Time, hit.timestamp);
848+
let long = hit.energy;
849+
let short = hit.energy_short;
850+
let psd = (long - short) / long;
851+
self.set_value(&ChannelDataField::CATRINA8PSD, psd);
852+
}
853+
854+
ChannelType::CATRINA9 => {
855+
self.set_value(&ChannelDataField::CATRINA9Energy, hit.energy);
856+
self.set_value(&ChannelDataField::CATRINA9Short, hit.energy_short);
857+
self.set_value(&ChannelDataField::CATRINA9Time, hit.timestamp);
858+
let long = hit.energy;
859+
let short = hit.energy_short;
860+
let psd = (long - short) / long;
861+
self.set_value(&ChannelDataField::CATRINA9PSD, psd);
862+
}
863+
864+
ChannelType::CATRINA10 => {
865+
self.set_value(&ChannelDataField::CATRINA10Energy, hit.energy);
866+
self.set_value(&ChannelDataField::CATRINA10Short, hit.energy_short);
867+
self.set_value(&ChannelDataField::CATRINA10Time, hit.timestamp);
868+
let long = hit.energy;
869+
let short = hit.energy_short;
870+
let psd = (long - short) / long;
871+
self.set_value(&ChannelDataField::CATRINA10PSD, psd);
872+
}
873+
874+
ChannelType::CATRINA11 => {
875+
self.set_value(&ChannelDataField::CATRINA11Energy, hit.energy);
876+
self.set_value(&ChannelDataField::CATRINA11Short, hit.energy_short);
877+
self.set_value(&ChannelDataField::CATRINA11Time, hit.timestamp);
878+
let long = hit.energy;
879+
let short = hit.energy_short;
880+
let psd = (long - short) / long;
881+
self.set_value(&ChannelDataField::CATRINA11PSD, psd);
882+
}
883+
884+
ChannelType::CATRINA12 => {
885+
self.set_value(&ChannelDataField::CATRINA12Energy, hit.energy);
886+
self.set_value(&ChannelDataField::CATRINA12Short, hit.energy_short);
887+
self.set_value(&ChannelDataField::CATRINA12Time, hit.timestamp);
888+
let long = hit.energy;
889+
let short = hit.energy_short;
890+
let psd = (long - short) / long;
891+
self.set_value(&ChannelDataField::CATRINA12PSD, psd);
892+
}
893+
894+
ChannelType::CATRINA13 => {
895+
self.set_value(&ChannelDataField::CATRINA13Energy, hit.energy);
896+
self.set_value(&ChannelDataField::CATRINA13Short, hit.energy_short);
897+
self.set_value(&ChannelDataField::CATRINA13Time, hit.timestamp);
898+
let long = hit.energy;
899+
let short = hit.energy_short;
900+
let psd = (long - short) / long;
901+
self.set_value(&ChannelDataField::CATRINA13PSD, psd);
902+
}
903+
904+
ChannelType::CATRINA14 => {
905+
self.set_value(&ChannelDataField::CATRINA14Energy, hit.energy);
906+
self.set_value(&ChannelDataField::CATRINA14Short, hit.energy_short);
907+
self.set_value(&ChannelDataField::CATRINA14Time, hit.timestamp);
908+
let long = hit.energy;
909+
let short = hit.energy_short;
910+
let psd = (long - short) / long;
911+
self.set_value(&ChannelDataField::CATRINA14PSD, psd);
912+
}
913+
662914
ChannelType::RF => {
663915
self.set_value(&ChannelDataField::RF, hit.timestamp);
664916
}

src/evb/channel_map.rs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,18 @@ pub enum ChannelType {
3838
CATRINA0,
3939
CATRINA1,
4040
CATRINA2,
41+
CATRINA3,
42+
CATRINA4,
43+
CATRINA5,
44+
CATRINA6,
45+
CATRINA7,
46+
CATRINA8,
47+
CATRINA9,
48+
CATRINA10,
49+
CATRINA11,
50+
CATRINA12,
51+
CATRINA13,
52+
CATRINA14,
4153

4254
RF,
4355

@@ -113,6 +125,28 @@ impl Board {
113125
Board { id, channels }
114126
}
115127

128+
pub fn catrina(id: u32) -> Board {
129+
let channels = [
130+
ChannelType::CATRINA0,
131+
ChannelType::CATRINA1,
132+
ChannelType::CATRINA2,
133+
ChannelType::CATRINA3,
134+
ChannelType::CATRINA4,
135+
ChannelType::CATRINA5,
136+
ChannelType::CATRINA6,
137+
ChannelType::CATRINA7,
138+
ChannelType::CATRINA8,
139+
ChannelType::CATRINA9,
140+
ChannelType::CATRINA10,
141+
ChannelType::CATRINA11,
142+
ChannelType::CATRINA12,
143+
ChannelType::CATRINA13,
144+
ChannelType::CATRINA14,
145+
ChannelType::None,
146+
];
147+
Board { id, channels }
148+
}
149+
116150
pub fn ui(&mut self, ui: &mut egui::Ui, board_idx: usize, on_remove: impl FnOnce()) {
117151
ui.vertical(|ui| {
118152
egui::Grid::new(format!("board_{}", board_idx))
@@ -176,6 +210,18 @@ impl Board {
176210
ChannelType::CATRINA0,
177211
ChannelType::CATRINA1,
178212
ChannelType::CATRINA2,
213+
ChannelType::CATRINA3,
214+
ChannelType::CATRINA4,
215+
ChannelType::CATRINA5,
216+
ChannelType::CATRINA6,
217+
ChannelType::CATRINA7,
218+
ChannelType::CATRINA8,
219+
ChannelType::CATRINA9,
220+
ChannelType::CATRINA10,
221+
ChannelType::CATRINA11,
222+
ChannelType::CATRINA12,
223+
ChannelType::CATRINA13,
224+
ChannelType::CATRINA14,
179225
ChannelType::RF,
180226
ChannelType::None,
181227
] {

0 commit comments

Comments
 (0)