Skip to content

Commit d894fd1

Browse files
bors[bot]burrbull
andauthored
Merge #431
431: split out register size type from ResetValue trait r=therealprof a=burrbull Co-authored-by: Andrey Zgarbul <[email protected]>
2 parents cbf8e96 + 4638394 commit d894fd1

File tree

3 files changed

+21
-10
lines changed

3 files changed

+21
-10
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
1818

1919
### Changed
2020

21+
- split out register size type (`RawType`) from `ResetValue` trait
22+
2123
- `anyhow` crate is used for error handling
2224

2325
- [breaking-change] Among other cleanups, MSP430 crates are now expected to

src/generate/generic.rs

+18-8
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,19 @@ pub trait Readable {}
1212
/// Registers marked with `Readable` can be also `modify`'ed.
1313
pub trait Writable {}
1414

15+
16+
/// Raw register type (autoimplemented for `Reg` type)
17+
pub trait RawType {
18+
/// Raw register type (`u8`, `u16`, `u32`, ...).
19+
type Ux: Copy;
20+
}
1521
/// Reset value of the register.
1622
///
1723
/// This value is the initial value for the `write` method. It can also be directly written to the
1824
/// register by using the `reset` method.
19-
pub trait ResetValue {
20-
/// Raw register type (`u8`, `u16`, `u32`, ...).
21-
type Type;
22-
25+
pub trait ResetValue: RawType {
2326
/// Reset value of the register.
24-
fn reset_value() -> Self::Type;
27+
fn reset_value() -> Self::Ux;
2528
}
2629

2730
/// This structure provides volatile access to registers.
@@ -73,9 +76,16 @@ where
7376
}
7477
}
7578

79+
impl<U, REG> RawType for Reg<U, REG>
80+
where
81+
U: Copy,
82+
{
83+
type Ux = U;
84+
}
85+
7686
impl<U, REG> Reg<U, REG>
7787
where
78-
Self: ResetValue<Type = U> + Writable,
88+
Self: ResetValue + RawType<Ux = U> + Writable,
7989
U: Copy,
8090
{
8191
/// Writes the reset value to `Writable` register.
@@ -89,8 +99,8 @@ where
8999

90100
impl<U, REG> Reg<U, REG>
91101
where
92-
Self: ResetValue<Type = U> + Writable,
93-
U: Copy,
102+
Self: ResetValue + RawType<Ux = U> + Writable,
103+
U: Copy
94104
{
95105
/// Writes bits to a `Writable` register.
96106
///

src/generate/register.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,8 @@ pub fn render(
7272
mod_items.extend(quote! {
7373
#[doc = #doc]
7474
impl crate::ResetValue for super::#name_pc {
75-
type Type = #rty;
7675
#[inline(always)]
77-
fn reset_value() -> Self::Type { #rv }
76+
fn reset_value() -> Self::Ux { #rv }
7877
}
7978
});
8079
methods.push("reset");

0 commit comments

Comments
 (0)