Skip to content

Commit fc33d62

Browse files
committed
Merge branch 'write_once' of https://github.com/hugwijst/svd2rust into once
2 parents fbaaa28 + 450b410 commit fc33d62

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

src/generate/register.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ pub fn render(
7878
});
7979
}
8080

81-
if access == Access::WriteOnly || access == Access::ReadWrite {
81+
if [Access::WriteOnly, Access::WriteOnce, Access::ReadWrite].contains(&access) {
8282
reg_impl_items.push(quote! {
8383
/// Writes to the register
8484
#[inline]
@@ -165,7 +165,7 @@ pub fn render(
165165
});
166166
}
167167

168-
if access == Access::WriteOnly || access == Access::ReadWrite {
168+
if [Access::WriteOnly, Access::WriteOnce, Access::ReadWrite].contains(&access) {
169169
mod_items.push(quote! {
170170
impl W {
171171
#(#w_impl_items)*
@@ -556,7 +556,7 @@ pub fn fields(
556556
}
557557
}
558558

559-
if access == Access::WriteOnly || access == Access::ReadWrite {
559+
if [Access::WriteOnly, Access::WriteOnce, Access::ReadWrite].contains(&access) {
560560
for f in &fs {
561561
if f.access == Some(Access::ReadOnly) {
562562
continue;

src/util.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,9 @@ pub fn access_of(register: &Register) -> Access {
200200
if let Some(fields) = &register.fields {
201201
if fields.iter().all(|f| f.access == Some(Access::ReadOnly)) {
202202
Access::ReadOnly
203-
} else if fields.iter().all(|f| f.access == Some(Access::WriteOnly)) {
203+
} else if fields.iter().all(|f| f.access == Some(Access::WriteOnce)) {
204+
Access::WriteOnce
205+
} else if fields.iter().all(|f| f.access == Some(Access::WriteOnly) || f.access == Some(Access::WriteOnce)) {
204206
Access::WriteOnly
205207
} else {
206208
Access::ReadWrite

0 commit comments

Comments
 (0)