2019-03-05 11:09:15 -07:00
|
|
|
defmodule FarmbotCore do
|
2018-07-25 16:08:53 -06:00
|
|
|
@moduledoc """
|
|
|
|
Core Farmbot Services.
|
2019-03-19 13:35:40 -06:00
|
|
|
This includes
|
2019-03-11 09:26:56 -06:00
|
|
|
* Core global state management
|
|
|
|
* Data storage management
|
|
|
|
* Firmware management
|
|
|
|
* RPC and IPC management
|
|
|
|
|
2018-07-25 16:08:53 -06:00
|
|
|
"""
|
|
|
|
use Application
|
|
|
|
|
|
|
|
@doc false
|
|
|
|
def start(_, args), do: Supervisor.start_link(__MODULE__, args, name: __MODULE__)
|
|
|
|
|
|
|
|
def init([]) do
|
2020-03-31 14:35:58 -06:00
|
|
|
Supervisor.init(children(), [strategy: :one_for_one])
|
|
|
|
end
|
2019-06-06 15:47:34 -06:00
|
|
|
|
2020-03-31 14:35:58 -06:00
|
|
|
def children do
|
|
|
|
default = [
|
2019-07-23 12:51:50 -06:00
|
|
|
FarmbotCore.Leds,
|
2019-03-05 11:09:15 -07:00
|
|
|
FarmbotCore.EctoMigrator,
|
2019-03-11 09:26:56 -06:00
|
|
|
FarmbotCore.BotState.Supervisor,
|
|
|
|
FarmbotCore.StorageSupervisor,
|
2019-07-05 14:51:47 -06:00
|
|
|
FarmbotCore.FirmwareTTYDetector,
|
|
|
|
FarmbotCore.FirmwareOpenTask,
|
2019-03-25 15:41:43 -06:00
|
|
|
FarmbotCore.FirmwareEstopTimer,
|
|
|
|
# Also error handling for a transport not starting ?
|
2020-05-03 10:00:06 -06:00
|
|
|
{FarmbotFirmware,
|
|
|
|
transport: FarmbotFirmware.StubTransport,
|
|
|
|
side_effects: FarmbotCore.FirmwareSideEffects,
|
|
|
|
reset: FarmbotCore.FirmwareResetter},
|
2019-06-06 15:47:34 -06:00
|
|
|
FarmbotCeleryScript.Scheduler
|
2018-07-25 16:08:53 -06:00
|
|
|
]
|
2020-04-10 18:15:12 -06:00
|
|
|
config = (Application.get_env(:farmbot_ext, __MODULE__) || [])
|
|
|
|
Keyword.get(config, :children, default)
|
2018-07-25 16:08:53 -06:00
|
|
|
end
|
|
|
|
end
|