49 lines
2.0 KiB
Elixir
49 lines
2.0 KiB
Elixir
defimpl Farmbot.AssetWorker, for: Farmbot.Asset.FbosConfig do
|
|
use GenServer
|
|
require Logger
|
|
|
|
alias Farmbot.Asset.FbosConfig
|
|
alias Farmbot.BotState
|
|
|
|
import Farmbot.Config,
|
|
only: [
|
|
get_config_value: 3,
|
|
update_config_value: 4
|
|
]
|
|
|
|
def preload(%FbosConfig{}), do: []
|
|
|
|
def start_link(%FbosConfig{} = fbos_config, _args) do
|
|
GenServer.start_link(__MODULE__, %FbosConfig{} = fbos_config)
|
|
end
|
|
|
|
def init(%FbosConfig{} = fbos_config) do
|
|
{:ok, %FbosConfig{} = fbos_config, 0}
|
|
end
|
|
|
|
def handle_info(:timeout, %FbosConfig{} = fbos_config) do
|
|
:ok = BotState.set_config_value(:arduino_debug_messages, fbos_config.arduino_debug_messages)
|
|
:ok = BotState.set_config_value(:auto_sync, fbos_config.auto_sync)
|
|
:ok = BotState.set_config_value(:beta_opt_in, fbos_config.beta_opt_in)
|
|
:ok = BotState.set_config_value(:disable_factory_reset, fbos_config.disable_factory_reset)
|
|
:ok = BotState.set_config_value(:firmware_input_log, fbos_config.firmware_input_log)
|
|
:ok = BotState.set_config_value(:firmware_output_log, fbos_config.firmware_output_log)
|
|
:ok = BotState.set_config_value(:network_not_found_timer, fbos_config.network_not_found_timer)
|
|
:ok = BotState.set_config_value(:os_auto_update, fbos_config.os_auto_update)
|
|
:ok = BotState.set_config_value(:sequence_body_log, fbos_config.sequence_body_log)
|
|
:ok = BotState.set_config_value(:sequence_complete_log, fbos_config.sequence_complete_log)
|
|
:ok = BotState.set_config_value(:sequence_init_log, fbos_config.sequence_init_log)
|
|
_ = handle_firmware_hardware(fbos_config.firmware_hardware)
|
|
{:noreply, fbos_config}
|
|
end
|
|
|
|
def handle_firmware_hardware(target_hardware) do
|
|
current_hardware = get_config_value(:string, "settings", "firmware_hardware")
|
|
|
|
if current_hardware != target_hardware do
|
|
Logger.debug("Updating firmware_hardware from #{current_hardware} to #{target_hardware}")
|
|
update_config_value(:string, "settings", "firmware_hardware", target_hardware)
|
|
end
|
|
end
|
|
end
|