McuSupport: Rename internal types

"PackageOptions" -> "McuPackage"
"BoardOptions" -> "McuTarget"
"qul" -> "qtForMCUs"

Change-Id: I209cc82c7516fbf6a960b26c440159dbab02a4db
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Alessandro Portale
2019-11-15 08:38:55 +01:00
parent cca33e2e26
commit a2355841f5
5 changed files with 175 additions and 164 deletions

View File

@@ -32,8 +32,8 @@ const char DEVICE_TYPE[] = "McuSupport.DeviceType";
const char DEVICE_ID[] = "McuSupport.Device"; const char DEVICE_ID[] = "McuSupport.Device";
const char RUNCONFIGURATION[] = "McuSupport.RunConfiguration"; const char RUNCONFIGURATION[] = "McuSupport.RunConfiguration";
const char SETTINGS_ID[] = "CC.McuSupport.Configuration"; const char SETTINGS_ID[] = "CC.McuSupport.Configuration";
const char KIT_BOARD_VENDOR_KEY[] = "McuSupport.BoardVendor"; const char KIT_MCUTARGET_VENDOR_KEY[] = "McuSupport.McuTargetVendor";
const char KIT_BOARD_MODEL_KEY[] = "McuSupport.BoardModel"; const char KIT_MCUTARGET_MODEL_KEY[] = "McuSupport.McuTargetModel";
const char SETTINGS_GROUP[] = "McuSupport"; const char SETTINGS_GROUP[] = "McuSupport";
const char SETTINGS_KEY_PACKAGE_PREFIX[] = "Package_"; const char SETTINGS_KEY_PACKAGE_PREFIX[] = "Package_";

View File

