-module(bummer). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([set_log_level/1, connect/1, scan/2, vibrate/2, rotate/2, main/0]). -export_type([message/0]). -type message() :: {request_server_info, integer(), binary()} | {request_device_list, integer()} | {start_scanning, integer()} | {stop_scanning, integer()} | {vibrate, integer(), integer(), float()} | {rotate, integer(), integer(), float()} | {stop, integer()}. -file("/home/jkadlcik/git/bummer/src/bummer.gleam", 25). -spec set_log_level(gleam@erlang@atom:atom_()) -> nil. set_log_level(Level) -> 'Elixir.Socket':set_log_level(Level). -file("/home/jkadlcik/git/bummer/src/bummer.gleam", 29). -spec serialize(message()) -> binary(). serialize(Message) -> case Message of {request_server_info, Id, Client_name} -> <<<<<<<<"[{\"RequestServerInfo\": {\"ClientName\": \""/utf8, Client_name/binary>>/binary, "\", \"MessageVersion\": 1, \"Id\": "/utf8>>/binary, (erlang:integer_to_binary(Id))/binary>>/binary, "}}]"/utf8>>; {request_device_list, Id@1} -> <<<<"[{\"RequestDeviceList\": {\"Id\": "/utf8, (erlang:integer_to_binary(Id@1))/binary>>/binary, "}}]"/utf8>>; {start_scanning, Id@2} -> <<<<"[{\"StartScanning\": {\"Id\": "/utf8, (erlang:integer_to_binary(Id@2))/binary>>/binary, "}}]"/utf8>>; {stop_scanning, Id@3} -> <<<<"[{\"StopScanning\": {\"Id\": "/utf8, (erlang:integer_to_binary(Id@3))/binary>>/binary, "}}]"/utf8>>; {vibrate, Id@4, Device, Speed} -> <<<<<<<<<<<<"[{\"VibrateCmd\": {\"DeviceIndex\": "/utf8, (erlang:integer_to_binary(Device))/binary>>/binary, ", \"Speeds\": [{\"Index\": 0, \"Speed\": "/utf8>>/binary, (gleam_stdlib:float_to_string(Speed))/binary>>/binary, "}], \"Id\": "/utf8>>/binary, (erlang:integer_to_binary(Id@4))/binary>>/binary, "}}]"/utf8>>; {rotate, Id@5, Device@1, Speed@1} -> <<<<<<<<<<<<<<"[{\"RotateCmd\": {\"DeviceIndex\": "/utf8, (erlang:integer_to_binary(Device@1))/binary>>/binary, ", \"Rotations\": [{\"Index\": 0, \"Speed\": "/utf8>>/binary, (gleam_stdlib:float_to_string(Speed@1))/binary>>/binary, ", \"Clockwise\": true"/utf8>>/binary, "}], \"Id\": "/utf8>>/binary, (erlang:integer_to_binary(Id@5))/binary>>/binary, "}}]"/utf8>>; {stop, Id@6} -> <<<<"[{\"StopDeviceCmd\": {\"DeviceIndex\": 0, \"Id\": "/utf8, (erlang:integer_to_binary(Id@6))/binary>>/binary, "}}]"/utf8>> end. -file("/home/jkadlcik/git/bummer/src/bummer.gleam", 77). -spec connect(binary()) -> {ok, gleam@erlang@process:pid_()} | {error, gleam@dynamic:dynamic_()}. connect(Url) -> gleam@result:'try'( 'Elixir.Socket':start_link(Url), fun(Socket) -> _pipe = {request_server_info, 1, <<"Bummer"/utf8>>}, _pipe@1 = serialize(_pipe), 'Elixir.Socket':echo(Socket, _pipe@1), {ok, Socket} end ). -file("/home/jkadlcik/git/bummer/src/bummer.gleam", 85). -spec scan(gleam@erlang@process:pid_(), integer()) -> gleam@erlang@atom:atom_(). scan(Socket, Miliseconds) -> Res = begin _pipe = {start_scanning, 1}, _pipe@1 = serialize(_pipe), 'Elixir.Socket':echo(Socket, _pipe@1) end, gleam_erlang_ffi:sleep(Miliseconds), Res. -file("/home/jkadlcik/git/bummer/src/bummer.gleam", 95). -spec do(gleam@erlang@process:pid_(), message(), integer()) -> nil. do(Socket, Message, Miliseconds) -> _pipe = Message, _pipe@1 = serialize(_pipe), 'Elixir.Socket':echo(Socket, _pipe@1), gleam_erlang_ffi:sleep(Miliseconds), _pipe@2 = {stop, 1}, _pipe@3 = serialize(_pipe@2), 'Elixir.Socket':echo(Socket, _pipe@3), nil. -file("/home/jkadlcik/git/bummer/src/bummer.gleam", 109). -spec vibrate(gleam@erlang@process:pid_(), integer()) -> nil. vibrate(Socket, Miliseconds) -> Device = 0, Speed = 0.5, _pipe = {vibrate, 1, Device, Speed}, do(Socket, _pipe, Miliseconds). -file("/home/jkadlcik/git/bummer/src/bummer.gleam", 115). -spec rotate(gleam@erlang@process:pid_(), integer()) -> nil. rotate(Socket, Miliseconds) -> Device = 0, Speed = 0.5, _pipe = {rotate, 1, Device, Speed}, do(Socket, _pipe, Miliseconds). -file("/home/jkadlcik/git/bummer/src/bummer.gleam", 121). -spec main() -> nil. main() -> 'Elixir.Socket':set_log_level(erlang:binary_to_atom(<<"info"/utf8>>)), case connect(<<"ws://127.0.0.1:12345/"/utf8>>) of {ok, Socket} -> gleam_stdlib:println( <<"Connected to intiface-engine websocket"/utf8>> ), gleam_stdlib:println(<<"Initiating a test sequence"/utf8>>), scan(Socket, 5000), vibrate(Socket, 500), gleam_erlang_ffi:sleep(500), rotate(Socket, 500), gleam_stdlib:println(<<"Test sequence finished"/utf8>>); {error, _} -> _pipe = <<"Cannot connect to intiface-engine websocket. Is it running?"/utf8>>, gleam_stdlib:println_error(_pipe) end.