From 5600d3e24dbda306c3658c8f089534fd40ab6e92 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Thu, 23 Feb 2023 12:00:33 +0000 Subject: [PATCH] Add BLE scanner app --- apps/blescanner/ChangeLog | 1 + apps/blescanner/app-icon.js | 1 + apps/blescanner/app.js | 41 +++++++++++++++++++++++++++++++++ apps/blescanner/app.png | Bin 0 -> 1281 bytes apps/blescanner/metadata.json | 14 +++++++++++ apps/blescanner/screenshot.png | Bin 0 -> 4489 bytes 6 files changed, 57 insertions(+) create mode 100644 apps/blescanner/ChangeLog create mode 100644 apps/blescanner/app-icon.js create mode 100644 apps/blescanner/app.js create mode 100644 apps/blescanner/app.png create mode 100644 apps/blescanner/metadata.json create mode 100644 apps/blescanner/screenshot.png diff --git a/apps/blescanner/ChangeLog b/apps/blescanner/ChangeLog new file mode 100644 index 000000000..5560f00bc --- /dev/null +++ b/apps/blescanner/ChangeLog @@ -0,0 +1 @@ +0.01: New App! diff --git a/apps/blescanner/app-icon.js b/apps/blescanner/app-icon.js new file mode 100644 index 000000000..a08a17ae4 --- /dev/null +++ b/apps/blescanner/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwwhC/AH4ARkQAHBwsBiIACiAHBgQXIkAXJiIuKGAwWEC4cjmYABn//AAMyC63yC653FC6HwC5aQBC5ybIC44WChGAWxMgC44rCxGIZxYXFIoYXBGAQNCAAQXILYYXBGAUDBoK0EC5AsBC4QwEC5wAEC853BhAWDI6CPCFwp3OX4ouCC8xHXCAJ3VX94XCwBHVGIiPTU4oNCAAQWBX5gDBgQRCAAoXGGAUIFwQXHkAXHJIgABCw4IBC5sAiIAEiAgHAAQXLHBAYIC+6wJQYIADgIXGGBJ3FC4iOBAH4A/ACAA==")) diff --git a/apps/blescanner/app.js b/apps/blescanner/app.js new file mode 100644 index 000000000..7cbf80d7e --- /dev/null +++ b/apps/blescanner/app.js @@ -0,0 +1,41 @@ +E.showMessage("Scanning..."); +var devices = []; + +setInterval(function() { + NRF.findDevices(function(devs) { + devs.forEach(dev=>{ + var existing = devices.find(d=>d.id==dev.id); + if (existing) { + existing.timeout = 0; + existing.rssi = (existing.rssi*3 + dev.rssi)/4; + } else { + dev.timeout = 0; + dev.new = 0; + devices.push(dev); + } + }); + devices.forEach(d=>{d.timeout++;d.new++}); + devices = devices.filter(dev=>dev.timeout<8); + devices.sort((a,b)=>b.rssi - a.rssi); + g.clear(1).setFont("12x20"); + var wasNew = false; + devices.forEach((d,y)=>{ + y*=20; + var n = d.name; + if (!n) n=d.id.substr(0,22); + if (d.new<4) { + g.fillRect(0,y,g.getWidth(),y+19); + g.setColor(g.theme.bg); + if (d.rssi > -70) wasNew = true; + } else { + g.setColor(g.theme.fg); + } + g.setFontAlign(-1,-1); + g.drawString(n,0,y); + g.setFontAlign(1,-1); + g.drawString(0|d.rssi,g.getWidth()-1,y); + }); + g.flip(); + Bangle.setLCDBrightness(wasNew); + }, 1200); +}, 1500); diff --git a/apps/blescanner/app.png b/apps/blescanner/app.png new file mode 100644 index 0000000000000000000000000000000000000000..8665f24ad2e0fa842ebac0effbdd30b76ccc55b0 GIT binary patch literal 1281 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