mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-15 20:35:19 +03:00
extending serial backend (far from finished)
This commit is contained in:
parent
be66960782
commit
292029ebcd
1 changed files with 174 additions and 52 deletions
|
@ -1,6 +1,50 @@
|
|||
var connectionId = -1;
|
||||
var connection_delay = 0; // delay which defines "when" will the configurator request configurator data after connection was established
|
||||
|
||||
var MSP_codes = {
|
||||
MSP_IDENT: 100,
|
||||
MSP_STATUS: 101,
|
||||
MSP_RAW_IMU: 102,
|
||||
MSP_SERVO: 103,
|
||||
MSP_MOTOR: 104,
|
||||
MSP_RC: 105,
|
||||
MSP_RAW_GPS: 106,
|
||||
MSP_COMP_GPS: 107,
|
||||
MSP_ATTITUDE: 108,
|
||||
MSP_ALTITUDE: 109,
|
||||
MSP_BAT: 110,
|
||||
MSP_RC_TUNING: 111,
|
||||
MSP_PID: 112,
|
||||
MSP_BOX: 113,
|
||||
MSP_MISC: 114,
|
||||
MSP_MOTOR_PINS: 115,
|
||||
MSP_BOXNAMES: 116,
|
||||
MSP_PIDNAMES: 117,
|
||||
|
||||
MSP_SET_RAW_RC: 200,
|
||||
MSP_SET_RAW_GPS: 201,
|
||||
MSP_SET_PID: 202,
|
||||
MSP_SET_BOX: 203,
|
||||
MSP_SET_RC_TUNING: 204,
|
||||
MSP_ACC_CALIBRATION: 205,
|
||||
MSP_MAG_CALIBRATION: 206,
|
||||
MSP_SET_MISC: 207,
|
||||
MSP_RESET_CONF: 208,
|
||||
MSP_SELECT_SETTING: 210,
|
||||
|
||||
MSP_BIND: 240,
|
||||
|
||||
MSP_EEPROM_WRITE: 250,
|
||||
|
||||
MSP_DEBUGMSG: 253,
|
||||
MSP_DEBUG: 254
|
||||
};
|
||||
|
||||
var CONFIG = {
|
||||
version: 0,
|
||||
multiType: 0
|
||||
};
|
||||
|
||||
$(document).ready(function() {
|
||||
port_picker = $('div#port-picker .port select');
|
||||
baud_picker = $('div#port-picker #baud');
|
||||
|
@ -77,7 +121,9 @@ function onOpen(openInfo) {
|
|||
serial_poll = setInterval(readPoll, 10);
|
||||
|
||||
// should request some sort of configuration data
|
||||
send_message(MSP_codes.MSP_ACC_CALIBRATION, 205);
|
||||
//send_message(MSP_codes.MSP_ACC_CALIBRATION, MSP_codes.MSP_ACC_CALIBRATION);
|
||||
send_message(MSP_codes.MSP_IDENT, MSP_codes.MSP_IDENT);
|
||||
//send_message(MSP_codes.MSP_BOXNAMES, MSP_codes.MSP_BOXNAMES);
|
||||
|
||||
}, connection_delay * 1000);
|
||||
}
|
||||
|
@ -105,6 +151,7 @@ var message_length_expected = 0;
|
|||
var message_length_received = 0;
|
||||
var message_buffer;
|
||||
var message_buffer_uint8_view;
|
||||
var message_checksum = 0;
|
||||
|
||||
function onCharRead(readInfo) {
|
||||
if (readInfo && readInfo.bytesRead > 0 && readInfo.data) {
|
||||
|
@ -136,6 +183,8 @@ function onCharRead(readInfo) {
|
|||
case 3:
|
||||
message_length_expected = data[i]; // data length
|
||||
|
||||
message_checksum = data[i];
|
||||
|
||||
// setup arraybuffer
|
||||
message_buffer = new ArrayBuffer(message_length_expected);
|
||||
message_buffer_uint8_view = new Uint8Array(message_buffer);
|
||||
|
@ -144,67 +193,38 @@ function onCharRead(readInfo) {
|
|||
break;
|
||||
case 4:
|
||||
message_code = data[i]; // code
|
||||
message_checksum ^= data[i];
|
||||
|
||||
message_state++;
|
||||
if (message_length_expected != 0) { // standard message
|
||||
message_state++;
|
||||
} else { // MSP_ACC_CALIBRATION, etc...
|
||||
message_state += 2;
|
||||
}
|
||||
break;
|
||||
case 5: // data / payload
|
||||
message_buffer_uint8_view[message_length_received] = data[i];
|
||||
message_checksum ^= data[i];
|
||||
message_length_received++;
|
||||
|
||||
if (message_length_received >= message_length_expected) {
|
||||
// message received, process
|
||||
console.log(message_code);
|
||||
console.log(message_buffer_uint8_view);
|
||||
|
||||
// Reset variables
|
||||
message_length_received = 0;
|
||||
message_state = 0;
|
||||
message_state++;
|
||||
}
|
||||
break;
|
||||
case 6: // CRC
|
||||
if (message_checksum == data[i]) {
|
||||
// process data
|
||||
process_message(message_code, message_buffer_uint8_view);
|
||||
}
|
||||
|
||||
// Reset variables
|
||||
message_length_received = 0;
|
||||
message_state = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var MSP_codes = {
|
||||
MSP_IDENT: 100,
|
||||
MSP_STATUS: 101,
|
||||
MSP_RAW_IMU: 102,
|
||||
MSP_SERVO: 103,
|
||||
MSP_MOTOR: 104,
|
||||
MSP_RC: 105,
|
||||
MSP_RAW_GPS: 106,
|
||||
MSP_COMP_GPS: 107,
|
||||
MSP_ATTITUDE: 108,
|
||||
MSP_ALTITUDE: 109,
|
||||
MSP_BAT: 110,
|
||||
MSP_RC_TUNING: 111,
|
||||
MSP_PID: 112,
|
||||
MSP_BOX: 113,
|
||||
MSP_MISC: 114,
|
||||
MSP_MOTOR_PINS: 115,
|
||||
MSP_BOXNAMES: 116,
|
||||
MSP_PIDNAMES: 117,
|
||||
|
||||
MSP_SET_RAW_RC: 200,
|
||||
MSP_SET_RAW_GPS: 201,
|
||||
MSP_SET_PID: 202,
|
||||
MSP_SET_BOX: 203,
|
||||
MSP_SET_RC_TUNING: 204,
|
||||
MSP_ACC_CALIBRATION: 205,
|
||||
MSP_MAG_CALIBRATION: 206,
|
||||
MSP_SET_MISC: 207,
|
||||
MSP_RESET_CONF: 208,
|
||||
MSP_SELECT_SETTING: 210,
|
||||
|
||||
MSP_BIND: 240,
|
||||
|
||||
MSP_EEPROM_WRITE: 250,
|
||||
|
||||
MSP_DEBUGMSG: 253,
|
||||
MSP_DEBUG: 254
|
||||
};
|
||||
|
||||
function send_message(code, data, bytes_n) {
|
||||
if (typeof data === 'array') { // array portion of this code is untested
|
||||
var size = 6 + data.length;
|
||||
|
@ -219,11 +239,11 @@ function send_message(code, data, bytes_n) {
|
|||
bufView[3] = data.length; // data length
|
||||
bufView[4] = code; // code
|
||||
|
||||
checksum = bufView[3] | bufView[4];
|
||||
checksum = bufView[3] ^ bufView[4];
|
||||
for (var i = 5; i < data.length; i++) {
|
||||
bufView[i] = data[i - 5];
|
||||
|
||||
checksum |= bufView[i];
|
||||
checksum ^= bufView[i];
|
||||
}
|
||||
|
||||
bufView[5 + data.length] = checksum;
|
||||
|
@ -237,10 +257,112 @@ function send_message(code, data, bytes_n) {
|
|||
bufView[3] = bytes_n; // data length
|
||||
bufView[4] = code; // code
|
||||
bufView[5] = data; // data
|
||||
bufView[6] = bufView[3] | bufView[4] | bufView[5]; // checksum
|
||||
bufView[6] = bufView[3] ^ bufView[4] ^ bufView[5]; // checksum
|
||||
}
|
||||
|
||||
chrome.serial.write(connectionId, bufferOut, function(writeInfo) {
|
||||
console.log("Wrote: " + writeInfo.bytesWritten + " bytes");
|
||||
});
|
||||
}
|
||||
|
||||
function process_message(code, data) {
|
||||
switch (code) {
|
||||
case MSP_codes.MSP_IDENT:
|
||||
CONFIG.version = data[0];
|
||||
CONFIG.multiType = data[1];
|
||||
break;
|
||||
case MSP_codes.MSP_STATUS:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_RAW_IMU:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_SERVO:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_MOTOR:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_RC:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_RAW_GPS:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_COMP_GPS:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_ATTITUDE:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_ALTITUDE:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_BAT:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_RC_TUNING:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_PID:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_BOX:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_MISC:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_MOTOR_PINS:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_BOXNAMES:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_PIDNAMES:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_SET_RAW_RC:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_SET_RAW_GPS:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_SET_PID:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_SET_BOX:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_SET_RC_TUNING:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_ACC_CALIBRATION:
|
||||
console.log('Accel calibration finished');
|
||||
break;
|
||||
case MSP_codes.MSP_MAG_CALIBRATION:
|
||||
console.log('Mag calibration finished');
|
||||
break;
|
||||
case MSP_codes.MSP_SET_MISC:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_RESET_CONF:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_SELECT_SETTING:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_BIND:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_EEPROM_WRITE:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_DEBUGMSG:
|
||||
console.log(data);
|
||||
break;
|
||||
case MSP_codes.MSP_DEBUG:
|
||||
console.log(data);
|
||||
break;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue