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:
parent
e6f60a5f06
commit
8a286bdeed
2 changed files with 911 additions and 892 deletions
14
js/msp.js
14
js/msp.js
|
@ -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++) {
|
||||||
|
|
1789
js/msp/MSPHelper.js
1789
js/msp/MSPHelper.js
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue