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 000000000..8665f24ad Binary files /dev/null and b/apps/blescanner/app.png differ diff --git a/apps/blescanner/metadata.json b/apps/blescanner/metadata.json new file mode 100644 index 000000000..54cde3ede --- /dev/null +++ b/apps/blescanner/metadata.json @@ -0,0 +1,14 @@ +{ "id": "blescanner", + "name": "BLE Scanner", + "shortName":"BLE Scan", + "version":"0.01", + "description": "Scans for bluetooth devices nearby and shows their names on the screen ordered by signal strength. The most recently discovered items are highlighted.", + "icon": "app.png", + "screenshots" : [ { "url":"screenshot.png" } ], + "tags": "tool,bluetooth", + "supports" : ["BANGLEJS2"], + "storage": [ + {"name":"blescanner.app.js","url":"app.js"}, + {"name":"blescanner.img","url":"app-icon.js","evaluate":true} + ] +} diff --git a/apps/blescanner/screenshot.png b/apps/blescanner/screenshot.png new file mode 100644 index 000000000..55bd44a52 Binary files /dev/null and b/apps/blescanner/screenshot.png differ