@@ -54,8 +54,8 @@
namespace McuSupport { namespace McuSupport {
namespace Internal { namespace Internal {
PackageOptions::PackageOptions(const QString &label, const QString &defaultPath, McuPackage::McuPackage(const QString &label, const QString &defaultPath,
const QString &detectionPath, const QString &settingsKey) const QString &detectionPath, const QString &settingsKey)
: m_label(label) : m_label(label)
, m_defaultPath(defaultPath) , m_defaultPath(defaultPath)
, m_detectionPath(detectionPath) , m_detectionPath(detectionPath)
@@ -68,22 +68,22 @@ PackageOptions::PackageOptions(const QString &label, const QString &defaultPath,
s->endGroup(); s->endGroup();
} }
QString PackageOptions::path() const QString McuPackage::path() const
{ {
return QFileInfo(m_fileChooser->path() + m_relativePathModifier).absoluteFilePath(); return QFileInfo(m_fileChooser->path() + m_relativePathModifier).absoluteFilePath();
} }
QString PackageOptions::label() const QString McuPackage::label() const
{ {
return m_label; return m_label;
} }
QString PackageOptions::detectionPath() const QString McuPackage::detectionPath() const
{ {
return m_detectionPath; return m_detectionPath;
} }
QWidget *PackageOptions::widget() QWidget *McuPackage::widget()
{ {
if (m_widget) if (m_widget)
return m_widget; return m_widget;
@@ -126,37 +126,37 @@ QWidget *PackageOptions::widget()
return m_widget; return m_widget;
} }
PackageOptions::Status PackageOptions::status() const McuPackage::Status McuPackage::status() const
{ {
return m_status; return m_status;
} }
void PackageOptions::setDownloadUrl(const QString &url) void McuPackage::setDownloadUrl(const QString &url)
{ {
m_downloadUrl = url; m_downloadUrl = url;
} }
void PackageOptions::setEnvironmentVariableName(const QString &name) void McuPackage::setEnvironmentVariableName(const QString &name)
{ {
m_environmentVariableName = name; m_environmentVariableName = name;
} }
QString PackageOptions::environmentVariableName() const QString McuPackage::environmentVariableName() const
{ {
return m_environmentVariableName; return m_environmentVariableName;
} }
void PackageOptions::setAddToPath(bool addToPath) void McuPackage::setAddToPath(bool addToPath)
{ {
m_addToPath = addToPath; m_addToPath = addToPath;
} }
bool PackageOptions::addToPath() const bool McuPackage::addToPath() const
{ {
return m_addToPath; return m_addToPath;
} }
void PackageOptions::writeToSettings() const void McuPackage::writeToSettings() const
{ {
if (m_path.compare(m_defaultPath) == 0) if (m_path.compare(m_defaultPath) == 0)
return; return;
@@ -166,12 +166,12 @@ void PackageOptions::writeToSettings() const
s->endGroup(); s->endGroup();
} }
void PackageOptions::setRelativePathModifier(const QString &path) void McuPackage::setRelativePathModifier(const QString &path)
{ {
m_relativePathModifier = path; m_relativePathModifier = path;
} }
void PackageOptions::updateStatus() void McuPackage::updateStatus()
{ {
m_path = m_fileChooser->rawPath(); m_path = m_fileChooser->rawPath();
const bool validPath = m_fileChooser->isValid(); const bool validPath = m_fileChooser->isValid();
@@ -201,9 +201,9 @@ void PackageOptions::updateStatus()
m_statusLabel->setText(statusText); m_statusLabel->setText(statusText);
} }
BoardOptions::BoardOptions(const QString &vendor, const QString &model, McuTarget::McuTarget(const QString &vendor, const QString &model,
const QString &toolChainFileName, const QString &qulPlatform, const QString &toolChainFileName, const QString &qulPlatform,
const QVector<PackageOptions*> &packages) const QVector<McuPackage*> &packages)
: m_vendor(vendor) : m_vendor(vendor)
, m_model(model) , m_model(model)
, m_toolChainFile(toolChainFileName) , m_toolChainFile(toolChainFileName)
@@ -212,42 +212,42 @@ BoardOptions::BoardOptions(const QString &vendor, const QString &model,
{ {
} }
QString BoardOptions::model() const QString McuTarget::model() const
{ {
return m_model; return m_model;
} }
QString BoardOptions::toolChainFile() const QString McuTarget::toolChainFile() const
{ {
return m_toolChainFile; return m_toolChainFile;
} }
QString BoardOptions::qulPlatform() const QString McuTarget::qulPlatform() const
{ {
return m_qulPlatform; return m_qulPlatform;
} }
QVector<PackageOptions *> BoardOptions::packages() const QVector<McuPackage *> McuTarget::packages() const
{ {
return m_packages; return m_packages;
} }
bool BoardOptions::isValid() const bool McuTarget::isValid() const
{ {
return !Utils::anyOf(packages(), [](PackageOptions *package) { return !Utils::anyOf(packages(), [](McuPackage *package) {
return package->status() != PackageOptions::ValidPackage; return package->status() != McuPackage::ValidPackage;
}); });
} }
QString BoardOptions::vendor() const QString McuTarget::vendor() const
{ {
return m_vendor; return m_vendor;
} }
static PackageOptions *createQulPackage() static McuPackage *createQtForMCUsPackage()
{ {
auto result = new PackageOptions( auto result = new McuPackage(
PackageOptions::tr("Qt for MCUs SDK"), McuPackage::tr("Qt for MCUs SDK"),
QDir::homePath(), QDir::homePath(),
Utils::HostOsInfo::withExecutableSuffix("bin/qmltocpp"), Utils::HostOsInfo::withExecutableSuffix("bin/qmltocpp"),
"QtMCUSdk"); "QtMCUSdk");
@@ -255,7 +255,7 @@ static PackageOptions *createQulPackage()
return result; return result;
} }
static PackageOptions *createArmGccPackage() static McuPackage *createArmGccPackage()
{ {
const char envVar[] = "ARMGCC_DIR"; const char envVar[] = "ARMGCC_DIR";
@@ -277,8 +277,8 @@ static PackageOptions *createArmGccPackage()
if (defaultPath.isEmpty()) if (defaultPath.isEmpty())
defaultPath = QDir::homePath(); defaultPath = QDir::homePath();
auto result = new PackageOptions( auto result = new McuPackage(
PackageOptions::tr("GNU Arm Embedded Toolchain"), McuPackage::tr("GNU Arm Embedded Toolchain"),
defaultPath, defaultPath,
Utils::HostOsInfo::withExecutableSuffix("bin/arm-none-eabi-g++"), Utils::HostOsInfo::withExecutableSuffix("bin/arm-none-eabi-g++"),
"GNUArmEmbeddedToolchain"); "GNUArmEmbeddedToolchain");
@@ -288,10 +288,10 @@ static PackageOptions *createArmGccPackage()
return result; return result;
} }
static PackageOptions *createStm32CubeFwF7SdkPackage() static McuPackage *createStm32CubeFwF7SdkPackage()
{ {
auto result = new PackageOptions( auto result = new McuPackage(
PackageOptions::tr("STM32Cube SDK"), McuPackage::tr("STM32Cube SDK"),
"%{Env:STM32Cube_FW_F7_SDK_PATH}", "%{Env:STM32Cube_FW_F7_SDK_PATH}",
"Drivers/STM32F7xx_HAL_Driver", "Drivers/STM32F7xx_HAL_Driver",
"Stm32CubeFwF7Sdk"); "Stm32CubeFwF7Sdk");
@@ -301,15 +301,15 @@ static PackageOptions *createStm32CubeFwF7SdkPackage()
return result; return result;
} }
static PackageOptions *createStm32CubeProgrammerPackage() static McuPackage *createStm32CubeProgrammerPackage()
{ {
const QString defaultPath = const QString defaultPath =
Utils::HostOsInfo::isWindowsHost() ? Utils::HostOsInfo::isWindowsHost() ?
QDir::fromNativeSeparators(qEnvironmentVariable("ProgramFiles")) QDir::fromNativeSeparators(qEnvironmentVariable("ProgramFiles"))
+ "/STMicroelectronics/STM32Cube/STM32CubeProgrammer/" + "/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
: QDir::homePath(); : QDir::homePath();
auto result = new PackageOptions( auto result = new McuPackage(
PackageOptions::tr("STM32CubeProgrammer"), McuPackage::tr("STM32CubeProgrammer"),
defaultPath, defaultPath,
QLatin1String(Utils::HostOsInfo::isWindowsHost() ? "/bin/STM32_Programmer_CLI.exe" QLatin1String(Utils::HostOsInfo::isWindowsHost() ? "/bin/STM32_Programmer_CLI.exe"
: "/bin/STM32_Programmer.sh"), : "/bin/STM32_Programmer.sh"),
@@ -321,10 +321,10 @@ static PackageOptions *createStm32CubeProgrammerPackage()
return result; return result;
} }
static PackageOptions *createEvkbImxrt1050SdkPackage() static McuPackage *createEvkbImxrt1050SdkPackage()
{ {
auto result = new PackageOptions( auto result = new McuPackage(
PackageOptions::tr("NXP i.MXRT SDK"), McuPackage::tr("NXP i.MXRT SDK"),
"%{Env:EVKB_IMXRT1050_SDK_PATH}", // TODO: Try to not use 1050 specifics "%{Env:EVKB_IMXRT1050_SDK_PATH}", // TODO: Try to not use 1050 specifics
"EVKB-IMXRT1050_manifest_v3_5.xml", "EVKB-IMXRT1050_manifest_v3_5.xml",
"EvkbImxrt1050Sdk"); "EvkbImxrt1050Sdk");
@@ -332,15 +332,15 @@ static PackageOptions *createEvkbImxrt1050SdkPackage()
return result; return result;
} }
static PackageOptions *createSeggerJLinkPackage() static McuPackage *createSeggerJLinkPackage()
{ {
const QString defaultPath = const QString defaultPath =
Utils::HostOsInfo::isWindowsHost() ? Utils::HostOsInfo::isWindowsHost() ?
QDir::fromNativeSeparators(qEnvironmentVariable("ProgramFiles(x86)")) QDir::fromNativeSeparators(qEnvironmentVariable("ProgramFiles(x86)"))
+ "/SEGGER/JLink" + "/SEGGER/JLink"
: QString("%{Env:SEGGER_JLINK_SOFTWARE_AND_DOCUMENTATION_PATH}"); : QString("%{Env:SEGGER_JLINK_SOFTWARE_AND_DOCUMENTATION_PATH}");
auto result = new PackageOptions( auto result = new McuPackage(
PackageOptions::tr("SEGGER JLink"), McuPackage::tr("SEGGER JLink"),
defaultPath, defaultPath,
Utils::HostOsInfo::withExecutableSuffix("JLink"), Utils::HostOsInfo::withExecutableSuffix("JLink"),
"SeggerJLink"); "SeggerJLink");
@@ -352,56 +352,66 @@ static PackageOptions *createSeggerJLinkPackage()
McuSupportOptions::McuSupportOptions(QObject *parent) McuSupportOptions::McuSupportOptions(QObject *parent)
: QObject(parent) : QObject(parent)
{ {
PackageOptions* qulPackage = createQulPackage(); qtForMCUsSdkPackage = createQtForMCUsPackage();
PackageOptions* armGccPackage = createArmGccPackage(); armGccPackage = createArmGccPackage();
PackageOptions* stm32CubeFwF7SdkPackage = createStm32CubeFwF7SdkPackage(); McuPackage* stm32CubeFwF7SdkPackage = createStm32CubeFwF7SdkPackage();
PackageOptions* stm32CubeProgrammerPackage = createStm32CubeProgrammerPackage(); McuPackage* stm32CubeProgrammerPackage = createStm32CubeProgrammerPackage();
PackageOptions* evkbImxrt1050SdkPackage = createEvkbImxrt1050SdkPackage(); McuPackage* evkbImxrt1050SdkPackage = createEvkbImxrt1050SdkPackage();
PackageOptions* seggerJLinkPackage = createSeggerJLinkPackage(); McuPackage* seggerJLinkPackage = createSeggerJLinkPackage();
toolchainPackage = armGccPackage;
qulSdkPackage = qulPackage;
auto stmEvalPackages = { auto stmEvalPackages = {
armGccPackage, stm32CubeProgrammerPackage, qulPackage}; armGccPackage, stm32CubeProgrammerPackage, qtForMCUsSdkPackage};
auto stmEngPackages = { auto stmEngPackages = {
armGccPackage, stm32CubeFwF7SdkPackage, stm32CubeProgrammerPackage, qulPackage}; armGccPackage, stm32CubeFwF7SdkPackage, stm32CubeProgrammerPackage, qtForMCUsSdkPackage};
auto nxpEvalPackages = { auto nxpEvalPackages = {
armGccPackage, seggerJLinkPackage, qulPackage}; armGccPackage, seggerJLinkPackage, qtForMCUsSdkPackage};
auto nxpEngPackages = { auto nxpEngPackages = {
armGccPackage, evkbImxrt1050SdkPackage, seggerJLinkPackage, qulPackage}; armGccPackage, evkbImxrt1050SdkPackage, seggerJLinkPackage, qtForMCUsSdkPackage};
auto desktopPackages = { auto desktopPackages = {
qulPackage}; qtForMCUsSdkPackage};
packages = { packages = {
armGccPackage, stm32CubeFwF7SdkPackage, stm32CubeProgrammerPackage, evkbImxrt1050SdkPackage, armGccPackage, stm32CubeFwF7SdkPackage, stm32CubeProgrammerPackage, evkbImxrt1050SdkPackage,
seggerJLinkPackage, qulPackage}; seggerJLinkPackage, qtForMCUsSdkPackage};
const QString vendorStm = "STM"; const QString vendorStm = "STM";
const QString vendorNxp = "NXP"; const QString vendorNxp = "NXP";
const QString vendorQt = "Qt"; const QString vendorQt = "Qt";
boards.append(new BoardOptions(vendorStm, mcuTargets.append(new McuTarget(vendorStm,
"stm32f7508", "stm32f7508",
"CMake/stm32f7508-discovery.cmake", "", stmEvalPackages)); "CMake/stm32f7508-discovery.cmake",
boards.append(new BoardOptions(vendorStm, "",
"stm32f769i", stmEvalPackages));
"CMake/stm32f769i-discovery.cmake", "", stmEvalPackages)); mcuTargets.append(new McuTarget(vendorStm,
boards.append(new BoardOptions(vendorStm, "stm32f769i",
"Engineering", "CMake/stm32f769i-discovery.cmake",
"CMake/<toolchain file>", "", stmEngPackages)); "",
stmEvalPackages));
mcuTargets.append(new McuTarget(vendorStm,
"Engineering",
"CMake/<toolchain file>",
"",
stmEngPackages));
boards.append(new BoardOptions(vendorNxp, mcuTargets.append(new McuTarget(vendorNxp,
"evkbimxrt1050", "evkbimxrt1050",
"CMake/evkbimxrt1050-toolchain.cmake", "", nxpEvalPackages)); "CMake/evkbimxrt1050-toolchain.cmake",
boards.append(new BoardOptions(vendorNxp, "",
"Engineering", nxpEvalPackages));
"CMake/<toolchain file>", "", nxpEngPackages)); mcuTargets.append(new McuTarget(vendorNxp,
"Engineering",
"CMake/<toolchain file>",
"",
nxpEngPackages));
boards.append(new BoardOptions(vendorQt, mcuTargets.append(new McuTarget(vendorQt,
"Desktop", "", "Qt", desktopPackages)); "Desktop",
"",
"Qt",
desktopPackages));
for (auto package : packages) for (auto package : packages)
connect(package, &PackageOptions::changed, [this](){ connect(package, &McuPackage::changed, [this](){
emit changed(); emit changed();
}); });
} }
@@ -410,8 +420,8 @@ McuSupportOptions::~McuSupportOptions()
{ {
qDeleteAll(packages); qDeleteAll(packages);
packages.clear(); packages.clear();
qDeleteAll(boards); qDeleteAll(mcuTargets);
boards.clear(); mcuTargets.clear();
} }
static ProjectExplorer::ToolChain* armGccToolchain(const Utils::FilePath &path, Core::Id language) static ProjectExplorer::ToolChain* armGccToolchain(const Utils::FilePath &path, Core::Id language)
@@ -440,22 +450,22 @@ static ProjectExplorer::ToolChain* armGccToolchain(const Utils::FilePath &path,
return toolChain; return toolChain;
} }
static bool isDesktop(const BoardOptions* board) static bool mcuTargetIsDesktop(const McuTarget* mcuTarget)
{ {
return board->qulPlatform() == "Qt"; return mcuTarget->qulPlatform() == "Qt";
} }
static void setKitProperties(const QString &kitName, ProjectExplorer::Kit *k, static void setKitProperties(const QString &kitName, ProjectExplorer::Kit *k,
const BoardOptions* board) const McuTarget* mcuTarget)
{ {
using namespace ProjectExplorer; using namespace ProjectExplorer;
k->setUnexpandedDisplayName(kitName); k->setUnexpandedDisplayName(kitName);
k->setValue(Constants::KIT_BOARD_VENDOR_KEY, board->vendor()); k->setValue(Constants::KIT_MCUTARGET_VENDOR_KEY, mcuTarget->vendor());
k->setValue(Constants::KIT_BOARD_MODEL_KEY, board->model()); k->setValue(Constants::KIT_MCUTARGET_MODEL_KEY, mcuTarget->model());
k->setAutoDetected(true); k->setAutoDetected(true);
k->makeSticky(); k->makeSticky();
if (isDesktop(board)) { if (mcuTargetIsDesktop(mcuTarget)) {
k->setDeviceTypeForIcon(Constants::DEVICE_TYPE); k->setDeviceTypeForIcon(Constants::DEVICE_TYPE);
} else { } else {
k->setIrrelevantAspects({SysRootKitAspect::id(), k->setIrrelevantAspects({SysRootKitAspect::id(),
@@ -492,7 +502,7 @@ static void setKitDebugger(ProjectExplorer::Kit *k, const QString &armGccPath)
DebuggerItem newDebugger; DebuggerItem newDebugger;
newDebugger.setCommand(command); newDebugger.setCommand(command);
newDebugger.setUnexpandedDisplayName( newDebugger.setUnexpandedDisplayName(
PackageOptions::tr("Arm GDB at %1").arg(command.toUserOutput())); McuPackage::tr("Arm GDB at %1").arg(command.toUserOutput()));
debuggerId = DebuggerItemManager::registerDebugger(newDebugger); debuggerId = DebuggerItemManager::registerDebugger(newDebugger);
} else { } else {
debuggerId = debugger->id(); debuggerId = debugger->id();
@@ -508,13 +518,13 @@ static void setKitDevice(ProjectExplorer::Kit *k)
DeviceTypeKitAspect::setDeviceTypeId(k, Constants::DEVICE_TYPE); DeviceTypeKitAspect::setDeviceTypeId(k, Constants::DEVICE_TYPE);
} }
static void setKitEnvironment(ProjectExplorer::Kit *k, const BoardOptions* board) static void setKitEnvironment(ProjectExplorer::Kit *k, const McuTarget* mcuTarget)
{ {
using namespace ProjectExplorer; using namespace ProjectExplorer;
Utils::EnvironmentItems changes; Utils::EnvironmentItems changes;
QStringList pathAdditions; QStringList pathAdditions;
for (auto package : board->packages()) { for (auto package : mcuTarget->packages()) {
if (package->addToPath()) if (package->addToPath())
pathAdditions.append(QDir::toNativeSeparators(package->path())); pathAdditions.append(QDir::toNativeSeparators(package->path()));
if (!package->environmentVariableName().isEmpty()) if (!package->environmentVariableName().isEmpty())
@@ -529,7 +539,7 @@ static void setKitEnvironment(ProjectExplorer::Kit *k, const BoardOptions* board
EnvironmentKitAspect::setEnvironmentChanges(k, changes); EnvironmentKitAspect::setEnvironmentChanges(k, changes);
} }
static void setKitCMakeOptions(ProjectExplorer::Kit *k, const BoardOptions* board, static void setKitCMakeOptions(ProjectExplorer::Kit *k, const McuTarget* mcuTarget,
const QString &qulDir) const QString &qulDir)
{ {
using namespace CMakeProjectManager; using namespace CMakeProjectManager;
@@ -537,13 +547,13 @@ static void setKitCMakeOptions(ProjectExplorer::Kit *k, const BoardOptions* boar
CMakeConfig config = CMakeConfigurationKitAspect::configuration(k); CMakeConfig config = CMakeConfigurationKitAspect::configuration(k);
config.append(CMakeConfigItem("CMAKE_CXX_COMPILER", "%{Compiler:Executable:Cxx}")); config.append(CMakeConfigItem("CMAKE_CXX_COMPILER", "%{Compiler:Executable:Cxx}"));
config.append(CMakeConfigItem("CMAKE_C_COMPILER", "%{Compiler:Executable:C}")); config.append(CMakeConfigItem("CMAKE_C_COMPILER", "%{Compiler:Executable:C}"));
if (!board->toolChainFile().isEmpty()) if (!mcuTarget->toolChainFile().isEmpty())
config.append(CMakeConfigItem("CMAKE_TOOLCHAIN_FILE", config.append(CMakeConfigItem("CMAKE_TOOLCHAIN_FILE",
(qulDir + "/" + board->toolChainFile()).toUtf8())); (qulDir + "/" + mcuTarget->toolChainFile()).toUtf8()));
if (!board->qulPlatform().isEmpty()) if (!mcuTarget->qulPlatform().isEmpty())
config.append(CMakeConfigItem("QUL_PLATFORM", config.append(CMakeConfigItem("QUL_PLATFORM",
board->qulPlatform().toUtf8())); mcuTarget->qulPlatform().toUtf8()));
if (isDesktop(board)) { if (mcuTargetIsDesktop(mcuTarget)) {
config.append(CMakeConfigItem("CMAKE_PREFIX_PATH", "%{Qt:QT_INSTALL_PREFIX}")); config.append(CMakeConfigItem("CMAKE_PREFIX_PATH", "%{Qt:QT_INSTALL_PREFIX}"));
// TODO: Hack! Implement color depth variants of all targets // TODO: Hack! Implement color depth variants of all targets
config.append(CMakeConfigItem("QUL_COLOR_DEPTH", "32")); config.append(CMakeConfigItem("QUL_COLOR_DEPTH", "32"));
@@ -553,38 +563,38 @@ static void setKitCMakeOptions(ProjectExplorer::Kit *k, const BoardOptions* boar
CMakeGeneratorKitAspect::setGenerator(k, "NMake Makefiles JOM"); CMakeGeneratorKitAspect::setGenerator(k, "NMake Makefiles JOM");
} }
QString McuSupportOptions::kitName(const BoardOptions *board) const QString McuSupportOptions::kitName(const McuTarget *mcuTarget) const
{ {
// TODO: get version from qulSdkPackage and insert into name // TODO: get version from qulSdkPackage and insert into name
return QString::fromLatin1("Qt for MCUs - %1 %2").arg(board->vendor(), board->model()); return QString::fromLatin1("Qt for MCUs - %1 %2").arg(mcuTarget->vendor(), mcuTarget->model());
} }
QList<ProjectExplorer::Kit *> McuSupportOptions::existingKits(const BoardOptions *board) QList<ProjectExplorer::Kit *> McuSupportOptions::existingKits(const McuTarget *mcuTargt)
{ {
using namespace ProjectExplorer; using namespace ProjectExplorer;
const QString boardKitName = kitName(board); const QString mcuTargetKitName = kitName(mcuTargt);
return Utils::filtered(KitManager::kits(), [&boardKitName](Kit *kit) { return Utils::filtered(KitManager::kits(), [&mcuTargetKitName](Kit *kit) {
return kit->isAutoDetected() && kit->unexpandedDisplayName() == boardKitName; return kit->isAutoDetected() && kit->unexpandedDisplayName() == mcuTargetKitName;
}); });
} }
ProjectExplorer::Kit *McuSupportOptions::newKit(const BoardOptions* board) ProjectExplorer::Kit *McuSupportOptions::newKit(const McuTarget *mcuTarget)
{ {
using namespace ProjectExplorer; using namespace ProjectExplorer;
const QString armGccPath = toolchainPackage->path(); const QString armGccPath = armGccPackage->path();
const QString qulDir = qulSdkPackage->path(); const QString qulDir = qtForMCUsSdkPackage->path();
const auto init = [this, board](Kit *k) { const auto init = [this, mcuTarget](Kit *k) {
KitGuard kitGuard(k); KitGuard kitGuard(k);
setKitProperties(kitName(board), k, board); setKitProperties(kitName(mcuTarget), k, mcuTarget);
if (!isDesktop(board)) { if (!mcuTargetIsDesktop(mcuTarget)) {
setKitToolchains(k, toolchainPackage->path()); setKitToolchains(k, armGccPackage->path());
setKitDebugger(k, toolchainPackage->path()); setKitDebugger(k, armGccPackage->path());
setKitDevice(k); setKitDevice(k);
} }
setKitEnvironment(k, board); setKitEnvironment(k, mcuTarget);
setKitCMakeOptions(k, board, qulSdkPackage->path()); setKitCMakeOptions(k, mcuTarget, qtForMCUsSdkPackage->path());
k->setup(); k->setup();
k->fix(); k->fix();

View File

@@ -42,7 +42,7 @@ class Kit;
namespace McuSupport { namespace McuSupport {
namespace Internal { namespace Internal {
class PackageOptions : public QObject class McuPackage : public QObject
{ {
Q_OBJECT Q_OBJECT
@@ -53,8 +53,8 @@ public:
ValidPackage ValidPackage
}; };
PackageOptions(const QString &label, const QString &defaultPath, const QString &detectionPath, McuPackage(const QString &label, const QString &defaultPath, const QString &detectionPath,
const QString &settingsKey); const QString &settingsKey);
QString path() const; QString path() const;
QString label() const; QString label() const;
@@ -96,19 +96,19 @@ private:
Status m_status = InvalidPath; Status m_status = InvalidPath;
}; };
class BoardOptions : public QObject class McuTarget : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
BoardOptions(const QString &vendor, const QString &model, const QString &toolChainFile, McuTarget(const QString &vendor, const QString &model, const QString &toolChainFile,
const QString &qulPlatform, const QVector<PackageOptions *> &packages); const QString &qulPlatform, const QVector<McuPackage *> &packages);
QString vendor() const; QString vendor() const;
QString model() const; QString model() const;
QString toolChainFile() const; QString toolChainFile() const;
QString qulPlatform() const; QString qulPlatform() const;
QVector<PackageOptions *> packages() const; QVector<McuPackage *> packages() const;
bool isValid() const; bool isValid() const;
private: private:
@@ -116,7 +116,7 @@ private:
const QString m_model; const QString m_model;
const QString m_toolChainFile; const QString m_toolChainFile;
const QString m_qulPlatform; const QString m_qulPlatform;
const QVector<PackageOptions*> m_packages; const QVector<McuPackage*> m_packages;
}; };
class McuSupportOptions : public QObject class McuSupportOptions : public QObject
@@ -127,15 +127,15 @@ public:
McuSupportOptions(QObject *parent = nullptr); McuSupportOptions(QObject *parent = nullptr);
~McuSupportOptions() override; ~McuSupportOptions() override;
QVector<PackageOptions*> packages; QVector<McuPackage*> packages;
QVector<BoardOptions*> boards; QVector<McuTarget*> mcuTargets;
PackageOptions *toolchainPackage = nullptr; McuPackage *armGccPackage = nullptr;
PackageOptions *qulSdkPackage = nullptr; McuPackage *qtForMCUsSdkPackage = nullptr;
QString kitName(const BoardOptions* board) const; QString kitName(const McuTarget* mcuTarget) const;
QList<ProjectExplorer::Kit *> existingKits(const BoardOptions* board); QList<ProjectExplorer::Kit *> existingKits(const McuTarget *mcuTargt);
ProjectExplorer::Kit *newKit(const BoardOptions* board); ProjectExplorer::Kit *newKit(const McuTarget *mcuTarget);
signals: signals:
void changed(); void changed();

View File

@@ -50,17 +50,17 @@ public:
McuSupportOptionsWidget(const McuSupportOptions *options, QWidget *parent = nullptr); McuSupportOptionsWidget(const McuSupportOptions *options, QWidget *parent = nullptr);
void updateStatus(); void updateStatus();
void showBoardPackages(); void showMcuTargetPackages();
BoardOptions *currentBoard() const; McuTarget *currentMcuTarget() const;
private: private:
QString m_armGccPath; QString m_armGccPath;
const McuSupportOptions *m_options; const McuSupportOptions *m_options;
QMap <PackageOptions*, QWidget*> m_packageWidgets; QMap <McuPackage*, QWidget*> m_packageWidgets;
QMap <BoardOptions*, QWidget*> m_boardPacketWidgets; QMap <McuTarget*, QWidget*> m_mcuTargetPacketWidgets;
QFormLayout *m_packagesLayout = nullptr; QFormLayout *m_packagesLayout = nullptr;
QLabel *m_statusLabel = nullptr; QLabel *m_statusLabel = nullptr;
QComboBox *m_boardComboBox = nullptr; QComboBox *m_mcuTargetComboBox = nullptr;
}; };
McuSupportOptionsWidget::McuSupportOptionsWidget(const McuSupportOptions *options, QWidget *parent) McuSupportOptionsWidget::McuSupportOptionsWidget(const McuSupportOptions *options, QWidget *parent)
@@ -69,18 +69,18 @@ McuSupportOptionsWidget::McuSupportOptionsWidget(const McuSupportOptions *option
{ {
auto mainLayout = new QVBoxLayout(this); auto mainLayout = new QVBoxLayout(this);
auto boardChooserlayout = new QHBoxLayout; auto mcuTargetChooserlayout = new QHBoxLayout;
auto boardChooserLabel = new QLabel(McuSupportOptionsPage::tr("Target:")); auto mcuTargetChooserLabel = new QLabel(McuSupportOptionsPage::tr("Target:"));
boardChooserlayout->addWidget(boardChooserLabel); mcuTargetChooserlayout->addWidget(mcuTargetChooserLabel);
m_boardComboBox = new QComboBox; m_mcuTargetComboBox = new QComboBox;
boardChooserLabel->setBuddy(m_boardComboBox); mcuTargetChooserLabel->setBuddy(m_mcuTargetComboBox);
boardChooserLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); mcuTargetChooserLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
m_boardComboBox->addItems( m_mcuTargetComboBox->addItems(
Utils::transform<QStringList>(m_options->boards, [this](BoardOptions *b){ Utils::transform<QStringList>(m_options->mcuTargets, [this](McuTarget *t){
return m_options->kitName(b); return m_options->kitName(t);
})); }));
boardChooserlayout->addWidget(m_boardComboBox); mcuTargetChooserlayout->addWidget(m_mcuTargetComboBox);
mainLayout->addLayout(boardChooserlayout); mainLayout->addLayout(mcuTargetChooserlayout);
auto m_packagesGroupBox = new QGroupBox(McuSupportOptionsPage::tr("Packages")); auto m_packagesGroupBox = new QGroupBox(McuSupportOptionsPage::tr("Packages"));
mainLayout->addWidget(m_packagesGroupBox); mainLayout->addWidget(m_packagesGroupBox);
@@ -93,30 +93,31 @@ McuSupportOptionsWidget::McuSupportOptionsWidget(const McuSupportOptions *option
m_statusLabel->setAlignment(Qt::AlignBottom | Qt::AlignLeft); m_statusLabel->setAlignment(Qt::AlignBottom | Qt::AlignLeft);
connect(options, &McuSupportOptions::changed, this, &McuSupportOptionsWidget::updateStatus); connect(options, &McuSupportOptions::changed, this, &McuSupportOptionsWidget::updateStatus);
connect(m_boardComboBox, &QComboBox::currentTextChanged, connect(m_mcuTargetComboBox, &QComboBox::currentTextChanged,
this, &McuSupportOptionsWidget::showBoardPackages); this, &McuSupportOptionsWidget::showMcuTargetPackages);
showBoardPackages(); showMcuTargetPackages();
updateStatus(); updateStatus();
} }
void McuSupportOptionsWidget::updateStatus() void McuSupportOptionsWidget::updateStatus()
{ {
const BoardOptions *board = currentBoard(); const McuTarget *mcuTarget = currentMcuTarget();
if (!board) if (!mcuTarget)
return; return;
m_statusLabel->setText(board->isValid() m_statusLabel->setText(mcuTarget->isValid()
? QString::fromLatin1("A kit <b>%1</b> for the selected target can be generated. " ? QString::fromLatin1("A kit <b>%1</b> for the selected target can be generated. "
"Press Apply to generate it.").arg(m_options->kitName(board)) "Press Apply to generate it.").arg(m_options->kitName(
mcuTarget))
: QString::fromLatin1("Provide the package paths in order to create a kit for " : QString::fromLatin1("Provide the package paths in order to create a kit for "
"your target.")); "your target."));
} }
void McuSupportOptionsWidget::showBoardPackages() void McuSupportOptionsWidget::showMcuTargetPackages()
{ {
const BoardOptions *board = currentBoard(); const McuTarget *mcuTarget = currentMcuTarget();
if (!board) if (!mcuTarget)
return; return;
while (m_packagesLayout->rowCount() > 0) { while (m_packagesLayout->rowCount() > 0) {
@@ -127,7 +128,7 @@ void McuSupportOptionsWidget::showBoardPackages()
for (auto package : m_options->packages) { for (auto package : m_options->packages) {
QWidget *packageWidget = package->widget(); QWidget *packageWidget = package->widget();
if (!board->packages().contains(package)) if (!mcuTarget->packages().contains(package))
continue; continue;
m_packagesLayout->addRow(package->label(), packageWidget); m_packagesLayout->addRow(package->label(), packageWidget);
packageWidget->show(); packageWidget->show();
@@ -136,10 +137,10 @@ void McuSupportOptionsWidget::showBoardPackages()
updateStatus(); updateStatus();
} }
BoardOptions *McuSupportOptionsWidget::currentBoard() const McuTarget *McuSupportOptionsWidget::currentMcuTarget() const
{ {
const int boardIndex = m_boardComboBox->currentIndex(); const int mcuTargetIndex = m_mcuTargetComboBox->currentIndex();
return m_options->boards.isEmpty() ? nullptr : m_options->boards.at(boardIndex); return m_options->mcuTargets.isEmpty() ? nullptr : m_options->mcuTargets.at(mcuTargetIndex);
} }
McuSupportOptionsPage::McuSupportOptionsPage(QObject* parent) McuSupportOptionsPage::McuSupportOptionsPage(QObject* parent)
@@ -164,18 +165,18 @@ void McuSupportOptionsPage::apply()
for (auto package : m_options->packages) for (auto package : m_options->packages)
package->writeToSettings(); package->writeToSettings();
QTC_ASSERT(m_options->toolchainPackage, return); QTC_ASSERT(m_options->armGccPackage, return);
QTC_ASSERT(m_options->qulSdkPackage, return); QTC_ASSERT(m_options->qtForMCUsSdkPackage, return);
const BoardOptions *board = m_widget->currentBoard(); const McuTarget *mcuTarget = m_widget->currentMcuTarget();
if (!board) if (!mcuTarget)
return; return;
using namespace ProjectExplorer; using namespace ProjectExplorer;
for (auto existingKit : m_options->existingKits(board)) for (auto existingKit : m_options->existingKits(mcuTarget))
ProjectExplorer::KitManager::deregisterKit(existingKit); ProjectExplorer::KitManager::deregisterKit(existingKit);
m_options->newKit(board); m_options->newKit(mcuTarget);
} }
void McuSupportOptionsPage::finish() void McuSupportOptionsPage::finish()

View File

@@ -51,7 +51,7 @@ static CommandLine flashAndRunCommand(Target *target)
// TODO: Hack! Implement flash target name handling, properly // TODO: Hack! Implement flash target name handling, properly
const QString targetName = const QString targetName =
target->kit()->value(Constants::KIT_BOARD_VENDOR_KEY).toString() == "NXP" target->kit()->value(Constants::KIT_MCUTARGET_VENDOR_KEY).toString() == "NXP"
? QString("flash_%1").arg(projectName) ? QString("flash_%1").arg(projectName)
: QString("flash_%1_and_bootloader").arg(projectName); : QString("flash_%1_and_bootloader").arg(projectName);