mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-14 03:49:53 +03:00
Merge branch 'master' of https://github.com/iNavFlight/inav-configurator into Electron
This commit is contained in:
commit
ca13eefa1b
32 changed files with 2988 additions and 796 deletions
|
@ -39,33 +39,6 @@ var mspHelper = (function () {
|
|||
'921600'
|
||||
];
|
||||
|
||||
self.SERIAL_PORT_FUNCTIONS = {
|
||||
'MSP': 0,
|
||||
'GPS': 1,
|
||||
'TELEMETRY_FRSKY': 2,
|
||||
'TELEMETRY_HOTT': 3,
|
||||
'TELEMETRY_LTM': 4, // LTM replaced MSP
|
||||
'TELEMETRY_SMARTPORT': 5,
|
||||
'RX_SERIAL': 6,
|
||||
'BLACKBOX': 7,
|
||||
'TELEMETRY_MAVLINK': 8,
|
||||
'TELEMETRY_IBUS': 9,
|
||||
'RUNCAM_DEVICE_CONTROL': 10,
|
||||
'TBS_SMARTAUDIO': 11,
|
||||
'IRC_TRAMP': 12,
|
||||
'OPFLOW': 14,
|
||||
'LOG': 15,
|
||||
'RANGEFINDER': 16,
|
||||
'VTX_FFPV': 17,
|
||||
'ESC': 18,
|
||||
'GSM_SMS': 19,
|
||||
'FRSKY_OSD': 20,
|
||||
'DJI_FPV': 21,
|
||||
'SBUS_OUTPUT': 22,
|
||||
'SMARTPORT_MASTER': 23,
|
||||
'MSP_DISPLAYPORT': 25,
|
||||
};
|
||||
|
||||
// Required for MSP_DEBUGMSG because console.log() doesn't allow omitting
|
||||
// the newline at the end, so we keep the pending message here until we find a
|
||||
// '\0', then print it. Messages sent by MSP_DEBUGMSG are guaranteed to
|
||||
|
@ -113,7 +86,7 @@ var mspHelper = (function () {
|
|||
|
||||
FC.CONFIG.armingFlags = data.getUint32(offset, true);
|
||||
offset += 4;
|
||||
|
||||
|
||||
//As there are 8 bytes for mspBoxModeFlags (number of bytes is actually variable)
|
||||
//read mixer profile as the last byte in the the message
|
||||
profile_byte = data.getUint8(dataHandler.message_length_expected - 1);
|
||||
|
@ -333,10 +306,6 @@ var mspHelper = (function () {
|
|||
FC.PIDs[i][3] = data.getUint8(needle + 3);
|
||||
}
|
||||
break;
|
||||
case MSPCodes.MSP_ARMING_CONFIG:
|
||||
FC.ARMING_CONFIG.auto_disarm_delay = data.getUint8(0);
|
||||
FC.ARMING_CONFIG.disarm_kill_switch = data.getUint8(1);
|
||||
break;
|
||||
case MSPCodes.MSP_LOOP_TIME:
|
||||
FC.FC_CONFIG.loopTime = data.getInt16(0, true);
|
||||
break;
|
||||
|
@ -857,10 +826,6 @@ var mspHelper = (function () {
|
|||
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_CHANNEL_FORWARDING:
|
||||
console.log('Channel forwarding saved');
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP2_CF_SERIAL_CONFIG:
|
||||
FC.SERIAL_CONFIG.ports = [];
|
||||
var bytesPerPort = 1 + 4 + 4;
|
||||
|
@ -871,7 +836,7 @@ var mspHelper = (function () {
|
|||
|
||||
var serialPort = {
|
||||
identifier: data.getUint8(offset),
|
||||
functions: mspHelper.serialPortFunctionMaskToFunctions(data.getUint32(offset + 1, true)),
|
||||
functions: helper.serialPortHelper.maskToFunctions(data.getUint32(offset + 1, true)),
|
||||
msp_baudrate: BAUD_RATES[data.getUint8(offset + 5)],
|
||||
sensors_baudrate: BAUD_RATES[data.getUint8(offset + 6)],
|
||||
telemetry_baudrate: BAUD_RATES[data.getUint8(offset + 7)],
|
||||
|
@ -927,17 +892,6 @@ var mspHelper = (function () {
|
|||
}
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_CHANNEL_FORWARDING:
|
||||
for (let i = 0; i < data.byteLength && i < FC.SERVO_CONFIG.length; i++) {
|
||||
var channelIndex = data.getUint8(i);
|
||||
if (channelIndex < 255) {
|
||||
FC.SERVO_CONFIG[i].indexOfChannelToForward = channelIndex;
|
||||
} else {
|
||||
FC.SERVO_CONFIG[i].indexOfChannelToForward = undefined;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_RX_CONFIG:
|
||||
FC.RX_CONFIG.serialrx_provider = data.getUint8(offset);
|
||||
offset++;
|
||||
|
@ -995,21 +949,6 @@ var mspHelper = (function () {
|
|||
offset++;
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_RXFAIL_CONFIG:
|
||||
//noinspection JSUndeclaredVariable
|
||||
FC.RXFAIL_CONFIG = []; // empty the array as new data is coming in
|
||||
|
||||
var channelCount = data.byteLength / 3;
|
||||
|
||||
for (let i = 0; offset < data.byteLength && i < channelCount; i++, offset++) {
|
||||
var rxfailChannel = {
|
||||
mode: data.getUint8(offset++),
|
||||
value: data.getUint16(offset++, true)
|
||||
};
|
||||
FC.RXFAIL_CONFIG.push(rxfailChannel);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case MSPCodes.MSP_LED_STRIP_CONFIG:
|
||||
//noinspection JSUndeclaredVariable
|
||||
|
@ -1394,20 +1333,6 @@ var mspHelper = (function () {
|
|||
console.log('Calibration data saved');
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_POSITION_ESTIMATION_CONFIG:
|
||||
FC.POSITION_ESTIMATOR.w_z_baro_p = data.getUint16(0, true) / 100;
|
||||
FC.POSITION_ESTIMATOR.w_z_gps_p = data.getUint16(2, true) / 100;
|
||||
FC.POSITION_ESTIMATOR.w_z_gps_v = data.getUint16(4, true) / 100;
|
||||
FC.POSITION_ESTIMATOR.w_xy_gps_p = data.getUint16(6, true) / 100;
|
||||
FC.POSITION_ESTIMATOR.w_xy_gps_v = data.getUint16(8, true) / 100;
|
||||
FC.POSITION_ESTIMATOR.gps_min_sats = data.getUint8(10);
|
||||
FC.POSITION_ESTIMATOR.use_gps_velned = data.getUint8(11);
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_POSITION_ESTIMATION_CONFIG:
|
||||
console.log('POSITION_ESTIMATOR saved');
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_RTH_AND_LAND_CONFIG:
|
||||
FC.RTH_AND_LAND_CONFIG.minRthDistance = data.getUint16(0, true);
|
||||
FC.RTH_AND_LAND_CONFIG.rthClimbFirst = data.getUint8(2);
|
||||
|
@ -1452,9 +1377,6 @@ var mspHelper = (function () {
|
|||
case MSPCodes.MSP_SET_LOOP_TIME:
|
||||
console.log('Looptime saved');
|
||||
break;
|
||||
case MSPCodes.MSP_SET_ARMING_CONFIG:
|
||||
console.log('Arming config saved');
|
||||
break;
|
||||
case MSPCodes.MSP_SET_RESET_CURR_PID:
|
||||
console.log('Current PID profile reset');
|
||||
break;
|
||||
|
@ -1470,17 +1392,9 @@ var mspHelper = (function () {
|
|||
case MSPCodes.MSP_SET_RX_CONFIG:
|
||||
console.log('Rx config saved');
|
||||
break;
|
||||
case MSPCodes.MSP_SET_RXFAIL_CONFIG:
|
||||
console.log('Rxfail config saved');
|
||||
break;
|
||||
case MSPCodes.MSP_SET_FAILSAFE_CONFIG:
|
||||
console.log('Failsafe config saved');
|
||||
break;
|
||||
case MSPCodes.MSP_OSD_CONFIG:
|
||||
break;
|
||||
case MSPCodes.MSP_SET_OSD_CONFIG:
|
||||
console.log('OSD config set');
|
||||
break;
|
||||
case MSPCodes.MSP_OSD_CHAR_READ:
|
||||
break;
|
||||
case MSPCodes.MSP_OSD_CHAR_WRITE:
|
||||
|
@ -1551,6 +1465,9 @@ var mspHelper = (function () {
|
|||
case MSPCodes.MSP2_INAV_SELECT_BATTERY_PROFILE:
|
||||
console.log('Battery profile selected');
|
||||
break;
|
||||
case MSPCodes.MSP2_INAV_SET_CUSTOM_OSD_ELEMENTS:
|
||||
console.log('OSD custom elements preferences saved');
|
||||
break;
|
||||
case MSPCodes.MSPV2_INAV_OUTPUT_MAPPING:
|
||||
FC.OUTPUT_MAPPING.flush();
|
||||
for (let i = 0; i < data.byteLength; ++i)
|
||||
|
@ -1622,13 +1539,33 @@ var mspHelper = (function () {
|
|||
data.getUint8(0),
|
||||
data.getUint8(1),
|
||||
data.getInt32(2, true),
|
||||
data.getInt32(6, true)
|
||||
));
|
||||
data.getInt32(6, true),
|
||||
);
|
||||
if (safehome.getEnabled()) {
|
||||
SAFEHOMES.put(safehome);
|
||||
}
|
||||
|
||||
break;
|
||||
case MSPCodes.MSP2_INAV_SET_SAFEHOME:
|
||||
console.log('Safehome points saved');
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP2_INAV_FW_APPROACH:
|
||||
FW_APPROACH.put(new FwApproach(
|
||||
data.getUint8(0),
|
||||
data.getInt32(1, true),
|
||||
data.getInt32(5, true),
|
||||
data.getUint8(9, true),
|
||||
data.getInt16(10, true),
|
||||
data.getInt16(12, true),
|
||||
data.getUint8(14, true),
|
||||
));
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP2_INAV_SET_FW_APPROACH:
|
||||
console.log('FW Approach saved');
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP2_INAV_RATE_DYNAMICS:
|
||||
FC.RATE_DYNAMICS.sensitivityCenter = data.getUint8(0);
|
||||
FC.RATE_DYNAMICS.sensitivityEnd = data.getUint8(1);
|
||||
|
@ -1658,6 +1595,54 @@ var mspHelper = (function () {
|
|||
console.log('EzTune settings saved');
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP2_INAV_CUSTOM_OSD_ELEMENTS:
|
||||
OSD_CUSTOM_ELEMENTS.items = [];
|
||||
|
||||
var index = 0;
|
||||
|
||||
if(data.byteLength == 0){
|
||||
OSD_CUSTOM_ELEMENTS.settings.customElementsCount = 0;
|
||||
OSD_CUSTOM_ELEMENTS.settings.customElementTextSize = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
OSD_CUSTOM_ELEMENTS.settings.customElementsCount = data.getUint8(index++);
|
||||
OSD_CUSTOM_ELEMENTS.settings.customElementTextSize = data.getUint8(index++);
|
||||
|
||||
for (i = 0; i < OSD_CUSTOM_ELEMENTS.settings.customElementsCount; i++){
|
||||
var customElement = {
|
||||
customElementItems: [],
|
||||
customElementVisibility: {type: 0, value: 0},
|
||||
customElementText: [],
|
||||
};
|
||||
|
||||
for (let ii = 0; ii < OSD_CUSTOM_ELEMENTS.settings.customElementsCount; ii++){
|
||||
var customElementPart = {type: 0, value: 0,};
|
||||
customElementPart.type = data.getUint8(index++);
|
||||
customElementPart.value = data.getUint16(index, true);
|
||||
index += 2;
|
||||
customElement.customElementItems.push(customElementPart);
|
||||
}
|
||||
|
||||
customElement.customElementVisibility.type = data.getUint8(index++);
|
||||
customElement.customElementVisibility.value = data.getUint16(index, true);
|
||||
index += 2;
|
||||
|
||||
for (let ii = 0; ii < OSD_CUSTOM_ELEMENTS.settings.customElementTextSize; ii++){
|
||||
var char = data.getUint8(index++);
|
||||
if(char === 0){
|
||||
index += (OSD_CUSTOM_ELEMENTS.settings.customElementTextSize - 1) - ii;
|
||||
break;
|
||||
}
|
||||
customElement.customElementText[ii] = char;
|
||||
}
|
||||
|
||||
customElement.customElementText = String.fromCharCode(...customElement.customElementText);
|
||||
|
||||
OSD_CUSTOM_ELEMENTS.items.push(customElement)
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
console.log('Unknown code detected: ' + dataHandler.code);
|
||||
} else {
|
||||
|
@ -1794,10 +1779,6 @@ var mspHelper = (function () {
|
|||
buffer.push(BitHelper.lowByte(FC.CONFIG.accelerometerTrims[1]));
|
||||
buffer.push(BitHelper.highByte(FC.CONFIG.accelerometerTrims[1]));
|
||||
break;
|
||||
case MSPCodes.MSP_SET_ARMING_CONFIG:
|
||||
buffer.push(FC.ARMING_CONFIG.auto_disarm_delay);
|
||||
buffer.push(FC.ARMING_CONFIG.disarm_kill_switch);
|
||||
break;
|
||||
case MSPCodes.MSP_SET_LOOP_TIME:
|
||||
buffer.push(BitHelper.lowByte(FC.FC_CONFIG.loopTime));
|
||||
buffer.push(BitHelper.highByte(FC.FC_CONFIG.loopTime));
|
||||
|
@ -1939,16 +1920,6 @@ var mspHelper = (function () {
|
|||
buffer.push(FC.FAILSAFE_CONFIG.failsafe_min_distance_procedure);
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_CHANNEL_FORWARDING:
|
||||
for (let i = 0; i < FC.SERVO_CONFIG.length; i++) {
|
||||
var out = FC.SERVO_CONFIG[i].indexOfChannelToForward;
|
||||
if (out == undefined) {
|
||||
out = 255; // Cleanflight defines "CHANNEL_FORWARDING_DISABLED" as "(uint8_t)0xFF"
|
||||
}
|
||||
buffer.push(out);
|
||||
}
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP2_SET_CF_SERIAL_CONFIG:
|
||||
for (let i = 0; i < FC.SERIAL_CONFIG.ports.length; i++) {
|
||||
var serialPort = FC.SERIAL_CONFIG.ports[i];
|
||||
|
@ -2097,26 +2068,6 @@ var mspHelper = (function () {
|
|||
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_POSITION_ESTIMATION_CONFIG:
|
||||
buffer.push(BitHelper.lowByte(FC.POSITION_ESTIMATOR.w_z_baro_p * 100));
|
||||
buffer.push(BitHelper.highByte(FC.POSITION_ESTIMATOR.w_z_baro_p * 100));
|
||||
|
||||
buffer.push(BitHelper.lowByte(FC.POSITION_ESTIMATOR.w_z_gps_p * 100));
|
||||
buffer.push(BitHelper.highByte(FC.POSITION_ESTIMATOR.w_z_gps_p * 100));
|
||||
|
||||
buffer.push(BitHelper.lowByte(FC.POSITION_ESTIMATOR.w_z_gps_v * 100));
|
||||
buffer.push(BitHelper.highByte(FC.POSITION_ESTIMATOR.w_z_gps_v * 100));
|
||||
|
||||
buffer.push(BitHelper.lowByte(FC.POSITION_ESTIMATOR.w_xy_gps_p * 100));
|
||||
buffer.push(BitHelper.highByte(FC.POSITION_ESTIMATOR.w_xy_gps_p * 100));
|
||||
|
||||
buffer.push(BitHelper.lowByte(FC.POSITION_ESTIMATOR.w_xy_gps_v * 100));
|
||||
buffer.push(BitHelper.highByte(FC.POSITION_ESTIMATOR.w_xy_gps_v * 100));
|
||||
|
||||
buffer.push(FC.POSITION_ESTIMATOR.gps_min_sats);
|
||||
buffer.push(FC.POSITION_ESTIMATOR.use_gps_velned);
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_RTH_AND_LAND_CONFIG:
|
||||
buffer.push(BitHelper.lowByte(FC.RTH_AND_LAND_CONFIG.minRthDistance));
|
||||
buffer.push(BitHelper.highByte(FC.RTH_AND_LAND_CONFIG.minRthDistance));
|
||||
|
@ -2602,6 +2553,10 @@ var mspHelper = (function () {
|
|||
}
|
||||
};
|
||||
|
||||
self.loadOsdCustomElements = function (callback) {
|
||||
MSP.send_message(MSPCodes.MSP2_INAV_CUSTOM_OSD_ELEMENTS, false, false, callback);
|
||||
}
|
||||
|
||||
self.sendModeRanges = function (onCompleteCallback) {
|
||||
var nextFunction = send_next_mode_range;
|
||||
|
||||
|
@ -2667,66 +2622,6 @@ var mspHelper = (function () {
|
|||
});
|
||||
};
|
||||
|
||||
self.sendRxFailConfig = function (onCompleteCallback) {
|
||||
var nextFunction = send_next_rxfail_config;
|
||||
|
||||
var rxFailIndex = 0;
|
||||
|
||||
if (FC.RXFAIL_CONFIG.length == 0) {
|
||||
onCompleteCallback();
|
||||
} else {
|
||||
send_next_rxfail_config();
|
||||
}
|
||||
|
||||
function send_next_rxfail_config() {
|
||||
|
||||
var rxFail = FC.RXFAIL_CONFIG[rxFailIndex];
|
||||
|
||||
var buffer = [];
|
||||
buffer.push(rxFailIndex);
|
||||
buffer.push(rxFail.mode);
|
||||
buffer.push(BitHelper.lowByte(rxFail.value));
|
||||
buffer.push(BitHelper.highByte(rxFail.value));
|
||||
|
||||
// prepare for next iteration
|
||||
rxFailIndex++;
|
||||
if (rxFailIndex == FC.RXFAIL_CONFIG.length) {
|
||||
nextFunction = onCompleteCallback;
|
||||
|
||||
}
|
||||
MSP.send_message(MSPCodes.MSP_SET_RXFAIL_CONFIG, buffer, false, nextFunction);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {number}
|
||||
*/
|
||||
self.SERIAL_PORT_FUNCTIONSToMask = function (functions) {
|
||||
var mask = 0;
|
||||
for (var index = 0; index < functions.length; index++) {
|
||||
var key = functions[index];
|
||||
var bitIndex = mspHelper.SERIAL_PORT_FUNCTIONS[key];
|
||||
if (bitIndex >= 0) {
|
||||
mask = bit_set(mask, bitIndex);
|
||||
}
|
||||
}
|
||||
return mask;
|
||||
};
|
||||
|
||||
self.serialPortFunctionMaskToFunctions = function (functionMask) {
|
||||
var functions = [];
|
||||
|
||||
var keys = Object.keys(mspHelper.SERIAL_PORT_FUNCTIONS);
|
||||
for (var index = 0; index < keys.length; index++) {
|
||||
var key = keys[index];
|
||||
var bit = mspHelper.SERIAL_PORT_FUNCTIONS[key];
|
||||
if (bit_check(functionMask, bit)) {
|
||||
functions.push(key);
|
||||
}
|
||||
}
|
||||
return functions;
|
||||
};
|
||||
|
||||
self.sendServoMixRules = function (onCompleteCallback) {
|
||||
// TODO implement
|
||||
onCompleteCallback();
|
||||
|
@ -2979,7 +2874,7 @@ var mspHelper = (function () {
|
|||
MSP.send_message(MSPCodes.MSP2_INAV_TIMER_OUTPUT_MODE, false, false, callback);
|
||||
}
|
||||
|
||||
self.sendTimerOutputModes = function(onCompleteCallback) {
|
||||
self.sendTimerOutputModes = function(callback) {
|
||||
var nextFunction = send_next_output_mode;
|
||||
var idIndex = 0;
|
||||
|
||||
|
@ -3004,7 +2899,7 @@ var mspHelper = (function () {
|
|||
// prepare for next iteration
|
||||
idIndex++;
|
||||
if (idIndex == overrideIds.length) {
|
||||
nextFunction = onCompleteCallback;
|
||||
nextFunction = callback;
|
||||
|
||||
}
|
||||
MSP.send_message(MSPCodes.MSP2_INAV_SET_TIMER_OUTPUT_MODE, buffer, false, nextFunction);
|
||||
|
@ -3016,10 +2911,6 @@ var mspHelper = (function () {
|
|||
MSP.send_message(MSPCodes.MSPV2_BATTERY_CONFIG, false, false, callback);
|
||||
};
|
||||
|
||||
self.loadArmingConfig = function (callback) {
|
||||
MSP.send_message(MSPCodes.MSP_ARMING_CONFIG, false, false, callback);
|
||||
};
|
||||
|
||||
self.loadRxConfig = function (callback) {
|
||||
MSP.send_message(MSPCodes.MSP_RX_CONFIG, false, false, callback);
|
||||
};
|
||||
|
@ -3128,10 +3019,6 @@ var mspHelper = (function () {
|
|||
MSP.send_message(MSPCodes.MSP_SET_ACC_TRIM, mspHelper.crunch(MSPCodes.MSP_SET_ACC_TRIM), false, callback);
|
||||
};
|
||||
|
||||
self.saveArmingConfig = function (callback) {
|
||||
MSP.send_message(MSPCodes.MSP_SET_ARMING_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_ARMING_CONFIG), false, callback);
|
||||
};
|
||||
|
||||
self.saveRxConfig = function (callback) {
|
||||
MSP.send_message(MSPCodes.MSP_SET_RX_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_RX_CONFIG), false, callback);
|
||||
};
|
||||
|
@ -3148,14 +3035,6 @@ var mspHelper = (function () {
|
|||
MSP.send_message(MSPCodes.MSP_SET_NAV_POSHOLD, mspHelper.crunch(MSPCodes.MSP_SET_NAV_POSHOLD), false, callback);
|
||||
};
|
||||
|
||||
self.loadPositionEstimationConfig = function (callback) {
|
||||
MSP.send_message(MSPCodes.MSP_POSITION_ESTIMATION_CONFIG, false, false, callback);
|
||||
};
|
||||
|
||||
self.savePositionEstimationConfig = function (callback) {
|
||||
MSP.send_message(MSPCodes.MSP_SET_POSITION_ESTIMATION_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_POSITION_ESTIMATION_CONFIG), false, callback);
|
||||
};
|
||||
|
||||
self.loadCalibrationData = function (callback) {
|
||||
MSP.send_message(MSPCodes.MSP_CALIBRATION_DATA, false, false, callback);
|
||||
};
|
||||
|
@ -3251,6 +3130,37 @@ var mspHelper = (function () {
|
|||
};
|
||||
};
|
||||
|
||||
self.loadFwApproach = function (callback) {
|
||||
FW_APPROACH.flush();
|
||||
let id = 0;
|
||||
MSP.send_message(MSPCodes.MSP2_INAV_FW_APPROACH, [id], false, nextFwApproach);
|
||||
|
||||
function nextFwApproach() {
|
||||
id++;
|
||||
if (id < FW_APPROACH.getMaxFwApproachCount() - 1) {
|
||||
MSP.send_message(MSPCodes.MSP2_INAV_FW_APPROACH, [id], false, nextFwApproach);
|
||||
}
|
||||
else {
|
||||
MSP.send_message(MSPCodes.MSP2_INAV_FW_APPROACH, [id], false, callback);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
self.saveFwApproach = function (callback) {
|
||||
let id = 0;
|
||||
MSP.send_message(MSPCodes.MSP2_INAV_SET_FW_APPROACH, FW_APPROACH.extractBuffer(id), false, nextFwApproach);
|
||||
|
||||
function nextFwApproach() {
|
||||
id++;
|
||||
if (id < FW_APPROACH.getMaxFwApproachCount() - 1) {
|
||||
MSP.send_message(MSPCodes.MSP2_INAV_SET_FW_APPROACH, FW_APPROACH.extractBuffer(id), false, nextFwApproach);
|
||||
}
|
||||
else {
|
||||
MSP.send_message(MSPCodes.MSP2_INAV_SET_FW_APPROACH, FW_APPROACH.extractBuffer(id), false, callback);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
self._getSetting = function (name) {
|
||||
if (FC.SETTINGS[name]) {
|
||||
return Promise.resolve(FC.SETTINGS[name]);
|
||||
|
@ -3366,10 +3276,9 @@ var mspHelper = (function () {
|
|||
return this._getSetting(name).then(function (setting) {
|
||||
|
||||
if (!setting) {
|
||||
console.log("Setting invalid: " + name);
|
||||
return null;
|
||||
throw 'Invalid setting';
|
||||
}
|
||||
|
||||
|
||||
if (setting.table && !Number.isInteger(value)) {
|
||||
var found = false;
|
||||
for (var ii = 0; ii < setting.table.values.length; ii++) {
|
||||
|
@ -3417,11 +3326,10 @@ var mspHelper = (function () {
|
|||
|
||||
self.setSetting = function (name, value, callback) {
|
||||
this.encodeSetting(name, value).then(function (data) {
|
||||
if (data) {
|
||||
return MSP.promise(MSPCodes.MSPV2_SET_SETTING, data).then(callback);
|
||||
} else {
|
||||
return Promise.resolve().then(callback);
|
||||
}
|
||||
return MSP.promise(MSPCodes.MSPV2_SET_SETTING, data).then(callback);
|
||||
}).catch(error => {
|
||||
console.log("Invalid setting: " + name);
|
||||
return new Promise(callback);
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -3559,6 +3467,13 @@ var mspHelper = (function () {
|
|||
MSP.send_message(MSPCodes.MSP2_INAV_PROGRAMMING_PID_STATUS, false, false, callback);
|
||||
};
|
||||
|
||||
self.loadSerialPorts = function (callback) {
|
||||
MSP.send_message(MSPCodes.MSP2_CF_SERIAL_CONFIG, false, false, callback);
|
||||
};
|
||||
|
||||
self.saveSerialPorts = function (callback) {
|
||||
MSP.send_message(MSPCodes.MSP2_SET_CF_SERIAL_CONFIG, mspHelper.crunch(MSPCodes.MSP2_SET_CF_SERIAL_CONFIG), false, callback);
|
||||
};
|
||||
|
||||
return self;
|
||||
})();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue