Lookup pins before read_pin
This will create sensor_values even if `NamedPin` is not usedpull/974/head
parent
5ed88ccb40
commit
c7f509d7a3
|
@ -238,6 +238,10 @@ defmodule FarmbotCore.Asset do
|
|||
Repo.get_by(Peripheral, args)
|
||||
end
|
||||
|
||||
def get_peripheral_by_pin(pin) do
|
||||
Repo.get_by(Peripheral, pin: pin)
|
||||
end
|
||||
|
||||
## End Peripheral
|
||||
|
||||
## Begin Sensor
|
||||
|
@ -246,6 +250,10 @@ defmodule FarmbotCore.Asset do
|
|||
Repo.get_by(Sensor, id: id)
|
||||
end
|
||||
|
||||
def get_sensor_by_pin(pin) do
|
||||
Repo.get_by(Sensor, pin: pin)
|
||||
end
|
||||
|
||||
def new_sensor!(params) do
|
||||
Sensor.changeset(%Sensor{}, params)
|
||||
|> Repo.insert!()
|
||||
|
|
|
@ -98,11 +98,11 @@ defmodule FarmbotOS.SysCalls do
|
|||
end
|
||||
|
||||
def read_pin({:peripheral, %{pin: pin}}, mode) do
|
||||
read_pin(pin, mode)
|
||||
do_read_pin(pin, mode)
|
||||
end
|
||||
|
||||
def read_pin({:sensor, %{pin: pin}}, mode) do
|
||||
case read_pin(pin, mode) do
|
||||
case do_read_pin(pin, mode) do
|
||||
{:error, _} = error ->
|
||||
error
|
||||
|
||||
|
@ -128,7 +128,23 @@ defmodule FarmbotOS.SysCalls do
|
|||
1
|
||||
end
|
||||
|
||||
def read_pin(pin_number, mode) do
|
||||
def read_pin(pin_number, mode) when is_number(pin_number) do
|
||||
sensor = Asset.get_sensor_by_pin(pin_number)
|
||||
peripheral = Asset.get_peripheral_by_pin(pin_number)
|
||||
|
||||
cond do
|
||||
is_map(sensor) ->
|
||||
read_pin({:sensor, sensor}, mode)
|
||||
|
||||
is_map(peripheral) ->
|
||||
read_pin({:peripheral, peripheral}, mode)
|
||||
|
||||
true ->
|
||||
do_read_pin(pin_number, mode)
|
||||
end
|
||||
end
|
||||
|
||||
defp do_read_pin(pin_number, mode) do
|
||||
case FarmbotFirmware.request({:pin_read, [p: pin_number, m: mode]}) do
|
||||
{:ok, {_, {:report_pin_value, [p: _, v: val]}}} ->
|
||||
val
|
||||
|
|
Loading…
Reference in New Issue