@@ -122,6 +122,7 @@ pub fn gen_peripheral(p: &mut Peripheral, d: &Defaults) -> Vec<Tokens> {
122
122
for register in registers {
123
123
items. extend ( gen_register ( register, d) ) ;
124
124
items. extend ( gen_register_read_methods ( register, d) ) ;
125
+ items. extend ( gen_register_default_impl ( register, d) ) ;
125
126
items. extend ( gen_register_write_methods ( register, d) ) ;
126
127
}
127
128
@@ -216,6 +217,25 @@ pub fn gen_register_read_methods(r: &Register, _d: &Defaults) -> Vec<Tokens> {
216
217
items
217
218
}
218
219
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
+
219
239
pub fn gen_register_write_methods ( r : & Register , d : & Defaults ) -> Vec < Tokens > {
220
240
let mut items = vec ! [ ] ;
221
241
@@ -227,15 +247,6 @@ pub fn gen_register_write_methods(r: &Register, d: &Defaults) -> Vec<Tokens> {
227
247
228
248
let mut impl_items = vec ! [ ] ;
229
249
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
-
239
250
if r. fields . is_some ( ) {
240
251
for field in r. fields
241
252
. as_ref ( )
0 commit comments