defmodule AugieWeb.DashboardLive do use Phoenix.LiveView alias Augie.Telemetry @moduledoc """ A live view which shows or hides the dashboard based on whether the Teensy USB serial connection was found. """ def render(assigns) do ~L""" <%= if @connected do %>
<%= live_render(@socket, AugieWeb.IMUSensorLive, id: :imu) %>
<%= live_render(@socket, AugieWeb.PowerSensorLive, id: :power) %> <%= live_render(@socket, AugieWeb.GPSSensorLive, id: :gps) %>
<%= live_render(@socket, AugieWeb.CameraLive, id: :camera) %> <%= live_render(@socket, AugieWeb.LoggerLive, id: :logger) %>
<% else %>
⚠️ No Teensy USB Connection Found
<%= if Enum.any?(@uarts) do %>

Found the following UART devices:

<% end %>
<% end %> """ end def mount(_params, _context, socket) do if connected?(socket), do: :timer.send_interval(1000, :tick) {:ok, detect(socket)} end def handle_info(:tick, socket) do {:noreply, detect(socket)} end defp detect(socket) do assign(socket, connected: Telemetry.connected?(), uarts: Circuits.UART.enumerate()) end end