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