Current section
Files
Jump to
Current section
Files
src/cangaroo@types.erl
-module(cangaroo@types).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/cangaroo/types.gleam").
-export([messages/1, new_socket/1, socket_pid/1, new_client/3, client_socket/1, client_actor_subject/1]).
-export_type([can_socket/0, can_client/0, can_frame/0, can_filter/0, actor_message/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.
?MODULEDOC(
" Type definitions for cangaroo.\n"
"\n"
" This module defines the core types used throughout cangaroo for\n"
" representing CAN sockets, clients, frames, and filters. The main types\n"
" you'll interact with are:\n"
"\n"
" - `CanClient`: The primary handle for interacting with a CAN interface\n"
" - `CanFrame`: Represents a CAN frame with an ID and data payload\n"
" - `CanFilter`: Defines filtering criteria for receiving certain frames\n"
).
-opaque can_socket() :: {can_socket, gleam@erlang@process:pid_()}.
-opaque can_client() :: {can_client,
can_socket(),
gleam@erlang@process:subject(can_frame()),
gleam@erlang@process:subject(actor_message())}.
-type can_frame() :: {can_frame, integer(), bitstring(), boolean()}.
-type can_filter() :: {can_filter, integer(), integer(), boolean()}.
-type actor_message() :: {raw_can_data, gleam@dynamic:dynamic_()} |
{raw_extended_can_data, gleam@dynamic:dynamic_()} |
shutdown |
{excansock_down, gleam@erlang@process:exit_reason()}.
-file("src/cangaroo/types.gleam", 84).
-spec messages(can_client()) -> gleam@erlang@process:subject(can_frame()).
messages(Client) ->
erlang:element(3, Client).
-file("src/cangaroo/types.gleam", 89).
?DOC(false).
-spec new_socket(gleam@erlang@process:pid_()) -> can_socket().
new_socket(Pid) ->
{can_socket, Pid}.
-file("src/cangaroo/types.gleam", 94).
?DOC(false).
-spec socket_pid(can_socket()) -> gleam@erlang@process:pid_().
socket_pid(Socket) ->
erlang:element(2, Socket).
-file("src/cangaroo/types.gleam", 99).
?DOC(false).
-spec new_client(
can_socket(),
gleam@erlang@process:subject(can_frame()),
gleam@erlang@process:subject(actor_message())
) -> can_client().
new_client(Socket, Subject, Actor_subject) ->
{can_client, Socket, Subject, Actor_subject}.
-file("src/cangaroo/types.gleam", 108).
?DOC(false).
-spec client_socket(can_client()) -> can_socket().
client_socket(Client) ->
erlang:element(2, Client).
-file("src/cangaroo/types.gleam", 113).
?DOC(false).
-spec client_actor_subject(can_client()) -> gleam@erlang@process:subject(actor_message()).
client_actor_subject(Client) ->
erlang:element(4, Client).