1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-24 00:35:26 +03:00

Save vtx_table lua file. (#1759)

Save vtx_table lua file.
This commit is contained in:
Michael Keller 2019-10-29 14:29:48 +13:00 committed by GitHub
commit 49c7da5683
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 104 additions and 1 deletions

View file

@ -4993,7 +4993,7 @@
}, },
"vtxHelp": { "vtxHelp": {
"message": "Here you can configure the values for your Video Transmitter (VTX). You can view and change the transmission values, including the VTX Tables, if the flight controller and the VTX support it.<br>To set up your VTX use the following steps:<br>1. Go to <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/betaflight/betaflight/wiki/VTX-tables\">this</a> page;<br>2. Find the appropriate VTX configuration file for your country and your VTX model and download it;<br>3. Click '$t(vtxButtonLoadFile.message)' below, select the VTX configuration file, load it;<br>4. Verify that the settings are correct;<br>5. Click '$t(vtxButtonSave.message)' to store the VTX settings on the flight controller.", "message": "Here you can configure the values for your Video Transmitter (VTX). You can view and change the transmission values, including the VTX Tables, if the flight controller and the VTX support it.<br>To set up your VTX use the following steps:<br>1. Go to <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/betaflight/betaflight/wiki/VTX-tables\">this</a> page;<br>2. Find the appropriate VTX configuration file for your country and your VTX model and download it;<br>3. Click '$t(vtxButtonLoadFile.message)' below, select the VTX configuration file, load it;<br>4. Verify that the settings are correct;<br>5. Click '$t(vtxButtonSave.message)' to store the VTX settings on the flight controller.<br>6. Optionally click '$t(vtxButtonSaveLua.message)' to save a lua configuration file you can use with the betaflight lua scripts (See more <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/betaflight/betaflight-tx-lua-scripts/\">here</a>.)",
"description": "Introduction message in the VTX tab" "description": "Introduction message in the VTX tab"
}, },
"vtxMessageNotSupported": { "vtxMessageNotSupported": {
@ -5225,6 +5225,14 @@
"message": "Save to file", "message": "Save to file",
"description": "Save to file button in the VTX tab" "description": "Save to file button in the VTX tab"
}, },
"vtxButtonSaveLua": {
"message": "Save Lua Script",
"description": "Save Lua script button in the VTX tab"
},
"vtxLuaFileHelp" :{
"message": "The '$t(vtxButtonSaveLua.message)' button will allow you to save a <i>craftname</i>.lua file containing the vtx table configuration that can be used with the betaflight lua scripts. (See more <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/betaflight/betaflight-tx-lua-scripts/\">here</a>.)",
"description": "Tooltip message for the Save Lua script button in the VTX tab"
},
"vtxButtonLoadFile": { "vtxButtonLoadFile": {
"message": "Load from file", "message": "Load from file",
"description": "Load to file button in the VTX tab" "description": "Load to file button in the VTX tab"

View file

@ -496,6 +496,10 @@ TABS.vtx.initialize = function (callback) {
save_json(); save_json();
}); });
$('a.save_lua').click(function () {
save_lua();
});
$('a.load_file').click(function () { $('a.load_file').click(function () {
load_json(); load_json();
}); });
@ -512,6 +516,65 @@ TABS.vtx.initialize = function (callback) {
} }
function save_lua() {
let suggestedName = 'model01';
let suffix = 'lua';
var filename;
if(CONFIG.name && CONFIG.name.trim() !== '') {
filename = CONFIG.name.trim().replace(' ', '_');
}else{
filename = suggestedName
}
filename += '.' + suffix;
let accepts = [{
description: suffix.toUpperCase() + ' files', extensions: [suffix],
}];
chrome.fileSystem.chooseEntry({type: 'saveFile', suggestedName: filename, accepts: accepts}, function(entry) {
if (chrome.runtime.lastError) {
console.error(chrome.runtime.lastError.message);
return;
}
if (!entry) {
console.log('No file selected');
return;
}
entry.createWriter(function (writer) {
writer.onerror = function(){
console.error('Failed to write VTX table lua file');
GUI.log(i18n.getMessage('vtxSavedFileKo'));
};
writer.onwriteend = function() {
dump_html_to_msp();
let vtxConfig = createVtxConfigInfo();
let text = creatLuaTables(vtxConfig);
let data = new Blob([text], { type: "application/text" });
// we get here at the end of the truncate method, change to the new end
writer.onwriteend = function() {
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'VtxTableLuaSave', text.length);
console.log('Write VTX table lua file end');
GUI.log(i18n.getMessage('vtxSavedFileOk'));
}
writer.write(data);
};
writer.truncate(0);
}, function (){
console.error('Failed to get VTX table lua file writer');
GUI.log(i18n.getMessage('vtxSavedFileKo'));
});
});
}
function save_json() { function save_json() {
let suggestedName = 'vtxtable'; let suggestedName = 'vtxtable';
let suffix = 'json'; let suffix = 'json';
@ -550,6 +613,7 @@ TABS.vtx.initialize = function (callback) {
// we get here at the end of the truncate method, change to the new end // we get here at the end of the truncate method, change to the new end
writer.onwriteend = function() { writer.onwriteend = function() {
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'VtxTableSave', text.length); analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'VtxTableSave', text.length);
console.log(vtxConfig)
console.log('Write VTX file end'); console.log('Write VTX file end');
GUI.log(i18n.getMessage('vtxSavedFileOk')); GUI.log(i18n.getMessage('vtxSavedFileOk'));
} }
@ -807,6 +871,33 @@ TABS.vtx.initialize = function (callback) {
return vtxConfig; return vtxConfig;
} }
function creatLuaTables(vtxConfig) {
let bandsString = "bandTable = { [0]=\"U\"";
let frequencieString = "frequencyTable = {\n";
let freqBandsString = "frequenciesPerBand = ";
let powersString = "powerTable = { ";
let bands_list = vtxConfig.vtx_table.bands_list;
let power_list = vtxConfig.vtx_table.powerlevels_list;
var index, len, i, l;
for (index = 0, len = bands_list.length; index < len; ++index) {
bandsString += ", \"" + bands_list[index].letter + "\"";
frequencieString += " { ";
for (i = 0, l = bands_list[index].frequencies.length; i < l; ++i) {
frequencieString += bands_list[index].frequencies[i] + ", ";
}
frequencieString += "},\n";
}
bandsString += " }\n";
frequencieString += "}\n";
freqBandsString += bands_list[1].frequencies.length + "\n";
for (index = 0, len = power_list.length; index < len; ++index) {
powersString += "[" + power_list[index].value + "]=" + power_list[index].label + ", ";
}
powersString += "}\n";
let text = frequencieString + freqBandsString + bandsString + powersString;
return text;
}
}; };
TABS.vtx.cleanup = function (callback) { TABS.vtx.cleanup = function (callback) {

View file

@ -252,6 +252,10 @@
</div> </div>
<div class="content_toolbar"> <div class="content_toolbar">
<div class="btn save_lua_btn">
<a class="save_lua" id="save_lua_button" href="#" i18n="vtxButtonSaveLua"></a>
<div id="vtxLuaFileTooltip" class="helpicon cf_tip" i18n_title="vtxLuaFileHelp"></div>
</div>
<div class="btn save_file_btn"> <div class="btn save_file_btn">
<a class="save_file" id="save_file_button" href="#" i18n="vtxButtonSaveFile"></a> <a class="save_file" id="save_file_button" href="#" i18n="vtxButtonSaveFile"></a>
</div> </div>