Add new params and error handler to gcode decoder

pull/1090/head
connor rigby 2019-12-12 12:45:42 -08:00 committed by Connor Rigby
parent dc723d4ee4
commit 0036d042fd
3 changed files with 24 additions and 3 deletions

View File

@ -8,7 +8,8 @@ defmodule FarmbotFirmware.GCODE.Decoder do
def do_decode("R00", []), do: {:report_idle, []}
def do_decode("R01", []), do: {:report_begin, []}
def do_decode("R02", []), do: {:report_success, []}
def do_decode("R03", []), do: {:report_error, []}
def do_decode("R03", []), do: {:report_error, [:no_error]}
def do_decode("R03", error), do: {:report_error, decode_error(error)}
def do_decode("R04", []), do: {:report_busy, []}
def do_decode("R05", xyz), do: {:report_axis_state, decode_axis_state(xyz)}
@ -82,6 +83,14 @@ defmodule FarmbotFirmware.GCODE.Decoder do
{:unknown, [kind | args]}
end
def decode_error(["V0"]), do: [:no_error]
def decode_error(["V1"]), do: [:emergency_lock]
def decode_error(["V2"]), do: [:timeout]
def decode_error(["V3"]), do: [:stall_detected]
def decode_error(["V14"]), do: [:invalid_command]
def decode_error(["V15"]), do: [:no_config]
def decode_error([unk]), do: [unknown_error: unk]
defp decode_floats(list, acc \\ [])
defp decode_floats([<<arg::binary-1, val::binary>> | rest], acc) do

View File

@ -62,6 +62,9 @@ defmodule FarmbotFirmware.Param do
def decode(85), do: :movement_stall_sensitivity_x
def decode(86), do: :movement_stall_sensitivity_y
def decode(87), do: :movement_stall_sensitivity_z
def decode(91), do: :movement_microsteps_x
def decode(92), do: :movement_microsteps_y
def decode(93), do: :movement_microsteps_z
def decode(101), do: :encoder_enabled_x
def decode(102), do: :encoder_enabled_y
def decode(103), do: :encoder_enabled_z
@ -168,6 +171,9 @@ defmodule FarmbotFirmware.Param do
def encode(:movement_stall_sensitivity_x), do: 85
def encode(:movement_stall_sensitivity_y), do: 86
def encode(:movement_stall_sensitivity_z), do: 87
def encode(:movement_microsteps_x), do: 91
def encode(:movement_microsteps_y), do: 92
def encode(:movement_microsteps_z), do: 93
def encode(:encoder_enabled_x), do: 101
def encode(:encoder_enabled_y), do: 102
def encode(:encoder_enabled_z), do: 103

View File

@ -39,8 +39,14 @@ defmodule FarmbotFirmware.GCODETest do
end
test "error" do
assert {nil, {:report_error, []}} = GCODE.decode("R03")
assert {"100", {:report_error, []}} = GCODE.decode("R03 Q100")
assert {nil, {:report_error, [:no_error]}} = GCODE.decode("R03")
assert {nil, {:report_error, [:no_error]}} = GCODE.decode("R03 V0")
assert {nil, {:report_error, [:emergency_lock]}} = GCODE.decode("R03 V1")
assert {nil, {:report_error, [:timeout]}} = GCODE.decode("R03 V2")
assert {nil, {:report_error, [:stall_detected]}} = GCODE.decode("R03 V3")
assert {nil, {:report_error, [:invalid_command]}} = GCODE.decode("R03 V14")
assert {nil, {:report_error, [:no_config]}} = GCODE.decode("R03 V15")
assert {"100", {:report_error, [:no_error]}} = GCODE.decode("R03 Q100")
assert "R03" = GCODE.encode({nil, {:report_error, []}})
assert "R03 Q100" = GCODE.encode({"100", {:report_error, []}})