mirror of
https://gitlab.cern.ch/wotsubo/endcap-sl-software-ri-generator.git
synced 2025-02-23 17:17:08 +09:00
update(converter): add validation for register about mask & field
ref: ea1850e csr commit
This commit is contained in:
parent
6b5b5e0234
commit
8e0761e39e
1 changed files with 11 additions and 1 deletions
|
@ -352,12 +352,21 @@ impl Register {
|
||||||
.transpose()?;
|
.transpose()?;
|
||||||
let desc = node.attribute("desc").map(str::to_string);
|
let desc = node.attribute("desc").map(str::to_string);
|
||||||
|
|
||||||
let children = node
|
let children: Vec<_> = node
|
||||||
.children()
|
.children()
|
||||||
.filter(|node| node.is_element() && node.tag_name().name().eq("field"))
|
.filter(|node| node.is_element() && node.tag_name().name().eq("field"))
|
||||||
.map(Field::from_xml_dom)
|
.map(Field::from_xml_dom)
|
||||||
.collect::<Result<_, _>>()?;
|
.collect::<Result<_, _>>()?;
|
||||||
|
|
||||||
|
// Validation
|
||||||
|
if mask.is_some() && !children.is_empty() {
|
||||||
|
return Err(DomConversionError::OtherError(format!(
|
||||||
|
"both mask and field are used in the same register: {} - {}",
|
||||||
|
node.document().text_pos_at(node.range().start),
|
||||||
|
node.document().text_pos_at(node.range().end),
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
|
||||||
Ok(Register {
|
Ok(Register {
|
||||||
name,
|
name,
|
||||||
addr,
|
addr,
|
||||||
|
@ -424,6 +433,7 @@ impl Field {
|
||||||
.map(Value::from_xml_dom)
|
.map(Value::from_xml_dom)
|
||||||
.collect::<Result<_, _>>()?;
|
.collect::<Result<_, _>>()?;
|
||||||
|
|
||||||
|
// Validation
|
||||||
if let Some(default) = default {
|
if let Some(default) = default {
|
||||||
if default & !(mask) != 0 {
|
if default & !(mask) != 0 {
|
||||||
log::warn!(
|
log::warn!(
|
||||||
|
|
Loading…
Reference in a new issue