Fix factory resetting of arduino firmware.

This commit is contained in:
Connor Rigby 2017-12-07 17:00:10 -08:00
parent d97bf1f528
commit d89f9ab63c
4 changed files with 22 additions and 3 deletions

View file

@ -2,9 +2,11 @@ defmodule Farmbot.CeleryScript.AST.Node.FactoryReset do
@moduledoc false
use Farmbot.CeleryScript.AST.Node
allow_args [:package]
use Farmbot.Logger
def execute(%{package: :farmbot_os}, _, env) do
env = mutate_env(env)
Logger.warn 1, "Going down for factory reset!"
Farmbot.System.factory_reset "CeleryScript request."
{:ok, env}
end
@ -17,6 +19,7 @@ defmodule Farmbot.CeleryScript.AST.Node.FactoryReset do
end
Farmbot.Firmware.read_all_params()
Farmbot.System.reboot("Arduino factory reset.")
{:ok, env}
end
end

View file

@ -27,13 +27,20 @@ defmodule Farmbot.CeleryScript.AST.Node.FindHome do
end
defp do_find_home(ep, ec, axis, speed, env)
defp do_find_home(ep, ec, axis, _, env) when ((ep == 0) or (ep == nil)) and ((ec == 0) or (ec == nil)) do
{:error, "Could not find home on #{axis} axis because endpoints and encoders are disabled.", env}
end
defp do_find_home(ep, ec, axis, speed, env) when ep == 1 or ec == 1 do
case Farmbot.Firmware.find_home(axis, speed) do
:ok -> {:ok, env}
{:error, reason} -> {:error, reason, env}
end
end
defp do_find_home(ep, ec, _axis, _speed, env) do
{:error, "Unknown state of endpoints: #{ep} or encoders: #{ec}", env}
end
end

View file

@ -5,6 +5,7 @@ defmodule Farmbot.CeleryScript.AST.Node.Reboot do
def execute(_, _, env) do
env = mutate_env(env)
Logger.warn 1, "Going down for a reboot!"
Farmbot.System.reboot("CeleryScript request.")
{:ok, env}
end

View file

@ -276,6 +276,11 @@ defmodule Farmbot.Firmware do
end
end
defp handle_gcode({:report_parameter_value, param, value}, state) when (value == -1) or (value == -1.0) do
Farmbot.System.ConfigStorage.update_config_value(:float, "hardware_params", to_string(param), nil)
{:mcu_params, %{param => nil}, state}
end
defp handle_gcode({:report_parameter_value, param, value}, state) do
Farmbot.System.ConfigStorage.update_config_value(:float, "hardware_params", to_string(param), value / 1)
{:mcu_params, %{param => value}, state}
@ -410,9 +415,12 @@ defmodule Farmbot.Firmware do
@doc false
def do_read_params_and_report_position(old) when is_map(old) do
for {key, float_val} <- old do
if float_val do
val = round(float_val)
update_param(:"#{key}", val)
cond do
(float_val == -1) || (float_val == -1.0) -> :ok
is_nil(float_val) -> :ok
is_number(float_val) ->
val = round(float_val)
update_param(:"#{key}", val)
end
end
read_all_params()