From d8e7e171b725b0edc23ff97e763b256504f9172e Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 19 Mar 2024 06:01:54 +0000 Subject: [PATCH] Docs: Progress on JS documentation --nobuild --- documentation/JavaScript.md | 208 ++++++++++++++++++------------------ 1 file changed, 105 insertions(+), 103 deletions(-) diff --git a/documentation/JavaScript.md b/documentation/JavaScript.md index ad7a6d002c..f6165e6975 100644 --- a/documentation/JavaScript.md +++ b/documentation/JavaScript.md @@ -1,148 +1,150 @@ # JavaScript scripting API (WIP) -## Note: This documentation is still work in progress! +## Note: This documentation is still work in progress! Todo: -- Add missing parameters -- Add missing returns -- Add examples +- Add missing parameters & returns (Dialog and lower) ## Description -Momentum supports JavaScript scripting using [mjs](https://github.com/cesanta/mjs). +Momentum supports JavaScript scripting using [mjs](https://github.com/cesanta/mjs). **Note: Read about mjs's limitations in the link above! You will experience alot of missing js features (e.g. createTimeout).** +## Examples +Make sure to check out the [included examples](https://github.com/Next-Flip/Momentum-Firmware/tree/dev/applications/system/js_app/examples/apps/Scripts)! They cover basically everything that is possible with Flipper JS. + ## API + +### Global +- `print(...args: any): undefined` +- `delay(...args: any): undefined | error` +- `to_string(num: number): string` +- `to_hex_string(num: number): string` +- `ffi_address(symbol: string): foreign` +- `require(module: string): object | error` +- `parse_int(text: string): number` +- `to_upper_case(text: string): string | error` +- `to_lower_case(text: string): string | error` + ### SubGHZ `const subghz = require("subghz");` -#### Methods -- setup(): void -- setRx(): void -- setIdle(): void -- getRssi(): number -- getState(): string -- getFrequency(): number -- setFrequency(freq: number): number | undefined -- isExternal(): bool -- transmitFile(file: string): bool | undefined +- `subghz.setup(): undefined` +- `subghz.setRx(): undefined` +- `subghz.setIdle(): undefined` +- `subghz.getRssi(): number` +- `subghz.getState(): string` +- `subghz.getFrequency(): number` +- `subghz.setFrequency(freq: number): number | error` +- `subghz.isExternal(): bool` +- `subghz.transmitFile(file: string): bool | error` ### Usbdisk `const usbdisk = require("usbdisk");` -#### Methods -- createImage(file: string, size: number): undefined -- start(file: string): undefined -- stop(): undefined -- wasEjected(): bool | undefined +- `createImage(file: string, size: number): undefined | error` +- `start(file: string): undefined | error` +- `stop(): undefined | error` +- `wasEjected(): bool | error` ### BadUsb `const badusb = require("badusb");` -#### Methods -- setup -- quit -- isConnected -- press -- hold -- release -- print -- println -- +- `setup({ vid: number, pid: number, mfr_name: string, prod_name: string }): undefined | error` +- `quit(): undefined | error` +- `isConnected(): bool | error` +- `press(...keyAndModifiers: string | number): undefined | error` +- `hold(...keyAndModifiers: string | number): undefined | error` +- `release(...keyAndModifiers: string | number | undefined): undefined | error` +- `print(text: string, delay: number | undefined): undefined | error` +- `println(text: string, delay: number | undefined): undefined | error` +- `altPrint(text: string, delay: number | undefined): undefined | error` +- `altPrintln(text: string, delay: number | undefined): undefined | error` + ### BleBeacon `const blebeacon = require("blebeacon");` -#### Methods -- isActive -- setConfig -- setData -- start -- stop -- keepAlive +- `isActive(): bool | error` +- `setConfig(mac: Uint8Array, power: number | undefined, intvMin: number | undefined, intvMax: number | undefined): undefined | error` +- `setData(data: Uint8Array): undefined | error` +- `start(): undefined | error` +- `stop(): undefined | error` +- `keepAlive(keep: boolean): undefined | error` ### Dialog `const dialog = require("dialog");` -#### Methods -- message -- custom -- pickFile +- `message()` +- `custom()` +- `pickFile()` ### Flipper `const flipper= require("flipper");` -#### Methods -- getModel -- getName -- getBatteryCharge +- `getModel()` +- `getName()` +- `getBatteryCharge()` ### Gpio `const gpio = require("gpio");` -#### Methods -- init -- write -- read +- `init()` +- `write()` +- `read()` ### Keyboard `const keyboard = require("keyboard");` -#### Methods -- setHeader -- text -- byte +- `setHeader()` +- `text()` +- `byte()` ### Math `const math = require("math");` -#### Methods -- abs -- acos -- acosh -- asin -- asinh -- atan -- atan2 -- atanh -- cbrt -- ceil -- clz32 -- cos -- exp -- floor -- log -- max -- min -- pow -- random -- sign -- sin -- sqrt -- trunc -- PI -- E +- `abs()` +- `acos()` +- `acosh()` +- `asin()` +- `asinh()` +- `atan()` +- `atan2()` +- `atanh()` +- `cbrt()` +- `ceil()` +- `clz32()` +- `cos()` +- `exp()` +- `floor()` +- `log()` +- `max()` +- `min()` +- `pow()` +- `random()` +- `sign()` +- `sin()` +- `sqrt()` +- `trunc()` +- `PI` +- `E` ### Notification `const notify = require("notification");` -#### Methods -- success -- error -- blink +- `success()` +- `error()` +- `blink()` ### Serial `const serial = require("serial");` -#### Methods -- setup -- write -- read -- readln -- readBytes -- expect +- `setup()` +- `write()` +- `read()` +- `readln()` +- `readBytes()` +- `expect()` ### Storage `const storage = require("storage");` -#### Methods -- read -- write -- append -- exists -- remove -- virtualInit -- virtualMount -- virtualQuit +- `read()` +- `write()` +- `append()` +- `exists()` +- `remove()` +- `virtualInit()` +- `virtualMount()` +- `virtualQuit()` ### Submenu `const submenu = require("submenu");` -#### Methods -- addItem -- setHeader -- show +- `addItem()` +- `setHeader()` +- `show()`