This repository has been archived on 2024-06-24. You can view files and clone it, but cannot push or open issues or pull requests.
augie/webapp/lib/augie_web/live/servo_live.ex

55 lines
1.6 KiB
Elixir

defmodule AugieWeb.ServoLive do
use Phoenix.LiveView
alias Augie.Firmata.Commands
alias Phoenix.PubSub
@moduledoc false
def mount(_params, %{"driver" => driver}, socket) do
driver_as_atom = String.to_atom(driver)
driver_name = String.capitalize(driver)
if connected?(socket) do
PubSub.subscribe(Augie.PubSub, "command.servo_get_enable_#{driver}")
IO.inspect({:wat, driver_as_atom})
Commands.servo_get_enable(driver_as_atom)
end
{:ok,
assign(socket,
driver: driver_as_atom,
driver_name: driver_name,
switch_id: "#{driver}",
state_known: false,
enabled: false
)}
end
def handle_info({:servo_get_enable_port, <<0, 0>>}, socket) do
{:noreply, assign(socket, state_known: true, enabled: false)}
end
def handle_info({:servo_get_enable_port, <<1, 0>>}, socket) do
{:noreply, assign(socket, state_known: true, enabled: true)}
end
def handle_info({:servo_get_enable_starboard, <<0, 0>>}, socket) do
{:noreply, assign(socket, state_known: true, enabled: false)}
end
def handle_info({:servo_get_enable_starboard, <<1, 0>>}, socket) do
{:noreply, assign(socket, state_known: true, enabled: true)}
end
def handle_event("enable-servos", _, %{assigns: %{driver: driver}} = socket) do
Commands.servo_set_enable(driver, true)
Commands.servo_get_enable(driver)
{:noreply, socket}
end
def handle_event("disable-servos", _, %{assigns: %{driver: driver}} = socket) do
Commands.servo_set_enable(driver, false)
Commands.servo_get_enable(driver)
{:noreply, socket}
end
end