Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v10.1.0 #1210

Merged
merged 54 commits into from
Jun 3, 2020
Merged

v10.1.0 #1210

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
84f3746
[10.0.1-rc1] update arduino firmware (6.5.23)
gabrielburnworth May 19, 2020
0bdee3c
Test case: handling of inbound stepper load data
RickCarlino May 19, 2020
b4b9940
[10.0.1-rc2] update arduino firmware (6.5.24)
gabrielburnworth May 21, 2020
7b79abb
Merge branch 'qa/homing_updates' of github.com:FarmBot/farmbot_os int…
RickCarlino May 21, 2020
c33d984
update R89 handler (load)
gabrielburnworth May 22, 2020
2a201bc
10.0.1-rc3
gabrielburnworth May 22, 2020
bc150fe
WIP
RickCarlino May 23, 2020
4d9c82a
update R89 handler
gabrielburnworth May 27, 2020
6014570
fix last_shutdown_reason typo
gabrielburnworth May 27, 2020
13801c0
typo fixes
gabrielburnworth May 27, 2020
c80867a
v10.1.0-rc1
RickCarlino May 27, 2020
bc6ad08
Implement fix suggested by DIY forum users, remove unused var warning
RickCarlino May 28, 2020
ab1f4af
Temporary logger addition (firmware flashing)
RickCarlino May 28, 2020
71e8d61
Update changelog
RickCarlino May 28, 2020
e81bd17
rc3
RickCarlino May 28, 2020
5f41ca2
rc4
RickCarlino May 28, 2020
5067c0c
rc5 - Possible tty issues caused my tty ordering problems?
RickCarlino May 28, 2020
68f07d2
rc6 - Revert all firmware related changes (temorarily)
RickCarlino May 28, 2020
ccfca29
Perform 5 retries?
RickCarlino May 28, 2020
75b01b3
10 retries, better failure messages
RickCarlino May 29, 2020
19297ee
Possible race condition?
RickCarlino May 29, 2020
d005da8
Remove sleep.
RickCarlino May 29, 2020
1ac623a
Hotfix II
RickCarlino May 29, 2020
320af76
10.1.0-rc12
RickCarlino May 29, 2020
65580d3
10.1.0-rc13
RickCarlino May 29, 2020
dfbc021
10.1.0-rc14
RickCarlino May 29, 2020
937b342
10.1.0-rc15
RickCarlino May 29, 2020
60cc94d
10.1.0-rc16: Call unswap_transport() prior to flash?
RickCarlino May 30, 2020
9a5f791
revert changes
RickCarlino May 30, 2020
55a6993
FIX: Dont call GPIO methods if GPIO is unavailable
RickCarlino May 31, 2020
a4f2ba0
Merge branch 'qa/25_may' into backup
RickCarlino May 31, 2020
2e441f9
Merge branch 'beta_rc' into backup
RickCarlino May 31, 2020
0fc062d
Merge conflict
RickCarlino May 31, 2020
c2dc1ac
Merge branch 'qa/reset_debug' into backup
RickCarlino May 31, 2020
e105384
Merge branch 'qa/disable_firmware' into backup
RickCarlino May 31, 2020
9dcb175
Revert uart transport changes
RickCarlino May 31, 2020
beec8a5
Typo
RickCarlino May 31, 2020
d1ba6bb
Experiment: Disable UART Transport temporarily, part III
RickCarlino Jun 1, 2020
29e8e28
Experiment: Disable Circuits GPIO temporarily, part IV
RickCarlino Jun 1, 2020
c02da8e
Experiment: Disable Circuits GPIO temporarily, part V
RickCarlino Jun 1, 2020
a73c5cc
Experiment: Disable Circuits GPIO temporarily, part VI
RickCarlino Jun 1, 2020
4de8f68
Fix typos again
RickCarlino Jun 1, 2020
2759dc7
Merge conflicts
RickCarlino Jun 2, 2020
e2a0818
Revert GPIO / UART removal
RickCarlino Jun 2, 2020
257654d
v10.1.0-rc25
RickCarlino Jun 2, 2020
fbb914d
Merge pull request #1208 from FarmBot/qa/10.1.0
RickCarlino Jun 2, 2020
3edc10f
v10.1.0-rc26
RickCarlino Jun 2, 2020
cc9a72e
Merge branch 'staging' of github.com:FarmBot/farmbot_os into staging
RickCarlino Jun 3, 2020
b0b81d6
v10.1.0
RickCarlino Jun 3, 2020
8d2e879
Formatting fix
RickCarlino Jun 3, 2020
55b8d84
Merge branch 'staging' into 10.1.0
RickCarlino Jun 3, 2020
50d7f43
Update changelog
RickCarlino Jun 3, 2020
d28ca3a
Merge branch '10.1.0' of github.com:FarmBot/farmbot_os into 10.1.0
RickCarlino Jun 3, 2020
07d6624
Merge pull request #1209 from FarmBot/10.1.0
RickCarlino Jun 3, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .tool-versions
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
erlang 22.0.7
erlang 22.3.4
elixir 1.9.0-otp-22
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

