@@ -150,7 +150,7 @@ where
150
150
}
151
151
}
152
152
153
- #[ derive( Clone , Copy , Debug ) ]
153
+ #[ derive( Clone , Copy , Debug , PartialEq , Eq ) ]
154
154
pub struct FieldBitRangeFormat ( pub BitRangeType ) ;
155
155
156
156
impl FromStr for FieldBitRangeFormat {
@@ -167,9 +167,14 @@ impl FromStr for FieldBitRangeFormat {
167
167
}
168
168
169
169
#[ derive( Clone , Copy , Debug , PartialEq , Eq ) ]
170
+ #[ non_exhaustive]
171
+ /// Apply a kind of sorting
170
172
pub enum Sorting {
173
+ /// Sort by addresses of offsets
171
174
Offset ,
175
+ /// Same as [`Sorting::Offset`], but reversed
172
176
OffsetReversed ,
177
+ /// Sort by name
173
178
Name ,
174
179
}
175
180
@@ -225,6 +230,9 @@ pub struct Config {
225
230
/// Sort peripherals in specified order
226
231
pub peripheral_sorting : Option < Sorting > ,
227
232
233
+ /// Place derived peripherals in the end
234
+ pub peripheral_derived_last : bool ,
235
+
228
236
/// Format of addressBlock's offset element
229
237
///
230
238
/// format: hex, dec
@@ -256,6 +264,9 @@ pub struct Config {
256
264
/// First write registers or clusters
257
265
pub registers_or_clusters_first : Option < RegistersOrClustersFirst > ,
258
266
267
+ /// Place derived registers and clusters in the end
268
+ pub register_cluster_derived_last : bool ,
269
+
259
270
/// Format of register's name-kind elements
260
271
/// - `derivedFrom`
261
272
/// - `name`
@@ -295,6 +306,9 @@ pub struct Config {
295
306
/// Sort fields in specified order
296
307
pub field_sorting : Option < Sorting > ,
297
308
309
+ /// Place derived fields in the end
310
+ pub field_derived_last : bool ,
311
+
298
312
/// Format of enumeratedValues's name-kind elements
299
313
/// - `derivedFrom`
300
314
/// - `name`
@@ -329,13 +343,15 @@ impl Default for Config {
329
343
peripheral_name : None ,
330
344
peripheral_base_address : NumberFormat :: UpperHex8 ,
331
345
peripheral_sorting : None ,
346
+ peripheral_derived_last : false ,
332
347
address_block_offset : NumberFormat :: UpperHex ,
333
348
address_block_size : NumberFormat :: UpperHex ,
334
349
interrupt_name : None ,
335
350
cluster_name : None ,
336
351
cluster_address_offset : NumberFormat :: UpperHex ,
337
352
register_cluster_sorting : None ,
338
353
registers_or_clusters_first : None ,
354
+ register_cluster_derived_last : false ,
339
355
register_name : None ,
340
356
register_address_offset : NumberFormat :: UpperHex ,
341
357
register_size : NumberFormat :: LowerHex ,
@@ -344,6 +360,7 @@ impl Default for Config {
344
360
field_name : None ,
345
361
field_bit_range : None ,
346
362
field_sorting : None ,
363
+ field_derived_last : false ,
347
364
enumerated_values_name : None ,
348
365
enumerated_value_name : None ,
349
366
enumerated_value_value : NumberFormat :: Dec ,
@@ -363,6 +380,7 @@ impl Config {
363
380
"peripheral_name" => self . peripheral_name = Some ( value. parse ( ) . unwrap ( ) ) ,
364
381
"peripheral_base_address" => self . peripheral_base_address = value. parse ( ) . unwrap ( ) ,
365
382
"peripheral_sorting" => self . peripheral_sorting = Some ( value. parse ( ) . unwrap ( ) ) ,
383
+ "peripheral_derived_last" => self . peripheral_derived_last = value. parse ( ) . unwrap ( ) ,
366
384
"address_block_offset" => self . address_block_offset = value. parse ( ) . unwrap ( ) ,
367
385
"address_block_size" => self . address_block_size = value. parse ( ) . unwrap ( ) ,
368
386
"interrupt_name" => self . interrupt_name = Some ( value. parse ( ) . unwrap ( ) ) ,
@@ -374,6 +392,9 @@ impl Config {
374
392
"registers_or_clusters_first" => {
375
393
self . registers_or_clusters_first = Some ( value. parse ( ) . unwrap ( ) )
376
394
}
395
+ "register_cluster_derived_last" => {
396
+ self . register_cluster_derived_last = value. parse ( ) . unwrap ( )
397
+ }
377
398
"register_name" => self . register_name = Some ( value. parse ( ) . unwrap ( ) ) ,
378
399
"register_address_offset" => self . register_address_offset = value. parse ( ) . unwrap ( ) ,
379
400
"register_size" => self . register_size = value. parse ( ) . unwrap ( ) ,
@@ -382,6 +403,7 @@ impl Config {
382
403
"field_name" => self . field_name = Some ( value. parse ( ) . unwrap ( ) ) ,
383
404
"field_bit_range" => self . field_bit_range = Some ( value. parse ( ) . unwrap ( ) ) ,
384
405
"field_sorting" => self . field_sorting = Some ( value. parse ( ) . unwrap ( ) ) ,
406
+ "field_derived_last" => self . field_derived_last = value. parse ( ) . unwrap ( ) ,
385
407
"enumerated_values_name" => self . enumerated_values_name = Some ( value. parse ( ) . unwrap ( ) ) ,
386
408
"enumerated_value_name" => self . enumerated_value_name = Some ( value. parse ( ) . unwrap ( ) ) ,
387
409
"enumerated_value_value" => self . enumerated_value_value = value. parse ( ) . unwrap ( ) ,
@@ -418,6 +440,14 @@ impl Config {
418
440
self
419
441
}
420
442
443
+ /// Place derived peripherals in the end
444
+ ///
445
+ /// `false` means keep the original order
446
+ pub fn peripheral_derived_last ( mut self , val : bool ) -> Self {
447
+ self . peripheral_derived_last = val;
448
+ self
449
+ }
450
+
421
451
/// Format of addressBlock's offset element
422
452
///
423
453
/// format: hex, dec
@@ -470,6 +500,14 @@ impl Config {
470
500
self
471
501
}
472
502
503
+ /// Place derived registers and clusters in the end
504
+ ///
505
+ /// `false` means keep the original order
506
+ pub fn register_cluster_derived_last ( mut self , val : bool ) -> Self {
507
+ self . register_cluster_derived_last = val;
508
+ self
509
+ }
510
+
473
511
/// Format of register's name-kind elements
474
512
pub fn register_name ( mut self , val : Option < IdentifierFormat > ) -> Self {
475
513
self . register_name = val;
@@ -530,6 +568,14 @@ impl Config {
530
568
self
531
569
}
532
570
571
+ /// Place derived fields in the end
572
+ ///
573
+ /// `false` means keep the original order
574
+ pub fn field_derived_last ( mut self , val : bool ) -> Self {
575
+ self . field_derived_last = val;
576
+ self
577
+ }
578
+
533
579
/// Format of enumeratedValues's name-kind elements
534
580
pub fn enumerated_values_name ( mut self , val : Option < IdentifierFormat > ) -> Self {
535
581
self . enumerated_values_name = val;
0 commit comments