diff --git a/svd-parser/CHANGELOG.md b/svd-parser/CHANGELOG.md index 640ddaf2..35938de9 100644 --- a/svd-parser/CHANGELOG.md +++ b/svd-parser/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## Unreleased +- Add check for wrong size of `bitRange` width - Add `protection` parsing - Add `readAction` parsing - Add array support for peripherals diff --git a/svd-parser/src/bitrange.rs b/svd-parser/src/bitrange.rs index e8ed2c7c..0fb8ec4e 100644 --- a/svd-parser/src/bitrange.rs +++ b/svd-parser/src/bitrange.rs @@ -7,6 +7,7 @@ pub enum InvalidBitRange { ParseError, MsbLsb, Empty, + Size, } impl Parse for BitRange { @@ -83,6 +84,9 @@ impl Parse for BitRange { return Err(SVDError::InvalidBitRange(InvalidBitRange::Syntax).at(tree.id())); }; + if start > end { + return Err(SVDError::InvalidBitRange(InvalidBitRange::Size).at(tree.id())); + } Ok(Self { offset: start, width: end - start + 1, diff --git a/svd-rs/CHANGELOG.md b/svd-rs/CHANGELOG.md index 5486d4cb..dbfcb1f9 100644 --- a/svd-rs/CHANGELOG.md +++ b/svd-rs/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## Unreleased +- Add `name` function to `Cluster` - `AddressBlock` now uses builder - Add `dim_name` and `dim_array_index` to `DimElement` - Add `alternate_peripheral`, `prepend_to_name`, `append_to_name`, diff --git a/svd-rs/src/cluster.rs b/svd-rs/src/cluster.rs index d42538a2..90ee9426 100644 --- a/svd-rs/src/cluster.rs +++ b/svd-rs/src/cluster.rs @@ -40,6 +40,14 @@ impl Cluster { pub const fn is_array(&self) -> bool { matches!(self, Self::Array(_, _)) } + + /// Get the name of this cluster + pub fn name(&self) -> &str { + match self { + Self::Single(info) => &info.name, + Self::Array(info, _) => &info.name, + } + } } #[cfg(feature = "serde")]