From b5587d1e3caa342021ccf0c06b044d12676288b7 Mon Sep 17 00:00:00 2001 From: Nav Date: Wed, 13 Dec 2023 00:50:10 +0000 Subject: [PATCH] Added target family attribute to AVR8 TDFs and renamed AVR family attribute to `avr-family` --- .../AVR8/Avr8TargetDescriptionFile.php | 20 +++++++++---------- src/Targets/Microchip/AVR/AVR8/Avr8.cpp | 2 +- .../TargetDescriptionFile.cpp | 19 +++++++++++------- .../TargetDescriptionFile.hpp | 5 +++-- .../TargetDescriptionFile.cpp | 15 ++++++++++++-- .../TargetDescriptionFile.hpp | 6 ++++-- .../AVR8/D-SERIES/AVR128DA28.xml | 2 +- .../AVR8/D-SERIES/AVR128DA32.xml | 2 +- .../AVR8/D-SERIES/AVR128DA48.xml | 2 +- .../AVR8/D-SERIES/AVR128DA64.xml | 2 +- .../AVR8/D-SERIES/AVR128DB28.xml | 2 +- .../AVR8/D-SERIES/AVR128DB32.xml | 2 +- .../AVR8/D-SERIES/AVR128DB48.xml | 2 +- .../AVR8/D-SERIES/AVR128DB64.xml | 2 +- .../AVR8/D-SERIES/AVR16DD14.xml | 2 +- .../AVR8/D-SERIES/AVR16DD20.xml | 2 +- .../AVR8/D-SERIES/AVR16DD28.xml | 2 +- .../AVR8/D-SERIES/AVR16DD32.xml | 2 +- .../AVR8/D-SERIES/AVR32DA28.xml | 2 +- .../AVR8/D-SERIES/AVR32DA32.xml | 2 +- .../AVR8/D-SERIES/AVR32DA48.xml | 2 +- .../AVR8/D-SERIES/AVR32DB28.xml | 2 +- .../AVR8/D-SERIES/AVR32DB32.xml | 2 +- .../AVR8/D-SERIES/AVR32DB48.xml | 2 +- .../AVR8/D-SERIES/AVR32DD14.xml | 2 +- .../AVR8/D-SERIES/AVR32DD20.xml | 2 +- .../AVR8/D-SERIES/AVR32DD28.xml | 2 +- .../AVR8/D-SERIES/AVR32DD32.xml | 2 +- .../AVR8/D-SERIES/AVR64DA28.xml | 2 +- .../AVR8/D-SERIES/AVR64DA32.xml | 2 +- .../AVR8/D-SERIES/AVR64DA48.xml | 2 +- .../AVR8/D-SERIES/AVR64DA64.xml | 2 +- .../AVR8/D-SERIES/AVR64DB28.xml | 2 +- .../AVR8/D-SERIES/AVR64DB32.xml | 2 +- .../AVR8/D-SERIES/AVR64DB48.xml | 2 +- .../AVR8/D-SERIES/AVR64DB64.xml | 2 +- .../AVR8/D-SERIES/AVR64DD14.xml | 2 +- .../AVR8/D-SERIES/AVR64DD20.xml | 2 +- .../AVR8/D-SERIES/AVR64DD28.xml | 2 +- .../AVR8/D-SERIES/AVR64DD32.xml | 2 +- .../AVR8/E-SERIES/AVR64EA28.xml | 2 +- .../AVR8/E-SERIES/AVR64EA32.xml | 2 +- .../AVR8/E-SERIES/AVR64EA48.xml | 2 +- .../AVR8/MEGA/AT90CAN128.xml | 2 +- .../AVR8/MEGA/AT90CAN32.xml | 2 +- .../AVR8/MEGA/AT90CAN64.xml | 2 +- .../AVR8/MEGA/AT90PWM1.xml | 2 +- .../AVR8/MEGA/AT90PWM161.xml | 2 +- .../AVR8/MEGA/AT90PWM216.xml | 2 +- .../AVR8/MEGA/AT90PWM2B.xml | 2 +- .../AVR8/MEGA/AT90PWM316.xml | 2 +- .../AVR8/MEGA/AT90PWM3B.xml | 2 +- .../AVR8/MEGA/AT90PWM81.xml | 2 +- .../AVR8/MEGA/AT90USB1286.xml | 2 +- .../AVR8/MEGA/AT90USB1287.xml | 2 +- .../AVR8/MEGA/AT90USB162.xml | 2 +- .../AVR8/MEGA/AT90USB646.xml | 2 +- .../AVR8/MEGA/AT90USB647.xml | 2 +- .../AVR8/MEGA/AT90USB82.xml | 2 +- .../AVR8/MEGA/ATMEGA128.xml | 2 +- .../AVR8/MEGA/ATMEGA1280.xml | 2 +- .../AVR8/MEGA/ATMEGA1281.xml | 2 +- .../AVR8/MEGA/ATMEGA1284.xml | 2 +- .../AVR8/MEGA/ATMEGA1284P.xml | 2 +- .../AVR8/MEGA/ATMEGA1284RFR2.xml | 2 +- .../AVR8/MEGA/ATMEGA128A.xml | 2 +- .../AVR8/MEGA/ATMEGA128RFA1.xml | 2 +- .../AVR8/MEGA/ATMEGA128RFR2.xml | 2 +- .../AVR8/MEGA/ATMEGA16.xml | 2 +- .../AVR8/MEGA/ATMEGA1608.xml | 2 +- .../AVR8/MEGA/ATMEGA1609.xml | 2 +- .../AVR8/MEGA/ATMEGA162.xml | 2 +- .../AVR8/MEGA/ATMEGA164A.xml | 2 +- .../AVR8/MEGA/ATMEGA164P.xml | 2 +- .../AVR8/MEGA/ATMEGA164PA.xml | 2 +- .../AVR8/MEGA/ATMEGA165A.xml | 2 +- .../AVR8/MEGA/ATMEGA165P.xml | 2 +- .../AVR8/MEGA/ATMEGA165PA.xml | 2 +- .../AVR8/MEGA/ATMEGA168.xml | 2 +- .../AVR8/MEGA/ATMEGA168A.xml | 2 +- .../AVR8/MEGA/ATMEGA168P.xml | 2 +- .../AVR8/MEGA/ATMEGA168PA.xml | 2 +- .../AVR8/MEGA/ATMEGA168PB.xml | 2 +- .../AVR8/MEGA/ATMEGA169A.xml | 2 +- .../AVR8/MEGA/ATMEGA169P.xml | 2 +- .../AVR8/MEGA/ATMEGA169PA.xml | 2 +- .../AVR8/MEGA/ATMEGA16A.xml | 2 +- .../AVR8/MEGA/ATMEGA16M1.xml | 2 +- .../AVR8/MEGA/ATMEGA16U2.xml | 2 +- .../AVR8/MEGA/ATMEGA16U4.xml | 2 +- .../AVR8/MEGA/ATMEGA2560.xml | 2 +- .../AVR8/MEGA/ATMEGA2561.xml | 2 +- .../AVR8/MEGA/ATMEGA2564RFR2.xml | 2 +- .../AVR8/MEGA/ATMEGA256RFR2.xml | 2 +- .../AVR8/MEGA/ATMEGA32.xml | 2 +- .../AVR8/MEGA/ATMEGA3208.xml | 2 +- .../AVR8/MEGA/ATMEGA3209.xml | 2 +- .../AVR8/MEGA/ATMEGA324A.xml | 2 +- .../AVR8/MEGA/ATMEGA324P.xml | 2 +- .../AVR8/MEGA/ATMEGA324PA.xml | 2 +- .../AVR8/MEGA/ATMEGA324PB.xml | 2 +- .../AVR8/MEGA/ATMEGA325.xml | 2 +- .../AVR8/MEGA/ATMEGA3250.xml | 2 +- .../AVR8/MEGA/ATMEGA3250A.xml | 2 +- .../AVR8/MEGA/ATMEGA3250P.xml | 2 +- .../AVR8/MEGA/ATMEGA3250PA.xml | 2 +- .../AVR8/MEGA/ATMEGA325A.xml | 2 +- .../AVR8/MEGA/ATMEGA325P.xml | 2 +- .../AVR8/MEGA/ATMEGA325PA.xml | 2 +- .../AVR8/MEGA/ATMEGA328.xml | 2 +- .../AVR8/MEGA/ATMEGA328P.xml | 2 +- .../AVR8/MEGA/ATMEGA328PB.xml | 2 +- .../AVR8/MEGA/ATMEGA329.xml | 2 +- .../AVR8/MEGA/ATMEGA3290.xml | 2 +- .../AVR8/MEGA/ATMEGA3290A.xml | 2 +- .../AVR8/MEGA/ATMEGA3290P.xml | 2 +- .../AVR8/MEGA/ATMEGA3290PA.xml | 2 +- .../AVR8/MEGA/ATMEGA329A.xml | 2 +- .../AVR8/MEGA/ATMEGA329P.xml | 2 +- .../AVR8/MEGA/ATMEGA329PA.xml | 2 +- .../AVR8/MEGA/ATMEGA32A.xml | 2 +- .../AVR8/MEGA/ATMEGA32C1.xml | 2 +- .../AVR8/MEGA/ATMEGA32M1.xml | 2 +- .../AVR8/MEGA/ATMEGA32U2.xml | 2 +- .../AVR8/MEGA/ATMEGA32U4.xml | 2 +- .../AVR8/MEGA/ATMEGA406.xml | 2 +- .../AVR8/MEGA/ATMEGA48.xml | 2 +- .../AVR8/MEGA/ATMEGA4808.xml | 2 +- .../AVR8/MEGA/ATMEGA4809.xml | 2 +- .../AVR8/MEGA/ATMEGA48A.xml | 2 +- .../AVR8/MEGA/ATMEGA48P.xml | 2 +- .../AVR8/MEGA/ATMEGA48PA.xml | 2 +- .../AVR8/MEGA/ATMEGA48PB.xml | 2 +- .../AVR8/MEGA/ATMEGA64.xml | 2 +- .../AVR8/MEGA/ATMEGA640.xml | 2 +- .../AVR8/MEGA/ATMEGA644.xml | 2 +- .../AVR8/MEGA/ATMEGA644A.xml | 2 +- .../AVR8/MEGA/ATMEGA644P.xml | 2 +- .../AVR8/MEGA/ATMEGA644PA.xml | 2 +- .../AVR8/MEGA/ATMEGA644RFR2.xml | 2 +- .../AVR8/MEGA/ATMEGA645.xml | 2 +- .../AVR8/MEGA/ATMEGA6450.xml | 2 +- .../AVR8/MEGA/ATMEGA6450A.xml | 2 +- .../AVR8/MEGA/ATMEGA6450P.xml | 2 +- .../AVR8/MEGA/ATMEGA645A.xml | 2 +- .../AVR8/MEGA/ATMEGA645P.xml | 2 +- .../AVR8/MEGA/ATMEGA649.xml | 2 +- .../AVR8/MEGA/ATMEGA6490.xml | 2 +- .../AVR8/MEGA/ATMEGA6490A.xml | 2 +- .../AVR8/MEGA/ATMEGA6490P.xml | 2 +- .../AVR8/MEGA/ATMEGA649A.xml | 2 +- .../AVR8/MEGA/ATMEGA649P.xml | 2 +- .../AVR8/MEGA/ATMEGA64A.xml | 2 +- .../AVR8/MEGA/ATMEGA64C1.xml | 2 +- .../AVR8/MEGA/ATMEGA64M1.xml | 2 +- .../AVR8/MEGA/ATMEGA64RFR2.xml | 2 +- .../AVR8/MEGA/ATMEGA808.xml | 2 +- .../AVR8/MEGA/ATMEGA809.xml | 2 +- .../AVR8/MEGA/ATMEGA88.xml | 2 +- .../AVR8/MEGA/ATMEGA88A.xml | 2 +- .../AVR8/MEGA/ATMEGA88P.xml | 2 +- .../AVR8/MEGA/ATMEGA88PA.xml | 2 +- .../AVR8/MEGA/ATMEGA88PB.xml | 2 +- .../AVR8/MEGA/ATMEGA8U2.xml | 2 +- .../AVR8/TINY/ATTINY13.xml | 2 +- .../AVR8/TINY/ATTINY13A.xml | 2 +- .../AVR8/TINY/ATTINY1604.xml | 2 +- .../AVR8/TINY/ATTINY1606.xml | 2 +- .../AVR8/TINY/ATTINY1607.xml | 2 +- .../AVR8/TINY/ATTINY1614.xml | 2 +- .../AVR8/TINY/ATTINY1616.xml | 2 +- .../AVR8/TINY/ATTINY1617.xml | 2 +- .../AVR8/TINY/ATTINY1624.xml | 2 +- .../AVR8/TINY/ATTINY1626.xml | 2 +- .../AVR8/TINY/ATTINY1627.xml | 2 +- .../AVR8/TINY/ATTINY1634.xml | 2 +- .../AVR8/TINY/ATTINY167.xml | 2 +- .../AVR8/TINY/ATTINY202.xml | 2 +- .../AVR8/TINY/ATTINY204.xml | 2 +- .../AVR8/TINY/ATTINY212.xml | 2 +- .../AVR8/TINY/ATTINY214.xml | 2 +- .../AVR8/TINY/ATTINY2313.xml | 2 +- .../AVR8/TINY/ATTINY2313A.xml | 2 +- .../AVR8/TINY/ATTINY24.xml | 2 +- .../AVR8/TINY/ATTINY24A.xml | 2 +- .../AVR8/TINY/ATTINY25.xml | 2 +- .../AVR8/TINY/ATTINY261.xml | 2 +- .../AVR8/TINY/ATTINY261A.xml | 2 +- .../AVR8/TINY/ATTINY3216.xml | 2 +- .../AVR8/TINY/ATTINY3217.xml | 2 +- .../AVR8/TINY/ATTINY402.xml | 2 +- .../AVR8/TINY/ATTINY404.xml | 2 +- .../AVR8/TINY/ATTINY406.xml | 2 +- .../AVR8/TINY/ATTINY412.xml | 2 +- .../AVR8/TINY/ATTINY414.xml | 2 +- .../AVR8/TINY/ATTINY416.xml | 2 +- .../AVR8/TINY/ATTINY417.xml | 2 +- .../AVR8/TINY/ATTINY4313.xml | 2 +- .../AVR8/TINY/ATTINY43U.xml | 2 +- .../AVR8/TINY/ATTINY44.xml | 2 +- .../AVR8/TINY/ATTINY441.xml | 2 +- .../AVR8/TINY/ATTINY44A.xml | 2 +- .../AVR8/TINY/ATTINY45.xml | 2 +- .../AVR8/TINY/ATTINY461.xml | 2 +- .../AVR8/TINY/ATTINY461A.xml | 2 +- .../AVR8/TINY/ATTINY48.xml | 2 +- .../AVR8/TINY/ATTINY804.xml | 2 +- .../AVR8/TINY/ATTINY806.xml | 2 +- .../AVR8/TINY/ATTINY807.xml | 2 +- .../AVR8/TINY/ATTINY814.xml | 2 +- .../AVR8/TINY/ATTINY816.xml | 2 +- .../AVR8/TINY/ATTINY817.xml | 2 +- .../AVR8/TINY/ATTINY828.xml | 2 +- .../AVR8/TINY/ATTINY84.xml | 2 +- .../AVR8/TINY/ATTINY841.xml | 2 +- .../AVR8/TINY/ATTINY84A.xml | 2 +- .../AVR8/TINY/ATTINY85.xml | 2 +- .../AVR8/TINY/ATTINY861.xml | 2 +- .../AVR8/TINY/ATTINY861A.xml | 2 +- .../AVR8/TINY/ATTINY87.xml | 2 +- .../AVR8/TINY/ATTINY88.xml | 2 +- .../AVR8/XMEGA/ATXMEGA128A1.xml | 2 +- .../AVR8/XMEGA/ATXMEGA128A1U.xml | 2 +- .../AVR8/XMEGA/ATXMEGA128A3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA128A3U.xml | 2 +- .../AVR8/XMEGA/ATXMEGA128A4U.xml | 2 +- .../AVR8/XMEGA/ATXMEGA128B1.xml | 2 +- .../AVR8/XMEGA/ATXMEGA128B3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA128C3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA128D3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA128D4.xml | 2 +- .../AVR8/XMEGA/ATXMEGA16A4.xml | 2 +- .../AVR8/XMEGA/ATXMEGA16A4U.xml | 2 +- .../AVR8/XMEGA/ATXMEGA16C4.xml | 2 +- .../AVR8/XMEGA/ATXMEGA16D4.xml | 2 +- .../AVR8/XMEGA/ATXMEGA16E5.xml | 2 +- .../AVR8/XMEGA/ATXMEGA192A3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA192A3U.xml | 2 +- .../AVR8/XMEGA/ATXMEGA192C3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA192D3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA256A3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA256A3B.xml | 2 +- .../AVR8/XMEGA/ATXMEGA256A3BU.xml | 2 +- .../AVR8/XMEGA/ATXMEGA256A3U.xml | 2 +- .../AVR8/XMEGA/ATXMEGA256C3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA256D3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA32A4.xml | 2 +- .../AVR8/XMEGA/ATXMEGA32A4U.xml | 2 +- .../AVR8/XMEGA/ATXMEGA32C3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA32C4.xml | 2 +- .../AVR8/XMEGA/ATXMEGA32D3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA32D4.xml | 2 +- .../AVR8/XMEGA/ATXMEGA32E5.xml | 2 +- .../AVR8/XMEGA/ATXMEGA384C3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA384D3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA64A1.xml | 2 +- .../AVR8/XMEGA/ATXMEGA64A1U.xml | 2 +- .../AVR8/XMEGA/ATXMEGA64A3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA64A3U.xml | 2 +- .../AVR8/XMEGA/ATXMEGA64A4U.xml | 2 +- .../AVR8/XMEGA/ATXMEGA64B1.xml | 2 +- .../AVR8/XMEGA/ATXMEGA64B3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA64C3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA64D3.xml | 2 +- .../AVR8/XMEGA/ATXMEGA64D4.xml | 2 +- .../AVR8/XMEGA/ATXMEGA8E5.xml | 2 +- 266 files changed, 303 insertions(+), 284 deletions(-) diff --git a/build/scripts/TargetDescriptionFiles/AVR8/Avr8TargetDescriptionFile.php b/build/scripts/TargetDescriptionFiles/AVR8/Avr8TargetDescriptionFile.php index 449b6399..aa1985ce 100644 --- a/build/scripts/TargetDescriptionFiles/AVR8/Avr8TargetDescriptionFile.php +++ b/build/scripts/TargetDescriptionFiles/AVR8/Avr8TargetDescriptionFile.php @@ -51,28 +51,28 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile return null; } - public function getFamily(): ?string + public function getAvrFamily(): ?string { - if (!empty($this->deviceAttributesByName['family'])) { - if (stristr($this->deviceAttributesByName['family'], 'xmega') !== false) { + if (!empty($this->deviceAttributesByName['avr-family'])) { + if (stristr($this->deviceAttributesByName['avr-family'], 'xmega') !== false) { return self::AVR8_FAMILY_XMEGA; - } else if (stristr($this->deviceAttributesByName['family'], 'tiny') !== false) { + } else if (stristr($this->deviceAttributesByName['avr-family'], 'tiny') !== false) { return self::AVR8_FAMILY_TINY; - } else if (stristr($this->deviceAttributesByName['family'], 'mega') !== false) { + } else if (stristr($this->deviceAttributesByName['avr-family'], 'mega') !== false) { return self::AVR8_FAMILY_MEGA; - } else if (strtolower(trim($this->deviceAttributesByName['family'])) == 'avr da') { + } else if (strtolower(trim($this->deviceAttributesByName['avr-family'])) == 'avr da') { return self::AVR8_FAMILY_DA; - } else if (strtolower(trim($this->deviceAttributesByName['family'])) == 'avr db') { + } else if (strtolower(trim($this->deviceAttributesByName['avr-family'])) == 'avr db') { return self::AVR8_FAMILY_DB; - } else if (strtolower(trim($this->deviceAttributesByName['family'])) == 'avr dd') { + } else if (strtolower(trim($this->deviceAttributesByName['avr-family'])) == 'avr dd') { return self::AVR8_FAMILY_DD; - } else if (strtolower(trim($this->deviceAttributesByName['family'])) == 'avr ea') { + } else if (strtolower(trim($this->deviceAttributesByName['avr-family'])) == 'avr ea') { return self::AVR8_FAMILY_EA; } } @@ -591,7 +591,7 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile return $failures; } - $family = $this->getFamily(); + $family = $this->getAvrFamily(); if (is_null($family) || $family == self::AVR8_FAMILY_OTHER) { $failures[] = 'Unknown AVR8 family'; } diff --git a/src/Targets/Microchip/AVR/AVR8/Avr8.cpp b/src/Targets/Microchip/AVR/AVR8/Avr8.cpp index b3f34273..fe3342c9 100644 --- a/src/Targets/Microchip/AVR/AVR8/Avr8.cpp +++ b/src/Targets/Microchip/AVR/AVR8/Avr8.cpp @@ -23,7 +23,7 @@ namespace Targets::Microchip::Avr::Avr8Bit , targetDescriptionFile(TargetDescription::TargetDescriptionFile(this->targetConfig.name)) , signature(this->targetDescriptionFile.getTargetSignature()) , name(this->targetDescriptionFile.getTargetName()) - , family(this->targetDescriptionFile.getFamily()) + , family(this->targetDescriptionFile.getAvrFamily()) , targetParameters(this->targetDescriptionFile.getTargetParameters()) , supportedPhysicalInterfaces(this->targetDescriptionFile.getSupportedPhysicalInterfaces()) , padDescriptorsByName(this->targetDescriptionFile.getPadDescriptorsMappedByName()) diff --git a/src/Targets/Microchip/AVR/AVR8/TargetDescription/TargetDescriptionFile.cpp b/src/Targets/Microchip/AVR/AVR8/TargetDescription/TargetDescriptionFile.cpp index 0d949e08..799f2fce 100644 --- a/src/Targets/Microchip/AVR/AVR8/TargetDescription/TargetDescriptionFile.cpp +++ b/src/Targets/Microchip/AVR/AVR8/TargetDescription/TargetDescriptionFile.cpp @@ -41,8 +41,15 @@ namespace Targets::Microchip::Avr::Avr8Bit::TargetDescription Targets::TargetDescription::TargetDescriptionFile::init(descriptionFilePath); } - void TargetDescriptionFile::init(const QDomDocument& xml) { - Targets::TargetDescription::TargetDescriptionFile::init(xml); + void TargetDescriptionFile::init(const QDomDocument& document) { + Targets::TargetDescription::TargetDescriptionFile::init(document); + + const auto device = document.elementsByTagName("device").item(0).toElement(); + if (!device.isElement()) { + throw TargetDescriptionParsingFailureException("Device element not found."); + } + + this->avrFamilyName = device.attributes().namedItem("avr-family").nodeValue().toLower().toStdString(); this->loadSupportedPhysicalInterfaces(); this->loadPadDescriptors(); @@ -100,16 +107,14 @@ namespace Targets::Microchip::Avr::Avr8Bit::TargetDescription ); } - Family TargetDescriptionFile::getFamily() const { + Family TargetDescriptionFile::getAvrFamily() const { static const auto targetFamiliesByName = TargetDescriptionFile::getFamilyNameToEnumMapping(); - const auto& familyName = this->getFamilyName(); - - if (familyName.empty()) { + if (this->avrFamilyName.empty()) { throw Exception("Could not find target family name in target description file."); } - const auto familyIt = targetFamiliesByName.find(familyName); + const auto familyIt = targetFamiliesByName.find(this->avrFamilyName); if (familyIt == targetFamiliesByName.end()) { throw Exception("Unknown family name in target description file."); diff --git a/src/Targets/Microchip/AVR/AVR8/TargetDescription/TargetDescriptionFile.hpp b/src/Targets/Microchip/AVR/AVR8/TargetDescription/TargetDescriptionFile.hpp index 020db0f2..d27e15ca 100644 --- a/src/Targets/Microchip/AVR/AVR8/TargetDescription/TargetDescriptionFile.hpp +++ b/src/Targets/Microchip/AVR/AVR8/TargetDescription/TargetDescriptionFile.hpp @@ -46,7 +46,7 @@ namespace Targets::Microchip::Avr::Avr8Bit::TargetDescription * * @param xml */ - void init(const QDomDocument& xml) override; + void init(const QDomDocument& document) override; /** * Loads the AVR8 target description JSON mapping file. @@ -67,7 +67,7 @@ namespace Targets::Microchip::Avr::Avr8Bit::TargetDescription * * @return */ - [[nodiscard]] Family getFamily() const; + [[nodiscard]] Family getAvrFamily() const; /** * Constructs an instance of TargetParameters, for the AVR8 target, with data from the TDF. @@ -197,6 +197,7 @@ namespace Targets::Microchip::Avr::Avr8Bit::TargetDescription }; }; + std::string avrFamilyName; std::set supportedPhysicalInterfaces; std::map padDescriptorsByName; diff --git a/src/Targets/TargetDescription/TargetDescriptionFile.cpp b/src/Targets/TargetDescription/TargetDescriptionFile.cpp index de6b7b49..e7a79b73 100644 --- a/src/Targets/TargetDescription/TargetDescriptionFile.cpp +++ b/src/Targets/TargetDescription/TargetDescriptionFile.cpp @@ -27,8 +27,19 @@ namespace Targets::TargetDescription return this->targetName; } - const std::string& TargetDescriptionFile::getFamilyName() const { - return this->familyName; + TargetFamily TargetDescriptionFile::getFamily() const { + static const auto familiesByName = std::map { + {"AVR8", TargetFamily::AVR_8}, + {"RISCV", TargetFamily::RISC_V}, + }; + + const auto familyIt = familiesByName.find(this->familyName); + + if (familyIt == familiesByName.end()) { + throw Exception("Failed to resolve target family - invalid family name"); + } + + return familyIt->second; } void TargetDescriptionFile::init(const QString& xmlFilePath) { diff --git a/src/Targets/TargetDescription/TargetDescriptionFile.hpp b/src/Targets/TargetDescription/TargetDescriptionFile.hpp index e5c4b3d8..19eb1f8a 100644 --- a/src/Targets/TargetDescription/TargetDescriptionFile.hpp +++ b/src/Targets/TargetDescription/TargetDescriptionFile.hpp @@ -12,6 +12,8 @@ #include "Pinout.hpp" #include "Interface.hpp" +#include "src/Targets/TargetFamily.hpp" + #include GENERATED_TDF_MAPPING_PATH namespace Targets::TargetDescription @@ -74,11 +76,11 @@ namespace Targets::TargetDescription [[nodiscard]] const std::string& getTargetName() const; /** - * Returns the target family name extracted from the TDF. + * Returns the target family extracted from the TDF. * * @return */ - [[nodiscard]] const std::string& getFamilyName() const; + [[nodiscard]] TargetFamily getFamily() const; protected: std::string targetName; diff --git a/src/Targets/TargetDescriptionFiles/AVR8/D-SERIES/AVR128DA28.xml b/src/Targets/TargetDescriptionFiles/AVR8/D-SERIES/AVR128DA28.xml index e0ba75b5..95269faf 100644 --- a/src/Targets/TargetDescriptionFiles/AVR8/D-SERIES/AVR128DA28.xml +++ b/src/Targets/TargetDescriptionFiles/AVR8/D-SERIES/AVR128DA28.xml @@ -4,7 +4,7 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +