Updated TDF variant extraction to align with new TDF format

This commit is contained in:
Nav
2024-03-09 15:40:05 +00:00
parent 4bb273124a
commit 534b269b56
3 changed files with 29 additions and 2 deletions

View File

@@ -256,6 +256,14 @@ namespace Targets::TargetDescription
std::pair(pinout.key, std::move(pinout))
);
}
for (
auto element = deviceElement.firstChildElement("variants").firstChildElement("variant");
!element.isNull();
element = element.nextSiblingElement("variant")
) {
this->variants.emplace_back(TargetDescriptionFile::variantFromXml(element));
}
}
const std::string& TargetDescriptionFile::deviceAttribute(const std::string& attributeName) const {
@@ -653,4 +661,12 @@ namespace Targets::TargetDescription
TargetDescriptionFile::getAttribute(xmlElement, "pad")
);
}
Variant TargetDescriptionFile::variantFromXml(const QDomElement& xmlElement) {
return Variant(
TargetDescriptionFile::getAttribute(xmlElement, "name"),
TargetDescriptionFile::getAttribute(xmlElement, "pinout-key"),
TargetDescriptionFile::getAttribute(xmlElement, "package")
);
}
}

View File

@@ -111,6 +111,7 @@ namespace Targets::TargetDescription
std::map<std::string, Module, std::less<void>> modulesByKey;
std::map<std::string, Peripheral, std::less<void>> peripheralsByKey;
std::map<std::string, Pinout, std::less<void>> pinoutsByKey;
std::vector<Variant> variants;
TargetDescriptionFile() = default;
virtual ~TargetDescriptionFile() = default;
@@ -145,5 +146,6 @@ namespace Targets::TargetDescription
static Signal signalFromXml(const QDomElement& xmlElement);
static Pinout pinoutFromXml(const QDomElement& xmlElement);
static Pin pinFromXml(const QDomElement& xmlElement);
static Variant variantFromXml(const QDomElement& xmlElement);
};
}

View File

@@ -7,8 +7,17 @@ namespace Targets::TargetDescription
struct Variant
{
std::string name;
std::string pinoutName;
std::string pinoutKey;
std::string package;
bool disabled = false;
Variant(
const std::string& name,
const std::string& pinoutKey,
const std::string& package
)
: name(name)
, pinoutKey(pinoutKey)
, package(package)
{}
};
}