Detecting bluetooth device disconnects/crashes
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 30/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- javascript, node.js
- Lĩnh vực
- embedded-iot, networking
Hướng nghiên cứu
Bắt đầu với lib/connection.js và kiểm tra read callback, bao gồm cách các buffer có độ dài bằng 0 và lỗi đọc được phát ra. Tái hiện hành vi tắt Bluetooth được mô tả trong issue và xác định sự kiện ngắt kết nối dự kiến cùng thời điểm của nó. Được xem là hoàn tất khi hành vi ngắt kết nối được xác định và được bao phủ mà không giả định rằng các buffer có độ dài bằng 0 là không thể xảy ra trong một kết nối hợp lệ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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!
- Ngôn ngữ chính
- C++
- Star
- 205
- Fork
- 56
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của lsongdev/node-bluetooth
-
bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
lsongdev/node-bluetooth#61 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 25/100
lsongdev/node-bluetooth#60 ·
-
Maintenance status?Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 10/100
lsongdev/node-bluetooth#55 · 8 bình luận ·
-
Battery status?Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
lsongdev/node-bluetooth#54 · 1 bình luận ·
-
BT nodeĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 10/100
lsongdev/node-bluetooth#53 ·
Tất cả issue của lsongdev/node-bluetooth
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
MerginMaps/mobile#4741 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
ros-perception/image_pipeline#1198 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
Icinga/icinga2#11077 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
CVE PCRE2 - CVE-2026-103111Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
pocoproject/poco#5515 ·
Maintainer thường phản hồi trong vòng 2 ngày