mirror of
https://github.com/betaflight/betaflight-configurator.git
synced 2025-07-25 01:05:15 +03:00
Refactor
This commit is contained in:
parent
7b5f0de608
commit
d13638befd
1 changed files with 23 additions and 54 deletions
|
@ -374,15 +374,23 @@ const MSP = {
|
||||||
serial.send(bufferOut);
|
serial.send(bufferOut);
|
||||||
},
|
},
|
||||||
send_message(code, data, callback_sent, callback_msp, doCallbackOnError) {
|
send_message(code, data, callback_sent, callback_msp, doCallbackOnError) {
|
||||||
// Early validation
|
if (code === undefined || !serial.connected || CONFIGURATOR.virtualMode) {
|
||||||
if (!this._validateSendMessage(code, callback_msp)) {
|
if (callback_msp) {
|
||||||
|
callback_msp();
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const isDuplicateRequest = this._isDuplicateRequest(code);
|
const isDuplicateRequest = this.callbacks.some((instance) => instance.code === code);
|
||||||
const bufferOut = this._encodeMessage(code, data);
|
const bufferOut = code <= 254 ? this.encode_message_v1(code, data) : this.encode_message_v2(code, data);
|
||||||
|
|
||||||
const requestObj = this._createRequestObject(code, bufferOut, callback_msp, doCallbackOnError);
|
const requestObj = {
|
||||||
|
code,
|
||||||
|
requestBuffer: bufferOut,
|
||||||
|
callback: callback_msp,
|
||||||
|
callbackOnError: doCallbackOnError,
|
||||||
|
start: performance.now(),
|
||||||
|
};
|
||||||
|
|
||||||
// Always set up timeout for all requests to ensure cleanup
|
// Always set up timeout for all requests to ensure cleanup
|
||||||
this._setupTimeout(requestObj, bufferOut);
|
this._setupTimeout(requestObj, bufferOut);
|
||||||
|
@ -390,44 +398,22 @@ const MSP = {
|
||||||
this.callbacks.push(requestObj);
|
this.callbacks.push(requestObj);
|
||||||
|
|
||||||
// Send message if it has data or is a new request
|
// Send message if it has data or is a new request
|
||||||
if (this._shouldSendMessage(data, isDuplicateRequest)) {
|
if (data || !isDuplicateRequest) {
|
||||||
this._sendBuffer(bufferOut, callback_sent);
|
// Optimize timeout for frequent requests
|
||||||
}
|
if (this.timeout > this.MIN_TIMEOUT) {
|
||||||
|
this.timeout--;
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
_validateSendMessage(code, callback_msp) {
|
|
||||||
const connected = serial.connected;
|
|
||||||
|
|
||||||
if (code === undefined || !connected || CONFIGURATOR.virtualMode) {
|
|
||||||
if (callback_msp) {
|
|
||||||
callback_msp();
|
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
|
serial.send(bufferOut, (sendInfo) => {
|
||||||
|
if (sendInfo.bytesSent === bufferOut.byteLength && callback_sent) {
|
||||||
|
callback_sent();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
_isDuplicateRequest(code) {
|
|
||||||
return this.callbacks.some((instance) => instance.code === code);
|
|
||||||
},
|
|
||||||
|
|
||||||
_encodeMessage(code, data) {
|
|
||||||
return code <= 254 ? this.encode_message_v1(code, data) : this.encode_message_v2(code, data);
|
|
||||||
},
|
|
||||||
|
|
||||||
_createRequestObject(code, bufferOut, callback_msp, doCallbackOnError) {
|
|
||||||
return {
|
|
||||||
code,
|
|
||||||
requestBuffer: bufferOut,
|
|
||||||
callback: callback_msp,
|
|
||||||
callbackOnError: doCallbackOnError,
|
|
||||||
start: performance.now(),
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
_setupTimeout(requestObj, bufferOut) {
|
_setupTimeout(requestObj, bufferOut) {
|
||||||
requestObj.timer = setTimeout(() => {
|
requestObj.timer = setTimeout(() => {
|
||||||
this._handleTimeout(requestObj, bufferOut);
|
this._handleTimeout(requestObj, bufferOut);
|
||||||
|
@ -454,23 +440,6 @@ const MSP = {
|
||||||
this._setupTimeout(requestObj, bufferOut);
|
this._setupTimeout(requestObj, bufferOut);
|
||||||
},
|
},
|
||||||
|
|
||||||
_shouldSendMessage(data, isDuplicateRequest) {
|
|
||||||
return data || !isDuplicateRequest;
|
|
||||||
},
|
|
||||||
|
|
||||||
_sendBuffer(bufferOut, callback_sent) {
|
|
||||||
// Optimize timeout for frequent requests
|
|
||||||
if (this.timeout > this.MIN_TIMEOUT) {
|
|
||||||
this.timeout--;
|
|
||||||
}
|
|
||||||
|
|
||||||
serial.send(bufferOut, (sendInfo) => {
|
|
||||||
if (sendInfo.bytesSent === bufferOut.byteLength && callback_sent) {
|
|
||||||
callback_sent();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* resolves: {command: code, data: data, length: message_length}
|
* resolves: {command: code, data: data, length: message_length}
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue