diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..dad4bb2 --- /dev/null +++ b/Makefile @@ -0,0 +1,66 @@ +.DEFAULT_GOAL := help + +ESP_TOOL := $(shell command -v esptool.py 2> /dev/null) +AMPY := $(shell command -v ampy 2> /dev/null) +devices=$(shell ls /dev/tty.*) +device= + +.PHONY: help gateway sender flash + +all: esptool-exists ampy-exists +gateway: all upload-gateway ## Upload all gateway files to device +sender: all upload-sender ## Upload all sender files to device +flash: all flash-erase flash-micropython ## Erase and flash firmware to device + +esptool-exists: + @if [ -z $(ESP_TOOL) ]; then echo "esptool.py not found, consider doing 'pip install esptool'"; exit 2; fi + +ampy-exists: + @if [ -z $(AMPY) ]; then echo "ampy not found, consider doing 'pip install ampy'"; exit 2; fi + +device-arg-flag-exists: + @$$(test $(device)) || { \ + echo "No device selected, set 'device=' flag"; \ + echo "Available devices:\n $(devices)\n"; \ + exit 1; \ + } +file-arg-flag-exists: + @$$(test $(file)) || { \ + echo "No firmware file selected, set 'file=' flag"; \ + exit 2; \ + } + +upload-gateway-src: + @echo "Uploading gateway source files" + ampy --port $$device put src/gateway.py boot.py + ampy --port $$device put src/setup/gateway.html index.html + +upload-sender-src: + @echo "Uploading sender source files" + ampy --port $$device put src/sender.py boot.py + ampy --port $$device put src/setup/sender.html index.html + +upload-shared-files: + @echo "\nUploading shared files" + ampy --port $$device put src/setup/styles.css + ampy --port $$device put src/setup/success.html + ampy --port $$device put src/setup/configuration_server.py + +upload-gateway: device-arg-flag-exists \ + upload-gateway-src \ + upload-shared-files + @echo "\nReset device using on-board button or Ctrl-D over TTY" + +upload-sender: device-arg-flag-exists \ + upload-sender-src \ + upload-shared-files + @echo "\nReset device using on-board button or Ctrl-D over TTY" + +flash-erase: device-arg-flag-exists + esptool.py --chip esp32 --port $(device) erase_flash + +flash-micropython: device-arg-flag-exists file-arg-flag-exists + esptool.py --chip esp32 --port $(device) write_flash -z 0x1000 $(file) + +help: ## Display this help + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n\nTargets:\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-10s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST)