From 3179bb06ba6c7279a5465e93fefbe2a3c67bbc98 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Wed, 9 Apr 2025 14:10:45 +0200 Subject: [PATCH 01/58] Create watchface --- apps/watchface | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/watchface diff --git a/apps/watchface b/apps/watchface new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/apps/watchface @@ -0,0 +1 @@ + From 8fdbccbe9f475cc722d577060db70ebcf43ea27f Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Wed, 9 Apr 2025 14:14:53 +0200 Subject: [PATCH 02/58] Create readme.txt --- apps/1watchface/readme.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/1watchface/readme.txt diff --git a/apps/1watchface/readme.txt b/apps/1watchface/readme.txt new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/apps/1watchface/readme.txt @@ -0,0 +1 @@ + From b625e910e747b9dc1a4e2f2864b80665ec572866 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Wed, 9 Apr 2025 14:15:23 +0200 Subject: [PATCH 03/58] Add files via upload --- apps/1watchface/tempwatch.app.js | 45 ++++++++++++++++++++++++++++++++ apps/1watchface/tempwatch.info | 10 +++++++ 2 files changed, 55 insertions(+) create mode 100644 apps/1watchface/tempwatch.app.js create mode 100644 apps/1watchface/tempwatch.info diff --git a/apps/1watchface/tempwatch.app.js b/apps/1watchface/tempwatch.app.js new file mode 100644 index 0000000000..6d409a6334 --- /dev/null +++ b/apps/1watchface/tempwatch.app.js @@ -0,0 +1,45 @@ +let gatt; +let temp = "--.-"; + +function draw() { + g.clear(); + g.setFont("6x8", 2); + g.drawString("Temp: " + temp + "°C", 10, 30); + + g.setFont("Vector", 40); + let t = new Date(); + let timeStr = ("0"+t.getHours()).substr(-2) + ":" + ("0"+t.getMinutes()).substr(-2); + g.drawString(timeStr, 10, 80); +} + +setInterval(draw, 60 * 1000); +draw(); + +function connectPuck() { + NRF.requestDevice({ filters: [{ name: "Puck.js" }] }).then(device => { + return device.gatt.connect(); + }).then(g => { + gatt = g; + return gatt.getPrimaryService("6e400001-b5a3-f393-e0a9-e50e24dcca9e"); + }).then(service => { + return service.getCharacteristic("6e400003-b5a3-f393-e0a9-e50e24dcca9e"); + }).then(characteristic => { + characteristic.on('characteristicvaluechanged', e => { + let msg = E.toString(e.target.value.buffer); + if (msg.startsWith("Temp:")) { + temp = msg.slice(5); + draw(); + } + }); + characteristic.startNotifications(); + }).catch(err => { + console.log("Connection error:", err); + setTimeout(connectPuck, 10000); + }); +} + +connectPuck(); + +setWatch(() => { + load(); +}, BTN1, { repeat: false, edge: "rising" }); \ No newline at end of file diff --git a/apps/1watchface/tempwatch.info b/apps/1watchface/tempwatch.info new file mode 100644 index 0000000000..7d0f053d9e --- /dev/null +++ b/apps/1watchface/tempwatch.info @@ -0,0 +1,10 @@ +{ + "id": "tempwatch", + "name": "Temp Watch Face", + "type": "clock", + "src": "tempwatch.app.js", + "icon": "tempwatch.png", + "sortorder": 100, + "version": "0.01", + "description": "Custom watch face that shows temperature from Puck.js over BLE." +} \ No newline at end of file From 5a8003cf79af26bcc870b559ebd4b541ee091ab2 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 14:54:36 +0200 Subject: [PATCH 04/58] Create app.js --- apps/Buzzerapp/app.js | 64 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 apps/Buzzerapp/app.js diff --git a/apps/Buzzerapp/app.js b/apps/Buzzerapp/app.js new file mode 100644 index 0000000000..f15dfa66fa --- /dev/null +++ b/apps/Buzzerapp/app.js @@ -0,0 +1,64 @@ +Bluetooth.setConsole(false); +g.clear(); +g.setFont("6x8", 2); +g.drawString("Scanning for buzzers...", 10, 30); + +let buzzStartTime = 0; + +// Helper to decode DataView to string +function decodeBLEString(dataView) { + let s = ""; + for (let i = 0; i < dataView.byteLength; i++) { + s += String.fromCharCode(dataView.getUint8(i)); + } + return s; +} + +NRF.requestDevice({ filters: [{ name: "QuizBuzzer" }] }).then(device => { + g.clear(); + g.drawString("Connecting to:", 10, 20); + g.drawString(device.name, 10, 40); + return device.gatt.connect(); +}).then(gatt => { + g.clear(); + g.drawString("Connected!", 10, 20); + g.drawString("Waiting for buzz...", 10, 50); + buzzStartTime = Date.now(); // Start waiting here + return gatt.getPrimaryService("6e400001-b5a3-f393-e0a9-e50e24dcca9e"); +}).then(service => { + return service.getCharacteristic("6e400003-b5a3-f393-e0a9-e50e24dcca9e"); +}).then(characteristic => { + characteristic.on('characteristicvaluechanged', function(event) { + let value = decodeBLEString(event.target.value); + try { + let msg = JSON.parse(value); + if (msg.buzz) { + let now = Date.now(); + let latency = ((now - buzzStartTime) / 1000).toFixed(2); + + Bangle.buzz(); + Bangle.beep(); + + g.clear(); + g.drawString("🎉 Buzz Received!", 10, 20); + g.drawString("Latency: " + latency + "s", 10, 50); + g.drawString("Press BTN to reset", 10, 80); + } + } catch (e) { + print("Error parsing:", value); + } + }); + + return characteristic.startNotifications(); +}).catch(err => { + g.clear(); + g.drawString("Connection failed :(", 10, 30); + g.drawString(err.toString(), 10, 50); +}); + +setWatch(() => { + buzzStartTime = Date.now(); + g.clear(); + g.setFont("6x8", 2); + g.drawString("Waiting for buzz...", 10, 30); +}, BTN, { repeat: true, edge: "rising", debounce: 50 }); From 01b075139c39c62e935b1d7a0abf13458423ea42 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 15:17:25 +0200 Subject: [PATCH 05/58] Add files via upload --- apps/Buzzerapp/App.png | Bin 0 -> 4298 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/Buzzerapp/App.png diff --git a/apps/Buzzerapp/App.png b/apps/Buzzerapp/App.png new file mode 100644 index 0000000000000000000000000000000000000000..b95cc0e1050705808183db61bc1937be90e299eb GIT binary patch literal 4298 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 literal 0 HcmV?d00001 From a02d1b8506f9334e18c0dba2721906f68fd262f5 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 15:19:21 +0200 Subject: [PATCH 06/58] Create app-icon.js --- apps/Buzzerapp/app-icon.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/Buzzerapp/app-icon.js diff --git a/apps/Buzzerapp/app-icon.js b/apps/Buzzerapp/app-icon.js new file mode 100644 index 0000000000..99e111e742 --- /dev/null +++ b/apps/Buzzerapp/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("ulwgn/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/ABPt5nN94YU/3c5nfG7X+ysykMimu/DKX5ociiUjtY5ZuMAgU0mMAj4ZS0EAklDiEBlI4X2MBpYFC9WfDSXpRAX9ycQpo4V+8RrrJaAAe0iTJTAANhlQDB9mYvGtCJPJxXvBQ/aw+K7///2BjJyUgYaB88hiEAiVMCI/2bIMrBQ2jiMAgMT1///UROiewlgYBiECtOooMACI9ggAuB54JE/0Ai2awsQgaBByEtHCP+kJSBwEVOwIAB1QRG/h/BAANfBYubAYX7mEbQwMGHKP4ggCBgQ8BABX5HAUAlwQK86rCkKEFABfjhv/0CvBfBg5DTpmQnoCBv45Q2NP/0gOQXomUjx45S68ikocC+0H//il45QuGv/KvB//6iEBboOfHKH2gAWBgXf//+kPv+qaBAB9Q9/0hgFBwEV3vbqMYCIv7xW85eXtoKEoEn53aoEbDwWP/MIHB/+mX/6SIB/UC34xCpBWQopvB//4OgXBp/6iwbP/sjCwNfYoMLBYfvJYu3qczmdGzgLECIlwt//8cf/cVHKWwv//yNPCBHokLmDAAMVQoQAF+UuHIMP/kUHKCtBHIVg14PH6sQHAoABgWeCQ32hn/8kPOaP+oKtDqDPCAAnWHBA6J/EKVoX6g45PNwPP6U/HIPPEg0gHBIABggVF/ELLgM/+4+BAB+Qv/khv/uGPQAtAHBYABjIVE+kdEgOP+keHKHSx/4g3/2MvBYo4NAANvCofhn3/mPf+rSBACP+pX/+bFE/irMAAcFCwdASAN3GyQAF/kS75yTOgn7gnvG7AAC5J7DmA5RjAWCzo4bAAnzHCMAgO/G0AACuA5SgEfHEX8kA5Tgo5i+o4TAAKui4I5Vn45hsA5VjY4g/0QHKsGHMH5HCsAgXfHL/zHK0B345f+A5WgF/HL+wHK9PHL+AHK8vHL9QHK8OHL8wHK8NHL8QHK8LHP45yhQ5/HP45/HP45/HP45/HP45/HMX+HLEIHL37HC8AgY5e8Y5YgGfOTswHLMH945b4I4ZAANfHLdQHLcdHLdAHLcNHP45/AB+oxAAazw5bAH4AEw93AAd6HOUwbYkFHPEGHOWAHIkKHOXgHIktHOX5HAcBz45y/+BHIUYHGf//dSiMm5450//97vvHGoA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHAA=")) From 781860f261539aa4ce72810dbfbda7f14bb61135 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 15:36:33 +0200 Subject: [PATCH 07/58] Create metadata.json --- apps/Buzzerapp/metadata.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 apps/Buzzerapp/metadata.json diff --git a/apps/Buzzerapp/metadata.json b/apps/Buzzerapp/metadata.json new file mode 100644 index 0000000000..f2d25dde6d --- /dev/null +++ b/apps/Buzzerapp/metadata.json @@ -0,0 +1,16 @@ +{ + "id": "Buzzer", + "name": "Buzzer", + "type": "clock", + "version": "0.01", + "icon": "App.png", + "screenshots": [], + "description": "A quiz buzzer system by help of Puckjs", + "author": "Brijesh", + "supports": ["BANGLEJS2"], + "readme": "README.md", + "storage": [ + { "name": "Buzzerapp.app.js", "url": "app.js" }, + { "name": "Buzzerapp.info", "url": "Buzzerapp.info" } + ] +} From 20b3dde4e126d20af130a86797111afe7604786c Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 15:42:41 +0200 Subject: [PATCH 08/58] Create README.md --- apps/Buzzerapp/README.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 apps/Buzzerapp/README.md diff --git a/apps/Buzzerapp/README.md b/apps/Buzzerapp/README.md new file mode 100644 index 0000000000..182306e976 --- /dev/null +++ b/apps/Buzzerapp/README.md @@ -0,0 +1,34 @@ +# Puck_Buzzer-0.2 +A advanced new version with Dashboard on with [Bangle.js 2](https://www.espruino.com/Bangle.js2), and [Puck.js](https://www.espruino.com/Puck.js) + +# What's new here +1. Leaderboard on Bangle.js + +- Tracks who buzzed first +- Displays names in order +- Resets round on button press + +2. Sound/Vibration Patterns + +- First buzzer: 🎵 Beep twice + long vibration +- Others get short buzz only + +# Number of participants +Each Puck.js has a unique name like "QuizBuzzer1", "QuizBuzzer2", etc. +Puck.js sends: { buzz: true, name: "Puck A" } +Bangle.js tracks the order people buzzed in. +(since Banglejs have a limitation here, it connect only 2 puck at a time) + +- Problem: + +-Bangle.js (Central) can only connect to one (Fully operational) BLE Peripheral (i.e., Puck.js) at a time. + +-It works well with 1–2 devices, but simultaneous interactions with 3+ Pucks is unreliable, especially if kids buzz fast. + +-BLE scanning + connecting takes ~1s, so tight competition gets clunky. + +# IDE +https://www.espruino.com/ide/ + + + From 5ce62b20b339247f315ab7f93bc49373670e50bc Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 15:43:56 +0200 Subject: [PATCH 09/58] Update app.js --- apps/Buzzerapp/app.js | 105 ++++++++++++++++++++++++------------------ 1 file changed, 59 insertions(+), 46 deletions(-) diff --git a/apps/Buzzerapp/app.js b/apps/Buzzerapp/app.js index f15dfa66fa..69471cc55e 100644 --- a/apps/Buzzerapp/app.js +++ b/apps/Buzzerapp/app.js @@ -1,64 +1,77 @@ Bluetooth.setConsole(false); g.clear(); g.setFont("6x8", 2); -g.drawString("Scanning for buzzers...", 10, 30); -let buzzStartTime = 0; +let buzzedList = []; -// Helper to decode DataView to string +// Decode DataView to String function decodeBLEString(dataView) { let s = ""; for (let i = 0; i < dataView.byteLength; i++) { - s += String.fromCharCode(dataView.getUint8(i)); + s += String.fromCharCode(dataView.getUint8(i)); } return s; } -NRF.requestDevice({ filters: [{ name: "QuizBuzzer" }] }).then(device => { +// Display buzz order +function updateDisplay() { g.clear(); - g.drawString("Connecting to:", 10, 20); - g.drawString(device.name, 10, 40); - return device.gatt.connect(); -}).then(gatt => { - g.clear(); - g.drawString("Connected!", 10, 20); - g.drawString("Waiting for buzz...", 10, 50); - buzzStartTime = Date.now(); // Start waiting here - return gatt.getPrimaryService("6e400001-b5a3-f393-e0a9-e50e24dcca9e"); -}).then(service => { - return service.getCharacteristic("6e400003-b5a3-f393-e0a9-e50e24dcca9e"); -}).then(characteristic => { - characteristic.on('characteristicvaluechanged', function(event) { - let value = decodeBLEString(event.target.value); - try { - let msg = JSON.parse(value); - if (msg.buzz) { - let now = Date.now(); - let latency = ((now - buzzStartTime) / 1000).toFixed(2); - - Bangle.buzz(); - Bangle.beep(); - - g.clear(); - g.drawString("🎉 Buzz Received!", 10, 20); - g.drawString("Latency: " + latency + "s", 10, 50); - g.drawString("Press BTN to reset", 10, 80); - } - } catch (e) { - print("Error parsing:", value); - } + g.drawString("📋 Buzz Order:", 10, 10); + buzzedList.forEach((name, i) => { + g.drawString((i + 1) + ". " + name, 10, 30 + i * 20); }); + if (buzzedList.length === 0) { + g.drawString("Waiting for buzzers...", 10, 50); + } +} - return characteristic.startNotifications(); -}).catch(err => { - g.clear(); - g.drawString("Connection failed :(", 10, 30); - g.drawString(err.toString(), 10, 50); -}); +// Sound & vibration feedback +function alertForRank(rank) { + if (rank === 0) { + Bangle.buzz(500); + Bangle.beep(); + setTimeout(() => Bangle.beep(), 200); + } else { + Bangle.buzz(150); + } +} + +// Scan and connect +function scanForBuzzers() { + NRF.requestDevice({ filters: [{ namePrefix: "Puck" }], timeout: 20000 }) + .then(device => device.gatt.connect()) + .then(gatt => gatt.getPrimaryService("6e400001-b5a3-f393-e0a9-e50e24dcca9e")) + .then(service => service.getCharacteristic("6e400003-b5a3-f393-e0a9-e50e24dcca9e")) + .then(characteristic => { + characteristic.on('characteristicvaluechanged', event => { + let value = decodeBLEString(event.target.value); + try { + let msg = JSON.parse(value); + if (msg.buzz && msg.name && !buzzedList.includes(msg.name)) { + buzzedList.push(msg.name); + alertForRank(buzzedList.length - 1); + updateDisplay(); + } + } catch (e) { + print("Parse error:", value); + } + }); + return characteristic.startNotifications(); + }) + .catch(err => { + g.clear(); + g.drawString("⚠️ Connect error:", 10, 30); + g.drawString(err.toString(), 10, 50); + }); +} +// Reset round setWatch(() => { - buzzStartTime = Date.now(); - g.clear(); - g.setFont("6x8", 2); - g.drawString("Waiting for buzz...", 10, 30); + buzzedList = []; + updateDisplay(); + scanForBuzzers(); }, BTN, { repeat: true, edge: "rising", debounce: 50 }); + +// Start first scan +updateDisplay(); +scanForBuzzers(); From 327a1f9e77c00f22cc0f23c7f58a7a9882dbad27 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 15:45:06 +0200 Subject: [PATCH 10/58] Update README.md --- apps/Buzzerapp/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/Buzzerapp/README.md b/apps/Buzzerapp/README.md index 182306e976..a77eb55180 100644 --- a/apps/Buzzerapp/README.md +++ b/apps/Buzzerapp/README.md @@ -1,4 +1,4 @@ -# Puck_Buzzer-0.2 +# Puck_Buzzer A advanced new version with Dashboard on with [Bangle.js 2](https://www.espruino.com/Bangle.js2), and [Puck.js](https://www.espruino.com/Puck.js) # What's new here From a5a7aa363f8d1df470e3460811a2f84c6ebf87ea Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 16:29:17 +0200 Subject: [PATCH 11/58] Delete apps/Buzzerapp/App.png --- apps/Buzzerapp/App.png | Bin 4298 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 apps/Buzzerapp/App.png diff --git a/apps/Buzzerapp/App.png b/apps/Buzzerapp/App.png deleted file mode 100644 index b95cc0e1050705808183db61bc1937be90e299eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4298 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 From de8e90f20d70cc1c7703b3ee613366e50a646217 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 16:29:54 +0200 Subject: [PATCH 12/58] Create app.png --- apps/Buzzerapp/app.png | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/Buzzerapp/app.png diff --git a/apps/Buzzerapp/app.png b/apps/Buzzerapp/app.png new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/apps/Buzzerapp/app.png @@ -0,0 +1 @@ + From 77843db2529244779f941cd7dcda1a86ef235137 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 16:30:35 +0200 Subject: [PATCH 13/58] Add files via upload --- apps/Buzzerapp/app.png | Bin 1 -> 4298 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/Buzzerapp/app.png b/apps/Buzzerapp/app.png index 8b137891791fe96927ad78e64b0aad7bded08bdc..b95cc0e1050705808183db61bc1937be90e299eb 100644 GIT binary patch literal 4298 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 literal 1 Icmd-A000XB3jhEB From ced2fdeed59c92dbe9cf4e8228b54a1efeed7548 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 16:31:13 +0200 Subject: [PATCH 14/58] Update metadata.json --- apps/Buzzerapp/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/Buzzerapp/metadata.json b/apps/Buzzerapp/metadata.json index f2d25dde6d..d98b2499d3 100644 --- a/apps/Buzzerapp/metadata.json +++ b/apps/Buzzerapp/metadata.json @@ -3,7 +3,7 @@ "name": "Buzzer", "type": "clock", "version": "0.01", - "icon": "App.png", + "icon": "app.png", "screenshots": [], "description": "A quiz buzzer system by help of Puckjs", "author": "Brijesh", From e99298b0511560da3ac2cb32ff50be21bcff7c90 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 16:34:24 +0200 Subject: [PATCH 15/58] Create ChangeLog --- apps/Buzzerapp/ChangeLog | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 apps/Buzzerapp/ChangeLog diff --git a/apps/Buzzerapp/ChangeLog b/apps/Buzzerapp/ChangeLog new file mode 100644 index 0000000000..0140f68803 --- /dev/null +++ b/apps/Buzzerapp/ChangeLog @@ -0,0 +1,2 @@ +0.01: New App +0.02: Update.... From f873dab391f5839d56cc30d0795844056a4edd2c Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 16:44:05 +0200 Subject: [PATCH 16/58] Update metadata.json --- apps/Buzzerapp/metadata.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/Buzzerapp/metadata.json b/apps/Buzzerapp/metadata.json index d98b2499d3..9bf32cc745 100644 --- a/apps/Buzzerapp/metadata.json +++ b/apps/Buzzerapp/metadata.json @@ -10,7 +10,7 @@ "supports": ["BANGLEJS2"], "readme": "README.md", "storage": [ - { "name": "Buzzerapp.app.js", "url": "app.js" }, - { "name": "Buzzerapp.info", "url": "Buzzerapp.info" } + {"name":"Buzzerapp.app.js","url":"app.js"}, + {"name":"Buzzerapp.img","url":"app-icon.js","evaluate":true} ] } From 4f4615d075826743ee46988e089d45b78f3fd09c Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 16:56:16 +0200 Subject: [PATCH 17/58] Update app-icon.js --- apps/Buzzerapp/app-icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/Buzzerapp/app-icon.js b/apps/Buzzerapp/app-icon.js index 99e111e742..96e4aca900 100644 --- a/apps/Buzzerapp/app-icon.js +++ b/apps/Buzzerapp/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("ulwgn/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/ABPt5nN94YU/3c5nfG7X+ysykMimu/DKX5ociiUjtY5ZuMAgU0mMAj4ZS0EAklDiEBlI4X2MBpYFC9WfDSXpRAX9ycQpo4V+8RrrJaAAe0iTJTAANhlQDB9mYvGtCJPJxXvBQ/aw+K7///2BjJyUgYaB88hiEAiVMCI/2bIMrBQ2jiMAgMT1///UROiewlgYBiECtOooMACI9ggAuB54JE/0Ai2awsQgaBByEtHCP+kJSBwEVOwIAB1QRG/h/BAANfBYubAYX7mEbQwMGHKP4ggCBgQ8BABX5HAUAlwQK86rCkKEFABfjhv/0CvBfBg5DTpmQnoCBv45Q2NP/0gOQXomUjx45S68ikocC+0H//il45QuGv/KvB//6iEBboOfHKH2gAWBgXf//+kPv+qaBAB9Q9/0hgFBwEV3vbqMYCIv7xW85eXtoKEoEn53aoEbDwWP/MIHB/+mX/6SIB/UC34xCpBWQopvB//4OgXBp/6iwbP/sjCwNfYoMLBYfvJYu3qczmdGzgLECIlwt//8cf/cVHKWwv//yNPCBHokLmDAAMVQoQAF+UuHIMP/kUHKCtBHIVg14PH6sQHAoABgWeCQ32hn/8kPOaP+oKtDqDPCAAnWHBA6J/EKVoX6g45PNwPP6U/HIPPEg0gHBIABggVF/ELLgM/+4+BAB+Qv/khv/uGPQAtAHBYABjIVE+kdEgOP+keHKHSx/4g3/2MvBYo4NAANvCofhn3/mPf+rSBACP+pX/+bFE/irMAAcFCwdASAN3GyQAF/kS75yTOgn7gnvG7AAC5J7DmA5RjAWCzo4bAAnzHCMAgO/G0AACuA5SgEfHEX8kA5Tgo5i+o4TAAKui4I5Vn45hsA5VjY4g/0QHKsGHMH5HCsAgXfHL/zHK0B345f+A5WgF/HL+wHK9PHL+AHK8vHL9QHK8OHL8wHK8NHL8QHK8LHP45yhQ5/HP45/HP45/HP45/HP45/HMX+HLEIHL37HC8AgY5e8Y5YgGfOTswHLMH945b4I4ZAANfHLdQHLcdHLdAHLcNHP45/AB+oxAAazw5bAH4AEw93AAd6HOUwbYkFHPEGHOWAHIkKHOXgHIktHOX5HAcBz45y/+BHIUYHGf//dSiMm5450//97vvHGoA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHAA=")) +require("heatshrink").decompress(atob("ulwwkBxAA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4AIwEAAAQZUDAcIHDIeDHSoYFHTBxEHKgZHHSweDDQIFCOaiwbZLpaGC6w4BK5gREVxQQLHJw4EK5ILJc4wRCHKY4IDo4uEBYo5GhBdDOSbHFAoKhLBgoKBIIQ6DOiYWEKJi6NCAp0TYo5yIHJoaFHKwVDUIg5RCwyXEcyLDEM5YLKBQwkEHKhbFWgg5MCw5eGHKaTHCY4UCBAwWFHgg5WC4ahLFAoRDHwY5bB5IAICQ45bCxI3JexA5EERQ5VOJQ6JeoZzgHBqwGHIi8JHKhyOOgwfEHKL8CY4g4UCwo5XwDCCSAarSOgpPCHIQmBHKAACCgKuFHKRpCDYZwRdpSsUOgZVFADBUDHCY1DHDh3FACg2fOS50EHP6svV0Q5/V2Y5/V2Y4YHP45/HP45/HP4ABwA5/HP45/HP45/HP45/HP45/HP45/HP45pHDQ6eHDY6dHP45/HP45/HP45/AD+AFo0IF0o5/HPzyHHPI4xVw454VmSuGHGZ0EOWgA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHIA==")) From 4531014da391a5856bc96d331ae441363754fb80 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 17:25:24 +0200 Subject: [PATCH 18/58] Create Buzzer.info --- apps/Buzzerapp/Buzzer.info | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 apps/Buzzerapp/Buzzer.info diff --git a/apps/Buzzerapp/Buzzer.info b/apps/Buzzerapp/Buzzer.info new file mode 100644 index 0000000000..c45960cfed --- /dev/null +++ b/apps/Buzzerapp/Buzzer.info @@ -0,0 +1,16 @@ +{ + "id": "buzzer", + "name": "Buzzer", + "type": "app", + "version": "0.01", + "icon": "app.png", + "screenshots": [], + "description": "A quiz buzzer system by help of Puck.js", + "author": "Brijesh", + "supports": ["BANGLEJS2"], + "readme": "README.md", + "storage": [ + { "name": "Buzzer.app.js", "url": "Buzzer.app.js" }, + { "name": "Buzzer.img", "url": "Buzzer.img", "evaluate": true } + ] +} From 21ef0b323f20908803d4bde65aa7fa87ec2443d0 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 17:25:37 +0200 Subject: [PATCH 19/58] Delete apps/Buzzerapp/metadata.json --- apps/Buzzerapp/metadata.json | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 apps/Buzzerapp/metadata.json diff --git a/apps/Buzzerapp/metadata.json b/apps/Buzzerapp/metadata.json deleted file mode 100644 index 9bf32cc745..0000000000 --- a/apps/Buzzerapp/metadata.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "id": "Buzzer", - "name": "Buzzer", - "type": "clock", - "version": "0.01", - "icon": "app.png", - "screenshots": [], - "description": "A quiz buzzer system by help of Puckjs", - "author": "Brijesh", - "supports": ["BANGLEJS2"], - "readme": "README.md", - "storage": [ - {"name":"Buzzerapp.app.js","url":"app.js"}, - {"name":"Buzzerapp.img","url":"app-icon.js","evaluate":true} - ] -} From 017dd8ecddfc460ce0aadca80c28a9e17aa0d277 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 17:27:43 +0200 Subject: [PATCH 20/58] Create Buzzer.app.js --- apps/Buzzerapp/Buzzer.app.js | 77 ++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 apps/Buzzerapp/Buzzer.app.js diff --git a/apps/Buzzerapp/Buzzer.app.js b/apps/Buzzerapp/Buzzer.app.js new file mode 100644 index 0000000000..69471cc55e --- /dev/null +++ b/apps/Buzzerapp/Buzzer.app.js @@ -0,0 +1,77 @@ +Bluetooth.setConsole(false); +g.clear(); +g.setFont("6x8", 2); + +let buzzedList = []; + +// Decode DataView to String +function decodeBLEString(dataView) { + let s = ""; + for (let i = 0; i < dataView.byteLength; i++) { + s += String.fromCharCode(dataView.getUint8(i)); + } + return s; +} + +// Display buzz order +function updateDisplay() { + g.clear(); + g.drawString("📋 Buzz Order:", 10, 10); + buzzedList.forEach((name, i) => { + g.drawString((i + 1) + ". " + name, 10, 30 + i * 20); + }); + if (buzzedList.length === 0) { + g.drawString("Waiting for buzzers...", 10, 50); + } +} + +// Sound & vibration feedback +function alertForRank(rank) { + if (rank === 0) { + Bangle.buzz(500); + Bangle.beep(); + setTimeout(() => Bangle.beep(), 200); + } else { + Bangle.buzz(150); + } +} + +// Scan and connect +function scanForBuzzers() { + NRF.requestDevice({ filters: [{ namePrefix: "Puck" }], timeout: 20000 }) + .then(device => device.gatt.connect()) + .then(gatt => gatt.getPrimaryService("6e400001-b5a3-f393-e0a9-e50e24dcca9e")) + .then(service => service.getCharacteristic("6e400003-b5a3-f393-e0a9-e50e24dcca9e")) + .then(characteristic => { + characteristic.on('characteristicvaluechanged', event => { + let value = decodeBLEString(event.target.value); + try { + let msg = JSON.parse(value); + if (msg.buzz && msg.name && !buzzedList.includes(msg.name)) { + buzzedList.push(msg.name); + alertForRank(buzzedList.length - 1); + updateDisplay(); + } + } catch (e) { + print("Parse error:", value); + } + }); + return characteristic.startNotifications(); + }) + .catch(err => { + g.clear(); + g.drawString("⚠️ Connect error:", 10, 30); + g.drawString(err.toString(), 10, 50); + }); +} + +// Reset round +setWatch(() => { + buzzedList = []; + updateDisplay(); + scanForBuzzers(); +}, BTN, { repeat: true, edge: "rising", debounce: 50 }); + +// Start first scan +updateDisplay(); +scanForBuzzers(); From c8dab3c20e17693b591215bfe2e6d4b4b01665a7 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 17:27:56 +0200 Subject: [PATCH 21/58] Delete apps/Buzzerapp/app.js --- apps/Buzzerapp/app.js | 77 ------------------------------------------- 1 file changed, 77 deletions(-) delete mode 100644 apps/Buzzerapp/app.js diff --git a/apps/Buzzerapp/app.js b/apps/Buzzerapp/app.js deleted file mode 100644 index 69471cc55e..0000000000 --- a/apps/Buzzerapp/app.js +++ /dev/null @@ -1,77 +0,0 @@ -Bluetooth.setConsole(false); -g.clear(); -g.setFont("6x8", 2); - -let buzzedList = []; - -// Decode DataView to String -function decodeBLEString(dataView) { - let s = ""; - for (let i = 0; i < dataView.byteLength; i++) { - s += String.fromCharCode(dataView.getUint8(i)); - } - return s; -} - -// Display buzz order -function updateDisplay() { - g.clear(); - g.drawString("📋 Buzz Order:", 10, 10); - buzzedList.forEach((name, i) => { - g.drawString((i + 1) + ". " + name, 10, 30 + i * 20); - }); - if (buzzedList.length === 0) { - g.drawString("Waiting for buzzers...", 10, 50); - } -} - -// Sound & vibration feedback -function alertForRank(rank) { - if (rank === 0) { - Bangle.buzz(500); - Bangle.beep(); - setTimeout(() => Bangle.beep(), 200); - } else { - Bangle.buzz(150); - } -} - -// Scan and connect -function scanForBuzzers() { - NRF.requestDevice({ filters: [{ namePrefix: "Puck" }], timeout: 20000 }) - .then(device => device.gatt.connect()) - .then(gatt => gatt.getPrimaryService("6e400001-b5a3-f393-e0a9-e50e24dcca9e")) - .then(service => service.getCharacteristic("6e400003-b5a3-f393-e0a9-e50e24dcca9e")) - .then(characteristic => { - characteristic.on('characteristicvaluechanged', event => { - let value = decodeBLEString(event.target.value); - try { - let msg = JSON.parse(value); - if (msg.buzz && msg.name && !buzzedList.includes(msg.name)) { - buzzedList.push(msg.name); - alertForRank(buzzedList.length - 1); - updateDisplay(); - } - } catch (e) { - print("Parse error:", value); - } - }); - return characteristic.startNotifications(); - }) - .catch(err => { - g.clear(); - g.drawString("⚠️ Connect error:", 10, 30); - g.drawString(err.toString(), 10, 50); - }); -} - -// Reset round -setWatch(() => { - buzzedList = []; - updateDisplay(); - scanForBuzzers(); -}, BTN, { repeat: true, edge: "rising", debounce: 50 }); - -// Start first scan -updateDisplay(); -scanForBuzzers(); From f5d70293eed7fd20e0111d3a7d319f44e90db2b3 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 17:33:21 +0200 Subject: [PATCH 22/58] Delete apps/Buzzerapp/app.png --- apps/Buzzerapp/app.png | Bin 4298 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 apps/Buzzerapp/app.png diff --git a/apps/Buzzerapp/app.png b/apps/Buzzerapp/app.png deleted file mode 100644 index b95cc0e1050705808183db61bc1937be90e299eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4298 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 From 5007c93187674f915a6cabe9838c54f6b5599046 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 17:34:32 +0200 Subject: [PATCH 23/58] Create Buzzer.img --- apps/Buzzerapp/Buzzer.img | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/Buzzerapp/Buzzer.img diff --git a/apps/Buzzerapp/Buzzer.img b/apps/Buzzerapp/Buzzer.img new file mode 100644 index 0000000000..96e4aca900 --- /dev/null +++ b/apps/Buzzerapp/Buzzer.img @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("ulwwkBxAA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4AIwEAAAQZUDAcIHDIeDHSoYFHTBxEHKgZHHSweDDQIFCOaiwbZLpaGC6w4BK5gREVxQQLHJw4EK5ILJc4wRCHKY4IDo4uEBYo5GhBdDOSbHFAoKhLBgoKBIIQ6DOiYWEKJi6NCAp0TYo5yIHJoaFHKwVDUIg5RCwyXEcyLDEM5YLKBQwkEHKhbFWgg5MCw5eGHKaTHCY4UCBAwWFHgg5WC4ahLFAoRDHwY5bB5IAICQ45bCxI3JexA5EERQ5VOJQ6JeoZzgHBqwGHIi8JHKhyOOgwfEHKL8CY4g4UCwo5XwDCCSAarSOgpPCHIQmBHKAACCgKuFHKRpCDYZwRdpSsUOgZVFADBUDHCY1DHDh3FACg2fOS50EHP6svV0Q5/V2Y5/V2Y4YHP45/HP45/HP4ABwA5/HP45/HP45/HP45/HP45/HP45/HP45pHDQ6eHDY6dHP45/HP45/HP45/AD+AFo0IF0o5/HPzyHHPI4xVw454VmSuGHGZ0EOWgA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHIA==")) From 14c44e61c4323ae68a0fd3a3b62b4c83514c4fa0 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Mon, 21 Apr 2025 17:45:54 +0200 Subject: [PATCH 24/58] Update Buzzer.info --- apps/Buzzerapp/Buzzer.info | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/Buzzerapp/Buzzer.info b/apps/Buzzerapp/Buzzer.info index c45960cfed..9e0c6a8a37 100644 --- a/apps/Buzzerapp/Buzzer.info +++ b/apps/Buzzerapp/Buzzer.info @@ -1,7 +1,7 @@ { "id": "buzzer", "name": "Buzzer", - "type": "app", + "type": "clock", "version": "0.01", "icon": "app.png", "screenshots": [], @@ -10,7 +10,7 @@ "supports": ["BANGLEJS2"], "readme": "README.md", "storage": [ - { "name": "Buzzer.app.js", "url": "Buzzer.app.js" }, + { "name": "Buzzerapp.app.js", "url": "Buzzer.app.js" }, { "name": "Buzzer.img", "url": "Buzzer.img", "evaluate": true } ] } From 2a5277ceb8e4bee727b2955280d6e1b7ab7a5286 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 12:04:14 +0200 Subject: [PATCH 25/58] Update Buzzer.info --- apps/Buzzerapp/Buzzer.info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/Buzzerapp/Buzzer.info b/apps/Buzzerapp/Buzzer.info index 9e0c6a8a37..e2cb7ac4fd 100644 --- a/apps/Buzzerapp/Buzzer.info +++ b/apps/Buzzerapp/Buzzer.info @@ -1,5 +1,5 @@ { - "id": "buzzer", + "id": "Buzzerapp", "name": "Buzzer", "type": "clock", "version": "0.01", From 7c444cfda10cc8e92d1e819082c032e8893ae3df Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 12:05:53 +0200 Subject: [PATCH 26/58] Update Buzzer.info --- apps/Buzzerapp/Buzzer.info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/Buzzerapp/Buzzer.info b/apps/Buzzerapp/Buzzer.info index e2cb7ac4fd..46405a3b58 100644 --- a/apps/Buzzerapp/Buzzer.info +++ b/apps/Buzzerapp/Buzzer.info @@ -3,7 +3,7 @@ "name": "Buzzer", "type": "clock", "version": "0.01", - "icon": "app.png", + "icon": "app-icon.js", "screenshots": [], "description": "A quiz buzzer system by help of Puck.js", "author": "Brijesh", From 9c1f2ef21de60073d8e929b27d7ced4b7c0a74f8 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 12:19:27 +0200 Subject: [PATCH 27/58] Delete apps/Buzzerapp/app-icon.js --- apps/Buzzerapp/app-icon.js | 1 - 1 file changed, 1 deletion(-) delete mode 100644 apps/Buzzerapp/app-icon.js diff --git a/apps/Buzzerapp/app-icon.js b/apps/Buzzerapp/app-icon.js deleted file mode 100644 index 96e4aca900..0000000000 --- a/apps/Buzzerapp/app-icon.js +++ /dev/null @@ -1 +0,0 @@ -require("heatshrink").decompress(atob("ulwwkBxAA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4AIwEAAAQZUDAcIHDIeDHSoYFHTBxEHKgZHHSweDDQIFCOaiwbZLpaGC6w4BK5gREVxQQLHJw4EK5ILJc4wRCHKY4IDo4uEBYo5GhBdDOSbHFAoKhLBgoKBIIQ6DOiYWEKJi6NCAp0TYo5yIHJoaFHKwVDUIg5RCwyXEcyLDEM5YLKBQwkEHKhbFWgg5MCw5eGHKaTHCY4UCBAwWFHgg5WC4ahLFAoRDHwY5bB5IAICQ45bCxI3JexA5EERQ5VOJQ6JeoZzgHBqwGHIi8JHKhyOOgwfEHKL8CY4g4UCwo5XwDCCSAarSOgpPCHIQmBHKAACCgKuFHKRpCDYZwRdpSsUOgZVFADBUDHCY1DHDh3FACg2fOS50EHP6svV0Q5/V2Y5/V2Y4YHP45/HP45/HP4ABwA5/HP45/HP45/HP45/HP45/HP45/HP45pHDQ6eHDY6dHP45/HP45/HP45/AD+AFo0IF0o5/HPzyHHPI4xVw454VmSuGHGZ0EOWgA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHIA==")) From be068089bdacc10b2a0f42f3f8074f7595bf7592 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 12:20:27 +0200 Subject: [PATCH 28/58] Add files via upload --- apps/Buzzerapp/app.png | Bin 0 -> 4298 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/Buzzerapp/app.png diff --git a/apps/Buzzerapp/app.png b/apps/Buzzerapp/app.png new file mode 100644 index 0000000000000000000000000000000000000000..b95cc0e1050705808183db61bc1937be90e299eb GIT binary patch literal 4298 zcmbtYXE>Yh+fHlmy%j~xB1-W?sMt!8`q9RyJwmA>)vB~&@4btrYD-CtqD55|^|wlD z?^U%|t*HO){rrA;k2lAY+<8Wx=en=!JkRUA6K!@!pMjQ_76O4V7#ipxz~~R&kEkiZ zXFr{VJQyzdA@t#pcYXY;V29jI%R~zTAtcg~94Np(%_D>Reh>&_`^EcGr%$Of1j78l zP)Exm&~78|sWJP?d8g*b_H~-e*q7K!A=(tqe)oTCxgR1EQ9sJV^gK~_H-d53@Zz=ai8?l zzfa%gWsmUp%kNc^Lkx7F2FEPIXMEHnWYwDR;x&6wBQq193xE`*+vY|Kk3 zrDutqom~fq!?Cln!ms!2#vY4u#&$HynV6U?K2kA|%^dn1LMExGm`2ISZ$RI^9ecnV zES9#QQeIYubLvbOOcv2Ms30PooJ8vC>sdQ}ze4FH*=fP+O;#2+^1U;S%)RQDqO3Hn zQU$N;>oYJ%b5tj*B?SgmBX{rKWxJ2JTxlt_kfLQ|ECzQ%piol1S@NNzv$JDj;42N5 z@zGI(wUMflsgF^Dv%|s)XK}j^CL05W1j( z;Vi&4HSrc;P9zfqH5m&ByG$e6=RVhYj#Rt!aEgkF!SR-%4&26hsvKN$c41TAD_lF& z&0@9n^_&$}RS~VNnwQDQ2=0TzX=!PnQFXgDwE4@+uKenO%y)~8Ll9*;{{D))ySvYH zQB{+V^QR4qj`c=oK;n5|=$o6dX-m*z0vX0i**O!`sAskUg-VRMNDoW~hrlzO=I)Kwo zPDufQUe0_Lgte>c^y`O3R#!tM*lDY;$6g|%v_IOO>+0`caob{bt>Kx$oXUKQ=Zgeo zEG43jj*qpZ(y=c0k4{fTgoQ5yD0YlIcoAP*Eao*~kWhrlzL;jMI*^`Hi`! zF1rt&m}DTzt?FMI%beRA0So#gq^{1-8chy15M$u+QYIl_&2n*ZQAk07t;V$%i^Nm1 zXo;mZzM`KhDk`G5opJqAJ5)&c12aE=T#Z}*ZY(Sbz_Y!-pGhZ7E0pr8j10rr*jQJ0 zcU!SZZc^Y~(~azE*Ir(b2yzMvhrgs_l^1_WFqc(-)r)D(yf}wxmRXZ_d*rC;==|8m z1OUC3dvixT3YRh5@p@hp^$f?y$IxtJk~8FGhhtk?D3v^h6nJqva&jR}O+h>!f6Ka1 z5(JCEU;^jDxtf|84!=0TH_&Q7@zzusE<0b@OkX!P^0mFzQ|3x@H0~7|n* zaXJ9-Vs~Cefg|vep~l56MgY4COZ;QDE~df3L0NHot7NN@-9vRt-4d6?p-Uz%2@CAAJ z{(Vgi&P*aHC1oB>1k&l)nQ)~~i>lFvG2Ms)Y~V|o1ufvy!-@KT3e=|Byp$H252r&5 z3Iv^R@Bl(9bUELszD^h60G`lvtrk>E+Ui{xIL#dq0>`~HD#8N3^}O%tOd*`adpi(Fm}V53NF}r zBkgnw${w4Dv1uI5l7W)|<_?2zbX71Um3MZ{G2o#Wkm^_8qX(k-+CnNhJA3u{rawmo zG3M;_Py`TZCiw6Qqo77y!Hd5<;->ju0VlRQxE=_>U{`Ku%60&?JnB&Ea3l!*^A8Vw zyO5X|k#bRyTjSJ5Q}7+xUj>-(ZZYX@E5zhiA=^^J|`V`5@#e!Mt4unG$cvp?Bi?Q58v zv;i{ZwECmSb~+C($PXcztY0~-`J zzeclNP9m|2qn(|dS|E~Aa&qFp27s2w&loxJ$3JXA<^7nKGvQvBJ#+vd%^k>R zT2_`puCh6R{|$K^g0s2*~6~qW%^+!r>A$# z%$SKpVsfu5=r2VGL!+V;Fkf4xNqZDEh_HCGD@R)Pkp@x*cd4rvPwkC7o!tzuDzW*aX!vRU^ zaJ(ukoNc@u*Xp;zxO(s`CN@?CrN-#u;xarwZj>r+iut9is4nI|*>K_IHfCB2qN0R_ zh2231u(*HU5L~CDBbwPGdE-V3cLWZIx}6NuGEi1Uw?6*weSO6s(JAe7vu-;oO1bfU zul~{Y@bE}WO&waYuAcHP`SJyhs33w#ngGYXzud-{CrY+Iz{bGi=R~wm@-@ljvcgaEr1k?RU&fu5NFX^E)b?pP{>I}5<-Xt)ls@#yOz?*xhxZAiUP`Z2184~Zf;ZKOwZq(( z@KQW}$)}txwC$zGP_dS5riiq3&lpOHH$HH$S2;O9fAfYustzeQ8oVYYz%kB~_wZMv z-wHD)CuO`|C=kD$R9gutDfsi}pC+^pTmggb)q9P>P76=}Y=l}!b?mPWa7x1S$-Qoqa z<8_`)Q&sD-b}TXVEAwahx}c?{ikUQReSY~N6p8;fSg3!T%Q(5vH_R1i^6L!rHy|$C z9@!fJB$opM0!X&oyc*)b@3V7qI)WbUP1SGJKHm|$rPel;dGu-kNb7aGPe=K3=wrtV zIgMr$Kl(V&@!UwF(^n<b%Yc$XG+zkzBG|L|#{{8nF?KNR38JQ*hgWJE?)^u^hf0VGy?hhYc!&~+w zZYn(2D+LPx{R3;DVn^n|5vJ4uD*RY?<~k=u-sAt-KX7fuD{n7%ud=~))gvV=?4#fm z5&!F8O8xL0V}<6L(wN zE1E`0S-q|+<0io&BVjT7jBm_B2Bps@esBPT(>#7@OB!&#=yoPTM~7Uq%xXJlfJ&xP zLX91=uO)(>3e<*X*Pkqf1}-M+17C)Ja_;=DYWC3SL_sXIOn;46#-?FF zT%+WW9E)P_cD_MNO+BlxnKUpkfZ3y}WrCZ*c_MK4Yg~5=L!iIrJRi}06# zFF<);%xJ!+qodQdw9K$7Zg|F~6=1FEcq9AQf3g*7Jx64vWMzxT$B|&|2w<)U)?T=! zp3I@)vb(k!Ok9_-97YdAxxj)LtejtY4pEVln*|1{FmOX(_p6=;N52mLD<|BbH+ZfJ jl694qgZuwHoKtaW|65lXdB6<*e}EY3-qCpnx5xe$QpghL literal 0 HcmV?d00001 From d80ccbea9fab08b56ee3dc1203167ae69005288c Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 12:21:16 +0200 Subject: [PATCH 29/58] Update Buzzer.info --- apps/Buzzerapp/Buzzer.info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/Buzzerapp/Buzzer.info b/apps/Buzzerapp/Buzzer.info index 46405a3b58..e2cb7ac4fd 100644 --- a/apps/Buzzerapp/Buzzer.info +++ b/apps/Buzzerapp/Buzzer.info @@ -3,7 +3,7 @@ "name": "Buzzer", "type": "clock", "version": "0.01", - "icon": "app-icon.js", + "icon": "app.png", "screenshots": [], "description": "A quiz buzzer system by help of Puck.js", "author": "Brijesh", From ad2accb80f5476fbaed089e73dfff067007b928b Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 12:48:22 +0200 Subject: [PATCH 30/58] Update Buzzer.info From 0c20b8b2484f908e4397c22897f6f780e776785a Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 13:46:23 +0200 Subject: [PATCH 31/58] Update Buzzer.info --- apps/Buzzerapp/Buzzer.info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/Buzzerapp/Buzzer.info b/apps/Buzzerapp/Buzzer.info index e2cb7ac4fd..d57684d1cc 100644 --- a/apps/Buzzerapp/Buzzer.info +++ b/apps/Buzzerapp/Buzzer.info @@ -10,7 +10,7 @@ "supports": ["BANGLEJS2"], "readme": "README.md", "storage": [ - { "name": "Buzzerapp.app.js", "url": "Buzzer.app.js" }, + { "name": "Buzzer.app.js", "url": "Buzzer.app.js" }, { "name": "Buzzer.img", "url": "Buzzer.img", "evaluate": true } ] } From 6f6e5c5b97f60fa4a7048e5d86ac45b4da2b3f4a Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 14:05:00 +0200 Subject: [PATCH 32/58] Update Buzzer.info From def2471aed2d7e8da0ffda91ca02c0d7ac155bab Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 14:28:09 +0200 Subject: [PATCH 33/58] Update Buzzer.info --- apps/Buzzerapp/Buzzer.info | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/Buzzerapp/Buzzer.info b/apps/Buzzerapp/Buzzer.info index d57684d1cc..9248d359ab 100644 --- a/apps/Buzzerapp/Buzzer.info +++ b/apps/Buzzerapp/Buzzer.info @@ -10,7 +10,7 @@ "supports": ["BANGLEJS2"], "readme": "README.md", "storage": [ - { "name": "Buzzer.app.js", "url": "Buzzer.app.js" }, - { "name": "Buzzer.img", "url": "Buzzer.img", "evaluate": true } + { "name": "Buzzerapp.app.js", "url": "app.js" }, + { "name": "Buzzerapp.img", "url": "Buzzer.img", "evaluate": true } ] } From 308ac058bb88a692289763e920b61fbaa7c49d38 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 14:38:51 +0200 Subject: [PATCH 34/58] Update Buzzer.info --- apps/Buzzerapp/Buzzer.info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/Buzzerapp/Buzzer.info b/apps/Buzzerapp/Buzzer.info index 9248d359ab..d91457e67e 100644 --- a/apps/Buzzerapp/Buzzer.info +++ b/apps/Buzzerapp/Buzzer.info @@ -10,7 +10,7 @@ "supports": ["BANGLEJS2"], "readme": "README.md", "storage": [ - { "name": "Buzzerapp.app.js", "url": "app.js" }, + { "name": "Buzzerapp.app.js", "url": "Buzzerapp.app.js" }, { "name": "Buzzerapp.img", "url": "Buzzer.img", "evaluate": true } ] } From bca7acc3fdc67d41fb2f9240c1e58b1274af5fda Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 14:40:12 +0200 Subject: [PATCH 35/58] Create Buzzerapp.app.js --- apps/Buzzerapp/Buzzerapp.app.js | 77 +++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 apps/Buzzerapp/Buzzerapp.app.js diff --git a/apps/Buzzerapp/Buzzerapp.app.js b/apps/Buzzerapp/Buzzerapp.app.js new file mode 100644 index 0000000000..69471cc55e --- /dev/null +++ b/apps/Buzzerapp/Buzzerapp.app.js @@ -0,0 +1,77 @@ +Bluetooth.setConsole(false); +g.clear(); +g.setFont("6x8", 2); + +let buzzedList = []; + +// Decode DataView to String +function decodeBLEString(dataView) { + let s = ""; + for (let i = 0; i < dataView.byteLength; i++) { + s += String.fromCharCode(dataView.getUint8(i)); + } + return s; +} + +// Display buzz order +function updateDisplay() { + g.clear(); + g.drawString("📋 Buzz Order:", 10, 10); + buzzedList.forEach((name, i) => { + g.drawString((i + 1) + ". " + name, 10, 30 + i * 20); + }); + if (buzzedList.length === 0) { + g.drawString("Waiting for buzzers...", 10, 50); + } +} + +// Sound & vibration feedback +function alertForRank(rank) { + if (rank === 0) { + Bangle.buzz(500); + Bangle.beep(); + setTimeout(() => Bangle.beep(), 200); + } else { + Bangle.buzz(150); + } +} + +// Scan and connect +function scanForBuzzers() { + NRF.requestDevice({ filters: [{ namePrefix: "Puck" }], timeout: 20000 }) + .then(device => device.gatt.connect()) + .then(gatt => gatt.getPrimaryService("6e400001-b5a3-f393-e0a9-e50e24dcca9e")) + .then(service => service.getCharacteristic("6e400003-b5a3-f393-e0a9-e50e24dcca9e")) + .then(characteristic => { + characteristic.on('characteristicvaluechanged', event => { + let value = decodeBLEString(event.target.value); + try { + let msg = JSON.parse(value); + if (msg.buzz && msg.name && !buzzedList.includes(msg.name)) { + buzzedList.push(msg.name); + alertForRank(buzzedList.length - 1); + updateDisplay(); + } + } catch (e) { + print("Parse error:", value); + } + }); + return characteristic.startNotifications(); + }) + .catch(err => { + g.clear(); + g.drawString("⚠️ Connect error:", 10, 30); + g.drawString(err.toString(), 10, 50); + }); +} + +// Reset round +setWatch(() => { + buzzedList = []; + updateDisplay(); + scanForBuzzers(); +}, BTN, { repeat: true, edge: "rising", debounce: 50 }); + +// Start first scan +updateDisplay(); +scanForBuzzers(); From 29e82fe20760d356b666838e5b9ccd90ff9575bd Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 14:40:24 +0200 Subject: [PATCH 36/58] Delete apps/Buzzerapp/Buzzer.app.js --- apps/Buzzerapp/Buzzer.app.js | 77 ------------------------------------ 1 file changed, 77 deletions(-) delete mode 100644 apps/Buzzerapp/Buzzer.app.js diff --git a/apps/Buzzerapp/Buzzer.app.js b/apps/Buzzerapp/Buzzer.app.js deleted file mode 100644 index 69471cc55e..0000000000 --- a/apps/Buzzerapp/Buzzer.app.js +++ /dev/null @@ -1,77 +0,0 @@ -Bluetooth.setConsole(false); -g.clear(); -g.setFont("6x8", 2); - -let buzzedList = []; - -// Decode DataView to String -function decodeBLEString(dataView) { - let s = ""; - for (let i = 0; i < dataView.byteLength; i++) { - s += String.fromCharCode(dataView.getUint8(i)); - } - return s; -} - -// Display buzz order -function updateDisplay() { - g.clear(); - g.drawString("📋 Buzz Order:", 10, 10); - buzzedList.forEach((name, i) => { - g.drawString((i + 1) + ". " + name, 10, 30 + i * 20); - }); - if (buzzedList.length === 0) { - g.drawString("Waiting for buzzers...", 10, 50); - } -} - -// Sound & vibration feedback -function alertForRank(rank) { - if (rank === 0) { - Bangle.buzz(500); - Bangle.beep(); - setTimeout(() => Bangle.beep(), 200); - } else { - Bangle.buzz(150); - } -} - -// Scan and connect -function scanForBuzzers() { - NRF.requestDevice({ filters: [{ namePrefix: "Puck" }], timeout: 20000 }) - .then(device => device.gatt.connect()) - .then(gatt => gatt.getPrimaryService("6e400001-b5a3-f393-e0a9-e50e24dcca9e")) - .then(service => service.getCharacteristic("6e400003-b5a3-f393-e0a9-e50e24dcca9e")) - .then(characteristic => { - characteristic.on('characteristicvaluechanged', event => { - let value = decodeBLEString(event.target.value); - try { - let msg = JSON.parse(value); - if (msg.buzz && msg.name && !buzzedList.includes(msg.name)) { - buzzedList.push(msg.name); - alertForRank(buzzedList.length - 1); - updateDisplay(); - } - } catch (e) { - print("Parse error:", value); - } - }); - return characteristic.startNotifications(); - }) - .catch(err => { - g.clear(); - g.drawString("⚠️ Connect error:", 10, 30); - g.drawString(err.toString(), 10, 50); - }); -} - -// Reset round -setWatch(() => { - buzzedList = []; - updateDisplay(); - scanForBuzzers(); -}, BTN, { repeat: true, edge: "rising", debounce: 50 }); - -// Start first scan -updateDisplay(); -scanForBuzzers(); From 3e540934661b31c2b0e513003fdafab019817c74 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:07:35 +0200 Subject: [PATCH 37/58] Create app-icon.js --- apps/Buzzerapp/app-icon.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/Buzzerapp/app-icon.js diff --git a/apps/Buzzerapp/app-icon.js b/apps/Buzzerapp/app-icon.js new file mode 100644 index 0000000000..96e4aca900 --- /dev/null +++ b/apps/Buzzerapp/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("ulwwkBxAA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4AIwEAAAQZUDAcIHDIeDHSoYFHTBxEHKgZHHSweDDQIFCOaiwbZLpaGC6w4BK5gREVxQQLHJw4EK5ILJc4wRCHKY4IDo4uEBYo5GhBdDOSbHFAoKhLBgoKBIIQ6DOiYWEKJi6NCAp0TYo5yIHJoaFHKwVDUIg5RCwyXEcyLDEM5YLKBQwkEHKhbFWgg5MCw5eGHKaTHCY4UCBAwWFHgg5WC4ahLFAoRDHwY5bB5IAICQ45bCxI3JexA5EERQ5VOJQ6JeoZzgHBqwGHIi8JHKhyOOgwfEHKL8CY4g4UCwo5XwDCCSAarSOgpPCHIQmBHKAACCgKuFHKRpCDYZwRdpSsUOgZVFADBUDHCY1DHDh3FACg2fOS50EHP6svV0Q5/V2Y5/V2Y4YHP45/HP45/HP4ABwA5/HP45/HP45/HP45/HP45/HP45/HP45pHDQ6eHDY6dHP45/HP45/HP45/AD+AFo0IF0o5/HPzyHHPI4xVw454VmSuGHGZ0EOWgA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHIA==")) From 59cc73894cf8c8d06f86c6192383776247226566 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:08:06 +0200 Subject: [PATCH 38/58] Delete apps/Buzzerapp/Buzzer.img --- apps/Buzzerapp/Buzzer.img | 1 - 1 file changed, 1 deletion(-) delete mode 100644 apps/Buzzerapp/Buzzer.img diff --git a/apps/Buzzerapp/Buzzer.img b/apps/Buzzerapp/Buzzer.img deleted file mode 100644 index 96e4aca900..0000000000 --- a/apps/Buzzerapp/Buzzer.img +++ /dev/null @@ -1 +0,0 @@ -require("heatshrink").decompress(atob("ulwwkBxAA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4AIwEAAAQZUDAcIHDIeDHSoYFHTBxEHKgZHHSweDDQIFCOaiwbZLpaGC6w4BK5gREVxQQLHJw4EK5ILJc4wRCHKY4IDo4uEBYo5GhBdDOSbHFAoKhLBgoKBIIQ6DOiYWEKJi6NCAp0TYo5yIHJoaFHKwVDUIg5RCwyXEcyLDEM5YLKBQwkEHKhbFWgg5MCw5eGHKaTHCY4UCBAwWFHgg5WC4ahLFAoRDHwY5bB5IAICQ45bCxI3JexA5EERQ5VOJQ6JeoZzgHBqwGHIi8JHKhyOOgwfEHKL8CY4g4UCwo5XwDCCSAarSOgpPCHIQmBHKAACCgKuFHKRpCDYZwRdpSsUOgZVFADBUDHCY1DHDh3FACg2fOS50EHP6svV0Q5/V2Y5/V2Y4YHP45/HP45/HP4ABwA5/HP45/HP45/HP45/HP45/HP45/HP45pHDQ6eHDY6dHP45/HP45/HP45/AD+AFo0IF0o5/HPzyHHPI4xVw454VmSuGHGZ0EOWgA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHIA==")) From 6aa823dfba23efdabd3d1000150f6792d5c0b9a8 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:09:22 +0200 Subject: [PATCH 39/58] Update Buzzer.info --- apps/Buzzerapp/Buzzer.info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/Buzzerapp/Buzzer.info b/apps/Buzzerapp/Buzzer.info index d91457e67e..3744995776 100644 --- a/apps/Buzzerapp/Buzzer.info +++ b/apps/Buzzerapp/Buzzer.info @@ -11,6 +11,6 @@ "readme": "README.md", "storage": [ { "name": "Buzzerapp.app.js", "url": "Buzzerapp.app.js" }, - { "name": "Buzzerapp.img", "url": "Buzzer.img", "evaluate": true } + { "name": "Buzzerapp.img", "url": "app-icon.js", "evaluate": true } ] } From c17dc2cbff96cfd0cc1c7f734e42154ce28307be Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:27:56 +0200 Subject: [PATCH 40/58] Update and rename Buzzer.info to metadata.json --- apps/Buzzerapp/Buzzer.info | 16 ---------------- apps/Buzzerapp/metadata.json | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 16 deletions(-) delete mode 100644 apps/Buzzerapp/Buzzer.info create mode 100644 apps/Buzzerapp/metadata.json diff --git a/apps/Buzzerapp/Buzzer.info b/apps/Buzzerapp/Buzzer.info deleted file mode 100644 index 3744995776..0000000000 --- a/apps/Buzzerapp/Buzzer.info +++ /dev/null @@ -1,16 +0,0 @@ -{ - "id": "Buzzerapp", - "name": "Buzzer", - "type": "clock", - "version": "0.01", - "icon": "app.png", - "screenshots": [], - "description": "A quiz buzzer system by help of Puck.js", - "author": "Brijesh", - "supports": ["BANGLEJS2"], - "readme": "README.md", - "storage": [ - { "name": "Buzzerapp.app.js", "url": "Buzzerapp.app.js" }, - { "name": "Buzzerapp.img", "url": "app-icon.js", "evaluate": true } - ] -} diff --git a/apps/Buzzerapp/metadata.json b/apps/Buzzerapp/metadata.json new file mode 100644 index 0000000000..afd5de1d93 --- /dev/null +++ b/apps/Buzzerapp/metadata.json @@ -0,0 +1,14 @@ +{ "id": "Buzzerapp", + "name": "Buzzer APP", + "shortName":"Bapp", + "icon": "app.png", + "version":"0.01", + "description": "This is my buzzer app", + "tags": "tool", + "supports" : ["BANGLEJS", "BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"Buzzerapp.app.js","url":"app.js"}, + {"name":"Buzzerapp.img","url":"app-icon.js","evaluate":true} + ] +} From 663d8e596dd9718241d603b32973b4d3123ba607 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:29:33 +0200 Subject: [PATCH 41/58] Rename Buzzerapp.app.js to app.js --- apps/Buzzerapp/{Buzzerapp.app.js => app.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename apps/Buzzerapp/{Buzzerapp.app.js => app.js} (100%) diff --git a/apps/Buzzerapp/Buzzerapp.app.js b/apps/Buzzerapp/app.js similarity index 100% rename from apps/Buzzerapp/Buzzerapp.app.js rename to apps/Buzzerapp/app.js From 5a5e185be11f884398321dfb1fe1fe7583bc1995 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:38:37 +0200 Subject: [PATCH 42/58] Update app-icon.js --- apps/Buzzerapp/app-icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/Buzzerapp/app-icon.js b/apps/Buzzerapp/app-icon.js index 96e4aca900..6f803249a0 100644 --- a/apps/Buzzerapp/app-icon.js +++ b/apps/Buzzerapp/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("ulwwkBxAA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4AIwEAAAQZUDAcIHDIeDHSoYFHTBxEHKgZHHSweDDQIFCOaiwbZLpaGC6w4BK5gREVxQQLHJw4EK5ILJc4wRCHKY4IDo4uEBYo5GhBdDOSbHFAoKhLBgoKBIIQ6DOiYWEKJi6NCAp0TYo5yIHJoaFHKwVDUIg5RCwyXEcyLDEM5YLKBQwkEHKhbFWgg5MCw5eGHKaTHCY4UCBAwWFHgg5WC4ahLFAoRDHwY5bB5IAICQ45bCxI3JexA5EERQ5VOJQ6JeoZzgHBqwGHIi8JHKhyOOgwfEHKL8CY4g4UCwo5XwDCCSAarSOgpPCHIQmBHKAACCgKuFHKRpCDYZwRdpSsUOgZVFADBUDHCY1DHDh3FACg2fOS50EHP6svV0Q5/V2Y5/V2Y4YHP45/HP45/HP4ABwA5/HP45/HP45/HP45/HP45/HP45/HP45pHDQ6eHDY6dHP45/HP45/HP45/AD+AFo0IF0o5/HPzyHHPI4xVw454VmSuGHGZ0EOWgA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHIA==")) +require("heatshrink").decompress(atob("ulwgn/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/ABPt5nN94YU/3c5neG7X+ykyiMimu/DKXpochiUjtY5ZuMAgU0mMAj4ZS0EAkdDiEAlI4X2MBpSqC9WfOaaIC/uTiFNHCv3iNdZLQAD2kCZKYABsMqAYPszF41oRJ5OKQYQAF5WHxXP//+wMZOSkD7//88hgEAiVMCI/miEBlYKG0cRgEBiev//6iJ0T2EsDAMQgVpzFBgARHsBGBgJoBAAf+gEVxOFiBaCyEtHCP+kBSBwEVDYIIB1QRG/kQHIMAr4LFzYDC/cwjf/+sGHKP4ggCBgQ8BABX5HAUAMZfnVYUhQgoAL8cM/+gjj4NHJ6rDyF/HKGxp6vD//omUjxw5LfgIAE68ikgcC+yrB8UvHKFwz6vC//6iEBboOfHKH2gEBgECU4P+kPv+sNHB/+qHv8ivB/+Aiu97dRhASF/eK3e7y9tBQlAk/O7VAjYeCx/4Dgw5KmX/6SIB/MC34xCnCQQovfY4R0C4NP/UWDZ/9kYWBr7FBhYLD94RF29Tmczo2cBYnuZ4lvLgMf/cUHKWwv//yNPCBHokLmDAAMVQoQAF+Ut//jh/8HKMiHIdg14PH6o3FAAUCzwSG+0MHIX7irnQmKtDqDKBAAvFiA5IHRH4hX/6cf/UHHJ5uB5/Sl45I/EgHBIABggVF/ELLgM/+4+BAB+Qv/khv/uGPQAtAHBYABjIVE+kd/+Ax/kjw5Q6WP/EG/+xOwILEHBoABt4VD8M+/8x7/1aQIAR/1K//zYon8VZgADgoWDoCQBu42SAAv8iXfAoXCHB4ABtwVB/UE943YAAXJPYZyQAAMYCwWNHDYAE+Y4RgEB342gAAVwHKUAj44i/kQHKcFHMX1HCYABV0XBHKs/HMNgHKsbHEH+cygABgw5g/A4VgEC745f+Y5WgG/HL/gHK9/HL+wHK9PHL+AHK8uHL9QHK8OHL8wHK8MHL8QHK8LHPEKHP45/HP45/HP45/HP45/HP45/ADn+HLEIHL37HC8AgY5e6Y5YgGPOTswHLMH945b2I4ZAANeHLdQHLcdHLdAHLcNHP45/AB+oxAAaxw5bAH4AEw93AAd6HOUgbYkFHOUwHIkGHOWAHIkJHOXgHIktHOX5HAcBz45y/9xHIUYHGf//dSiMm5450//97vfHGoA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHA=")) From b517f80d39b74c78572248a38ee50e5fb2b1be39 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:49:22 +0200 Subject: [PATCH 43/58] Delete apps/Buzzerapp/app.png --- apps/Buzzerapp/app.png | Bin 4298 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 apps/Buzzerapp/app.png diff --git a/apps/Buzzerapp/app.png b/apps/Buzzerapp/app.png deleted file mode 100644 index b95cc0e1050705808183db61bc1937be90e299eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4298 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 From 7e00fb64c72c2fbdb36911a281e3720754ce1fdd Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:49:41 +0200 Subject: [PATCH 44/58] Add files via upload --- apps/Buzzerapp/app.png | Bin 0 -> 4298 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/Buzzerapp/app.png diff --git a/apps/Buzzerapp/app.png b/apps/Buzzerapp/app.png new file mode 100644 index 0000000000000000000000000000000000000000..b95cc0e1050705808183db61bc1937be90e299eb GIT binary patch literal 4298 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 literal 0 HcmV?d00001 From a318dbea417ede2c80733f80247e229cecdf8a9d Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:55:42 +0200 Subject: [PATCH 45/58] Delete apps/Buzzerapp/app.png --- apps/Buzzerapp/app.png | Bin 4298 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 apps/Buzzerapp/app.png diff --git a/apps/Buzzerapp/app.png b/apps/Buzzerapp/app.png deleted file mode 100644 index b95cc0e1050705808183db61bc1937be90e299eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4298 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 From 60c702367bf711f0af7a3ebf7b96734038dfdcc9 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:55:54 +0200 Subject: [PATCH 46/58] Add files via upload --- apps/Buzzerapp/app.png | Bin 0 -> 921 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/Buzzerapp/app.png diff --git a/apps/Buzzerapp/app.png b/apps/Buzzerapp/app.png new file mode 100644 index 0000000000000000000000000000000000000000..cf0442c3530dfb82c988a063847072c3c988ed86 GIT binary patch literal 921 zcmeAS@N?(olHy`uVBq!ia0vp^x**H}BpBoi_qqWog=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&_}|`tWO>_%)r2R7=#&*=dVZs z3bL1Y`ns~eWD(;xlP>iLJPXw1>FMGa;&J@#RqqVpKoPbF^+uDo@A5De^b)_epyZ*G zqLP^6BWC5umM(6=u7s0*j#ql4Vs{80QP8`iu{CSygPIuE|dBzuX=i8dJXEkT$RG)j==MdpEV_MU6Q+1WArI~RBv$kexiJjq_ zxcIaGBJM-8lJk1|zG^+;{IR6Uw(zV-M5spe>hjN((^(nrIPU%$9KPx9x~n@+Jk$NY z-!tVtBg5pmofk6M7woA@4y#$7ckk_rwf(CKUmv<~@!iVz&5vDNN@86OGYD#a{8I8N z=6QidXz14R=k0u7S-#s>>AlU{!gRvYRgqocx7kChif=)e#B&3~KRKtInm6y@wxW_| zagE%)8ey{-kEHR{@2pZP$-m#-wc?Vi=KFcw^CJ28cg**fU$Xhk&kORmc9Y9i)le*9r-o496Dpxk%i-EV{V-80TldDkQQ>By=#{_LF{5v}*uU-r8vl*kn= zlI5$?{`&jG@`$B@0NttZ#GUwo#PGJoaVA)ZQ=0&(E2+C(LB^4{7Dw6;n-0KBv#@`~2n1?xX8g z_{+aPdCOg!WaV0P%*8J8aisbn(AW?W8J`Kvs`t%|WweZ9^jmz>E8tm>AWajFR` z8IP}X^K**$xBTz&f4nvJ1*%n#g&lzDOtr){q9i4;B-JXpC>2OC7#SFu>Kd5n8X1Kc znp&BfSQ(jX8yHv_7&QI&yM>}5H$NpatrE9}&x^jL0X1mAZ79jiO)V}-%q_sJXUX>K sJArzHL3(n5%B@N&3sM;}a}(23^$YUScTN>(2TC(|y85}Sb4q9e06pA*fdBvi literal 0 HcmV?d00001 From 27469ea252a24581bebd953f82ddf6305b045b5a Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:58:46 +0200 Subject: [PATCH 47/58] Update app-icon.js --- apps/Buzzerapp/app-icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/Buzzerapp/app-icon.js b/apps/Buzzerapp/app-icon.js index 6f803249a0..d491b247cd 100644 --- a/apps/Buzzerapp/app-icon.js +++ b/apps/Buzzerapp/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("ulwgn/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/ABPt5nN94YU/3c5neG7X+ykyiMimu/DKXpochiUjtY5ZuMAgU0mMAj4ZS0EAkdDiEAlI4X2MBpSqC9WfOaaIC/uTiFNHCv3iNdZLQAD2kCZKYABsMqAYPszF41oRJ5OKQYQAF5WHxXP//+wMZOSkD7//88hgEAiVMCI/miEBlYKG0cRgEBiev//6iJ0T2EsDAMQgVpzFBgARHsBGBgJoBAAf+gEVxOFiBaCyEtHCP+kBSBwEVDYIIB1QRG/kQHIMAr4LFzYDC/cwjf/+sGHKP4ggCBgQ8BABX5HAUAMZfnVYUhQgoAL8cM/+gjj4NHJ6rDyF/HKGxp6vD//omUjxw5LfgIAE68ikgcC+yrB8UvHKFwz6vC//6iEBboOfHKH2gEBgECU4P+kPv+sNHB/+qHv8ivB/+Aiu97dRhASF/eK3e7y9tBQlAk/O7VAjYeCx/4Dgw5KmX/6SIB/MC34xCnCQQovfY4R0C4NP/UWDZ/9kYWBr7FBhYLD94RF29Tmczo2cBYnuZ4lvLgMf/cUHKWwv//yNPCBHokLmDAAMVQoQAF+Ut//jh/8HKMiHIdg14PH6o3FAAUCzwSG+0MHIX7irnQmKtDqDKBAAvFiA5IHRH4hX/6cf/UHHJ5uB5/Sl45I/EgHBIABggVF/ELLgM/+4+BAB+Qv/khv/uGPQAtAHBYABjIVE+kd/+Ax/kjw5Q6WP/EG/+xOwILEHBoABt4VD8M+/8x7/1aQIAR/1K//zYon8VZgADgoWDoCQBu42SAAv8iXfAoXCHB4ABtwVB/UE943YAAXJPYZyQAAMYCwWNHDYAE+Y4RgEB342gAAVwHKUAj44i/kQHKcFHMX1HCYABV0XBHKs/HMNgHKsbHEH+cygABgw5g/A4VgEC745f+Y5WgG/HL/gHK9/HL+wHK9PHL+AHK8uHL9QHK8OHL8wHK8MHL8QHK8LHPEKHP45/HP45/HP45/HP45/HP45/ADn+HLEIHL37HC8AgY5e6Y5YgGPOTswHLMH945b2I4ZAANeHLdQHLcdHLdAHLcNHP45/AB+oxAAaxw5bAH4AEw93AAd6HOUgbYkFHOUwHIkGHOWAHIkJHOXgHIktHOX5HAcBz45y/9xHIUYHGf//dSiMm5450//97vfHGoA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHA=")) +require("heatshrink").decompress(atob("lstgn/AH4A/AH4AN/d2tHvBIv8BIPPCo/nvfM34GC/wDC7fM02fCo331uGswiC804AYP6s1p64WG/WNtXu7wGB/MAjgEB7v9xHW74WFvl7/d3IYWBiIEB/No7+K1RYG4/6vm4OAP8zOdPIOM03dvmPCon9veOtxtC0sykVIHoW4EgIsG3HXUAVAgAABgQnB/uNvYsF/+txttKQMQCoQABGoOp5PMZRHP/QVFgFv/TTGLosgCosAY44AFsAVGgSwGAAvSCo0AhIVLbgIAHr5CTIYJvL+gsIjosLY4YAEgJwLFn4sN54VK4QsIZRfTCpEAjQVJ/YVJgF/CxPYu4AIvZwLAAWFs1rCJwAD+w+B14WS4cArwVS//Z1wVTAH4A/ACXwA=")) From 35e763892dc937e90f927cd02fa2dc70fb22286d Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Wed, 23 Apr 2025 13:24:27 +0200 Subject: [PATCH 48/58] Update app.js --- apps/Buzzerapp/app.js | 63 ++++++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/apps/Buzzerapp/app.js b/apps/Buzzerapp/app.js index 69471cc55e..3e9948cf33 100644 --- a/apps/Buzzerapp/app.js +++ b/apps/Buzzerapp/app.js @@ -4,16 +4,16 @@ g.setFont("6x8", 2); let buzzedList = []; -// Decode DataView to String +// Decode DataView to string (safe for BLE characteristic) function decodeBLEString(dataView) { let s = ""; for (let i = 0; i < dataView.byteLength; i++) { - s += String.fromCharCode(dataView.getUint8(i)); + s += String.fromCharCode(dataView.getUint8(i)); } return s; } -// Display buzz order +// Display buzzed order function updateDisplay() { g.clear(); g.drawString("📋 Buzz Order:", 10, 10); @@ -25,7 +25,7 @@ function updateDisplay() { } } -// Sound & vibration feedback +// Feedback for buzzed-in function alertForRank(rank) { if (rank === 0) { Bangle.buzz(500); @@ -36,42 +36,49 @@ function alertForRank(rank) { } } -// Scan and connect +// Scan for Puck.js devices one by one function scanForBuzzers() { NRF.requestDevice({ filters: [{ namePrefix: "Puck" }], timeout: 20000 }) - .then(device => device.gatt.connect()) - .then(gatt => gatt.getPrimaryService("6e400001-b5a3-f393-e0a9-e50e24dcca9e")) - .then(service => service.getCharacteristic("6e400003-b5a3-f393-e0a9-e50e24dcca9e")) - .then(characteristic => { - characteristic.on('characteristicvaluechanged', event => { - let value = decodeBLEString(event.target.value); - try { - let msg = JSON.parse(value); - if (msg.buzz && msg.name && !buzzedList.includes(msg.name)) { - buzzedList.push(msg.name); - alertForRank(buzzedList.length - 1); - updateDisplay(); + .then(device => device.gatt.connect() + .then(gatt => gatt.getPrimaryService("6e400001-b5a3-f393-e0a9-e50e24dcca9e")) + .then(service => service.getCharacteristic("6e400003-b5a3-f393-e0a9-e50e24dcca9e")) + .then(characteristic => { + characteristic.on('characteristicvaluechanged', event => { + let value = decodeBLEString(event.target.value); + try { + let msg = JSON.parse(value); + if (msg.buzz && msg.name && !buzzedList.includes(msg.name)) { + buzzedList.push(msg.name); + alertForRank(buzzedList.length - 1); + updateDisplay(); + } + } catch (e) { + print("Parse error:", value); } - } catch (e) { - print("Parse error:", value); - } - }); - return characteristic.startNotifications(); - }) + + // Disconnect safely after receiving + let device = characteristic.device; + if (device && device.gatt && device.gatt.connected) { + device.gatt.disconnect(); + } + setTimeout(scanForBuzzers, 1000); + }); + return characteristic.startNotifications(); + }) + ) .catch(err => { - g.clear(); - g.drawString("⚠️ Connect error:", 10, 30); - g.drawString(err.toString(), 10, 50); + print("Scan/connect failed:", err); + setTimeout(scanForBuzzers, 2000); }); } -// Reset round +// Button on Bangle to reset round setWatch(() => { buzzedList = []; updateDisplay(); scanForBuzzers(); }, BTN, { repeat: true, edge: "rising", debounce: 50 }); -// Start first scan +// Start initial scan updateDisplay(); scanForBuzzers(); From d663c37551975138cec660ee4bd1ec5b37de5789 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Sun, 27 Apr 2025 15:06:35 +0200 Subject: [PATCH 49/58] Update ChangeLog --- apps/Buzzerapp/ChangeLog | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/Buzzerapp/ChangeLog b/apps/Buzzerapp/ChangeLog index 0140f68803..55ebb3e4b1 100644 --- a/apps/Buzzerapp/ChangeLog +++ b/apps/Buzzerapp/ChangeLog @@ -1,2 +1 @@ 0.01: New App -0.02: Update.... From 8ff9701470df809a35dc8fe9a78971799ca31627 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Sun, 27 Apr 2025 15:08:37 +0200 Subject: [PATCH 50/58] Delete apps/1watchface directory --- apps/1watchface/readme.txt | 1 - apps/1watchface/tempwatch.app.js | 45 -------------------------------- apps/1watchface/tempwatch.info | 10 ------- 3 files changed, 56 deletions(-) delete mode 100644 apps/1watchface/readme.txt delete mode 100644 apps/1watchface/tempwatch.app.js delete mode 100644 apps/1watchface/tempwatch.info diff --git a/apps/1watchface/readme.txt b/apps/1watchface/readme.txt deleted file mode 100644 index 8b13789179..0000000000 --- a/apps/1watchface/readme.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/apps/1watchface/tempwatch.app.js b/apps/1watchface/tempwatch.app.js deleted file mode 100644 index 6d409a6334..0000000000 --- a/apps/1watchface/tempwatch.app.js +++ /dev/null @@ -1,45 +0,0 @@ -let gatt; -let temp = "--.-"; - -function draw() { - g.clear(); - g.setFont("6x8", 2); - g.drawString("Temp: " + temp + "°C", 10, 30); - - g.setFont("Vector", 40); - let t = new Date(); - let timeStr = ("0"+t.getHours()).substr(-2) + ":" + ("0"+t.getMinutes()).substr(-2); - g.drawString(timeStr, 10, 80); -} - -setInterval(draw, 60 * 1000); -draw(); - -function connectPuck() { - NRF.requestDevice({ filters: [{ name: "Puck.js" }] }).then(device => { - return device.gatt.connect(); - }).then(g => { - gatt = g; - return gatt.getPrimaryService("6e400001-b5a3-f393-e0a9-e50e24dcca9e"); - }).then(service => { - return service.getCharacteristic("6e400003-b5a3-f393-e0a9-e50e24dcca9e"); - }).then(characteristic => { - characteristic.on('characteristicvaluechanged', e => { - let msg = E.toString(e.target.value.buffer); - if (msg.startsWith("Temp:")) { - temp = msg.slice(5); - draw(); - } - }); - characteristic.startNotifications(); - }).catch(err => { - console.log("Connection error:", err); - setTimeout(connectPuck, 10000); - }); -} - -connectPuck(); - -setWatch(() => { - load(); -}, BTN1, { repeat: false, edge: "rising" }); \ No newline at end of file diff --git a/apps/1watchface/tempwatch.info b/apps/1watchface/tempwatch.info deleted file mode 100644 index 7d0f053d9e..0000000000 --- a/apps/1watchface/tempwatch.info +++ /dev/null @@ -1,10 +0,0 @@ -{ - "id": "tempwatch", - "name": "Temp Watch Face", - "type": "clock", - "src": "tempwatch.app.js", - "icon": "tempwatch.png", - "sortorder": 100, - "version": "0.01", - "description": "Custom watch face that shows temperature from Puck.js over BLE." -} \ No newline at end of file From a4f912f495a1f811ed9f04847ae72a97e5ef6825 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Sun, 27 Apr 2025 15:26:40 +0200 Subject: [PATCH 51/58] Update README.md --- apps/Buzzerapp/README.md | 40 ++++++++++++++++------------------------ 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/apps/Buzzerapp/README.md b/apps/Buzzerapp/README.md index a77eb55180..1f9d2c36bd 100644 --- a/apps/Buzzerapp/README.md +++ b/apps/Buzzerapp/README.md @@ -1,34 +1,26 @@ -# Puck_Buzzer -A advanced new version with Dashboard on with [Bangle.js 2](https://www.espruino.com/Bangle.js2), and [Puck.js](https://www.espruino.com/Puck.js) +# App Name -# What's new here -1. Leaderboard on Bangle.js +Buzzerapp +Basically it use with puckjs for specially Quize round in school where student have to press the puck and Bangle show on it screen that who press first, second like... that +Main aim through this app is need to aware about the student how technology simply is working back side of this regular daily usage devices +## Usage -- Tracks who buzzed first -- Displays names in order -- Resets round on button press +Specially in Quize round in school where student have to press the puck and Bangle show on it screen that who press first, second like that.. +Teacher have a one bangle and other group of student have a one puck each in group. -2. Sound/Vibration Patterns +## Features -- First buzzer: 🎵 Beep twice + long vibration -- Others get short buzz only +A dashboard where every puck show who press first, second.... +Different Vibration type -# Number of participants -Each Puck.js has a unique name like "QuizBuzzer1", "QuizBuzzer2", etc. -Puck.js sends: { buzz: true, name: "Puck A" } -Bangle.js tracks the order people buzzed in. -(since Banglejs have a limitation here, it connect only 2 puck at a time) +## Controls -- Problem: - --Bangle.js (Central) can only connect to one (Fully operational) BLE Peripheral (i.e., Puck.js) at a time. +Bangle button for every new round of quize --It works well with 1–2 devices, but simultaneous interactions with 3+ Pucks is unreliable, especially if kids buzz fast. - --BLE scanning + connecting takes ~1s, so tight competition gets clunky. - -# IDE -https://www.espruino.com/ide/ +## Requests +BK7175 +## Creator +Brijesh From ab9b5afd460be3dcdb7cdc5b3e2568c4ec5515e7 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Sun, 27 Apr 2025 15:27:42 +0200 Subject: [PATCH 52/58] Update README.md --- apps/Buzzerapp/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/Buzzerapp/README.md b/apps/Buzzerapp/README.md index 1f9d2c36bd..4d9db753cc 100644 --- a/apps/Buzzerapp/README.md +++ b/apps/Buzzerapp/README.md @@ -1,6 +1,5 @@ -# App Name +# Buzzerapp -Buzzerapp Basically it use with puckjs for specially Quize round in school where student have to press the puck and Bangle show on it screen that who press first, second like... that Main aim through this app is need to aware about the student how technology simply is working back side of this regular daily usage devices ## Usage From 42fefbd3fdc505c7f3b7727b8c7fb8999c20cad2 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 29 Apr 2025 10:51:38 +0200 Subject: [PATCH 53/58] Update metadata.json --- apps/Buzzerapp/metadata.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/Buzzerapp/metadata.json b/apps/Buzzerapp/metadata.json index afd5de1d93..639d6edcac 100644 --- a/apps/Buzzerapp/metadata.json +++ b/apps/Buzzerapp/metadata.json @@ -1,9 +1,8 @@ { "id": "Buzzerapp", "name": "Buzzer APP", - "shortName":"Bapp", "icon": "app.png", "version":"0.01", - "description": "This is my buzzer app", + "description": "Quiz buzzer for school student", "tags": "tool", "supports" : ["BANGLEJS", "BANGLEJS2"], "readme": "README.md", From e416acc3a0dce95e02f9f84511a8dd516fc48755 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 29 Apr 2025 10:55:10 +0200 Subject: [PATCH 54/58] Delete apps/watchface --- apps/watchface | 1 - 1 file changed, 1 deletion(-) delete mode 100644 apps/watchface diff --git a/apps/watchface b/apps/watchface deleted file mode 100644 index 8b13789179..0000000000 --- a/apps/watchface +++ /dev/null @@ -1 +0,0 @@ - From ea6a5ac275fd473434179551a7c6285ce85cff4a Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 29 Apr 2025 11:09:11 +0200 Subject: [PATCH 55/58] Update README.md --- apps/Buzzerapp/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/Buzzerapp/README.md b/apps/Buzzerapp/README.md index 4d9db753cc..9c3e5cc767 100644 --- a/apps/Buzzerapp/README.md +++ b/apps/Buzzerapp/README.md @@ -4,8 +4,7 @@ Basically it use with puckjs for specially Quize round in school where student h Main aim through this app is need to aware about the student how technology simply is working back side of this regular daily usage devices ## Usage -Specially in Quize round in school where student have to press the puck and Bangle show on it screen that who press first, second like that.. -Teacher have a one bangle and other group of student have a one puck each in group. +During the quiz round, each student group is provided with a response button (puck), while the teacher operates a central control device (referred to as the "bangle"). When a student presses their group’s puck, the system registers the response time and displays the order in which each group responded—first, second, and so on—on the teacher's bangle screen. This setup ensures a fair and transparent method for determining which team answered first. ## Features From 2766ffc3565c36077c1b42a211eded8e904acf8b Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 29 Apr 2025 11:12:38 +0200 Subject: [PATCH 56/58] Update README.md --- apps/Buzzerapp/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/Buzzerapp/README.md b/apps/Buzzerapp/README.md index 9c3e5cc767..1dfc21022c 100644 --- a/apps/Buzzerapp/README.md +++ b/apps/Buzzerapp/README.md @@ -8,12 +8,12 @@ During the quiz round, each student group is provided with a response button (pu ## Features -A dashboard where every puck show who press first, second.... +A dashboard where every puck show who press first, second so on.., Different Vibration type ## Controls -Bangle button for every new round of quize +Bangle button for every new round of quiz ## Requests From 7aebe85da58e0c0514a3707b53a800352a8f0b45 Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 29 Apr 2025 11:25:23 +0200 Subject: [PATCH 57/58] Create puckjs-code --- apps/Buzzerapp/puckjs-code | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 apps/Buzzerapp/puckjs-code diff --git a/apps/Buzzerapp/puckjs-code b/apps/Buzzerapp/puckjs-code new file mode 100644 index 0000000000..9f10116fe4 --- /dev/null +++ b/apps/Buzzerapp/puckjs-code @@ -0,0 +1,15 @@ +const PUCK_NAME = "Puck A"; // Change to "Puck B", "Puck C" on others +let lastSent = 0; + +function sendBuzz() { + if (Date.now() - lastSent < 3000) return; // 3s cooldown + lastSent = Date.now(); + let msg = JSON.stringify({ buzz: true, name: PUCK_NAME }); + Bluetooth.println(msg); + LED.set(); setTimeout(() => LED.reset(), 200); +} + +setWatch(sendBuzz, BTN, { edge: "rising", repeat: true, debounce: 50 }); + +NRF.setAdvertising({}, { name: PUCK_NAME, connectable: true }); +console.log(PUCK_NAME + " ready!"); From f6a4ef907400d0a93a535c9529b66a428393c5ad Mon Sep 17 00:00:00 2001 From: BRIJESH KAPURIYA <71057381+BK7175@users.noreply.github.com> Date: Tue, 29 Apr 2025 11:40:12 +0200 Subject: [PATCH 58/58] Rename puckjs-code to puckjs-code.md --- apps/Buzzerapp/{puckjs-code => puckjs-code.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename apps/Buzzerapp/{puckjs-code => puckjs-code.md} (100%) diff --git a/apps/Buzzerapp/puckjs-code b/apps/Buzzerapp/puckjs-code.md similarity index 100% rename from apps/Buzzerapp/puckjs-code rename to apps/Buzzerapp/puckjs-code.md