diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 8e17eae862..c26b7c1203 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -402,6 +402,9 @@ "configurationBatteryMaximum": { "message": "Maximum Cell Voltage" }, + "configurationBatteryWarning": { + "message": "Warning Cell Voltage" + }, "configurationBatteryScale": { "message": "Voltage Scale" }, diff --git a/js/backup_restore.js b/js/backup_restore.js index e8da8648d2..c765a44b11 100644 --- a/js/backup_restore.js +++ b/js/backup_restore.js @@ -10,11 +10,17 @@ function configuration_backup(callback) { MSP_codes.MSP_PID, MSP_codes.MSP_RC_TUNING, MSP_codes.MSP_ACC_TRIM, - MSP_codes.MSP_SERVO_CONF + MSP_codes.MSP_SERVO_CONF, + MSP_codes.MSP_CHANNEL_FORWARDING, + MSP_codes.MSP_MODE_RANGES, + MSP_codes.MSP_ADJUSTMENT_RANGES ]; var uniqueData = [ + // Not used by cleanflight, and it's wrong anyway - AUX settings are per-profile in baseflight. + /* MSP_codes.MSP_BOX, + */ MSP_codes.MSP_MISC, MSP_codes.MSP_RCMAP, MSP_codes.MSP_CONFIG @@ -54,7 +60,9 @@ function configuration_backup(callback) { 'PID': jQuery.extend(true, [], PIDs), 'RC': jQuery.extend(true, {}, RC_tuning), 'AccTrim': jQuery.extend(true, [], CONFIG.accelerometerTrims), - 'ServoConfig': jQuery.extend(true, [], SERVO_CONFIG) + 'ServoConfig': jQuery.extend(true, [], SERVO_CONFIG), + 'ModeRanges': jQuery.extend(true, [], MODE_RANGES), + 'AdjustmentRanges': jQuery.extend(true, [], ADJUSTMENT_RANGES) }); codeKey = 0; @@ -82,7 +90,10 @@ function configuration_backup(callback) { query(); }); } else { + // Not used by cleanflight, and it's wrong anyway - AUX settings are per-profile in baseflight. + /* configuration.AUX = jQuery.extend(true, [], AUX_CONFIG_values); + */ configuration.MISC = jQuery.extend(true, {}, MISC); configuration.RCMAP = jQuery.extend(true, [], RC_MAP); configuration.BF_CONFIG = jQuery.extend(true, {}, BF_CONFIG); @@ -107,7 +118,7 @@ function configuration_backup(callback) { now = (d.getMonth() + 1) + '.' + d.getDate() + '.' + d.getFullYear() + '.' + d.getHours() + '.' + d.getMinutes(); // create or load the file - chrome.fileSystem.chooseEntry({type: 'saveFile', suggestedName: 'baseflight_backup_' + now, accepts: accepts}, function (fileEntry) { + chrome.fileSystem.chooseEntry({type: 'saveFile', suggestedName: 'cleanflight_backup_' + now, accepts: accepts}, function (fileEntry) { if (chrome.runtime.lastError) { console.error(chrome.runtime.lastError.message); return; @@ -263,11 +274,15 @@ function configuration_restore(callback) { MSP_codes.MSP_SET_PID, MSP_codes.MSP_SET_RC_TUNING, MSP_codes.MSP_SET_ACC_TRIM, - MSP_codes.MSP_SET_SERVO_CONF + MSP_codes.MSP_SET_SERVO_CONF, + MSP_codes.MSP_SET_CHANNEL_FORWARDING ]; var uniqueData = [ + // Not used by cleanflight, and it's wrong anyway - AUX settings are per-profile in baseflight. + /* MSP_codes.MSP_SET_BOX, + */ MSP_codes.MSP_SET_MISC, MSP_codes.MSP_SET_RCMAP, MSP_codes.MSP_SET_CONFIG @@ -295,14 +310,16 @@ function configuration_restore(callback) { RC_tuning = configuration.profiles[profile].RC; CONFIG.accelerometerTrims = configuration.profiles[profile].AccTrim; SERVO_CONFIG = configuration.profiles[profile].ServoConfig; + MODE_RANGES = configuration.profiles[profile].ModeRanges; + ADJUSTMENT_RANGES = configuration.profiles[profile].AdjustmentRanges; } - function query() { + function upload_using_specific_commands() { MSP.send_message(profileSpecificData[codeKey], MSP.crunch(profileSpecificData[codeKey]), false, function () { codeKey++; if (codeKey < profileSpecificData.length) { - query(); + upload_using_specific_commands(); } else { codeKey = 0; savingProfile++; @@ -311,7 +328,7 @@ function configuration_restore(callback) { load_objects(savingProfile); MSP.send_message(MSP_codes.MSP_EEPROM_WRITE, false, false, function () { - MSP.send_message(MSP_codes.MSP_SELECT_SETTING, [savingProfile], false, query); + MSP.send_message(MSP_codes.MSP_SELECT_SETTING, [savingProfile], false, upload_using_specific_commands); }); } else { MSP.send_message(MSP_codes.MSP_EEPROM_WRITE, false, false, function () { @@ -322,16 +339,26 @@ function configuration_restore(callback) { }); } + function upload_mode_ranges() { + MSP.sendModeRanges(upload_adjustment_ranges); + } + + function upload_adjustment_ranges() { + MSP.sendAdjustmentRanges(upload_using_specific_commands); + } // start uploading load_objects(0); - query(); + upload_mode_ranges(); } function upload_unique_data() { var codeKey = 0; function load_objects() { + // Disabled, cleanflight does not use MSP_BOX. + /* AUX_CONFIG_values = configuration.AUX; + */ MISC = configuration.MISC; RC_MAP = configuration.RCMAP; BF_CONFIG = configuration.BF_CONFIG; diff --git a/js/data_storage.js b/js/data_storage.js index 1b9ce477bf..b2b504d3d3 100644 --- a/js/data_storage.js +++ b/js/data_storage.js @@ -65,7 +65,10 @@ var RC_tuning = { var AUX_CONFIG = []; var AUX_CONFIG_IDS = []; +//Disabled, cleanflight does not use MSP_BOX. +/* var AUX_CONFIG_values = []; +*/ var MODE_RANGES = []; var ADJUSTMENT_RANGES = []; @@ -126,5 +129,5 @@ var MISC = { vbatscale: 0, vbatmincellvoltage: 0, vbatmaxcellvoltage: 0, - placeholder3: 0 + vbatwarningcellvoltage: 0 }; \ No newline at end of file diff --git a/js/msp.js b/js/msp.js index 6517014a65..c7cc4e6007 100644 --- a/js/msp.js +++ b/js/msp.js @@ -292,6 +292,7 @@ var MSP = { } } break; + // Disabled, cleanflight does not use MSP_BOX. /* case MSP_codes.MSP_BOX: AUX_CONFIG_values = []; // empty the array as new data is coming in @@ -318,7 +319,7 @@ var MSP = { MISC.vbatscale = data.getUint8(18, 1); // 10-200 MISC.vbatmincellvoltage = data.getUint8(19, 1) / 10; // 10-50 MISC.vbatmaxcellvoltage = data.getUint8(20, 1) / 10; // 10-50 - MISC.placeholder3 = data.getUint8(21, 1); + MISC.vbatwarningcellvoltage = data.getUint8(21, 1) / 10; // 10-50 break; case MSP_codes.MSP_MOTOR_PINS: console.log(data); @@ -724,12 +725,15 @@ MSP.crunch = function (code) { buffer.push(parseInt(RC_tuning.throttle_MID * 100)); buffer.push(parseInt(RC_tuning.throttle_EXPO * 100)); break; + // Disabled, cleanflight does not use MSP_SET_BOX. + /* case MSP_codes.MSP_SET_BOX: for (var i = 0; i < AUX_CONFIG_values.length; i++) { buffer.push(lowByte(AUX_CONFIG_values[i])); buffer.push(highByte(AUX_CONFIG_values[i])); } break; + */ case MSP_codes.MSP_SET_RCMAP: for (var i = 0; i < RC_MAP.length; i++) { buffer.push(RC_MAP[i]); @@ -763,7 +767,7 @@ MSP.crunch = function (code) { buffer.push(MISC.vbatscale); buffer.push(MISC.vbatmincellvoltage * 10); buffer.push(MISC.vbatmaxcellvoltage * 10); - buffer.push(MISC.placeholder3); + buffer.push(MISC.vbatwarningcellvoltage * 10); break; case MSP_codes.MSP_SET_SERVO_CONF: for (var i = 0; i < SERVO_CONFIG.length; i++) { @@ -779,10 +783,77 @@ MSP.crunch = function (code) { buffer.push(lowByte(SERVO_CONFIG[i].rate)); } break; + case MSP_codes.MSP_SET_CHANNEL_FORWARDING: + for (var i = 0; i < SERVO_CONFIG.length; i++) { + buffer.push(SERVO_CONFIG[i].indexOfChannelToForward); + } + break; default: return false; } return buffer; -}; \ No newline at end of file +}; + + +MSP.sendModeRanges = function(onCompleteCallback) { + var nextFunction = send_next_mode_range; + + var modeRangeIndex = 0; + + send_next_mode_range(); + + + function send_next_mode_range() { + + var modeRange = MODE_RANGES[modeRangeIndex]; + + var AUX_val_buffer_out = []; + AUX_val_buffer_out.push(modeRangeIndex); + AUX_val_buffer_out.push(modeRange.id); + AUX_val_buffer_out.push(modeRange.auxChannelIndex); + AUX_val_buffer_out.push((modeRange.range.start - 900) / 25); + AUX_val_buffer_out.push((modeRange.range.end - 900) / 25); + + // prepare for next iteration + modeRangeIndex++; + if (modeRangeIndex == MODE_RANGES.length) { + nextFunction = onCompleteCallback; + + } + MSP.send_message(MSP_codes.MSP_SET_MODE_RANGE, AUX_val_buffer_out, false, nextFunction); + } +}; + +MSP.sendAdjustmentRanges = function(onCompleteCallback) { + var nextFunction = send_next_adjustment_range; + + var adjustmentRangeIndex = 0; + + send_next_adjustment_range(); + + + function send_next_adjustment_range() { + + var adjustmentRange = ADJUSTMENT_RANGES[adjustmentRangeIndex]; + + var ADJUSTMENT_val_buffer_out = []; + ADJUSTMENT_val_buffer_out.push(adjustmentRangeIndex); + ADJUSTMENT_val_buffer_out.push(adjustmentRange.slotIndex); + ADJUSTMENT_val_buffer_out.push(adjustmentRange.auxChannelIndex); + ADJUSTMENT_val_buffer_out.push((adjustmentRange.range.start - 900) / 25); + ADJUSTMENT_val_buffer_out.push((adjustmentRange.range.end - 900) / 25); + ADJUSTMENT_val_buffer_out.push(adjustmentRange.adjustmentFunction); + ADJUSTMENT_val_buffer_out.push(adjustmentRange.auxSwitchChannelIndex); + + // prepare for next iteration + adjustmentRangeIndex++; + if (adjustmentRangeIndex == ADJUSTMENT_RANGES.length) { + nextFunction = onCompleteCallback; + + } + MSP.send_message(MSP_codes.MSP_SET_ADJUSTMENT_RANGE, ADJUSTMENT_val_buffer_out, false, nextFunction); + } +}; + diff --git a/tabs/adjustments.js b/tabs/adjustments.js index 6408ad71b3..79b98356e1 100644 --- a/tabs/adjustments.js +++ b/tabs/adjustments.js @@ -180,7 +180,7 @@ TABS.adjustments.initialize = function (callback) { auxSwitchChannelIndex: 0 }; - $('.adjustments .adjustment').each(function () { + $('.tab-adjustments .adjustments .adjustment').each(function () { var adjustmentElement = $(this); if ($(adjustmentElement).find('.enable').prop("checked")) { @@ -208,36 +208,8 @@ TABS.adjustments.initialize = function (callback) { // // send data to FC // - - var nextFunction = send_next_adjustment_range; - - var adjustmentRangeIndex = 0; - - send_next_adjustment_range(); - + MSP.sendAdjustmentRanges(save_to_eeprom); - function send_next_adjustment_range() { - - var adjustmentRange = ADJUSTMENT_RANGES[adjustmentRangeIndex]; - - var ADJUSTMENT_val_buffer_out = []; - ADJUSTMENT_val_buffer_out.push(adjustmentRangeIndex); - ADJUSTMENT_val_buffer_out.push(adjustmentRange.slotIndex); - ADJUSTMENT_val_buffer_out.push(adjustmentRange.auxChannelIndex); - ADJUSTMENT_val_buffer_out.push((adjustmentRange.range.start - 900) / 25); - ADJUSTMENT_val_buffer_out.push((adjustmentRange.range.end - 900) / 25); - ADJUSTMENT_val_buffer_out.push(adjustmentRange.adjustmentFunction); - ADJUSTMENT_val_buffer_out.push(adjustmentRange.auxSwitchChannelIndex); - - // prepare for next iteration - adjustmentRangeIndex++; - if (adjustmentRangeIndex == requiredAdjustmentRangeCount) { - nextFunction = save_to_eeprom; - - } - MSP.send_message(MSP_codes.MSP_SET_ADJUSTMENT_RANGE, ADJUSTMENT_val_buffer_out, false, nextFunction); - } - function save_to_eeprom() { MSP.send_message(MSP_codes.MSP_EEPROM_WRITE, false, false, function () { GUI.log(chrome.i18n.getMessage('adjustmentsEepromSaved')); diff --git a/tabs/auxiliary.js b/tabs/auxiliary.js index 1b70ff4e32..42568ed2cd 100644 --- a/tabs/auxiliary.js +++ b/tabs/auxiliary.js @@ -178,7 +178,7 @@ TABS.auxiliary.initialize = function (callback) { MODE_RANGES = []; - $('.modes .mode').each(function () { + $('.tab-auxiliary .modes .mode').each(function () { var modeElement = $(this); var modeId = modeElement.data('id'); @@ -212,33 +212,7 @@ TABS.auxiliary.initialize = function (callback) { // // send data to FC // - - var nextFunction = send_next_mode_range; - - var modeRangeIndex = 0; - - send_next_mode_range(); - - - function send_next_mode_range() { - - var modeRange = MODE_RANGES[modeRangeIndex]; - - var AUX_val_buffer_out = []; - AUX_val_buffer_out.push(modeRangeIndex); - AUX_val_buffer_out.push(modeRange.id); - AUX_val_buffer_out.push(modeRange.auxChannelIndex); - AUX_val_buffer_out.push((modeRange.range.start - 900) / 25); - AUX_val_buffer_out.push((modeRange.range.end - 900) / 25); - - // prepare for next iteration - modeRangeIndex++; - if (modeRangeIndex == requiredModesRangeCount) { - nextFunction = save_to_eeprom; - - } - MSP.send_message(MSP_codes.MSP_SET_MODE_RANGE, AUX_val_buffer_out, false, nextFunction); - } + MSP.sendModeRanges(save_to_eeprom); function save_to_eeprom() { MSP.send_message(MSP_codes.MSP_EEPROM_WRITE, false, false, function () { diff --git a/tabs/configuration.html b/tabs/configuration.html index ca4aeef6be..f846113e70 100644 --- a/tabs/configuration.html +++ b/tabs/configuration.html @@ -121,6 +121,12 @@ +