Skip to content

Commit c1557fc

Browse files
committed
Implement Default instead of providing a reset_value function
1 parent 275c9a5 commit c1557fc

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

src/lib.rs

+20-9
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ pub fn gen_peripheral(p: &mut Peripheral, d: &Defaults) -> Vec<Tokens> {
122122
for register in registers {
123123
items.extend(gen_register(register, d));
124124
items.extend(gen_register_read_methods(register, d));
125+
items.extend(gen_register_default_impl(register, d));
125126
items.extend(gen_register_write_methods(register, d));
126127
}
127128

@@ -216,6 +217,25 @@ pub fn gen_register_read_methods(r: &Register, _d: &Defaults) -> Vec<Tokens> {
216217
items
217218
}
218219

220+
pub fn gen_register_default_impl(r: &Register, d: &Defaults) -> Vec<Tokens> {
221+
let mut items = vec![];
222+
223+
let name = Ident::new(format!("{}", r.name.to_pascal_case()));
224+
225+
if let Some(reset_value) = r.reset_value.or(d.reset_value) {
226+
items.push(quote! {
227+
impl Default for #name {
228+
/// Reset value
229+
fn default() -> Self {
230+
#name { bits: #reset_value }
231+
}
232+
}
233+
});
234+
}
235+
236+
items
237+
}
238+
219239
pub fn gen_register_write_methods(r: &Register, d: &Defaults) -> Vec<Tokens> {
220240
let mut items = vec![];
221241

@@ -227,15 +247,6 @@ pub fn gen_register_write_methods(r: &Register, d: &Defaults) -> Vec<Tokens> {
227247

228248
let mut impl_items = vec![];
229249

230-
if let Some(reset_value) = r.reset_value.or(d.reset_value) {
231-
impl_items.push(quote! {
232-
/// Reset value
233-
pub fn reset_value() -> Self {
234-
#name { bits: #reset_value }
235-
}
236-
});
237-
}
238-
239250
if r.fields.is_some() {
240251
for field in r.fields
241252
.as_ref()

0 commit comments

Comments
 (0)