mirror of https://github.com/espruino/BangleApps
Merge pull request #1889 from alessandrococco/buzz-patch
[buzz] Add support for new patternspull/1915/head^2
commit
9629148318
|
@ -10,3 +10,6 @@
|
||||||
0.09: Move some functions to new time_utils module
|
0.09: Move some functions to new time_utils module
|
||||||
0.10: Default to sched.js if custom js not found
|
0.10: Default to sched.js if custom js not found
|
||||||
0.11: Fix default dow
|
0.11: Fix default dow
|
||||||
|
0.12: Update default buzz patterns to new values
|
||||||
|
Improve timer message using formatDuration
|
||||||
|
Fix wrong fallback for buzz pattern
|
||||||
|
|
|
@ -106,8 +106,8 @@ exports.getSettings = function () {
|
||||||
defaultRepeat: false,
|
defaultRepeat: false,
|
||||||
buzzCount: 10,
|
buzzCount: 10,
|
||||||
buzzIntervalMillis: 3000, // 3 seconds
|
buzzIntervalMillis: 3000, // 3 seconds
|
||||||
defaultAlarmPattern: "..",
|
defaultAlarmPattern: "::",
|
||||||
defaultTimerPattern: ".."
|
defaultTimerPattern: "::"
|
||||||
},
|
},
|
||||||
require("Storage").readJSON("sched.settings.json", true) || {}
|
require("Storage").readJSON("sched.settings.json", true) || {}
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "sched",
|
"id": "sched",
|
||||||
"name": "Scheduler",
|
"name": "Scheduler",
|
||||||
"version": "0.11",
|
"version": "0.12",
|
||||||
"description": "Scheduling library for alarms and timers",
|
"description": "Scheduling library for alarms and timers",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"type": "scheduler",
|
"type": "scheduler",
|
||||||
|
|
|
@ -9,7 +9,7 @@ function showAlarm(alarm) {
|
||||||
const settings = require("sched").getSettings();
|
const settings = require("sched").getSettings();
|
||||||
|
|
||||||
let msg = "";
|
let msg = "";
|
||||||
msg += require("time_utils").formatTime(alarm.timer ? alarm.timer : alarm.t);
|
msg += alarm.timer ? require("time_utils").formatDuration(alarm.timer) : require("time_utils").formatTime(alarm.t);
|
||||||
if (alarm.msg) {
|
if (alarm.msg) {
|
||||||
msg += "\n"+alarm.msg;
|
msg += "\n"+alarm.msg;
|
||||||
} else {
|
} else {
|
||||||
|
@ -50,7 +50,8 @@ function showAlarm(alarm) {
|
||||||
Bangle.setLocked(false);
|
Bangle.setLocked(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
require("buzz").pattern(alarm.vibrate === undefined ? ".." : alarm.vibrate).then(() => {
|
const pattern = alarm.vibrate || (alarm.timer ? settings.defaultTimerPattern : settings.defaultAlarmPattern);
|
||||||
|
require("buzz").pattern(pattern).then(() => {
|
||||||
if (buzzCount--) {
|
if (buzzCount--) {
|
||||||
setTimeout(buzz, settings.buzzIntervalMillis);
|
setTimeout(buzz, settings.buzzIntervalMillis);
|
||||||
} else if (alarm.as) { // auto-snooze
|
} else if (alarm.as) { // auto-snooze
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
min: 5,
|
min: 5,
|
||||||
max: 30,
|
max: 30,
|
||||||
step: 5,
|
step: 5,
|
||||||
format: v => v + /*LANG*/" min",
|
format: v => v + /*LANG*/"m",
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
settings.defaultSnoozeMillis = v * 60000;
|
settings.defaultSnoozeMillis = v * 60000;
|
||||||
require("sched").setSettings(settings);
|
require("sched").setSettings(settings);
|
||||||
|
|
|
@ -1,14 +1,34 @@
|
||||||
/* Call this with a pattern like '.-.', '.. .' or '..' to buzz that pattern
|
const BUZZ_WEAK = 0.25, BUZZ_STRONG = 1;
|
||||||
out on the internal vibration motor. use buzz_menu to display a menu
|
const SHORT_MS = 100, MEDIUM_MS = 200, LONG_MS = 500;
|
||||||
where the patterns can be chosen. */
|
|
||||||
|
/**
|
||||||
|
* Buzz the passed `pattern` out on the internal vibration motor.
|
||||||
|
*
|
||||||
|
* A pattern is a sequence of `.`, `,`, `-`, `:`, `;` and `=` where
|
||||||
|
* - `.` is one short and weak vibration
|
||||||
|
* - `,` is one medium and weak vibration
|
||||||
|
* - `-` is one long and weak vibration
|
||||||
|
* - `:` is one short and strong vibration
|
||||||
|
* - `;` is one medium and strong vibration
|
||||||
|
* - `=` is one long and strong vibration
|
||||||
|
*
|
||||||
|
* You can use the `buzz_menu` module to display a menu where some common patterns can be chosen.
|
||||||
|
*
|
||||||
|
* @param {string} pattern A string like `.-.`, `..=`, `:.:`, `..`, etc.
|
||||||
|
* @returns a Promise
|
||||||
|
*/
|
||||||
exports.pattern = pattern => new Promise(resolve => {
|
exports.pattern = pattern => new Promise(resolve => {
|
||||||
function b() {
|
function doBuzz() {
|
||||||
if (pattern=="") resolve();
|
if (pattern == "") resolve();
|
||||||
var c = pattern[0];
|
var c = pattern[0];
|
||||||
pattern = pattern.substr(1);
|
pattern = pattern.substr(1);
|
||||||
if (c==".") Bangle.buzz().then(()=>setTimeout(b,100));
|
if (c == ".") Bangle.buzz(SHORT_MS, BUZZ_WEAK).then(() => setTimeout(doBuzz, 100));
|
||||||
else if (c=="-") Bangle.buzz(500).then(()=>setTimeout(b,100));
|
else if (c == ",") Bangle.buzz(MEDIUM_MS, BUZZ_WEAK).then(() => setTimeout(doBuzz, 100));
|
||||||
else setTimeout(b,100);
|
else if (c == "-") Bangle.buzz(LONG_MS, BUZZ_WEAK).then(() => setTimeout(doBuzz, 100));
|
||||||
|
else if (c == ":") Bangle.buzz(SHORT_MS, BUZZ_STRONG).then(() => setTimeout(doBuzz, 100));
|
||||||
|
else if (c == ";") Bangle.buzz(MEDIUM_MS, BUZZ_STRONG).then(() => setTimeout(doBuzz, 100));
|
||||||
|
else if (c == "=") Bangle.buzz(LONG_MS, BUZZ_STRONG).then(() => setTimeout(doBuzz, 100));
|
||||||
|
else setTimeout(doBuzz, 100);
|
||||||
}
|
}
|
||||||
b();
|
doBuzz();
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,14 +1,19 @@
|
||||||
/* Display a menu to select from various vibration patterns for use with buzz.js */
|
/**
|
||||||
|
* Display a menu to select from various common vibration patterns for use with buzz.js.
|
||||||
exports.pattern = function(value, callback) {
|
*
|
||||||
var vibPatterns = ["", ".", "..", "-", "--", "-.-", "---"];
|
* @param {string} value The pre-selected pattern
|
||||||
|
* @param {*} callback A function called with the user selected pattern
|
||||||
|
*/
|
||||||
|
exports.pattern = function (value, callback) {
|
||||||
|
var patterns = ["", ".", ":", "..", "::", ",", ";", ",,", ";;", "-", "=", "--", "==", "...", ":::", "---", ";;;", "==="];
|
||||||
return {
|
return {
|
||||||
value: Math.max(0,vibPatterns.indexOf(value)),
|
value: Math.max(0, patterns.indexOf(value)),
|
||||||
min: 0, max: vibPatterns.length-1,
|
min: 0,
|
||||||
format: v => vibPatterns[v]||/*LANG*/"Off",
|
max: patterns.length - 1,
|
||||||
|
format: v => patterns[v] || /*LANG*/"Off",
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
require("buzz").pattern(vibPatterns[v]);
|
require("buzz").pattern(patterns[v]);
|
||||||
callback(vibPatterns[v]);
|
callback(patterns[v]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue