mirror of
https://gitlab.cern.ch/wotsubo/endcap-sl-software-ri-generator.git
synced 2025-04-30 00:26:22 +09:00
fix(converter): use mask of parent register for virtual field if exists
This commit is contained in:
parent
6ee8239682
commit
3379babe12
1 changed files with 16 additions and 11 deletions
|
@ -517,17 +517,22 @@ impl Field {
|
||||||
/// Generate Field from Registers (piracy), guessing a lot of parameters.
|
/// Generate Field from Registers (piracy), guessing a lot of parameters.
|
||||||
pub(crate) fn from_xml_register_dom(node: Node) -> Result<Self, DomConversionError> {
|
pub(crate) fn from_xml_register_dom(node: Node) -> Result<Self, DomConversionError> {
|
||||||
let name = util::get_name(node)?;
|
let name = util::get_name(node)?;
|
||||||
let mask = node
|
let mask = match node.attribute("mask") {
|
||||||
.ancestors()
|
Some(mask) => mask
|
||||||
.filter_map(|node| util::get_type(node))
|
.parse_prefixed_u32()
|
||||||
.next()
|
.map_err(|e| DomConversionError::parse_prefixed_u32_error(e, "mask", node))?,
|
||||||
.transpose()?
|
None => node
|
||||||
.map_or_else(
|
.ancestors()
|
||||||
|| Err(DomConversionError::parameter_completion_error("type", node)),
|
.filter_map(|node| util::get_type(node))
|
||||||
|dtype| match dtype {
|
.next()
|
||||||
crate::types::DataType::D32 => Ok(u32::MAX),
|
.transpose()?
|
||||||
},
|
.map_or_else(
|
||||||
)?;
|
|| Err(DomConversionError::parameter_completion_error("type", node)),
|
||||||
|
|dtype| match dtype {
|
||||||
|
crate::types::DataType::D32 => Ok(u32::MAX),
|
||||||
|
},
|
||||||
|
)?,
|
||||||
|
};
|
||||||
if node.has_attribute("default") {
|
if node.has_attribute("default") {
|
||||||
return Err(DomConversionError::other_error(
|
return Err(DomConversionError::other_error(
|
||||||
"unsupported structure: register with @default without field",
|
"unsupported structure: register with @default without field",
|
||||||
|
|
Loading…
Add table
Reference in a new issue