Initial commit
This commit is contained in:
54
build/fs/api_timer.js
Normal file
54
build/fs/api_timer.js
Normal file
@@ -0,0 +1,54 @@
|
||||
load('api_math.js');
|
||||
|
||||
let Timer = {
|
||||
_f: ffi('int mgos_strftime(char *, int, char *, int)'),
|
||||
|
||||
// ## **`Timer.set(milliseconds, flags, handler, userdata)`**
|
||||
// Setup timer with `milliseconds` timeout and `handler` as a callback.
|
||||
// `flags` can be either 0 or `Timer.REPEAT`. In the latter case, the call
|
||||
// will be repeated indefinitely (but can be cancelled with `Timer.del()`),
|
||||
// otherwise it's a one-off.
|
||||
//
|
||||
// Return value: numeric timer ID.
|
||||
//
|
||||
// Example:
|
||||
// ```javascript
|
||||
// // Call every second
|
||||
// Timer.set(1000, Timer.REPEAT, function() {
|
||||
// let value = GPIO.toggle(2);
|
||||
// print(value ? 'Tick' : 'Tock');
|
||||
// }, null);
|
||||
// ```
|
||||
set: ffi('int mgos_set_timer(int,int,void(*)(userdata),userdata)'),
|
||||
|
||||
REPEAT: 1,
|
||||
|
||||
// ## **`Timer.now()`**
|
||||
// Return current time as double value, UNIX epoch (seconds since 1970).
|
||||
now: ffi('double mg_time(void)'),
|
||||
|
||||
// ## **`Timer.del(id)`**
|
||||
// Cancel previously installed timer.
|
||||
del: ffi('void mgos_clear_timer(int)'),
|
||||
|
||||
// ## **`Timer.fmt(fmt, time)`**
|
||||
// Formats the time 'time' according to the strftime-like format
|
||||
// specification 'fmt'. The strftime reference can be found e.g.
|
||||
// [here](http://www.cplusplus.com/reference/ctime/strftime/).
|
||||
// Example:
|
||||
// ```javascript
|
||||
// let now = Timer.now();
|
||||
// let s = Timer.fmt("Now it's %I:%M%p.", now);
|
||||
// print(s); // Example output: "Now it's 12:01AM."
|
||||
// ```
|
||||
fmt: function(fmt, time) {
|
||||
if (!fmt) return 'invalid format';
|
||||
let res = 0, t = Math.round(time || Timer.now()), s = ' ';
|
||||
while (res === 0) {
|
||||
res = this._f(s, s.length, fmt, t);
|
||||
if (res === -1) return 'invalid time';
|
||||
if (res === 0) s += ' ';
|
||||
}
|
||||
return s.slice(0, res);
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user