Cleaned up default target variant selection code and some tidying
This commit is contained in:
@@ -4,34 +4,34 @@
|
|||||||
#include <hidapi/hidapi.h>
|
#include <hidapi/hidapi.h>
|
||||||
|
|
||||||
struct hid_device_ {
|
struct hid_device_ {
|
||||||
/* Handle to the actual device. */
|
// Handle to the actual device.
|
||||||
libusb_device_handle* device_handle;
|
libusb_device_handle* device_handle;
|
||||||
|
|
||||||
/* Endpoint information */
|
// Endpoint information
|
||||||
int input_endpoint;
|
int input_endpoint;
|
||||||
int output_endpoint;
|
int output_endpoint;
|
||||||
int input_ep_max_packet_size;
|
int input_ep_max_packet_size;
|
||||||
|
|
||||||
/* The interface number of the HID */
|
// The interface number of the HID
|
||||||
int interface;
|
int interface;
|
||||||
|
|
||||||
/* Indexes of Strings */
|
// Indexes of Strings
|
||||||
int manufacturer_index;
|
int manufacturer_index;
|
||||||
int product_index;
|
int product_index;
|
||||||
int serial_index;
|
int serial_index;
|
||||||
|
|
||||||
/* Whether blocking reads are used */
|
// Whether blocking reads are used
|
||||||
int blocking; /* boolean */
|
int blocking; // boolean
|
||||||
|
|
||||||
/* Read thread objects */
|
// Read thread objects
|
||||||
pthread_t thread;
|
pthread_t thread;
|
||||||
pthread_mutex_t mutex; /* Protects input_reports */
|
pthread_mutex_t mutex; // Protects input_reports
|
||||||
pthread_cond_t condition;
|
pthread_cond_t condition;
|
||||||
pthread_barrier_t barrier; /* Ensures correct startup sequence */
|
pthread_barrier_t barrier; // Ensures correct startup sequence
|
||||||
int shutdown_thread;
|
int shutdown_thread;
|
||||||
int cancelled;
|
int cancelled;
|
||||||
struct libusb_transfer* transfer;
|
struct libusb_transfer* transfer;
|
||||||
|
|
||||||
/* List of received input reports. */
|
// List of received input reports.
|
||||||
struct input_report* input_reports;
|
struct input_report* input_reports;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -82,6 +82,10 @@ void InsightWindow::init(
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (this->isVariantSupported(targetVariant)) {
|
if (this->isVariantSupported(targetVariant)) {
|
||||||
|
this->supportedVariantsByName.insert(
|
||||||
|
std::pair(QString::fromStdString(targetVariant.name).toLower().toStdString(), targetVariant)
|
||||||
|
);
|
||||||
|
|
||||||
connect(
|
connect(
|
||||||
variantAction,
|
variantAction,
|
||||||
&QAction::triggered,
|
&QAction::triggered,
|
||||||
@@ -100,33 +104,21 @@ void InsightWindow::init(
|
|||||||
this->variantMenu->addAction(variantAction);
|
this->variantMenu->addAction(variantAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::copy_if(
|
Logger::debug("Number of target variants supported by Insight: " + std::to_string(supportedVariantsByName.size()));
|
||||||
this->targetDescriptor.variants.begin(),
|
|
||||||
this->targetDescriptor.variants.end(),
|
|
||||||
std::back_inserter(this->supportedVariants),
|
|
||||||
[this](auto variant) {
|
|
||||||
return this->isVariantSupported(variant);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
Logger::debug("Number of target variants supported by Insight: " + std::to_string(supportedVariants.size()));
|
if (!this->supportedVariantsByName.empty()) {
|
||||||
|
if (!targetConfig.variantName.empty() && this->supportedVariantsByName.contains(targetConfig.variantName)) {
|
||||||
|
// The user has specified a valid variant name in their config file, so use that as the default
|
||||||
|
this->selectVariant(&(this->supportedVariantsByName.at(targetConfig.variantName)));
|
||||||
|
|
||||||
if (!supportedVariants.empty()) {
|
} else {
|
||||||
auto selectedVariant = std::find_if(
|
if (!targetConfig.variantName.empty()) {
|
||||||
supportedVariants.begin(),
|
Logger::error("Invalid target variant name \"" + targetConfig.variantName
|
||||||
supportedVariants.end(),
|
+ "\" - no such variant with the given name was found.");
|
||||||
[&targetConfig](const TargetVariant& variant) {
|
|
||||||
auto variantName = QString::fromStdString(variant.name).toLower().toStdString();
|
|
||||||
return !targetConfig.variantName.empty() && targetConfig.variantName == variantName;
|
|
||||||
}
|
}
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
this->selectVariant(&(this->supportedVariantsByName.begin()->second));
|
||||||
* If ths user specified a valid variant name in their config file, use that as the default, otherwise just
|
}
|
||||||
* use the first supported variant.
|
|
||||||
*/
|
|
||||||
this->selectVariant((selectedVariant != supportedVariants.end()) ? &(*selectedVariant)
|
|
||||||
: &supportedVariants.front());
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (this->targetDescriptor.variants.empty()) {
|
if (this->targetDescriptor.variants.empty()) {
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ namespace Bloom
|
|||||||
QLabel* targetStatusLabel = nullptr;
|
QLabel* targetStatusLabel = nullptr;
|
||||||
QLabel* programCounterValueLabel = nullptr;
|
QLabel* programCounterValueLabel = nullptr;
|
||||||
|
|
||||||
std::vector<TargetVariant> supportedVariants;
|
std::map<std::string, TargetVariant> supportedVariantsByName;
|
||||||
const TargetVariant* selectedVariant = nullptr;
|
const TargetVariant* selectedVariant = nullptr;
|
||||||
bool uiDisabled = false;
|
bool uiDisabled = false;
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ void BodyWidget::drawWidget(QPainter& painter) {
|
|||||||
painter.setRenderHints(QPainter::RenderHint::Antialiasing | QPainter::RenderHint::SmoothPixmapTransform, true);
|
painter.setRenderHints(QPainter::RenderHint::Antialiasing | QPainter::RenderHint::SmoothPixmapTransform, true);
|
||||||
|
|
||||||
// Draw target body
|
// Draw target body
|
||||||
// auto targetBodyColor = QColor("#AFB1B3");
|
|
||||||
auto targetBodyColor = this->getBodyColor();
|
auto targetBodyColor = this->getBodyColor();
|
||||||
auto backgroundColor = QColor("#3C3F41");
|
auto backgroundColor = QColor("#3C3F41");
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ namespace Bloom::InsightTargetWidgets::Dip
|
|||||||
Q_PROPERTY(int disableAlphaLevel READ getDisableAlphaLevel WRITE setDisableAlphaLevel DESIGNABLE true)
|
Q_PROPERTY(int disableAlphaLevel READ getDisableAlphaLevel WRITE setDisableAlphaLevel DESIGNABLE true)
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// These properties can be modified via Qt style sheets (see Stylesheets/DualInlinePackage.qss)
|
||||||
QColor bodyColor = QColor("#AFB1B3");
|
QColor bodyColor = QColor("#AFB1B3");
|
||||||
int disableAlphaLevel = 100;
|
int disableAlphaLevel = 100;
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ namespace Bloom::InsightTargetWidgets::Qfp
|
|||||||
Q_PROPERTY(int disableAlphaLevel READ getDisableAlphaLevel WRITE setDisableAlphaLevel DESIGNABLE true)
|
Q_PROPERTY(int disableAlphaLevel READ getDisableAlphaLevel WRITE setDisableAlphaLevel DESIGNABLE true)
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// These properties can be modified via Qt style sheets (see Stylesheets/QuadFlatPackage.qss)
|
||||||
QColor bodyColor = QColor("#AFB1B3");
|
QColor bodyColor = QColor("#AFB1B3");
|
||||||
int disableAlphaLevel = 100;
|
int disableAlphaLevel = 100;
|
||||||
|
|
||||||
|
|||||||
@@ -193,6 +193,7 @@ namespace Bloom
|
|||||||
* @param correlationId
|
* @param correlationId
|
||||||
*/
|
*/
|
||||||
void emitErrorEvent(int correlationId);
|
void emitErrorEvent(int correlationId);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TargetController(EventManager& eventManager): eventManager(eventManager) {};
|
TargetController(EventManager& eventManager): eventManager(eventManager) {};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user