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

internal serial output buffer

This commit is contained in:
cTn 2014-01-26 20:01:46 +01:00
parent cbf4db1efe
commit e907531114

View file

@ -1,9 +1,15 @@
var serial = { var serial = {
connectionId: -1, connectionId: -1,
transmitting: false,
output_buffer: [],
connect: function(path, options, callback) { connect: function(path, options, callback) {
var self = this; var self = this;
// force buffer size
options.bufferSize = 8192;
chrome.serial.connect(path, options, function(connectionInfo) { chrome.serial.connect(path, options, function(connectionInfo) {
self.connectionId = connectionInfo.connectionId; self.connectionId = connectionInfo.connectionId;
@ -43,7 +49,27 @@ var serial = {
chrome.serial.setControlSignals(this.connectionId, signals, callback); chrome.serial.setControlSignals(this.connectionId, signals, callback);
}, },
send: function(data, callback) { send: function(data, callback) {
chrome.serial.send(this.connectionId, data, callback); var self = this;
self.output_buffer.push({'data': data, 'callback': callback});
if (!self.transmitting) {
self.transmitting = true;
var sending = function() {
chrome.serial.send(self.connectionId, self.output_buffer[0].data, function(sendInfo) {
self.output_buffer[0].callback(sendInfo);
self.output_buffer.shift();
if (self.output_buffer.length != 0) {
sending();
} else {
self.transmitting = false;
}
});
};
sending();
}
}, },
onReceive: { onReceive: {
listeners_: chrome.serial.onReceive.listeners_, listeners_: chrome.serial.onReceive.listeners_,