Detecting bluetooth device disconnects/crashes
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 30/100
- Tipo di issue
- Bug
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- javascript, node.js
- Ambito
- embedded-iot, networking
Direzione di ricerca
Inizia da lib/connection.js ed esamina il callback di lettura, incluso il modo in cui vengono emessi i buffer di lunghezza zero e gli errori di lettura. Riproduci il comportamento di arresto di Bluetooth descritto nell’issue e determina l’evento di disconnessione previsto e la relativa tempistica. Il lavoro è completato quando il comportamento di disconnessione è definito e coperto senza presumere che i buffer di lunghezza zero siano impossibili durante una connessione valida.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hi!
I couldn't find a way to detect if a connection has crashed or disconnected so I tried to implement my own.
In lib/connection.js, I noticed that - if I printed the chunks of the read method - they stop printing as soon as I turn off my bluetooth device; after ~20seconds of apparent frozen behavior, this method continued working, printing chunks of zero length buffers.
Thus, I added the following line
if(chunk.length == 0){ self.emit('error')}
in
(function read(){
self.isOpen() && self.port.read((err, chunk) => {
process.nextTick(read);
if(err) return self.emit('error', err);
self.emit('data', chunk);
if(chunk.length == 0){ self.emit('error')}
});
})();
This allows me to fetch error events like so:
connect(address, 1, (err, linkage) => {
if (err) {
console.log('connection attempt error');
} else {
linkage.on('error', (err) => {
console.log('disconnected!);
});
}
)}
However my approach assumes I won't be receiving zero length buffers when connected which I realize that might not always be true (or not for all devices);
Also, any thoughts on how to detect the disconnect before the ~20seconds pass?
Thanks!
- Lingua principale
- C++
- Stelle
- 205
- Fork
- 56
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di lsongdev/node-bluetooth
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
lsongdev/node-bluetooth#61 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 25/100
lsongdev/node-bluetooth#60 ·
-
Maintenance status?Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 10/100
lsongdev/node-bluetooth#55 · 8 commenti ·
-
Battery status?Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
lsongdev/node-bluetooth#54 · 1 commento ·
-
BT nodeAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 10/100
lsongdev/node-bluetooth#53 ·
Tutte le issue di lsongdev/node-bluetooth
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
category:port-update
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
tensorflow/tflite-micro#3784 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno