internal serial output buffer

10.3.x-maintenance
cTn 2014-01-26 20:01:46 +01:00
parent cbf4db1efe
commit e907531114
1 changed files with 27 additions and 1 deletions

View File

@ -1,9 +1,15 @@
var serial = {
connectionId: -1,
transmitting: false,
output_buffer: [],
connect: function(path, options, callback) {
var self = this;
// force buffer size
options.bufferSize = 8192;
chrome.serial.connect(path, options, function(connectionInfo) {
self.connectionId = connectionInfo.connectionId;
@ -43,7 +49,27 @@ var serial = {
chrome.serial.setControlSignals(this.connectionId, signals, 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: {
listeners_: chrome.serial.onReceive.listeners_,