aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimo Kröger <[email protected]>2021-08-04 11:08:18 +0200
committerTimo Kröger <[email protected]>2021-08-04 11:22:54 +0200
commit37536695e1790ff6aea7d97464251f1099d9fc85 (patch)
treed6f240aa350ab613682688b50641c3a9d47f940b
parentc985c031d44a9f49aab90b786496ef4afddf69ac (diff)
Refactor `find_reg_for_field()`
-rw-r--r--stm32-metapac-gen/src/lib.rs30
1 files changed, 12 insertions, 18 deletions
diff --git a/stm32-metapac-gen/src/lib.rs b/stm32-metapac-gen/src/lib.rs
index 983ced910..2398d5a8c 100644
--- a/stm32-metapac-gen/src/lib.rs
+++ b/stm32-metapac-gen/src/lib.rs
@@ -121,27 +121,21 @@ fn find_reg_for_field<'c>(
121 reg_regex: &str, 121 reg_regex: &str,
122 field_name: &str, 122 field_name: &str,
123) -> Option<(&'c str, &'c str)> { 123) -> Option<(&'c str, &'c str)> {
124 rcc.fieldsets.iter().find_map(|(name, fieldset)| { 124 let reg_regex = Regex::new(reg_regex).unwrap();
125
126 for (name, fieldset) in &rcc.fieldsets {
125 // Workaround for some families that prefix register aliases with C1_, which does 127 // Workaround for some families that prefix register aliases with C1_, which does
126 // not help matching for clock name. 128 // not help matching for clock name.
127 if name.starts_with("C1") || name.starts_with("C2") { 129 if !name.starts_with("C1") && !name.starts_with("C2") && reg_regex.is_match(name) {
128 None 130 for field in &fieldset.fields {
129 } else if Regex::new(reg_regex).unwrap().is_match(name) { 131 if field_name == field.name {
130 fieldset 132 return Some((name.as_str(), field.name.as_str()));
131 .fields 133 }
132 .iter() 134 }
133 .find_map(|field| {
134 if field_name == field.name {
135 return Some(field.name.as_str());
136 } else {
137 None
138 }
139 })
140 .map(|n| (name.as_str(), n))
141 } else {
142 None
143 } 135 }
144 }) 136 }
137
138 None
145} 139}
146 140
147fn make_peripheral_counts(out: &mut String, data: &BTreeMap<String, u8>) { 141fn make_peripheral_counts(out: &mut String, data: &BTreeMap<String, u8>) {