Skip to content

Commit 19d9cd8

Browse files
committed
Merge pull request #52 from petermm/check-for-atomvm-on-flash
ESP32: Check for AtomVM on pythonx flash
2 parents 49bb1d5 + aec67a6 commit 19d9cd8

File tree

3 files changed

+26
-10
lines changed

3 files changed

+26
-10
lines changed

lib/esptool_helper.ex

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,21 @@ defmodule ExAtomVM.EsptoolHelper do
3636
if not Enum.member?(tool_args, "--port") do
3737
selected_device = select_device()
3838

39+
if not Map.get(selected_device, "atomvm_installed", false) do
40+
IO.puts("""
41+
42+
AtomVM doesn't seem to be installed on #{selected_device["chip_family_name"]}!
43+
44+
Install using 'mix atomvm.esp32.install' or
45+
46+
https://doc.atomvm.org/main/getting-started-guide.html#flashing-a-binary-image-to-esp32
47+
48+
(override check using 'mix atomvm.esp32.flash --port #{selected_device["port"]}')
49+
""")
50+
51+
exit({:shutdown, 1})
52+
end
53+
3954
["--port", selected_device["port"]] ++ tool_args
4055
else
4156
tool_args
@@ -217,7 +232,7 @@ defmodule ExAtomVM.EsptoolHelper do
217232
|> Enum.with_index(1)
218233
|> Enum.each(fn {device, index} ->
219234
IO.puts(
220-
"#{index}. #{device["chip_family_name"]} - Port: #{device["port"]} MAC: #{device["mac_address"]}"
235+
"#{index}. #{String.pad_trailing(device["chip_family_name"], 8, " ")} MAC: #{device["mac_address"]} AtomVM installed: #{format_atomvm_status(device["atomvm_installed"])} - Port: #{device["port"]}"
221236
)
222237
end)
223238

@@ -238,4 +253,7 @@ defmodule ExAtomVM.EsptoolHelper do
238253

239254
selected_device
240255
end
256+
257+
def format_atomvm_status(true), do: "✅"
258+
def format_atomvm_status(_), do: "❌"
241259
end

lib/mix/tasks/esp32.info.ex

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ defmodule Mix.Tasks.Atomvm.Esp32.Info do
33
Mix task to get information about connected ESP32 devices.
44
"""
55
use Mix.Task
6+
alias ExAtomVM.EsptoolHelper
67

78
@shortdoc "Get information about connected ESP32 devices"
89

910
@impl Mix.Task
1011
def run(_args) do
11-
with :ok <- ExAtomVM.EsptoolHelper.setup(),
12-
devices <- ExAtomVM.EsptoolHelper.connected_devices() do
12+
with :ok <- EsptoolHelper.setup(),
13+
devices <- EsptoolHelper.connected_devices() do
1314
case length(devices) do
1415
0 ->
1516
IO.puts(
@@ -23,7 +24,7 @@ defmodule Mix.Tasks.Atomvm.Esp32.Info do
2324
if length(devices) > 1 do
2425
Enum.each(devices, fn device ->
2526
IO.puts(
26-
"#{format_atomvm_status(device["atomvm_installed"])}#{device["chip_family_name"]} - Port: #{device["port"]}"
27+
"#{EsptoolHelper.format_atomvm_status(device["atomvm_installed"])}#{String.pad_trailing(device["chip_family_name"], 8, " ")} - Port: #{device["port"]}"
2728
)
2829
end)
2930
end
@@ -32,7 +33,7 @@ defmodule Mix.Tasks.Atomvm.Esp32.Info do
3233
IO.puts("\n━━━━━━━━━━━━━━━━━━━━━━")
3334

3435
IO.puts(
35-
"#{format_atomvm_status(device["atomvm_installed"])}#{device["chip_family_name"]} - Port: #{device["port"]}"
36+
"#{EsptoolHelper.format_atomvm_status(device["atomvm_installed"])}#{device["chip_family_name"]} - Port: #{device["port"]}"
3637
)
3738

3839
IO.puts("USB_MODE: #{device["usb_mode"]}")
@@ -100,7 +101,4 @@ defmodule Mix.Tasks.Atomvm.Esp32.Info do
100101
end
101102

102103
defp sanitize_string(_), do: "<invalid>"
103-
104-
defp format_atomvm_status(true), do: "✅"
105-
defp format_atomvm_status(_), do: "❌"
106104
end

lib/mix/tasks/esp32_flash.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ defmodule Mix.Tasks.Atomvm.Esp32.Flash do
118118

119119
case Code.ensure_loaded(Pythonx) do
120120
{:module, Pythonx} ->
121-
IO.inspect("Flashing using Pythonx installed esptool..")
121+
IO.puts("Flashing using Pythonx installed esptool..")
122122
ExAtomVM.EsptoolHelper.setup()
123123

124124
case ExAtomVM.EsptoolHelper.flash_pythonx(tool_args) do
@@ -127,7 +127,7 @@ defmodule Mix.Tasks.Atomvm.Esp32.Flash do
127127
end
128128

129129
_ ->
130-
IO.inspect("Flashing using esptool..")
130+
IO.puts("Flashing using esptool..")
131131
tool_full_path = get_esptool_path(idf_path)
132132
System.cmd(tool_full_path, tool_args, stderr_to_stdout: true, into: IO.stream(:stdio, 1))
133133
end

0 commit comments

Comments
 (0)