mirror of
https://github.com/betaflight/betaflight-configurator.git
synced 2025-07-24 00:35:26 +03:00
Added support for Unified Target configurations with manufacturer_id in the name.
This commit is contained in:
parent
074bb46f78
commit
261ebd7bbe
3 changed files with 73 additions and 33 deletions
|
@ -2631,8 +2631,11 @@
|
||||||
"firmwareFlasherReleaseSummaryHead": {
|
"firmwareFlasherReleaseSummaryHead": {
|
||||||
"message": "Release info"
|
"message": "Release info"
|
||||||
},
|
},
|
||||||
"firmwareFlasherReleaseName": {
|
"firmwareFlasherReleaseManufacturer": {
|
||||||
"message": "Name/Version:"
|
"message": "Manufacturer:"
|
||||||
|
},
|
||||||
|
"firmwareFlasherReleaseVersion": {
|
||||||
|
"message": "Version:"
|
||||||
},
|
},
|
||||||
"firmwareFlasherReleaseVersionUrl": {
|
"firmwareFlasherReleaseVersionUrl": {
|
||||||
"message": "Visit release page."
|
"message": "Visit release page."
|
||||||
|
|
|
@ -65,7 +65,19 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
|
|
||||||
self.enableFlashing(true);
|
self.enableFlashing(true);
|
||||||
|
|
||||||
$('div.release_info .target').text(TABS.firmware_flasher.selectedBoard);
|
let targetName = TABS.firmware_flasher.selectedBoard;
|
||||||
|
const TARGET_REGEXP = /^([^+-]+)(?:\+(.{1,4})|-legacy)?$/;
|
||||||
|
let targetParts = targetName.match(TARGET_REGEXP);
|
||||||
|
if (targetParts) {
|
||||||
|
targetName = targetParts[1];
|
||||||
|
if (targetParts[2]) {
|
||||||
|
$('div.release_info #manufacturerInfo').show();
|
||||||
|
$('div.release_info #manufacturer').text(targetParts[2]);
|
||||||
|
} else {
|
||||||
|
$('div.release_info #manufacturerInfo').hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$('div.release_info .target').text(targetName);
|
||||||
$('div.release_info .name').text(summary.version).prop('href', summary.releaseUrl);
|
$('div.release_info .name').text(summary.version).prop('href', summary.releaseUrl);
|
||||||
$('div.release_info .date').text(summary.date);
|
$('div.release_info .date').text(summary.date);
|
||||||
$('div.release_info .file').text(summary.file).prop('href', summary.url);
|
$('div.release_info .file').text(summary.file).prop('href', summary.url);
|
||||||
|
@ -264,44 +276,57 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
let releases = {};
|
let releases = {};
|
||||||
let unifiedConfigs = {};
|
let unifiedConfigs = {};
|
||||||
let items = {};
|
let items = {};
|
||||||
let baseTargets = {};
|
let unifiedTargetNames = [];
|
||||||
data.forEach(function(target) {
|
data.forEach(function(target) {
|
||||||
let targetName = target.name;
|
const TARGET_REGEXP = /^(?:([^-]{1,4})-)?(.*).config$/;
|
||||||
if (targetName.endsWith('.config')) {
|
let targetParts = target.name.match(TARGET_REGEXP);
|
||||||
targetName = targetName.slice(0,targetName.indexOf('.config'));
|
if (!targetParts) {
|
||||||
} else {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
unifiedConfigs[targetName]=target.download_url;
|
let boardName = targetParts[2];
|
||||||
items[targetName] = "something";
|
let manufacturerId = targetParts[1];
|
||||||
|
let targetName;
|
||||||
|
let displayName;
|
||||||
|
if (manufacturerId) {
|
||||||
|
targetName = `${boardName}+${manufacturerId}`;
|
||||||
|
displayName = `${boardName} (${manufacturerId})`;
|
||||||
|
} else {
|
||||||
|
targetName = boardName;
|
||||||
|
}
|
||||||
|
unifiedTargetNames.push(boardName);
|
||||||
|
unifiedConfigs[targetName] = target.download_url;
|
||||||
|
items[targetName] = { displayName: displayName };
|
||||||
|
// Chicken and egg problem: We need to know what Unified Target this configuration uses before reading the configuration.
|
||||||
|
// Solving this by assuming that all Unified Targets have the same availability for now.
|
||||||
|
const DEFAULT_UNIFIED_TARGET_NAME = "STM32F405";
|
||||||
|
releases[targetName] = builds[DEFAULT_UNIFIED_TARGET_NAME];
|
||||||
});
|
});
|
||||||
Object.keys(builds).forEach(function (key) {
|
Object.keys(builds).forEach(function (key) {
|
||||||
// releases is under the hood, so we can have duplicate entries
|
let targetName;
|
||||||
var legacyKey = key + " (Legacy)";
|
let displayName;
|
||||||
if (unifiedConfigs[key] === undefined) {
|
if (unifiedTargetNames.includes(key)) {
|
||||||
items[key] = "something";
|
targetName = `${key}-legacy`;
|
||||||
releases[key] = builds[key];
|
displayName = i18n.getMessage("firmwareFlasherLegacyLabel", { target: key });
|
||||||
} else {
|
} else {
|
||||||
items[legacyKey] = "i18nplz";
|
targetName = key;
|
||||||
baseTargets[legacyKey] = key;
|
|
||||||
releases[legacyKey] = builds[key];
|
|
||||||
releases[key] = builds[key];
|
|
||||||
}
|
}
|
||||||
|
items[targetName] = { displayName: displayName };
|
||||||
|
releases[targetName] = builds[key];
|
||||||
});
|
});
|
||||||
$('select[name="board"]').empty()
|
|
||||||
.append($("<option value='0' i18n='firmwareFlasherOptionLabelSelectBoard'></option>"));
|
|
||||||
|
|
||||||
$('select[name="firmware_version"]').empty()
|
|
||||||
.append($("<option value='0' i18n='firmwareFlasherOptionLabelSelectFirmwareVersion'></option>"));
|
|
||||||
var boards_e = $('select[name="board"]');
|
var boards_e = $('select[name="board"]');
|
||||||
var versions_e = $('select[name="firmware_version"]');
|
var versions_e = $('select[name="firmware_version"]');
|
||||||
|
boards_e.empty()
|
||||||
|
.append($("<option value='0' i18n='firmwareFlasherOptionLabelSelectBoard'></option>"));
|
||||||
|
|
||||||
|
versions_e.empty()
|
||||||
|
.append($("<option value='0' i18n='firmwareFlasherOptionLabelSelectFirmwareVersion'></option>"));
|
||||||
var selectTargets = [];
|
var selectTargets = [];
|
||||||
Object.keys(items)
|
Object.keys(items)
|
||||||
.sort()
|
.sort()
|
||||||
.forEach(function(target, i) {
|
.forEach(function(target, i) {
|
||||||
var select_e = $("<option value='{0}'>{1}</option>".format(target,
|
let item = items[target];
|
||||||
items[target] === "i18nplz" ? i18n.getMessage("firmwareFlasherLegacyLabel",
|
|
||||||
{target: baseTargets[target]}) : target));
|
var select_e = $("<option value='{0}'>{1}</option>".format(target, items[target].displayName || target));
|
||||||
boards_e.append(select_e);
|
boards_e.append(select_e);
|
||||||
});
|
});
|
||||||
TABS.firmware_flasher.releases = releases;
|
TABS.firmware_flasher.releases = releases;
|
||||||
|
|
|
@ -88,12 +88,24 @@
|
||||||
i18n="firmwareFlasherReleaseSummaryHead"></div>
|
i18n="firmwareFlasherReleaseSummaryHead"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="spacer" style="margin-bottom: 10px;">
|
<div class="spacer" style="margin-bottom: 10px;">
|
||||||
<strong i18n="firmwareFlasherReleaseTarget"></strong> <span class="target"></span><br /> <strong
|
<strong i18n="firmwareFlasherReleaseTarget"></strong>
|
||||||
i18n="firmwareFlasherReleaseName"></strong> <a i18n_title="firmwareFlasherReleaseVersionUrl" class="name"
|
<span class="target"></span>
|
||||||
href="#" target="_blank"></a><br /> <strong i18n="firmwareFlasherReleaseFile"></strong> <a
|
<br />
|
||||||
i18n_title="firmwareFlasherReleaseFileUrl" class="file" href="#" target="_blank"></a><br /> <strong
|
<div id="manufacturerInfo">
|
||||||
i18n="firmwareFlasherReleaseDate"></strong> <span class="date"></span><br /> <strong
|
<strong i18n="firmwareFlasherReleaseManufacturer"></strong>
|
||||||
i18n="firmwareFlasherReleaseNotes"></strong>
|
<span id="manufacturer"></span>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
<strong i18n="firmwareFlasherReleaseVersion"></strong>
|
||||||
|
<a i18n_title="firmwareFlasherReleaseVersionUrl" class="name" href="#" target="_blank"></a>
|
||||||
|
<br />
|
||||||
|
<strong i18n="firmwareFlasherReleaseFile"></strong>
|
||||||
|
<a i18n_title="firmwareFlasherReleaseFileUrl" class="file" href="#" target="_blank"></a>
|
||||||
|
<br />
|
||||||
|
<strong i18n="firmwareFlasherReleaseDate"></strong>
|
||||||
|
<span class="date"></span>
|
||||||
|
<br />
|
||||||
|
<strong i18n="firmwareFlasherReleaseNotes"></strong>
|
||||||
<div class=notes></div>
|
<div class=notes></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue