Packages

Gleam framework for microprocessor-based embedded systems.

Current section

Files

Jump to
eensy src eensy.erl
Raw

src/eensy.erl

-module(eensy).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([processes_info/0, get_system_platform/0, erlang_display/1, erlang_garbage_collect/0, pin/3, i2c/5, board/2]).
-export_type([platform_name/0, pull/0, board_peripheral/0, board_config/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-type platform_name() :: generic_unix | emscripten | esp32 | pico | stm32.
-type pull() :: up | down.
-opaque board_peripheral() :: {i2c,
binary(),
integer(),
integer(),
integer(),
pull()} |
{pin, binary(), integer(), pull()}.
-opaque board_config() :: {board_config,
list(board_peripheral()),
list(board_peripheral())}.
-file("src/eensy.gleam", 16).
?DOC(" System processess\n").
-spec processes_info() -> nil.
processes_info() ->
eensy_ffi:processes_info().
-file("src/eensy.gleam", 20).
?DOC(" get the running platform name\n").
-spec get_system_platform() -> platform_name().
get_system_platform() ->
atomvm:platform().
-file("src/eensy.gleam", 24).
?DOC(" using erlang:display directly from gleam for debug purposes\n").
-spec erlang_display(any()) -> nil.
erlang_display(Any) ->
erlang:display(Any).
-file("src/eensy.gleam", 28).
?DOC(" using erlang:garbage_collect directly from gleam for forcing vm behaviour\n").
-spec erlang_garbage_collect() -> nil.
erlang_garbage_collect() ->
erlang:garbage_collect().
-file("src/eensy.gleam", 82).
-spec pin(binary(), integer(), pull()) -> board_peripheral().
pin(Name, Num, Pull) ->
{pin, Name, Num, Pull}.
-file("src/eensy.gleam", 86).
-spec i2c(binary(), integer(), integer(), integer(), pull()) -> board_peripheral().
i2c(Name, Sda, Scl, Clock_speed, Pull) ->
{i2c, Name, Sda, Scl, Clock_speed, Pull}.
-file("src/eensy.gleam", 96).
-spec board(list(board_peripheral()), list(board_peripheral())) -> board_config().
board(Inputs, Outputs) ->
{board_config, Inputs, Outputs}.