# 10.1.0

* Internal upgrades to underlying OS
* Genesis v1.5 and Express v1.0 firmware updates.
* Bug fix to prevent firmware reset issues when MCU becomes unresponsive

# 10.0.1

* Fix for Genesis v1.5 firmware bug.
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
10.0.1
10.1.0
2 changes: 1 addition & 1 deletion docs/project/farmbot_core.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Most device specific REST resources are mirrored here.

## Asset Worker subsystem

All assets that need to have a process assosiated with it will be found
All assets that need to have a process associated with it will be found
in this subsystem. Examples of this include:

* FarmEvent scheduling
Expand Down
2 changes: 1 addition & 1 deletion docs/target_development/consoles/ssh.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ then your SSH key will be automatically added to the device.

## Connecting

From the same machine that owns the `id_rsa.pub` key and assosiated private key
From the same machine that owns the `id_rsa.pub` key and associated private key
you can simply `ssh <ip address>`. If your machine supports `mdns`, you can also
do `ssh farmbot-<node_name>` where `node_name` can be found in the `Device` panel
on the FarmBot web app.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ defimpl FarmbotCore.AssetWorker, for: FarmbotCore.Asset.PinBinding do
|> execute(state)

nil ->
FarmbotCore.Logger.error(1, "Failed to find assosiated Sequence for: #{pin_binding}")
FarmbotCore.Logger.error(1, "Failed to find associated Sequence for: #{pin_binding}")
{:noreply, state}
end
end
Expand Down
13 changes: 9 additions & 4 deletions farmbot_core/lib/farmbot_core/firmware_resetter.ex
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,28 @@ defmodule FarmbotCore.FirmwareResetter do

def find_reset_fun("express_k10") do
FarmbotCore.Logger.debug(3, "Using special express reset function")
{:ok, fn -> express_reset_fun() end}
{:ok, fn -> express_reset_fun(@gpio) end}
end

def find_reset_fun(_) do
FarmbotCore.Logger.debug(3, "Using default reset function")
{:ok, fn -> :ok end}
end

def express_reset_fun() do
defp express_reset_fun(nil) do
FarmbotCore.Logger.debug(3, "GPIO module not found; Skipping firmware reset.")
:ok
end

defp express_reset_fun(gpio_module) do
try do
gpio_module = @gpio
FarmbotCore.Logger.debug(3, "Begin MCU reset")
{:ok, gpio} = gpio_module.open(19, :output)
:ok = gpio_module.write(gpio, 0)
:ok = gpio_module.write(gpio, 1)
Process.sleep(1000)
Process.sleep(1100)
:ok = gpio_module.write(gpio, 0)
gpio_module.close(gpio)
FarmbotCore.Logger.debug(3, "Finish MCU Reset")
:ok
rescue
Expand Down
2 changes: 1 addition & 1 deletion farmbot_core/lib/farmbot_core/firmware_side_effects.ex
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ defmodule FarmbotCore.FirmwareSideEffects do
end

