mirror of
https://github.com/DarkFlippers/unleashed-firmware.git
synced 2025-12-12 04:34:43 +04:00
* feat: backport js_gpio from unleashed * feat: backport js_keyboard, TextInputModel::minimum_length from unleashed * fix: api version inconsistency * style: js_gpio * build: fix submodule ._ . * refactor: js_gpio * docs: type declarations for gpio * feat: gpio interrupts * fix: js_gpio freeing, resetting and minor stylistic changes * style: js_gpio * style: mlib array, fixme's * feat: js_gpio adc * feat: js_event_loop * docs: js_event_loop * feat: js_event_loop subscription cancellation * feat: js_event_loop + js_gpio integration * fix: js_event_loop memory leak * feat: stop event loop on back button * test: js: basic, math, event_loop * feat: js_event_loop queue * feat: js linkage to previously loaded plugins * build: fix ci errors * feat: js module ordered teardown * feat: js_gui_defer_free * feat: basic hourglass view * style: JS ASS (Argument Schema for Scripts) * fix: js_event_loop mem leaks and lifetime problems * fix: crashing test and pvs false positives * feat: mjs custom obj destructors, gui submenu view * refactor: yank js_gui_defer_free (yuck) * refactor: maybe_unsubscribe * empty_screen, docs, typing fix-ups * docs: navigation event & demo * feat: submenu setHeader * feat: text_input * feat: text_box * docs: text_box availability * ci: silence irrelevant pvs low priority warning * style: use furistring * style: _get_at -> _safe_get * fix: built-in module name assignment * feat: js_dialog; refactor, optimize: js_gui * docs: js_gui * ci: silence pvs warning: Memory allocation is infallible * style: fix storage spelling * feat: foreign pointer signature checks * feat: js_storage * docs: js_storage * fix: my unit test was breaking other tests ;_; * ci: fix ci? * Make doxygen happy * docs: flipper, math, notification, global * style: review suggestions * style: review fixups * fix: badusb demo script * docs: badusb * ci: add nofl * ci: make linter happy * Bump api version Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
1.9 KiB
1.9 KiB
js_gpio
GPIO module
let eventLoop = require("event_loop");
let gpio = require("gpio");
This module depends on the event_loop module, so it must only be imported
after event_loop is imported.
Example
let eventLoop = require("event_loop");
let gpio = require("gpio");
let led = gpio.get("pc3");
led.init({ direction: "out", outMode: "push_pull" });
led.write(true);
delay(1000);
led.write(false);
delay(1000);
API reference
get
Gets a Pin object that can be used to manage a pin.
Parameters
pin: pin identifier (examples:"pc3",7,"pa6",3)
Returns
A Pin object
Pin object
Pin.init()
Configures a pin
Parameters
mode:Modeobject:direction(required): either"in"or"out"outMode(required fordirection: "out"): either"open_drain"or"push_pull"inMode(required fordirection: "in"): either"analog","plain_digital","interrupt"or"event"edge(required forinMode: "interrupt"or"event"): either"rising","falling"or"both"pull(optional): either"up","down"or unset
Pin.write()
Writes a digital value to a pin configured with direction: "out"
Parameters
value: boolean logic level to write
Pin.read()
Reads a digital value from a pin configured with direction: "in" and any
inMode except "analog"
Returns
Boolean logic level
Pin.read_analog()
Reads an analog voltage level in millivolts from a pin configured with
direction: "in" and inMode: "analog"
Returns
Voltage on pin in millivolts
Pin.interrupt()
Attaches an interrupt to a pin configured with direction: "in" and
inMode: "interrupt" or "event"
Returns
An event loop Contract object that identifies the interrupt event source. The
event does not produce any extra data.