From c9174cf1d24339e72609bf6bc837cb8ba2eca049 Mon Sep 17 00:00:00 2001 From: Rick Carlino Date: Sat, 11 Apr 2020 11:39:47 -0500 Subject: [PATCH] v9.2.2-rc12 --- VERSION | 2 +- farmbot_firmware/lib/farmbot_firmware.ex | 29 ++++++++++++++++++++---- farmbot_os/lib/avrdude.ex | 2 ++ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/VERSION b/VERSION index 525ff454..4a65ee10 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -9.2.2-rc11 +9.2.2-rc12 diff --git a/farmbot_firmware/lib/farmbot_firmware.ex b/farmbot_firmware/lib/farmbot_firmware.ex index 8c5a32aa..4a94e9fe 100644 --- a/farmbot_firmware/lib/farmbot_firmware.ex +++ b/farmbot_firmware/lib/farmbot_firmware.ex @@ -227,7 +227,7 @@ defmodule FarmbotFirmware do reset: reset, reset_pid: nil, command_queue: [], - configuration_queue: [], + configuration_queue: [] } send_timeout_self() @@ -294,7 +294,7 @@ defmodule FarmbotFirmware do ] } = state ) do - case GenServer.call(state.transport_pid, {tag, code}) do + case call_transport(state.transport_pid, {tag, code}, 297) do :ok -> new_state = %{ state @@ -316,7 +316,7 @@ defmodule FarmbotFirmware do def handle_info(:timeout, %{configuration_queue: [code | rest]} = state) do # Logger.debug("Starting next configuration code: #{inspect(code)}") - case GenServer.call(state.transport_pid, {state.tag, code}) do + case call_transport(state.transport_pid, {state.tag, code}, 319) do :ok -> new_state = %{state | current: code, configuration_queue: rest} _ = side_effects(new_state, :handle_output_gcode, [{state.tag, code}]) @@ -344,7 +344,8 @@ defmodule FarmbotFirmware do for {pid, _code} <- state.command_queue, do: send(pid, {state.tag, {:report_busy, []}}) - case GenServer.call(state.transport_pid, {tag, code}) do + + case call_transport(state.transport_pid, {tag, code}, 348) do :ok -> new_state = %{ state @@ -385,8 +386,9 @@ defmodule FarmbotFirmware do Logger.debug("closing transport") :ok = GenServer.stop(state.transport_pid, :normal) else - Logger.debug("No tranport pid found.") + Logger.debug("No tranport pid found. Nothing to close") end + next_state = goto( %{ @@ -930,4 +932,21 @@ defmodule FarmbotFirmware do defp send_timeout_self do send(self(), :timeout) end + + defp call_transport(nil, args, where) do + msg = "#{inspect(where)} Firmware restart required (#{inspect(args)})" + Logger.debug(msg) + {:error, msg} + end + + defp call_transport(transport_pid, args, where) do + # Returns :ok + response = GenServer.call(transport_pid, args) + + unless response == :ok do + Logger.debug("#{inspect(where)}: returned #{inspect(response)}") + end + + response + end end diff --git a/farmbot_os/lib/avrdude.ex b/farmbot_os/lib/avrdude.ex index 8933ba6e..ff91923c 100644 --- a/farmbot_os/lib/avrdude.ex +++ b/farmbot_os/lib/avrdude.ex @@ -31,11 +31,13 @@ defmodule Avrdude do # call the function for resetting the line before executing avrdude. call_reset_fun(reset_fun) FarmbotCore.Logger.info(3, "Writing firmware to MCU...") + IO.inspect(%{ args: args, into: IO.stream(:stdio, :line), stderr_to_stdout: true }) + MuonTrap.cmd("avrdude", args, into: IO.stream(:stdio, :line), stderr_to_stdout: true