Add set_servo_angle to Firmware Behaviour.

pull/372/merge
connor rigby 2017-12-04 08:21:28 -08:00 committed by Connor Rigby
parent e9669135d1
commit 20b1e30fa4
3 changed files with 19 additions and 0 deletions

View File

@ -77,4 +77,7 @@ defmodule Farmbot.Firmware.Handler do
@doc "Request firmware version."
@callback request_software_version(handler) :: fw_ret_val
@doc "Set angle on a servo pin."
@callback set_servo_angle(handler, pin, number) :: fw_ret_val
end

View File

@ -70,6 +70,10 @@ defmodule Farmbot.Firmware.StubHandler do
GenStage.call(handler, :request_software_version)
end
def set_servo_angle(handler, pin, number) do
GenStage.call(handler, {:set_servo_angle, pin, number})
end
## GenStage Behaviour
defmodule State do
@ -164,4 +168,8 @@ defmodule Farmbot.Firmware.StubHandler do
def handle_call(:request_software_version, _, state) do
{:reply, :ok, [{:report_software_version, "STUBFW"}, :done], state}
end
def handle_call({:set_servo_angle, pin, angle}, _, state) do
{:reply, :ok, [], state}
end
end

View File

@ -68,6 +68,10 @@ defmodule Farmbot.Firmware.UartHandler do
GenStage.call(handler, :request_software_version)
end
def set_servo_angle(handler, pin, number) do
GenStage.call(handler, {:set_servo_angle, pin, number})
end
## Private
defmodule State do
@ -287,6 +291,10 @@ defmodule Farmbot.Firmware.UartHandler do
do_write("F83", state)
end
def handle_call({:set_servo_angle, pin, angle}, _, state) do
do_write("F61 P#{pin} V#{angle}", state)
end
def handle_call(_call, _from, state) do
{:reply, {:error, :bad_call}, [], state}
end