farmbot_os/farmbot_os/lib/farmbot_os/sys_calls/factory_reset.ex

32 lines
905 B
Elixir

defmodule FarmbotOS.SysCalls.FactoryReset do
@moduledoc false
require FarmbotCore.Logger
alias FarmbotCore.{Asset, BotState}
alias FarmbotExt.API
def factory_reset("farmbot_os") do
_ = API.put!(API.client(), "/api/device", %{needs_reset: false})
FarmbotOS.System.factory_reset(
"Factory reset requested by Sequence or frontend",
true
)
:ok
end
def factory_reset("arduino_firmware") do
FarmbotCore.Logger.warn(1, "Arduino Firmware going down for factory reset!")
id = Asset.firmware_config(:id)
if id, do: Asset.delete_firmware_config!(id)
_ = API.delete!(API.client(), "/api/firmware_config")
_ = API.get!(API.client(), "/api/firmware_config")
_ = API.put!(API.client(), "/api/firmware_config", %{api_migrated: true})
BotState.set_sync_status("maintenance")
FarmbotOS.System.reboot("Arduino factory reset")
:ok
end
end