[stable] i hope

pull/200/head
connor rigby 2016-11-14 12:47:11 -08:00
parent a3b7058508
commit 1d4bfb5db5
9 changed files with 37 additions and 36 deletions

2
FAQ.md
View File

@ -40,6 +40,6 @@ rm /data/* -rf
```
Or if you have a hdmi monitor plugged into your RPI you can use IEX
```elixir
Fw.factory_reset()
Farmbot.factory_reset()
```
Or (probably the easiest) you can just flash a new SD Card.

View File

@ -2,7 +2,7 @@ use Mix.Config
config :uart,
baud: 115200
config :fb,
config :farmbot,
state_path: "/tmp/state"
config :json_rpc,

View File

@ -6,7 +6,7 @@ config :nerves, :firmware,
config :uart,
baud: 115200
config :fb,
config :farmbot,
state_path: "/state",
dnsmasq_path: "/root/dnsmasq.lease"

View File

@ -9,7 +9,7 @@ defmodule SafeStorage do
"""
require Logger
use GenServer
@state_path Application.get_env(:fb, :state_path)
@state_path Application.get_env(:farmbot, :state_path)
@block_device "/dev/mmcblk0p3"
@fs_type "ext4"
@env Mix.env
@ -153,7 +153,7 @@ defmodule SafeStorage do
def terminate(:reset, _state) do
System.cmd("umount", [@block_device])
Fw.format_state_part
Farmbot.format_state_part
File.rm("#{@state_path}/STATE")
:reset
end

View File

@ -287,7 +287,7 @@ defmodule Farmbot.BotState do
{:crash, state}
error ->
Logger.error("Something bad happened when logging in!: #{inspect error}")
Fw.factory_reset
Farmbot.factory_reset
{:noreply, state}
end
end

View File

@ -1,11 +1,11 @@
defmodule Fw do
defmodule Farmbot do
@moduledoc """
Main entry point to the application.
Basically just starts some supervisors.
"""
require Logger
use Supervisor
@state_path Application.get_env(:fb, :state_path)
@state_path Application.get_env(:farmbot, :state_path)
@doc """
Shortcut to Nerves.Firmware.reboot
@ -47,29 +47,13 @@ defmodule Fw do
end
def init([%{target: target, compat_version: compat_version,
version: version, env: env}])
version: version, env: env}])
do
children = [
# Storage that needs to persist across reboots.
worker(SafeStorage, [env], restart: :permanent),
# master state tracker.
worker(Farmbot.BotState,
[%{target: target, compat_version: compat_version,
version: version, env: env}],
restart: :permanent),
# something sarcastic
worker(SSH, [env], restart: :permanent),
# these handle communications between the frontend and bot.
supervisor(Mqtt.Supervisor, [[]], restart: :permanent ),
supervisor(RPC.Supervisor, [[]], restart: :permanent ),
# Main controller stuff.
supervisor(Farmbot.Supervisor, [[]], restart: :permanent)
supervisor(Farmbot.Supervisor, [%{target: target, compat_version: compat_version,
version: version, env: env}], restart: :permanent)
]
opts = [strategy: :one_for_one, name: Fw]
opts = [strategy: :one_for_one, name: Farmbot]
supervise(children, opts)
end
@ -79,8 +63,8 @@ defmodule Fw do
{:ok, _} = fs_init(env)
Logger.debug("Starting Firmware on Target: #{target}")
Supervisor.start_link(__MODULE__,
[%{target: target, compat_version: compat_version,
version: version, env: env}])
[%{target: target, compat_version: compat_version,
version: version, env: env}])
end
def factory_reset do

View File

@ -2,8 +2,25 @@ defmodule Farmbot.Supervisor do
require Logger
use Supervisor
def init(_args) do
def init(%{target: target, compat_version: compat_version,
version: version, env: env}) do
children = [
# Storage that needs to persist across reboots.
worker(SafeStorage, [env], restart: :permanent),
# master state tracker.
worker(Farmbot.BotState,
[%{target: target, compat_version: compat_version,
version: version, env: env}],
restart: :permanent),
# something sarcastic
worker(SSH, [env], restart: :permanent),
# these handle communications between the frontend and bot.
supervisor(Mqtt.Supervisor, [[]], restart: :permanent ),
supervisor(RPC.Supervisor, [[]], restart: :permanent ),
# handles communications between bot and arduino
supervisor(Farmbot.Serial.Supervisor, [[]], restart: :permanent ),
@ -18,7 +35,7 @@ defmodule Farmbot.Supervisor do
end
def start_link(args) do
Logger.debug("Starting Controller")
Logger.debug("Starting Farmbot")
Supervisor.start_link(__MODULE__, args)
end
end

View File

@ -14,7 +14,7 @@ defmodule JsonRpc.Parser do
%Response{result: result, error: error, id: id}
end
def parse(blah) do
def parse(_blah) do
:not_valid
end

View File

@ -1,4 +1,4 @@
defmodule Fw.Mixfile do
defmodule Farmbot.Mixfile do
use Mix.Project
def target(:prod) do
@ -19,7 +19,7 @@ defmodule Fw.Mixfile do
|> String.to_integer
def project do
[app: :fw,
[app: :farmbot,
version: @version,
target: target(Mix.env),
archives: [nerves_bootstrap: "~> 0.1.4"],
@ -33,7 +33,7 @@ defmodule Fw.Mixfile do
end
def application do
[mod: {Fw, [%{target: target(Mix.env), compat_version: @compat_version,
[mod: {Farmbot, [%{target: target(Mix.env), compat_version: @compat_version,
version: @version, env: Mix.env}]},
applications: apps(Mix.env)]
end