let Sys = { // ## **`Sys._sbuf(len)`** // Helper function to allocate string of at least given length. Note that // the resulting string is usually bigger than this, and it is always // longer than 5 bytes; that's to guarantee that the string data is stored in // a common buffer and not inlined into mjs_val_t, thus the buffer can be // used as an "output" buffer: a string can be passed to some function which // will alter the contents, and these changes will be visible to the caller. _sbuf: function(len) { let chunk = ' ', buf = chunk; while (buf.length < len) buf += chunk; return buf; }, // ## **`Sys.calloc(nmemb, size)`** // Allocate a memory region. // Note: currently memory allocated this way must be explicitly released with `free()`. malloc: ffi('void *malloc(int)'), free: ffi('void free(void *)'), // ## **`Sys.total_ram()`** // Return total available RAM in bytes. total_ram: ffi('int mgos_get_heap_size()'), // ## **`Sys.free_ram()`** // Return free available RAM in bytes. free_ram: ffi('int mgos_get_free_heap_size()'), // ## **`Sys.reboot(us)`** // Reboot the system after `us` microseconds. Return value: none. reboot: ffi('void mgos_system_restart(int)'), // ## **`Sys.uptime()`** // Return number of seconds since last reboot. uptime: ffi('double mgos_uptime()'), // ## **`Sys.usleep(microseconds)`** // Sleep given number of microseconds. // Return value: none. usleep: ffi('void mgos_usleep(int)'), // ## **`Sys.wdt_feed()`** // Feed the watchdog timer. // Return value: none. wdt_feed: ffi('void mgos_wdt_feed()') };