Skip to content

Commit 4d490cb

Browse files
committed
register iterator
1 parent 67e9901 commit 4d490cb

File tree

3 files changed

+5
-32
lines changed

3 files changed

+5
-32
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
99

1010
### Changed
1111

12+
- Use register iterator from `svd-parser`
1213
- rm unneeded `core::convert::` prefix on `From`
1314

1415
## [v0.18.0] - 2021-04-17

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ anyhow = "1.0"
4343
thiserror = "1.0"
4444

4545
[dependencies.svd-parser]
46-
version = "0.10"
46+
version = "0.10.2"
4747
features = ["derive-from"]
4848

4949
[dependencies.syn]

src/generate/register.rs

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::svd::{
2-
Access, BitRange, EnumeratedValues, Field, Peripheral, Register, RegisterCluster,
3-
RegisterProperties, Usage, WriteConstraint,
2+
Access, BitRange, EnumeratedValues, Field, Peripheral, Register, RegisterProperties, Usage,
3+
WriteConstraint,
44
};
55
use cast::u64;
66
use core::u64;
@@ -1208,7 +1208,7 @@ fn lookup_in_peripherals<'p>(
12081208
all_peripherals: &'p [Peripheral],
12091209
) -> Result<(&'p EnumeratedValues, Option<Base<'p>>)> {
12101210
if let Some(peripheral) = all_peripherals.iter().find(|p| p.name == base_peripheral) {
1211-
let all_registers = periph_all_registers(peripheral);
1211+
let all_registers = peripheral.reg_iter().collect::<Vec<_>>();
12121212
lookup_in_peripheral(
12131213
Some(base_peripheral),
12141214
base_register,
@@ -1221,31 +1221,3 @@ fn lookup_in_peripherals<'p>(
12211221
Err(anyhow!("No peripheral {}", base_peripheral))
12221222
}
12231223
}
1224-
1225-
fn periph_all_registers(p: &Peripheral) -> Vec<&Register> {
1226-
let mut par: Vec<&Register> = Vec::new();
1227-
let mut rem: Vec<&RegisterCluster> = Vec::new();
1228-
if p.registers.is_none() {
1229-
return par;
1230-
}
1231-
1232-
if let Some(regs) = &p.registers {
1233-
for r in regs.iter() {
1234-
rem.push(r);
1235-
}
1236-
}
1237-
1238-
while let Some(b) = rem.pop() {
1239-
match b {
1240-
RegisterCluster::Register(reg) => {
1241-
par.push(reg);
1242-
}
1243-
RegisterCluster::Cluster(cluster) => {
1244-
for c in cluster.children.iter() {
1245-
rem.push(c);
1246-
}
1247-
}
1248-
}
1249-
}
1250-
par
1251-
}

0 commit comments

Comments
 (0)