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

Revise handling of msp CRC errors to prevent referencing undefined objects and allow blackbox packets to retry

This commit is contained in:
Bruce Luckcuck 2017-02-06 16:39:55 -05:00
parent e6f60a5f06
commit 8a286bdeed
2 changed files with 911 additions and 892 deletions

View file

@ -11,6 +11,7 @@ var MSP = {
message_buffer_uint8_view: null, message_buffer_uint8_view: null,
message_checksum: 0, message_checksum: 0,
messageIsJumboFrame: false, messageIsJumboFrame: false,
crcError: false,
callbacks: [], callbacks: [],
packet_error: 0, packet_error: 0,
@ -114,14 +115,16 @@ var MSP = {
this.dataView = new DataView(this.message_buffer, 0, this.message_length_expected); this.dataView = new DataView(this.message_buffer, 0, this.message_length_expected);
} else { } else {
console.log('code: ' + this.code + ' - crc failed'); console.log('code: ' + this.code + ' - crc failed');
this.dataView = null;
this.packet_error++; this.packet_error++;
this.crcError = true;
this.dataView = new DataView(new ArrayBuffer(0));
} }
// Reset variables // Reset variables
this.message_length_received = 0; this.message_length_received = 0;
this.state = 0; this.state = 0;
this.messageIsJumboFrame = false; this.messageIsJumboFrame = false;
this.notify(); this.notify();
this.crcError = false;
break; break;
default: default:
@ -144,10 +147,15 @@ var MSP = {
clearListeners: function() { clearListeners: function() {
this.listeners = []; this.listeners = [];
}, },
send_message: function (code, data, callback_sent, callback_msp) { send_message: function (code, data, callback_sent, callback_msp, callback_onerror) {
var bufferOut, var bufferOut,
bufView; bufView;
if (callback_onerror === undefined) {
var callbackOnError = false;
} else {
var callbackOnError = true;
}
// always reserve 6 bytes for protocol overhead ! // always reserve 6 bytes for protocol overhead !
if (data) { if (data) {
var size = data.length + 6, var size = data.length + 6,
@ -183,7 +191,7 @@ var MSP = {
bufView[5] = bufView[3] ^ bufView[4]; // checksum bufView[5] = bufView[3] ^ bufView[4]; // checksum
} }
var obj = {'code': code, 'requestBuffer': bufferOut, 'callback': (callback_msp) ? callback_msp : false, 'timer': false}; var obj = {'code': code, 'requestBuffer': bufferOut, 'callback': (callback_msp) ? callback_msp : false, 'timer': false, 'callbackOnError': callbackOnError};
var requestExists = false; var requestExists = false;
for (var i = 0; i < MSP.callbacks.length; i++) { for (var i = 0; i < MSP.callbacks.length; i++) {

File diff suppressed because it is too large Load diff