Skip to content

Commit e3e6065

Browse files
committed
updated Puck.js lib
1 parent 43cf210 commit e3e6065

File tree

1 file changed

+61
-52
lines changed

1 file changed

+61
-52
lines changed

js/puck.js

Lines changed: 61 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -211,62 +211,71 @@ Or more advanced usage with control of the connection
211211
log(1, "Disconnected (gattserverdisconnected)");
212212
connection.close();
213213
});
214-
return device.gatt.connect();
215-
}).then(function(server) {
216-
log(1, "Connected");
217-
btServer = server;
218-
return server.getPrimaryService(NORDIC_SERVICE);
219-
}).then(function(service) {
220-
log(2, "Got service");
221-
btService = service;
222-
return btService.getCharacteristic(NORDIC_RX);
223-
}).then(function (characteristic) {
224-
rxCharacteristic = characteristic;
225-
log(2, "RX characteristic:"+JSON.stringify(rxCharacteristic));
226-
rxCharacteristic.addEventListener('characteristicvaluechanged', function(event) {
227-
var dataview = event.target.value;
228-
var data = ab2str(dataview.buffer);
229-
if (puck.flowControl) {
230-
for (var i=0;i<data.length;i++) {
231-
var ch = data.charCodeAt(i);
232-
var remove = true;
233-
if (ch==19) {// XOFF
234-
log(2,"XOFF received => pause upload");
235-
flowControlXOFF = true;
236-
} else if (ch==17) {// XON
237-
log(2,"XON received => resume upload");
238-
flowControlXOFF = false;
239-
} else
240-
remove = false;
241-
if (remove) { // remove character
242-
data = data.substr(0,i-1)+data.substr(i+1);
243-
i--;
244-
}
245-
}
246-
}
247-
log(3, "Received "+JSON.stringify(data));
248-
connection.emit('data', data);
249-
});
250-
return rxCharacteristic.startNotifications();
251-
}).then(function() {
252-
return btService.getCharacteristic(NORDIC_TX);
253-
}).then(function (characteristic) {
254-
txCharacteristic = characteristic;
255-
log(2, "TX characteristic:"+JSON.stringify(txCharacteristic));
256-
}).then(function() {
257-
connection.txInProgress = false;
258-
connection.isOpen = true;
259-
connection.isOpening = false;
260-
isBusy = false;
261-
queue = [];
262-
callback(connection);
263-
connection.emit('open');
264-
// if we had any writes queued, do them now
265-
connection.write();
214+
connection.device = device;
215+
connection.reconnect(callback);
266216
}).catch(function(error) {
267217
log(1, 'ERROR: ' + error);
268218
connection.close();
269219
});
220+
221+
connection.reconnect = function(callback) {
222+
connection.device.gatt.connect().then(function(server) {
223+
log(1, "Connected");
224+
btServer = server;
225+
return server.getPrimaryService(NORDIC_SERVICE);
226+
}).then(function(service) {
227+
log(2, "Got service");
228+
btService = service;
229+
return btService.getCharacteristic(NORDIC_RX);
230+
}).then(function (characteristic) {
231+
rxCharacteristic = characteristic;
232+
log(2, "RX characteristic:"+JSON.stringify(rxCharacteristic));
233+
rxCharacteristic.addEventListener('characteristicvaluechanged', function(event) {
234+
var dataview = event.target.value;
235+
var data = ab2str(dataview.buffer);
236+
if (puck.flowControl) {
237+
for (var i=0;i<data.length;i++) {
238+
var ch = data.charCodeAt(i);
239+
var remove = true;
240+
if (ch==19) {// XOFF
241+
log(2,"XOFF received => pause upload");
242+
flowControlXOFF = true;
243+
} else if (ch==17) {// XON
244+
log(2,"XON received => resume upload");
245+
flowControlXOFF = false;
246+
} else
247+
remove = false;
248+
if (remove) { // remove character
249+
data = data.substr(0,i-1)+data.substr(i+1);
250+
i--;
251+
}
252+
}
253+
}
254+
log(3, "Received "+JSON.stringify(data));
255+
connection.emit('data', data);
256+
});
257+
return rxCharacteristic.startNotifications();
258+
}).then(function() {
259+
return btService.getCharacteristic(NORDIC_TX);
260+
}).then(function (characteristic) {
261+
txCharacteristic = characteristic;
262+
log(2, "TX characteristic:"+JSON.stringify(txCharacteristic));
263+
}).then(function() {
264+
connection.txInProgress = false;
265+
connection.isOpen = true;
266+
connection.isOpening = false;
267+
isBusy = false;
268+
queue = [];
269+
callback(connection);
270+
connection.emit('open');
271+
// if we had any writes queued, do them now
272+
connection.write();
273+
}).catch(function(error) {
274+
log(1, 'ERROR: ' + error);
275+
connection.close();
276+
});
277+
};
278+
270279
return connection;
271280
};
272281

0 commit comments

Comments
 (0)