mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-20 06:45:11 +03:00
msp cleanup
This commit is contained in:
parent
18a00dedf8
commit
9a5e3dbeae
7 changed files with 266 additions and 396 deletions
10
js/gui.js
10
js/gui.js
|
@ -345,5 +345,15 @@ GUI_control.prototype.content_ready = function (callback) {
|
|||
if (callback) callback();
|
||||
};
|
||||
|
||||
GUI_control.prototype.updateStatusBar = function() {
|
||||
$('span.i2c-error').text(CONFIG.i2cError);
|
||||
$('span.cycle-time').text(CONFIG.cycleTime);
|
||||
$('span.cpu-load').text(chrome.i18n.getMessage('statusbar_cpu_load', [CONFIG.cpuload]));
|
||||
};
|
||||
|
||||
GUI_control.prototype.updateProfileChange = function() {
|
||||
$('#profilechange').val(CONFIG.profile);
|
||||
};
|
||||
|
||||
// initialize object into GUI variable
|
||||
var GUI = new GUI_control();
|
||||
|
|
11
js/msp.js
11
js/msp.js
|
@ -87,7 +87,7 @@ var MSP = {
|
|||
case 6:
|
||||
if (this.message_checksum == data[i]) {
|
||||
// message received, process
|
||||
mspHelper.processData(this.code, this.message_buffer, this.message_length_expected);
|
||||
mspHelper.processData(this);
|
||||
} else {
|
||||
console.log('code: ' + this.code + ' - crc failed');
|
||||
|
||||
|
@ -109,12 +109,13 @@ var MSP = {
|
|||
|
||||
send_message: function (code, data, callback_sent, callback_msp) {
|
||||
var bufferOut,
|
||||
bufView;
|
||||
bufView,
|
||||
i;
|
||||
|
||||
// always reserve 6 bytes for protocol overhead !
|
||||
if (data) {
|
||||
var size = data.length + 6,
|
||||
checksum = 0;
|
||||
checksum;
|
||||
|
||||
bufferOut = new ArrayBuffer(size);
|
||||
bufView = new Uint8Array(bufferOut);
|
||||
|
@ -127,7 +128,7 @@ var MSP = {
|
|||
|
||||
checksum = bufView[3] ^ bufView[4];
|
||||
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
for (i = 0; i < data.length; i++) {
|
||||
bufView[i + 5] = data[i];
|
||||
|
||||
checksum ^= bufView[i + 5];
|
||||
|
@ -152,7 +153,7 @@ var MSP = {
|
|||
var obj = {'code': code, 'requestBuffer': bufferOut, 'callback': (callback_msp) ? callback_msp : false, 'timer': false};
|
||||
|
||||
var requestExists = false;
|
||||
for (var i = 0; i < MSP.callbacks.length; i++) {
|
||||
for (i = 0; i < MSP.callbacks.length; i++) {
|
||||
if (i < MSP.callbacks.length) {
|
||||
if (MSP.callbacks[i].code == code) {
|
||||
// request already exist, we will just attach
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
'use strict'
|
||||
/*global $, SERVO_DATA, PID_names, ADJUSTMENT_RANGES, RXFAIL_CONFIG, SERVO_CONFIG*/
|
||||
'use strict';
|
||||
|
||||
var mspHelper = (function () {
|
||||
var mspHelper = (function (gui) {
|
||||
var self = {};
|
||||
|
||||
self.BAUD_RATES = [
|
||||
|
@ -11,8 +12,8 @@ var mspHelper = (function () {
|
|||
'57600',
|
||||
'115200',
|
||||
'230400',
|
||||
'250000',
|
||||
]
|
||||
'250000'
|
||||
];
|
||||
|
||||
self.SERIAL_PORT_FUNCTIONS = {
|
||||
'MSP': 0,
|
||||
|
@ -24,13 +25,20 @@ var mspHelper = (function () {
|
|||
'RX_SERIAL': 6,
|
||||
'BLACKBOX': 7,
|
||||
'TELEMETRY_MAVLINK': 8,
|
||||
'TELEMETRY_IBUS': 9,
|
||||
}
|
||||
'TELEMETRY_IBUS': 9
|
||||
};
|
||||
|
||||
self.processData: function (code, message_buffer, message_length) {
|
||||
var data = new DataView(message_buffer, 0); // DataView (allowing us to view arrayBuffer as struct/union)
|
||||
/**
|
||||
*
|
||||
* @param {MSP} dataHandler
|
||||
*/
|
||||
self.processData = function (dataHandler) {
|
||||
var data = new DataView(dataHandler.message_buffer, 0), // DataView (allowing us to view arrayBuffer as struct/union)
|
||||
offset = 0,
|
||||
needle = 0,
|
||||
i = 0;
|
||||
|
||||
if (!this.unsupported) switch (code) {
|
||||
if (!dataHandler.unsupported) switch (dataHandler.code) {
|
||||
case MSPCodes.MSP_IDENT:
|
||||
console.log('Using deprecated msp command: MSP_IDENT');
|
||||
// Deprecated
|
||||
|
@ -45,11 +53,9 @@ var mspHelper = (function () {
|
|||
CONFIG.activeSensors = data.getUint16(4, 1);
|
||||
CONFIG.mode = data.getUint32(6, 1);
|
||||
CONFIG.profile = data.getUint8(10);
|
||||
$('select[name="profilechange"]').val(CONFIG.profile);
|
||||
|
||||
gui.updateProfileChange();
|
||||
gui.updateStatusBar();
|
||||
sensor_status(CONFIG.activeSensors);
|
||||
$('span.i2c-error').text(CONFIG.i2cError);
|
||||
$('span.cycle-time').text(CONFIG.cycleTime);
|
||||
break;
|
||||
case MSPCodes.MSP_STATUS_EX:
|
||||
CONFIG.cycleTime = data.getUint16(0, 1);
|
||||
|
@ -60,9 +66,7 @@ var mspHelper = (function () {
|
|||
CONFIG.cpuload = data.getUint16(11, 1);
|
||||
|
||||
sensor_status(CONFIG.activeSensors);
|
||||
$('span.i2c-error').text(CONFIG.i2cError);
|
||||
$('span.cycle-time').text(CONFIG.cycleTime);
|
||||
$('span.cpu-load').text(chrome.i18n.getMessage('statusbar_cpu_load', [CONFIG.cpuload]));
|
||||
gui.updateStatusBar();
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_RAW_IMU:
|
||||
|
@ -83,27 +87,25 @@ var mspHelper = (function () {
|
|||
SENSOR_DATA.magnetometer[2] = data.getInt16(16, 1) / 1090;
|
||||
break;
|
||||
case MSPCodes.MSP_SERVO:
|
||||
var servoCount = message_length / 2;
|
||||
var needle = 0;
|
||||
for (var i = 0; i < servoCount; i++) {
|
||||
var servoCount = dataHandler.message_length_expected / 2;
|
||||
for (i = 0; i < servoCount; i++) {
|
||||
SERVO_DATA[i] = data.getUint16(needle, 1);
|
||||
|
||||
needle += 2;
|
||||
}
|
||||
break;
|
||||
case MSPCodes.MSP_MOTOR:
|
||||
var motorCount = message_length / 2;
|
||||
var needle = 0;
|
||||
for (var i = 0; i < motorCount; i++) {
|
||||
var motorCount = dataHandler.message_length_expected / 2;
|
||||
for (i = 0; i < motorCount; i++) {
|
||||
MOTOR_DATA[i] = data.getUint16(needle, 1);
|
||||
|
||||
needle += 2;
|
||||
}
|
||||
break;
|
||||
case MSPCodes.MSP_RC:
|
||||
RC.active_channels = message_length / 2;
|
||||
RC.active_channels = dataHandler.message_length_expected / 2;
|
||||
|
||||
for (var i = 0; i < RC.active_channels; i++) {
|
||||
for (i = 0; i < RC.active_channels; i++) {
|
||||
RC.channels[i] = data.getUint16((i * 2), 1);
|
||||
}
|
||||
break;
|
||||
|
@ -147,18 +149,12 @@ var mspHelper = (function () {
|
|||
ANALOG.mAhdrawn = data.getUint16(1, 1);
|
||||
ANALOG.rssi = data.getUint16(3, 1); // 0-1023
|
||||
ANALOG.amperage = data.getInt16(5, 1) / 100; // A
|
||||
this.analog_last_received_timestamp = Date.now();
|
||||
dataHandler.analog_last_received_timestamp = Date.now();
|
||||
break;
|
||||
case MSPCodes.MSP_RC_TUNING:
|
||||
var offset = 0;
|
||||
RC_tuning.RC_RATE = parseFloat((data.getUint8(offset++) / 100).toFixed(2));
|
||||
RC_tuning.RC_EXPO = parseFloat((data.getUint8(offset++) / 100).toFixed(2));
|
||||
if (semver.lt(CONFIG.apiVersion, "1.7.0")) {
|
||||
RC_tuning.roll_pitch_rate = parseFloat((data.getUint8(offset++) / 100).toFixed(2));
|
||||
RC_tuning.pitch_rate = 0;
|
||||
RC_tuning.roll_rate = 0;
|
||||
RC_tuning.yaw_rate = parseFloat((data.getUint8(offset++) / 100).toFixed(2));
|
||||
} else if (FC.isRatesInDps()) {
|
||||
if (FC.isRatesInDps()) {
|
||||
RC_tuning.roll_pitch_rate = 0;
|
||||
RC_tuning.roll_rate = parseFloat((data.getUint8(offset++) * 10));
|
||||
RC_tuning.pitch_rate = parseFloat((data.getUint8(offset++) * 10));
|
||||
|
@ -173,50 +169,26 @@ var mspHelper = (function () {
|
|||
RC_tuning.dynamic_THR_PID = parseInt(data.getUint8(offset++));
|
||||
RC_tuning.throttle_MID = parseFloat((data.getUint8(offset++) / 100).toFixed(2));
|
||||
RC_tuning.throttle_EXPO = parseFloat((data.getUint8(offset++) / 100).toFixed(2));
|
||||
if (semver.gte(CONFIG.apiVersion, "1.7.0")) {
|
||||
RC_tuning.dynamic_THR_breakpoint = data.getUint16(offset, 1);
|
||||
offset += 2;
|
||||
} else {
|
||||
RC_tuning.dynamic_THR_breakpoint = 0;
|
||||
}
|
||||
if (semver.gte(CONFIG.apiVersion, "1.10.0")) {
|
||||
RC_tuning.RC_YAW_EXPO = parseFloat((data.getUint8(offset++) / 100).toFixed(2));
|
||||
} else {
|
||||
RC_tuning.RC_YAW_EXPO = 0;
|
||||
}
|
||||
break;
|
||||
case MSPCodes.MSP_PID:
|
||||
// PID data arrived, we need to scale it and save to appropriate bank / array
|
||||
for (var i = 0, needle = 0; i < (message_length / 3); i++, needle += 3) {
|
||||
for (i = 0, needle = 0; i < (dataHandler.message_length_expected / 3); i++, needle += 3) {
|
||||
PIDs[i][0] = data.getUint8(needle);
|
||||
PIDs[i][1] = data.getUint8(needle + 1);
|
||||
PIDs[i][2] = data.getUint8(needle + 2);
|
||||
}
|
||||
break;
|
||||
// Disabled, cleanflight does not use MSP_BOX.
|
||||
/*
|
||||
case MSPCodes.MSP_BOX:
|
||||
AUX_CONFIG_values = []; // empty the array as new data is coming in
|
||||
|
||||
// fill in current data
|
||||
for (var i = 0; i < data.byteLength; i += 2) { // + 2 because uint16_t = 2 bytes
|
||||
AUX_CONFIG_values.push(data.getUint16(i, 1));
|
||||
}
|
||||
break;
|
||||
*/
|
||||
case MSPCodes.MSP_ARMING_CONFIG:
|
||||
if (semver.gte(CONFIG.apiVersion, "1.8.0")) {
|
||||
ARMING_CONFIG.auto_disarm_delay = data.getUint8(0, 1);
|
||||
ARMING_CONFIG.disarm_kill_switch = data.getUint8(1);
|
||||
}
|
||||
break;
|
||||
case MSPCodes.MSP_LOOP_TIME:
|
||||
if (semver.gte(CONFIG.apiVersion, "1.8.0")) {
|
||||
FC_CONFIG.loopTime = data.getInt16(0, 1);
|
||||
}
|
||||
break;
|
||||
case MSPCodes.MSP_MISC: // 22 bytes
|
||||
var offset = 0;
|
||||
MISC.midrc = data.getInt16(offset, 1);
|
||||
offset += 2;
|
||||
MISC.minthrottle = data.getUint16(offset, 1); // 0-2000
|
||||
|
@ -241,7 +213,6 @@ var mspHelper = (function () {
|
|||
MISC.vbatwarningcellvoltage = data.getUint8(offset++, 1) / 10; // 10-50
|
||||
break;
|
||||
case MSPCodes.MSP_3D:
|
||||
var offset = 0;
|
||||
_3D.deadband3d_low = data.getUint16(offset, 1);
|
||||
offset += 2;
|
||||
_3D.deadband3d_high = data.getUint16(offset, 1);
|
||||
|
@ -257,10 +228,11 @@ var mspHelper = (function () {
|
|||
console.log(data);
|
||||
break;
|
||||
case MSPCodes.MSP_BOXNAMES:
|
||||
//noinspection JSUndeclaredVariable
|
||||
AUX_CONFIG = []; // empty the array as new data is coming in
|
||||
|
||||
var buff = [];
|
||||
for (var i = 0; i < data.byteLength; i++) {
|
||||
for (i = 0; i < data.byteLength; i++) {
|
||||
if (data.getUint8(i) == 0x3B) { // ; (delimeter char)
|
||||
AUX_CONFIG.push(String.fromCharCode.apply(null, buff)); // convert bytes into ASCII and save as strings
|
||||
|
||||
|
@ -272,11 +244,12 @@ var mspHelper = (function () {
|
|||
}
|
||||
break;
|
||||
case MSPCodes.MSP_PIDNAMES:
|
||||
//noinspection JSUndeclaredVariable
|
||||
PID_names = []; // empty the array as new data is coming in
|
||||
|
||||
var buff = [];
|
||||
for (var i = 0; i < data.byteLength; i++) {
|
||||
if (data.getUint8(i) == 0x3B) { // ; (delimeter char)
|
||||
for (i = 0; i < data.byteLength; i++) {
|
||||
if (data.getUint8(i) == 0x3B) { // ; (delimiter char)
|
||||
PID_names.push(String.fromCharCode.apply(null, buff)); // convert bytes into ASCII and save as strings
|
||||
|
||||
// empty buffer
|
||||
|
@ -290,9 +263,10 @@ var mspHelper = (function () {
|
|||
console.log(data);
|
||||
break;
|
||||
case MSPCodes.MSP_BOXIDS:
|
||||
//noinspection JSUndeclaredVariable
|
||||
AUX_CONFIG_IDS = []; // empty the array as new data is coming in
|
||||
|
||||
for (var i = 0; i < data.byteLength; i++) {
|
||||
for (i = 0; i < data.byteLength; i++) {
|
||||
AUX_CONFIG_IDS.push(data.getUint8(i));
|
||||
}
|
||||
break;
|
||||
|
@ -300,11 +274,11 @@ var mspHelper = (function () {
|
|||
break;
|
||||
|
||||
case MSPCodes.MSP_SERVO_CONFIGURATIONS:
|
||||
//noinspection JSUndeclaredVariable
|
||||
SERVO_CONFIG = []; // empty the array as new data is coming in
|
||||
|
||||
if (semver.gte(CONFIG.apiVersion, "1.12.0")) {
|
||||
if (data.byteLength % 14 == 0) {
|
||||
for (var i = 0; i < data.byteLength; i += 14) {
|
||||
for (i = 0; i < data.byteLength; i += 14) {
|
||||
var arr = {
|
||||
'min': data.getInt16(i + 0, 1),
|
||||
'max': data.getInt16(i + 2, 1),
|
||||
|
@ -319,40 +293,13 @@ var mspHelper = (function () {
|
|||
SERVO_CONFIG.push(arr);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (data.byteLength % 7 == 0) {
|
||||
for (var i = 0; i < data.byteLength; i += 7) {
|
||||
var arr = {
|
||||
'min': data.getInt16(i + 0, 1),
|
||||
'max': data.getInt16(i + 2, 1),
|
||||
'middle': data.getInt16(i + 4, 1),
|
||||
'rate': data.getInt8(i + 6),
|
||||
'angleAtMin': 45,
|
||||
'angleAtMax': 45,
|
||||
'indexOfChannelToForward': undefined,
|
||||
'reversedInputSources': 0
|
||||
};
|
||||
|
||||
SERVO_CONFIG.push(arr);
|
||||
}
|
||||
}
|
||||
|
||||
if (semver.eq(CONFIG.apiVersion, '1.10.0')) {
|
||||
// drop two unused servo configurations due to MSP rx buffer to small)
|
||||
while (SERVO_CONFIG.length > 8) {
|
||||
SERVO_CONFIG.pop();
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MSPCodes.MSP_RC_DEADBAND:
|
||||
var offset = 0;
|
||||
RC_deadband.deadband = data.getUint8(offset++, 1);
|
||||
RC_deadband.yaw_deadband = data.getUint8(offset++, 1);
|
||||
RC_deadband.alt_hold_deadband = data.getUint8(offset++, 1);
|
||||
break;
|
||||
case MSPCodes.MSP_SENSOR_ALIGNMENT:
|
||||
var offset = 0;
|
||||
SENSOR_ALIGNMENT.align_gyro = data.getUint8(offset++, 1);
|
||||
SENSOR_ALIGNMENT.align_acc = data.getUint8(offset++, 1);
|
||||
SENSOR_ALIGNMENT.align_mag = data.getUint8(offset++, 1);
|
||||
|
@ -364,16 +311,11 @@ var mspHelper = (function () {
|
|||
case MSPCodes.MSP_SET_PID:
|
||||
console.log('PID settings saved');
|
||||
break;
|
||||
/*
|
||||
case MSPCodes.MSP_SET_BOX:
|
||||
console.log('AUX Configuration saved');
|
||||
break;
|
||||
*/
|
||||
case MSPCodes.MSP_SET_RC_TUNING:
|
||||
console.log('RC Tuning saved');
|
||||
break;
|
||||
case MSPCodes.MSP_ACC_CALIBRATION:
|
||||
console.log('Accel calibration executed');
|
||||
console.log('Accelerometer calibration executed');
|
||||
break;
|
||||
case MSPCodes.MSP_MAG_CALIBRATION:
|
||||
console.log('Mag calibration executed');
|
||||
|
@ -396,7 +338,7 @@ var mspHelper = (function () {
|
|||
case MSPCodes.MSP_DEBUGMSG:
|
||||
break;
|
||||
case MSPCodes.MSP_DEBUG:
|
||||
for (var i = 0; i < 4; i++)
|
||||
for (i = 0; i < 4; i++)
|
||||
SENSOR_DATA.debug[i] = data.getInt16((2 * i), 1);
|
||||
break;
|
||||
case MSPCodes.MSP_SET_MOTOR:
|
||||
|
@ -417,9 +359,10 @@ var mspHelper = (function () {
|
|||
break;
|
||||
// Additional private MSP for baseflight configurator
|
||||
case MSPCodes.MSP_RX_MAP:
|
||||
//noinspection JSUndeclaredVariable
|
||||
RC_MAP = []; // empty the array as new data is coming in
|
||||
|
||||
for (var i = 0; i < data.byteLength; i++) {
|
||||
for (i = 0; i < data.byteLength; i++) {
|
||||
RC_MAP.push(data.getUint8(i));
|
||||
}
|
||||
break;
|
||||
|
@ -447,14 +390,12 @@ var mspHelper = (function () {
|
|||
//
|
||||
|
||||
case MSPCodes.MSP_API_VERSION:
|
||||
var offset = 0;
|
||||
CONFIG.mspProtocolVersion = data.getUint8(offset++);
|
||||
CONFIG.apiVersion = data.getUint8(offset++) + '.' + data.getUint8(offset++) + '.0';
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_FC_VARIANT:
|
||||
var identifier = '';
|
||||
var offset;
|
||||
for (offset = 0; offset < 4; offset++) {
|
||||
identifier += String.fromCharCode(data.getUint8(offset));
|
||||
}
|
||||
|
@ -462,22 +403,19 @@ var mspHelper = (function () {
|
|||
break;
|
||||
|
||||
case MSPCodes.MSP_FC_VERSION:
|
||||
var offset = 0;
|
||||
CONFIG.flightControllerVersion = data.getUint8(offset++) + '.' + data.getUint8(offset++) + '.' + data.getUint8(offset++);
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_BUILD_INFO:
|
||||
var offset = 0;
|
||||
|
||||
var dateLength = 11;
|
||||
var buff = [];
|
||||
for (var i = 0; i < dateLength; i++) {
|
||||
for (i = 0; i < dateLength; i++) {
|
||||
buff.push(data.getUint8(offset++));
|
||||
}
|
||||
buff.push(32); // ascii space
|
||||
|
||||
var timeLength = 8;
|
||||
for (var i = 0; i < timeLength; i++) {
|
||||
for (i = 0; i < timeLength; i++) {
|
||||
buff.push(data.getUint8(offset++));
|
||||
}
|
||||
CONFIG.buildInfo = String.fromCharCode.apply(null, buff);
|
||||
|
@ -485,13 +423,12 @@ var mspHelper = (function () {
|
|||
|
||||
case MSPCodes.MSP_BOARD_INFO:
|
||||
var identifier = '';
|
||||
var offset;
|
||||
for (offset = 0; offset < 4; offset++) {
|
||||
identifier += String.fromCharCode(data.getUint8(offset));
|
||||
}
|
||||
CONFIG.boardIdentifier = identifier;
|
||||
CONFIG.boardVersion = data.getUint16(offset, 1);
|
||||
offset+=2;
|
||||
offset += 2;
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_CHANNEL_FORWARDING:
|
||||
|
@ -499,33 +436,11 @@ var mspHelper = (function () {
|
|||
break;
|
||||
|
||||
case MSPCodes.MSP_CF_SERIAL_CONFIG:
|
||||
|
||||
if (semver.lt(CONFIG.apiVersion, "1.6.0")) {
|
||||
SERIAL_CONFIG.ports = [];
|
||||
var offset = 0;
|
||||
var serialPortCount = (data.byteLength - (4 * 4)) / 2;
|
||||
for (var i = 0; i < serialPortCount; i++) {
|
||||
var serialPort = {
|
||||
identifier: data.getUint8(offset++, 1),
|
||||
scenario: data.getUint8(offset++, 1)
|
||||
}
|
||||
SERIAL_CONFIG.ports.push(serialPort);
|
||||
}
|
||||
SERIAL_CONFIG.mspBaudRate = data.getUint32(offset, 1);
|
||||
offset+= 4;
|
||||
SERIAL_CONFIG.cliBaudRate = data.getUint32(offset, 1);
|
||||
offset+= 4;
|
||||
SERIAL_CONFIG.gpsBaudRate = data.getUint32(offset, 1);
|
||||
offset+= 4;
|
||||
SERIAL_CONFIG.gpsPassthroughBaudRate = data.getUint32(offset, 1);
|
||||
offset+= 4;
|
||||
} else {
|
||||
SERIAL_CONFIG.ports = [];
|
||||
var offset = 0;
|
||||
var bytesPerPort = 1 + 2 + (1 * 4);
|
||||
var bytesPerPort = 1 + 2 + 4;
|
||||
var serialPortCount = data.byteLength / bytesPerPort;
|
||||
|
||||
for (var i = 0; i < serialPortCount; i++) {
|
||||
for (i = 0; i < serialPortCount; i++) {
|
||||
var serialPort = {
|
||||
identifier: data.getUint8(offset, 1),
|
||||
functions: mspHelper.serialPortFunctionMaskToFunctions(data.getUint16(offset + 1, 1)),
|
||||
|
@ -533,12 +448,11 @@ var mspHelper = (function () {
|
|||
gps_baudrate: mspHelper.BAUD_RATES[data.getUint8(offset + 4, 1)],
|
||||
telemetry_baudrate: mspHelper.BAUD_RATES[data.getUint8(offset + 5, 1)],
|
||||
blackbox_baudrate: mspHelper.BAUD_RATES[data.getUint8(offset + 6, 1)]
|
||||
}
|
||||
};
|
||||
|
||||
offset += bytesPerPort;
|
||||
SERIAL_CONFIG.ports.push(serialPort);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_CF_SERIAL_CONFIG:
|
||||
|
@ -546,12 +460,12 @@ var mspHelper = (function () {
|
|||
break;
|
||||
|
||||
case MSPCodes.MSP_MODE_RANGES:
|
||||
//noinspection JSUndeclaredVariable
|
||||
MODE_RANGES = []; // empty the array as new data is coming in
|
||||
|
||||
var modeRangeCount = data.byteLength / 4; // 4 bytes per item.
|
||||
|
||||
var offset = 0;
|
||||
for (var i = 0; offset < data.byteLength && i < modeRangeCount; i++) {
|
||||
for (i = 0; offset < data.byteLength && i < modeRangeCount; i++) {
|
||||
var modeRange = {
|
||||
id: data.getUint8(offset++, 1),
|
||||
auxChannelIndex: data.getUint8(offset++, 1),
|
||||
|
@ -565,12 +479,12 @@ var mspHelper = (function () {
|
|||
break;
|
||||
|
||||
case MSPCodes.MSP_ADJUSTMENT_RANGES:
|
||||
//noinspection JSUndeclaredVariable
|
||||
ADJUSTMENT_RANGES = []; // empty the array as new data is coming in
|
||||
|
||||
var adjustmentRangeCount = data.byteLength / 6; // 6 bytes per item.
|
||||
|
||||
var offset = 0;
|
||||
for (var i = 0; offset < data.byteLength && i < adjustmentRangeCount; i++) {
|
||||
for (i = 0; offset < data.byteLength && i < adjustmentRangeCount; i++) {
|
||||
var adjustmentRange = {
|
||||
slotIndex: data.getUint8(offset++, 1),
|
||||
auxChannelIndex: data.getUint8(offset++, 1),
|
||||
|
@ -586,7 +500,7 @@ var mspHelper = (function () {
|
|||
break;
|
||||
|
||||
case MSPCodes.MSP_CHANNEL_FORWARDING:
|
||||
for (var i = 0; i < data.byteLength && i < SERVO_CONFIG.length; i ++) {
|
||||
for (i = 0; i < data.byteLength && i < SERVO_CONFIG.length; i++) {
|
||||
var channelIndex = data.getUint8(i);
|
||||
if (channelIndex < 255) {
|
||||
SERVO_CONFIG[i].indexOfChannelToForward = channelIndex;
|
||||
|
@ -597,7 +511,6 @@ var mspHelper = (function () {
|
|||
break;
|
||||
|
||||
case MSPCodes.MSP_RX_CONFIG:
|
||||
var offset = 0;
|
||||
RX_CONFIG.serialrx_provider = data.getUint8(offset, 1);
|
||||
offset++;
|
||||
RX_CONFIG.maxcheck = data.getUint16(offset, 1);
|
||||
|
@ -622,7 +535,6 @@ var mspHelper = (function () {
|
|||
break;
|
||||
|
||||
case MSPCodes.MSP_FAILSAFE_CONFIG:
|
||||
var offset = 0;
|
||||
FAILSAFE_CONFIG.failsafe_delay = data.getUint8(offset, 1);
|
||||
offset++;
|
||||
FAILSAFE_CONFIG.failsafe_off_delay = data.getUint8(offset, 1);
|
||||
|
@ -640,12 +552,12 @@ var mspHelper = (function () {
|
|||
break;
|
||||
|
||||
case MSPCodes.MSP_RXFAIL_CONFIG:
|
||||
//noinspection JSUndeclaredVariable
|
||||
RXFAIL_CONFIG = []; // empty the array as new data is coming in
|
||||
|
||||
var channelCount = data.byteLength / 3;
|
||||
|
||||
var offset = 0;
|
||||
for (var i = 0; offset < data.byteLength && i < channelCount; i++, offset++) {
|
||||
for (i = 0; offset < data.byteLength && i < channelCount; i++, offset++) {
|
||||
var rxfailChannel = {
|
||||
mode: data.getUint8(offset++, 1),
|
||||
value: data.getUint16(offset++, 1)
|
||||
|
@ -656,14 +568,14 @@ var mspHelper = (function () {
|
|||
|
||||
|
||||
case MSPCodes.MSP_LED_STRIP_CONFIG:
|
||||
//noinspection JSUndeclaredVariable
|
||||
LED_STRIP = [];
|
||||
|
||||
var ledCount = data.byteLength / 7; // v1.4.0 and below incorrectly reported 4 bytes per led.
|
||||
if (semver.gte(CONFIG.apiVersion, "1.20.0"))
|
||||
ledCount = data.byteLength / 4;
|
||||
|
||||
var offset = 0;
|
||||
for (var i = 0; offset < data.byteLength && i < ledCount; i++) {
|
||||
for (i = 0; offset < data.byteLength && i < ledCount; i++) {
|
||||
|
||||
if (semver.lt(CONFIG.apiVersion, "1.20.0")) {
|
||||
var directionMask = data.getUint16(offset, 1);
|
||||
|
@ -697,7 +609,7 @@ var mspHelper = (function () {
|
|||
LED_STRIP.push(led);
|
||||
} else {
|
||||
var mask = data.getUint32(offset, 1);
|
||||
offset +=4;
|
||||
offset += 4;
|
||||
|
||||
var functionId = (mask >> 8) & 0xF;
|
||||
var functions = [];
|
||||
|
@ -740,12 +652,12 @@ var mspHelper = (function () {
|
|||
break;
|
||||
case MSPCodes.MSP_LED_COLORS:
|
||||
|
||||
//noinspection JSUndeclaredVariable
|
||||
LED_COLORS = [];
|
||||
|
||||
var colorCount = data.byteLength / 4;
|
||||
|
||||
var offset = 0;
|
||||
for (var i = 0; offset < data.byteLength && i < colorCount; i++) {
|
||||
for (i = 0; offset < data.byteLength && i < colorCount; i++) {
|
||||
|
||||
var h = data.getUint16(offset, 1);
|
||||
var s = data.getUint8(offset + 2, 1);
|
||||
|
@ -768,12 +680,12 @@ var mspHelper = (function () {
|
|||
case MSPCodes.MSP_LED_STRIP_MODECOLOR:
|
||||
if (semver.gte(CONFIG.apiVersion, "1.19.0")) {
|
||||
|
||||
//noinspection JSUndeclaredVariable
|
||||
LED_MODE_COLORS = [];
|
||||
|
||||
var colorCount = data.byteLength / 3;
|
||||
|
||||
var offset = 0;
|
||||
for (var i = 0; offset < data.byteLength && i < colorCount; i++) {
|
||||
for (i = 0; offset < data.byteLength && i < colorCount; i++) {
|
||||
|
||||
var mode = data.getUint8(offset++, 1);
|
||||
var direction = data.getUint8(offset++, 1);
|
||||
|
@ -793,12 +705,9 @@ var mspHelper = (function () {
|
|||
console.log('Led strip mode colors saved');
|
||||
break;
|
||||
|
||||
|
||||
|
||||
case MSPCodes.MSP_DATAFLASH_SUMMARY:
|
||||
if (data.byteLength >= 13) {
|
||||
var
|
||||
flags = data.getUint8(0);
|
||||
var flags = data.getUint8(0);
|
||||
DATAFLASH.ready = (flags & 1) != 0;
|
||||
DATAFLASH.supported = (flags & 2) != 0 || DATAFLASH.ready;
|
||||
DATAFLASH.sectors = data.getUint32(1, 1);
|
||||
|
@ -839,11 +748,10 @@ var mspHelper = (function () {
|
|||
console.log("Blackbox config saved");
|
||||
break;
|
||||
case MSPCodes.MSP_TRANSPONDER_CONFIG:
|
||||
var offset = 0;
|
||||
TRANSPONDER.supported = (data.getUint8(offset++) & 1) != 0;
|
||||
TRANSPONDER.data = [];
|
||||
var bytesRemaining = data.byteLength - offset;
|
||||
for (var i = 0; i < bytesRemaining; i++) {
|
||||
for (i = 0; i < bytesRemaining; i++) {
|
||||
TRANSPONDER.data.push(data.getUint8(offset++));
|
||||
}
|
||||
break;
|
||||
|
@ -852,7 +760,6 @@ var mspHelper = (function () {
|
|||
break;
|
||||
|
||||
case MSPCodes.MSP_ADVANCED_CONFIG:
|
||||
var offset = 0;
|
||||
ADVANCED_CONFIG.gyroSyncDenominator = data.getUint8(offset, 1);
|
||||
offset++;
|
||||
ADVANCED_CONFIG.pidProcessDenom = data.getUint8(offset, 1);
|
||||
|
@ -953,33 +860,34 @@ var mspHelper = (function () {
|
|||
case MSPCodes.MSP_OSD_CONFIG:
|
||||
break;
|
||||
default:
|
||||
console.log('Unknown code detected: ' + code);
|
||||
console.log('Unknown code detected: ' + dataHandler.code);
|
||||
} else {
|
||||
console.log('FC reports unsupported message error: ' + code);
|
||||
console.log('FC reports unsupported message error: ' + dataHandler.code);
|
||||
}
|
||||
|
||||
// trigger callbacks, cleanup/remove callback after trigger
|
||||
for (var i = this.callbacks.length - 1; i >= 0; i--) { // itterating in reverse because we use .splice which modifies array length
|
||||
if (i < this.callbacks.length) {
|
||||
if (this.callbacks[i].code == code) {
|
||||
for (i = dataHandler.callbacks.length - 1; i >= 0; i--) { // iterating in reverse because we use .splice which modifies array length
|
||||
if (i < dataHandler.callbacks.length) {
|
||||
if (dataHandler.callbacks[i].code == dataHandler.code) {
|
||||
// save callback reference
|
||||
var callback = this.callbacks[i].callback;
|
||||
var callback = dataHandler.callbacks[i].callback;
|
||||
|
||||
// remove timeout
|
||||
clearInterval(this.callbacks[i].timer);
|
||||
clearInterval(dataHandler.callbacks[i].timer);
|
||||
|
||||
// remove object from array
|
||||
this.callbacks.splice(i, 1);
|
||||
dataHandler.callbacks.splice(i, 1);
|
||||
|
||||
// fire callback
|
||||
if (callback) callback({'command': code, 'data': data, 'length': message_length});
|
||||
}
|
||||
if (callback) callback({'command': dataHandler.code, 'data': data, 'length': dataHandler.message_length_expected});
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
self.crunch: function (code) {
|
||||
var buffer = [];
|
||||
self.crunch = function (code) {
|
||||
var buffer = [],
|
||||
i;
|
||||
|
||||
switch (code) {
|
||||
case MSPCodes.MSP_SET_BF_CONFIG:
|
||||
|
@ -1001,7 +909,7 @@ var mspHelper = (function () {
|
|||
buffer.push(highByte(BF_CONFIG.currentoffset));
|
||||
break;
|
||||
case MSPCodes.MSP_SET_PID:
|
||||
for (var i = 0; i < PIDs.length; i++) {
|
||||
for (i = 0; i < PIDs.length; i++) {
|
||||
buffer.push(parseInt(PIDs[i][0]));
|
||||
buffer.push(parseInt(PIDs[i][1]));
|
||||
buffer.push(parseInt(PIDs[i][2]));
|
||||
|
@ -1034,17 +942,9 @@ var mspHelper = (function () {
|
|||
buffer.push(Math.round(RC_tuning.RC_YAW_EXPO * 100));
|
||||
}
|
||||
break;
|
||||
// Disabled, cleanflight does not use MSP_SET_BOX.
|
||||
/*
|
||||
case MSPCodes.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 MSPCodes.MSP_SET_RX_MAP:
|
||||
for (var i = 0; i < RC_MAP.length; i++) {
|
||||
for (i = 0; i < RC_MAP.length; i++) {
|
||||
buffer.push(RC_MAP[i]);
|
||||
}
|
||||
break;
|
||||
|
@ -1127,13 +1027,13 @@ var mspHelper = (function () {
|
|||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_TRANSPONDER_CONFIG:
|
||||
for (var i = 0; i < TRANSPONDER.data.length; i++) {
|
||||
for (i = 0; i < TRANSPONDER.data.length; i++) {
|
||||
buffer.push(TRANSPONDER.data[i]);
|
||||
}
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_CHANNEL_FORWARDING:
|
||||
for (var i = 0; i < SERVO_CONFIG.length; i++) {
|
||||
for (i = 0; i < SERVO_CONFIG.length; i++) {
|
||||
var out = SERVO_CONFIG[i].indexOfChannelToForward;
|
||||
if (out == undefined) {
|
||||
out = 255; // Cleanflight defines "CHANNEL_FORWARDING_DISABLED" as "(uint8_t)0xFF"
|
||||
|
@ -1142,32 +1042,7 @@ var mspHelper = (function () {
|
|||
}
|
||||
break;
|
||||
case MSPCodes.MSP_SET_CF_SERIAL_CONFIG:
|
||||
if (semver.lt(CONFIG.apiVersion, "1.6.0")) {
|
||||
|
||||
for (var i = 0; i < SERIAL_CONFIG.ports.length; i++) {
|
||||
buffer.push(SERIAL_CONFIG.ports[i].scenario);
|
||||
}
|
||||
buffer.push(specificByte(SERIAL_CONFIG.mspBaudRate, 0));
|
||||
buffer.push(specificByte(SERIAL_CONFIG.mspBaudRate, 1));
|
||||
buffer.push(specificByte(SERIAL_CONFIG.mspBaudRate, 2));
|
||||
buffer.push(specificByte(SERIAL_CONFIG.mspBaudRate, 3));
|
||||
|
||||
buffer.push(specificByte(SERIAL_CONFIG.cliBaudRate, 0));
|
||||
buffer.push(specificByte(SERIAL_CONFIG.cliBaudRate, 1));
|
||||
buffer.push(specificByte(SERIAL_CONFIG.cliBaudRate, 2));
|
||||
buffer.push(specificByte(SERIAL_CONFIG.cliBaudRate, 3));
|
||||
|
||||
buffer.push(specificByte(SERIAL_CONFIG.gpsBaudRate, 0));
|
||||
buffer.push(specificByte(SERIAL_CONFIG.gpsBaudRate, 1));
|
||||
buffer.push(specificByte(SERIAL_CONFIG.gpsBaudRate, 2));
|
||||
buffer.push(specificByte(SERIAL_CONFIG.gpsBaudRate, 3));
|
||||
|
||||
buffer.push(specificByte(SERIAL_CONFIG.gpsPassthroughBaudRate, 0));
|
||||
buffer.push(specificByte(SERIAL_CONFIG.gpsPassthroughBaudRate, 1));
|
||||
buffer.push(specificByte(SERIAL_CONFIG.gpsPassthroughBaudRate, 2));
|
||||
buffer.push(specificByte(SERIAL_CONFIG.gpsPassthroughBaudRate, 3));
|
||||
} else {
|
||||
for (var i = 0; i < SERIAL_CONFIG.ports.length; i++) {
|
||||
for (i = 0; i < SERIAL_CONFIG.ports.length; i++) {
|
||||
var serialPort = SERIAL_CONFIG.ports[i];
|
||||
|
||||
buffer.push(serialPort.identifier);
|
||||
|
@ -1181,7 +1056,6 @@ var mspHelper = (function () {
|
|||
buffer.push(mspHelper.BAUD_RATES.indexOf(serialPort.telemetry_baudrate));
|
||||
buffer.push(mspHelper.BAUD_RATES.indexOf(serialPort.blackbox_baudrate));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_3D:
|
||||
|
@ -1313,7 +1187,7 @@ var mspHelper = (function () {
|
|||
*
|
||||
* Channels is an array of 16-bit unsigned integer channel values to be sent. 8 channels is probably the maximum.
|
||||
*/
|
||||
self.setRawRx: function(channels) {
|
||||
self.setRawRx = function (channels) {
|
||||
var buffer = [];
|
||||
|
||||
for (var i = 0; i < channels.length; i++) {
|
||||
|
@ -1322,21 +1196,21 @@ var mspHelper = (function () {
|
|||
}
|
||||
|
||||
MSP.send_message(MSPCodes.MSP_SET_RAW_RC, buffer, false);
|
||||
}
|
||||
};
|
||||
|
||||
self.sendBlackboxConfiguration: function(onDataCallback) {
|
||||
self.sendBlackboxConfiguration = function (onDataCallback) {
|
||||
var message = [
|
||||
BLACKBOX.blackboxDevice & 0xFF,
|
||||
BLACKBOX.blackboxRateNum & 0xFF,
|
||||
BLACKBOX.blackboxRateDenom & 0xFF
|
||||
];
|
||||
|
||||
MSP.send_message(MSPCodes.MSP_SET_BLACKBOX_CONFIG, message, false, function(response) {
|
||||
MSP.send_message(MSPCodes.MSP_SET_BLACKBOX_CONFIG, message, false, function (response) {
|
||||
onDataCallback();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
self.sendServoConfigurations: function(onCompleteCallback) {
|
||||
self.sendServoConfigurations = function (onCompleteCallback) {
|
||||
var nextFunction = send_next_servo_configuration;
|
||||
|
||||
var servoIndex = 0;
|
||||
|
@ -1352,24 +1226,6 @@ var mspHelper = (function () {
|
|||
|
||||
var buffer = [];
|
||||
|
||||
if (semver.lt(CONFIG.apiVersion, "1.12.0")) {
|
||||
// send all in one go
|
||||
// 1.9.0 had a bug where the MSP input buffer was too small, limit to 8.
|
||||
for (var i = 0; i < SERVO_CONFIG.length && i < 8; i++) {
|
||||
buffer.push(lowByte(SERVO_CONFIG[i].min));
|
||||
buffer.push(highByte(SERVO_CONFIG[i].min));
|
||||
|
||||
buffer.push(lowByte(SERVO_CONFIG[i].max));
|
||||
buffer.push(highByte(SERVO_CONFIG[i].max));
|
||||
|
||||
buffer.push(lowByte(SERVO_CONFIG[i].middle));
|
||||
buffer.push(highByte(SERVO_CONFIG[i].middle));
|
||||
|
||||
buffer.push(lowByte(SERVO_CONFIG[i].rate));
|
||||
}
|
||||
|
||||
nextFunction = send_channel_forwarding;
|
||||
} else {
|
||||
// send one at a time, with index
|
||||
|
||||
var servoConfiguration = SERVO_CONFIG[servoIndex];
|
||||
|
@ -1406,7 +1262,6 @@ var mspHelper = (function () {
|
|||
if (servoIndex == SERVO_CONFIG.length) {
|
||||
nextFunction = onCompleteCallback;
|
||||
}
|
||||
}
|
||||
MSP.send_message(MSPCodes.MSP_SET_SERVO_CONFIGURATION, buffer, false, nextFunction);
|
||||
}
|
||||
|
||||
|
@ -1425,9 +1280,9 @@ var mspHelper = (function () {
|
|||
|
||||
MSP.send_message(MSPCodes.MSP_SET_CHANNEL_FORWARDING, buffer, false, nextFunction);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
self.sendModeRanges: function(onCompleteCallback) {
|
||||
self.sendModeRanges = function (onCompleteCallback) {
|
||||
var nextFunction = send_next_mode_range;
|
||||
|
||||
var modeRangeIndex = 0;
|
||||
|
@ -1457,15 +1312,15 @@ var mspHelper = (function () {
|
|||
}
|
||||
MSP.send_message(MSPCodes.MSP_SET_MODE_RANGE, buffer, false, nextFunction);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Send a request to read a block of data from the dataflash at the given address and pass that address and a dataview
|
||||
* of the returned data to the given callback (or null for the data if an error occured).
|
||||
*/
|
||||
self.dataflashRead: function(address, onDataCallback) {
|
||||
self.dataflashRead = function (address, onDataCallback) {
|
||||
MSP.send_message(MSPCodes.MSP_DATAFLASH_READ, [address & 0xFF, (address >> 8) & 0xFF, (address >> 16) & 0xFF, (address >> 24) & 0xFF],
|
||||
false, function(response) {
|
||||
false, function (response) {
|
||||
var chunkAddress = response.data.getUint32(0, 1);
|
||||
|
||||
// Verify that the address of the memory returned matches what the caller asked for
|
||||
|
@ -1479,9 +1334,9 @@ var mspHelper = (function () {
|
|||
onDataCallback(address, null);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
self.sendRxFailConfig: function(onCompleteCallback) {
|
||||
self.sendRxFailConfig = function (onCompleteCallback) {
|
||||
var nextFunction = send_next_rxfail_config;
|
||||
|
||||
var rxFailIndex = 0;
|
||||
|
@ -1510,11 +1365,13 @@ var mspHelper = (function () {
|
|||
}
|
||||
MSP.send_message(MSPCodes.MSP_SET_RXFAIL_CONFIG, buffer, false, nextFunction);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
self.SERIAL_PORT_FUNCTIONSToMask: function(functions) {
|
||||
/**
|
||||
* @return {number}
|
||||
*/
|
||||
self.SERIAL_PORT_FUNCTIONSToMask = function (functions) {
|
||||
var mask = 0;
|
||||
var keys = Object.keys(mspHelper.SERIAL_PORT_FUNCTIONS);
|
||||
for (var index = 0; index < functions.length; index++) {
|
||||
var key = functions[index];
|
||||
var bitIndex = mspHelper.SERIAL_PORT_FUNCTIONS[key];
|
||||
|
@ -1523,9 +1380,9 @@ var mspHelper = (function () {
|
|||
}
|
||||
}
|
||||
return mask;
|
||||
}
|
||||
};
|
||||
|
||||
self.serialPortFunctionMaskToFunctions: function(functionMask) {
|
||||
self.serialPortFunctionMaskToFunctions = function (functionMask) {
|
||||
var functions = [];
|
||||
|
||||
var keys = Object.keys(mspHelper.SERIAL_PORT_FUNCTIONS);
|
||||
|
@ -1537,14 +1394,14 @@ var mspHelper = (function () {
|
|||
}
|
||||
}
|
||||
return functions;
|
||||
}
|
||||
};
|
||||
|
||||
self.sendServoMixRules: function(onCompleteCallback) {
|
||||
self.sendServoMixRules = function (onCompleteCallback) {
|
||||
// TODO implement
|
||||
onCompleteCallback();
|
||||
}
|
||||
};
|
||||
|
||||
self.sendAdjustmentRanges: function(onCompleteCallback) {
|
||||
self.sendAdjustmentRanges = function (onCompleteCallback) {
|
||||
var nextFunction = send_next_adjustment_range;
|
||||
|
||||
var adjustmentRangeIndex = 0;
|
||||
|
@ -1577,9 +1434,9 @@ var mspHelper = (function () {
|
|||
}
|
||||
MSP.send_message(MSPCodes.MSP_SET_ADJUSTMENT_RANGE, buffer, false, nextFunction);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
self.sendLedStripColors: function(onCompleteCallback) {
|
||||
self.sendLedStripColors = function (onCompleteCallback) {
|
||||
if (LED_COLORS.length == 0) {
|
||||
onCompleteCallback();
|
||||
} else {
|
||||
|
@ -1595,9 +1452,9 @@ var mspHelper = (function () {
|
|||
}
|
||||
MSP.send_message(MSPCodes.MSP_SET_LED_COLORS, buffer, false, onCompleteCallback);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
self.sendLedStripConfig: function(onCompleteCallback) {
|
||||
self.sendLedStripConfig = function (onCompleteCallback) {
|
||||
|
||||
var nextFunction = send_next_led_strip_config;
|
||||
|
||||
|
@ -1703,9 +1560,9 @@ var mspHelper = (function () {
|
|||
|
||||
MSP.send_message(MSPCodes.MSP_SET_LED_STRIP_CONFIG, buffer, false, nextFunction);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
self.sendLedStripModeColors: function(onCompleteCallback) {
|
||||
self.sendLedStripModeColors = function (onCompleteCallback) {
|
||||
|
||||
var nextFunction = send_next_led_strip_mode_color;
|
||||
var index = 0;
|
||||
|
@ -1733,7 +1590,7 @@ var mspHelper = (function () {
|
|||
|
||||
MSP.send_message(MSPCodes.MSP_SET_LED_STRIP_MODECOLOR, buffer, false, nextFunction);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return self;
|
||||
})();
|
||||
})(GUI);
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/*global chrome, chrome.i18n*/
|
||||
'use strict';
|
||||
|
||||
$(document).ready(function () {
|
||||
|
@ -307,6 +308,7 @@ function read_serial(info) {
|
|||
}
|
||||
}
|
||||
|
||||
//FIXME move it into GUI
|
||||
function sensor_status(sensors_detected) {
|
||||
// initialize variable (if it wasn't)
|
||||
if (!sensor_status.previous_sensors_detected) {
|
||||
|
|
|
@ -48,12 +48,12 @@
|
|||
<script type="text/javascript" src="./js/libraries/jquery.ba-throttle-debounce.min.js"></script>
|
||||
<script type="text/javascript" src="./js/libraries/inflection.min.js"></script>
|
||||
<script type="text/javascript" src="./js/injected_methods.js"></script>
|
||||
<script type="text/javascript" src="./js/gui.js"></script>
|
||||
<script type="text/javascript" src="./js/msp/MSPCodes.js"></script>
|
||||
<script type="text/javascript" src="./js/msp/MSPHelper.js"></script>
|
||||
<script type="text/javascript" src="./js/port_handler.js"></script>
|
||||
<script type="text/javascript" src="./js/port_usage.js"></script>
|
||||
<script type="text/javascript" src="./js/serial.js"></script>
|
||||
<script type="text/javascript" src="./js/gui.js"></script>
|
||||
<script type="text/javascript" src="./js/model.js"></script>
|
||||
<script type="text/javascript" src="./js/request_balancer.js"></script>
|
||||
<script type="text/javascript" src="./js/serial_backend.js"></script>
|
||||
|
@ -148,7 +148,7 @@
|
|||
<div id="profile_change">
|
||||
<div class="dropdown dropdown-dark">
|
||||
<form name="profile-change" id="profile-change">
|
||||
<select class="dropdown-select" name="profilechange">
|
||||
<select class="dropdown-select" id="profilechange">
|
||||
<option value="0">Profile 1</option>
|
||||
<option value="1">Profile 2</option>
|
||||
<option value="2">Profile 3</option>
|
||||
|
|
2
main.js
2
main.js
|
@ -350,7 +350,7 @@ $(document).ready(function () {
|
|||
|
||||
});
|
||||
|
||||
var profile_e = $('select[name="profilechange"]');
|
||||
var profile_e = $('#profilechange');
|
||||
|
||||
profile_e.change(function () {
|
||||
var profile = parseInt($(this).val());
|
||||
|
|
|
@ -189,7 +189,7 @@ FONT.upload = function ($progress) {
|
|||
};
|
||||
|
||||
FONT.preview = function ($el) {
|
||||
$el.empty()
|
||||
$el.empty();
|
||||
for (var i = 0; i < SYM.LOGO; i++) {
|
||||
var url = FONT.data.character_image_urls[i];
|
||||
$el.append('<img src="' + url + '" title="0x' + i.toString(16) + '"></img>');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue