Skip to content

Commit af01705

Browse files
James Munnsburrbull
authored andcommitted
Rebase on Compiles with newest svd master
1 parent ba3e22d commit af01705

File tree

6 files changed

+31
-35
lines changed

6 files changed

+31
-35
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,5 @@ error-chain = "0.11.0"
3636
inflections = "1.1.0"
3737
log = { version = "~0.4", features = ["std"] }
3838
quote = "0.3.15"
39-
svd-parser = "0.6"
39+
svd-parser = "0.7"
4040
syn = "0.11.11"

src/generate/peripheral.rs

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
use std::borrow::Cow;
22
use std::cmp::Ordering;
33

4-
use either::Either;
54
use quote::{ToTokens, Tokens};
6-
use crate::svd::{Cluster, ClusterInfo, Defaults, Peripheral, Register};
5+
use svd::{Cluster, ClusterInfo, Defaults, Peripheral, Register, RegisterCluster};
76
use syn::{self, Ident};
87
use log::warn;
98

@@ -356,7 +355,7 @@ impl FieldRegions {
356355
}
357356

358357
fn register_or_cluster_block(
359-
ercs: &[Either<Register, Cluster>],
358+
ercs: &[RegisterCluster],
360359
defs: &Defaults,
361360
name: Option<&str>,
362361
nightly: bool,
@@ -369,7 +368,7 @@ fn register_or_cluster_block(
369368
}
370369

371370
fn register_or_cluster_block_stable(
372-
ercs: &[Either<Register, Cluster>],
371+
ercs: &[RegisterCluster],
373372
defs: &Defaults,
374373
name: Option<&str>,
375374
) -> Result<Tokens> {
@@ -433,7 +432,7 @@ fn register_or_cluster_block_stable(
433432
}
434433

435434
fn register_or_cluster_block_nightly(
436-
ercs: &[Either<Register, Cluster>],
435+
ercs: &[RegisterCluster],
437436
defs: &Defaults,
438437
name: Option<&str>,
439438
) -> Result<Tokens> {
@@ -552,16 +551,16 @@ fn register_or_cluster_block_nightly(
552551
/// Expand a list of parsed `Register`s or `Cluster`s, and render them to
553552
/// `RegisterBlockField`s containing `Field`s.
554553
fn expand(
555-
ercs: &[Either<Register, Cluster>],
554+
ercs: &[RegisterCluster],
556555
defs: &Defaults,
557556
name: Option<&str>,
558557
) -> Result<Vec<RegisterBlockField>> {
559558
let mut ercs_expanded = vec![];
560559

561560
for erc in ercs {
562561
ercs_expanded.extend(match erc {
563-
Either::Left(ref register) => expand_register(register, defs, name)?,
564-
Either::Right(ref cluster) => expand_cluster(cluster, defs)?,
562+
RegisterCluster::Register(ref register) => expand_register(register, defs, name)?,
563+
RegisterCluster::Cluster(ref cluster) => expand_cluster(cluster, defs)?,
565564
});
566565
}
567566

@@ -577,15 +576,15 @@ fn cluster_size_in_bits(info: &ClusterInfo, defs: &Defaults) -> Result<u32> {
577576

578577
for c in &info.children {
579578
let end = match *c {
580-
Either::Left(ref reg) => {
579+
RegisterCluster::Register(ref reg) => {
581580
let reg_size: u32 = expand_register(reg, defs, None)?
582581
.iter()
583582
.map(|rbf| rbf.size)
584583
.sum();
585584

586585
(reg.address_offset * BITS_PER_BYTE) + reg_size
587586
}
588-
Either::Right(ref clust) => {
587+
RegisterCluster::Cluster(ref clust) => {
589588
(clust.address_offset * BITS_PER_BYTE) + cluster_size_in_bits(clust, defs)?
590589
}
591590
};
@@ -665,7 +664,7 @@ fn expand_register(
665664
match *register {
666665
Register::Single(ref info) => register_expanded.push(RegisterBlockField {
667666
field: convert_svd_register(register, name),
668-
description: info.description.clone(),
667+
description: info.description.clone().unwrap(),
669668
offset: info.address_offset,
670669
size: register_size,
671670
}),
@@ -685,15 +684,15 @@ fn expand_register(
685684
if array_convertible {
686685
register_expanded.push(RegisterBlockField {
687686
field: convert_svd_register(&register, name),
688-
description: info.description.clone(),
687+
description: info.description.clone().unwrap(),
689688
offset: info.address_offset,
690689
size: register_size * array_info.dim,
691690
});
692691
} else {
693692
for (field_num, field) in expand_svd_register(register, name).iter().enumerate() {
694693
register_expanded.push(RegisterBlockField {
695694
field: field.clone(),
696-
description: info.description.clone(),
695+
description: info.description.clone().unwrap(),
697696
offset: info.address_offset + field_num as u32 * array_info.dim_increment,
698697
size: register_size,
699698
});

src/generate/register.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
use cast::u64;
2-
use either::Either;
32
use quote::Tokens;
4-
use crate::svd::{Access, BitRange, Cluster, Defaults, EnumeratedValues, Field, Peripheral, Register,
5-
Usage, WriteConstraint};
3+
use svd::{Access, BitRange, Defaults, EnumeratedValues, Field, Peripheral, Register,
4+
RegisterCluster, Usage, WriteConstraint};
65
use syn::Ident;
76

87
use crate::errors::*;
@@ -31,7 +30,7 @@ pub fn render(
3130
rsize.next_power_of_two()
3231
};
3332
let rty = rsize.to_ty()?;
34-
let description = util::escape_brackets(util::respace(&register.description).as_ref());
33+
let description = util::escape_brackets(util::respace(&register.description.clone().unwrap()).as_ref());
3534

3635
let unsafety = unsafety(register.write_constraint.as_ref(), rsize);
3736

@@ -222,7 +221,8 @@ pub fn fields(
222221

223222
impl<'a> F<'a> {
224223
fn from(f: &'a Field) -> Result<Self> {
225-
let BitRange { offset, width } = f.bit_range;
224+
// TODO(AJM) - do we need to do anything with this range type?
225+
let BitRange { offset, width, range_type: _ } = f.bit_range;
226226
let sc = f.name.to_sanitized_snake_case();
227227
let pc = f.name.to_sanitized_upper_case();
228228
let pc_r = Ident::new(&*format!("{}R", pc));
@@ -1014,7 +1014,7 @@ fn lookup_in_peripherals<'p>(
10141014

10151015
fn periph_all_registers<'a>(p: &'a Peripheral) -> Vec<&'a Register> {
10161016
let mut par: Vec<&Register> = Vec::new();
1017-
let mut rem: Vec<&Either<Register, Cluster>> = Vec::new();
1017+
let mut rem: Vec<&RegisterCluster> = Vec::new();
10181018
if p.registers.is_none() {
10191019
return par;
10201020
}
@@ -1033,10 +1033,10 @@ fn periph_all_registers<'a>(p: &'a Peripheral) -> Vec<&'a Register> {
10331033

10341034
let b = b.unwrap();
10351035
match *b {
1036-
Either::Left(ref reg) => {
1036+
RegisterCluster::Register(ref reg) => {
10371037
par.push(reg);
10381038
}
1039-
Either::Right(ref cluster) => for c in cluster.children.iter() {
1039+
RegisterCluster::Cluster(ref cluster) => for c in cluster.children.iter() {
10401040
rem.push(c);
10411041
},
10421042
}

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ pub enum SvdError {
467467
pub fn generate(xml: &str, target: Target, nightly: bool) -> Result<Generation> {
468468
use std::fmt::Write;
469469

470-
let device = svd::parse(xml);
470+
let device = svd::parse(xml).unwrap(); //TODO(AJM)
471471
let mut device_x = String::new();
472472
let items = generate::device::render(&device, target, nightly, &mut device_x)
473473
.or(Err(SvdError::Render))?;

src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ fn run() -> Result<()> {
9292
}
9393
}
9494

95-
let device = svd::parse(xml);
95+
let device = svd::parse(xml).unwrap(); //TODO(AJM)
9696

9797
let nightly = matches.is_present("nightly_features");
9898

src/util.rs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
use std::borrow::Cow;
22

3-
use either::Either;
43
use inflections::Inflect;
5-
use crate::svd::{Access, Cluster, Register};
6-
use quote::Tokens;
4+
use svd::{Access, Cluster, Register, RegisterCluster};
75
use syn::Ident;
6+
use quote::Tokens;
87

98
use crate::errors::*;
109

@@ -291,23 +290,21 @@ impl U32Ext for u32 {
291290
}
292291

293292
/// Return only the clusters from the slice of either register or clusters.
294-
pub fn only_clusters(ercs: &[Either<Register, Cluster>]) -> Vec<&Cluster> {
295-
let clusters: Vec<&Cluster> = ercs
296-
.iter()
293+
pub fn only_clusters(ercs: &[RegisterCluster]) -> Vec<&Cluster> {
294+
let clusters: Vec<&Cluster> = ercs.iter()
297295
.filter_map(|x| match *x {
298-
Either::Right(ref x) => Some(x),
296+
RegisterCluster::Cluster(ref x) => Some(x),
299297
_ => None,
300298
})
301299
.collect();
302300
clusters
303301
}
304302

305303
/// Return only the registers the given slice of either register or clusters.
306-
pub fn only_registers(ercs: &[Either<Register, Cluster>]) -> Vec<&Register> {
307-
let registers: Vec<&Register> = ercs
308-
.iter()
304+
pub fn only_registers(ercs: &[RegisterCluster]) -> Vec<&Register> {
305+
let registers: Vec<&Register> = ercs.iter()
309306
.filter_map(|x| match *x {
310-
Either::Left(ref x) => Some(x),
307+
RegisterCluster::Register(ref x) => Some(x),
311308
_ => None,
312309
})
313310
.collect();

0 commit comments

Comments
 (0)