@impl FarmbotFirmware.SideEffects
def handle_load(x: x, y: y, z: z) do
def handle_load([_u, x, _v, y, _w, z]) do
:ok = BotState.set_load(x, y, z)
end

Expand Down
94 changes: 47 additions & 47 deletions farmbot_ext/mix.lock

Large diffs are not rendered by default.

8 changes: 7 additions & 1 deletion farmbot_firmware/lib/farmbot_firmware.ex
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,13 @@ defmodule FarmbotFirmware do
the `:transport_boot` state.
"""
def close_transport(server \\ __MODULE__) do
_ = command(server, {nil, {:command_emergency_lock, []}})
# Make a best effort to E-lock before swapping.
# Don't crash if e-stop fails.
spawn(fn ->
command(server, {nil, {:command_emergency_lock, []}})
end)

Process.sleep(1000)
GenServer.call(server, :close_transport)
end

Expand Down
19 changes: 18 additions & 1 deletion farmbot_firmware/lib/farmbot_firmware/gcode/decoder.ex
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ defmodule FarmbotFirmware.GCODE.Decoder do

def do_decode("R87", []), do: {:report_emergency_lock, []}
def do_decode("R88", []), do: {:report_no_config, []}
def do_decode("R89", xyz), do: {:report_load, decode_floats(xyz)}
def do_decode("R89", uxvywz), do: {:report_load, decode_uxvywz(uxvywz)}

def do_decode("R99", debug),
do: {:report_debug_message, [Enum.join(debug, " ")]}
Expand Down Expand Up @@ -200,6 +200,23 @@ defmodule FarmbotFirmware.GCODE.Decoder do
[{param, value}]
end

def decode_uxvywz([
"U" <> u_value,
"X" <> x_value,
"V" <> v_value,
"Y" <> y_value,
"W" <> w_value,
"Z" <> z_value
]) do
{u, ""} = Integer.parse(u_value)
{x, ""} = Integer.parse(x_value)
{v, ""} = Integer.parse(v_value)
{y, ""} = Integer.parse(y_value)
{w, ""} = Integer.parse(w_value)
{z, ""} = Integer.parse(z_value)
[u, x, v, y, w, z]
end

def decode_ints(pvm, acc \\ [])

def decode_ints([<<arg::binary-1, val::binary>> | rest], acc) do
Expand Down
12 changes: 11 additions & 1 deletion farmbot_firmware/lib/farmbot_firmware/gcode/encoder.ex
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ defmodule FarmbotFirmware.GCODE.Encoder do

def do_encode(:report_emergency_lock, []), do: "R87"
def do_encode(:report_no_config, []), do: "R88"
def do_encode(:report_load, xyz), do: "R89 " <> encode_floats(xyz)
def do_encode(:report_load, uxvywz), do: "R89 " <> encode_uxvywz(uxvywz)
def do_encode(:report_debug_message, [message]), do: "R99 " <> message

def do_encode(:command_movement, xyzs), do: "G00 " <> encode_floats(xyzs)
Expand Down Expand Up @@ -156,6 +156,16 @@ defmodule FarmbotFirmware.GCODE.Encoder do
"P#{param_id} V#{binary_float}"
end

def encode_uxvywz([u_value, x_value, v_value, y_value, w_value, z_value]) do
u_int = to_string(u_value)
x_int = to_string(x_value)
v_int = to_string(v_value)
y_int = to_string(y_value)
w_int = to_string(w_value)
z_int = to_string(z_value)
"U#{u_int} X#{x_int} V#{v_int} Y#{y_int} W#{w_int} Z#{z_int}"
end

defp encode_error(error) do
case error do
:no_error -> "V0"
Expand Down
2 changes: 1 addition & 1 deletion farmbot_firmware/lib/farmbot_firmware/package_utils.ex
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
defmodule FarmbotFirmware.PackageUtils do
@doc "Returns the absolute path to the hex file assosiated with `package`"
@doc "Returns the absolute path to the hex file associated with `package`"
def find_hex_file(package)

def find_hex_file("arduino") do
Expand Down
40 changes: 20 additions & 20 deletions farmbot_firmware/mix.lock
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
%{
"certifi": {:hex, :certifi, "2.4.2", "75424ff0f3baaccfd34b1214184b6ef616d89e420b258bb0a5ea7d7bc628f7f0", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm"},
"certifi": {:hex, :certifi, "2.4.2", "75424ff0f3baaccfd34b1214184b6ef616d89e420b258bb0a5ea7d7bc628f7f0", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "01d479edba0569a7b7a2c8bf923feeb6dc6a358edc2965ef69aea9ba288bb243"},
"circuits_uart": {:hex, :circuits_uart, "1.4.0", "799abad2d5f355bd571c46de089e62c6341e6b08f9fdf51f4d53d50f5d5bbda9", [:mix], [{:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm"},
"combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm"},
"connection": {:hex, :connection, "1.0.4", "a1cae72211f0eef17705aaededacac3eb30e6625b04a6117c1b2db6ace7d5976", [:mix], [], "hexpm"},
"cowboy": {:hex, :cowboy, "2.5.0", "4ef3ae066ee10fe01ea3272edc8f024347a0d3eb95f6fbb9aed556dacbfc1337", [:rebar3], [{:cowlib, "~> 2.6.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.6.2", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm"},
"cowlib": {:hex, :cowlib, "2.6.0", "8aa629f81a0fc189f261dc98a42243fa842625feea3c7ec56c48f4ccdb55490f", [:rebar3], [], "hexpm"},
"db_connection": {:hex, :db_connection, "1.1.3", "89b30ca1ef0a3b469b1c779579590688561d586694a3ce8792985d4d7e575a61", [:mix], [{:connection, "~> 1.0.2", [hex: :connection, repo: "hexpm", optional: false]}, {:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: true]}, {:sbroker, "~> 1.0", [hex: :sbroker, repo: "hexpm", optional: true]}], "hexpm"},
"decimal": {:hex, :decimal, "1.5.0", "b0433a36d0e2430e3d50291b1c65f53c37d56f83665b43d79963684865beab68", [:mix], [], "hexpm"},
"dialyxir": {:hex, :dialyxir, "1.0.0-rc.4", "71b42f5ee1b7628f3e3a6565f4617dfb02d127a0499ab3e72750455e986df001", [:mix], [{:erlex, "~> 0.1", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm"},
"earmark": {:hex, :earmark, "1.4.3", "364ca2e9710f6bff494117dbbd53880d84bebb692dafc3a78eb50aa3183f2bfd", [:mix], [], "hexpm"},
"dialyxir": {:hex, :dialyxir, "1.0.0-rc.4", "71b42f5ee1b7628f3e3a6565f4617dfb02d127a0499ab3e72750455e986df001", [:mix], [{:erlex, "~> 0.1", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "4bba10c6f267a0dd127d687d1295f6a11af6a7f160cc0e261c46f1962a98d7d8"},
"earmark": {:hex, :earmark, "1.4.3", "364ca2e9710f6bff494117dbbd53880d84bebb692dafc3a78eb50aa3183f2bfd", [:mix], [], "hexpm", "8cf8a291ebf1c7b9539e3cddb19e9cef066c2441b1640f13c34c1d3cfc825fec"},
"ecto": {:hex, :ecto, "2.2.9", "031d55df9bb430cb118e6f3026a87408d9ce9638737bda3871e5d727a3594aae", [:mix], [{:db_connection, "~> 1.1", [hex: :db_connection, repo: "hexpm", optional: true]}, {:decimal, "~> 1.2", [hex: :decimal, repo: "hexpm", optional: false]}, {:mariaex, "~> 0.8.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:poison, "~> 2.2 or ~> 3.0", [hex: :poison, repo: "hexpm", optional: true]}, {:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.13.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:sbroker, "~> 1.0", [hex: :sbroker, repo: "hexpm", optional: true]}], "hexpm"},
"elixir_make": {:hex, :elixir_make, "0.6.0", "38349f3e29aff4864352084fc736fa7fa0f2995a819a737554f7ebd28b85aaab", [:mix], [], "hexpm"},
"erlex": {:hex, :erlex, "0.1.6", "c01c889363168d3fdd23f4211647d8a34c0f9a21ec726762312e08e083f3d47e", [:mix], [], "hexpm"},
"erlex": {:hex, :erlex, "0.1.6", "c01c889363168d3fdd23f4211647d8a34c0f9a21ec726762312e08e083f3d47e", [:mix], [], "hexpm", "f9388f7d1a668bee6ebddc040422ed6340af74aced153e492330da4c39516d92"},
"esqlite": {:hex, :esqlite, "0.2.4", "3a8a352c190afe2d6b828b252a6fbff65b5cc1124647f38b15bdab3bf6fd4b3e", [:rebar3], [], "hexpm"},
"ex_doc": {:hex, :ex_doc, "0.21.2", "caca5bc28ed7b3bdc0b662f8afe2bee1eedb5c3cf7b322feeeb7c6ebbde089d6", [:mix], [{:earmark, "~> 1.3.3 or ~> 1.4", [hex: :earmark, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm"},
"excoveralls": {:hex, :excoveralls, "0.10.2", "fb4abd5b8a1b9d52d35e1162e7e2ea8bfb84b47ae07c38d39aa8ce64be0b0794", [:mix], [{:hackney, "~> 1.13", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"},
"ex_doc": {:hex, :ex_doc, "0.21.2", "caca5bc28ed7b3bdc0b662f8afe2bee1eedb5c3cf7b322feeeb7c6ebbde089d6", [:mix], [{:earmark, "~> 1.3.3 or ~> 1.4", [hex: :earmark, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "f1155337ae17ff7a1255217b4c1ceefcd1860b7ceb1a1874031e7a861b052e39"},
"excoveralls": {:hex, :excoveralls, "0.10.2", "fb4abd5b8a1b9d52d35e1162e7e2ea8bfb84b47ae07c38d39aa8ce64be0b0794", [:mix], [{:hackney, "~> 1.13", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "20c5ca8d5431a0e0ba4060cd48f2c0d63de5aa51646aed041c47453fb06ce956"},
"gen_stage": {:hex, :gen_stage, "0.14.1", "9d46723fda072d4f4bb31a102560013f7960f5d80ea44dcb96fd6304ed61e7a4", [:mix], [], "hexpm"},
"gettext": {:hex, :gettext, "0.16.0", "4a7e90408cef5f1bf57c5a39e2db8c372a906031cc9b1466e963101cb927dafc", [:mix], [], "hexpm"},
"hackney": {:hex, :hackney, "1.14.3", "b5f6f5dcc4f1fba340762738759209e21914516df6be440d85772542d4a5e412", [:rebar3], [{:certifi, "2.4.2", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "1.0.2", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.4", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm"},
"idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm"},
"jason": {:hex, :jason, "1.1.2", "b03dedea67a99223a2eaf9f1264ce37154564de899fd3d8b9a21b1a6fd64afe7", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm"},
"makeup": {:hex, :makeup, "1.0.0", "671df94cf5a594b739ce03b0d0316aa64312cee2574b6a44becb83cd90fb05dc", [:mix], [{:nimble_parsec, "~> 0.5.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm"},
"makeup_elixir": {:hex, :makeup_elixir, "0.14.0", "cf8b7c66ad1cff4c14679698d532f0b5d45a3968ffbcbfd590339cb57742f1ae", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm"},
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm"},
"hackney": {:hex, :hackney, "1.14.3", "b5f6f5dcc4f1fba340762738759209e21914516df6be440d85772542d4a5e412", [:rebar3], [{:certifi, "2.4.2", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "1.0.2", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.4", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "ed15491f324aa0e95647dca8ef4340418dac479d1204d57e455d52dcfba3f705"},
"idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "4bdd305eb64e18b0273864920695cb18d7a2021f31a11b9c5fbcd9a253f936e2"},
"jason": {:hex, :jason, "1.1.2", "b03dedea67a99223a2eaf9f1264ce37154564de899fd3d8b9a21b1a6fd64afe7", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fdf843bca858203ae1de16da2ee206f53416bbda5dc8c9e78f43243de4bc3afe"},
"makeup": {:hex, :makeup, "1.0.0", "671df94cf5a594b739ce03b0d0316aa64312cee2574b6a44becb83cd90fb05dc", [:mix], [{:nimble_parsec, "~> 0.5.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "a10c6eb62cca416019663129699769f0c2ccf39428b3bb3c0cb38c718a0c186d"},
"makeup_elixir": {:hex, :makeup_elixir, "0.14.0", "cf8b7c66ad1cff4c14679698d532f0b5d45a3968ffbcbfd590339cb57742f1ae", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "d4b316c7222a85bbaa2fd7c6e90e37e953257ad196dc229505137c5e505e9eff"},
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
"mime": {:hex, :mime, "1.3.0", "5e8d45a39e95c650900d03f897fbf99ae04f60ab1daa4a34c7a20a5151b7a5fe", [:mix], [], "hexpm"},
"mimerl": {:hex, :mimerl, "1.0.2", "993f9b0e084083405ed8252b99460c4f0563e41729ab42d9074fd5e52439be88", [:rebar3], [], "hexpm"},
"mimic": {:hex, :mimic, "1.1.3", "3bad83d5271b4faa7bbfef587417a6605cbbc802a353395d446a1e5f46fe7115", [:mix], [], "hexpm"},
"mimerl": {:hex, :mimerl, "1.0.2", "993f9b0e084083405ed8252b99460c4f0563e41729ab42d9074fd5e52439be88", [:rebar3], [], "hexpm", "7a4c8e1115a2732a67d7624e28cf6c9f30c66711a9e92928e745c255887ba465"},
"mimic": {:hex, :mimic, "1.1.3", "3bad83d5271b4faa7bbfef587417a6605cbbc802a353395d446a1e5f46fe7115", [:mix], [], "hexpm", "0d93cb8fcd00a1013bae56050755879050bb9b8ef0c3d51b6fec5a2f1fc33d66"},
"mox": {:hex, :mox, "0.5.1", "f86bb36026aac1e6f924a4b6d024b05e9adbed5c63e8daa069bd66fb3292165b", [:mix], [], "hexpm"},
"nerves_uart": {:hex, :nerves_uart, "1.2.0", "195424116b925cd3bf9d666be036c2a80655e6ca0f8d447e277667a60005c50e", [:mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm"},
"nimble_parsec": {:hex, :nimble_parsec, "0.5.3", "def21c10a9ed70ce22754fdeea0810dafd53c2db3219a0cd54cf5526377af1c6", [:mix], [], "hexpm"},
"parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm"},
"nimble_parsec": {:hex, :nimble_parsec, "0.5.3", "def21c10a9ed70ce22754fdeea0810dafd53c2db3219a0cd54cf5526377af1c6", [:mix], [], "hexpm", "589b5af56f4afca65217a1f3eb3fee7e79b09c40c742fddc1c312b3ac0b3399f"},
"parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm", "17ef63abde837ad30680ea7f857dd9e7ced9476cdd7b0394432af4bfc241b960"},
"plug": {:hex, :plug, "1.7.1", "8516d565fb84a6a8b2ca722e74e2cd25ca0fc9d64f364ec9dbec09d33eb78ccd", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}], "hexpm"},
"plug_cowboy": {:hex, :plug_cowboy, "2.0.0", "ab0c92728f2ba43c544cce85f0f220d8d30fc0c90eaa1e6203683ab039655062", [:mix], [{:cowboy, "~> 2.5", [hex: :cowboy, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"},
"plug_crypto": {:hex, :plug_crypto, "1.0.0", "18e49317d3fa343f24620ed22795ec29d4a5e602d52d1513ccea0b07d8ea7d4d", [:mix], [], "hexpm"},
Expand All @@ -38,10 +38,10 @@
"sbroker": {:hex, :sbroker, "1.0.0", "28ff1b5e58887c5098539f236307b36fe1d3edaa2acff9d6a3d17c2dcafebbd0", [:rebar3], [], "hexpm"},
"sqlite_ecto2": {:hex, :sqlite_ecto2, "2.3.1", "fe58926854c3962c4c8710bd1070dd4ba3717ba77250387794cb7a65f77006aa", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 1.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "2.2.9", [hex: :ecto, repo: "hexpm", optional: false]}, {:poison, "~> 2.2 or ~> 3.0", [hex: :poison, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.13", [hex: :postgrex, repo: "hexpm", optional: true]}, {:sbroker, "~> 1.0", [hex: :sbroker, repo: "hexpm", optional: false]}, {:sqlitex, "~> 1.4", [hex: :sqlitex, repo: "hexpm", optional: false]}], "hexpm"},
"sqlitex": {:hex, :sqlitex, "1.4.3", "a50f12d6aeb25f4ebb128453386c09bbba8f5abd3c7713dc5eaa92f359926ac5", [:mix], [{:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:esqlite, "~> 0.2.4", [hex: :esqlite, repo: "hexpm", optional: false]}], "hexpm"},
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.4", "f0eafff810d2041e93f915ef59899c923f4568f4585904d010387ed74988e77b", [:make, :mix, :rebar3], [], "hexpm"},
"telemetry": {:hex, :telemetry, "0.4.1", "ae2718484892448a24470e6aa341bc847c3277bfb8d4e9289f7474d752c09c7f", [:rebar3], [], "hexpm"},
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.4", "f0eafff810d2041e93f915ef59899c923f4568f4585904d010387ed74988e77b", [:make, :mix, :rebar3], [], "hexpm", "603561dc0fd62f4f2ea9b890f4e20e1a0d388746d6e20557cafb1b16950de88c"},
"telemetry": {:hex, :telemetry, "0.4.1", "ae2718484892448a24470e6aa341bc847c3277bfb8d4e9289f7474d752c09c7f", [:rebar3], [], "hexpm", "4738382e36a0a9a2b6e25d67c960e40e1a2c95560b9f936d8e29de8cd858480f"},
"timex": {:hex, :timex, "3.4.2", "d74649c93ad0e12ce5b17cf5e11fbd1fb1b24a3d114643e86dba194b64439547", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm"},
"tzdata": {:hex, :tzdata, "0.5.19", "7962a3997bf06303b7d1772988ede22260f3dae1bf897408ebdac2b4435f4e6a", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"},
"unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm"},
"uuid": {:hex, :uuid, "1.1.8", "e22fc04499de0de3ed1116b770c7737779f226ceefa0badb3592e64d5cfb4eb9", [:mix], [], "hexpm"},
"unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"},
"uuid": {:hex, :uuid, "1.1.8", "e22fc04499de0de3ed1116b770c7737779f226ceefa0badb3592e64d5cfb4eb9", [:mix], [], "hexpm", "c790593b4c3b601f5dc2378baae7efaf5b3d73c4c6456ba85759905be792f2ac"},
}
Loading