Packages
plinth
0.5.7
0.10.2
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.0
0.1.13
0.1.12
0.1.11
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Bindings to Node.js and browser platform APIs
Current section
Files
Jump to
Current section
Files
src/plinth/browser/serial.gleam
import gleam/javascript/array.{type Array}
import gleam/javascript/promise.{type Promise}
pub type SerialPort
// https://developer.mozilla.org/en-US/docs/Web/API/Serial/requestPort
@external(javascript, "../../serial_ffi.mjs", "requestPort")
pub fn request_port() -> Promise(Result(SerialPort, Nil))
// https://developer.mozilla.org/en-US/docs/Web/API/Serial/getPorts
@external(javascript, "../../serial_ffi.mjs", "getPorts")
pub fn get_ports() -> Promise(Result(Array(SerialPort), Nil))
// https://developer.mozilla.org/en-US/docs/Web/API/SerialPort/getInfo
@external(javascript, "../../serial_ffi.mjs", "getInfo")
pub fn get_info(port: SerialPort) -> Result(#(Int, Int), Nil)
// https://developer.mozilla.org/en-US/docs/Web/API/SerialPort/open
@external(javascript, "../../serial_ffi.mjs", "open")
pub fn open(port: SerialPort, baud_rate: Int) -> Promise(Result(Nil, Nil))
// https://developer.mozilla.org/en-US/docs/Web/API/SerialPort#reading_data_from_a_port
@external(javascript, "../../serial_ffi.mjs", "read")
pub fn read(
port: SerialPort,
callback: fn(BitArray) -> Nil,
) -> Promise(Result(Nil, Nil))