-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. -file("src/cangaroo/types.gleam", 82). -spec messages(can_client()) -> gleam@erlang@process:subject(can_frame()). messages(Client) -> erlang:element(3, Client). -file("src/cangaroo/types.gleam", 87). ?DOC(false). -spec new_socket(gleam@erlang@process:pid_()) -> can_socket(). new_socket(Pid) -> {can_socket, Pid}. -file("src/cangaroo/types.gleam", 92). ?DOC(false). -spec socket_pid(can_socket()) -> gleam@erlang@process:pid_(). socket_pid(Socket) -> erlang:element(2, Socket). -file("src/cangaroo/types.gleam", 97). ?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", 106). ?DOC(false). -spec client_socket(can_client()) -> can_socket(). client_socket(Client) -> erlang:element(2, Client). -file("src/cangaroo/types.gleam", 111). ?DOC(false). -spec client_actor_subject(can_client()) -> gleam@erlang@process:subject(actor_message()). client_actor_subject(Client) -> erlang:element(4, Client).