fix report softawre version

pull/363/head
connor rigby 2017-11-09 17:10:47 -08:00
parent df4faf9174
commit 65286edfe4
6 changed files with 33 additions and 5 deletions

View File

@ -43,7 +43,7 @@ config :farmbot, Farmbot.System.ConfigStorage,
# SystemTasks for host mode.
config :farmbot, :behaviour,
authorization: Farmbot.Bootstrap.Authorization,
system_tasks: Farmbot.Host.SystemTasks
# firmware_handler: Farmbot.Firmware.UartHandler
system_tasks: Farmbot.Host.SystemTasks,
firmware_handler: Farmbot.Firmware.UartHandler
config :farmbot, :uart_handler, tty: "/dev/ttyACM0"

View File

@ -70,6 +70,11 @@ defmodule Farmbot.Firmware do
GenStage.call(__MODULE__, {:write_pin, [pin, mode, value]}, :infinity)
end
@doc "Request version."
def request_software_version do
GenStage.call(__MODULE__, {:request_software_version, []}, :infinity)
end
@doc "Start the firmware services."
def start_link do
GenStage.start_link(__MODULE__, [], name: __MODULE__)
@ -233,6 +238,7 @@ defmodule Farmbot.Firmware do
end
end
read_all_params()
request_software_version()
end
end
{nil, %{state | initializing: true}}
@ -252,12 +258,15 @@ defmodule Farmbot.Firmware do
end
end
defp handle_gcode(:report_params_complete, state) do
Logger.success 3, "Firmware initialized."
{nil, %{state | initialized: true}}
end
defp handle_gcode({:report_software_version, version}, state) do
{:informational_settings, %{firmware_version: version}, state}
end
defp handle_gcode(:busy, state) do
Farmbot.BotState.set_busy(true)
{:informational_settings, %{busy: true}, %{state | idle: false}}

View File

@ -77,8 +77,8 @@ defmodule Farmbot.Firmware.Gcode.Parser do
@spec parse_version(binary) :: {binary, {:report_software_version, binary}}
defp parse_version(version) do
[derp | [code]] = String.split(version, " Q")
{code, {:report_software_version, derp}}
[v | [code]] = String.split(version, " Q")
{code, {:report_software_version, v}}
end
@type reporter ::

View File

@ -71,4 +71,7 @@ defmodule Farmbot.Firmware.Handler do
@doc "Write a pin."
@callback write_pin(handler, pin, pin_mode, number) :: fw_ret_val
@doc "Request firmware version."
@callback request_software_version(handler) :: fw_ret_val
end

View File

@ -62,6 +62,10 @@ defmodule Farmbot.Firmware.StubHandler do
GenStage.call(handler, {:write_pin, pin, pin_mode, value})
end
def request_software_version(handler) do
GenStage.call(handler, :request_software_version)
end
## GenStage Behaviour
defmodule State do
@ -147,4 +151,8 @@ defmodule Farmbot.Firmware.StubHandler do
def handle_call(:emergency_unlock, _from, state) do
{:reply, :ok, [:done], state}
end
def handle_call(:request_software_version, _, state) do
{:reply, :ok, [{:report_software_version, "STUBFW"}, :done], state}
end
end

View File

@ -60,6 +60,10 @@ defmodule Farmbot.Firmware.UartHandler do
GenStage.call(handler, {:write_pin, pin, pin_mode, value})
end
def request_software_version(handler) do
GenStage.call(handler, :request_software_version)
end
## Private
defmodule State do
@ -240,6 +244,10 @@ defmodule Farmbot.Firmware.UartHandler do
end
end
def handle_call(:request_software_version, _from, state) do
do_write("F83", state)
end
def handle_call(_call, _from, state) do
{:reply, {:error, :bad_call}, [], state}
end