Re-implement set_pin_io_mode

pull/974/head
connor rigby 2019-08-08 09:15:57 -07:00 committed by Connor Rigby
parent 3231651b5f
commit 05eeb74fc8
No known key found for this signature in database
GPG Key ID: 29A88B24B70456E0
3 changed files with 29 additions and 1 deletions

View File

@ -18,7 +18,8 @@ defmodule FarmbotOS.SysCalls do
ExecuteScript,
FactoryReset,
FlashFirmware,
SendMessage
SendMessage,
SetPinIOMode
}
alias FarmbotCore.{Asset, Asset.Repo, Asset.Private, Asset.Sync, BotState, Leds}
@ -50,6 +51,9 @@ defmodule FarmbotOS.SysCalls do
@impl true
defdelegate factory_reset(package), to: FactoryReset
@impl true
defdelegate set_pin_io_mode(pin, mode), to: SetPinIOMode
@impl true
def log(message) do
if FarmbotCore.Asset.fbos_config(:sequence_body_log) do

View File

@ -0,0 +1,19 @@
defmodule FarmbotOS.SysCalls.SetPinIOMode do
alias FarmbotFirmware
def set_pin_io_mode(pin_number, mode) do
mode = extract_set_pin_mode(to_string(mode))
case FarmbotFirmware.command({:pin_mode_write, [p: pin_number, m: mode]}) do
:ok ->
:ok
{:error, reason} ->
{:error, "Firmware error: #{inspect(reason)}"}
end
end
def extract_set_pin_mode("input"), do: 0x0
def extract_set_pin_mode("input_pullup"), do: 0x2
def extract_set_pin_mode("output"), do: 0x1
end

View File

@ -71,6 +71,11 @@ defmodule Farmbot.TestSupport.CeleryScript.TestSysCalls do
call({:set_servo_angle, [pin_number, angle]})
end
@impl true
def set_pin_io_mode(pin_number, mode) do
call({:set_pin_io_mode, [pin_number, mode]})
end
@impl true
def install_first_party_farmware() do
call({:install_first_party_farmware, []})