59 lines
1.7 KiB
Elixir
59 lines
1.7 KiB
Elixir
defmodule Farmbot.Asset.Settings.Helpers do
|
|
import Farmbot.Config, only: [update_config_value: 4]
|
|
defmacro bool(kind) do
|
|
quote do
|
|
def apply_kv(unquote(kind), nil = new, old) do
|
|
log(unquote(kind), old, new)
|
|
update_config_value(:bool, "settings", unquote(kind), nil)
|
|
end
|
|
|
|
def apply_kv(unquote(kind), new, old) when is_boolean(new) do
|
|
log(unquote(kind), old, new)
|
|
update_config_value(:bool, "settings", unquote(kind), new)
|
|
end
|
|
end
|
|
end
|
|
|
|
defmacro string(kind) do
|
|
quote do
|
|
def apply_kv(unquote(kind), nil = new, old) do
|
|
log(unquote(kind), old, new)
|
|
update_config_value(:string, "settings", unquote(kind), nil)
|
|
end
|
|
|
|
def apply_kv(unquote(kind), new, old) when is_binary(new) do
|
|
log(unquote(kind), old, new)
|
|
update_config_value(:string, "settings", unquote(kind), new)
|
|
end
|
|
end
|
|
end
|
|
|
|
defmacro float(kind) do
|
|
quote do
|
|
def apply_kv(unquote(kind), nil = new, old) do
|
|
log(unquote(kind), old, new)
|
|
update_config_value(:float, "settings", unquote(kind), nil)
|
|
end
|
|
|
|
def apply_kv(unquote(kind), new, old) when is_number(new) do
|
|
log(unquote(kind), old, new)
|
|
update_config_value(:float, "settings", unquote(kind), new / 1)
|
|
end
|
|
end
|
|
end
|
|
|
|
defmacro fw_float(kind) do
|
|
quote do
|
|
def apply_kv(unquote(kind), nil = new, old) do
|
|
log(unquote(kind), old, new)
|
|
update_config_value(:float, "hardware_params", unquote(kind), nil)
|
|
end
|
|
|
|
def apply_kv(unquote(kind), new, old) when is_number(new) do
|
|
log(unquote(kind), old, new)
|
|
update_config_value(:float, "hardware_params", unquote(kind), new / 1)
|
|
end
|
|
end
|
|
end
|
|
end
|